<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Big Sky</title>
    <link>http://mattn.kaoriya.net/</link>
    <description>システム開発屋がひっそり語るぼやき</description>
    <language>ja</language>
    <generator>blosxom/2.1.2</generator>
    <atom:link rel="self" href="http://mattn.kaoriya.net/index.rss" type="application/rss+xml" />
    <atom:link rel="hub" href="http://pubsubhubbub.appspot.com/"/>
   <item>
     <title>興味のあるテキストエディタにVimと書いておいたら面接で爆笑された</title>
     <pubDate>Tue, 09 Feb 2010 00:18:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/etc/20100209001119.htm</link>
     <category>vim</category><category>ネタ</category><category>emacs</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/etc/20100209001119.htm</guid>
     <description> 
Inspired by &lt;a href=&quot;http://d.hatena.ne.jp/moriyoshi/20100204/1265242273&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;http://d.hatena.ne.jp/moriyoshi/20100204/1265242273&lt;/a&gt;(興味のある言語にPHPと書いておいたら面接で爆笑された)
&lt;blockquote class=&quot;mention&quot;&gt;
UNIXエンジニアを募集してる会社の採用面接を受けた時の話。&lt;br /&gt;
転職エージェントに作れと言われて作ったシートに、「使っているテキストエディタ」という欄があったんです。&lt;br /&gt;
nanoとか秀丸とか色々書いたけど、一応WindowsでもUNIXでも使えて操作感が好きだったるので、&lt;br /&gt;
Vimと書いておいたのですが、それを見た仙人染みた長髪の面接官のリアクションが酷かった。&lt;br /&gt;
面接官「Vim・・・ふははっ！Vim！」&lt;br /&gt;
面接官「Vim使ってるんですか？ｗｗｗｗｗ」&lt;br /&gt;
　　俺「(唖然)は、はい・・まだVimscriptを理解したぐらいですが。。」&lt;br /&gt;
面接官「Vim・・・ﾆﾔﾆﾔ」&lt;br /&gt;
その人はEmacs信者と呼ばれていて、当然Vimくらい知っている人だったので、&lt;br /&gt;
Emacsが「テキストエディタではなく環境」と呼ばれている事を知らないワケが無いだろうと思っていた。&lt;br /&gt;
つまり、このリアクションは&amp;quot;理不尽な状況に直面した時にどう対応するか&amp;quot;を見ているんだろうと判断し、あえて突っ込みは入れずに対処した。&lt;br /&gt;
しかし最後の質問で「何故Ctrlキーを多用する様な操作を採用したんですか？」と聞くと、&lt;br /&gt;
気まずそうに理由を話し、最後に「・・・と、聞いてます」と答えた。&lt;br /&gt;
つまりこの人は神からEmacsを使えと言われたから使っているのであって、&lt;br /&gt;
特別Emacsに思い入れとか無いおっさんエンジニアなんだなあと分かった。&lt;br /&gt;
オムニ補完とかもVim発のテクニックだし、Emacsやってるなら補完に興味を持つのは普通だと思うんだけどなあ。&lt;br /&gt;
多分ガチで知らなかったんだろう。&lt;br /&gt;
&lt;/blockquote&gt;
あくまでネタであって、宗教論争のつもりじゃないのであしからず。
</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
   <item>
     <title>Google Chrome拡張がクラッシュして治らない時は...</title>
     <pubDate>Fri, 05 Feb 2010 02:01:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/software/chrome/20100205014252.htm</link>
     <category>chrome</category><category>chromium</category><category>google chrome</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/software/chrome/20100205014252.htm</guid>
     <description>
なんでか分かんないけど、今日突然Google Chromeがクラッシュして落ちた。まぁdevチャネルつかってるからしょうがないかとは思ったんだけど、再起動したら１秒で「はてなブックマーク拡張」が落ちる様になった。いろいろ調べてもダメで、どうやら拡張が使ってるストレージが壊れた様子。&lt;br /&gt;
調べた結果
&lt;blockquote class=&quot;code&quot;&gt;
C:&amp;yen;Documents and Settings&amp;yen;ユーザ名&amp;yen;Local Settings&amp;yen;Application Data&amp;yen;Google&amp;yen;Chrome&amp;yen;User Data&amp;yen;Default&amp;yen;Local Storage
&lt;/blockquote&gt;
には「chrome-extension_&lt;b&gt;拡張ID&lt;/b&gt;」から始まるsqlite3のファイルがあり、どうやらこれが書き込まれている最中にクラッシュした為、読み込み出来なくなったみたい。&lt;br /&gt;
「はてなブックマーク拡張」はローカルストレージ自身に重要性は無かったので
&lt;blockquote class=&quot;code&quot;&gt;
chrome-extension_dnlfpnhinnjdgmjfpccajboogcjocdla_0.localstorage
&lt;/blockquote&gt;
をためらい無しに削除、そして再起動。&lt;br /&gt;
見事復活出来ました。&lt;br /&gt;
&lt;br /&gt;
ちなみにUNIX系だと
&lt;blockquote class=&quot;code&quot;&gt;
$HOME/.config/google-chrome/Default/Local Storage
&lt;/blockquote&gt;
にあります。
</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
   <item>
     <title>Vim script manager「Vimana」が便利すぎる。</title>
     <pubDate>Thu, 04 Feb 2010 00:52:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/software/vim/20100204002218.htm</link>
     <category>vim</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/software/vim/20100204002218.htm</guid>
     <description>
