<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/ME2.1.3" -->
<rss version="0.92">
<channel>
	<title>7bitlog</title>
	<link>http://nanabit.net/blog</link>
	<description>Programming</description>
	<lastBuildDate>Sun, 11 Jul 2010 17:20:17 +0900</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>ja</language>
	
	<item>
		<title>オンラインで簡単にテキストをQRコード化 [ソフトウェア,JavaScript]</title>
		<description>Android機を買ってPCと連携させる場面が増えてきました。ネット越しにデータをやりとりしてもいいのですが、一過性の物だったり、自分以外の人に提示する必要があったりした場合にはQRコードが便利です。

Google Chart APIを用いると簡単にQRコードが作成できるようなので、ひとつ試しにテキストエリアの文字列をQRコード化するページを作ってみました。

text2QR

テキストをペーストするか、Ctrl+Enterを押すか、3秒経つとQRコード化が行われます。一文字入力するごとにやっても良かったのですが、負荷が掛かりそうなのと、実際は入力→撮影まで時間がかかる筈なので、最後の3秒ルールでなんとかなります。

試しに置いておきますが、将来予告無く仕様やURLやらが変わる可能性があります。

参考:

2009-11-25 - 聴く耳を持たない(片方しか)
QR Codes - Google Chart Tools / Image Charts (aka Chart API) - Google Code
 </description>
		<link>http://nanabit.net/blog/2010/07/12/text-qrize/</link>
			</item>
	<item>
		<title>PukiWikiにjQueryを利用したtextarea自動リサイズautoResizeを組み込む [PHP,ソフトウェア]</title>
		<description>jQueryを利用してHTMLのテキストエリアの高さを行数にあわせて自動調整してくれるプラグイン、autoResizeというものがあります。

jQuery plugin: ‘autoResize’ – James Padolsey

今まで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;
  ...</description>
		<link>http://nanabit.net/blog/2010/06/23/jquery-autoresize-on-pukiwiki/</link>
			</item>
	<item>
		<title>Androidアプリ「発信確認 Call Confirm」がダウンロード出来ない問題について [ソフトウェア,Android]</title>
		<description>特にAndroid1.6のマーケットから、「発信確認 Call Confirm」が見えなくなるという不具合が発生しています。
どうやらBluetoothのパーミッションを要求するアプリは跳ねられるようです。

Android1.6ユーザ(HT-03A, Xperia)の方は、http://nanabit.net/a/bからv1.2.1をダウンロードすることができます。

現状どう対応すべきかわかりませんが、Bluetoothのパーミッションを要求しないバージョンを作るとか、野良apkにリダイレクトするためのアプリを新規登録するか等考えています。 </description>
		<link>http://nanabit.net/blog/2010/06/17/android-call-confirm-not-in-market-16/</link>
			</item>
	<item>
		<title>アンインストール用ショートカット作成「Uninstall Shortcut」 for Android リリース [ソフトウェア,Android]</title>
		<description>Android開発をしていると、自分で作成したアプリをロールバックしたり、テスト用のツールを削除したりと、特定アプリを一旦アンインストールしたくなることがあります。

そこでUninstall Shortcut。

元のアプリのアイコンの左下に炎を象ったバッジをつけたショートカットアイコンを作成します。このアイコンをタップすると、当該アプリのアンインストール画面に飛び、そこから1クリックで削除することができます。

v1.1.0からはアプリ一覧を名前・パッケージ名・インストール(アップデート)日の昇順/降順でソートできるようになりました。


「Uninstall Shortcut」紹介ページ
マーケットで「Uninstall Shortcut」をダウンロード



 </description>
		<link>http://nanabit.net/blog/2010/05/15/uninstall-shortcut-110/</link>
			</item>
	<item>
		<title>誤発信防止アプリ「発信確認 Call Confirm」 for Android リリース [ソフトウェア,Android]</title>
		<description>最近Android機HTC Desireを買って色々遊んでいます。
非常にサクサク動くのは良いのですが、目下の所最大の問題は「電話」がすぐ押せる位置にあって、間違えて電話を掛けてしまいやすいこと。

Androidアプリの習作にコレを防ぐためのものをつくってみました。あらゆる電話発信に割り込んでダイアログを表示し、「発信」「やめる」を確認。
寝ぼけて・酔って・タッチのミスで誤発信をしてしまいそうで怖い方に。コレで枕元にAndroidをおけるようになります。

