<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/ME2.1.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>7bitlog</title>
	<link>http://nanabit.net/blog</link>
	<description>Programming</description>
	<pubDate>Sun, 11 Jul 2010 17:20:17 +0900</pubDate>
	<generator>http://wordpress.xwd.jp/?v=ME2.1.3</generator>
	<language>ja</language>
			<item>
		<title>オンラインで簡単にテキストをQRコード化 [ソフトウェア,JavaScript]</title>
		<link>http://nanabit.net/blog/2010/07/12/text-qrize/</link>
		<comments>http://nanabit.net/blog/2010/07/12/text-qrize/#comments</comments>
		 <pubDate>Mon, 12 Jul 2010 02:18:57 +0900</pubDate>
		<dc:creator>7bit</dc:creator>
		
		<category><![CDATA[ソフトウェア]]></category>

		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://nanabit.net/blog/2010/07/12/text-qrize/</guid>
		<description><![CDATA[Android機を買ってPCと連携させる場面が増えてきました。ネット越しにデータをやりとりしてもいいのですが、一過性の物だったり、自分以外の人に提示する必要があったりした場合にはQRコードが便利です。...]]></description>
			<content:encoded><![CDATA[Android機を買ってPCと連携させる場面が増えてきました。ネット越しにデータをやりとりしてもいいのですが、一過性の物だったり、自分以外の人に提示する必要があったりした場合にはQRコードが便利です。

Google Chart APIを用いると簡単にQRコードが作成できるようなので、ひとつ試しにテキストエリアの文字列をQRコード化するページを作ってみました。

text2QR [1]

テキストをペーストするか、Ctrl+Enterを押すか、3秒経つとQRコード化が行われます。一文字入力するごとにやっても良かったのですが、負荷が掛かりそうなのと、実際は入力→撮影まで時間がかかる筈なので、最後の3秒ルールでなんとかなります。

試しに置いておきますが、将来予告無く仕様やURLやらが変わる可能性があります。

参考:

2009-11-25 - 聴く耳を持たない(片方しか) [2]
QR Codes - Google Chart Tools / Image Charts (aka Chart API) - Google Code [3]


[1] http://nanabit.net/blog/qr.html
[2] http://d.hatena.ne.jp/rikuo/20091125
[3] http://code.google.com/intl/ja/apis/chart/docs/gallery/qr_codes.html]]></content:encoded>
			<wfw:commentRss>http://nanabit.net/blog/2010/07/12/text-qrize/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PukiWikiにjQueryを利用したtextarea自動リサイズautoResizeを組み込む [PHP,ソフトウェア]</title>
		<link>http://nanabit.net/blog/2010/06/23/jquery-autoresize-on-pukiwiki/</link>
		<comments>http://nanabit.net/blog/2010/06/23/jquery-autoresize-on-pukiwiki/#comments</comments>
		 <pubDate>Wed, 23 Jun 2010 02:24:19 +0900</pubDate>
		<dc:creator>7bit</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[ソフトウェア]]></category>

		<guid isPermaLink="false">http://nanabit.net/blog/2010/06/23/jquery-autoresize-on-pukiwiki/</guid>
		<description><![CDATA[jQueryを利用してHTMLのテキストエリアの高さを行数にあわせて自動調整してくれるプラグイン、autoResizeというものがあります。
jQuery plugin: ‘autoResize’ –...]]></description>
			<content:encoded><![CDATA[jQueryを利用してHTMLのテキストエリアの高さを行数にあわせて自動調整してくれるプラグイン、autoResizeというものがあります。

jQuery plugin: ‘autoResize’ – James Padolsey [1]

今までPukiWikiの編集画面はスクロールしにくく使いづらいと感じていたので、即組み込みます。PukiWikiは1.4.7を使用。


$ cd pukiwiki
$ wget 'http://james.padolsey.com/demos/plugins/jQuery/autoresize.jquery.min.js' -O autoresize.jquery.min.js
$ wget 'http://code.jquery.com/jquery-1.4.2.min.js' -O jquery.min.js


そして以下のパッチを適用。lib/html.phpとskin/pukiwiki.skin.phpを変更します。

diff -ur lib/html.php lib/html.php
--- lib/html.php 2010-06-23 02:04:17.000000000 +0900
+++ lib/html.php 2010-06-23 02:17:21.000000000 +0900
@@ -245,7 +245,11 @@
   &#60;input type=&#34;hidden&#34; name=&#34;cmd&#34;    value=&#34;edit&#34; /&#62;
   &#60;input type=&#34;hidden&#34; name=&#34;page&#34;   value=&#34;$s_page&#34; /&#62;
   &#60;input type=&#34;hidden&#34; name=&#34;digest&#34; value=&#34;$s_digest&#34; /&#62;
-  &#60;textarea name=&#34;msg&#34; rows=&#34;$rows&#34; cols=&#34;$cols&#34;&#62;$s_postdata&#60;/textarea&#62;
+  &#60;textarea id=&#34;expandingmsg&#34; name=&#34;msg&#34; rows=&#34;$rows&#34; cols=&#34;$cols&#34;&#62;$s_postdata&#60;/textarea&#62;
+  &#60;script type=&#34;text/javascript&#34;&#62;
+  $('textarea#expandingmsg').autoResize({limit: 9000});
+  $('textarea#expandingmsg').keydown();
+  &#60;/script&#62;
   &#60;br /&#62;
   &#60;div style=&#34;float:left;&#34;&#62;
    &#60;input type=&#34;submit&#34; name=&#34;preview&#34; value=&#34;$btn_preview&#34; accesskey=&#34;p&#34; /&#62;
diff -ur skin/pukiwiki.skin.php skin/pukiwiki.skin.php
--- skin/pukiwiki.skin.php       2010-06-23 02:04:18.000000000 +0900
+++ skin/pukiwiki.skin.php       2010-06-23 02:14:49.000000000 +0900
@@ -79,6 +79,8 @@
  &#60;link rel=&#34;stylesheet&#34; type=&#34;text/css&#34; media=&#34;screen&#34; href=&#34;skin/pukiwiki.css.php?charset=&#60;?php echo $css_charset ?&#62;&#34; charset=&#34;&#60;?php echo $css_charset ?&#62;&#34; /&#62;
  &#60;link rel=&#34;stylesheet&#34; type=&#34;text/css&#34; media=&#34;print&#34;  href=&#34;skin/pukiwiki.css.php?charset=&#60;?php echo $css_charset ?&#62;&#38;amp;media=print&#34; charset=&#34;&#60;?php echo $css_charset ?&#62;&#34; /&#62;
  &#60;link rel=&#34;alternate&#34; type=&#34;application/rss+xml&#34; title=&#34;RSS&#34; href=&#34;&#60;?php echo $link['rss'] ?&#62;&#34; /&#62;&#60;?php // RSS auto-discovery ?&#62;
+ &#60;script type=&#34;text/javascript&#34; src=&#34;jquery.min.js&#34;&#62;&#60;/script&#62;
+ &#60;script type=&#34;text/javascript&#34; src=&#34;autoresize.jquery.min.js&#34;&#62;&#60;/script&#62;

 &#60;?php if (PKWK_ALLOW_JAVASCRIPT &#38;&#38; $trackback_javascript) { ?&#62; &#60;script type=&#34;text/javascript&#34; src=&#34;skin/trackback.js&#34;&#62;&#60;/script&#62;&#60;?php } ?&#62;


コメント欄 [2]にある通り、autoResizeの後で

$("textarea#expandingmsg").keydown();

をしないと、元々長いテキストに関しては初期状態ではサイズが不適当になります。


[1] http://james.padolsey.com/javascript/jquery-plugin-autoresize/
[2] http://james.padolsey.com/javascript/jquery-plugin-autoresize/#comment-24955]]></content:encoded>
			<wfw:commentRss>http://nanabit.net/blog/2010/06/23/jquery-autoresize-on-pukiwiki/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Androidアプリ「発信確認 Call Confirm」がダウンロード出来ない問題について [ソフトウェア,Android]</title>
		<link>http://nanabit.net/blog/2010/06/17/android-call-confirm-not-in-market-16/</link>
		<comments>http://nanabit.net/blog/2010/06/17/android-call-confirm-not-in-market-16/#comments</comments>
		 <pubDate>Thu, 17 Jun 2010 09:57:35 +0900</pubDate>
		<dc:creator>7bit</dc:creator>
		
		<category><![CDATA[ソフトウェア]]></category>

		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://nanabit.net/blog/2010/06/17/android-call-confirm-not-in-market-16/</guid>
		<description><![CDATA[特にAndroid1.6のマーケットから、「発信確認 Call Confirm」が見えなくなるという不具合が発生しています。
どうやらBluetoothのパーミッションを要求するアプリは跳ねられるよう...]]></description>
			<content:encoded><![CDATA[特にAndroid1.6のマーケットから、「発信確認 Call Confirm」が見えなくなるという不具合が発生しています。
どうやらBluetoothのパーミッションを要求するアプリは跳ねられるようです。

Android1.6ユーザ(HT-03A, Xperia)の方は、http://nanabit.net/a/b [1]からv1.2.1をダウンロードすることができます。

現状どう対応すべきかわかりませんが、Bluetoothのパーミッションを要求しないバージョンを作るとか、野良apkにリダイレクトするためのアプリを新規登録するか等考えています。

[1] http://nanabit.net/a/b]]></content:encoded>
			<wfw:commentRss>http://nanabit.net/blog/2010/06/17/android-call-confirm-not-in-market-16/feed/</wfw:commentRss>
		</item>
		<item>
		<title>アンインストール用ショートカット作成「Uninstall Shortcut」 for Android リリース [ソフトウェア,Android]</title>
		<link>http://nanabit.net/blog/2010/05/15/uninstall-shortcut-110/</link>
		<comments>http://nanabit.net/blog/2010/05/15/uninstall-shortcut-110/#comments</comments>
		 <pubDate>Sat, 15 May 2010 09:34:03 +0900</pubDate>
		<dc:creator>7bit</dc:creator>
		
		<category><![CDATA[ソフトウェア]]></category>

		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://nanabit.net/blog/2010/05/15/uninstall-shortcut-110/</guid>
		<description><![CDATA[Android開発をしていると、自分で作成したアプリをロールバックしたり、テスト用のツールを削除したりと、特定アプリを一旦アンインストールしたくなることがあります。
そこでUninstall Shor...]]></description>
			<content:encoded><![CDATA[Android開発をしていると、自分で作成したアプリをロールバックしたり、テスト用のツールを削除したりと、特定アプリを一旦アンインストールしたくなることがあります。

そこでUninstall Shortcut。

元のアプリのアイコンの左下に炎を象ったバッジをつけたショートカットアイコンを作成します。このアイコンをタップすると、当該アプリのアンインストール画面に飛び、そこから1クリックで削除することができます。

v1.1.0からはアプリ一覧を名前・パッケージ名・インストール(アップデート)日の昇順/降順でソートできるようになりました。


「Uninstall Shortcut」紹介ページ [1]
マーケットで「Uninstall Shortcut」をダウンロード [2]





[1] http://nanabit.net/blog/android/uninstallshortcut
[2] http://market.android.com/search?q=pname:net.nanabit.uninstallshortcut]]></content:encoded>
			<wfw:commentRss>http://nanabit.net/blog/2010/05/15/uninstall-shortcut-110/feed/</wfw:commentRss>
		</item>
		<item>
		<title>誤発信防止アプリ「発信確認 Call Confirm」 for Android リリース [ソフトウェア,Android]</title>
		<link>http://nanabit.net/blog/2010/05/06/android-call-confirm-101/</link>
		<comments>http://nanabit.net/blog/2010/05/06/android-call-confirm-101/#comments</comments>
		 <pubDate>Thu, 06 May 2010 19:18:30 +0900</pubDate>
		<dc:creator>7bit</dc:creator>
		
		<category><![CDATA[ソフトウェア]]></category>

		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://nanabit.net/blog/2010/05/06/android-call-confirm-101/</guid>
		<description><![CDATA[最近Android機HTC Desireを買って色々遊んでいます。
非常にサクサク動くのは良いのですが、目下の所最大の問題は「電話」がすぐ押せる位置にあって、間違えて電話を掛けてしまいやすいこと。
A...]]></description>
			<content:encoded><![CDATA[最近Android機HTC Desireを買って色々遊んでいます。
非常にサクサク動くのは良いのですが、目下の所最大の問題は「電話」がすぐ押せる位置にあって、間違えて電話を掛けてしまいやすいこと。

Androidアプリの習作にコレを防ぐためのものをつくってみました。あらゆる電話発信に割り込んでダイアログを表示し、「発信」「やめる」を確認。
寝ぼけて・酔って・タッチのミスで誤発信をしてしまいそうで怖い方に。コレで枕元にAndroidをおけるようになります。

ダイアログには掛けようとしている番号と、(連絡先に登録があれば)顔写真・名前を表示するため即時の判断が可能です。

海外の方からv1.0.1をHTC Incredibleで使うと連絡先に登録があってもダイアログに名前が表示されないことがある、という連絡を何件か貰っています。じきに修正できる見込みですが、追加情報などあればメールで下さい。


「発信確認 Call Confirm」紹介ページ [1]
マーケットで「発信確認 Call Confirm」をダウンロード [2]


このアプリを機に7bitウェブサイトにもAndroidページ [3]を作りました。今後も色々なものを制作する予定なので、たまに覗いてみてください。サイトデザインがAndroidのブラウザからはあまりみやすくないのが問題ですが・・・そちらも時間があれば検討するかもしれません。

[1] http://nanabit.net/blog/android/callconfirm
[2] http://market.android.com/search?q=pname:net.nanabit.callconfirm
[3] http://nanabit.net/android/]]></content:encoded>
			<wfw:commentRss>http://nanabit.net/blog/2010/05/06/android-call-confirm-101/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Downloading Qik videos [Python,ソフトウェア,Linux]</title>
		<link>http://nanabit.net/blog/2010/04/18/downloading-qik-videos/</link>
		<comments>http://nanabit.net/blog/2010/04/18/downloading-qik-videos/#comments</comments>
		 <pubDate>Sun, 18 Apr 2010 21:13:46 +0900</pubDate>
		<dc:creator>7bit</dc:creator>
		
		<category><![CDATA[Python]]></category>

		<category><![CDATA[ソフトウェア]]></category>

		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://nanabit.net/blog/2010/04/18/downloading-qik-videos/</guid>
		<description><![CDATA[モバイル機器でビデオを撮影しリアルタイムで配信/保存して公開できるサービス、Qikのビデオのダウンロード方法。
Python2.6で以下をqik_download.pyとして保存。
#!/usr/bi...]]></description>
			<content:encoded><![CDATA[モバイル機器でビデオを撮影しリアルタイムで配信/保存して公開できるサービス、Qik [1]のビデオのダウンロード方法。

Python2.6で以下をqik_download.pyとして保存。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
import urllib2

def get_streamID_for_uri(uri):
        streamID_parser = re.compile(ur'href="http://qik.com/swfs/qikPlayer[0-9]+\\.swf\\?streamID=([0-9a-f]+)', re.M)
        body = urllib2.urlopen(uri).read()
        streamID = streamID_parser.search(body).group(1)
        return streamID

def get_download_uri(video_uri):
        streamID = get_streamID_for_uri(video_uri)
        flv_uri = 'http://qikimg.com/download/%s.flv' % streamID
        return flv_uri

if __name__=='__main__':
        while True:
                video_uri = raw_input('input your qik video URL > ')
                print get_download_uri(video_uri)


こんな感じで使います。
$ python qik_download.py
input your qik video URL > (ここでビデオのURLを入力) http://qik.com/61xxxx/32xxxxx
http://qikimg.com/download/12xxxxxxxxxxxxxxxxfae.flv
input your qik video URL > ^C (終了)


出力されたURLをブラウザなどで開いて保存します。

[1] http://qik.com/]]></content:encoded>
			<wfw:commentRss>http://nanabit.net/blog/2010/04/18/downloading-qik-videos/feed/</wfw:commentRss>
		</item>
		<item>
		<title>クリップボードから各種検索 ClipDic v1.1.0 文字数カウント機能 [ソフトウェア,C#,.NET Framework]</title>
		<link>http://nanabit.net/blog/2010/03/14/clipdic-110/</link>
		<comments>http://nanabit.net/blog/2010/03/14/clipdic-110/#comments</comments>
		 <pubDate>Sun, 14 Mar 2010 17:28:31 +0900</pubDate>
		<dc:creator>7bit</dc:creator>
		
		<category><![CDATA[ソフトウェア]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[.NET Framework]]></category>

		<guid isPermaLink="false">http://nanabit.net/blog/2010/03/14/clipdic-110/</guid>
		<description><![CDATA[クリップボードを監視し、コピーされた語句で検索・バルーン表示するClipDic v1.1.0を公開しました。
.NET Framework 3.5以上が必要です。
今回のアップデートでクリップボードの...]]></description>
			<content:encoded><![CDATA[クリップボードを監視し、コピーされた語句で検索・バルーン表示するClipDic [1] v1.1.0を公開しました。
.NET Framework 3.5以上が必要です。

今回のアップデートでクリップボードの行数、文字数、単語数をカウントする機能を追加しました。文字数制限を確認しながら就活のES書く際などに便利です。



[1] http://nanabit.net/blog/softwares/clipdic]]></content:encoded>
			<wfw:commentRss>http://nanabit.net/blog/2010/03/14/clipdic-110/feed/</wfw:commentRss>
		</item>
		<item>
		<title>任意のコマンドでCtrl-Cされたら本当に終了して良いか尋ねるようにする [ソフトウェア,Linux]</title>
		<link>http://nanabit.net/blog/2010/02/11/nosig-100/</link>
		<comments>http://nanabit.net/blog/2010/02/11/nosig-100/#comments</comments>
		 <pubDate>Thu, 11 Feb 2010 07:13:38 +0900</pubDate>
		<dc:creator>7bit</dc:creator>
		
		<category><![CDATA[ソフトウェア]]></category>

		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://nanabit.net/blog/2010/02/11/nosig-100/</guid>
		<description><![CDATA[前回、シェルスクリプトでsourceすることでCtrl-C (SIGINT)等をキャッチして本当に終了するか尋ねるスクリプトを公開しました。
今回は任意のコマンド実行時に同様の仕掛けを組み込むプログラ...]]></description>
			<content:encoded><![CDATA[前回、シェルスクリプトでsourceすることでCtrl-C (SIGINT)等をキャッチして本当に終了するか尋ねるスクリプトを公開しました。

今回は任意のコマンド実行時に同様の仕掛けを組み込むプログラムnosigを公開します。

nosigをインストールすることで、今まで
$ yourprogram arg1 arg2
としていたコマンドを
$ nosig yourprogram arg1 arg2
とするだけで、Ctr-C等をトラップし、本当に終了して良いか確認するようになります。

実行に何日もかかるようなプログラムを走らせる際などに安心です。

nosigは指定したコマンド以下の全ての子プロセスにこの機構をロードしますが、用途によっては一番上のプロセスだけにロードしたい場合もあるかもしれません。
そのような場合にはnosigの変わりにnosigparentonlyを使ってください。

実行例
$ nosig sleep 20
Signal 2 caught. Are you sure to quit? [y/n] n
continue..
Signal 2 caught. Are you sure to quit? [y/n] y
quit.


ダウンロード・インストール
ダウンロード: nosig-1.0.0.tar.gz [1]

インストールは
$ make
$ sudo make install
アンインストールは
$ sudo make uninstall
とします。



[1] http://nanabit.net/blog/x/dl/dl.php?dl=nosig-1.0.0.tar.gz]]></content:encoded>
			<wfw:commentRss>http://nanabit.net/blog/2010/02/11/nosig-100/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ctrl-Cされたら本当に終了して良いか尋ねるシェルスクリプト [Linux,shell]</title>
		<link>http://nanabit.net/blog/2010/01/25/bash-confirm-quit-sigint/</link>
		<comments>http://nanabit.net/blog/2010/01/25/bash-confirm-quit-sigint/#comments</comments>
		 <pubDate>Mon, 25 Jan 2010 04:18:25 +0900</pubDate>
		<dc:creator>7bit</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://nanabit.net/blog/2010/01/25/bash-confirm-quit-sigint/</guid>
		<description><![CDATA[長い作業をしているシェルスクリプトをうっかりCtrl-Cしてしまって悲しい思いをすることはよくあります。
簡単な対処法としてSIGINTを無視するtrap '' 2をスクリプトに加えるというものがあり...]]></description>
			<content:encoded><![CDATA[長い作業をしているシェルスクリプトをうっかりCtrl-Cしてしまって悲しい思いをすることはよくあります。

簡単な対処法としてSIGINTを無視するtrap '' 2をスクリプトに加えるというものがありますが、
常に無視されるというのも本当に終了させたいときに手間なものです。(Ctrl-Zでサスペンドしてkill -9など)

そこで、一度Ctrl-Cを押すと本当に終了して良いか質問した上で終了/続行するスクリプトを使ってみます。
(1/26 複数のシグナルを指定すると狂うバグがあったので修正しました)

以下、sigconfirm.sh
[code]
#!/bin/bash

# trap handler
function traphandler() {
  # disable SIG* inside this handler
  trap '' $@
  echo -n "Are you sure to quit? [y/n] "
  read c
  if [ "${c/Y/y}x" == 'yx' ]; then echo 'quit'; exit 1; fi
  echo 'continue.'
  trap "traphandler $*" $@
}

# register trap handler for SIG*
trap "traphandler $*" $@
[/code]

これを自分のスクリプトでsourceすると、
[code]
#!/bin/bash

source sigconfirm.sh 2

while :; do echo ':'; sleep 1; done
[/code]
(引数2は補足するシグナルの種類。source sigconfirm.h 1 2 3 15 のように複数指定できます)

以下のようになります。
[code]
$ ./testsigconfirm.sh
:
:
^CAre you sure to quit? [y/n] n
:
:
^CAre you sure to quit? [y/n] y
$
[/code]

普通にtrapした場合、trap内部の処理中にまたCtrl-Cが押されると終了してしまうのですが、ここではハンドラの内部ではSIGINTを無視するように設定しているため、Ctrl-Cをうっかり連打してしまっても落としてしまうことがありません。]]></content:encoded>
			<wfw:commentRss>http://nanabit.net/blog/2010/01/25/bash-confirm-quit-sigint/feed/</wfw:commentRss>
		</item>
		<item>
		<title>zsh 1キーでYYYYmmdd挿入 [Linux,shell]</title>
		<link>http://nanabit.net/blog/2009/11/29/insert-date-on-single-key/</link>
		<comments>http://nanabit.net/blog/2009/11/29/insert-date-on-single-key/#comments</comments>
		 <pubDate>Sun, 29 Nov 2009 15:19:18 +0900</pubDate>
		<dc:creator>7bit</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://nanabit.net/blog/2009/11/29/insert-date-on-single-key/</guid>
		<description><![CDATA[シェルを使っているとテンポラリのディレクトリやバックアップ用tar.gzの作成などで日付を入力したくなることがあります。
一々時計を見て入力するのは面倒で非効率。ここは自動的に入力させたい。
そしてz...]]></description>
			<content:encoded><![CDATA[シェルを使っているとテンポラリのディレクトリやバックアップ用tar.gzの作成などで日付を入力したくなることがあります。

一々時計を見て入力するのは面倒で非効率。ここは自動的に入力させたい。
そしてzshの強力な履歴補完を考えると、日付文字列そのままを挿入するより、
$(date +%Y%m%d)
を入れてくれた方が再利用できて助かります。

以下の数行を.zshrcにコピペしましょう。F5でYYYYmmddに展開されるdateコマンド置換が挿入されます。

# insert `date` for YYYYMMDD on F5
function insert_date {
  LBUFFER=$LBUFFER'$(date +%Y%m%d)'
}
zle -N insert_date
bindkey '^[[15~' insert_date


zshでファンクションキーをbindkeyする方法が分からなくて困りましたが、普通にシェル上でC-V F5と押せば^[[15~とでたので、それを使ってみました。]]></content:encoded>
			<wfw:commentRss>http://nanabit.net/blog/2009/11/29/insert-date-on-single-key/feed/</wfw:commentRss>
		</item>
		<item>
		<title>vimで最初の非コメント行に移動 [Vim]</title>
		<link>http://nanabit.net/blog/2009/11/22/vim-goto-first-effective-line/</link>
		<comments>http://nanabit.net/blog/2009/11/22/vim-goto-first-effective-line/#comments</comments>
		 <pubDate>Sun, 22 Nov 2009 07:47:19 +0900</pubDate>
		<dc:creator>7bit</dc:creator>
		
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://nanabit.net/blog/2009/11/22/vim-goto-first-effective-line/</guid>
		<description><![CDATA[長らく更新をさぼっていました。忙しい…
久しぶりに.vimrcに手を加えたので、その話です。
vimでは頻繁に先頭に移動するggコマンドを使います。しかし、ちょっとまともな(?)ソースコードなどは先頭...]]></description>
			<content:encoded><![CDATA[長らく更新をさぼっていました。忙しい…
久しぶりに.vimrcに手を加えたので、その話です。

vimでは頻繁に先頭に移動するggコマンドを使います。しかし、ちょっとまともな(?)ソースコードなどは先頭に大量のコメントがついていて、ggだけではコードの一片も見えず、さらに&#60;C-F&#62;を連打…ということをしがちです。

連打… これはvimmerとして敏感になるワードです。もっと効率よく、本来の目的である「最初の非コメント行」にたどり着けるはず。

そこで、早速ちょっとした関数を書いてみました。

[code]
function! GotoFirstEffectiveLine()
  normal gg
  while line(".")]]></content:encoded>
			<wfw:commentRss>http://nanabit.net/blog/2009/11/22/vim-goto-first-effective-line/feed/</wfw:commentRss>
		</item>
		<item>
		<title>WiiリモコンでSongbirdをコントロール [Python,ソフトウェア,Linux]</title>
		<link>http://nanabit.net/blog/2009/09/08/wiimote-songbird/</link>
		<comments>http://nanabit.net/blog/2009/09/08/wiimote-songbird/#comments</comments>
		 <pubDate>Tue, 08 Sep 2009 00:35:07 +0900</pubDate>
		<dc:creator>7bit</dc:creator>
		
		<category><![CDATA[Python]]></category>

		<category><![CDATA[ソフトウェア]]></category>

		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://nanabit.net/blog/2009/09/08/wiimote-songbird/</guid>
		<description><![CDATA[
LinuxのWiiリモコン(Wiimote)用ライブラリ、CWiidを用いて、音楽プレーヤSongbirdをコントロールするスクリプトを書いてみました。

操作方法
操作はきわめて単純です。
pyt...]]></description>
			<content:encoded><![CDATA[
LinuxのWiiリモコン(Wiimote)用ライブラリ、CWiid [1]を用いて、音楽プレーヤSongbird [2]をコントロールするスクリプトを書いてみました。

操作方法
操作はきわめて単純です。
python wiimote-songbird-*.py
とすると監視プログラムがforkされるので、あとは1+2同時押しで接続し、適当にボタンを押して操作するだけ。電源ボタンを長押し(4秒くらい？)で切断し、再び接続待ちに入ります。


ボタンと動作の対応表

キー動作
上/下音量 +/-
左/右次の曲/前の曲
B再生・停止トグル



スクリプトのダウンロードはこちらから: wiimote-songbird-20090907.py [3]
MIT Licence. Python 2.5.2, CWiid 0.6.00で動作確認しています。


[1] http://abstrakraft.org/cwiid/
[2] http://getsongbird.com/
[3] http://nanabit.net/blog/x/dl/dl.php?dl=wiimote-songbird-20090907.py]]></content:encoded>
			<wfw:commentRss>http://nanabit.net/blog/2009/09/08/wiimote-songbird/feed/</wfw:commentRss>
		</item>
		<item>
		<title>vimでファイル作成時にテンプレートを選択 qtmplsel.vim 1.1.0 [Vim]</title>
		<link>http://nanabit.net/blog/2009/09/07/qtmplselvim-110/</link>
		<comments>http://nanabit.net/blog/2009/09/07/qtmplselvim-110/#comments</comments>
		 <pubDate>Mon, 07 Sep 2009 14:21:07 +0900</pubDate>
		<dc:creator>7bit</dc:creator>
		
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://nanabit.net/blog/2009/09/07/qtmplselvim-110/</guid>
		<description><![CDATA[~/.vim/template にあるテンプレートを(複数あればリストアップし)ロードするか否か選択できるプラグイン、qtmplsel.vimに式展開機能を追加し、v1.1.0として公開しました。

...]]></description>
			<content:encoded><![CDATA[~/.vim/template にあるテンプレートを(複数あればリストアップし)ロードするか否か選択できるプラグイン、qtmplsel.vim [1]に式展開機能を追加し、v1.1.0として公開しました。


式展開
テンプレートファイルに含まれる@{@～@}@で囲まれた部分をvimの式として評価し、置換します。
例えば、
// \\file @{@expand('%:t')@}@
// \\date @{@strftime('%Y-%m-%d')@}@
class @{@expand('%:t:r')@}@ {
};

のようなcpp用テンプレートをtestclass.cppの作成時に適用すると、以下のように展開されます。
// \\file testclass.cpp
// \\date 2009-09-07
class testclass {
};



入手方法
http://www.vim.org/scripts/script.php?script_id=2761 [2]から最新版をダウンロードし、~/.vim/pluginか$VIMRUNTIME/pluginに置いてください。



なお、1.0.0の説明はこちらにあります: vimでファイル作成時にテンプレートを選択 qtmplsel.vim [3]


[1] http://www.vim.org/scripts/script.php?script_id=2761
[2] http://www.vim.org/scripts/script.php?script_id=2761
[3] http://nanabit.net/blog/2009/08/30/qtmplselvim-100/]]></content:encoded>
			<wfw:commentRss>http://nanabit.net/blog/2009/09/07/qtmplselvim-110/feed/</wfw:commentRss>
		</item>
		<item>
		<title>vimでファイル作成時にテンプレートを選択 qtmplsel.vim [ソフトウェア,Linux,Vim]</title>
		<link>http://nanabit.net/blog/2009/08/30/qtmplselvim-100/</link>
		<comments>http://nanabit.net/blog/2009/08/30/qtmplselvim-100/#comments</comments>
		 <pubDate>Sun, 30 Aug 2009 00:20:09 +0900</pubDate>
		<dc:creator>7bit</dc:creator>
		
		<category><![CDATA[ソフトウェア]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://nanabit.net/blog/2009/08/30/qtmplselvim-100/</guid>
		<description><![CDATA[
vimでファイルを新規作成する際、ファイルタイプに応じてテンプレート(orスケルトン)を自動的にロードするためには、.vimrcに以下のような設定を加えることが多いと思います。
autocmd Bu...]]></description>
			<content:encoded><![CDATA[
vimでファイルを新規作成する際、ファイルタイプに応じてテンプレート(orスケルトン)を自動的にロードするためには、.vimrcに以下のような設定を加えることが多いと思います。
autocmd BufNewFile *.py 0r ~/.vim/template/template.py

しかし、決まり切った内容を拡張子ごとに用意するのも芸がなく、
またテンプレートを使いたくない場合や、複数のテンプレートから選びたい場合に対応できません。

そこで、~/.vim/template にあるテンプレートを(複数あればリストアップし)
ロードするか否か選択できるプラグイン、qtmplsel.vimを書いてみました。


インストール

qtmplsel.vim - Quick Template Selector : vim online [1] から最新版をダウンロード
ダウンロードしたスクリプトを $VIMRUNTIME/plugin か ~/.vim/plugin に入れます。


使い方

:e コマンドや vim の起動時に存在しないファイル名を入力して新規作成すると、

ファイルタイプft=pythonなら サーチパス/python_*
拡張子*.pyなら サーチパス/*.py
ファイル名ファイル名=Makefile なら サーチパス/Makefile_*

に該当するテンプレートを ~/.vim/template から列挙し、一つ以上該当するものがあればリストを表示します。

リスト上では k(上) / j(下) で項目を選択し、 Enter で決定、 q でキャンセル(ロードしない)となります。

また、グローバル変数g:qts_templatedirを設定することで、任意の場所をテンプレートファイルのサーチパスに設定することができます。


使用例


リスト表示部分などQuickBufを参考にしました。

[1] http://www.vim.org/scripts/script.php?script_id=2761]]></content:encoded>
			<wfw:commentRss>http://nanabit.net/blog/2009/08/30/qtmplselvim-100/feed/</wfw:commentRss>
		</item>
		<item>
		<title>mp3のタグからCUEの曲名などを設定するmp3tocue.py [Python,ソフトウェア]</title>
		<link>http://nanabit.net/blog/2009/08/26/mp3tocue-011/</link>
		<comments>http://nanabit.net/blog/2009/08/26/mp3tocue-011/#comments</comments>
		 <pubDate>Wed, 26 Aug 2009 17:46:58 +0900</pubDate>
		<dc:creator>7bit</dc:creator>
		
		<category><![CDATA[Python]]></category>

		<category><![CDATA[ソフトウェア]]></category>

		<guid isPermaLink="false">http://nanabit.net/blog/2009/08/26/mp3tocue-011/</guid>
		<description><![CDATA[ExactAudioCopy等でCDをリッピングする際、freedbに曲情報がないとCUEのタイトルなどが空欄になってしまいます。
その後mp3に変換した後で曲名などを設定しても、元のCUEにもそれを...]]></description>
			<content:encoded><![CDATA[ExactAudioCopy等でCDをリッピングする際、freedbに曲情報がないとCUEのタイトルなどが空欄になってしまいます。

その後mp3に変換した後で曲名などを設定しても、元のCUEにもそれを反映させるのは結構面倒です。

mp3tocue.py は、「タグ設定済みのmp3」から「対応するタグなし/不完全なCUE」にTITLEとPERFORMER情報をコピーするためのPythonスクリプトです。

mp3tocue-0.1.1.zip をダウンロード [1]

python mp3tocue.py -t -e utf-8 -i CDImage.cue --in-place C:\\Music\\test\\*.mp3
のようにすると、*.mp3のタグを読み出し、トラック番号順に並べ(-tオプション)、UTF-8で(-eオプション)、CDImage.cue を更新します。

-tを指定しなければ入力mp3を指定した順に、-eを指定しなければエンコーディングは元々のCUEのエンコーディングと同じになります。

※トラック長はCUE中のものを流用する必要があり、一からCUEを作り出すことはできません。あくまで曲/奏者情報の書き換えに特化しています。


[1] http://nanabit.net/blog/x/dl/dl.php?dl=mp3tocue-0.1.1.zip]]></content:encoded>
			<wfw:commentRss>http://nanabit.net/blog/2009/08/26/mp3tocue-011/feed/</wfw:commentRss>
		</item>
		<item>
		<title>vimでレジスタで置換するオペレータ regreplop.vim [Vim]</title>
		<link>http://nanabit.net/blog/2009/08/10/regreplop-vim/</link>
		<comments>http://nanabit.net/blog/2009/08/10/regreplop-vim/#comments</comments>
		 <pubDate>Mon, 10 Aug 2009 07:09:38 +0900</pubDate>
		<dc:creator>7bit</dc:creator>
		
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://nanabit.net/blog/2009/08/10/regreplop-vim/</guid>
		<description><![CDATA[vimで{モーション}で指定された範囲を、レジスタ(デフォルト&#8221;、指定も可能)で置き換えるオペレータ&#60;C-K&#62;を提供するプラグイン、
regreplop.vimの説明を書き...]]></description>
			<content:encoded><![CDATA[vimで{モーション}で指定された範囲を、レジスタ(デフォルト"、指定も可能)で置き換えるオペレータ&#60;C-K&#62;を提供するプラグイン、
regreplop.vim [1]の説明を書きました。
ビジュアル選択中で&#60;C-K&#62;とすると選択範囲が置換されます。

前に直接vim scriptとしてポストしたのとだいたい同じ内容ですが、少し綺麗にしてvim.orgに載せました。

使用例

単語の上で&#60;C-K&#62;iw
単語全体をレジスタ(&#34;)で置換

&#34;ayyした後、他の行で&#34;a&#60;C-K&#62;&#60;C-K&#62;
行全体を、レジスタaにヤンクした行で置換

vWの後にhlで微調整して&#60;C-K&#62;
選択範囲をレジスタ(&#34;)で置換


[1] http://nanabit.net/softwares/vim/regreplop.vim.html]]></content:encoded>
			<wfw:commentRss>http://nanabit.net/blog/2009/08/10/regreplop-vim/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