これまでvimスクリプトをインストールするには、&lt;a href=&quot;http://www.vim.org/&quot; class=&quot;external&quot; target=&quot;_blnak&quot;&gt;vim online&lt;/a&gt;でダウンロードして、書いてあるインストール手順に従って、時にはそのまま、時にはzipを解凍して.vim(windowsならvimfiles)に自前でコピーするのが一般的でした。おそらく自動化されている方もいるかもしれませんが、特有のスクリプト専用の更新ツールくらいかと思います。&lt;br /&gt;
Perlを知っている方ならばCPAN、rubyを知っている方ならばgemにあたる物がvimには無かったんです。&lt;br /&gt;
配布物が統一されていない為、無理だろうな...とも思ってました。&lt;br /&gt;
が、そこに登場したのがVimana(Vim script manager)です。&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
Vimana(3)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; User Contributed Perl Documentation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Vimana(3)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;NAME&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vimana - Vim script manager.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;DESCRIPTION&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vimana is an easy to use system for searching , installing, and&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; downloading vim script.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vimana provides a command-line interface such like &amp;quot;aptitude&amp;quot; programe&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; on Debian linux, for you to search , download , install , upgrade&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scripts from &amp;lt;&lt;a href=&quot;http://www.vim.org&quot;&gt;http://www.vim.org&lt;/a&gt;&amp;gt; (vimonline site).&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vimana can install a vim script package to your vim runtime path&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; automatically by inspecting the content of archive file or vim script.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for example , if an archive file contains &apos;syntax&apos;,&apos;plugin&apos;,&apos;indent&apos;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; directory , then these files should be installed to _______ directory.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if it&apos;s a vim color scheme , then it should be put into ______________&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and prompt for setting the installed colorscheme as default.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; We plan to provide port files via git repository, vimrc customization&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and internationalization in future.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( In some modern Indian languages, vimXna or vimXn means &amp;quot;aircraft&amp;quot;. )&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: Vimana only provides search,info,install commmands currently.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Getting started from Vimana::Manual.&lt;br /&gt;
&lt;/blockquote&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://github.com/c9s/Vimana&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;c9s&apos;s Vimana at master - GitHub&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;Vimana is an easy to use system for searching , installing, and downloading vim script. Vimana provides a command-line interface such like aptitude programe on Debian linux, for you to search , download , install , upgrade scripts from http://www.vim.org (vimonline site).&lt;/p&gt;
&lt;cite&gt;http://github.com/c9s/Vimana&lt;/cite&gt;
&lt;/blockquote&gt;
Vimanaは&lt;a href=&quot;http://github.com/c9s&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;c9s(Cornelius)&lt;/a&gt;さんが作っているPerlスクリプトで、vimスクリプトの検索、情報表示、インストール、ダウンロード、削除が行えるツールです。vimスクリプトは拡張子がvimというだけで、一見そのスクリプトが単なるpluginなのか、はたまたsyntaxなのか、ftpluginなのか分かりません。さらに~/.vim以下の構造になっていればそのまま上書き出来るのですが、中にはvimスクリプトのみ配布されている物もあります。Vimanaはそれをパースして適当なフォルダにインストールしてくれます。&lt;br /&gt;
インストールは以下の様に行います。
&lt;blockquote class=&quot;code&quot;&gt;
# git clone git://github.com/c9s/Vimana&lt;br /&gt;
# cd Vimana&lt;br /&gt;
# perl Makefile.PL&lt;br /&gt;
# make&lt;br /&gt;
# make test&lt;br /&gt;
# make install&lt;br /&gt;
&lt;/blockquote&gt;
ご覧頂ければ分かる様にPerlで出来ています。これでvimanaコマンドがインストールされます。詳しい使い方は
&lt;blockquote class=&quot;code&quot;&gt;
# perldoc Vimana::Manual&lt;br /&gt;
&lt;/blockquote&gt;
を参照して下さい。簡単な使い方は以下の通りです。&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
# vimana update
&lt;/blockquote&gt;
まずインデックスを更新します。そして「gist」というキーワードで検索してみます。
&lt;blockquote class=&quot;code&quot;&gt;
# vimana search gist&lt;br /&gt;
regview.vim&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Interactively browse register contents&lt;br /&gt;
filetyperegisters&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Localize register contents based on filetype&lt;br /&gt;
stackreg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Vz-like stackable registers&lt;br /&gt;
regredir.vim&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Vim plugin to redirect command output into a register&lt;br /&gt;
regreplop.vim&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- operator to replace motion/visual with a register&lt;br /&gt;
registryedit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Edit the win32 registry through vim.&lt;br /&gt;
clipbrd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Clipboard and other register content editor.&lt;br /&gt;
fakeclip&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - pseudo clipboard register for non-GUI version of Vim&lt;br /&gt;
destructive-paste&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Pastes the register, replacing text&lt;br /&gt;
tregisters&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - List, edit, and run/execute registers/clipboards&lt;br /&gt;
operator-replace&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Operator to replace text with register content&lt;br /&gt;
gist.vim&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - vimscript for gist&lt;br /&gt;
replacewithregister&amp;nbsp;&amp;nbsp;- Replace text with the contents of a register.&lt;br /&gt;
&lt;/blockquote&gt;
サマリ一覧されて便利ですね。次に手前味噌ですが「gist.vim」をインストールしてみましょう。&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
# vimana install gist.vim&lt;br /&gt;
Plugin will be installed to vim runtime path: /home/mattn/.vim&lt;br /&gt;
Canonical name: gist.vim&lt;br /&gt;
Downloading from: &lt;a href=&quot;http://www.vim.org/scripts/download_script.php?src_id=12283&quot;&gt;http://www.vim.org/scripts/download_script.php?src_id=12283&lt;/a&gt;&lt;br /&gt;
Saving file to /tmp/vimana-imqqdp/gist.vim &lt;br /&gt;
Inspecting file content for script type.&lt;br /&gt;
Script type found: plugin.&lt;br /&gt;
Installing..&lt;br /&gt;
Copying /tmp/vimana-imqqdp/gist.vim to /home/mattn/.vim/plugin&lt;br /&gt;
Installation Done.&lt;br /&gt;
&lt;/blockquote&gt;
簡単すぎます。&lt;br /&gt;
ちなみにpluginフォルダ構成になっているスクリプトでも問題なくインストール出来ます。必要なくなったら
&lt;blockquote class=&quot;code&quot;&gt;
# vimana remove gist.vim&lt;br /&gt;
&lt;/blockquote&gt;
とすればアンインストールもやってくれます。&lt;br /&gt;
すばらしい... c9s++&lt;br /&gt;
こういうのが欲しかったんだと思いました。&lt;br /&gt;
&lt;br /&gt;
実は今日、c9sさんからVimanaのcommit権を貰いました。もちろんWindowsにポーティングさせて頂きました。&lt;br /&gt;
メインブランチにはまだ入っていませんが、windowsブランチに入っています。興味のある方はぜひインストールしてみてください。&lt;br /&gt;
&lt;br /&gt;
なおc9sさんは台湾の方です(英語は話せますが)。もしVimanaについて要望などあれば私が日本語窓口させて頂きます。&lt;br /&gt;
&lt;br /&gt;
</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
   <item>
     <title>darcsでFirewallを超える</title>
     <pubDate>Wed, 03 Feb 2010 02:07:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/software/darcs/20100203014910.htm</link>
     <category>darcs</category><category>windows</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/software/darcs/20100203014910.htm</guid>
     <description>