ダイアログには掛けようとしている番号と、(連絡先に登録があれば)顔写真・名前を表示するため即時の判断が可能です。

海外の方からv1.0.1をHTC Incredibleで使うと連絡先に登録があってもダイアログに名前が表示されないことがある、という連絡を何件か貰っています。じきに修正できる見込みですが、追加情報などあればメールで下さい。


「発信確認 Call Confirm」紹介ページ
マーケットで「発信確認 Call Confirm」をダウンロード


このアプリを機に7bitウェブサイトにもAndroidページを作りました。今後も色々なものを制作する予定なので、たまに覗いてみてください。サイトデザインがAndroidのブラウザからはあまりみやすくないのが問題ですが・・・そちらも時間があれば検討するかもしれません。 </description>
		<link>http://nanabit.net/blog/2010/05/06/android-call-confirm-101/</link>
			</item>
	<item>
		<title>Downloading Qik videos [Python,ソフトウェア,Linux]</title>
		<description>モバイル機器でビデオを撮影しリアルタイムで配信/保存して公開できるサービス、Qikのビデオのダウンロード方法。

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):
  ...</description>
		<link>http://nanabit.net/blog/2010/04/18/downloading-qik-videos/</link>
			</item>
	<item>
		<title>クリップボードから各種検索 ClipDic v1.1.0 文字数カウント機能 [ソフトウェア,C#,.NET Framework]</title>
		<description>クリップボードを監視し、コピーされた語句で検索・バルーン表示するClipDic v1.1.0を公開しました。
.NET Framework 3.5以上が必要です。

今回のアップデートでクリップボードの行数、文字数、単語数をカウントする機能を追加しました。文字数制限を確認しながら就活のES書く際などに便利です。

 </description>
		<link>http://nanabit.net/blog/2010/03/14/clipdic-110/</link>
			</item>
	<item>
		<title>任意のコマンドでCtrl-Cされたら本当に終了して良いか尋ねるようにする [ソフトウェア,Linux]</title>
		<description>前回、シェルスクリプトで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

インストールは
$ make
$ sudo make install
アンインストールは
$ sudo make uninstall
とします。

 </description>
		<link>http://nanabit.net/blog/2010/02/11/nosig-100/</link>
			</item>
	<item>
		<title>Ctrl-Cされたら本当に終了して良いか尋ねるシェルスクリプト [Linux,shell]</title>
		<description>長い作業をしているシェルスクリプトをうっかり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.'
  ...</description>
		<link>http://nanabit.net/blog/2010/01/25/bash-confirm-quit-sigint/</link>
			</item>
	<item>
		<title>zsh 1キーでYYYYmmdd挿入 [Linux,shell]</title>
		<description>シェルを使っているとテンポラリのディレクトリやバックアップ用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~とでたので、それを使ってみました。 </description>
		<link>http://nanabit.net/blog/2009/11/29/insert-date-on-single-key/</link>
			</item>
	<item>
		<title>vimで最初の非コメント行に移動 [Vim]</title>
		<description>長らく更新をさぼっていました。忙しい…
久しぶりに.vimrcに手を加えたので、その話です。

vimでは頻繁に先頭に移動するggコマンドを使います。しかし、ちょっとまともな(?)ソースコードなどは先頭に大量のコメントがついていて、ggだけではコードの一片も見えず、さらに&#60;C-F&#62;を連打…ということをしがちです。

連打… これはvimmerとして敏感になるワードです。もっと効率よく、本来の目的である「最初の非コメント行」にたどり着けるはず。

そこで、早速ちょっとした関数を書いてみました。

[code]
function! GotoFirstEffectiveLine()
  normal gg
  while line(".") </description>
		<link>http://nanabit.net/blog/2009/11/22/vim-goto-first-effective-line/</link>
			</item>
	<item>
		<title>WiiリモコンでSongbirdをコントロール [Python,ソフトウェア,Linux]</title>
		<description>
LinuxのWiiリモコン(Wiimote)用ライブラリ、CWiidを用いて、音楽プレーヤSongbirdをコントロールするスクリプトを書いてみました。

操作方法
操作はきわめて単純です。
python wiimote-songbird-*.py
とすると監視プログラムがforkされるので、あとは1+2同時押しで接続し、適当にボタンを押して操作するだけ。電源ボタンを長押し(4秒くらい？)で切断し、再び接続待ちに入ります。


ボタンと動作の対応表

キー動作
上/下音量 +/-
左/右次の曲/前の曲
B再生・停止トグル



スクリプトのダウンロードはこちらから: wiimote-songbird-20090907.py
MIT Licence. Python 2.5.2, CWiid 0.6.00で動作確認しています。
 </description>
		<link>http://nanabit.net/blog/2009/09/08/wiimote-songbird/</link>
			</item>
	<item>
		<title>vimでファイル作成時にテンプレートを選択 qtmplsel.vim 1.1.0 [Vim]</title>
		<description>~/.vim/template にあるテンプレートを(複数あればリストアップし)ロードするか否か選択できるプラグイン、qtmplsel.vimに式展開機能を追加し、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から最新版をダウンロードし、~/.vim/pluginか$VIMRUNTIME/pluginに置いてください。



なお、1.0.0の説明はこちらにあります: vimでファイル作成時にテンプレートを選択 qtmplsel.vim
 </description>
		<link>http://nanabit.net/blog/2009/09/07/qtmplselvim-110/</link>
			</item>
	<item>
		<title>vimでファイル作成時にテンプレートを選択 qtmplsel.vim [ソフトウェア,Linux,Vim]</title>
		<description>
vimでファイルを新規作成する際、ファイルタイプに応じてテンプレート(orスケルトン)を自動的にロードするためには、.vimrcに以下のような設定を加えることが多いと思います。
autocmd BufNewFile *.py 0r ~/.vim/template/template.py

しかし、決まり切った内容を拡張子ごとに用意するのも芸がなく、
またテンプレートを使いたくない場合や、複数のテンプレートから選びたい場合に対応できません。

そこで、~/.vim/template にあるテンプレートを(複数あればリストアップし)
ロードするか否か選択できるプラグイン、qtmplsel.vimを書いてみました。


インストール

qtmplsel.vim - Quick Template Selector : vim online から最新版をダウンロード
ダウンロードしたスクリプトを $VIMRUNTIME/plugin か ~/.vim/plugin に入れます。


使い方

:e コマンドや vim の起動時に存在しないファイル名を入力して新規作成すると、

ファイルタイプft=pythonなら サーチパス/python_*
拡張子*.pyなら サーチパス/*.py
ファイル名ファイル名=Makefile なら サーチパス/Makefile_*

に該当するテンプレートを ~/.vim/template から列挙し、一つ以上該当するものがあればリストを表示します。

リスト上では k(上) / j(下) で項目を選択し、 Enter で決定、 q でキャンセル(ロードしない)となります。

また、グローバル変数g:qts_templatedirを設定することで、任意の場所をテンプレートファイルのサーチパスに設定することができます。


使用例


リスト表示部分などQuickBufを参考にしました。 </description>
		<link>http://nanabit.net/blog/2009/08/30/qtmplselvim-100/</link>
			</item>
	<item>
		<title>mp3のタグからCUEの曲名などを設定するmp3tocue.py [Python,ソフトウェア]</title>
		<description>ExactAudioCopy等でCDをリッピングする際、freedbに曲情報がないとCUEのタイトルなどが空欄になってしまいます。

その後mp3に変換した後で曲名などを設定しても、元のCUEにもそれを反映させるのは結構面倒です。

mp3tocue.py は、「タグ設定済みのmp3」から「対応するタグなし/不完全なCUE」にTITLEとPERFORMER情報をコピーするためのPythonスクリプトです。

mp3tocue-0.1.1.zip をダウンロード

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を作り出すことはできません。あくまで曲/奏者情報の書き換えに特化しています。
 </description>
		<link>http://nanabit.net/blog/2009/08/26/mp3tocue-011/</link>
			</item>
	<item>
		<title>vimでレジスタで置換するオペレータ regreplop.vim [Vim]</title>
		<description>vimで{モーション}で指定された範囲を、レジスタ(デフォルト"、指定も可能)で置き換えるオペレータ&#60;C-K&#62;を提供するプラグイン、
regreplop.vimの説明を書きました。
ビジュアル選択中で&#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;)で置換
 </description>
		<link>http://nanabit.net/blog/2009/08/10/regreplop-vim/</link>
			</item>
</channel>
</rss>
