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 />&nbsp; cd /d "$(SolutionDir)"<br />&nbsp; 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
+- パスの区切りは「&#x5c;」ではなく「/」を使用する。
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
+&#x68;ttps://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 &lt;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]]