&lt;img src=&quot;http://mattn.kaoriya.net/images/darcs-logo.png&quot; title=&quot;darcs&quot; alt=&quot;darcs&quot; align=&quot;right&quot; /&gt;
github流行ってますね。オープンソース開発者にとってgitは必須アイテムでもあり登竜門的な技術要素になってきました。しばらくはgitが一般的なVCS(version control system)になっていくんだろうなと思います。まぁLinus氏が飽きればまた次のが流行るのかな。&lt;br /&gt;
ちょっと前から&lt;a href=&quot;http://github.com/mattn/go-gtk&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;goのgtkバインディング&lt;/a&gt;を開発していますが、先日とある方がforkしてpull requestしてくれました。&lt;br /&gt;
&lt;a href=&quot;http://github.com/droundy&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;David Roundy氏&lt;/a&gt;。知っている人は知っている、&lt;a href=&quot;http://darcs.net/&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;darcs&lt;/a&gt;のauthorです。ちょっと久しくdarcsを触って無かったので思い立ってバージョンを上げ、試してみました。&lt;br /&gt;
commitじゃなくてrecordだったり、logじゃなくchangesだったりと少しgitやsvnと違和感があったりもしますが、とても単一モジュールで動いているとは思えない程の機能を持ち合わせています。&lt;br /&gt;
昨日&lt;a href=&quot;http://twitter.com/iratqq&quot;&gt;iratqq&lt;/a&gt;さんがmpc(Music Player Client: Client for Music Player Daemon)のhttpd版をHaskellで書いてたので試そうと思い、&lt;a href=&quot;http://patch-tag.com/r/iratqq/mpc-httpd&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;リポジトリ&lt;/a&gt;を見たら&lt;a href=&quot;http://patch-tag.com&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;patch-tag.com&lt;/a&gt;というSCMサイトでした。これまたサービス自体もHaskellで書かれているとの事で、Haskellなんかまともに書けない私が参加して良いものだろうかとか考えながら登録してみました。&lt;br /&gt;
さて、darcsも内部では(デフォルトは)ssh通信を行うので、使うにはgitの時と同じ様に
&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://mattn.kaoriya.net/software/20081029172540.htm&quot;&gt;Big Sky :: SSHポートが通らなくてもgithub.comにpushする方法&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;pushはsshを使うのでport 22が開いてないとpush出来ない物と信じ込んでいました。が、今日解決しました。
&lt;/p&gt;
&lt;cite&gt;http://mattn.kaoriya.net/software/20081029172540.htm&lt;/cite&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://mattn.kaoriya.net/software/20090624103050.htm&quot;&gt;Big Sky :: SSH/Gitの設定を修正しなくてもファイアウォール内からgithub.comにpushする方法&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;Gitはトランスポート層が選択出来るのは知っていたけど、まさかこんな書き方出来るとは思ってなかった。&lt;/p&gt;
&lt;cite&gt;http://mattn.kaoriya.net/software/20090624103050.htm&lt;/cite&gt;
&lt;/blockquote&gt;
こんな手順を踏まなきゃ駄目なのは分かってたんですが、なんとなしに「ssh.patch-tag.com」というキーワードでググってたら...見つけました！&lt;br /&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://blog.patch-tag.com/2009/02/25/how-to-get-around-firewalls-using-patch-tag/&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;How to get around firewalls using Patch-Tag &amp;laquo;  the Patch-Tag blog&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;We have been tweaking the retrieval parameters for repository access via SSH. Did you know you can get around firewalls that block port 22? Thats right, we have now added support for this.&lt;/p&gt;
&lt;cite&gt;http://blog.patch-tag.com/2009/02/25/how-to-get-around-firewalls-using-patch-tag/&lt;/cite&gt;
&lt;/blockquote&gt;
github.comがssh.github.com:443を開けているのと同じ様にpatch-tag.comもssh.patch-tag.com:443でsshを開けているとの事。ここに書かれている手順通りでも良いのですが、リポジトリ名を修正しなくても使える方法を今日はご紹介。&lt;br /&gt;
gitの時の手順と同じ様に、ssh/configファイルを使い、patch-tag.comへのsshアクセスをssh.patch-tag.comの443ポートへと繋ぎ変えます。
&lt;blockquote class=&quot;code&quot;&gt;
Host patch-tag.com&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Hostname ssh.patch-tag.com&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Port 443&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IdentityFile c:/docume~1/mattn/.ssh/id_rsa&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TCPKeepAlive yes&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IdentitiesOnly yes&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProxyCommand c:/docume~1/mattn/.ssh/connect -h ssh.patch-tag.com 443&lt;br /&gt;
&lt;br /&gt;
&lt;/blockquote&gt;
proxyでFirewallを越えるのでProxyCommandを使います。connectは&lt;a href=&quot;http://bent.latency.net/bent/git/goto-san-connect-1.85/src/connect.html&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;ここ&lt;/a&gt;にある物をコンパイルして使います。&lt;br /&gt;
さて、これでokと思ったのですが1点問題が発生しました。何度やってもsshのログインプロンプトが表示されません。おかしいなと思い色々調べていたら
&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://wiki.darcs.net/WindowsConfiguration&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;Wiki - WindowsConfiguration&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;If you want to use darcs over ssh you need to set up &lt;strong&gt;passwordless&lt;/strong&gt; ssh login (password-based authentification is currently broken on windows).&lt;/p&gt;
&lt;cite&gt;http://wiki.darcs.net/WindowsConfiguration&lt;/cite&gt;
&lt;/blockquote&gt;
おーまいがっ！&lt;br /&gt;
Windows版は現状壊れてるのでパスワード無しでないと駄目らしい。それは痛い。puttyを使いたくない派には残酷なお知らせ。&lt;br /&gt;
諦めかけたその時思い出した。
&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://mattn.kaoriya.net/software/20081106192615.htm&quot;&gt;Big Sky :: Windowsでもssh-agentとssh-addを使ってパスフレーズ入力を省略する。&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;開発を始める前にコマンドプロンプトで1回これを動かすとパスフレーズを聞かれ、1回入力すれば以降は聞かれない様になる。&lt;/p&gt;
&lt;cite&gt;http://mattn.kaoriya.net/software/20081106192615.htm&lt;/cite&gt;
&lt;/blockquote&gt;
ちなみに手元の最新版ssh-env.batは以下の様になってます。&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
@&lt;span class=&quot;Identifier&quot;&gt;echo&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;&amp;nbsp;off&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Statement&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;%1&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;==&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;-f&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;goto&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;&amp;nbsp;force&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Statement&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;&amp;nbsp;not &lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;%SSH_AGENT_PID%&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;==&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;goto&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;&amp;nbsp;end&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Statement&quot;&gt;:force&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Statement&quot;&gt;for&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Special&quot;&gt;/f&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;eol=; tokens=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;nbsp;delims==;&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Special&quot;&gt;%%&lt;/span&gt;1 in (&lt;span class=&quot;PreProc&quot;&gt;&apos;ssh-agent.exe&apos;&lt;/span&gt;) do (&lt;br /&gt;
&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;%%&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;1&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;==&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;SSH_AUTH_SOCK&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;SSH_AUTH_SOCK&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;%%&lt;/span&gt;2&lt;br /&gt;
&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;%%&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;1&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;==&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;SSH_AGENT_PID&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;SSH_AGENT_PID&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;%%&lt;/span&gt;2&lt;br /&gt;
)&lt;br /&gt;
ssh-add&lt;br /&gt;
&lt;span class=&quot;Statement&quot;&gt;:end&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
強制フラグ付けただけですが...。&lt;br /&gt;
これをコマンドプロンプトで1回実行した後にdarcsを実行します。&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
C:&amp;yen;TEMP&amp;gt;ssh-env&lt;br /&gt;
Enter passphrase for /c/docume~1/mattn/.ssh/id_rsa:&lt;br /&gt;
Identity added: /c/docume~1/mattn/.ssh/id_rsa (/c/docume~1/mattn/.ssh/id_rsa)&lt;br /&gt;
&lt;br /&gt;
C:&amp;yen;temp&amp;gt;darcs get mattn@patch-tag.com:/r/mattn/mattn-testproject&lt;br /&gt;
Copying patches, to get lazy repository hit ctrl-C...&lt;br /&gt;
Finished getting.&lt;br /&gt;
&lt;br /&gt;
C:&amp;yen;temp&amp;gt;&lt;br /&gt;
&lt;/blockquote&gt;
うぉーーー！でけた。ちなみにチェックアウトしたファイルに変更を加えてdarcs pushもうまく動いています。&lt;br /&gt;
&lt;br /&gt;
これでdarcsライフも満喫出来そうです。gitとは少し違ったVCS味わってみませんか。&lt;br /&gt;
</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
   <item>
     <title>Googleサジェストから補完候補を作るVimスクリプト書いた。</title>
     <pubDate>Thu, 28 Jan 2010 23:13:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/software/vim/20100128225659.htm</link>
     <category>google</category><category>vim</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/software/vim/20100128225659.htm</guid>
     <description>
