2012/11/28


grep の -o オプションを使うとマッチした部分だけ列挙してくれる。
例えば <div>foo</div><div>bar</div>
<div>baz</div>
というテキストファイル foo.txt に対して grep -o "<div[^>]*>[^<]*<\/div>" foo.txt
と実行すると <div>foo</div>
<div>bar</div>
<div>baz</div>
が得られる。これを応用して echo 餃子の王将 | grep -o .
とやると




が得られる。

便利!!
Posted at by



2012/10/11


JekyllGitoliteを連携させたら思いのほか便利だったという話。
以下は CentOS6 でやった履歴。まず jekyll をインストールする。これは rvm じゃなくて後で作る git ユーザから実行可能な物でないといけない(まぁパス通してもいいけど)。
$ yum install git gitweb ruby rubygems
$ gem install jekyll
git ユーザを作る。 $ useradd git
$ passwd git
ssh でログイン出来る様にする。 $ vi /etc/sshd/sshd_config
$ /etc/init.d/sshd restart
※AllowUsers に git を足す
gitolite のインストール。 $ su - git
$ cp /tmp/trusted-key.pub foo.pub
$ git clone https://github.com/sitaramc/gitolite.git
$ `pwd`/gitolite/install -ln
$ gitolite setup -pk foo.pub
※foo はメインで使うユーザ名にしておくと良い
リモートから gitolite-admin で blog を作る。 $ git clone git@server:gitolite-admin
$ cd gitolite-admin
$ vi conf/gitolite.conf
repo gitolite-admin
    RW+     =   mattn

#repo testing
#    RW+     =   @all

repo blog
    RW+     = foo
    R       = gitweb
    config gitweb.owner = foo
    config gitweb.description = blog
$ git commit -a
$ git push origin master
ここでサーバ側に仕掛けを入れる。 $ su - git
$ vi ~/repositories/blog.git/hooks/post-receive
#!/bin/sh

GIT_REPO=$HOME/repositories/blog.git
TMP_GIT_CLONE=$HOME/tmp/blog
PUBLIC_WWW=/var/www/blog

git clone $GIT_REPO $TMP_GIT_CLONE
cd $TMP_GIT_CLONE && jekyll --no-auto $TMP_GIT_CLONE $PUBLIC_WWW
cd ~ && rm -rf $TMP_GIT_CLONE

find $PUBLIC_WWW -type f -print0 | xargs -0 chmod 666
find $PUBLIC_WWW -type d -print0 | xargs -0 chmod 777

exit
またapacheでブログが見れる様にする。 $ su -
$ mkdir /var/www/blog
$ chmod 775 /var/www/blog
$ chown git:git /var/www/blog
$ vi /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/blog" apacheグループから見れる様にする $ usermod -a -G apache git リモートから blog リポジトリをチェックアウト。 $ git clone git@server:blog ここから先は、Jekyllで始める簡単ブログを読んでJekyllを設定して欲しい。
さて、あとは記事を書いてgit addして、コミットそしてプッシュすれば自動的にサーバ側でjekyllが静的コンテンツを生成してくれ、ブログが公開される様になる。

GitHub Pages ぽくなってウマー。
Posted at by



2011/11/10


結構前から自分用に作ってて今まで公開してませんでしたが、CodeReposgithubもある事だし思い切って上げてみました。
mattn/sonydb - GitHub

'sonydb' is a maintenance application for sony network players 'walkman'.

https://github.com/mattn/sonydb
SONY製WalkmanをSonicStage無しに転送するソフトです。

ベースはml_sonyというwinampプラグインで、Linux/Windows用のコマンドラインツールとして移植してあります。
GTKのフロントエンド版としてコンパイルする事もでき、ここあたりから、「Gtk+ Development Environment for Windows」をインストールすれば、Windowsでもコンパイル出来ます。
コマンドラインの場合は
# sonydb songs で曲一覧 # sonydb songsadd /path/to/mp3/music.mp3 で曲転送 # sonydb songsdel 40 で、songsで一覧される際に表示される番号の曲を削除します。

GUI版は、ドラッグアンドドロップでファイルを追加でき、編集画面で曲情報を変更出来ます。
sonydb-gui
「Apply」ボタンを押すと転送開始です。GUI版はまだまだといった所です。私はどっちかっていうと # find /home/mattn/Music/XXX -name "*.mp3" | xargs -n 1 sonydb songsadd 的な使い方しかしてません。

なお、SonicStageで転送したファイルは同じマシンからしか転送出来なくなりますので、既存で既にSonicStageで転送した曲が入っている場合にはこのツールで転送出来ません。
一度、リセットする必要があります。

コンパイルにはid3libが必要で、GUI版のみGTKが必要になります。
Windowsの場合はドライブレターを舐める処理になってますが、Linux版のデバイス自動認識機能はありません。
/media/usbdisk
/media/usbdisk1
をベタで見に行く様になっています。ソースを触れる方は適当に弄って下さい。この辺は今後どうにかする予定です。
またNetMDには対応していません。

幾分Hacking Softwareですので、バイナリを配布する予定はありません。メリットとしては小さいので持ち運べます。Walkmanはメモリディスクとして使えますので、実はコマンドライン版をその中に仕込ませておけば、どこでもSonicStage無しに転送出来たりします。

なお、フリーソフトウェアですのでこのツールで発生した如何なる問題も作者は責任を取る事が出来ません。
また動作報告等頂けると、頑張っちゃう方の人です。

よかったらどうぞ。
Posted at by