sudo vim /etc/php.ini
error_log = syslog
というのも送信されるログのファシリティは user なので、例えば CentOS 6 だと /var/log/messages に出力されます。
他のログと混ざるので都合が悪いです。
じゃあ、ということで user.* を全部受けると、例えば yum でのインストールログも出力されるのでこれまた都合が悪いです。
で、本題ですがファシリティが user かつタグ (プログラム名) が httpd (mod_php) または php (cli) の場合だけ専用のログに出力するようにします。
一見めんどくさそうですが、CentOS 6 デフォルトの rsyslog だと、比較的簡単に設定できます。
sudo vim /etc/rsyslog.d/php.conf
$Umask 0000
$RepeatedMsgReduction off
$FileCreateMode 0644
$template php_log,"/var/log/php.log"
if ($syslogfacility-text == 'user') and \
(($programname == 'httpd') or ($programname == 'php')) then \
-?php_log
sudo /etc/init.d/rsyslog restart
で、syslog 経由なので、ログローテートも /etc/logrotate.d/syslog に /var/log/php.log を書いておけば OK です。
]]>
Eclipse 3.7 (Indigo) をダウンロード。パッケージは好みだけど、Eclipse Classic をダウンロードしてる。
なお、4.2 (Juno) ではなく、3.7 (Indigo) を使う理由は単に Indigo のほうがもっさりしていないから。
ダウンロードしたファイルを展開して、/Application にコピー。
プロジェクト毎に、Eclipse を使い分けるようにしているので、/Application/eclipse/eclipse-3.7.2_<プロジェクト名> のようにしている。
Eclipse の [Help]-[Install New Software...] から普通にインストール。
Scala 2.9.x を使う場合は、下記を指定。
Scala 2.10.x を使う場合は、下記を指定。
インストールするパッケージは、下記だけ。
・Scala IDE for Eclipse
・ScalaTest for Scala IDE
- refs.: Scala IDE for Eclipse
http://scala-ide.org/
- refs.: Download the 3.0 Release of the Scala IDE for Eclipse - Scala IDE for Eclipse
http://scala-ide.org/download/current.html
Eclipse Marketplace は、プラグインの検索とインストールができるサイト。そのクライアントをインストールする。
Eclipse の [Help]-[Install New Software...] から
を選択して、「Marketplace Client」で検索しインストールする。
- refs.: Introducing the Eclipse Marketplace Client | Eclipse Plugins, Bundles and Products - Eclipse Marketplace
http://marketplace.eclipse.org/marketplace-client-intro?mpc_install=1012
ちなみに、git を使う場合は、EGit とか使わないで、コマンドラインか SourceTree を使ってる。
Eclipse の [Help]-[Eclipse Marketplace...] で、「Subversive」を検索しインストール。
本体と、Localization だけ選択。
インストール後、再起動するとコネクタのインストール画面が出るので、使用する Subversion のバージョンに合わせた SVN Kit をインストールする。
インクリメンタルサーチの Glance プラグインをインストールする。
これは、Marketplace からインストールする。
- refs.: Glance - Eclipse plug-in providing extensible useful incremental text search in Eclipse
http://ystrot.github.com/glance/
- refs.: Eclipseを改善するインクリメンタルサーチプラグイン「Glance」がオススメ!
http://did2memo.net/2012/11/06/eclipse-iterative-search-plugin-glance/
ER図が書けるプラグインの ER Master をインストールする。
Eclipse の [Help]-[Install New Software...] から普通にインストール。
Update Site には、下記を指定する。
- refs.: ER Master
http://ermaster.sourceforge.net/index_ja.html
properties ファイルを自動で native2ascii してくれるプロパティー・エディターをインストール。
これも、Marketplace からインストールできる。
Marketplace Client で properties で検索し「プロパティー・エディター」をインストールする。
不要であればこれは省略。OSX の場合はちょっと面倒。
まず、http://mergedoc.sourceforge.jp/ から、Pleiades プラグインをダウンロードする。
ここでは、1.4.x をダウンロードする。
ダウンロードしたファイルを展開してできた、pleiades ディレクトリを Eclipse をインストールしたディレクトリの dropins にコピーする。
つまり、dropins/pleiades になるようにする。
次に、eclipse.ini (/Applications/eclipse/eclipse-xxxxx/Eclipse.app/Contents/MacOS/eclipse.ini) の最終行に下記を追加。
-javaagent:../../../dropins/pleiades/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
最後に、Eclipse を -clean オプション付きで起動する。
$ /Applications/eclipse/eclipse-xxxxx/eclipse -clean
なお、Pleiades で日本語化した場合は、プラグインをインストールするたびに、-clean オプションで起動したほうがいい。
なので、いろいろプラグインをインストールした最後に日本語化したほうがいいような気がします。
]]>
var commify = function(s) {
return s.toString()
.split('').reverse().join('')
.replace(/(\d\d\d)(?=\d)(?!\d*\.)/g, '$1,')
.split('').reverse().join('');
};
$ wget https://www.dropbox.com/download?dl=packages/dropbox.py
$ dropbox.py start --install
Starting Dropbox...
Dropbox is the easiest way to share and store your files online. Want to learn more? Head to http://www.dropbox.com/
In order to use Dropbox, you must download the proprietary daemon. [y/n] y
Downloading Dropbox... 100%
Unpacking Dropbox... 100%
Dropbox isn't running!
$ dropbox.py start
To link this computer to a dropbox account, visit the following url:
https://www.dropbox.com/cli_link?host_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&cl ...
表示されたリンクへアクセスして、Dropbox アカウントにリンクします。
$ dropbox.py stop
Dropbox daemon stopped.
$ dropbox.py start
Starting Dropbox...Done!
わずかこれだけです。sync すれば、普通に $HOME/Dropbox が使えるようになります。
なお、デフォルトでは run sync が有効になっていて、 17500/udp でのブロードキャストが行われてうるさいので、
無効にする方がいいでしょう。無効にしたあとは、Dropbox の再起動をお忘れなく。
$ dropbox.py lansync n
]]>
$ openssl genrsa -out server.key 2048
Generating RSA private key, 2048 bit long modulus
.....+++
..............+++
e is 65537 (0x10001)
$ openssl req -new -key server.key -out server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:GB
State or Province Name (full name) [Berkshire]:Berkshire
Locality Name (eg, city) [Newbury]:Newbury
Organization Name (eg, company) [My Company Ltd]:My Company Ltd
Organizational Unit Name (eg, section) []:section
Common Name (eg, your name or your server's hostname) []:*.example.com
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
$ openssl x509 -days 3653 -in server.csr -out server.crt -req -signkey server.key
Signature ok
subject=/C=GB/ST=Berkshire/L=Newbury/O=My Company Ltd/OU=section/CN=*.example.com
Getting Private key
この証明書を使って、特に問題なく、名前ベースのバーチャルホストができた。
]]>
$ sudo yum install --enablerepo=epel dkim-milter
$ dkim-genkey -r -d pocari.org
$ sudo mkdir /etc/mail/dkim-milter/keys/pocari.org
$ sudo mv default.private /etc/mail/dkim-milter/keys/pocari.org/default
$ sudo mv default.txt /etc/mail/dkim-milter/keys/pocari.org
$ sudo chown -R dkim-milter:dkim-milter /etc/mail/dkim-milter/keys/pocari.org
/etc/mail/dkim-milter/keys/pocari.org/default.txt を zone ファイルに登録。
$ dig default._domainkey.pocari.org TXT
; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_5.3 <<>> default._domainkey.pocari.org TXT
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18053
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;default._domainkey.pocari.org. IN TXT
;; ANSWER SECTION:
default._domainkey.pocari.org. 300 IN TXT "v=DKIM1\; g=*\; k=rsa\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDUWmQHRIpLQ3OO6RUt7QSguR4tuWZzm6mBRB3e1Q+irkdZ5MgARUx27dU31oHVVcyUZquYztnuunnRpOim/VE0YwpJmNSfwxA4lTyQsP6cG9a+qujew6ddljixy+fBGLKyZBT4sKEPoCNFHSlvwLUHrfgiSIHDfdDoBHNgMYl8AQIDAQAB"
;; Query time: 12 msec
;; SERVER: 210.224.163.4#53(210.224.163.4)
;; WHEN: Wed Oct 26 12:42:11 2011
;; MSG SIZE rcvd: 299
$ diff -u /etc/mail/dkim-milter/dkim-filter.conf.org /etc/mail/dkim-milter/dkim-filter.conf
$ sudo vim /etc/mail/dkim-milter/keys/keylist
- refs.: HOWTO Setup dkim-milter with postfix under CentOS 5
http://wiki.cementhorizon.com/display/CH/HOWTO+Setup+dkim-milter+with+post ...
]]>
$ /usr/sbin/munin-run nginx_status
ERROR: Could not execute plugin (plugin doesn't exist?).
あれ?実行されません。パーミッションを見てみると、 0644 (rw-r--r--) で実行権限がありません。
これが原因かと思い、sudo chmod 0755 /usr/share/munin/plugins/nginx_status したあとに、再度 nginx_status を。
$ /usr/sbin/munin-run nginx_status
total.value 2
reading.value 0
wr:uuuuuuuiting.value 1
waiting.value 1
なるほど。これでいけるのか。その後、munin-node を再起動 (sudo /etc/init.d/munin-node restart) して無事、レポートに表示されるようになりました。
要は、
1. プラグインをインストールしたら、実行権限をつけること。
2. プラグインの動作確認は、munin-run で。
ってことでした。
- refs.: Debugging Munin plugins
http://munin-monitoring.org/wiki/Debugging_Munin_plugins
]]>
$ svn diff -x --ignore-eol-style
]]>
--- mod_rpaf-2.0.c.orig 2008-01-01 12:05:40.000000000 +0900
+++ mod_rpaf-2.0.c 2011-08-04 12:02:13.000000000 +0900
@@ -139,7 +139,7 @@
int i;
char **list = (char**)proxy_ips->elts;
for (i = 0; i < proxy_ips->nelts; i++) {
- if (strcmp(remote_ip, list[i]) == 0)
+ if (strncmp(remote_ip, list[i], strlen(list[i])) == 0)
return 1;
}
return 0;
これで、下記のように書けます。
RPAFenable On
RPAFsethostname Off
RPAFproxy_ips 192.0.2.
- refs: mod_rpaf for Apache
http://stderr.net/apache/rpaf/
]]>
名前:~="~"
を入力。同様に、「$」を含むものを検索する場合は、
名前:~="$"
で検索。
]]>
$config = array(
'siteUrl' => 'http://example.com/oauth',
'consumerKey' => 'xxxxx',
'consumerSecret' => 'xxxxx',
'callbackUrl' => 'http://example.com/callback',
'authorizeUrl' => 'https://example.com/oauth/authorize',
);
$client = new Zend_Http_Client(null, array(
'adapter' => 'Zend_Http_Client_Adapter_Proxy',
'proxy_host' => 'proxyサーバのホスト名',
'proxy_port' => proxyサーバのポート番号,
));
$consumer = new Zend_Oauth_Consumer($config);
$consumer->setHttpClient($client);
]]>
$client = new Zend_Http_Client(null, array(
'adapter' => 'Zend_Http_Client_Adapter_Proxy',
'proxy_host' => 'proxyサーバのホスト名',
'proxy_port' => proxyサーバのポート番号,
));
$twitter = new Zend_Service_Twitter(array(
'accessToken' => $access_token, // Zend_Oauth_Token_Access
));
$twitter->setLocalHttpClient($client);
]]>
$ openssl rsa -in server.key -text
- CSRの内容を確認
$ openssl req -in server.csr -text
- 証明書の内容を確認
$ openssl x509 -in server.cer -text
- CRLの内容を確認
$ openssl crl -in server.crl -text
]]>
下記サイトより、pgdg-centos-8.4-x.noarch をダウンロードし、yum による管理を行う。
- pgdg-centos - PostgreSQL 9.0.X PGDG RPMs for CentOS - Yum Repository Configuration
http://yum.pgsqlrpms.org/reporpms/repoview/pgdg-centos.html
$ sudo rpm -ivh pgdg-centos-8.4-x.noarch.rpm
$ sudo yum check-update
$ sudo yum install postgresql-server
$ sudo service postgresql initdb -E UTF8 --no-locale
$ sudo chkconfig postgresql on
$ sudo service postgresql start
username というユーザを追加する場合
$ sudo -u postgres createuser -P username
Enter password for new role: <パスワード>
Enter it again: <パスワード>
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
dbname という DB を、username オーナーで作る場合。
$ sudo -u postgres createdb -E UTF-8 -O username dbname
$ sudo vi /var/lib/pgsql/data/postgresql.conf
他のサーバ全てからの接続を許可する場合
listen_addresses = '*'
いくつかのサーバを指定する場合(「,」でつなぐ)
listen_addresses = 'localhost,192.0.2.1'
$ sudo vi /var/lib/pgsql/data/pg_hba.conf
下記を追加し、パスワード認証で接続を許可する。
host all all 192.0.2.1/32 md5
]]>
$ cd /usr/share/zsh/site-functions
$ sudo wget -c http://gvn.googlecode.com/svn/trunk/contrib/zsh/_subversion
- ref.: Re: Subversion 1.5 and ZSH Completion
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=1065&dsMessageId= ...
]]>
[trac]
default_charset = japanese.ms932
- ref.: JapaneseCodecs
http://www.python.jp/Zope/download/JapaneseCodecs
]]>
:bufdo :%s/foo/bar/g | :w
]]>
export QUERY_STRING="start_debug=1&debug_host=192.168.1.2&debug_port=10137&debug_stop=1&no_remote=1&debug_session_id=12345"
をサーバに設定して、CLI プログラムを動かす
debug_host: Zend Studio が動いている機械のホスト名/IPアドレス
debug_port: Zend Studio のポート番号
debug_session_id: 任意
]]>
SELECT
T.TABLESPACE_NAME "表領域",
ROUND(T.BYTES / (1024 * 1024), 0) "割当済(MB)",
ROUND((T.BYTES - SUM(F.BYTES)) / (1024 * 1024), 0) "使用量(MB)",
ROUND(SUM(F.BYTES) / (1024 * 1024), 0) "空容量(MB)",
ROUND((1 - SUM(F.BYTES) / T.BYTES) * 100, 2) "使用率(%)"
FROM
SYS.DBA_FREE_SPACE F,
(SELECT
TABLESPACE_NAME,
SUM(BYTES) BYTES
FROM
SYS.DBA_DATA_FILES
GROUP BY
TABLESPACE_NAME
) T
WHERE
T.TABLESPACE_NAME = F.TABLESPACE_NAME(+)
GROUP BY
T.TABLESPACE_NAME,
T.BYTES
/
表領域 割当済(MB) 使用量(MB) 空容量(MB) 使用率(%)
------------------------------ ---------- ---------- ---------- ----------
SYSAUX 560 544 16 97.11
USERS 2640 1151 1489 43.59
SYSTEM 400 361 39 90.17
UNDO 500 10 491 1.9
- ref.: Oracle Technology Network (OTN) Japan - 掲示板 : 表領域の使用率確認 ...
http://otn.oracle.co.jp/forum/message.jspa?messageID=8087948
]]>
SELECT
DT.TABLESPACE_NAME "表領域",
ROUND(DT.BYTES / (1024 * 1024), 0) "割当済(MB)",
ROUND(T.BYTES_CACHED / (1024 * 1024), 0) "空容量(MB)",
ROUND(T.BYTES_CACHED / DT.BYTES * 100, 2) "使用率(%)"
FROM
SYS.DBA_TEMP_FILES DT,
V$TEMP_EXTENT_POOL T,
V$TEMPFILE V
WHERE
T.FILE_ID(+)= DT.FILE_ID AND
DT.FILE_ID = V.FILE#
/
表領域 割当済(MB) 空容量(MB) 使用率(%)
------------------------------ ---------- ---------- ----------
TEMP 528 527 99.81
]]>
// 保存するファイル
$fp = fopen('/tmp/curl.log', 'a');
// 詳細な情報を出力する
curl_setopt($ch, CURLOPT_VERBOSE, true);
// STDERR の代わりにエラーを出力するファイルポインタ
curl_setopt($ch, CURLOPT_STDERR, $fp);
例として、Google へのアクセスを見てみます。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.google.com/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 保存するファイル
$fp = fopen('/tmp/curl.log', 'a');
// 詳細な情報を出力する
curl_setopt($ch, CURLOPT_VERBOSE, true);
// STDERR の代わりにエラーを出力するファイルポインタ
curl_setopt($ch, CURLOPT_STDERR, $fp);
$ret = curl_exec($ch);
fclose($fp);
curl_close($ch);
これを実行すると、/tmp/curl.log には以下のように出力されます。
* About to connect() to www.google.com port 80 (#0)
* Trying 66.249.89.147... * connected
* Connected to www.google.com (66.249.89.147) port 80 (#0)
> GET / HTTP/1.1
Host: www.google.com
Accept: */*
< HTTP/1.1 302 Found
< Location: http://www.google.co.jp/
< Cache-Control: private
< Content-Type: text/html; charset=UTF-8
< Set-Cookie: PREF=ID=c09b07d3b330fa72:TM=1234774504:LM=1234774504:S=Omlx1u3jcFB3egKo; expires=Wed, 16-Feb-2011 08:55:04 GMT; path=/; domain=.google.com
< Date: Mon, 16 Feb 2009 08:55:04 GMT
< Server: gws
< Content-Length: 221
* Connection #0 to host www.google.com left intact
]]>
SELECT * FROM foo WHERE bar LIKE '%baz\%' ESCAPE '\';
SELECT * FROM foo WHERE bar LIKE '%baz\_' ESCAPE '\';
ESCAPE でエスケープ文字に指定する必要がある (この場合は \ を指定)。
Oracle では、デフォルトのエスケープ文字は決まっていないらしい。
MySQL の場合は、デフォルトのエスケープ文字は、\ になっている。
ただし、MySQL も ESCAPE 節を使えるため、スケープ文字にすることも可能 (この場合は | を指定)。
SELECT * FROM foo WHERE bar LIKE '%baz|%' ESCAPE '|';
- ref.: 忘れっぽいエンジニアのオラクルSQLリファレンス
http://oracle.se-free.com/dml/01_like.html
- ref.: MySQL :: MySQL 5.1 リファレンスマニュアル :: 11.3.1 文字列比較関数
http://dev.mysql.com/doc/refman/5.1/ja/string-comparison-functions.html
]]>
[trac]
default_handler = BrowserModule
指定できる値と、表示されるページは以下になります。
指定できる値 | 表示されるページ |
WikiModule | Wiki |
TimelineModule | Timeline |
RoadmapModule | Roadmap |
BrowserModule | Browse Source |
QueryModule | View Tickets (Custom Query) |
ReportModule | View Tickets (Available Reports) |
NewticketModule | New Ticket |
- ref.: TracIni - The Trac Project
http://trac.edgewall.org/wiki/TracIni
]]>
$ sudo debugfs -w /dev/mapper/VolGroup00-LogVol00
debugfs 1.35 (28-Feb-2004)
debugfs: cd /mnt/a/tmp
debugfs: stat test.txt
Inode: 4788224 Type: regular Mode: 0000 Flags: 0x0 Generation: 3112533598
User: 48 Group: 48 Size: 7382
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 16
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x49643779 -- Wed Jan 7 14:02:49 2009 <- この ctime を変えてみる
atime: 0x49618ea8 -- Mon Jan 5 13:38:00 2009
mtime: 0x49618ea8 -- Mon Jan 5 13:38:00 2009
BLOCKS:
(0):9592998, (1):9593000
TOTAL: 2
debugfs: modify_inode test.txt
Mode [0100000]
User ID [48]
Group ID [48]
Size [7382]
Creation time [1231304569] 1231130280 <- 変更するには値を入力
Modification time [1231130280]
Access time [1231130280]
Deletion time [0]
Link count [1]
Block count [16]
File flags [0x0]
Generation [0xb9857e5e]
File acl [0]
High 32bits of size [0]
Fragment address [0]
Fragment number [0]
Fragment size [0]
Direct Block #0 [9592998]
Direct Block #1 [9593000]
Direct Block #2 [0]
Direct Block #3 [0]
Direct Block #4 [0]
Direct Block #5 [0]
Direct Block #6 [0]
Direct Block #7 [0]
Direct Block #8 [0]
Direct Block #9 [0]
Direct Block #10 [0]
Direct Block #11 [0]
Indirect Block [0]
Double Indirect Block [0]
Triple Indirect Block [0]
debugfs: stat test.txt
Inode: 4788224 Type: regular Mode: 0000 Flags: 0x0 Generation: 3112533598
User: 48 Group: 48 Size: 7382
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 16
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x49618ea8 -- Mon Jan 5 13:38:00 2009 <- この ctime が変わった
atime: 0x49618ea8 -- Mon Jan 5 13:38:00 2009
mtime: 0x49618ea8 -- Mon Jan 5 13:38:00 2009
BLOCKS:
(0):9592998, (1):9593000
TOTAL: 2
debugfs: quit
ここで、再度マウントすれば OK。
ただし、アンマウントできなかった場合は、ここでサーバを再起動すれば OK でした。
$ ls -lac
drwxrwxrwx 6 sunaoka sunaoka 4.0K Jan 7 14:34 .
drwxrwsr-x 3 sunaoka sunaoka 4.0K Jan 7 13:35 ..
-rw-r--r-- 1 sunaoka sunaoka 7.3K Jan 5 13:38 test.txt
]]>
%USERPROFILE%\Application Data\Thunderbird\Profiles\<プロファイル>\extensions\confirm-address@kenmaz.net\chrome\content\confirm-address.js
--- confirm-address.js.orig 2008-07-31 23:49:02.000000000 +0900
+++ confirm-address.js 2008-12-25 13:32:27.000000000 +0900
@@ -153,7 +153,7 @@
for(var j = 0; j < domainList.length; j++){
var domainListEntry = domainList[j].toLowerCase();
- if(addressLowerCase.indexOf(domainListEntry) != -1){
+ if(addressLowerCase.indexOf('@' + domainListEntry) != -1){
yourDomain = true;
break;
}
- Confirm-Address :: Thunderbird Add-ons
https://addons.mozilla.org/ja/thunderbird/addon/5582
]]>
$ mv 4_3_x_comp php-4.3.x
$ mv 4_4_x_comp php-4.4.x
$ mv 5_0_x_comp php-5.0.x
$ mv 5_1_x_comp php-5.1.x
$ mv 5_2_x_comp php-5.2.x
で、ディレクトリをリネームする。
/usr/local/Zend/Core/etc/php.ini を変更する
zend_extension_manager.debug_server=/usr/local/Zend/Platform/lib/Debugger-5.2.14
Apache を restart して、php -i または phpinfo() で Zend Debugger v5.2.14 になっていれば OK。
]]>
:source $HOME/.screenrc
ちなみに、:source ~/.screenrc だと NG でした ($HOME じゃないと駄目)。
]]>
$ svn merge -r 9:6 foo.c
U foo.c
ちなみに、以下のようにパスを指定して実行するとエラーが出ます。
$ svn merge -r 9:6 path/to/foo.c
svn: Cannot replace a directory from within (ディレクトリを内側から置換することはできません)
この場合は、svn merge する前に該当のディレクトリに移動する必要があります。
$ cd path/to
$ svn merge -r 9:6 foo.c
]]>
C:\> msiexec /i path\to.msi
]]>
C:\> CScript //Nologo putty.iniconv-1.0.0.vbs > putty.ini
'
' INI file converter for PuTTY
'
' Usage:
' C:\> CScript //Nologo putty.iniconv-1.0.0.vbs > putty.ini
'
' Copyright (c) 2008 Norifumi SUNAOKA
' <http://cl.pocari.org/2008-05-10-1.html>
'
' Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
'
'
' Version: 1.0.0
'
Const HKEY_CURRENT_USER = &H80000001
Const PUTTY_SESSIONS_KEY = "Software\SimonTatham\PuTTY\Sessions\"
Const PUTTY_HOSTKEYS_KEY = "Software\SimonTatham\PuTTY\SshHostKeys\"
Set StdOut = WScript.StdOut
Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\." & _
"\root\default:StdRegProv")
Set WS = WScript.CreateObject("Wscript.Shell")
' UseIniFile
StdOut.WriteLine "[Generic]" & vbCrLf & "UseIniFile=1" & vbCrLf
' Sessions
WMI.EnumKey HKEY_CURRENT_USER, PUTTY_SESSIONS_KEY, subkeys
For Each subkey In subkeys
StdOut.WriteLine "[Session:" & subkey & "]"
Call OutputValues(PUTTY_SESSIONS_KEY & subkey & "\")
Next
' SshHostKeys
StdOut.WriteLine "[SshHostKeys]"
Call OutputValues(PUTTY_HOSTKEYS_KEY)
Set WS = Nothing
Set WMI = Nothing
Set StdOut = Nothing
'
' OutputValues
'
Sub OutputValues(subkey)
Set RE = new RegExp
RE.pattern = "^\-?[0-9]+$"
WMI.EnumValues HKEY_CURRENT_USER, subkey, names, types
For i = 0 To UBound(names)
value = WS.RegRead("HKCU\" & subkey & names(i))
If Not RE.Test(value) then
value = """" & value & """"
End If
StdOut.WriteLine names(i) & "=" & value
Next
StdOut.WriteLine
Set RE = Nothing
End Sub
また、以下のサイトで、Perl 版が公開されているのですが、なぜだかうちの環境ではうまくいきませんでした。
- ゑBLOG: PuTTYごった煮版 レジストリ<->INIファイルコンバータ
http://yebisuya.dip.jp/yeblog/archives/a000456.html
]]>