vimの入力補完って大変便利なんですが、例えば「あーあの芸能人、名前分かるけどどの漢字だったっけ...」なんて事がたまにあります。&lt;br /&gt;
芸能人の名前辞書用意持ってる人なんて見たことないですね。たいがいこういう時はGoogle先生にたよるのが一般的です。&lt;br /&gt;
今日はGoogleサジェスト(Google検索で数文字打ったら出てくるあの候補)からvimの補完を行えるスクリプトを書いてみました。&lt;br /&gt;
&lt;br /&gt;
例えばこんな事が出来ます。&lt;br /&gt;
&lt;blockquote&gt;
&lt;a href=&quot;http://mattn.kaoriya.net/images/googlesuggest-complete-vim1.png&quot; rel=&quot;lightbox&quot; title=&quot;googlesuggest-complete-vim1&quot;&gt;&lt;img src=&quot;http://mattn.kaoriya.net/images/googlesuggest-complete-vim1-thumb.png&quot; alt=&quot;googlesuggest-complete-vim1&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/blockquote&gt;
おもむろに「takasu」と打って、&amp;lt;c-x&amp;gt;&amp;lt;c-u&amp;gt;とタイプします。&lt;br /&gt;
&lt;blockquote&gt;
&lt;a href=&quot;http://mattn.kaoriya.net/images/googlesuggest-complete-vim2.png&quot; rel=&quot;lightbox&quot; title=&quot;googlesuggest-complete-vim2&quot;&gt;&lt;img src=&quot;http://mattn.kaoriya.net/images/googlesuggest-complete-vim2-thumb.png&quot; alt=&quot;googlesuggest-complete-vim2&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Yes! 高須クリニック！&lt;/h3&gt;&lt;br /&gt;
&lt;small&gt;えっ2番？...うるさい！&lt;/small&gt;&lt;br /&gt;
&lt;br /&gt;
便利ですね！&lt;br /&gt;
&lt;br /&gt;
また「watasinonamaeha」(私の名前は)と打って&amp;lt;c-x&amp;gt;&amp;lt;c-u&amp;gt;すると...&lt;br /&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
私の名前はキムサムスン
&lt;/blockquote&gt;
誰ですか！キムサムスン！&lt;br /&gt;
&lt;br /&gt;
例えば「naitu」なら...&lt;br /&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
ナイツ お笑い
&lt;/blockquote&gt;
「www」なら...&lt;br /&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
www.yahoo.co.jp
&lt;/blockquote&gt;
「gm」だけで...&lt;br /&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
gmailへようこそ
&lt;/blockquote&gt;
... えっ ...&lt;br /&gt;
&lt;br /&gt;
びっ...「vimp」ならば...&lt;br /&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
vimperator
&lt;/blockquote&gt;
そして「puri」で...&lt;br /&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
プリキュア
&lt;/blockquote&gt;
&lt;br /&gt;
&lt;strong&gt;便利過ぎます！&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
もうIMEいりません！&lt;br /&gt;
&lt;br /&gt;
どうかお役立て下さい！&lt;br /&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://github.com/mattn/googlesuggest-complete-vim&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;mattn&apos;s googlesuggest-complete-vim at master - GitHub&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;complete function using google suggest API. perhaps, you should input japanese without IME.&lt;/p&gt;
&lt;cite&gt;http://github.com/mattn/googlesuggest-complete-vim&lt;/cite&gt;
&lt;/blockquote&gt;
</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
   <item>
     <title>VimからIRC出来るスクリプト書いた。</title>
     <pubDate>Thu, 28 Jan 2010 01:39:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/software/vim/20100128011540.htm</link>
     <category>freenode</category><category>irc</category><category>vim</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/software/vim/20100128011540.htm</guid>
     <description>
