2011/12/31
2011/12/30
2011年のふりかえり(予定地)
少しふりかえっておきたい。
で、いい加減働こうとしていたところに声を掛けて頂き、2011/01からスーパーハカーが二人もいるところで働くことになった。 こういうことを言っていたので願ったり。
なのでOutputzの集計がscheme-modeだらけ。
気まずい人が「この人友達じゃね?」って出てきて怖いですね。
画面保護シートはゴリラガラスらしいしいいかなーって。
社会復帰した
2009/10いっぱいで仕事を辞めて2010/12までたっぷりブラブラした。で、いい加減働こうとしていたところに声を掛けて頂き、2011/01からスーパーハカーが二人もいるところで働くことになった。 こういうことを言っていたので願ったり。
27歳になった
誕生日は01/10です。binary dayです。27歳になりました。もうすぐ28歳です。仕事でlisp
仕事でGaucheを使わせてもらいました。(ほぼ通年)なのでOutputzの集計がscheme-modeだらけ。
ぎっくり腰になった(11年ぶり2回目)
やばい。ぎっくり腰やばい。すぐ整体にいってかなりよくなったけど、3日くらいは日常生活もまともに送れなかった。J.P.ホーガンを読みあさった
今は造物主(ライフメーカー)の掟を読んでる。unix/linuxが好きになった
shellコマンドにハマった
プログラムを書いたらとりあえずコマンドにした
客先泊まり込みデスマ
6,7月やばかったウィスキーが好きになる
久し振りにKPFを開催
隔週開催していた9LISPが不定期開催(不本意)
ThinkPad買ってubuntu入れた
筋トレ始めた
facebookに地元の友人/知人がたくさん
最近はスマートフォンの影響かリア充(この単語はもう死んでしまったかも)が大量に流れ込んでるようですね。気まずい人が「この人友達じゃね?」って出てきて怖いですね。
ガラケーからスマートフォンにした
ようやく5年くらい使ったガラケーからスマートフォンに。galaxy s2にしました。Xiじゃないやつ。とりあえずこれを装着した。画面保護シートはゴリラガラスらしいしいいかなーって。
2011年の目標
果たして達成されたのか。
labels :
diary
2011/12/29
2011/12/28
sedでマッチした部分を置換にも使う
何を言ってるかわからねーかもしれねーが、&で
$ for i in {1..10} ; do ; echo "$RANDOM" ; done | sed 's/0/[[&]]/g' 31171 21328 499 1717[[0]] 12253 28374 124[[0]]8 9972 6892 1525最近shellでsed/awkとかワンライナーが楽しくて仕方ない。
2011/12/27
2011/12/26
2011/12/25
2011/12/24
emacs lispのplist
これを見て初めて知りました。
elispにもcl同様にplistがあったんですね。しかも変数/関数とは別にバインドできるアレが。(あ、でもこれはcl packageのお陰なのかな?そこまで調べる気は起きなかったり)
*** Welcome to IELM *** Type (describe-mode) for help. ELISP> (get 'hoge :foo) nil ELISP> (get 'hoge :bar) nil ELISP> (setf (get 'hoge :foo) 100) 100 ELISP> (setf (get 'hoge :bar) 200) 200 ELISP> (get 'hoge :foo) 100 ELISP> (get 'hoge :bar) 200 ELISP> hoge *** Eval error *** Symbol's value as variable is void: hoge ELISP> (setq hoge 'aaaaaaaaaaa) aaaaaaaaaaa ELISP> hoge aaaaaaaaaaa ELISP> (defun hoge (x) x) hoge ELISP> (hoge "hoge") "hoge" ELISP> (hoge "hello, world !!") "hello, world !!" ELISP> (symbol-value 'hoge) aaaaaaaaaaa ELISP> (symbol-function 'hoge) (lambda (x) x) ELISP> (symbol-plist 'hoge) (:foo 100 :bar 200) ELISP> (symbol-name 'hoge) "hoge" ELISP> (symbol-package 'hoge) *** Eval error *** Symbol's function definition is void: symbol-package ELISP>twitterで教えてもらったけど、Common Lispのsymbolって5つもスロットあったのか(笑)変数/関数にplistの3つかと思ってた。その点schemeは良し悪しは別としてすごくシンプル。
labels :
common lisp,
Emacs,
Lisp
2011/12/23
2011/12/22
Re: lispのマクロ定義について
最初の例は動かないんじゃないかなー。取りあえずmacroexpandしたらいいかと。この辺はLOLの評価の梯子(だっけ?)の話がわかりやすかった。
[1]> (defmacro inc! (var)`(setq var (1+ var))) INC! [2]> (let ((x 1))(macroexpand '(inc! x))) (SETQ VAR (1+ VAR)) ; T [3]> (defmacro inc! (var)`(setq ,var (1+ ,var))) INC! [4]> (let ((x 1))(macroexpand '(inc! x))) (SETQ X (1+ X)) ; T [5]>On LispもLOLもせっかくWebで読めるので参考にしてはどうでしょう。 こんなとこでドヤ顔しながら回答しても無意味だけど。
labels :
common lisp,
defmacro
2011/12/21
ubuntuにGauche-gd入れてなかった
というかgdも入ってなかった。
$ sudo apt-get install libgd2-xpm-dev
$ ./configure $ make $ sudo make installしばらく前に仕事でGauche-gd使って画像レンダラコマンドとDSL(振り返るとこれはひどかった・・・)を書いたんだけど、それを自分用に書き直したいなーって思っていたり。あと、当時それらを作るのにGDのことを何もしらなかったのでいろいろサンプルを書いた残骸があるのでブログに書こうと思っていたんだった(忘れてた)。いつか書く(かも)。
2011/12/20
favrand自動更新
2011/12/19
2011/12/18
2011/12/17
bloggerバグってる?
このブログに下記の記事がある。2011年12月の記事。右側のarchiveの2011/12/14と2011/12/13の間に並んでいるので、個別にアクセスすることができる。だけど、ブログ最下部の「前の投稿」から辿ると表示されない。
全ての記事がトップから「前の投稿」まで流れたら表示されるようになった。つまりこの記事を投稿した時点で上記の症状がなくなった。
- vallog: shellで適当な数値セットを作る(while, od, /dev/random, expr)
- vallog: shellで適当にCSVを作る(while, od, /dev/random, shasum, cut, expr)
- vallog: shellで乱数(od, /dev/random, tr)
- vallog: 日付を2進数とか16進数に変換してみるshell script(date, bc)
追記
と、思ったら・・・全ての記事がトップから「前の投稿」まで流れたら表示されるようになった。つまりこの記事を投稿した時点で上記の症状がなくなった。
2011/12/16
2011/12/15
2011/12/14
shellで連番の欠番を探す(awk)
欠番に耳あてしてみる。
そういえば以前同じようなことした。
$ i=10 && while [ $i -ne 0 ] ; do ; od -vAn -N1 -tu4 < /dev/random ; i=`expr $i - 1` ; done | tr -d ' ' | sort -n | uniq > ~/temp/randnums.txt $ cat ~/temp/randnums.txt 1 13 62 64 114 137 210 240 253 $ cat ~/temp/randnums.txt | awk BEGIN{'FS=","}{print $1}' | awk 'BEGIN{pre=0;}{if(pre+1<$1){for(i=pre+1;i<$1;i++){print "*"i"*"}}{print $1}pre=$1;}' | head 1 *2* *3* *4* *5* *6* *7* *8* *9* *10* *11* *12* 13 *14* *15* *16* *17* *18* *19* *20*取りあえずコマンドにしてみる。
$ cat ~/temp/randnums.txt | toothless | head -n 15 2 3 4 5 6 7 8 9 10 11 12 14 15 16 17ソースはこちら
そういえば以前同じようなことした。
おまけ
- ライフゲーム by awk: いつも orz な ふぶき さん
- AWK Users JP :: 日本の AWK ユーザのためのハブサイト
- The GAWK Manual - Table of Contents
基本的にこのページは全て awk で記述していく。awk/sedいいですよねー面白いですよねー。もっとちゃんとやってみたい。
shellで適当な数値セットを作る(while, od, /dev/random, expr)
shellで適当にCSVを作る(while, od, /dev/random, shasum, cut, expr)
こないだも同じようなの書きましたけども
$ i=30;while [ $i -ne 0 ] ; do ; echo `od -vAn -N1 -tu4 < /dev/random`','`head /dev/urandom | shasum | cut -f 1 -d " "` ; i=`expr $i - 1` ;done 143,7ed6cdfacce9c8180f084f11ff40a487fb9b76cc 172,e8868853fbf06a59d54a80af5d326ee923f5c2a5 20,aa6964527830642d0487d8c91ee729acd596d2c6 16,39653698b5f44272b9323175142c6f697b0b56e5 147,58d0a5b4f8ba2b6b232b3d880b012dbc5c8f7003 124,4b29452a6ceed3bc5cbc5646f89b8d059f35142c 77,79d318be8be409b772f5bc084119816e1d8a7b3d 5,830c44e27e2541f5b3cb93dfad07a35121f19d4a 29,e822b1cd62a150c6f33f5db764e2ea4a684e79d2 90,d32f9c0a7b84f2cdd9621ed8a9265cd95a56c263 65,fd244f7b6c689510e4b5ddf12871497c74fdc499 189,1731b1bf3a5376880b36dc95ec1e7f7195648e20 137,79b3c453d5157bd39d27cd5ce543f652f9b3bcaf 28,9ed7b27b2f119e9d5b90807c8eb95871d2b41f9b 45,52e2a699499889ea4f8c6840ab968f8c56fd3811 148,ff29ed9a549e9252e230321d2aa620850aa1f88f 162,baecf2ff043644044b8ed901e70283a645990d4f 169,9b1d410a6a7e1b3babfe4ccbbef0aa769bad9bf7 117,16d548cb175ccf8e992ed69ec1d43940a15bda85 127,ca7533638cd1cb09d774d3515d4298842c912a93 203,80431c1c5296af45c7974d07ae2aea803167a395 5,0488e6326128587a7a0f8fa071120b78752dacbf 102,c3882ba4b20a38f34cb08b96bd7cec22a0cf47a7 161,9efe9a3c9a9f46fc928ef077123dc3ae188f6973 9,cd5c6555c08ddf3a81b8a682b65a7de3adb25cd4 132,7abe72b0e1341a5b4b24b06dcc75fbc2615fa3c7 229,5ee1c7255d38acbe446e8a30bcf6ddcefd8615bb 193,228f6cdab6ae3d276a1b4b543ca39cf93f499a5f 188,f6b215b5202d7342f7c310402dffedaf349fcbce 54,6e2490ea175f1e4ea009e441fccabe08d2d8c0c7
shellで乱数(od, /dev/random, tr)
$RANDOMってのもありますね。
$ od -vAn -N1 -tu4 < /dev/random | tr -d ' '
$ od -vAn -N4 -tu4 < /dev/random | tr -d ' '
日付を2進数とか16進数に変換してみるshell script(date, bc)
最近「入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界」って本を読んでて、シェルスクリプト書いてみてます。
普段は何かやりたいことがあればGaucheで書いています。ですがシェルスクリプトで書いた方が手軽な場合も多々あります。やりたいことがあったときにシェルスクリプトで書くか、お気に入りの言語で書くか、この辺の判断はまだできません。シェルスクリプト書くのが結構楽しいので、もうちっと書きながら勉強してみます。
当初考えていたやりたいことを実現するにはシェルスクリプトで十分でした。が、機能を付け加えていくうちに「Gaucheでやればよかった・・・」という状況になりました。。なぜかというとコードが手続き的でわかりにくくて面倒になったからです。まだシェルスクリプトの作法がわからないこともありますが、文法的に手続き的なコードになりやすい印象を受けます(そりゃそうだろうと思いますが)。手続き的なコードが苦手なのであーあーあーあーあー状態。
で、本題。
date2binという名前を見ればわかるように、日付を2進数に変換してみようと思ったのがきっかけでした。そのうち16進数も、8進数も、CSVにも、といろいろやってるうちに面倒なことに。
今回気づいた面白い日付は3/14とか5/12とかでしょうか(今回のコマンド関係ない)。あとはbinary dayくらいですかね。epochで言えば2012/04/02の11時くらいが1333333333でちょっと面白いですね。他にはもう過ぎ去りましたが
ダサいコードで恥ずかしいですが、どんどん晒していきます。
普段は何かやりたいことがあればGaucheで書いています。ですがシェルスクリプトで書いた方が手軽な場合も多々あります。やりたいことがあったときにシェルスクリプトで書くか、お気に入りの言語で書くか、この辺の判断はまだできません。シェルスクリプト書くのが結構楽しいので、もうちっと書きながら勉強してみます。
当初考えていたやりたいことを実現するにはシェルスクリプトで十分でした。が、機能を付け加えていくうちに「Gaucheでやればよかった・・・」という状況になりました。。なぜかというとコードが手続き的でわかりにくくて面倒になったからです。まだシェルスクリプトの作法がわからないこともありますが、文法的に手続き的なコードになりやすい印象を受けます(そりゃそうだろうと思いますが)。手続き的なコードが苦手なのであーあーあーあーあー状態。
で、本題。
date2binという名前を見ればわかるように、日付を2進数に変換してみようと思ったのがきっかけでした。そのうち16進数も、8進数も、CSVにも、といろいろやってるうちに面倒なことに。
$ date2bin -n3 -------------------- count : 0 +%Y-%m-%d : 2011-12-14 +%s : 1323788400 +%Y%m%d -> bin : 1001100101101111101101110 +%m%d -> bin : 10010111110 +%s -> bin : 1001110111001110110100001110000 +%Y%m%d -> oct : 114557556 +%m%d -> oct : 2276 +%s -> oct : 11671664160 +%Y%m%d -> hex : 132DF6E +%m%d -> hex : 4BE +%s -> hex : 4EE76870 -------------------- count : 1 +%Y-%m-%d : 2011-12-15 +%s : 1323874800 +%Y%m%d -> bin : 1001100101101111101101111 +%m%d -> bin : 10010111111 +%s -> bin : 1001110111010001011100111110000 +%Y%m%d -> oct : 114557557 +%m%d -> oct : 2277 +%s -> oct : 11672134760 +%Y%m%d -> hex : 132DF6F +%m%d -> hex : 4BF +%s -> hex : 4EE8B9F0 -------------------- count : 2 +%Y-%m-%d : 2011-12-16 +%s : 1323961200 +%Y%m%d -> bin : 1001100101101111101110000 +%m%d -> bin : 10011000000 +%s -> bin : 1001110111010100000101101110000 +%Y%m%d -> oct : 114557560 +%m%d -> oct : 2300 +%s -> oct : 11672405560 +%Y%m%d -> hex : 132DF70 +%m%d -> hex : 4C0 +%s -> hex : 4EEA0B70 --------------------
$ date2bin -fn3 count,ymd,epoch,ymd_bin,md_bin,epoch_bin,ymd_oct,md_oct,epoch_oct,ymd_hex,md_hex,epoch_hex 0,2011-12-14,1323788400,1001100101101111101101110,10010111110,1001110111001110110100001110000,114557556,2276,11671664160,132DF6E,4BE,4EE76870 1,2011-12-15,1323874800,1001100101101111101101111,10010111111,1001110111010001011100111110000,114557557,2277,11672134760,132DF6F,4BF,4EE8B9F0 2,2011-12-16,1323961200,1001100101101111101110000,10011000000,1001110111010100000101101110000,114557560,2300,11672405560,132DF70,4C0,4EEA0B70コードはこちら
今回気づいた面白い日付は3/14とか5/12とかでしょうか(今回のコマンド関係ない)。あとはbinary dayくらいですかね。epochで言えば2012/04/02の11時くらいが1333333333でちょっと面白いですね。他にはもう過ぎ去りましたが
$date -d @1234567890 +%Y-%m-%d
$date -d @1111111111 +%Y-%m-%dとかですか。
ダサいコードで恥ずかしいですが、どんどん晒していきます。
blogの更新をtwitterに通知する
以前はfriendfeed経由でやってました。いつからかfriendfeedからの通知ができなくなったのでtwitterfeedから通知するようにしました。twitterfeedの通知は微妙でした。ので、Twitterへの通知はしばらく止めてました。今度はfeedburnerの通知機能を使うことにしました。
ということでテスト。
labels :
diary
2011/12/13
2011/12/12
2011/12/11
1000
このブログ1000記事目だー
昔書いた下書き記事を含めてだけど。
下書きの記事はpure言語を触ってみた結構長めの話だった。
ちょっと振り返ってみる。
このブログは2009/01/01から書いてる。それ以前の記事は前のブログから移行したもの。
(ということは1000記事目じゃないな)
sicpを読むために「もうひとつの Scheme 入門」を読み始めたのが2008/11くらいからだった。(lispを始めたきっかけは同時期にハッカーと画家を読んだからだけど)
だからこのブログもこのありさまなんだ・・・。
そういえばKPFを始めたのも同じ頃。 初めて参加した勉強会というかイベント?(2008/12に福岡であった九州Ruby会議)とTwitterがきっかけ。2008年末にいろいろやったから今があるんだなー(白目
2008年末頃のバイタルは異常。
意識高ぇー(笑) 当時RTなんてなかったんだぜ・・・信じられるか・・・。
昔書いた下書き記事を含めてだけど。
下書きの記事はpure言語を触ってみた結構長めの話だった。
ちょっと振り返ってみる。
このブログは2009/01/01から書いてる。それ以前の記事は前のブログから移行したもの。
(ということは1000記事目じゃないな)
sicpを読むために「もうひとつの Scheme 入門」を読み始めたのが2008/11くらいからだった。(lispを始めたきっかけは同時期にハッカーと画家を読んだからだけど)
だからこのブログもこのありさまなんだ・・・。
そういえばKPFを始めたのも同じ頃。 初めて参加した勉強会というかイベント?(2008/12に福岡であった九州Ruby会議)とTwitterがきっかけ。2008年末にいろいろやったから今があるんだなー(白目
2008年末頃のバイタルは異常。
意識高ぇー(笑) 当時RTなんてなかったんだぜ・・・信じられるか・・・。
labels :
diary
2011/12/10
2011/12/09
2011/12/08
extractコマンド
そんなコマンドはないですが、下記リンクのものをコマンドにしています。
ソースはこちら。こんな感じ。
link先ではaunpackがあるじゃんって話ですね。aunpackも使いますが、上記コマンドはリファレンスにもなるのでこれはこれで便利。
ssh先のディレクトリをtarしてローカルにコピーして展開(ssh, cd, tarしてtar)
dateコマンドで日付の加減算
$ date Thu Dec 8 19:35:07 JST 2011 $ date --date '-100month' Fri Aug 8 19:35:19 JST 2003 $ date --date '-100month' +%Y-%m-%d 2003-08-08 $へぇーへぇー。
2011/12/07
2011/12/06
2011/12/05
2011/12/03
2011/12/02
クリスマスツリーを飾りました。Lispで。
もうすぐクリスマスなのでterminalにクリスマスツリーを飾りました。
Lisp(というかScheme(というかGauche 0.9.1以降))で書きました。
和田先生の去年の記事を参考に・・・。
ソースはこちら。毎度よろしくコマンドにしました。色付けが若干間違ってるのはご愛嬌ということで。
Lisp(というかScheme(というかGauche 0.9.1以降))で書きました。
和田先生の去年の記事を参考に・・・。
$ christmas-tree -size 6 -color
ソースはこちら。毎度よろしくコマンドにしました。色付けが若干間違ってるのはご愛嬌ということで。
lispギャグ
リリカル☆LispとかマンガでわかるLispの中の人が。
LispやSchemeはいつもAdvent Calendarないですねー。
クリスマスネタとか新年ネタ探そ。
クリスマスツリーは去年見かけて、真似して書きかけたのがある。
書き初めは、仕事で書いたgauche製の画像レンダラがあるのでできそう。ってか普通にGauche-gdだけでいいか。
LispやSchemeはいつもAdvent Calendarないですねー。
クリスマスネタとか新年ネタ探そ。
クリスマスツリーは去年見かけて、真似して書きかけたのがある。
書き初めは、仕事で書いたgauche製の画像レンダラがあるのでできそう。ってか普通にGauche-gdだけでいいか。
渾身のlispネタ
- Twitter / @valvallow: 「carってなんですcar?」「cdrらないこと言っ ...
- Twitter / @valvallow: 「目を覚ましてcdrさい…。結consるって言ったじ ...
- Twitter / @valvallow: 君たちはいつもそうだね。ブラウザだエディタだshel ...
- Twitter / @valvallow: スlambdaンク! ...
- Twitter / @valvallow: 「ハッカーと画家」読んでLisp始めたり、有名なプロ ...
labels :
Lisp
2011/12/01
2011/12/01
- txt2re: headache relief for programmers :: regular expression generator
- 守旧派 - Wikipedia
- 特定のプロセスをアクティブにする-2(ShowWindow, SetForegroundWindow) - いろいろ備忘録日記
- 特定のプロセスをアクティブにする-3(ShowWindow, GetForegroundWindow, SetForegroundWindow, GetWindowThreadProcessId, BringWindowToTop, AttachThreadInput, PostMessage, WndProc, 最前面に表示) - いろいろ備忘録日記
- 韓非子 - Wikipedia
- pha語録 - COBOL技術者の憂鬱
2011年11月の筋トレ
10年以上体重に目立った変化がなかったのに今年になって6kg太った。腹がぷにぷにしてきた。思い切って11月から筋トレを始めた。「痩せるには筋肉つけて代謝を上げればいいはず(キリッ」と考えて筋トレ。
取りあえず少ない回数から始めて、「続ける」ことを目標にした。これからも焦らず無理せず続けたい。
目標は半年後に腹筋を割ること。誰かアドバイスたのむ。
目指せガチムチェ・・・
スクワットは途中でやめた。腕立ては楽しく続けている。腹筋はツライ・・・。懸垂したい。
夕食後就寝前に筋トレしてるのでまずいと思う。夕食前にシフトしたい。 身長は171cm。
ちなみに記録は、筋トレ用にCSV記録用のshellスクリプト書いて、集計と表組はawkでやった。
目標は半年後に腹筋を割ること。誰かアドバイスたのむ。
目指せガチムチェ・・・
日時 | 体重 | 腕立て | 腹筋 | スクワット |
---|---|---|---|---|
2011-11-02 | 59.7 | 20 | 20 | 20 |
2011-11-03 | 60.4 | 20 | 20 | 20 |
2011-11-04 | 59.4 | 30 | 30 | 30 |
2011-11-05 | 59.4 | 30 | 30 | 30 |
2011-11-06 | 59.8 | 30 | 30 | 30 |
2011-11-07 | 59.6 | 40 | 0 | 50 |
2011-11-08 | 59.4 | 40 | 10 | 40 |
2011-11-10 | 58.9 | 30 | 5 | 30 |
2011-11-12 | 58.2 | 50 | 50 | 30 |
2011-11-14 | 58.4 | 50 | 20 | 30 |
2011-11-15 | 59.0 | 50 | 20 | 0 |
2011-11-16 | 57.0 | 50 | 30 | 0 |
2011-11-17 | 58.8 | 70 | 30 | 0 |
2011-11-18 | 58.8 | 100 | 50 | 0 |
2011-11-19 | 59.8 | 100 | 50 | 0 |
2011-11-20 | 58.8 | 100 | 50 | 0 |
2011-11-22 | 58.8 | 115 | 50 | 0 |
2011-11-23 | 59.2 | 100 | 50 | 0 |
2011-11-25 | 59.0 | 140 | 50 | 0 |
2011-11-26 | 59.0 | 100 | 50 | 0 |
2011-11-29 | 58.8 | 80 | 30 | 0 |
2011-11-30 | 58.6 | 100 | 50 | 0 |
22/30日 | 平均59kg | 1445 | 725 | 310 |
スクワットは途中でやめた。腕立ては楽しく続けている。腹筋はツライ・・・。懸垂したい。
夕食後就寝前に筋トレしてるのでまずいと思う。夕食前にシフトしたい。 身長は171cm。
ちなみに記録は、筋トレ用にCSV記録用のshellスクリプト書いて、集計と表組はawkでやった。
2011/11/28
プロシュート兄貴
「書いてみたい」…そんな言葉は使う必要がねーんだ。 なぜなら、プログラマや、プログラマの仲間は、 その言葉を頭の中に思い浮かべた時には! 実際にプログラムを書いちまって、もうすでに終わってるからだッ! だから使った事がねェーッ。 オマエもそうなるよなァ~~~、プログラマなら… わかるか?オレの言ってる事…え? 『書いてみた』なら、使ってもいいッ!
これを読んでプロシュート兄貴を思い出したので。
「興味がある」「勉強したい」「作ろうと思ってる」。ぐずぐず言う前(もしくは言った後)に、ハローワールドからでいいから、コードをひとつ書いて公開すればいい。プロシュート兄貴の言う通りにやるのはハードルたけぇーなー。
2011/11/27
terminalから音量調節(ubuntu, amixer)
% amixer set Master 60%ubuntu11.10のunityだとthinkpad x1のキーボードの右側にある音量調節ボタンで調節できた。けど、stumpwmだとmute、unmuteしかできなかったので調べた。
コマンドにしとく。ソースはこちら。
% volume 70
参考
2011/11/26
2011/11/25
2011/11/24
2011/11/23
2011/11/22
twitter client (terminal, shell, cui)
shellから使えるtwitterクライアントを探してた。
と、思ったらutf-8使うにはソース編集してコンパイルし直さないとダメだったのでボツ。
なんかいいのないかなー。
- TTYtter: an interactive console text-based command-line Twitter client and Perl platform (whew!)
- earthquake: Twitter terminal client with streaming API support - The Changelog - Open Source moves fast. Keep up.
- System.Exit – Termtter – ターミナルエミュレータ上で動作する Twitter クライアント
- twidge
と、思ったらutf-8使うにはソース編集してコンパイルし直さないとダメだったのでボツ。
なんかいいのないかなー。
2011/11/21
2011/11/20
シェルスクリプトで適当なcsvを作る
cygwinでwindowsのアプリケーションを実行する
昔きくちゃん先生に書いてもらったヤツ。
で、そのstartってのはこれ。
$ start doc/hoge.pdf # adobe reader でPDFが開くとか
$ start . # explorerが開く
$ start pic/fuga.png # 画像ビューワで画像が開くといった感じ。
で、そのstartってのはこれ。
#!/bin/sh `cygpath -S -u`/cmd /c start `echo "$*" | xargs -n 1 cygpath -w`「それcygstartでできるよ」って言われそうだけど、なぜか会社のPCでcygstartが動かない、
関連
- vallog: cygwin uuid(uuidgen)
- vallog: cygwinもターミナルからパッケージ管理を(apt-cyg)
- vallog: notify-sendでラーメンタイマーというかリマインダ(ubuntuおまけでcygwin+growl for windows)
- vallog: バッテリーの状態を表示するシェルスクリプト(状態、パーセント、残り時間)
git
仕事でもプライベートでも使ってきたけどなかなかちゃんと使いこなせない。
それでもすごく便利。
これ知らんかったなー。
それでもすごく便利。
- 見えないチカラ: 【翻訳】Gitをボトムアップから理解する
- 見えないチカラ: 【翻訳】あなたの知らないGit Tips
- 見えないチカラ: A successful Git branching model を翻訳しました
- Git Cheat Sheets JP
- Gitのブランチで効率的に開発・運用・保守・管理する方法 - (DxD)∞
これ知らんかったなー。
--no-ff フラグは、たとえマージがfast-forwardで実行できるとしても、新しいコミットオブジェクトを作成する。これは、履歴にフィーチャーブランチが存在したという情報を失うの\ を避けるのと、機能の追加に使った全てのコミットをひとまとめにしておける。
追記
labels :
git
.stumpwmrcさらし
labels :
common lisp,
stumpwm
バッテリーの状態を表示するシェルスクリプト(状態、パーセント、残り時間)
[charged|charging|discharging] [parcent] [time]
gnu screenのステータスラインとStumpWMのmode-lineに表示しようかと。
gnu screenのステータスラインとStumpWMのmode-lineに表示しようかと。
$ battery discharging 19% 0:44ソースはこちら。
参考
- バッテリーの残量表示 - みずぴー日記
- Simple script to get battery charge and time remaining... (Page 1) / Community Contributions / Arch Linux Forums
- バッテリーの状態を記録するだけのスクリプト - kamaruのメモその他諸々
2011/11/19
2011/11/18
2011/11/17
gauche-library-directory探訪001:gauche/macroutil.scm
gaucheのライブラリをのぞいて、目についたものを書いていくシリーズ(謎
前回
gauche/macroutil.scm
前回の方法で移動したディレクトリのgaucheディレクトリから。macroutil.scmという目を引くファイルがあったのでのぞいてみた。xmac, xmac1というマクロが定義されていた。$ rlwrap gosh gosh> (gauche-version) "0.9.2" gosh> (use gauche.macroutil) gosh> (xmac (let1 a 1 (print a))) (let ((a 1)) (print a)) gosh> (xmac (xmac (let1 a 1 (print a)))) (unwrap-syntax (%macroexpand (let1 a 1 (print a))))見ての通り%macroexpandマクロの結果がunwrap-syntaxに渡されている。こんなマクロがあったなんて知らなかった。ドキュメントを調べてみたらundocumentedだった。
- Gauche ユーザリファレンス: 5.4 マクロユーティリティ
- Gauche ユーザリファレンス: 5.3 マクロの展開
- vallog: macroexpand %macroexpand unwrap-syntax
- vallog: Scheme マクロのデバッグ4種
labels :
Gauche,
gauche-library-directory,
scheme,
探訪
gauche-library-directory探訪000:はじめに
gaucheのライブラリをのぞいて、目についたものを書いていくシリーズ(謎
ライブラリならドキュメントを見れば済むんだけど、今回はライブラリのソースものぞいてみるということで。
ライブラリならドキュメントを見れば済むんだけど、今回はライブラリのソースものぞいてみるということで。
準備
gaucheにgauche-library-directoryという手続きがある。 こんな感じ。$ rlwrap gosh gosh> (print (gauche-library-directory)) /usr/local/share/gauche-0.9/0.9.2/lib今後しばらくのぞいていくのは上記のディレクトリ。ということでshellで以下のように移動する。
$ cd `echo '(print (gauche-library-directory))' | gosh`まずはどこからのぞくか。次回に続く(?)
labels :
Gauche,
gauche-library-directory,
scheme,
探訪
2011/11/16
最近の雑多なコマンド(gauche)
2011/11/14
2011/11/13
gaucheでgoogleの非公開apiを使って天気を取得するコマンド
某所で掲題のようなgaucheのコードを見かけたのでコマンドにしてみた。
$ ./weather kumamoto kumamoto:2011-11-12 condition:Cloudy temp_f:60 temp_c:15 humidity:Humidity: 77% icon:/ig/images/weather/cloudy.gif wind_condition:Wind: E at 0 mph day_of_week:Sat low:52 high:73 icon:/ig/images/weather/mostly_sunny.gif condition:Partly Sunny day_of_week:Sun low:46 high:70 icon:/ig/images/weather/mostly_sunny.gif condition:Mostly Sunny day_of_week:Mon low:37 high:63 icon:/ig/images/weather/sunny.gif condition:Clear day_of_week:Tue low:41 high:64 icon:/ig/images/weather/sunny.gif condition:Clear
$ ./weather -j kumamoto {"date":"2011-11-12","current":{"condition":"Cloudy","temp_f":"60","temp_c":"15","humidity":"Humidity: 77%","icon":"/ig/images/weather/cloudy.gif","wind_condition":"Wind: E at 0 mph"},"in_the_future":[{"day_of_week":"Sat","low":"52","high":"73","icon":"/ig/images/weather/mostly_sunny.gif","condition":"Partly Sunny"},{"day_of_week":"Sun","low":"46","high":"70","icon":"/ig/images/weather/mostly_sunny.gif","condition":"Mostly Sunny"},{"day_of_week":"Mon","low":"37","high":"63","icon":"/ig/images/weather/sunny.gif","condition":"Clear"},{"day_of_week":"Tue","low":"41","high":"64","icon":"/ig/images/weather/sunny.gif","condition":"Clear"}]}#ソースはこちら。%
関連
- vallog: gaucheのtext.progressとtputコマンド(コマンド?)
- vallog: 最近の雑多なコマンド(gauche)
- vallog: gaucheで「プログラマに半角全角の入り乱れた英数字を見せ続けると死ぬ。」コマンド
2011/11/12
冠婚葬祭のひみつ
先日、未来の二つの顔 (創元SF文庫)を読み終わったので、母親から借りている本10冊くらいの中から適当に見繕って読んでいた。ここ数日風邪でダウンしていたので本を消化していたわけです。
で、その中に掲題の本があった。 これ面白い(笑)母親からも「これ面白いから読んでみ」ってことだった。まだ読み終わったわけではないけど頭っから掴みはOK。「へぇーへぇー」状態。
冒頭は結婚式についての話から入るんだけど、神前式のルーツは意外に新しくて明治33年に行われた、後の大正天皇の結婚式からというお話。当時は日清戦争と日露戦争の間の年で、国としては「神の国」のイメージを固め、富国強兵を推し進めたいという背景からだそう。
かといって、神前式の前は仏前式だったかというとそうでもなく、そもそも仏教的には開祖が妻帯者(親鸞)だった浄土真宗以外は出家者の結婚なんてもっての外だったらしい。なるほど。僧侶の妻帯が認められたのは明治以降だという。なんと仏前式の歴史もそうとう短いぞ。
じゃあ、寺は葬式だけやってたのか?というとそうではなく、江戸時代以前の寺は「葬式?んなもん在家にやらしときゃいんだよ」というスタンスだったらしく、葬式にも大して関わっていなかったんだって。(じゃあ何してたの?)
江戸時代以前は僧侶もフリーランスが多かったらしい。江戸時代に入ってからキリシタンの取締が強化され、寺が周辺住民の管理を行う役所みたいな役割を担うようになる。どこそこの誰々は○○寺の門徒(つまりキリシタンではないことの証明)、というような住民台帳ようなもの(宗門人別帳)の管理をするようになった。
で、これ以降、寺が葬式に関わるようになる。地域の寺にはそれぞれ本寺(本家的なもの)があり、定期的に上納金を払わないといけないわけ。で、地域の寺はどこからそのお金を集めるかというと、自分たちの下のヒエラルキーに位置する門徒。建前として仏壇や位牌や戒名という制度ができて、葬式と定期的な先祖供養を寺が行うんだから手数料と謝礼払うのは当然だよね?仏壇も買うよね?戒名ないとあの世でどんな目に合うかわかってる?という搾取システムができあがったんだと。面白ぇー。
これが冒頭。
以前から結婚式や葬式に対してモヤモヤした感覚があった。
新郎新婦ですらよく知らない、政治的な理由で出席しているどこの誰かわからない社会的地位だけは高い小汚いおっさんの超絶つまらん話をえんえん聞かされ、出席者の中に友人が少ないなーと思って聞いてみるとこれまた新郎新婦本人たちとは直接関係のないところの事情でわけのわからん老人たちがたくさん出席するため友人の招待を減らしたとかいう誰のためかわからない結婚式。
葬式は葬式で、「故人とはそんなに交流なかったけど、こないといけない気がした」みたいなアホ面下げた参列者がたくさんいる通夜。談笑ばかりしてたいして悲しそうでもない葬儀参列者。なんだんだ?と思っていたので、結婚式はともかく、葬式は本心から「故人に最後のお別れをしたい」と思える人の葬儀にだけ出席するようにしていた。それも最近は少し考えが変わって、行けば遺族が喜んでくれそうな場合は行くようにしようかなーと思うようになった。
話がそれた気がした。この本は、そういった感覚に何か裏付けを与えてくれそうな気がしたという話。
で、その中に掲題の本があった。 これ面白い(笑)母親からも「これ面白いから読んでみ」ってことだった。まだ読み終わったわけではないけど頭っから掴みはOK。「へぇーへぇー」状態。
冒頭は結婚式についての話から入るんだけど、神前式のルーツは意外に新しくて明治33年に行われた、後の大正天皇の結婚式からというお話。当時は日清戦争と日露戦争の間の年で、国としては「神の国」のイメージを固め、富国強兵を推し進めたいという背景からだそう。
かといって、神前式の前は仏前式だったかというとそうでもなく、そもそも仏教的には開祖が妻帯者(親鸞)だった浄土真宗以外は出家者の結婚なんてもっての外だったらしい。なるほど。僧侶の妻帯が認められたのは明治以降だという。なんと仏前式の歴史もそうとう短いぞ。
じゃあ、寺は葬式だけやってたのか?というとそうではなく、江戸時代以前の寺は「葬式?んなもん在家にやらしときゃいんだよ」というスタンスだったらしく、葬式にも大して関わっていなかったんだって。(じゃあ何してたの?)
江戸時代以前は僧侶もフリーランスが多かったらしい。江戸時代に入ってからキリシタンの取締が強化され、寺が周辺住民の管理を行う役所みたいな役割を担うようになる。どこそこの誰々は○○寺の門徒(つまりキリシタンではないことの証明)、というような住民台帳ようなもの(宗門人別帳)の管理をするようになった。
で、これ以降、寺が葬式に関わるようになる。地域の寺にはそれぞれ本寺(本家的なもの)があり、定期的に上納金を払わないといけないわけ。で、地域の寺はどこからそのお金を集めるかというと、自分たちの下のヒエラルキーに位置する門徒。建前として仏壇や位牌や戒名という制度ができて、葬式と定期的な先祖供養を寺が行うんだから手数料と謝礼払うのは当然だよね?仏壇も買うよね?戒名ないとあの世でどんな目に合うかわかってる?という搾取システムができあがったんだと。面白ぇー。
これが冒頭。
以前から結婚式や葬式に対してモヤモヤした感覚があった。
新郎新婦ですらよく知らない、政治的な理由で出席しているどこの誰かわからない社会的地位だけは高い小汚いおっさんの超絶つまらん話をえんえん聞かされ、出席者の中に友人が少ないなーと思って聞いてみるとこれまた新郎新婦本人たちとは直接関係のないところの事情でわけのわからん老人たちがたくさん出席するため友人の招待を減らしたとかいう誰のためかわからない結婚式。
葬式は葬式で、「故人とはそんなに交流なかったけど、こないといけない気がした」みたいなアホ面下げた参列者がたくさんいる通夜。談笑ばかりしてたいして悲しそうでもない葬儀参列者。なんだんだ?と思っていたので、結婚式はともかく、葬式は本心から「故人に最後のお別れをしたい」と思える人の葬儀にだけ出席するようにしていた。それも最近は少し考えが変わって、行けば遺族が喜んでくれそうな場合は行くようにしようかなーと思うようになった。
話がそれた気がした。この本は、そういった感覚に何か裏付けを与えてくれそうな気がしたという話。
目次
- 第1章 冠婚葬祭の百年
- 明治の家と冠婚葬祭
- 昭和の結婚と優生思想
- 「冠婚葬祭入門」とその時代
- 少婚多死の時代を迎えて
- 第2章 いまどきの結婚
- 今日的ウェディング狂想曲
- 結婚式に招待されたら
- 多様化する結婚の形
- 変容する通過儀礼
- 第3章 葬送のこれから
- 現代葬儀の基礎知識
- 死の準備はどこまで必要か
- 身近な人の死に際して
- 遺骨のゆくえ
- もっと知りたい人のためのブックガイド
関連
そういえば読み終わってから感想書いてなかった。すごくおもしろかったので書こう。
labels :
Book
2011/11/10
2011/11/09
パインアメ1kgパック
わさおに教えてもらった。光速でポチった。
ちょっとしたクッションくらいの大きさ。
実用 Common Lisp よりデカくて分厚い。
こっちの方がお得みたいだけど。
ちょっとしたクッションくらいの大きさ。
実用 Common Lisp よりデカくて分厚い。
こっちの方がお得みたいだけど。
追記
もっとわかりやすい比較にしてみた。
labels :
diary
gaucheのtext.progressとtputコマンド(コマンド?)
gaucheにtext.progressなるモジュールがあることを知ったので、早速サンプルを動かしてみました。
ふと疑問に思ったのが、こういうことやる時ってcursesってヤツがいるんじゃないの?ってこと。ソース見てみたら、CRで行頭復帰してるだけだった。ウロコー!
こんな感じ。
Gauche-cursesとかGauche-ncursesはないかとググったら、メンテされてなさそうなのがひっかかった。ついでにChicken Schemeのeggを調べたらncursesがあった。あとで試してみよう。
で、curses拡張がないならどうしたらいいのか?調べてみたらtputなんてものがあるんですね。
試しにやってみたらこんな感じ。topコマンドを実行したときみたいな。
こりゃ便利だなーということで、以前作ったライフゲームをコマンドにしてみた。
ふと疑問に思ったのが、こういうことやる時ってcursesってヤツがいるんじゃないの?ってこと。ソース見てみたら、CRで行頭復帰してるだけだった。ウロコー!
こんな感じ。
#!/usr/local/bin/gosh (use srfi-1) (for-each (^i (format (current-output-port) "~a\r" i) (flush) (sys-select #f #f #f 50000)) (iota 256))
Gauche-cursesとかGauche-ncursesはないかとググったら、メンテされてなさそうなのがひっかかった。ついでにChicken Schemeのeggを調べたらncursesがあった。あとで試してみよう。
で、curses拡張がないならどうしたらいいのか?調べてみたらtputなんてものがあるんですね。
試しにやってみたらこんな感じ。topコマンドを実行したときみたいな。
!/usr/local/bin/gosh (use gauche.process) (dynamic-wind (^ _ (run-process '(tput "civis")) (run-process '(tput "clear"))) (^ _(do ((i 0 (+ i 1))) ((= i 256)) (format (current-output-port) "~a\r" (make-list 100 i)) (sys-nanosleep 10000000) (run-process '(tput "cup" 0 0)) (flush) (sys-select #f #f #f 50000))) (^ _ (run-process '(tput "cnorm"))))
こりゃ便利だなーということで、以前作ったライフゲームをコマンドにしてみた。
$ ./lifegame2.scm -s 100 -w 30
2011/11/08
2011/11/07
2011/11/05
Linuxでterminalからguiを自動操作(automation)
こういうものがあった。
先日C#で作ってKPFで紹介した「windowを制御するdsl」と同じだ・・・。というかもっとちゃんとしてる。。
試しに無限にクリックし続けるshell script書いて、Love Languages?で試してみたり。
#!/bin/sh while : do xte 'mouseclick 1' sleep 0.3 done
ておくlet
defmacro
syntax-rules
(define-macro (teoku-let binds . body) `(let ,(map (lambda (ls) (cons (car ls)'("ておくれ"))) binds) ,@body)) (teoku-let ((wasao 68) (gentoo 'linux) (kumamoto "熊本")) (print wasao) (print gentoo) (print kumamoto)) ;; ておくれ ;; ておくれ ;; ておくれ
syntax-rules
(define-syntax teoku-let (syntax-rules () ((_ () body ...) (let () body ...)) ((_ ((var val) x ...) body ...) (let ((var "ておくれ")) (teoku-let (x ...) body ...))))) (teoku-let ((wasao 68) (gentoo 'linux) (kumamoto "熊本")) (print wasao) (print gentoo) (print kumamoto)) ;; ておくれ ;; ておくれ ;; ておくれ
labels :
defmacro,
Gauche,
scheme,
syntax-rules
2011/11/04
2011/11/03
2011/11/02
2011/11/01
最近の雑多なコマンド(gauche)
現実逃避駆動スクリプティング。使い捨てでいいんだけど、あえてコマンドにしました的な。
jsonとalistを相互に変換。
csvをjsonに。csvをtemplate engineに渡すときにかましたり。
jsonからkeyを取得したり、指定したkeyの値を取得したり。
jsonとalistを相互に変換。
$ echo '(("a" . 1)("b" . 2)("c" . (("d" . #(1 2 3)))))' | json2alist -a {"a":1,"b":2,"c":{"d":[1,2,3]}}
$ echo '(("a" . 1)("b" . 2)("c" . (("d" . #(1 2 3)))))' | json2alist -a | json2alist (("a" . 1) ("b" . 2) ("c" ("d" . #(1 2 3))))
csvをjsonに。csvをtemplate engineに渡すときにかましたり。
$ echo '1,2,3\n4,5,6\n7,8,9'| csv2json "{\"title\":\"\",\"lines\":3,\"body\":[[\"1\",\"2\",\"3\"],[\"4\",\"5\",\"6\"],[\"7\",\"8\",\"9\"]]}"
jsonからkeyを取得したり、指定したkeyの値を取得したり。
$ echo '{"a":1,"b":2,"c":{"d":[1,2,3]}}' | pryon -k a b c $ echo '{"a":1,"b":2,"c":{"d":[1,2,3]}}' | pryon -t object $ echo '{"a":1,"b":2,"c":{"d":[1,2,3]}}' | pryon -l 3 $ echo '{"a":1,"b":2,"c":{"d":[1,2,3]}}' | pryon -e c {"d":[1,2,3]} $ echo '{"a":1,"b":2,"c":{"d":[1,2,3]}}' | pryon -e c | pryon -e d [1,2,3] $ echo '{"a":1,"b":2,"c":{"d":[1,2,3]}}' | pryon -e c | pryon -e d | pryon -i 2 3最後のやつは、jshonってののライト版的ノリで。ちょっと便利。というかjshonがうまいこと動いてくれなかったので仕方なく。
terminal で json pretty print
terminalからweb apiを呼んで返ってきたjsonを見るときに。pythonはだいたいどこでも入ってるし。
例えばこんな感じ。
python -m json.tool
wget -O - http://foo:piyo@hogehoge.com/api/fuga | python -m json.tool
例えばこんな感じ。
% wget -O - "https://api.twitter.com/1/statuses/user_timeline.json?id=valvallow&count=1" 2> /dev/null | python -mjson.tool [ { "contributors": null, "coordinates": null, "created_at": "Tue Nov 01 15:04:22 +0000 2011", "favorited": false, "geo": null, "id": 131386101536526337, "id_str": "131386101536526337", "in_reply_to_screen_name": "sasagawa888", "in_reply_to_status_id": 131385453638201344, "in_reply_to_status_id_str": "131385453638201344", "in_reply_to_user_id": 236352281, "in_reply_to_user_id_str": "236352281", "place": null, "retweet_count": 0, "retweeted": false, "source": "twicli", "text": "@sasagawa888 \u305d\u3046\u3067\u3059\uff3e\uff3e\uff1b", "truncated": false, "user": { "contributors_enabled": false, "created_at": "Mon May 14 04:57:45 +0000 2007", "default_profile": false, "default_profile_image": false, "description": "S\u5f0f\u304c\u597d\u304d\u3002\u660e\u65e5\u304b\u3089\u672c\u6c17\u51fa\u3059\u3002\u306e\u3093\u3073\u308a\u751f\u6d3b\u3057\u305f\u3044\u3002", "favourites_count": 2686, "follow_request_sent": false, "followers_count": 1648, "following": true, "friends_count": 1395, "geo_enabled": false, "id": 6023392, "id_str": "6023392", "is_translator": false, "lang": "ja", "listed_count": 163, "location": "kumamoto", "name": "\u3057\u3083\u308c\u3053\u3046\u3079\u4e59", "notifications": false, "profile_background_color": "FFFFFF", "profile_background_image_url": "http://a0.twimg.com/profile_background_images/655452/Half_docro.jpg", "profile_background_image_url_https": "https://si0.twimg.com/profile_background_images/655452/Half_docro.jpg", "profile_background_tile": false, "profile_image_url": "http://a0.twimg.com/profile_images/557761803/dokuro33whitebig_normal.JPG", "profile_image_url_https": "https://si0.twimg.com/profile_images/557761803/dokuro33whitebig_normal.JPG", "profile_link_color": "000000", "profile_sidebar_border_color": "000000", "profile_sidebar_fill_color": "D3D3D3", "profile_text_color": "000000", "profile_use_background_image": true, "protected": false, "screen_name": "valvallow", "show_all_inline_media": false, "statuses_count": 30993, "time_zone": "Tokyo", "url": "http://valvallow.blogspot.com/", "utc_offset": 32400, "verified": false } } ]webならここがいい。
notify-sendでラーメンタイマーというかリマインダ(ubuntuおまけでcygwin+growl for windows)
ちょくちょくあるんですよ、n分後にアラートして欲しいとか、何かしらの処理が終了したら通知して欲しいとか。 そこでnotify-sendとmplayerでいい感じに通知してもらえたのでメモ。
例えば下記の場合、3分経ったら上の画像のようなアラートを表示して音楽を流してくれます。
$ sleep 3m && notify-send -i /your/icon/path/terminal.png 'noodle !!' && mplayer /your/music/path/notify.ogg > /dev/null 2> /dev/null
長いコンパイル、デカいファイルのコピーなんかの時に仕込んでおくと便利そう。いい感じのaliasを設定しときたいですね。
cygwin
cygwinの場合は、growl for windowsがインストールされてい(てかつgrowlが常駐して)れば下記のようにできる。$ sleep 3m ; /cygdrive/c/Program\ Files/Growl\ for\ Windows/growlnotify.exe /i: "c:\your\icon\path\notify.png" /t:"hoge" 'Ha!!'
参考
- Tech Tip: Get Notifications from Your Scripts with notify-send | Linux Journal
- ubuntuでもGrowlのようなnotificationが使いたい。 - podhmoの日記
- Growl for Windows
追記
alertって名前でshellスクリプト書いてみた。sh -x ./alert でtrace情報っぽいのが出るんですね。!/bin/sh ICON="/your/icon/path/icon.png" MUSIC="/your/music/path/music.png" while getopts s:m: OPT do case $OPT in "s" ) FLG_SLEEP="TRUE" ; VALUE_SLEEP="$OPTARG" ;; "m" ) FLG_MESSAGE="TRUE" ; VALUE_MESSAGE="$OPTARG" ;; esac done if [ "$FLG_SLEEP" = "TRUE" ]; then sleep $VALUE_SLEEP fi if [ "$FLG_MESSAGE" = "TRUE" ]; then notify-send -i $ICON "$VALUE_MESSAGE" fi mplayer $MUSIC > /dev/null 2> /dev/null
以下のように実行すると、3秒後に音楽とともにgrowlっぽいものが表示される。
$ alert -s 3 -m 'Hello, world !!'
登録:
投稿 (Atom)