a6ed52f25a6bd9b83bfc58ae84dd264c4979fb98
Doxygen.md
... | ... | @@ -0,0 +1,256 @@ |
1 | +[[_TOC_]] |
|
2 | + |
|
3 | +# 注意点 |
|
4 | +- Doxygen 1.5.2 では、UTF-8(BOM付き)でソースを書けば、日本語のコメントが文字化けしない。 |
|
5 | +- *.rc, resource.h は UTF-16LE で書く。 |
|
6 | + - RC.EXE は UTF-8 に対応していない。 |
|
7 | + - [internationalization - Localized rc file will not compile - Stack Overflow](http://stackoverflow.com/questions/4675186/localized-rc-file-will-not-compile) |
|
8 | + - [UTF-8 Handling in source code is inconsistent in resource file, IDE Editor, and compiler. - Microsoft Connect](http://connect.microsoft.com/VisualStudio/feedback/details/539845/) |
|
9 | + |
|
10 | +# コメントの書き方(C/C++) |
|
11 | +```c |
|
12 | +/** |
|
13 | + @file [ファイル名] |
|
14 | + [ファイル全体に対する短い説明] |
|
15 | + [ファイル全体に対する詳細な説明] |
|
16 | +*/ |
|
17 | + |
|
18 | +/** |
|
19 | + func1の機能の簡潔な説明。 |
|
20 | + 2行目以降は詳細な説明。改行したい時は<br>を書く。 |
|
21 | + @param ArgIn1 [in] 入力用引数1の説明。 |
|
22 | + @param ArgIn2 [in] 入力用引数2の説明。 |
|
23 | + @param ArgOut [out] 出力用引数の説明。 |
|
24 | + @param ArgInOut [in,out] 入出力用引数の説明。 |
|
25 | + @retval 0 戻り値が0になる場合の説明。 |
|
26 | + @retval >0 戻り値が正になる場合の説明。 |
|
27 | + @retval <0 戻り値が負になる場合の説明。 |
|
28 | +*/ |
|
29 | +int func1( type ArgIn1, type ArgIn2, type ArgOut, type ArgInOut ); |
|
30 | + |
|
31 | +/** |
|
32 | + func2の機能の説明。 |
|
33 | + @param[in] ArgIn 入力用引数の説明。 |
|
34 | + @param[out] ArgOut 出力用引数の説明。 |
|
35 | + @retval true 戻り値が true になる場合の説明。 |
|
36 | + @retval false 戻り値が false になる場合の説明。 |
|
37 | +*/ |
|
38 | +bool func2( type ArgIn, type ArgOut ); |
|
39 | + |
|
40 | +/** |
|
41 | + func3の機能の説明。 |
|
42 | + @return 戻り値の説明。 |
|
43 | +*/ |
|
44 | +int func3( |
|
45 | + type ArgIn, ///< [in] 入力用引数の説明。 |
|
46 | + type ArgOut ///< [out] 出力用引数の説明。 |
|
47 | +); |
|
48 | + |
|
49 | +/** |
|
50 | + func4の機能の説明。 |
|
51 | + @attention 注意。この関数を呼び出す前にXXXを初期化しておくこと。 |
|
52 | + @return 戻り値の説明。 |
|
53 | +*/ |
|
54 | +int func4( |
|
55 | + type ArgIn1 ///< [in] 1行だけの場合。 |
|
56 | + type[] ArgIn2, /**< [in] 複数行の場合。 |
|
57 | + - ハイフンで箇条書き。インデントでネストする。 |
|
58 | + - [0]: First |
|
59 | + - [1]: Second |
|
60 | + - [2]: Third */ |
|
61 | + type ArgOut ///< [out] 出力用引数の説明。 |
|
62 | +); |
|
63 | +``` |
|
64 | + |
|
65 | +# コメントの書き方(C#) |
|
66 | +```csharp |
|
67 | + using System; |
|
68 | + |
|
69 | + /** |
|
70 | + * @mainpage C#の継承のテスト |
|
71 | + * <p>ネタ元<br> |
|
72 | + * http://ufcpp.net/study/csharp/oo_inherit.html </p> |
|
73 | + */ |
|
74 | + |
|
75 | + /// <summary> |
|
76 | + /// C#の継承のテスト用プログラム |
|
77 | + /// </summary> |
|
78 | + namespace TestInherit |
|
79 | + { |
|
80 | + /// <summary> |
|
81 | + /// 人間 |
|
82 | + /// </summary> |
|
83 | + /// <remarks> |
|
84 | + /// 名前と年齢の2つの情報を持っています。 |
|
85 | + /// </remarks> |
|
86 | + class Person |
|
87 | + { |
|
88 | + /// <summary> |
|
89 | + /// 名前 |
|
90 | + /// </summary> |
|
91 | + public string Name { get; set; } |
|
92 | + /// <summary> |
|
93 | + /// 年齢 |
|
94 | + /// </summary> |
|
95 | + public int Age { get; set; } |
|
96 | + |
|
97 | + /// <summary> |
|
98 | + /// コンストラクタ |
|
99 | + /// </summary> |
|
100 | + /// <param name="name">名前</param> |
|
101 | + /// <param name="age">年齢</param> |
|
102 | + public Person(string name, int age) |
|
103 | + { |
|
104 | + Name = name; |
|
105 | + Age = age; |
|
106 | + } |
|
107 | + |
|
108 | + /// <summary> |
|
109 | + /// 文字列化 |
|
110 | + /// </summary> |
|
111 | + /// <returns>名前と年齢を表す文字列</returns> |
|
112 | + public new string ToString() |
|
113 | + { |
|
114 | + return "Name: " + Name + "\n" + "Age: " + Age + "\n"; |
|
115 | + } |
|
116 | + } |
|
117 | + |
|
118 | + /// <summary> |
|
119 | + /// 学生 |
|
120 | + /// </summary> |
|
121 | + /// <remarks> |
|
122 | + /// 人間の情報に加えて学籍番号の情報を持っています。 |
|
123 | + /// </remarks> |
|
124 | + class Student : Person |
|
125 | + { |
|
126 | + /// <summary> |
|
127 | + /// 学籍番号 |
|
128 | + /// </summary> |
|
129 | + public int Id { get; set; } |
|
130 | + |
|
131 | + /// <summary> |
|
132 | + /// コンストラクタ |
|
133 | + /// </summary> |
|
134 | + /// <param name="name">名前</param> |
|
135 | + /// <param name="age">年齢</param> |
|
136 | + /// <param name="id">学籍番号</param> |
|
137 | + public Student(string name, int age, int id) : base(name, age) |
|
138 | + { |
|
139 | + Id = id; |
|
140 | + } |
|
141 | + |
|
142 | + /// <summary> |
|
143 | + /// 文字列化 |
|
144 | + /// </summary> |
|
145 | + /// <returns>名前と年齢と学籍番号を表す文字列</returns> |
|
146 | + public new string ToString() |
|
147 | + { |
|
148 | + return base.ToString() + "ID: " + Id + "\n"; |
|
149 | + } |
|
150 | + |
|
151 | + /// <summary> |
|
152 | + /// 動作テスト |
|
153 | + /// </summary> |
|
154 | + /// <param name="args">コマンドライン引数</param> |
|
155 | + static void Main(string[] args) |
|
156 | + { |
|
157 | + Student Tanaka = new Student("田中", 19, 1000); |
|
158 | + Console.WriteLine(Tanaka.ToString()); |
|
159 | + } |
|
160 | + } |
|
161 | + } |
|
162 | +``` |
|
163 | + |
|
164 | +# 設定 |
|
165 | +- カレントフォルダに html フォルダを作成する。 |
|
166 | +``` |
|
167 | +OUTPUT_DIRECTORY = . |
|
168 | +``` |
|
169 | +- 取り込まないディレクトリを指定する。 |
|
170 | +``` |
|
171 | +EXCLUDE_PATTERNS = "*/Service References/*" \ |
|
172 | + "*/Web References/*" \ |
|
173 | + "*/Properties/*" \ |
|
174 | + "*/bin/*" \ |
|
175 | + "*/obj/*" |
|
176 | +``` |
|
177 | +- private メソッド/メンバーを出力する |
|
178 | +``` |
|
179 | +EXTRACT_PRIVATE = YES |
|
180 | +``` |
|
181 | +- static メソッド/メンバーを出力する |
|
182 | +``` |
|
183 | +EXTRACT_STATIC = YES |
|
184 | +``` |
|
185 | +- internal メソッド/メンバーを出力する |
|
186 | +``` |
|
187 | +EXTRACT_PACKAGE = YES |
|
188 | +``` |
|
189 | +- インクルード依存関係図のグラフを描画する。<br /> |
|
190 | +GraphVizにパスが通っていること。 |
|
191 | +``` |
|
192 | +HAVE_DOT = YES |
|
193 | +DOT_PATH = "" |
|
194 | +``` |
|
195 | + |
|
196 | +# Visual Studio 設定 |
|
197 | +- Doxygen にパスが通っていること。 |
|
198 | + |
|
199 | +## 随時実行 |
|
200 | +- 「ツール - 外部ツール」に追加する。 |
|
201 | +| 項目 | 値 | |
|
202 | +| --- | --- | |
|
203 | +| タイトル | Doxygen(&D) | |
|
204 | +| コマンド | doxygen.exe | |
|
205 | +| 引数 | Doxyfile | |
|
206 | +| 初期ディレクトリ | $(SolutionDir) | |
|
207 | +| 出力ウィンドウを使用 | チェックする | |
|
208 | +| 起動時に引数を入力 | チェックしない | |
|
209 | +| Unicodeで出力を処理する | チェックしない | |
|
210 | + |
|
211 | +## ビルド時に自動実行 |
|
212 | +- プロジェクトのプロパティを開き、「ビルドイベント - ビルド後イベント」で設定する。 |
|
213 | +| 項目 | 値 | |
|
214 | +| --- | --- | |
|
215 | +| コマンドライン | if "$(ConfigurationName)" == "Release" (<br /> cd /d "$(SolutionDir)"<br /> doxygen.exe Doxyfile<br />) | |
|
216 | +| 説明 | Doxygen | |
|
217 | +| ビルドで使用 | はい | |
|
218 | + |
|
219 | +# Link |
|
220 | +- [Doxygen (日)](http://www.doxygen.jp/) |
|
221 | + - [コマンド一覧](http://www.doxygen.jp/commands.html) |
|
222 | + - [設定](http://www.doxygen.jp/config.html) |
|
223 | +- [Doxygen (英)](http://www.doxygen.org/) |
|
224 | + - [コマンド一覧](http://www.doxygen.org/commands.html) |
|
225 | + - [設定](http://www.doxygen.org/config.html) |
|
226 | + - [Helper tools & scripts](http://www.doxygen.org/helpers.html) |
|
227 | +- [Graphviz](http://www.graphviz.org/) |
|
228 | +- [CPAN:Doxygen-Filter-Perl]] / [[PerlDoxygen](http://sourceforge.net/projects/perldoxygen/) |
|
229 | +- [Perl Doxygen Filter](http://www.bigsister.ch/doxygenfilter/) / [Download](http://www.bigsister.ch/doxygenfilter/stable.html) |
|
230 | +- [Documenting JavaScript with Doxygen](http://coherent-labs.com/blog/documenting-javascript-with-doxygen/) |
|
231 | + - [Documenting JavaScript with Doxygen · GitHub](https://gist.github.com/dimitarcl/3767879) |
|
232 | +- [DoxyComment](http://doxycomment.sourceforge.net/) |
|
233 | +- [Useful enhancements for Visual Studio .NET](http://www.codeproject.com/macro/KingsTools.asp) |
|
234 | +- [CX's MEMO](http://cx20.main.jp/pukiwiki/pukiwiki.php) ([Doxygen](http://cx20.main.jp/pukiwiki/pukiwiki.php?Software%2FDoxygen)) |
|
235 | +- [Doxygen用コメントの書き方](http://members.at.infoseek.co.jp/sakura_editor/comment-rule.html) |
|
236 | +- [電信八号](http://www.denshin8.jp/) / [電八開発倶楽部](http://www.denshin8.jp/den8dev/) / [Doxygenコメント](http://www.denshin8.jp/den8dev/doxygen.html) |
|
237 | +- [sikios](http://sikios.com/wordpress/) / C# × Doxygen [[1]](http://sikios.com/wordpress/20091115/csharp_x_doxygen_1/), [[2]](http://sikios.com/wordpress/20091115/csharp_x_doxygen_/) |
|
238 | +- [Visual C# .NETでAPIリファレンスを作る](http://www.atmarkit.co.jp/fdotnet/teamdev/teamdev02/teamdev02_01.html) |
|
239 | +- [XML ドキュメント コメント](http://msdn.microsoft.com/ja-jp/library/b2s063f7.aspx) / [ドキュメント コメント用の推奨タグ](http://msdn.microsoft.com/ja-jp/library/5ast78ax.aspx) |
|
240 | +- [C# のコーディング規則 (C# プログラミング ガイド)](http://msdn.microsoft.com/ja-jp/library/ff926074.aspx) |
|
241 | +- [安全なコーディングのガイドライン](http://msdn.microsoft.com/ja-jp/library/8a3x2b7f.aspx) |
|
242 | +- [クラス ライブラリ開発のデザイン ガイドライン](http://msdn.microsoft.com/ja-jp/library/ms229042.aspx) |
|
243 | +- [# cat /var/log/stereocat | tail -n3](http://d.hatena.ne.jp/stereocat/) / [Doxygen with doxygenfilter for perl](http://d.hatena.ne.jp/stereocat/20081109/) |
|
244 | +- [GNU コーディング規約](http://www.sra.co.jp/wingnut/standards-j_toc.html) |
|
245 | +- [CERT C Secure Coding Standards 日本語版](https://www.jpcert.or.jp/sc-rules/) |
|
246 | +- [google-styleguide](https://code.google.com/p/google-styleguide/) Style guides for Google-originated open-source projects |
|
247 | + - [Google C++ Style Guide](http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml) |
|
248 | + - [Google JavaScript Style Guide](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml) |
|
249 | + - [Google JavaScript Style Guide 和訳](http://cou929.nu/data/google_javascript_style_guide/) @ [Kosei Moriyama (cou929)](http://cou929.nu/) |
|
250 | + - [Google Python Style Guide](http://google-styleguide.googlecode.com/svn/trunk/pyguide.html) |
|
251 | + - [Google HTML/CSS Style Guide](http://google-styleguide.googlecode.com/svn/trunk/htmlcssguide.xml) |
|
252 | +- [jsdoc3](https://github.com/jsdoc3) |
|
253 | +- [間違ったコードは間違って見えるようにする](http://local.joelonsoftware.com/wiki/%E9%96%93%E9%81%95%E3%81%A3%E3%81%9F%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AF%E9%96%93%E9%81%95%E3%81%A3%E3%81%A6%E8%A6%8B%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B) @ [The Joel on Software Translation Project](http://local.joelonsoftware.com/wiki/Japanese) |
|
254 | +<!---- [[【コメント】doxygen【コンソメ】:http://pc12.2ch.net/test/read.cgi/tech/1212144627/l50]] @ [[プログラム技術:http://pc12.2ch.net/tech/]]--> |
|
255 | +<!---- [[【コメント】doxygen【コンソメ】:http://hibari.2ch.net/test/read.cgi/tech/1212144627/l50]] @ [[プログラム技術:http://hibari.2ch.net/tech/]]--> |
|
256 | +- [【コメント】doxygen【コンソメ】](http://toro.2ch.net/test/read.cgi/tech/1212144627/l50) @ [プログラム技術](http://toro.2ch.net/tech/) |
Git.md
... | ... | @@ -0,0 +1,557 @@ |
1 | +[[_TOC_]]
|
|
2 | +
|
|
3 | +# 概要
|
|
4 | +- 共有リポジトリをリモート(CentOS)上に作成し、ローカルリポジトリ(Windows)から更新する。
|
|
5 | +
|
|
6 | +# インストール
|
|
7 | +- git パッケージのインストール<br />
|
|
8 | +「user1」は ssh でログインできるユーザ。
|
|
9 | +```
|
|
10 | +# yum install git
|
|
11 | +# su user1
|
|
12 | +$ git config --global user.name "Your Name"
|
|
13 | +$ git config --global user.email you@example.com
|
|
14 | +$ git config --global core.autocrlf false
|
|
15 | +$ git config --global core.quotepath false
|
|
16 | +$ git config --global core.pager "LESSCHARSET=utf-8 less"
|
|
17 | +$ git config --global fetch.prune true
|
|
18 | +$ git config --global remote.origin.prune true
|
|
19 | +```
|
|
20 | +
|
|
21 | +# 共有リポジトリ
|
|
22 | +
|
|
23 | +## 共有リポジトリに作業ファイルを保持
|
|
24 | +- 共有リポジトリ上に作業ファイルを保持し、merge も共有リポジトリ上で行う。
|
|
25 | +- 共有リポジトリで checkout されているブランチに対して push しようとするとエラーになる。
|
|
26 | +- 共有リポジトリの作成
|
|
27 | +```
|
|
28 | +# mkdir -p /var/git/test1.git
|
|
29 | +# cd /var/git
|
|
30 | +# chown user1. test1.git
|
|
31 | +# su user1
|
|
32 | +$ cd test1.git
|
|
33 | +$ git init --shared
|
|
34 | +$ touch README.txt .gitignore
|
|
35 | +$ chmod 644 README.txt .gitignore
|
|
36 | +$ git add README.txt .gitignore
|
|
37 | +$ git commit -a -m "first commit"
|
|
38 | +```
|
|
39 | +
|
|
40 | +## 共有リポジトリは管理専用
|
|
41 | +- 共有リポジトリは管理のみを行い、編集は作業用リポジトリ側で行う。
|
|
42 | +```
|
|
43 | +# mkdir -p /var/git/test1.git
|
|
44 | +# cd /var/git
|
|
45 | +# chown user1. test1.git
|
|
46 | +# su user1
|
|
47 | +$ cd test1.git
|
|
48 | +$ git init --bare --shared
|
|
49 | +$ git config core.quotepath false
|
|
50 | +$ mkdir ~/git
|
|
51 | +$ cd ~/git
|
|
52 | +$ git clone /var/git/test1.git
|
|
53 | +$ cd test1
|
|
54 | +$ touch README.txt .gitignore
|
|
55 | +$ chmod 644 README.txt .gitignore
|
|
56 | +$ git add README.txt .gitignore
|
|
57 | +$ git commit -a -m "first commit"
|
|
58 | +$ git push origin master
|
|
59 | +```
|
|
60 | +
|
|
61 | +## NAS 上に共有リポジトリを作成
|
|
62 | +- Windows ファイル共有フォルダ内に共有リポジトリを作成する。
|
|
63 | +- パスの区切りは「\」ではなく「/」を使用する。
|
|
64 | +```
|
|
65 | +> git init --bare --shared //nas_name/path-to-repository/repository_name.git
|
|
66 | +```
|
|
67 | +- 作業用リポジトリ作成(1) ブランチ 'master' をトラックする場合
|
|
68 | +```
|
|
69 | +> git clone //nas_name/path-to-repository/repository_name.git
|
|
70 | +```
|
|
71 | +- 作業用リポジトリ作成(2) 'master' 以外のブランチをトラックする場合(ブランチ 'develop' の例)
|
|
72 | +```
|
|
73 | +> git init repository_name
|
|
74 | +> cd repository_name
|
|
75 | +> git remote add origin //nas_name/path-to-repository/repository_name.git
|
|
76 | +> git fetch origin develop
|
|
77 | +> git pull origin develop
|
|
78 | +> git checkout develop
|
|
79 | +```
|
|
80 | +
|
|
81 | +- リモートリポジトリを UNC パス形式で指定すると「***.git/objects does not exist」エラーとなり push できなくなる。
|
|
82 | + - [Push to repository in a shared folder doesn't work (regression from 2.10.2) #979](https://github.com/git-for-windows/git/issues/979)
|
|
83 | + - [git bash fail to push branch with error message: "object directory does not exist" - Stack Overflow](https://stackoverflow.com/questions/%34%31%31%31%35%36%31%33)
|
|
84 | + - 回避策: ドライブレター付きのネットワークドライブとしてアクセスするようにする。
|
|
85 | +
|
|
86 | +# Windows クライアントのインストール
|
|
87 | +- http://windows.github.com/ からインストーラをダウンロードし実行する。
|
|
88 | +- インストール後、GitHub アカウントの入力はキャンセルしてスキップ可能。
|
|
89 | +- 「tools - options」を開いて初期設定を行う。
|
|
90 | +- 「configure git」で、ユーザ名およびメールアドレスを設定する。<br />
|
|
91 | +コミットの際のユーザの区別に使用される。
|
|
92 | +- エクスプローラで「%USERPROFILE%/.ssh」を開く。
|
|
93 | +```
|
|
94 | +> cd /d %USERPROFILE%/.ssh
|
|
95 | +```
|
|
96 | +- リモートリポジトリの ssh 用秘密鍵をここにコピーする。
|
|
97 | +```
|
|
98 | +> copy repo1.example.com_rsa %USERPROFILE%/.ssh/
|
|
99 | +```
|
|
100 | +- 秘密鍵ファイル名は「id_rsa」以外だとうまく動かないみたいだ。
|
|
101 | +```
|
|
102 | +> copy repo1.example.com_rsa %USERPROFILE%/.ssh/id_rsa
|
|
103 | +```
|
|
104 | +- 「config」を %USERPROFILE%/.ssh フォルダに作成する。
|
|
105 | +```
|
|
106 | +host RemoteRepo1
|
|
107 | + user user1
|
|
108 | + hostname repo1.example.com
|
|
109 | + port 22
|
|
110 | + identityfile ~/.ssh/id_rsa.repo1.example.com
|
|
111 | +```
|
|
112 | + - [OpenSSH SSH client configuration files](http://www.openbsd.org/cgi-bin/man.cgi?query=ssh_config)
|
|
113 | +- global 設定
|
|
114 | +```
|
|
115 | +%LOCALAPPDATA%/GitHub/PortableGit_xxx/etc/gitconfig
|
|
116 | +```
|
|
117 | +
|
|
118 | +# ローカルリポジトリ設定
|
|
119 | +- 「GitHub」は終了して「Git Shell」を起動する。
|
|
120 | +- リモートリポジトリをローカルにコピーする。<br />
|
|
121 | +パスフレーズを聞かれたらタイプする。<br />
|
|
122 | +同名のフォルダが既にある場合はクローンに失敗する。
|
|
123 | +```
|
|
124 | +> git clone ssh://user1@RemoteRepo1/var/git/test1.git
|
|
125 | +```
|
|
126 | +- 作業用のブランチ(例:testing)を作成
|
|
127 | +```
|
|
128 | +> git branch testing
|
|
129 | +```
|
|
130 | +- master から testing へブランチを切り替える。
|
|
131 | +```
|
|
132 | +> git checkout testing
|
|
133 | +```
|
|
134 | +- 作業用のブランチを共有リポジトリに送信(1回目, 追跡ブランチに登録)。
|
|
135 | +```
|
|
136 | +> git push --set-upstream origin testing
|
|
137 | +```
|
|
138 | +- 作業用のブランチを共有リポジトリに送信(2回目以降)。
|
|
139 | +```
|
|
140 | +> git push
|
|
141 | +```
|
|
142 | +- 「Git Shell」から「GitHub」を起動し、SSH_AGENTの環境変数を引き継がせる。<br />
|
|
143 | +(今 sync しているかどうかは分かるが push に失敗する x_x;)
|
|
144 | +```
|
|
145 | +> github
|
|
146 | +```
|
|
147 | +- 「GitHub」に今作成した「test1.git」フォルダをドロップするとトラッキングされるようになる。
|
|
148 | +- 以降、作業は新しいブランチ側で行い、merge は共有リポジトリで行う。
|
|
149 | +- ファイル転送の際に改行コードの変換を行わない
|
|
150 | + - コマンド
|
|
151 | +```
|
|
152 | +> git config core.autocrlf false
|
|
153 | +```
|
|
154 | + - config ファイル
|
|
155 | +```
|
|
156 | +[core]
|
|
157 | + autocrlf = false
|
|
158 | +```
|
|
159 | +
|
|
160 | +## 現在のリポジトリに別のリポジトリへの参照を追加
|
|
161 | +```
|
|
162 | +$ git remote add <リモートリポジトリ名> <リモートリポジトリの場所>
|
|
163 | +$ git fetch <リモートリポジトリ名>
|
|
164 | +$ git branch <リモートリポジトリ用ブランチ名>
|
|
165 | +$ git push --set-upstream <リモートリポジトリ名> <リモートリポジトリ用ブランチ名> (push 初回)
|
|
166 | +$ git push <リモートリポジトリ名> <リモートリポジトリ用ブランチ名> (push 2回目以降)
|
|
167 | +```
|
|
168 | +
|
|
169 | +- 「git remote add origin <uri>」で「fatal: remote origin already exists.」が出る場合は「origin」が既に設定されている。<br />
|
|
170 | +「origin」を上書きするには「git remote set-url origin <uri>」とする。
|
|
171 | +
|
|
172 | +## push 時に複数のリポジトリを更新
|
|
173 | +- リモートリポジトリ 'origin' に push する際に別のリポジトリに push する。
|
|
174 | +- pushurl が設定されていると元の url には push されなくなるので、元の url にも push したい場合は改めて pushurl に元の url を登録する必要がある。
|
|
175 | +```
|
|
176 | +> git remote set-url --add --push origin <元々のurl>
|
|
177 | +> git remote set-url --add --push origin <別のリポジトリのurl>
|
|
178 | +```
|
|
179 | +
|
|
180 | +## 指定するファイルに関するコミット履歴を表示
|
|
181 | +```
|
|
182 | +> git log --all -- "*/filename"
|
|
183 | +```
|
|
184 | +- [How to locate a deleted file in the commit history? - Stack Overflow](https://stackoverflow.com/questions/%37%32%30%33%35%31%35)
|
|
185 | +
|
|
186 | +## リモートにあるブランチを追跡する
|
|
187 | +- リモートのブランチを表示
|
|
188 | +```
|
|
189 | +> git branch -r
|
|
190 | + origin/HEAD -> origin/master
|
|
191 | + origin/feature1
|
|
192 | + origin/master
|
|
193 | +```
|
|
194 | +- origin/feature1 を追跡する
|
|
195 | +```
|
|
196 | +> git checkout --track origin/feature1
|
|
197 | +```
|
|
198 | +
|
|
199 | +## ブランチ毎に別のリポジトリへプッシュ/プルする
|
|
200 | +- リモートリポジトリ(remote1)を追加
|
|
201 | +```
|
|
202 | +> git remote add remote1 <url>
|
|
203 | +```
|
|
204 | +- 現在のリモートリポジトリを表示
|
|
205 | +```
|
|
206 | +> git remote -v
|
|
207 | +```
|
|
208 | +- ローカルにブランチ(branch1)を作成
|
|
209 | +```
|
|
210 | +> git checkout -b branch1
|
|
211 | +```
|
|
212 | +- 編集結果をコミット
|
|
213 | +```
|
|
214 | +> git commit
|
|
215 | +```
|
|
216 | +- リモート(remote1)にブランチ(branch1)を作成
|
|
217 | +```
|
|
218 | +> git push -u remote1 branch1
|
|
219 | +```
|
|
220 | +- ローカルとリモートの全てのブランチを表示
|
|
221 | +```
|
|
222 | +> git branch -a
|
|
223 | +```
|
|
224 | +- リモート(remote1)のブランチ(branch1)の更新を取り込み
|
|
225 | +```
|
|
226 | +> git pull
|
|
227 | +```
|
|
228 | +
|
|
229 | +- [How do I push a new local branch to a remote Git repository and track it too? - Stack Overflow](https://stackoverflow.com/questions/%32%37%36%35%34%32%31)
|
|
230 | +
|
|
231 | +## git 出力のリダイレクト
|
|
232 | +- powershell 上で git の出力をファイルへリダイレクトすると、UTF-8 なソースの差分が UTF-16LE ファイルとして保存され、文字化けする。
|
|
233 | +- ファイルへリダイレクトする場合は、powershell ではなく cmd.exe 上で出力する。
|
|
234 | +
|
|
235 | +- [powershell - Git Shell in Windows: patch's default character encoding is UCS-2 Little Endian - how to change this to ANSI or UTF-8 without BOM? - Stack Overflow](https://stackoverflow.com/questions/%31%33%36%37%35%37%38%32)
|
|
236 | +```
|
|
237 | +cmd /c "git diff > patch.diff"
|
|
238 | +```
|
|
239 | +
|
|
240 | +## 指定日以降のコミットログ
|
|
241 | +```
|
|
242 | +> git log --since="yyyy-mm-ddThh:mm:ss+09:00"
|
|
243 | +```
|
|
244 | +
|
|
245 | +## 指定日間の差分
|
|
246 | +- 差分全体
|
|
247 | +```
|
|
248 | +> git diff "master@{yyyy-mm-ddThh:mm:ss+09:00}" "master@{yyyy-mm-ddThh:mm:ss+09:00}"
|
|
249 | +```
|
|
250 | +- ファイル名のみ
|
|
251 | +```
|
|
252 | +> git diff "master@{yyyy-mm-ddThh:mm:ss+09:00}" "master@{yyyy-mm-ddThh:mm:ss+09:00}" --name-only
|
|
253 | +```
|
|
254 | +- PowerShell スクリプト GitDiffFrom.ps1
|
|
255 | +```powershell
|
|
256 | +# Show changed files between "From" and "To"
|
|
257 | +
|
|
258 | +Param(
|
|
259 | + [string]$From = '',
|
|
260 | + [string]$To = '',
|
|
261 | + [switch]$Content = $false,
|
|
262 | + [string]$Branch = 'master'
|
|
263 | +)
|
|
264 | +$repo = Split-Path -Leaf (git.exe rev-parse --show-toplevel)
|
|
265 | +if (!$repo) {
|
|
266 | + Write-Warning 'Not in git repository'
|
|
267 | + Break
|
|
268 | +}
|
|
269 | +if (!$From) {
|
|
270 | + $envGitDiffFrom = "GitDiffFrom_${repo}"
|
|
271 | + $From = [Environment]::GetEnvironmentVariable($envGitDiffFrom)
|
|
272 | + if (!$From) {
|
|
273 | + Write-Warning "No environment variable: ${envGitDiffFrom}"
|
|
274 | + Break
|
|
275 | + }
|
|
276 | +}
|
|
277 | +if (!$To) {
|
|
278 | + $To = Get-Date -format 'yyyy-MM-ddTHH:mm:ssz'
|
|
279 | +}
|
|
280 | +git.exe diff "${Branch}@{${From}}" "${Branch}@{${To}}" $(if ($Content) {''} else {'--name-only'})
|
|
281 | +```
|
|
282 | +
|
|
283 | +## タグ
|
|
284 | +- 一覧
|
|
285 | +```
|
|
286 | +> git tag
|
|
287 | +```
|
|
288 | +- 絞り込み
|
|
289 | +```
|
|
290 | +> git tag -l "<pattern>"
|
|
291 | +```
|
|
292 | +- 追加<br />
|
|
293 | +shaを省略すると現在のコミットに対してタグが追加される。
|
|
294 | +```
|
|
295 | +> git tag -a <tagname> -m "<comment>" [<sha>]
|
|
296 | +```
|
|
297 | +- 削除
|
|
298 | +```
|
|
299 | +> git tag -d <tagname>
|
|
300 | +```
|
|
301 | +- 詳細表示
|
|
302 | +```
|
|
303 | +> git show <tagname>
|
|
304 | +```
|
|
305 | +- リモートへのプッシュ<br />
|
|
306 | +明示的に操作しないとタグはリモートへプッシュされない。
|
|
307 | +```
|
|
308 | +> git push origin --tags
|
|
309 | +```
|
|
310 | +- タグの指すコミットへのチェックアウト(一時的, ブランチを作らない)
|
|
311 | +```
|
|
312 | +> git checkout refs/tags/<tagname>
|
|
313 | +```
|
|
314 | +- タグの指すコミットへのチェックアウト(ブランチを作る)
|
|
315 | +```
|
|
316 | +> git checkout -b <branchname> refs/tags/<tagname>
|
|
317 | +```
|
|
318 | +
|
|
319 | +# カスタマイズ
|
|
320 | +
|
|
321 | +## Git ユーザ切替
|
|
322 | +- %HOMEPATH%\.gitconfig を複数ユーザで切り替える。
|
|
323 | +- %HOMEPATH%\ に .gitconfig.UserA, .gitconfig.UserB, ... のように予めユーザ分ファイルを用意しておく。
|
|
324 | +- 下記コマンドで切り替え。
|
|
325 | +```
|
|
326 | +> gitConfigSwitcher.bat UserA
|
|
327 | +```
|
|
328 | +- gitConfigSwitcher.bat
|
|
329 | +```dosbatch
|
|
330 | +@echo off
|
|
331 | +type "%HOMEPATH%\.gitconfig.%1" > "%HOMEPATH%\.gitconfig"
|
|
332 | +```
|
|
333 | +
|
|
334 | +## 鍵ファイル作成
|
|
335 | +```
|
|
336 | +$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
|
|
337 | +```
|
|
338 | +- [Generating SSH keys - User Documentation](https://help.github.com/articles/generating-ssh-keys/)
|
|
339 | +- DSA は GitHub Desktop 3.0.8 からサポートされなくなったので、DSA を使っていた場合は RSA で作り直す必要がある。
|
|
340 | +```
|
|
341 | +Skipping ssh-dss key /home/user1/.ssh/id_dsa for not in PubkeyAcceptedKeyTypes
|
|
342 | +Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
|
|
343 | +```
|
|
344 | + - [DSA SSH keys not in PubkeyAcceptedKeyTypes (#2943) - Issues - GitLab.org](https://gitlab.com/gitlab-org/gitlab-ce/issues/2943)
|
|
345 | + - [OpenSSH 7.0 disables ssh-dss keys by default – Gentoo Linux](https://www.gentoo.org/support/news-items/2015-08-13-openssh-weak-keys.html)
|
|
346 | +
|
|
347 | +## 秘密鍵ファイル選択スクリプト
|
|
348 | +- [add-id.zip](add-id.zip)
|
|
349 | +```powershell
|
|
350 | +# 秘密鍵ファイルをリストから選択して追加するスクリプト
|
|
351 | +
|
|
352 | +$ssh_path = "~/.ssh/"
|
|
353 | +$ids = @{}
|
|
354 | +$index = 1
|
|
355 | +foreach ( $id in Get-ChildItem $ssh_path -include id_rsa.* -Name ) {
|
|
356 | + Write-Host "${index}: ${id}"
|
|
357 | + $ids[$index] = $id
|
|
358 | + ++$index
|
|
359 | +}
|
|
360 | +$in = Read-Host "鍵の番号を入力して下さい。"
|
|
361 | +$key = 0
|
|
362 | +[void][int]::TryParse( $in, [ref]$key )
|
|
363 | +$id = $ids[ $key ]
|
|
364 | +if ( $id ) {
|
|
365 | + $absPath = Convert-Path "${ssh_path}${id}"
|
|
366 | + ssh-add $absPath
|
|
367 | +} else {
|
|
368 | + Write-Host "入力した番号は無効です。"
|
|
369 | +}
|
|
370 | +```
|
|
371 | +
|
|
372 | +## ssh id の追加 (CentOS)
|
|
373 | +- ~/.bash_profile の最後に追加 (exec 以降は実行されない)
|
|
374 | +```
|
|
375 | +exec ssh-agent $SHELL
|
|
376 | +```
|
|
377 | +- シェルから id を追加
|
|
378 | +```
|
|
379 | +$ ssh-add
|
|
380 | +```
|
|
381 | +
|
|
382 | +## リポジトリごとに秘密鍵ファイルを切替
|
|
383 | +- GUI を立ち上げる前に Git Shell 立ち上げて「ssh-add %USERPROFILE%/.ssh/id_rsa.repo1.example.com」をやっておけば切り替えなくても大丈夫なのかな?
|
|
384 | +
|
|
385 | +- ./.git/config で秘密鍵ファイルを指定できれば、リポジトリごとに別の鍵が使えるんじゃね?
|
|
386 | +```
|
|
387 | +[remote "origin"]
|
|
388 | + fetch = +refs/heads/*:refs/remotes/origin/*
|
|
389 | + url = ssh://user1@RemoteRepo1/var/git/test1.git
|
|
390 | + identityfile = ~/.ssh/id_rsa.repo1.example.com
|
|
391 | +```
|
|
392 | +- %LOCALAPPDATA%/GitHub/PoshGit_xxx/GitUtils.ps1 に config を読み取る機能を付けてみる。<br />
|
|
393 | +[GitUtils_2.zip](GitUtils_2.zip)
|
|
394 | +- shell を立ち上げると確かに鍵ファイルが切り替わってるけど、GUI の方は切り替わってなくて sync に失敗する。 ← 今ココ
|
|
395 | +- ssh-agent もプロセスが重複して立ち上がってるみたいだし、Windows 向けにはあんまり作りこんでないのかなぁ。
|
|
396 | +- ssh-agent の終了
|
|
397 | +```
|
|
398 | +> ssh-agent -k (現在のプロセスのみ)
|
|
399 | +```
|
|
400 | +- ssh-agent のプロセス ID 確認
|
|
401 | +```
|
|
402 | +> tasklist | Select-String ssh
|
|
403 | +```
|
|
404 | +- プロセスの強制終了
|
|
405 | +```
|
|
406 | +> taskkill /f /pid <プロセスID>
|
|
407 | +```
|
|
408 | +- 環境変数確認<br />
|
|
409 | +なんで Select-String で grep できないんだろ?
|
|
410 | +```
|
|
411 | +> Get-ChildItem env: | Sort-Object Name
|
|
412 | +> Get-Item env:SSH_AGENT_PID
|
|
413 | +> Get-Item env:SSH_AUTH_SOCK
|
|
414 | +```
|
|
415 | +- GitUtils.ps1 の diff
|
|
416 | +```
|
|
417 | +--- GitUtils.ps1 2012-10-22 16:43:04.253827100 +0900
|
|
418 | ++++ GitUtils_2.ps1 2012-11-26 00:03:14.126000000 +0900
|
|
419 | +@@ -246,8 +246,12 @@
|
|
420 | + if (!$sshAdd) { Write-Warning 'Could not find ssh-add'; return }
|
|
421 | +
|
|
422 | + if ($args.Count -eq 0) {
|
|
423 | +- $sshPath = Resolve-Path ~/.ssh/id_rsa
|
|
424 | +- & $sshAdd $sshPath
|
|
425 | ++ #$sshBakPath = Join-Path (Resolve-Path ~/.ssh/) "id_rsa.bak"
|
|
426 | ++ #$sshIdPath = Join-Path (Resolve-Path ~/.ssh/) "id_rsa"
|
|
427 | ++ $sshBranchPath = Resolve-Path (Get-IdentityFile (Get-GitBranch))
|
|
428 | ++ #Copy-Item -Path $sshIdPath -Destination $sshBakPath -Force
|
|
429 | ++ #Copy-Item -Path $sshBranchPath -Destination $sshIdPath -Force
|
|
430 | ++ & $sshAdd $sshBranchPath
|
|
431 | + } else {
|
|
432 | + foreach ($value in $args) {
|
|
433 | + & $sshAdd $value
|
|
434 | +@@ -285,3 +289,42 @@
|
|
435 | + }
|
|
436 | + git checkout -q $head
|
|
437 | + }
|
|
438 | ++
|
|
439 | ++# get a identityfile for branch
|
|
440 | ++function Get-IdentityFile($branch) {
|
|
441 | ++ $conf_path = Join-Path (Get-Location) "/.git/config"
|
|
442 | ++ if ( Test-Path $conf_path ){
|
|
443 | ++ $config = @{}
|
|
444 | ++ $block = ""
|
|
445 | ++ foreach($line in Get-Content $conf_path){
|
|
446 | ++ switch -regex ($line)
|
|
447 | ++ {
|
|
448 | ++ "^\[\s*([^\s]+)(?:\s+`"([^`"]+)`")?\s*\]$" {
|
|
449 | ++ if ( $matches[2] ){
|
|
450 | ++ $block = $matches[1] + "-" + $matches[2]
|
|
451 | ++ } else {
|
|
452 | ++ $block = $matches[1]
|
|
453 | ++ }
|
|
454 | ++ $config[$block] = @{}
|
|
455 | ++ break
|
|
456 | ++ }
|
|
457 | ++ "^\s*([^=\s]+)\s*=\s*(.*)$" {
|
|
458 | ++ $config[$block][$matches[1]] = $matches[2]
|
|
459 | ++ break
|
|
460 | ++ }
|
|
461 | ++ default {
|
|
462 | ++ #write-host "ignored: $line"
|
|
463 | ++ break
|
|
464 | ++ }
|
|
465 | ++ }
|
|
466 | ++ }
|
|
467 | ++
|
|
468 | ++ $remote = $config["branch-$branch"]["remote"]
|
|
469 | ++ $identityfile = $config["remote-$remote"]["identityfile"]
|
|
470 | ++ }
|
|
471 | ++ #write-host $identityfile
|
|
472 | ++ if ( !$identityfile ){
|
|
473 | ++ $identityfile = "~/.ssh/id_rsa"
|
|
474 | ++ }
|
|
475 | ++ return $identityfile
|
|
476 | ++}
|
|
477 | +```
|
|
478 | +
|
|
479 | +## すべてのサブフォルダを更新
|
|
480 | +- pullAll.ps1
|
|
481 | +```powershell
|
|
482 | +Get-ChildItem -Directory |
|
|
483 | + ForEach-Object { Write-Output $_.Name; Set-Location $_; git pull; Set-Location ..; }
|
|
484 | +```
|
|
485 | +
|
|
486 | +# リンク
|
|
487 | +- [Git](https://git-scm.com/)
|
|
488 | + - [Pro Git 日本語訳](https://git-scm.com/book/ja/)
|
|
489 | +
|
|
490 | +- [GitHub](https://github.com/)
|
|
491 | + - [GitHub for Windows](http://windows.github.com/)
|
|
492 | +- [github:help](https://help.github.com/)
|
|
493 | + - [Bootcamp](https://help.github.com/categories/54/articles)
|
|
494 | + - [Set Up Git](https://help.github.com/articles/set-up-git)
|
|
495 | + - [Create A Repo](https://help.github.com/articles/create-a-repo)
|
|
496 | + - [Fork A Repo](https://help.github.com/articles/fork-a-repo)
|
|
497 | + - [Be Social](https://help.github.com/articles/be-social)
|
|
498 | + - [Markdown Basics](https://help.github.com/articles/markdown-basics)
|
|
499 | + - [GitHub Flavored Markdown](https://help.github.com/articles/github-flavored-markdown)
|
|
500 | + - [Writing on GitHub](https://help.github.com/articles/writing-on-github)
|
|
501 | + - [Mastering Markdown](https://guides.github.com/features/mastering-markdown/)
|
|
502 | +- [GitHub Developer](https://developer.github.com/)
|
|
503 | + - [Webhooks](https://developer.github.com/webhooks/)
|
|
504 | +- [GitHub Pages](https://pages.github.com/)
|
|
505 | + - [Pages Help](https://help.github.com/pages/)
|
|
506 | +
|
|
507 | +- [Gravatar](https://ja.gravatar.com/) グローバルに認識されるアバター (Globally Recognized Avatars)
|
|
508 | + - [開発者向け資料](https://ja.gravatar.com/site/implement/)
|
|
509 | + - [Perl Image Requests](https://ja.gravatar.com/site/implement/images/perl/)
|
|
510 | + - 指定サイズのアバターの取得, サイズ省略時は 80x80 pixel<br />
|
|
511 | +https://www.gravatar.com/avatar/ハッシュキー?s=サイズ
|
|
512 | +
|
|
513 | +- [GitPrep - Github clone.](http://gitprep.yukikimoto.com/)
|
|
514 | + - [GitHub:yuki-kimoto/gitprep](https://github.com/yuki-kimoto/gitprep)
|
|
515 | +
|
|
516 | +- [分散バージョン管理システムGitの使い方入門 - SourceForge.JP Magazine](http://sourceforge.jp/magazine/09/02/02/0655246)
|
|
517 | +- [Gitを使いこなすための20のコマンド - SourceForge.JP Magazine](http://sourceforge.jp/magazine/09/03/16/0831212)
|
|
518 | +
|
|
519 | +- [ハックガールズと学ぼう!ゼロから学ぶGit講座|gihyo.jp … 技術評論社](http://gihyo.jp/dev/serial/01/hackgirlsgit)
|
|
520 | + - [第5回 Git操作をなかったことにする!](http://gihyo.jp/dev/serial/01/hackgirlsgit/0005)
|
|
521 | +
|
|
522 | +- [【コラム】イマドキのIDE事情 (142) 「Github for Windows」でGithubをはじめてみよう! - マイナビニュース](http://news.mynavi.jp/column/ide/142/)
|
|
523 | +
|
|
524 | +- [まったりSE備忘録 - 仕事・趣味を通して得た技術的なメモです。](http://sememo.blue-robin.jp/)
|
|
525 | + - [Git の Master サーバー構築](http://sememo.blue-robin.jp/?p=479)
|
|
526 | +
|
|
527 | +- [Log for Backup - Naoki_Rinの学習](http://d.hatena.ne.jp/naokirin/)
|
|
528 | + - [私の使うGitコマンドまとめ 基本コマンド編](http://d.hatena.ne.jp/naokirin/20111201/1322576109)
|
|
529 | +
|
|
530 | +- [uzullaがブログ](http://uzulla.hateblo.jp/)
|
|
531 | + - [WindowsでGit(オチだけ読めばいいです)](http://uzulla.hateblo.jp/entry/2012/07/30/015015)
|
|
532 | +
|
|
533 | +- [西尾泰和のはてなダイアリー](http://d.hatena.ne.jp/nishiohirokazu/)
|
|
534 | + - [gitのHEADがブランチから外れてしまう現象とその直し方](http://d.hatena.ne.jp/nishiohirokazu/20110513/1305290792)
|
|
535 | +
|
|
536 | +- http://tazyamah.tumblr.com/
|
|
537 | + - [• gitで複数のauthorを使い分けたかったので頑張った](http://tazyamah.tumblr.com/post/21048111291/git-author)
|
|
538 | +
|
|
539 | +- [unoh.github.com](http://unoh.github.com/)
|
|
540 | + - [快適なsshクライアント生活](http://unoh.github.com/2010/03/12/ssh_config.html)
|
|
541 | +
|
|
542 | +- [トリコロールな猫](http://www.nekotricolor.com/)
|
|
543 | + - [ベアリポジトリとノンベアリポジトリ:実践編](http://www.nekotricolor.com/blog/2013/05/02/965/)
|
|
544 | +
|
|
545 | +- [Windowsユーザー向けGit入門:CodeZine](http://codezine.jp/article/corner/479)
|
|
546 | +
|
|
547 | +- [Anton: How to avoid GitHub client's "The diff is too large to show here" issue](http://www.amaslo.com/2012/09/how-to-avoid-github-clients-diff-is-too.html)
|
|
548 | +
|
|
549 | +- [Unity で GitHub しよう!](http://keijiro.github.io/unity-github-tutor/)
|
|
550 | +
|
|
551 | +- [castor4bit - Qiita](http://qiita.com/castor4bit)
|
|
552 | + - [圧縮/難読化されたJavaScriptファイルのgit diffをみやすくする](http://qiita.com/castor4bit/items/782ca023e92ae6ff8e51)
|
|
553 | +
|
|
554 | +- [Automatic prune with git fetch or pull - Stack Overflow](https://stackoverflow.com/questions/%31%38%33%30%38%35%33%35)
|
|
555 | +
|
|
556 | +- [hnwの日記](http://d.hatena.ne.jp/hnw/)
|
|
557 | + - [GitHubへpull requestする際のベストプラクティス](http://d.hatena.ne.jp/hnw/20110528) |
|
... | ... | \ No newline at end of file |
MSSQLSrv.md
... | ... | @@ -0,0 +1,167 @@ |
1 | +[[_TOC_]]
|
|
2 | +
|
|
3 | +# ダウンロード
|
|
4 | +- [SQL Server 2014 SP1 Express](https://www.microsoft.com/ja-JP/download/details.aspx?id=46697)
|
|
5 | +- [SQL Server 2012 SP1 Express](http://www.microsoft.com/ja-jp/download/details.aspx?id=35579)
|
|
6 | + - [SQL Server 2012 SP1](http://www.microsoft.com/ja-jp/download/details.aspx?id=35575)
|
|
7 | +- [SQL Server 2012 Express](http://www.microsoft.com/ja-jp/download/details.aspx?id=29062)
|
|
8 | +- [SQL Server 2008 R2 SP1 - Express Edition](http://www.microsoft.com/downloads/ja-jp/details.aspx?familyid=ff38db3d-b0fb-4dad-bcd4-e9a4c509b017)
|
|
9 | +<!----- [[SQL Server 2008 R2 Service Pack 1:http://www.microsoft.com/downloads/ja-jp/details.aspx?familyid=b9aa2dba-7f20-4c0c-9afd-1eebee5a94ea&displaylang=ja-nec]]-->
|
|
10 | + - [SQL Server 2008 R2 Service Pack 1](http://www.microsoft.com/ja-jp/download/details.aspx?id=26727)
|
|
11 | + - [SQL Server 2008 R2 Service Pack 2](http://www.microsoft.com/ja-jp/download/details.aspx?id=30437)
|
|
12 | +- [SQL Server 2008 R2 RTM - Express with Advanced Services](http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=e08766ce-fc9d-448f-9e98-fe84ad61f135)
|
|
13 | + - [SQL Server 2008 R2 RTM - Management Studio Express](http://www.microsoft.com/downloads/ja-jp/details.aspx?familyid=56ad557c-03e6-4369-9c1d-e81b33d8026b&displaylang=ja-nec)
|
|
14 | +- [SQL Server 2008 Express with Advanced Services](http://www.microsoft.com/downloads/details.aspx?familyid=B5D1B8C3-FDA5-4508-B0D0-1311D670E336&displaylang=ja)
|
|
15 | + - [SQL Server 2008 Service Pack 1](http://www.microsoft.com/downloads/details.aspx?familyid=66AB3DBB-BF3E-4F46-9559-CCC6A4F9DC19&displaylang=ja)
|
|
16 | + - [SQL Server 2008 Service Pack 2](http://www.microsoft.com/downloads/details.aspx?familyid=8FBFC1DE-D25E-4790-88B5-7DDA1F1D4E17&displaylang=ja)
|
|
17 | +- [Windows Vista 用 Windows PowerShell 1.0 インストール パッケージ (KB928439)](http://www.microsoft.com/downloads/details.aspx?FamilyID=c6ef4735-c7de-46a2-997a-ea58fdfcba63&displaylang=ja)
|
|
18 | +- [Windows XP 用 Windows PowerShell 1.0 インストール パッケージ (ローカライズ版) (KB926140)](http://www.microsoft.com/downloads/details.aspx?familyid=30125A46-B97C-4704-AA10-605E809D5933&displaylang=ja)
|
|
19 | +
|
|
20 | +# インストール
|
|
21 | +- ウィザードに従ってインストールする。
|
|
22 | +- 「サーバーの構成」で「SQL Server Database Engine」と「Sql Server Reporting Services」用のアカウントを指定する。<br />
|
|
23 | +「SQL Server Browser」の「スタートアップの種類」を「自動」にする。<br />
|
|
24 | +![Install_Account1.png](Install_Account1.png)
|
|
25 | +- 「データベース エンジンの構成」で「認証モード」として「混合モード」を選択する。<br />
|
|
26 | +Windows認証でデータベースの操作を行なう場合には、Windowsのユーザを管理者として登録しておく。<br />
|
|
27 | +![Install_Account2.png](Install_Account2.png)
|
|
28 | +
|
|
29 | +# 設定
|
|
30 | +## ポート設定
|
|
31 | +1. 「SQL Server 構成マネージャ」を起動する。
|
|
32 | +1. 「SQL Server ネットワークの構成 - <インスタンス名>のプロトコル」で「TCP/IP」を選択する。
|
|
33 | +1. コンテキストメニューから「有効化」を選択する。
|
|
34 | +1. コンテキストメニューから「プロパティ」を選択する。
|
|
35 | +1. 「IPアドレス」タブで、「IPALL」の「TCPポート」を「1433」に、「TCP動的ポート」を空白に設定する。
|
|
36 | +
|
|
37 | +## ファイアウォール設定
|
|
38 | +- [SQL Server のアクセスを許可するための Windows ファイアウォールの構成](http://msdn.microsoft.com/ja-jp/library/cc646023.aspx)
|
|
39 | +- [データベース エンジン アクセスを有効にするための Windows ファイアウォールの構成方法](http://msdn.microsoft.com/ja-jp/library/ms175043.aspx)
|
|
40 | +- [リモート接続が許可されるように SQL Server 2005 を構成する方法](http://support.microsoft.com/kb/914277)
|
|
41 | +
|
|
42 | +1. 「Windowsファイアウォール」を起動する。
|
|
43 | +1. 「例外」タブで「プログラムの追加」ボタンをクリック。<br />
|
|
44 | +「sqlservr.exe」と「sqlbrowser.exe」を追加する。<br />
|
|
45 | +「スコープ」は「ユーザーのネットワークのみ」とする。
|
|
46 | +```
|
|
47 | +C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Binn\sqlservr.exe
|
|
48 | +C:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe
|
|
49 | +```
|
|
50 | +
|
|
51 | +## ユーザ設定
|
|
52 | +1. 「SQL Server Management Studio」を起動する。
|
|
53 | +1. 「ビルトイン SQL Server システム管理者アカウント(sa)」としてログインする。
|
|
54 | +1. 「セキュリティ - ログイン」のコンテキストメニューから「新しいログイン」を選択し、ログインを作成する。(TestUser)
|
|
55 | +1. 「データベース」のコンテキストメニューから「新しいデータベース」を選択し、データベースを作成する。(TestDB)
|
|
56 | +1. 「TestDB」の「所有者」を「TestUser」とする。
|
|
57 | +1. 「TestUser」のプロパティを開き、「既定のデータベース」を「TestDB」にする。
|
|
58 | +
|
|
59 | +# あるフィールドの一部分だけ変更する
|
|
60 | +```sql
|
|
61 | +USE [TestDB]
|
|
62 | +GO
|
|
63 | +
|
|
64 | +DECLARE @id int
|
|
65 | +SET @id = 2
|
|
66 | +PRINT 'ID: ' + CAST( @id AS nvarchar(MAX) )
|
|
67 | +
|
|
68 | +DECLARE @params nvarchar(MAX)
|
|
69 | +
|
|
70 | +SELECT @params=[Params]
|
|
71 | +FROM [TestTBL]
|
|
72 | +WHERE [ID]=@id
|
|
73 | +PRINT @params
|
|
74 | +
|
|
75 | +UPDATE [TestTBL]
|
|
76 | +SET [Params] = REPLACE(
|
|
77 | +-- CAST( [Params] AS nvarchar(MAX) ), -- 型が合わない時はCASTする
|
|
78 | + [Params],
|
|
79 | + '<PARAM NAME="JPG_RES" VALUE="72"/>',
|
|
80 | + '<PARAM NAME="JPG_RES" VALUE="150"/>'
|
|
81 | +)
|
|
82 | +WHERE [ID]=@id
|
|
83 | +
|
|
84 | +SELECT @params=[Params]
|
|
85 | +FROM [TestTBL]
|
|
86 | +WHERE [ID]=@id
|
|
87 | +PRINT @params
|
|
88 | +GO
|
|
89 | +```
|
|
90 | +- [REPLACE](http://msdn.microsoft.com/ja-jp/library/ms186862(SQL.90).aspx)
|
|
91 | +- [CAST](http://msdn.microsoft.com/ja-jp/library/ms187928(SQL.90).aspx)
|
|
92 | +- [大きな値のデータ型の使用](http://msdn.microsoft.com/ja-jp/library/ms178158(SQL.90).aspx)
|
|
93 | +- [Unicode データの使用](http://msdn.microsoft.com/ja-jp/library/ms191200(SQL.90).aspx)
|
|
94 | +
|
|
95 | +# データベース一覧
|
|
96 | +- sa アカウントで接続する。
|
|
97 | +- SQL スクリプトを実行する。
|
|
98 | +```sql
|
|
99 | +SELECT
|
|
100 | + [name],
|
|
101 | + [crdate],
|
|
102 | + [filename]
|
|
103 | +FROM
|
|
104 | + [sysdatabases]
|
|
105 | +WHERE
|
|
106 | + -- システムデータベースは除く
|
|
107 | + NOT [name] IN ('master', 'model', 'msdb', 'tempdb');
|
|
108 | +GO
|
|
109 | +```
|
|
110 | +
|
|
111 | +- [SQL Server インスタンス上のデータベースの一覧表示](http://msdn.microsoft.com/ja-jp/library/ms188613(v=sql.110).aspx)
|
|
112 | +- [SQL Server でデータベース一覧を表示するには?:experiment](http://experiment.blog.so-net.ne.jp/2010-02-15)
|
|
113 | +- [SQL Server 2008 Tips 接続サーバーのデータベース名一覧の取得 - GigasMegas](http://gigasmegas.com/?p=932)
|
|
114 | +
|
|
115 | +# 一括バックアップ
|
|
116 | +- [backupAllDatabases.zip](backupAllDatabases.zip)
|
|
117 | +```sql
|
|
118 | +-- 全てのデータベースを一括完全バックアップ
|
|
119 | +-- SQL Server 2005/2008/2008R2
|
|
120 | +
|
|
121 | +DECLARE @DBName NVARCHAR(128)
|
|
122 | +DECLARE @OutputFolder NVARCHAR(1024)
|
|
123 | +DECLARE @OutputName NVARCHAR(1024)
|
|
124 | +DECLARE @CRLF NVARCHAR(2)
|
|
125 | +
|
|
126 | +-- SQL Server 上のパスを指定
|
|
127 | +SET @OutputFolder = 'D:/DB_Backup/'
|
|
128 | +
|
|
129 | +-- 改行コード
|
|
130 | +SET @CRLF = NCHAR(13) + NCHAR(10)
|
|
131 | +
|
|
132 | +DECLARE DBCursor CURSOR FOR
|
|
133 | + SELECT [name]
|
|
134 | + FROM [sysdatabases]
|
|
135 | + -- システムデータベースは除外
|
|
136 | + WHERE NOT [name] IN ('master', 'model', 'msdb', 'tempdb')
|
|
137 | +
|
|
138 | +OPEN DBCursor
|
|
139 | +
|
|
140 | +FETCH NEXT FROM DBCursor
|
|
141 | +INTO @DBName
|
|
142 | +
|
|
143 | +WHILE @@FETCH_STATUS = 0
|
|
144 | +BEGIN
|
|
145 | + PRINT @CRLF + @DBName
|
|
146 | + SET @OutputName = @OutputFolder + @DBName + '.bak'
|
|
147 | +
|
|
148 | + BACKUP DATABASE @DBName
|
|
149 | + TO DISK = @OutputName
|
|
150 | + WITH FORMAT
|
|
151 | +
|
|
152 | + FETCH NEXT FROM DBCursor
|
|
153 | + INTO @DBName
|
|
154 | +END
|
|
155 | +
|
|
156 | +CLOSE DBCursor
|
|
157 | +DEALLOCATE DBCursor
|
|
158 | +```
|
|
159 | +
|
|
160 | +- [BACKUP (Transact-SQL)](http://msdn.microsoft.com/ja-jp/library/ms186865(v=sql.90).aspx)
|
|
161 | +- [@IT:ストアドプロシージャによる繰り返し処理](http://www.atmarkit.co.jp/fnetwork/rensai/sql22/sql1.html)
|
|
162 | +
|
|
163 | +## リンク
|
|
164 | +- [[MSSQL_ImpExp|Perl/MSSQL_ImpExp]]
|
|
165 | +
|
|
166 | +- [ここまで使えるSQL Server Express Edition − @IT](http://www.atmarkit.co.jp/fwin2k/tutor/sqlexplmt/sqlexplmt_01.html)
|
|
167 | +- [PHP 開発者のための SQL Server 入門 - Microsoft Web Platform](http://www.microsoft.com/japan/web/sqlphp/)
|
MySQL.md
... | ... | @@ -0,0 +1,504 @@ |
1 | +[[_TOC_]] |
|
2 | + |
|
3 | +# リンク |
|
4 | +- [MySQL AB](http://www-jp.mysql.com/) |
|
5 | + - [MySQL 5.7 Reference Manual](http://dev.mysql.com/doc/refman/5.7/en/) |
|
6 | + - [7.3.6 Password Expiration Policy](http://dev.mysql.com/doc/refman/5.7/en/password-expiration-policy.html)<br /> |
|
7 | +MySQL 5.7.4 ~ 5.7.10 は既定で360日後にパスワードが失効する。 |
|
8 | + - [11.1.9.3 The utf8mb4 Character Set (4-Byte UTF-8 Unicode Encoding)](http://dev.mysql.com/doc/refman/5.7/en/charset-unicode-utf8mb4.html)<br /> |
|
9 | +character-set = utf8 だと BMP 内の文字(最大3バイト)しか格納できない。<br /> |
|
10 | +BMP 外の文字(絵文字等)を格納するには character-set = utf8mb4 を使う必要がある。 |
|
11 | + - [MySQL 5.6 リファレンスマニュアル](http://dev.mysql.com/doc/refman/5.6/ja/) |
|
12 | + - [Unicode 文字セット](http://dev.mysql.com/doc/refman/5.6/ja/charset-unicode-sets.html) |
|
13 | + - [文字列関数](http://dev.mysql.com/doc/refman/5.6/ja/string-functions.html) ## Split delimited strings |
|
14 | + - [MySQL 5.1 リファレンスマニュアル](http://dev.mysql.com/doc/refman/5.1/ja/) |
|
15 | + - [INSERT ... ON DUPLICATE KEY UPDATE 構文](http://dev.mysql.com/doc/refman/5.1/ja/insert-on-duplicate.html) |
|
16 | + - [Connector/ODBC](http://dev.mysql.com/downloads/connector/odbc/) |
|
17 | +- [日本MySQLユーザ会](http://www.mysql.gr.jp/) |
|
18 | + |
|
19 | +- [MySQLステップアップ講座:EnterpriseZine](http://enterprisezine.jp/article/corner/302) |
|
20 | + |
|
21 | +- [How to split the name string in mysql? - Stack Overflow](https://stackoverflow.com/questions/%31%34%39%35%30%34%36%36) |
|
22 | + |
|
23 | +- [[Perl/DBIx-NamedParams]] |
|
24 | +- [[Perl/DBIx-Custom]] |
|
25 | + |
|
26 | +# インストール |
|
27 | +``` |
|
28 | +# yum -y install mysql-server |
|
29 | +``` |
|
30 | + |
|
31 | +# 初期設定 |
|
32 | +/etc/my.cnf に追加 |
|
33 | +``` |
|
34 | +[mysqld] |
|
35 | +default-character-set = utf8 |
|
36 | +skip-character-set-client-handshake |
|
37 | + |
|
38 | +[mysqldump] |
|
39 | +default-character-set = utf8 |
|
40 | + |
|
41 | +[mysql] |
|
42 | +default-character-set = utf8 |
|
43 | + |
|
44 | +[client] |
|
45 | +default-character-set = utf8 |
|
46 | + |
|
47 | +[odbc] |
|
48 | +default-character-set = utf8 |
|
49 | +``` |
|
50 | + |
|
51 | +MySQL起動 |
|
52 | +``` |
|
53 | +# service mysqld start |
|
54 | +``` |
|
55 | + |
|
56 | +mysqld自動起動設定 |
|
57 | +``` |
|
58 | +# chkconfig mysqld on |
|
59 | +# chkconfig --list mysqld |
|
60 | +``` |
|
61 | + |
|
62 | +セキュリティ初期設定 |
|
63 | +``` |
|
64 | +# mysql_secure_installation |
|
65 | +``` |
|
66 | + |
|
67 | +rootとしてログイン |
|
68 | +``` |
|
69 | +# mysql -u root -p |
|
70 | +``` |
|
71 | + |
|
72 | +現在登録されているユーザ、ホスト、パスワード確認 |
|
73 | +<!--- select user,host,password from mysql.user;--> |
|
74 | +```sql |
|
75 | +SELECT |
|
76 | + CONVERT(user USING utf8) AS user, |
|
77 | + CONVERT(host USING utf8) AS host, |
|
78 | + password |
|
79 | +FROM |
|
80 | + mysql.user; |
|
81 | +``` |
|
82 | + |
|
83 | +rootパスワード登録 |
|
84 | +```sql |
|
85 | +set password for root@localhost=password('rootパスワード'); |
|
86 | +set password for root@'自分のホスト名'=password('rootパスワード'); |
|
87 | +``` |
|
88 | + |
|
89 | +一旦ログアウトし、ログインし直してみてパスワードを確認 |
|
90 | +``` |
|
91 | +mysql> exit |
|
92 | +# mysql -u root -p |
|
93 | +``` |
|
94 | + |
|
95 | +匿名ユーザ削除 |
|
96 | +```sql |
|
97 | +delete from mysql.user where user=''; |
|
98 | +``` |
|
99 | + |
|
100 | +既存データベース一覧表示 |
|
101 | +```sql |
|
102 | +show databases; |
|
103 | +``` |
|
104 | + |
|
105 | +testデータベース削除 |
|
106 | +```sql |
|
107 | +drop database test; |
|
108 | +``` |
|
109 | + |
|
110 | +## 文字コード設定確認 |
|
111 | +``` |
|
112 | +mysql> status |
|
113 | +``` |
|
114 | +または |
|
115 | +``` |
|
116 | +mysql> show variables like 'char%'; |
|
117 | +``` |
|
118 | + |
|
119 | +## 新規データベースおよびユーザの追加 |
|
120 | +データベース仕様 |
|
121 | +:データベース|testdb |
|
122 | +:ユーザ|testuser |
|
123 | +:パスワード|testpass |
|
124 | + |
|
125 | +rootとしてログイン |
|
126 | +``` |
|
127 | +# mysql -u root -p |
|
128 | +``` |
|
129 | + |
|
130 | +TakeAsh.netドメイン内全体からのアクセスを許可する場合 |
|
131 | +```sql |
|
132 | +grant all privileges on testdb.* to testuser@'%.TakeAsh.net' identified by 'testpass'; |
|
133 | +``` |
|
134 | + |
|
135 | +192.168.0.xからのアクセスを許可する場合 |
|
136 | +```sql |
|
137 | +grant all privileges on testdb.* to testuser@'192.168.0.%' identified by 'testpass'; |
|
138 | +``` |
|
139 | + |
|
140 | +一旦ログアウトし、testuserでログインしてテスト |
|
141 | +``` |
|
142 | +mysql> exit |
|
143 | +# mysql -u testuser -p |
|
144 | +``` |
|
145 | + |
|
146 | +既存データベース一覧表示 |
|
147 | +```sql |
|
148 | +show databases; |
|
149 | +``` |
|
150 | + |
|
151 | +新規データベース作成 |
|
152 | +```sql |
|
153 | +create database testdb; |
|
154 | +``` |
|
155 | + |
|
156 | +testdbに接続 |
|
157 | +```sql |
|
158 | +use testdb |
|
159 | +``` |
|
160 | + |
|
161 | +既存テーブル表示 |
|
162 | +```sql |
|
163 | +show tables; |
|
164 | +``` |
|
165 | + |
|
166 | +testtbl作成 |
|
167 | +```sql |
|
168 | +create table testtbl(num int, name varchar(50)); |
|
169 | +``` |
|
170 | + |
|
171 | +レコード登録 |
|
172 | +```sql |
|
173 | +insert into testtbl values(1,'山田太郎'); |
|
174 | +insert into testtbl values(2,'岳'); |
|
175 | +``` |
|
176 | + |
|
177 | +レコード表示 |
|
178 | +```sql |
|
179 | +select * from testtbl; |
|
180 | +``` |
|
181 | + |
|
182 | +レコード更新 |
|
183 | +```sql |
|
184 | +update testtbl set name='山田次郎' where num=1; |
|
185 | +``` |
|
186 | + |
|
187 | +レコード削除 |
|
188 | +```sql |
|
189 | +delete from testtbl where num=1; |
|
190 | +``` |
|
191 | + |
|
192 | +テーブル削除 |
|
193 | +```sql |
|
194 | +drop table testtbl; |
|
195 | +``` |
|
196 | + |
|
197 | +# root パスワードのリセット |
|
198 | +- 空のパスワードを設定することで、パスワード無しでログインできるようになる。<br /> |
|
199 | +作業終了後はパスワードを再設定すること。 |
|
200 | +``` |
|
201 | +> SET PASSWORD FOR 'root'@'localhost' = PASSWORD(''); |
|
202 | +``` |
|
203 | + |
|
204 | +- [MySQL 5.1 リファレンスマニュアル :: B.1.4.1 How to Reset the Root Password](http://dev.mysql.com/doc/refman/5.1/ja/resetting-permissions.html) |
|
205 | +- [MySQL 4.1 リファレンスマニュアル :: A.4.2 忘れたルートパスワードをリセットする方法](http://dev.mysql.com/doc/refman/4.1/ja/resetting-permissions.html) |
|
206 | + |
|
207 | +# タイムゾーン確認/設定 |
|
208 | +- /etc/my.cnf で設定する場合 |
|
209 | +``` |
|
210 | +default-time-zone='+09:00' |
|
211 | +``` |
|
212 | +- 対話的に設定 |
|
213 | +```sql |
|
214 | +SET time_zone = '+09:00'; |
|
215 | +SET time_zone = 'SYSTEM'; |
|
216 | +``` |
|
217 | +- 確認 |
|
218 | +```sql |
|
219 | +SELECT @@global.time_zone, @@session.time_zone; |
|
220 | +``` |
|
221 | +- 現在時刻の表示 |
|
222 | +```sql |
|
223 | +SELECT CURDATE(), CURTIME(), NOW(); |
|
224 | +``` |
|
225 | + |
|
226 | +- [MySQL サーバのタイム ゾーン サポート](http://dev.mysql.com/doc/refman/5.1/ja/time-zone-support.html) |
|
227 | + |
|
228 | +# ファイヤウォール設定 |
|
229 | +外部からmysqlへのアクセスを許可する |
|
230 | +``` |
|
231 | +3306:tcp |
|
232 | +``` |
|
233 | + |
|
234 | +# バックアップ |
|
235 | + |
|
236 | +## mysqldump コマンド |
|
237 | +- [mysqldump コマンド](http://dev.mysql.com/doc/refman/5.1/ja/mysqldump.html) <br /> |
|
238 | +データベース/テーブルの内容を SQL スクリプトとして書き出す。 |
|
239 | +``` |
|
240 | +$ mysqldump -u ユーザ名 -p データベース名 [テーブル名] -r バックアップファイル名.sql |
|
241 | +``` |
|
242 | +- 主なオプション |
|
243 | + - --all-databases, -A<br /> |
|
244 | +すべてのデータベース内のすべてのテーブルをダンプする。 |
|
245 | + - --force, -f<br /> |
|
246 | +テーブルダンプの最中にSQLエラーが発生しても続行する。 |
|
247 | + - --result-file=name, -r<br /> |
|
248 | +ファイルへ出力。 |
|
249 | + - --no-data, -d<br /> |
|
250 | +データを出力しない(定義のみを出力)。 |
|
251 | + - --xml, -X<br /> |
|
252 | +XML として出力。 |
|
253 | + |
|
254 | +## リストア |
|
255 | +- 文字コードを指定してリストア |
|
256 | +``` |
|
257 | +$ mysql -u ユーザ名 -p --default-character-set=utf8 データベース名 |
|
258 | +mysql> SET names 'utf8'; |
|
259 | +mysql> SOURCE バックアップファイル名.sql; |
|
260 | +``` |
|
261 | + |
|
262 | +- [Dumping and importing from/to MySQL in an UTF-8 safe way - makandropedia](https://makandracards.com/makandra/595-dumping-and-importing-from-to-mysql-in-an-utf-8-safe-way) |
|
263 | + |
|
264 | +## テーブルを個別にバックアップ |
|
265 | +- 特定のデータベースについて、テーブル毎に個別にバックアップを行うスクリプト |
|
266 | + |
|
267 | +- bash 版 |
|
268 | +[dump.zip](dump.zip) |
|
269 | +```bash |
|
270 | +#!/bin/bash |
|
271 | +UserName=testuser |
|
272 | +DataBase=testdb |
|
273 | +WorkFile=tables.txt |
|
274 | + |
|
275 | +echo enter database password: |
|
276 | +read PASSWORD |
|
277 | + |
|
278 | +mysql -u $UserName --password=$PASSWORD --database $DataBase -e "show tables;" > $WorkFile |
|
279 | + |
|
280 | +exec 3< $WorkFile |
|
281 | + |
|
282 | +# drop header line |
|
283 | +read LINE 0<&3 |
|
284 | + |
|
285 | +while read LINE 0<&3 |
|
286 | +do |
|
287 | +echo ${LINE} |
|
288 | +mysqldump -u $UserName --password=$PASSWORD --force $DataBase ${LINE} > Tables/${LINE}.sql |
|
289 | +done |
|
290 | + |
|
291 | +exec 3<&- |
|
292 | +``` |
|
293 | + |
|
294 | + - [シェル・スクリプト・リファレンス - 【 ファイルからの読み込み 】:ITpro](http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/231099/) |
|
295 | + |
|
296 | +- PowerShell 版 |
|
297 | +```powershell |
|
298 | +# Backup database by tables. |
|
299 | + |
|
300 | +$username = 'testuser' |
|
301 | +$database = 'testdb' |
|
302 | +$fileTables = '_Tables.txt' |
|
303 | +$tablesSkip = @('table', 'names', 'to', 'skip') |
|
304 | + |
|
305 | +$today = Get-Date -Format "yyyyMMdd" |
|
306 | +$dirOut = New-Item "C:/Backup/${env:COMPUTERNAME}_${database}_Tables_${today}" -ItemType Directory -Force |
|
307 | +Write-Output "Output: ${dirOut}" |
|
308 | + |
|
309 | +$passSecure = Read-Host -AsSecureString "Input password for '${username}'" |
|
310 | +$passPlain = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($passSecure)) |
|
311 | + |
|
312 | +mysql -u $username --password="$passPlain" --database $database -e "show tables;" >"${dirOut}/${fileTables}" 2>$null |
|
313 | + |
|
314 | +$tables = @(Get-Content "${dirOut}/${fileTables}") |
|
315 | +$tables[1..($tables.length - 1)] | |
|
316 | + Where-Object { -not $tablesSkip.Contains($_) } | |
|
317 | + ForEach-Object { Write-Output $_; mysqldump -u $username --password="$passPlain" --force $database $_ -r "${dirOut}/${_}.sql" 2>$null } |
|
318 | +``` |
|
319 | + |
|
320 | +## ダンプをテーブル毎に分割 |
|
321 | +- [GitHub:TakeAsh/p-mysqlUtil](https://github.com/TakeAsh/p-mysqlUtil) |
|
322 | +- [splitSqlDump.zip](splitSqlDump.zip) |
|
323 | +```perl |
|
324 | +#!/usr/bin/perl |
|
325 | +# split MySQL dump into each tables. |
|
326 | + |
|
327 | +use strict; |
|
328 | +use warnings; |
|
329 | +use utf8; |
|
330 | +use Encode; |
|
331 | + |
|
332 | +my $charsetConsole = 'CP932'; |
|
333 | +my $charsetFile = 'UTF-8'; |
|
334 | + |
|
335 | +binmode( STDIN, ":encoding($charsetConsole)" ); |
|
336 | +binmode( STDOUT, ":encoding($charsetConsole)" ); |
|
337 | +binmode( STDERR, ":encoding($charsetConsole)" ); |
|
338 | + |
|
339 | +@ARGV = map { decode( $charsetConsole, $_ ); } @ARGV; |
|
340 | + |
|
341 | +my $infile = $ARGV[0] or die("usage: splitSqlDump.pl <dump.sql>\n"); |
|
342 | +my $dirSqls = './sqls/'; |
|
343 | +my $structuresfile = $dirSqls . '_structures.sql'; |
|
344 | + |
|
345 | +mkdir($dirSqls); |
|
346 | +unlink <"${dirSqls}*">; |
|
347 | + |
|
348 | +my $regSkip = qr{^\s*( |
|
349 | + LOCK\sTABLES\s`[^`]+`\sWRITE| |
|
350 | + /\*!40000\sALTER\sTABLE\s`[^`]+`\sDISABLE\sKEYS\s\*/| |
|
351 | + /\*!40000\sALTER\sTABLE\s`[^`]+`\sENABLE\sKEYS\s\*/| |
|
352 | + UNLOCK\sTABLES |
|
353 | +);}x; |
|
354 | +my $regInsert = qr{^\s*INSERT\sINTO\s`(?<table>[^`]+)`\sVALUES\s\([\s\S]+\);}; |
|
355 | +my $regBreak = qr{(VALUES\s|\),)(\()}; |
|
356 | + |
|
357 | +open( my $fhIn, "<:raw", encode( $charsetConsole, $infile ) ) |
|
358 | + or die("$infile: $!"); |
|
359 | +open( my $fhStructures, ">:raw", encode( $charsetConsole, $structuresfile ) ) |
|
360 | + or die("$structuresfile: $!"); |
|
361 | +my $prevTable = ''; |
|
362 | +my $fhTable = undef; |
|
363 | +while ( defined( my $line = <$fhIn> ) ) { |
|
364 | + if ( $line =~ $regSkip ) { |
|
365 | + next; |
|
366 | + } elsif ( $line !~ $regInsert ) { |
|
367 | + print $fhStructures $line; |
|
368 | + } else { |
|
369 | + renewTable($1); |
|
370 | + $line =~ s/$regBreak/$1\n\t$2/g; |
|
371 | + print $fhTable $line; |
|
372 | + } |
|
373 | +} |
|
374 | +close($fhIn); |
|
375 | +close($fhStructures); |
|
376 | +renewTable(''); |
|
377 | + |
|
378 | +sub renewTable { |
|
379 | + my $newTable = shift; |
|
380 | + if ( $prevTable eq $newTable ) { |
|
381 | + return; |
|
382 | + } |
|
383 | + if ($fhTable) { |
|
384 | + print $fhTable "/*!40000 ALTER TABLE `${prevTable}` ENABLE KEYS */;\n"; |
|
385 | + print $fhTable "UNLOCK TABLES;\n"; |
|
386 | + close($fhTable); |
|
387 | + } |
|
388 | + if ( !$newTable ) { |
|
389 | + return; |
|
390 | + } |
|
391 | + my $tableFile = $dirSqls . $newTable . '.sql'; |
|
392 | + open( $fhTable, ">:raw", encode( $charsetConsole, $tableFile ) ) |
|
393 | + or die("$tableFile: $!"); |
|
394 | + print $fhTable "LOCK TABLES `${newTable}` WRITE;\n"; |
|
395 | + print $fhTable "/*!40000 ALTER TABLE `${newTable}` DISABLE KEYS */;\n"; |
|
396 | + $prevTable = $newTable; |
|
397 | +} |
|
398 | + |
|
399 | +# EOF |
|
400 | +``` |
|
401 | + |
|
402 | +# テーブルの修復 |
|
403 | +- [CHECK TABLE](http://dev.mysql.com/doc/refman/5.1/ja/check-table.html) |
|
404 | +- [REPAIR TABLE](http://dev.mysql.com/doc/refman/5.1/ja/repair-table.html) |
|
405 | + |
|
406 | +# テーブルの最適化 |
|
407 | +- [OPTIMIZE TABLE](https://dev.mysql.com/doc/refman/5.6/ja/optimize-table.html) |
|
408 | + |
|
409 | +# データベースのリネーム |
|
410 | +- [How do I quickly rename a MySQL database (change schema name)? - Stack Overflow](https://stackoverflow.com/questions/%36%37%30%39%33) |
|
411 | + - [MySQL :: WL#4030: Deprecate RENAME DATABASE: replace with ALTER DATABASE <name> UPGRADE](https://dev.mysql.com/worklog/task/?id=4030) |
|
412 | + |
|
413 | +# Windowsからのアクセス |
|
414 | +**注意) MySQL 5.0.37 / ODBC Driver 3.51.12 / Windows の構成では文字化けする。** |
|
415 | + |
|
416 | +## ODBCドライバの登録 |
|
417 | +1. [Connector/ODBC](http://dev.mysql.com/downloads/connector/odbc/) のWindows MSI版をダウンロード |
|
418 | +1. インストール (構成は「Typical」でOK) |
|
419 | +1. 「設定 - コントロールパネル - 管理ツール - データソース(ODBC)」を起動 |
|
420 | +1. 「ユーザーDSN」または「システムDSN」を選択 |
|
421 | + - 特定のユーザーのみが使用する場合は、「ユーザーDSN」を選択 |
|
422 | + - 全ユーザーが使用する場合は、「システムDSN」を選択 |
|
423 | +1. 「追加」をクリック |
|
424 | +1. 「MySQL ODBC x.xx Driver」を選択(x.xxはバージョンナンバー) |
|
425 | +1. 「完了」をクリック |
|
426 | +1. 「Login」タブを記入 |
|
427 | + 1. 「Data Source Name」は任意の名前でOK<br /> |
|
428 | +例) MySQL ODBC Connector |
|
429 | + 1. 「Description」は任意。空白も可 |
|
430 | + 1. 「Server」にサーバ名またはIPアドレスを記入。<br /> |
|
431 | +例) mysql1.TakeAsh.net |
|
432 | + 1. 「User」にユーザ名を記入<br /> |
|
433 | +例) testuser |
|
434 | + 1. 「Password」にパスワードを記入<br /> |
|
435 | +例) testpass |
|
436 | + 1. 「Test」をクリック<br /> |
|
437 | +サーバ側の設定が正常にできていれば「Success; connection was made!」と表示される。<br /> |
|
438 | +エラーダイアログが出た場合は「Diagnostics」をクリックするとエラーメッセージの詳細が出る。 |
|
439 | + 1. 「Database」を選択<br /> |
|
440 | +1. 「Advanced」タブを選択しoptionを設定する<br /> |
|
441 | +[Connector/ODBC Connection Parameters](http://dev.mysql.com/doc/refman/5.1/ja/myodbc-configuration-connection-parameters.html) |
|
442 | + - Microsoft Access、Visual Basic 用推奨設定 |
|
443 | + - Don't Optimized Column Width にチェックを入れる |
|
444 | + - Return Matching Rows にチェックを入れる |
|
445 | + - Read Options From my.cnf にチェックを入れる |
|
446 | +1. 「OK」をクリック |
|
447 | + |
|
448 | +## Common SQL Environment (CSE) |
|
449 | +- インストール |
|
450 | + 1. CSE のダウンロード<br /> |
|
451 | +[つみきウェブ](http://www.hi-ho.ne.jp/tsumiki/) |
|
452 | + 1. 圧縮ファイルを展開し、適当なフォルダに配置する<br /> |
|
453 | +例) C:\Program Files\CSE |
|
454 | + 1. CSEを実行する |
|
455 | + 1. メニューの「ツール - 設定」を選択 |
|
456 | + 1. 「機能」タブで「SQLエクスプローラ」の「ルートフォルダ」を指定する<br /> |
|
457 | +例) C:\Program Files\CSE\SQL |
|
458 | + |
|
459 | +- データベースへの接続 |
|
460 | + 1. メニューの「データベース - 接続」を選択 |
|
461 | + 1. 「DBMS」は「ODBC汎用」を選択 |
|
462 | + 1. 「データソース」はODBCドライバとして登録したものを選択<br /> |
|
463 | +例) MySQL ODBC Connector |
|
464 | + 1. 「ユーザ名」にユーザ名を記入<br /> |
|
465 | +例) testuser |
|
466 | + 1. 「パスワード」にパスワードを記入<br /> |
|
467 | +例) testpass |
|
468 | + 1. 「OK」をクリック |
|
469 | + |
|
470 | +- テーブルの全内容を表示<br /> |
|
471 | + 1. 「DBエクスプローラ」で、「テーブル」を展開 |
|
472 | + 1. 内容を表示したいテーブルの上で右クリックし「全データを開く」を選択 |
|
473 | + 1. 「コンソール」に該当テーブルの内容が表示される |
|
474 | + |
|
475 | +- テーブルの更新 |
|
476 | + 1. 「コンソール」に表示されたテーブルの該当箇所を更新する |
|
477 | + 1. メニューの「データベース - 編集の反映」を選択 |
|
478 | + 1. 確認ダイアログの「OK」をクリック |
|
479 | + |
|
480 | +- テーブルのエクスポート |
|
481 | + 1. 該当テーブルの上で右クリックし「全データをエクスポート」を選択 |
|
482 | + 1. フォルダとファイル名を指定し「保存」をクリック |
|
483 | + 1. CSVファイルが書き出される (Shift_JIS) |
|
484 | + |
|
485 | +- データのインポート |
|
486 | + 1. インポートしたいテーブルの上で右クリックし「データをインポート」を選択 |
|
487 | + 1. CSVファイルを指定し「開く」をクリック |
|
488 | + |
|
489 | +- SQLの実行 |
|
490 | + 1. 「新規作成」でスクリプトウィンドウを開く |
|
491 | + 1. SQLを記述する |
|
492 | + 1. メニューの「データベース - 実行」を選択 |
|
493 | + |
|
494 | +## ODBC/ConnectionString による接続 |
|
495 | +``` |
|
496 | +DRIVER={MySQL ODBC x.xx Driver}; SERVER=サーバ名; DATABASE=データベース名; UID=ユーザ名; PASSWORD=パスワード; OPTION=オプション |
|
497 | +``` |
|
498 | +例) DRIVER={MySQL ODBC x.xx Driver}; SERVER=mysql1.TakeAsh.net; DATABASE=testdb; UID=testuser; PASSWORD=testpass; OPTION=65539 |
|
499 | + |
|
500 | +## A5:SQL Mk-2 |
|
501 | +- [松のページ](http://www.mmatsubara.com/) |
|
502 | + - [A5:SQL Mk-2](http://a5m2.mmatsubara.com/) フリーの汎用SQL開発ツール/ER図ツール |
|
503 | + |
|
504 | +- 後で試す。 |
|
... | ... | \ No newline at end of file |
VBScript.md
... | ... | @@ -0,0 +1,566 @@ |
1 | +[[_TOC_]] |
|
2 | +~~#ls2~~ |
|
3 | + |
|
4 | +# リンク |
|
5 | +- [VBScript ランゲージ リファレンス](http://msdn.microsoft.com/ja-jp/library/cc392193.aspx) |
|
6 | +- [ASP 組み込みオブジェクト](http://msdn.microsoft.com/library/ja/jpiis/iishelp/iis/htm/asp/vbob6zkv.asp) |
|
7 | +- [Windows Script Host リファレンス](http://msdn.microsoft.com/ja-jp/library/cc364460.aspx) |
|
8 | +<!---- [[Super-Easy Guide to the Microsoft Office Excel 2003 Object Model:http://msdn2.microsoft.com/en-us/library/aa203714(office.11).aspx]]--> |
|
9 | +- [Microsoft Office Excel 2003 オブジェクト モデルの初心者向けガイド](http://msdn.microsoft.com/ja-jp/library/aa203714.aspx) |
|
10 | +- [初心者のための XML DOM ガイド](http://msdn.microsoft.com/ja-jp/library/aa468547.aspx) / [ドキュメントの走査方法](http://msdn.microsoft.com/ja-jp/library/aa468547.aspx#HowDoI) |
|
11 | + |
|
12 | +- [MS Office Professional](http://office.microsoft.com/ja-jp/professional/) / [体験版](http://office.microsoft.com/ja-jp/professional/redir/XT101852694.aspx) |
|
13 | + |
|
14 | +# 連想配列 |
|
15 | + |
|
16 | +~[Dictionary オブジェクト](http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/jsobjdictionary.asp)が連想配列として使える。 |
|
17 | +```vbscript |
|
18 | + <%@ language="VBScript" %> |
|
19 | + <% |
|
20 | + ' HashTable.asp |
|
21 | + Dim HashTable |
|
22 | + Set HashTable = CreateObject("Scripting.Dictionary") |
|
23 | + HashTable.add "key1", "value1" |
|
24 | + HashTable.Item("key2") = "value2" |
|
25 | + |
|
26 | + Response.ContentType = "text/plain" |
|
27 | + Response.Charset = "Shift_JIS" |
|
28 | + Response.Expires = -1 |
|
29 | + |
|
30 | + Response.write "key1: " & HashTable.Item("key1") & vbCRLF |
|
31 | + Response.write "key2: " & HashTable.Item("key2") & vbCRLF |
|
32 | + %> |
|
33 | +``` |
|
34 | + |
|
35 | +~ 既に存在するキーに対して、addメソッドを使うとエラーとなるが、Itemプロパティを使った場合には警告なく置き換えられる。 |
|
36 | + |
|
37 | +# 環境変数 |
|
38 | + |
|
39 | +~環境変数を読み出すには[Requestオブジェクト](http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpiis/iishelp/iis/htm/asp/vbob5ulw.asp)の[ServerVariablesコレクション](http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpiis/iishelp/iis/htm/asp/vbob5vsj.asp)を読み出せばよい。 |
|
40 | +```vbscript |
|
41 | + Browser = Request.ServerVariables ( "HTTP_USER_AGENT" ) |
|
42 | + |
|
43 | + <html> |
|
44 | + <%@ language="VBScript" %> |
|
45 | + <!-- printEnv.asp --> |
|
46 | + <body> |
|
47 | + <table border="1"> |
|
48 | + <tr><th>Server Variable</th><th>Value</th></tr> |
|
49 | + <% For Each strKey In Request.ServerVariables %> |
|
50 | + <tr><td><%= strKey %></td><td><%= Request.ServerVariables(strKey) %></td></tr> |
|
51 | + <% Next %> |
|
52 | + </table> |
|
53 | + </body> |
|
54 | + </html> |
|
55 | +``` |
|
56 | + |
|
57 | +# FileSystemObjectオブジェクト |
|
58 | + |
|
59 | +[FileSystemObjectオブジェクト](http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/fsooriScriptingRun-TimeReference.asp) |
|
60 | + |
|
61 | +# Webからのダウンロード |
|
62 | + |
|
63 | +~ [IXMLHTTPRequestオブジェクト](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/7924f6be-c035-411f-acd2-79de7a711b38.asp)を使って、指定したURIをダウンロードして表示する。 |
|
64 | + |
|
65 | +``` |
|
66 | +TinyProxy.asp?URI=http://xxx〜 |
|
67 | +``` |
|
68 | + |
|
69 | +~ charsetを返さないサーバに対して使用すると文字化けする。 |
|
70 | + |
|
71 | +```vbscript |
|
72 | + <%@ language="VBScript" %> |
|
73 | + <!-- #include File="adovbs.inc" --> |
|
74 | + <% |
|
75 | + ' TinyProxy.asp |
|
76 | + |
|
77 | + Response.ContentType = "text/html" |
|
78 | + Response.Charset = "Shift_JIS" |
|
79 | + Response.Expires = -1 |
|
80 | + |
|
81 | + Dim sHTML |
|
82 | + |
|
83 | + sHTML = getURL( Request.QueryString("URI") ) |
|
84 | + |
|
85 | + Response.Write sHTML |
|
86 | + |
|
87 | + '''''''' |
|
88 | + |
|
89 | + Function getURL( sURL ) |
|
90 | + Dim oXMLHTTP, sHTML, sEncoding |
|
91 | + Set oXMLHTTP = Server.CreateObject("MSXML2.XMLHTTP") |
|
92 | + |
|
93 | + oXMLHTTP.Open "GET", sURL, False |
|
94 | + oXMLHTTP.Send |
|
95 | + sHTML = oXMLHTTP.responseBody |
|
96 | + sEncoding = oXMLHTTP.getResponseHeader("Content-type") |
|
97 | + |
|
98 | + Dim oRegExp |
|
99 | + Set oRegExp = New RegExp |
|
100 | + oRegExp.Pattern = ".*\s*charset=(.*)\s*" |
|
101 | + oRegExp.IgnoreCase = True |
|
102 | + oRegExp.Global = True |
|
103 | + If oRegExp.Test(sEncoding) Then |
|
104 | + sEncoding = oRegExp.Replace( sEncoding, "$1" ) |
|
105 | + Else |
|
106 | + sEncoding = "Shift_JIS" |
|
107 | + End If |
|
108 | + Set oRegExp = Nothing |
|
109 | + |
|
110 | + Dim oStream |
|
111 | + Set oStream = Server.CreateObject("ADODB.Stream") |
|
112 | + oStream.Open |
|
113 | + oStream.Type = adTypeBinary |
|
114 | + oStream.Write sHTML |
|
115 | + oStream.Position = 0 |
|
116 | + oStream.Type = adTypeText |
|
117 | + oStream.Charset = sEncoding |
|
118 | + getURL = oStream.ReadText() |
|
119 | + oStream.Close |
|
120 | + Set oStream = Nothing |
|
121 | + |
|
122 | + Set oXMLHTTP = Nothing |
|
123 | + End Function |
|
124 | + %> |
|
125 | +``` |
|
126 | + |
|
127 | +~ (参考) ダウンロードしたHTMLを加工しない場合 |
|
128 | +```vbscript |
|
129 | + Dim oXMLHTTP |
|
130 | + Set oXMLHTTP = Server.CreateObject("MSXML2.XMLHTTP") |
|
131 | + |
|
132 | + oXMLHTTP.Open "GET", sURL, False |
|
133 | + oXMLHTTP.Send |
|
134 | + Response.BinaryWrite oXMLHTTP.responseBody |
|
135 | +``` |
|
136 | + |
|
137 | +- [WSHで作るRSSアグリゲータ](http://signal9.exblog.jp/1537443) |
|
138 | + |
|
139 | +# Excel からの CSV(K3フォーマット) 書き出し |
|
140 | +- ダウンロード [SaveAsK3.zip](SaveAsK3.zip) |
|
141 | +- アクティブなブックのすべてのシートをCSV(K3フォーマット)として書き出します。 |
|
142 | +- ファイル名は、タブ区切りの場合は「シート名」+「.txt」、カンマ区切りの場合は「シート名」+「.csv」となります。 |
|
143 | +- 文字列は「"」でくくり、数値と日付はそのまま出力します。 |
|
144 | +- 書式設定が「文字列」になっているセルは、内容が数値/日付であってもダブルクォーテーションでくくられます。 |
|
145 | +- 既存ファイルは警告なしで上書きされます。 |
|
146 | +- 実行手順: メニューの「SaveAsK3」から「すべてのワークシートをタブ区切りファイルとして保存」または「すべてのワークシートをカンマ区切りファイルとして保存」を選択します。 |
|
147 | +- 表はA1から始まって連続している必要があります。 |
|
148 | +- 空行があるとその下は出力されません。 |
|
149 | +- Win/Mac両対応 |
|
150 | +- 2008/05/29修正 |
|
151 | + - CSVではなくTSV(タブ区切り)をデフォルトにしました。 |
|
152 | + - 出力したパスとファイル名をレポートするようにしました。 |
|
153 | + - アドインとして使えるようにしました。アドインとして登録すると、メニューに「SaveAsK3」という項目が増えます。 |
|
154 | +- 2008/06/03修正 |
|
155 | + - メニューから、TSVかCSVかを選べるようにしました。 |
|
156 | +- [RFC 4180 - Common Format and MIME Type for Comma-Separated Values (CSV) Files](https://tools.ietf.org/html/rfc4180) |
|
157 | +- [WikiPedia.ja:Comma-Separated_Values](http://ja.wikipedia.org/wiki/%43%6f%6d%6d%61%2d%53%65%70%61%72%61%74%65%64%5f%56%61%6c%75%65%73) |
|
158 | +- [Access Home Page by pPoy](http://www.nurs.or.jp/~ppoy/access/) / [全シートをシート別に CSV ファイルとして出力](http://www.nurs.or.jp/~ppoy/access/excel/xlM033.html) |
|
159 | +- [Excelでお仕事!](http://www.asahi-net.or.jp/~ef2o-inue/) / [自由設定のCSVファイル出力](http://www.asahi-net.or.jp/~ef2o-inue/download/sub09_020_095.html) |
|
160 | +- [だるまのエクセルVBA](http://members3.jcom.home.ne.jp/daruma_kyo/) / [Microsoft Excel X for MacのVBAについて](http://members3.jcom.home.ne.jp/daruma_kyo/info/mac_vba.html) |
|
161 | +- [Java:CSVパーサを作る(その2) - RFC4180対応 前編: 愛ゆえにプログラムは美しい](http://endeavour.cocolog-nifty.com/developer_room/2008/06/javacsv_389b.html) K3フォーマットについて |
|
162 | + |
|
163 | +SaveAsK3.bas |
|
164 | +```vbscript |
|
165 | + Attribute VB_Name = "Module1" |
|
166 | + Private Const g_cnsDQ = """" |
|
167 | + Private Const g_cnsSQ = "'" |
|
168 | + Private Const g_cnsSH = "#" |
|
169 | + |
|
170 | + Private Const g_cnsEXT = ".txt" ' 拡張子 |
|
171 | + |
|
172 | + Sub SaveAsK3_csv() |
|
173 | + Call SaveAsK3(",", ".csv") |
|
174 | + End Sub |
|
175 | + |
|
176 | + Sub SaveAsK3(Optional separator As String = vbTab, Optional extension As String = g_cnsEXT) |
|
177 | + Attribute SaveAsK3.VB_Description = "すべてのシートをCSVとして書き出します。\n文字列は「""」でくくり、数値と日付はそのまま出力します。" |
|
178 | + Dim fh As Long 'ファイルハンドル |
|
179 | + Dim myData As Range 'データ領域格納 |
|
180 | + Dim myRecord As String '出力するデータ(1行) |
|
181 | + Dim myField As String '出力するデータ(1フィールド) |
|
182 | + Dim dataval As Variant 'データの値 |
|
183 | + Dim datatype As String 'データの型 |
|
184 | + Dim path As String '出力パス |
|
185 | + Dim filename As String '出力ファイル名 |
|
186 | + Dim filenames As String '出力ファイル名のリスト |
|
187 | + |
|
188 | + Dim w As Worksheet |
|
189 | + Dim i As Long, j As Long |
|
190 | + |
|
191 | + If ActiveWorkbook.path <> "" Then |
|
192 | + path = ActiveWorkbook.path & Application.PathSeparator |
|
193 | + Else |
|
194 | + path = CurDir & Application.PathSeparator |
|
195 | + End If |
|
196 | + filenames = "" |
|
197 | + |
|
198 | + For Each w In Worksheets |
|
199 | + 'CSVファイル作成 (既存ファイルは上書き) |
|
200 | + filename = w.Name & extension |
|
201 | + fh = FreeFile |
|
202 | + Open path & filename For Output As #fh |
|
203 | + filenames = filenames & vbNewLine & filename |
|
204 | + 'A1から始まる全データ範囲取得 |
|
205 | + Set myData = w.Range("A1").CurrentRegion |
|
206 | + |
|
207 | + '範囲内の全行数ループ |
|
208 | + For i = 1 To myData.Rows.Count |
|
209 | + myRecord = "" |
|
210 | + '範囲内の1行ループ |
|
211 | + For j = 1 To myData.Columns.Count |
|
212 | + dataval = myData(i, j).Value |
|
213 | + datatype = TypeName(dataval) |
|
214 | + ' 文字列は「"」でくくる |
|
215 | + If datatype = "String" Then |
|
216 | + myField = g_cnsDQ & dataval & g_cnsDQ |
|
217 | + ' 日付はそのまま |
|
218 | + ElseIf datatype = "Date" Then |
|
219 | + 'myField = g_cnsSH & dataval & g_cnsSH |
|
220 | + myField = dataval |
|
221 | + ' その他(Double,Empty,...)はそのまま |
|
222 | + Else |
|
223 | + myField = dataval |
|
224 | + End If |
|
225 | + |
|
226 | + 'データ格納 |
|
227 | + If j = 1 Then |
|
228 | + '最初のデータ |
|
229 | + myRecord = myField |
|
230 | + Else |
|
231 | + myRecord = myRecord & separator & myField |
|
232 | + End If |
|
233 | + Next j |
|
234 | + |
|
235 | + 'テキストファイル出力 |
|
236 | + If myRecord <> "" Then |
|
237 | + Print #fh, myRecord |
|
238 | + End If |
|
239 | + Next i |
|
240 | + Close #fh |
|
241 | + Next w |
|
242 | + MsgBox "ワークシートを書き出しました。" & vbNewLine & path & filenames, vbOKOnly, "処理終了" |
|
243 | + |
|
244 | + '変数開放 |
|
245 | + Set dataval = Nothing |
|
246 | + Set myData = Nothing |
|
247 | + End Sub |
|
248 | +``` |
|
249 | + |
|
250 | +ThisWorkbook.cls |
|
251 | +```vbscript |
|
252 | + VERSION 1.0 CLASS |
|
253 | + BEGIN |
|
254 | + MultiUse = -1 'True |
|
255 | + END |
|
256 | + Attribute VB_Name = "ThisWorkbook" |
|
257 | + Attribute VB_GlobalNameSpace = False |
|
258 | + Attribute VB_Creatable = False |
|
259 | + Attribute VB_PredeclaredId = True |
|
260 | + Attribute VB_Exposed = True |
|
261 | + Private Const g_cnsMenuName = "SaveAsK3" |
|
262 | + |
|
263 | + Private Sub Workbook_AddinInstall() |
|
264 | + On Error Resume Next |
|
265 | + Call Workbook_AddinUninstall |
|
266 | + Set Menu = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup) |
|
267 | + Menu.Caption = g_cnsMenuName |
|
268 | + Set SubMenu1 = Menu.Controls.Add |
|
269 | + SubMenu1.Caption = "すべてのワークシートをタブ区切りファイルとして保存" |
|
270 | + SubMenu1.OnAction = "SaveAsK3" |
|
271 | + Set SubMenu2 = Menu.Controls.Add |
|
272 | + SubMenu2.Caption = "すべてのワークシートをカンマ区切りファイルとして保存" |
|
273 | + SubMenu2.OnAction = "SaveAsK3_csv" |
|
274 | + End Sub |
|
275 | + |
|
276 | + Private Sub Workbook_AddinUninstall() |
|
277 | + On Error Resume Next |
|
278 | + Application.CommandBars("Worksheet Menu Bar").Controls(g_cnsMenuName).Delete |
|
279 | + End Sub |
|
280 | +``` |
|
281 | + |
|
282 | +## Excel AddIn 作成のメモ |
|
283 | +- マクロの本体は「標準モジュール」に記述する。 |
|
284 | +- メニューバーへの追加・削除イベントハンドラは「ThisWorkBook」に記述する。 |
|
285 | +- 「ThisWorkBook」のプロパティの「IsAddin」を「True」にするとアドインとして認識される。<br /> |
|
286 | +「False」にすると通常のExcelファイルとして編集できる。(保護されていない場合) |
|
287 | +- プロジェクト名を「VBAProject」から変更しない。変更するとモジュール内の関数を見つけられなくなる。 |
|
288 | +- アドインの保存場所 |
|
289 | +``` |
|
290 | +%AppData%\Microsoft\AddIns |
|
291 | +``` |
|
292 | + |
|
293 | +![VBE.png](VBE.png) |
|
294 | + |
|
295 | +# 正規表現にマッチする部分を強調するアドイン |
|
296 | +- [HighlightRegEx.zip](HighlightRegEx.zip) |
|
297 | + - HighlightRegEx.bas |
|
298 | +```vbscript |
|
299 | +Attribute VB_Name = "Module1" |
|
300 | +Private Const defaultPattern = "\*[^\*]+\*" |
|
301 | + |
|
302 | +Sub HighlightRegEx() |
|
303 | + Dim pattern As String |
|
304 | + Dim selectedCells As Range |
|
305 | + Dim currentColor, selectedColor |
|
306 | + Dim isSetColor As Boolean |
|
307 | + Dim regEx, match |
|
308 | + Dim cell As Range |
|
309 | + pattern = InputBox("RegEx", "Highlight RegEx", defaultPattern) |
|
310 | + If pattern = "" Then |
|
311 | + Exit Sub |
|
312 | + End If |
|
313 | + Set selectedCells = Selection |
|
314 | + Selection(1).Select |
|
315 | + currentColor = Selection.Interior.color |
|
316 | + isSetColor = Application.Dialogs(xlDialogPatterns).Show |
|
317 | + selectedColor = Selection.Interior.color |
|
318 | + Selection.Interior.color = currentColor |
|
319 | + selectedCells.Select |
|
320 | + If isSetColor = False Then |
|
321 | + Exit Sub |
|
322 | + End If |
|
323 | + Set regEx = CreateObject("VBScript.RegExp") |
|
324 | + regEx.pattern = pattern |
|
325 | + regEx.Global = True |
|
326 | + For Each cell In selectedCells |
|
327 | + Set match = regEx.Execute(cell) |
|
328 | + If (match.Count > 0) Then |
|
329 | + For i = 0 To match.Count - 1 |
|
330 | + cell.Characters(Start:=match(i).FirstIndex + 1, Length:=match(i).Length).Font.color = selectedColor |
|
331 | + Next |
|
332 | + End If |
|
333 | + Next cell |
|
334 | +End Sub |
|
335 | +``` |
|
336 | + - HighlightRegEx.cls |
|
337 | +```vbscript |
|
338 | +VERSION 1.0 CLASS |
|
339 | +BEGIN |
|
340 | + MultiUse = -1 'True |
|
341 | +END |
|
342 | +Attribute VB_Name = "ThisWorkbook" |
|
343 | +Attribute VB_GlobalNameSpace = False |
|
344 | +Attribute VB_Creatable = False |
|
345 | +Attribute VB_PredeclaredId = True |
|
346 | +Attribute VB_Exposed = True |
|
347 | + |
|
348 | +Private Const g_cnsMenuName = "Highlight RegEx" |
|
349 | + |
|
350 | +Private IsOffice15 As Boolean |
|
351 | + |
|
352 | +Private Sub Workbook_AddinInstall() |
|
353 | + On Error Resume Next |
|
354 | + Call Workbook_AddinUninstall |
|
355 | + Call AddToolBar |
|
356 | + If Application.Version >= 15 Then |
|
357 | + IsOffice15 = True |
|
358 | + End If |
|
359 | +End Sub |
|
360 | + |
|
361 | +Private Sub Workbook_Open() |
|
362 | + If IsOffice15 = True Then |
|
363 | + Call AddToolBar |
|
364 | + End If |
|
365 | +End Sub |
|
366 | + |
|
367 | +Private Sub AddToolBar() |
|
368 | + Set Menu = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup) |
|
369 | + Menu.Caption = g_cnsMenuName |
|
370 | + Set SubMenu1 = Menu.Controls.Add |
|
371 | + SubMenu1.Caption = "Highlight parts matching with RegEx pattern in selection" |
|
372 | + SubMenu1.OnAction = "HighlightRegEx" |
|
373 | +End Sub |
|
374 | + |
|
375 | +Private Sub Workbook_AddinUninstall() |
|
376 | + On Error Resume Next |
|
377 | + Application.CommandBars("Worksheet Menu Bar").Controls(g_cnsMenuName).Delete |
|
378 | +End Sub |
|
379 | +``` |
|
380 | + |
|
381 | +## リンク |
|
382 | +- [Office TANAKA](http://officetanaka.net/) / [Excel VBA Tips](http://officetanaka.net/excel/vba/tips/) |
|
383 | + - [選択範囲の操作](http://officetanaka.net/excel/vba/tips/tips111b.htm) |
|
384 | + - [正規表現によるマッチング](http://officetanaka.net/excel/vba/tips/tips38.htm) |
|
385 | + - [文字の一部だけ色を変える](http://officetanaka.net/excel/vba/tips/tips11.htm) |
|
386 | + |
|
387 | +- [Excel 2013のアドイン設定について - マイクロソフト コミュニティ](http://answers.microsoft.com/ja-jp/office/forum/office_2013_release-excel/excel/c90a9b9b-6fe9-4406-bbb6-1fa7f7618617) |
|
388 | + - Excel 2013 にて、追加したアドインが Excel 再起動後に消えていることへの対処方法。 |
|
389 | + |
|
390 | +# 指定範囲を文字列として連結する関数 |
|
391 | +- [JoinRangeText](https://github.com/TakeAsh/ExcelAddins/tree/master/JoinRangeText) |
|
392 | + |
|
393 | +## リンク |
|
394 | +- [セル範囲を指定して文字列を結合・連結するユーザー定義関数:エクセルマクロ・Excel VBAの使い方-ユーザー定義関数](http://www.relief.jp/docs/001342.html) |
|
395 | + |
|
396 | +- [Join 関数](https://msdn.microsoft.com/ja-jp/library/cc410253.aspx) |
|
397 | +- [Join Function](https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/join-function) |
|
398 | + |
|
399 | +- [Application.MacroOptions メソッド (Excel)](https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/application-macrooptions-method-excel) |
|
400 | + |
|
401 | +# Excel VBA でプラットフォーム情報の取得 |
|
402 | +```vbscript |
|
403 | + Sub showPlatform() |
|
404 | + Dim myOS As String |
|
405 | + Dim myVer As String |
|
406 | + myOS = Application.OperatingSystem |
|
407 | + myVer = Application.Version |
|
408 | + MsgBox "OS: " & myOS & vbNewLine & "Excel Version: " & myVer, vbOKOnly |
|
409 | + End Sub |
|
410 | +``` |
|
411 | + |
|
412 | +# Excel VBA で XML の読み取り |
|
413 | +## 準備 |
|
414 | +- Visual Basic Editor の「メニュー - ツール - 参照設定」で「Microsoft XML」にチェックを入れる。<br /> |
|
415 | +![LibRefXML.png](LibRefXML.png) |
|
416 | + |
|
417 | +## ソース |
|
418 | +- [LoadXML.zip](LoadXML.zip) |
|
419 | +```vbscript |
|
420 | + Attribute VB_Name = "Module1" |
|
421 | + ' 初心者のための XML DOM ガイド |
|
422 | + ' http://msdn.microsoft.com/ja-jp/library/aa468547.asp |
|
423 | + |
|
424 | + Function LoadXML(Xml As String) As String |
|
425 | + Dim xDoc As MSXML2.DOMDocument |
|
426 | + Set xDoc = New MSXML2.DOMDocument |
|
427 | + xDoc.validateOnParse = False |
|
428 | + If xDoc.LoadXML(Xml) Then |
|
429 | + ' ドキュメントの読み込みに成功しました。 |
|
430 | + ' 目的の作業を行います。 |
|
431 | + LoadXML = ReadNode(xDoc.childNodes, 0) |
|
432 | + If Right(LoadXML, Len(vbCrLf)) = vbCrLf Then |
|
433 | + LoadXML = Left(LoadXML, Len(LoadXML) - Len(vbCrLf)) |
|
434 | + End If |
|
435 | + Else |
|
436 | + ' ドキュメントに読み込みに失敗しました。 |
|
437 | + Dim xPE As MSXML2.IXMLDOMParseError |
|
438 | + Set xPE = xDoc.parseError |
|
439 | + With xPE |
|
440 | + LoadXML = "エラー # : " & .errorCode & ": " & xPE.reason & _ |
|
441 | + "行 #: " & .Line & vbCrLf & _ |
|
442 | + "行位置 : " & .linepos & vbCrLf |
|
443 | + End With |
|
444 | + Set xPE = Nothing |
|
445 | + End If |
|
446 | + Set xDoc = Nothing |
|
447 | + End Function |
|
448 | + |
|
449 | + Function ReadNode(ByRef Nodes As MSXML2.IXMLDOMNodeList, ByVal Indent As Integer) As String |
|
450 | + ReadNode = "" |
|
451 | + Dim xNode As MSXML2.IXMLDOMNode |
|
452 | + |
|
453 | + For Each xNode In Nodes |
|
454 | + If xNode.nodeType = NODE_TEXT Then |
|
455 | + ReadNode = ReadNode & Space$(Indent) & xNode.parentNode.nodeName & ": " & xNode.nodeValue & vbCrLf |
|
456 | + 'ReadNode = ReadNode & xNode.parentNode.nodeName & ":" & xNode.nodeValue & vbCrLf |
|
457 | + End If |
|
458 | + |
|
459 | + If xNode.hasChildNodes Then |
|
460 | + ReadNode = ReadNode & ReadNode(xNode.childNodes, Indent + 2) |
|
461 | + End If |
|
462 | + Next xNode |
|
463 | + End Function |
|
464 | +``` |
|
465 | + |
|
466 | +## リンク |
|
467 | +- [初心者のための XML DOM ガイド](http://msdn.microsoft.com/ja-jp/library/aa468547.aspx) |
|
468 | +- [XML DOM Methods](http://msdn.microsoft.com/en-us/library/ms757828.aspx) |
|
469 | +- [VBA XMLデータをDOMで扱う方法 - SMILEJAPAN プログラミングメモ](http://smilejapan.net/wiki/index.php?VBA%20XML%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92DOM%E3%81%A7%E6%89%B1%E3%81%86%E6%96%B9%E6%B3%95) |
|
470 | +- [DOMを使って目的の情報へダッシュ](http://www.atmarkit.co.jp/fxml/rensai/msxml02/msxml01.html) |
|
471 | + |
|
472 | +# Access ファイル中のテーブルを列挙する |
|
473 | +## 概要 |
|
474 | +- Access ファイル(.mdb/.accdb)中のテーブル一覧を出力する。 |
|
475 | +- ファイル名に加えてテーブル名も指定したときは、そのテーブルのカラム情報を出力する。 |
|
476 | + |
|
477 | +## ソース |
|
478 | +- [showTables.zip](showTables.zip) |
|
479 | +```vbscript |
|
480 | +' Access ファイル中のテーブルを列挙する。 |
|
481 | +' http://hardsoft.at.webry.info/200908/article_6.html |
|
482 | +' http://msdn.microsoft.com/en-us/library/windows/desktop/ms681520.aspx |
|
483 | +' http://msdn.microsoft.com/en-us/library/windows/desktop/ms678060.aspx |
|
484 | +' http://msdn.microsoft.com/en-us/library/windows/desktop/ms675318.aspx |
|
485 | + |
|
486 | +Option Explicit |
|
487 | +Dim arg : Set arg = WScript.Arguments |
|
488 | +If arg.Count = 0 Then |
|
489 | + WScript.Echo "引数に mdb または accdb ファイル を指定してください" |
|
490 | + WScript.Quit |
|
491 | +End If |
|
492 | + |
|
493 | +Dim cn, cat, mdbfile |
|
494 | +mdbfile = arg(0) |
|
495 | +Set cn = CreateObject("ADODB.Connection") |
|
496 | +With cn |
|
497 | + mdbfile = trim(mdbfile) |
|
498 | + If right(mdbfile,4) = ".mdb" Then |
|
499 | + .Provider = "Microsoft.Jet.OLEDB.4.0" |
|
500 | + ElseIf right(mdbfile,6) = ".accdb" Then |
|
501 | + .Provider = "Microsoft.ACE.OLEDB.12.0" |
|
502 | + End If |
|
503 | + .Properties("Data Source") = mdbfile |
|
504 | +End With |
|
505 | +cn.Open |
|
506 | + |
|
507 | +Set cat = CreateObject("ADOX.Catalog") |
|
508 | +cat.ActiveConnection = cn |
|
509 | + |
|
510 | +Dim table, tablename, column, datatype, sTypename |
|
511 | +Select Case (arg.Count) |
|
512 | +Case 1 |
|
513 | + 'WScript.Echo "Name" & vbTab & "Type" |
|
514 | + For Each table In cat.Tables |
|
515 | + If table.Type = "TABLE" Then |
|
516 | + 'WScript.Echo table.Name & vbTab & table.Type |
|
517 | + WScript.Echo table.Name |
|
518 | + End If |
|
519 | + Next |
|
520 | +Case 2 |
|
521 | + Set datatype = CreateObject("Scripting.Dictionary") |
|
522 | + datatype.add 2, "SmallInt" |
|
523 | + datatype.add 3, "Integer" |
|
524 | + datatype.add 5, "Double" |
|
525 | + datatype.add 6, "Currency" |
|
526 | + datatype.add 7, "DateTime" |
|
527 | + datatype.add 11, "Boolean" |
|
528 | + datatype.add 12, "Variant" |
|
529 | + datatype.add 14, "Decimal" |
|
530 | + datatype.add 200, "VarChar" |
|
531 | + datatype.add 201, "LongVarChar" |
|
532 | + datatype.add 202, "VarWChar" |
|
533 | + datatype.add 203, "LongVarWChar" |
|
534 | + |
|
535 | + tablename = arg(1) |
|
536 | + WScript.Echo "Name" & vbTab & "Type" & vbTab & "Size" |
|
537 | + Set table = cat.Tables(tablename) |
|
538 | + For Each column In table.Columns |
|
539 | + sTypename = column.Type |
|
540 | + If datatype.Exists(sTypename) Then sTypename = datatype(sTypename) |
|
541 | + WScript.Echo column.Name & vbTab & sTypename & vbTab & column.DefinedSize |
|
542 | + Next |
|
543 | +End Select |
|
544 | + |
|
545 | +cn.Close |
|
546 | + |
|
547 | +' EOF |
|
548 | +``` |
|
549 | + |
|
550 | +## リンク |
|
551 | +- [コマンドラインからMDB/ACCDBファイルのテーブル一覧とカラム名一覧を表示する ハードなソフトの話/ウェブリブログ](http://hardsoft.at.webry.info/200908/article_6.html) |
|
552 | + |
|
553 | +- [ADOX API Reference](http://msdn.microsoft.com/en-us/library/windows/desktop/ms681520.aspx) |
|
554 | + - [Catalog Object (ADOX)](http://msdn.microsoft.com/en-us/library/windows/desktop/ms678060.aspx) |
|
555 | + - [Table Object (ADOX)](http://msdn.microsoft.com/en-us/library/windows/desktop/ms677529.aspx) |
|
556 | + - [Column Object (ADOX)](http://msdn.microsoft.com/en-us/library/windows/desktop/ms676554.aspx) |
|
557 | + - [DataTypeEnum](http://msdn.microsoft.com/en-us/library/windows/desktop/ms675318.aspx) |
|
558 | + |
|
559 | +- [MS Access形式の MDBファイル に対してODBC経由でアクセスするときに,テーブル一覧を取得したいのですが,どのようなSQL文を書いたらいいでしょうか? - 人力検索はてな](http://q.hatena.ne.jp/1177202738)<br /> |
|
560 | +ODBCでは読み取りに権限設定の変更が必要。 |
|
561 | + |
|
562 | +# データベース |
|
563 | +[[VBScript/Database]]を参照。 |
|
564 | + |
|
565 | +# Base64 エンコード/デコード |
|
566 | +[BASE64のサンプルコード](http://www.asahi-net.or.jp/~ai2h-ykmz/tech/base64vb.htm) |
|
... | ... | \ No newline at end of file |
Windows/Thunderbird.md
... | ... | @@ -0,0 +1,59 @@ |
1 | +[[_TOC_]] |
|
2 | + |
|
3 | +# リンク |
|
4 | +- [Thunderbird - Mozilla](https://www.mozilla.org/ja/thunderbird/) |
|
5 | + |
|
6 | +# オプション |
|
7 | +- 表示 - タグ<br /> |
|
8 | +未分類, ML, ... を追加。 |
|
9 | + |
|
10 | +- 表示 - 詳細 - 既読<br /> |
|
11 | +「メッセージを自動的に既読にする」のチェックを外す。 |
|
12 | + |
|
13 | +- セキュリティ - パスワード<br /> |
|
14 | +「マスターパスワードを使用する」にチェックを入れる。 |
|
15 | + |
|
16 | +- 詳細 - 一般 - 高度な設定<br /> |
|
17 | +~~新しいアカウントのメッセージ格納形式: メッセージ単位 (maildir形式)~~ |
|
18 | + - [検索フォルダが保存されません - MozillaZine.jp フォーラム • トピック](https://forums.mozillazine.jp/viewtopic.php?f=3&t=16058) |
|
19 | + - Maildir だと検索フォルダ機能が正常に動作しない。 |
|
20 | + |
|
21 | +- 詳細 - ネットワークとディスク領域 - ディスク領域<br /> |
|
22 | +ディスク領域を合計「1」MB以上節約できるときはフォルダを最適化する。 |
|
23 | + |
|
24 | +- カレンダー - 一般 - 一般設定<br /> |
|
25 | +日付の形式: 短い形式 2016/12/20 |
|
26 | + |
|
27 | +# メッセージフィルタ |
|
28 | +- POPFile での振り分けに従ってタグ付けする。 |
|
29 | + |
|
30 | +- X-Text-Classification に次を含む |
|
31 | +| フィルタ名 | X-Text-Classification | 動作 | |
|
32 | +| --- | --- | --- | |
|
33 | +| POPFileYes | spam | 迷惑メールかどうか設定する / 迷惑メール<br />メッセージを移動する / 迷惑メール | |
|
34 | +| 個人用 | personal | メッセージにタグを付ける / プライベート | |
|
35 | +| 仕事 | work | メッセージにタグを付ける / 仕事 | |
|
36 | +| 未分類 | unclassified | メッセージにタグを付ける / 未分類 | |
|
37 | +| ML | ml | メッセージにタグを付ける / ML | |
|
38 | + |
|
39 | +# 検索フォルダ |
|
40 | +- メニュー - 新規作成 - 検索フォルダ |
|
41 | + |
|
42 | +- _未読 |
|
43 | + - 状態 | が次と異なる | 既読 |
|
44 | + |
|
45 | +- タグ | に次を含む |
|
46 | + - 個人用 - プライベート |
|
47 | + - 仕事 - 仕事 |
|
48 | + - 未分類 - 未分類 |
|
49 | + - ML - ML |
|
50 | + |
|
51 | +# アカウント設定 - 迷惑メール |
|
52 | +- このアカウントで迷惑メールの学習を有効にする: チェックしない |
|
53 | +- 次の迷惑メールヘッダを信用する: チェックする : POPFile |
|
54 | +- 迷惑メールと判断された受信メールを次のフォルダに移動する: チェックする |
|
55 | + - 次のアカウントの"迷惑メール"フォルダ: ローカルアカウント |
|
56 | + |
|
57 | +# アドオン |
|
58 | +- [Search for Sender](https://addons.mozilla.org/ja/thunderbird/addon/search-for-sender/)<br /> |
|
59 | +選択したメールの差出人または件名でフィルタする。 |
|
... | ... | \ No newline at end of file |
Windows/_Sidebar.md
... | ... | @@ -6,5 +6,6 @@ |
6 | 6 | - [[POPFile]]
|
7 | 7 | - [[PowerShell]]
|
8 | 8 | - [[RemoteAccess]]
|
9 | +- [[Thunderbird]]
|
|
9 | 10 | - [[VSCode]]
|
10 | 11 | - [[Windows10]]
|
_Sidebar.md
... | ... | @@ -4,6 +4,11 @@ |
4 | 4 | - [[JavaScript|/JavaScript/Home]]
|
5 | 5 | - [[Windows|/Windows/Home]]
|
6 | 6 | - [[Linux|/Linux/Home]]
|
7 | + - [[Doxygen]]
|
|
8 | + - [[Git]]
|
|
9 | + - [[MySQL]]
|
|
10 | + - [[MSSQLSrv]]
|
|
11 | + - [[VBScript]]
|
|
7 | 12 | - [[Game|/Game/Home]]
|
8 | 13 | - [[Virtual-On|/Game/VirtualOn/Home]]
|
9 | 14 | - [[PSOBB|/Game/PSOBB/Home]]
|