長きに渡り活躍したWIDEプロジェクトのIRCサーバが役割を終えようとしています。そして惜しまれる中、livedoorがIRCサーバの提供をかって出てくれました。&lt;br /&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://blog.livedoor.jp/edge_labs/archives/1092902.html&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;livedoor ラボ「EDGE」 開発日誌 : livedoorからIRCnetへIRCサーバを提供します - livedoor Blog（ブログ）&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;
&lt;a href=&quot;http://www.wide.ad.jp/news/press/20100125-IRC-server-close-j.html&quot;&gt;WIDEプロジェクトIRCワーキンググループによるIRCサーバ運用終了について&lt;/a&gt;&lt;br /&gt;
という発表がありましたが IPv6を応援し、IRCをこよなく愛するlivedoorは、IRCnetへIRCサーバを提供することを決定しました。&lt;br /&gt;
※IPv4とIPv6で利用可能なデュアルスタック環境を用意する予定&lt;br /&gt;
※接続数などの仕様は現行と同じです&lt;br /&gt;
&lt;br /&gt;
現在、関係各所と調整を行っているところですが近日中に接続先情報などはお知らせ出来ると思いますので、お待ちください。&lt;br /&gt;
&lt;br /&gt;
宜しくお願いいたします。&lt;/p&gt;
&lt;cite&gt;http://blog.livedoor.jp/edge_labs/archives/1092902.html&lt;/cite&gt;
&lt;/blockquote&gt;
すばらしいですね。これを期にIRCユーザがまた増え出すといいですね。&lt;br /&gt;
ぜんぜん関係ないですが、今日はvimからIRC出来るスクリプトを書いてみました。IRCプロトコルを喋るのではなく、freenode.netのウェブインタフェースを叩いています。&lt;br /&gt;
curlコマンドを使っているのでお使いのvimがperl拡張(if_perl)やpython拡張(if_python)、ruby拡張(if_ruby)でコンパイルされている必要はありません。Windowsでも動きます。&lt;br /&gt;
生のIRCと違い、プロキシさえ通れば防火壁内の人でもvimからIRC出来ます。&lt;br /&gt;
一つ問題があるとすれば、クライアントサーバをサポートしたvimである事と起動方法が難しい事。クライアントサーバはUNIX系OSであればgvimで、Windowsであればコマンドライン版でもOKです。クライアントサーバをサポートしているかどうかは、一つvimを起動しておいて&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
# vim --serverlist
&lt;/blockquote&gt;
とする事で確認出来ます。vimは内部で非同期に生成したプロセスとやりとりするのが苦手なので、vimを２つ使っています。&lt;br /&gt;
以下起動手順。&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;新しく端末を開きvimを起動する&lt;/li&gt;
&lt;li&gt;さらに新しく端末を開きもう一つvimを起動する&lt;/li&gt;
&lt;li&gt;片方のvimで「:Irc」と入力します。&lt;/li&gt;
&lt;li&gt;もう片方のvimで「:IrcServer #mychannel mynick」と入力します。&lt;/li&gt;
&lt;/ol&gt;
&lt;em&gt;場合により上記vimをgvimで置き換えて下さい。&lt;/em&gt;&lt;br /&gt;
これで「IrcServer」と入力した側がIRCサーバとなり、「Irc」と入力した側がIRCクライアントになります。内部でremote_expr()による通信をしています。&lt;br /&gt;
実際にはサーバがremote_expr()でコンテキスト、発言者、メッセージを飛ばし、受け側であるクライアント側がバッファに追加しています。&lt;br /&gt;
Linux版で試した所、若干とろい気もしますが十分楽しめます。(ネタとして)&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
&lt;a href=&quot;http://mattn.kaoriya.net/images/pureirc-vim.png&quot; rel=&quot;lightbox&quot; title=&quot;pureirc-vim&quot;&gt;&lt;img src=&quot;http://mattn.kaoriya.net/images/pureirc-vim-thumb.png&quot; alt=&quot;pureirc-vim&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;一人で寂しいよー。&lt;/small&gt;
&lt;/blockquote&gt;
どうぞ遊んでやって下さい。&lt;br /&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://github.com/mattn/pureirc-vim&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;mattn&apos;s pureirc-vim at master - GitHub&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;vimscript for IRC. This make possible to access freenode.net from vim via HTTP protocol. it don&apos;t require if_xxx. using &apos;curl&apos;&lt;/p&gt;
&lt;cite&gt;http://github.com/mattn/pureirc-vim&lt;/cite&gt;
&lt;/blockquote&gt;
</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
   <item>
     <title>Opera-10.50-6177でJavaScriptからコンテキストメニューが抑制出来る様になった！</title>
     <pubDate>Fri, 22 Jan 2010 02:17:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/software/opera/20100122014111.htm</link>
     <category>opera</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/software/opera/20100122014111.htm</guid>
     <description>
&lt;a href=&quot;http://mattn.kaoriya.net/software/opera/20100106001215.htm&quot;&gt;前回&lt;/a&gt;はあんましいい感じじゃ無かったが...ちょっと気になる事があって、もう一回試してみた。&lt;br /&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://labs.opera.com/news/2009/12/22/&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;Opera 10.5 pre-alpha for Labs&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;We have just released Opera 10.5 pre-alpha for Labs. This pre-alpha is based on the Evenes branch and includes Windows, Mac, and UNIX builds (see below for download link).&lt;/p&gt;
&lt;p&gt;As you may know, we don’t typically open new versions to user-testing this early in the development cycle. However, we are really excited about what the Desktop team is cooking up and want your feedback.&lt;/p&gt;
&lt;p&gt;Many of you have been asking for a glimpse of Carakan, our new ECMAScript/JavaScript engine, and an update to our HTML &lt;video&gt; support. With this release you&apos;ll be able to play with them and a few other new technologies that will hopefully be part of our next major release.&lt;/p&gt;
&lt;cite&gt;http://labs.opera.com/news/2009/12/22/&lt;/cite&gt;
&lt;/blockquote&gt;
期待を込めて...&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
&lt;a href=&quot;http://mattn.kaoriya.net/images/opera-10-50-6177-linux-i386-2.png&quot; rel=&quot;lightbox&quot; title=&quot;opera-10-50-6177-linux-i386-2&quot;&gt;&lt;img src=&quot;http://mattn.kaoriya.net/images/opera-10-50-6177-linux-i386-2-thumb.png&quot; alt=&quot;opera-10-50-6177-linux-i386-2&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/blockquote&gt;
うむ。この前と同じ感じ。ちなみにFlashだと変になるのも変わらない。&lt;br/&gt;
&lt;br /&gt;
それよりも気になってた事があって...&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
javascript:window.oncontextmenu=function(){return false};void 0
&lt;/blockquote&gt;
おもむろにアドレスバーへ打ち込み、たわわに実ったウィンドウを撫でるように右クリック...&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
&lt;h3&gt;でっ...でない！！&lt;/h3&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
operaはこれまでjavascriptでコンテキストメニューが抑制出来なかったんだけど、このバージョン抑制出来てる！&lt;br /&gt;
これで右クリックを使ったwidgetやツールなんかも動くようになるよ。これまで自作のスクリプトがoperaに移植出来なかった皆さん、朗報です。&lt;br /&gt;
&lt;br /&gt;
ワクワク！&lt;br /&gt;
</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
   <item>
     <title>twitterfeedからFeedTweetに乗り換えた。</title>
     <pubDate>Thu, 21 Jan 2010 00:21:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/web/20100121001224.htm</link>
     <category>feed</category><category>twitter</category><category>rss</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/web/20100121001224.htm</guid>
     <description>
いままでブログからtwitterへの投稿は&lt;a href=&quot;http://twitterfeed.com/&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;twitterfeed&lt;/a&gt;を使ってたんだけど、なんか変にキューイングされたり投稿されなかったりとイヤンな感じだったので、和製の&lt;a href=&quot;http://feedtweet.am6.jp/&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;FeedTweet&lt;/a&gt;に乗り換えた。&lt;br /&gt;
ダッシュボードも見やすい。&lt;br /&gt;
&lt;blockquote&gt;
&lt;a href=&quot;http://mattn.kaoriya.net/images/feedtweet1.png&quot; rel=&quot;lightbox&quot; title=&quot;feedtweet1&quot;&gt;&lt;img src=&quot;http://mattn.kaoriya.net/images/feedtweet1-thumb.png&quot; alt=&quot;feedtweet1&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/blockquote&gt;
アクセス解析も付いてくる。&lt;br /&gt;
&lt;blockquote&gt;
&lt;a href=&quot;http://mattn.kaoriya.net/images/feedtweet2.png&quot; rel=&quot;lightbox&quot; title=&quot;feedtweet2&quot;&gt;&lt;img src=&quot;http://mattn.kaoriya.net/images/feedtweet2-thumb.png&quot; alt=&quot;feedtweet2&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/blockquote&gt;
現在の状態がよく分かるし、キューを先行させる事も出来る。&lt;br /&gt;
投稿時間の制限も出来るみたい。私は夜中でも今すぐ投稿して欲しかったので以下の様に設定した。&lt;br /&gt;
&lt;blockquote&gt;
&lt;a href=&quot;http://mattn.kaoriya.net/images/feedtweet3.png&quot; rel=&quot;lightbox&quot; title=&quot;feedtweet3&quot;&gt;&lt;img src=&quot;http://mattn.kaoriya.net/images/feedtweet3-thumb.png&quot; alt=&quot;feedtweet3&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/blockquote&gt;
しばらく使ってみようと思う。&lt;br /&gt;
</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
   <item>
     <title>Perl音痴な私がPerlを使っている理由</title>
     <pubDate>Thu, 21 Jan 2010 00:01:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/software/lang/perl/20100120235130.htm</link>
     <category>perl</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/software/lang/perl/20100120235130.htm</guid>
     <description>
Perl Hacker面白いよ。:)&lt;br /&gt;
変な人いるし、堅い人もいる。ネタに一生懸命になれる人達がいっぱいいるし、意味なく1行に拘る人もいる。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
私はPerlで&lt;a href=&quot;http://labs.cybozu.co.jp/blog/kazuho/&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;スーパークリエイター奥一穂(kazuho)さん&lt;/a&gt;と会えた。&lt;br /&gt;
&lt;blockquote&gt;
&lt;a href=&quot;http://mattn.kaoriya.net/images/kazuho-sign.jpg&quot; rel=&quot;lightbox&quot; title=&quot;kazuho-sign&quot;&gt;&lt;img src=&quot;http://mattn.kaoriya.net/images/kazuho-sign-thumb.jpg&quot; alt=&quot;kazuho-sign&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
kazuhoさんにお好み焼き屋で箸袋の裏に貰ったサイン！&lt;br /&gt;
今も大事に持ってるお！&lt;br /&gt;
&lt;/blockquote&gt;
&lt;a href=&quot;http://utf-8.jp/&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;はせがわさん&lt;/a&gt;にも会えた。あ、ちゃうちゃう。はせがわさんは&lt;a href=&quot;http://wassr.jp/&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;wassr&lt;/a&gt;だ。&lt;br /&gt;
&lt;br /&gt;
次はどのHackerに会えるかな。&lt;br /&gt;
</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
   <item>
     <title>テーブルにINSERTされたらGrowl</title>
     <pubDate>Thu, 14 Jan 2010 00:17:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/software/lang/c/20100113235643.htm</link>
     <category>c</category><category>growl</category><category>DB</category><category>sqlite</category><category>sql</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/software/lang/c/20100113235643.htm</guid>
     <description>
なんとなくテーブルにデータがINSERTされたらGrowlされる...なんて仕組み作って見ようと思った。それだけ。&lt;br /&gt;
sqliteでextensionを作る。growlはWindowsのGNTPにも対応したmattn謹製gntp-sendを使う。
&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://github.com/mattn/gntp-send&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;mattn&apos;s gntp-send at master - GitHub&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;command line program that send to growl using GNTP protocol.&lt;/p&gt;
&lt;cite&gt;http://github.com/mattn/gntp-send&lt;/cite&gt;
&lt;/blockquote&gt;
gntp-sendはコマンドラインプログラムだけど、外部からライブラリとしても使える様にしてあります。&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;PreProc&quot;&gt;#include &lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;lt;stdlib.h&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;PreProc&quot;&gt;#include &lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;lt;sqlite3ext.h&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;PreProc&quot;&gt;#include &lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;lt;growl.h&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
SQLITE_EXTENSION_INIT1&lt;br /&gt;
&lt;span class=&quot;Type&quot;&gt;static&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Type&quot;&gt;void&lt;/span&gt;&amp;nbsp;growl_func(sqlite3_context *context, &lt;span class=&quot;Type&quot;&gt;int&lt;/span&gt;&amp;nbsp;argc, sqlite3_value **argv) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;if&lt;/span&gt;&amp;nbsp;(argc == &lt;span class=&quot;Constant&quot;&gt;1&lt;/span&gt;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Type&quot;&gt;const&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Type&quot;&gt;char&lt;/span&gt;&amp;nbsp;*text&amp;nbsp;&amp;nbsp;= (&lt;span class=&quot;Type&quot;&gt;const&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Type&quot;&gt;char&lt;/span&gt;&amp;nbsp;*)sqlite3_value_text(argv[&lt;span class=&quot;Constant&quot;&gt;0&lt;/span&gt;]);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;growl(&lt;span class=&quot;Constant&quot;&gt;&amp;quot;localhost&amp;quot;&lt;/span&gt;, &lt;span class=&quot;Constant&quot;&gt;&amp;quot;sqlite3&amp;quot;&lt;/span&gt;, &lt;span class=&quot;Constant&quot;&gt;&amp;quot;sqlite3-trigger&amp;quot;&lt;/span&gt;, &lt;span class=&quot;Constant&quot;&gt;&amp;quot;database-update&amp;quot;&lt;/span&gt;, text, &lt;span class=&quot;Constant&quot;&gt;NULL&lt;/span&gt;, &lt;span class=&quot;Constant&quot;&gt;NULL&lt;/span&gt;, &lt;span class=&quot;Constant&quot;&gt;NULL&lt;/span&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
__declspec(dllexport) &lt;span class=&quot;Type&quot;&gt;int&lt;/span&gt;&amp;nbsp;sqlite3_extension_init(sqlite3 *db, &lt;span class=&quot;Type&quot;&gt;char&lt;/span&gt;&amp;nbsp;**errmsg, &lt;span class=&quot;Type&quot;&gt;const&lt;/span&gt;&amp;nbsp;sqlite3_api_routines *api) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SQLITE_EXTENSION_INIT2(api);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;return&lt;/span&gt;&amp;nbsp;sqlite3_create_function(db, &lt;span class=&quot;Constant&quot;&gt;&amp;quot;growl&amp;quot;&lt;/span&gt;, &lt;span class=&quot;Constant&quot;&gt;1&lt;/span&gt;, SQLITE_UTF8, (&lt;span class=&quot;Type&quot;&gt;void&lt;/span&gt;*)db, growl_func, &lt;span class=&quot;Constant&quot;&gt;NULL&lt;/span&gt;, &lt;span class=&quot;Constant&quot;&gt;NULL&lt;/span&gt;);&lt;br /&gt;
}&lt;br /&gt;
&lt;/blockquote&gt;
こんなコード書いて
&lt;blockquote class=&quot;code&quot;&gt;
# gcc -shared -dll -I c:/sqlite3 -I headers growldb.c lib/libgrowl-static.a -lws2_32 -o growldb.dll&lt;br /&gt;
&lt;/blockquote&gt;
こんな風にコンパイル(Windowsの例)。&lt;br /&gt;
あとはテーブルにトリガー張って
&lt;blockquote class=&quot;code&quot;&gt;
sqlite&amp;gt; &lt;span class=&quot;Statement&quot;&gt;create&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Special&quot;&gt;table&lt;/span&gt;&amp;nbsp;foo(&lt;span class=&quot;Statement&quot;&gt;comment&lt;/span&gt;&amp;nbsp;text);&lt;br /&gt;
sqlite&amp;gt; &lt;span class=&quot;Statement&quot;&gt;select&lt;/span&gt;&amp;nbsp;load_extension(&lt;span class=&quot;Constant&quot;&gt;&apos;growldb.dll&apos;&lt;/span&gt;);&lt;br /&gt;
sqlite&amp;gt; &lt;span class=&quot;Statement&quot;&gt;create&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Special&quot;&gt;trigger&lt;/span&gt;&amp;nbsp;tri_foo&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ...&amp;gt; before&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ...&amp;gt;&amp;nbsp;&amp;nbsp; &lt;span class=&quot;Statement&quot;&gt;insert&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Special&quot;&gt;on&lt;/span&gt;&amp;nbsp;foo&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ...&amp;gt; &lt;span class=&quot;Special&quot;&gt;begin&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ...&amp;gt;&amp;nbsp;&amp;nbsp; &lt;span class=&quot;Statement&quot;&gt;select&lt;/span&gt;&amp;nbsp;growl(new.&lt;span class=&quot;Statement&quot;&gt;comment&lt;/span&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ...&amp;gt; &lt;span class=&quot;Special&quot;&gt;end&lt;/span&gt;;&lt;br /&gt;
&lt;/blockquote&gt;
試してみよう！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
sqlite&amp;gt; &lt;span class=&quot;Statement&quot;&gt;insert&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Special&quot;&gt;into&lt;/span&gt;&amp;nbsp;foo &lt;span class=&quot;Special&quot;&gt;values&lt;/span&gt;(&lt;span class=&quot;Constant&quot;&gt;&apos;hasegawa! xss xss&apos;&lt;/span&gt;); &lt;br /&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
&lt;a href=&quot;http://mattn.kaoriya.net/images/sqlite3-growl.png&quot; rel=&quot;lightbox&quot; title=&quot;sqlite3-growl&quot;&gt;&lt;img src=&quot;http://mattn.kaoriya.net/images/sqlite3-growl-thumb.png&quot; alt=&quot;sqlite3-growl&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;b&gt;xssキター！&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
ただしinsertする側は必ずload_extension(&apos;growldb.dll&apos;)しとかないといけないので、oracleの様には行かない。&lt;br /&gt;
真面目な話、この方法をうまく使えばsqliteでネットワークレプリケーションとか出来そう。&lt;br /&gt;
えっ？誰得？.......知りません！&lt;br /&gt;
</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
  </channel>
</rss>
