2012/12/31

2012/12/31

2012年まとめ

そういや今年は書き初めで始まったらしい。
  • 1月 転職
  • 3月 14日円周率の日に5年の交際期間を経て結婚
  • 5月 披露宴をやって請求書に白目を剥く
  • 7月 ロードバイク購入
  • 9月 タバコ辞めて4年経過
  • 7,8,9,10月 出張ラッシュ(主に横浜)
  • 11月 筋トレを開始して1年経過

筋トレとチャリ通勤のお陰でだいぶ体がしぼれて満足している。2011/11→2012/09で体重60kg→56kg、体脂肪率16%→8.5%だった。が、今は体脂肪が11%くらいまで戻っている。筋トレ量が減り、甘いもの食べ過ぎてる自覚がある。来年は懸垂用のmy鉄棒を手に入れるっ(違

12月に友人の結婚式でとんでもねーホテルに泊まったのもたぶん一生の思い出。

2012/12/29

SFの父 H.G.ウェルズの「水晶の卵」「魔法の店」を読んで

というのも、数ヶ月前の話なので内容も感想もぼんやりとしか覚えていない。覚えていないので感想は書けない。だけど面白かったのでメモがてら書いておく。このH.G.ウェルズという人はいろんなところで目にする名前なので一度読んでみたいなあと思っていたのでした。

この翻訳作品のページにはお世話になっていて、暇なときに他の作品も読んでいる。ついでに今まで読んだものを書いておく。列挙してみるとそれほど読んでいないな。

こういう文学作品?のことはよく知らないけれど、たぶん有名な話ばかりなんだろうな。私でも作者の名前や作品の名前の中になんとなく聞いたことのあるものがある。

例えば猿の手なんかは確実に何度か聞いたことがある。読んでみると、化け物語の6話「駿河モンキー」の元ネタじゃん!というか、駿河モンキーの中で実際に「猿の手」の話が出てくるしな。

A&Pのジョン・アップダイクなんかは、ママレードボーイで茗子がアップダイクが好きとかなんとか言ってたぞ。A&P読んだけど面白かったしな。

こういうのを読んだことがあると、全然関係ないように感じるマンガやアニメですらもっと楽しめるんだなあ・・・。人生楽しいけど、もっといろんなことを知っていれば人生もっと楽しいんだろうな。これってたぶん読書だけでなくて、歴史や数学なんかの学校の勉強もそうなんだろう、と三十路目前になって知る。もし自分に子どもができたら、そういう実感を経験できるような環境を用意できたらいいなあ。押し付けにならないように気を付けたいけれど。

この翻訳のページ、以前もブログに書いているけど、あまり読み進めてないな。よく見てみると、ライ麦畑でつかまえてのサリンジャー、さっき書いたブログ記事で引用したロバート・シェクリイ、言わずと知れたヘミングウェイの作品なんかもあってステキだ。

アイザック・アシモフの「鋼鉄都市」を読んで

1ヶ月ほどかけてアイザック・モフモフの「鋼鉄都市」を読んだ。出張の移動中、寝る前、風呂につかる最初の5分程度、などの細かい時間で少しずつ読んだ。有名な作品らしい。

P.399 あとがき?(アイザック・アシモフ -その人と作品-より)

アイザック・アシモフは、ロバート・A・ハインライン、レイ・ブラッドベリ、フレドリック・ブラウン、ロバート・シェクリイ、A・E・ヴァン・ヴォクトなどとともに、現代アメリカSF界を代表する作家であることはいうまでもないが、SF作家としてと同時に、すぐれた科学解説者、科学評論家として、数多くの仕事をしている。その意味では、イギリスのアーサー・C・クラークと並んで、世界SF界の双璧といえるだろう。

だって。

この鋼鉄都市はSFとのことだけど「コテコテの刑事もの」という印象しかなかった。SF成分が足りないというか、「すごい昔の人が考えた未来」という感じ。(1979年の本だから、それは実際そうなんだろうけど)

私の脳内では、イライジャは刑事コロンボ、ジュリアスはDEATH NOTEの夜神月の父親、ジェゼベルはターミネーター2のジョンの養母(?)、ダニールはギレン・ザビで再生された。なぜなんだぜ...

disりたいわけではないんだけど、J.P.ホーガンの方が面白いなあ、と読みはじめから読み終わるまでずっとそんな調子だった。それでも終盤は結構面白くて楽しめたんだけど、それでもやっぱりホーガン作品の方がわくわくして面白い。

私はホーガンの作品は10冊ほど読んでいて、アイザック・アシモフの作品を読むのは今回が初めてだったので、印象には何か不公平なところがあるのかもしれない。だけど今まで読んだどのホーガン作品を思い返してみても、鋼鉄都市よりホーガン作品の方が面白かったなあ。

(繰り返すがdisりたいわけではない)

次は、火星年代記と幼年期の終わりを読もうかなーと思っている。

問答無用の傑作「幼年期の終わり」は未だにほとんどのSFがとらわれている偉大で強力なビジョンで、例えばZガンダムもエヴァンゲリオンも結局のところは「幼年期の終わり」の変奏曲だという意見には賛成だ。(Zガンダムのオープニングのラストカットとか、エヴァンゲリオンのL.C.Lの海とかはまさに「幼年期の終わり」の発展したイメージ)

といったことらしいので楽しみ。

内容についての感想を全く書いてないけどこれで感想終わり。

2012/12/09

2012/12/09

Raspberry Pi が届いたので

公式のドキュメントを見ながらmicro SD(4GB)にOSイメージをdd。OSは4種類から選べるがオススメっぽいRaspbianにした。SDカードを基盤に挿して電源用のmicroUSBを挿して起動。起動後30秒ほどしてOKのLED点滅が終わりLANケーブルをさしてSSHしたらつながった。

ググりつつ初期設定をしてaptとaptitudeをupdate。Gauche、Git、Zsh、rlwrapを入れて取りあえず完了。

ネットワークがないところで使いにくいので、あとはSerial接続できるようにしておきたい

こういうの他にもいろいろあるんですねー。

最近買った本

最近は小豆島出張、秋田出張、横浜出張と出張が多く、移動時間がたくさんある。SFは良いヒマつぶしになる。技術系の本は頭がよく働く時でないと読めない。SFで別の世界に逃避するのが丁度いい。

最近買った大人のおもちゃ


これでまた人生が少し楽しくなった。
ちなみにlinuxでgarmin connect使うにあたって、これを利用した。
Raspberry Piはここで買ったら7日で届いた。
日本のとあるところから買うと半年かかると聞いた。
Edge 500はここで買った。
15日かかった。調べてみると税関の関係で他の人もだいたい15〜20日くらいかかってるっぽい。
プレミアムハートレート and ケイデンス付き、というのがポイント。黒が欲しかったけど赤しかなかったので赤を購入。

 

2012/10/26

ライフメーカー

読んだ。 こんなぶっ飛んだ内容を事細かに想像して読者に映像を思い浮かばせつつかつ破綻せず筋の通る理由まで考えて、しかも面白いなんて天才と書いてマジキチだわ。お陰様で読むのがとても楽しかった。



とJ.P.ホーガンのSFを読んできて、今回ライフメーカーシリーズを読んだ。どれも面白かったけど、あえて選ぶと「星を継ぐもの」と「未来の二つの顔」が特に好き。次に創世記機械かなあ。

ホーガン作品は手元にあと2冊ある。 どちらから読もうか。

2012/10/19

2012/10/19

てすと

アプリあるんやね。

無題

galaxy s2にcyanogenmod9入れた話とか、需要ないけど便利だと思って使ってるアプリのこと書いときたい。あと最近買った本と読んだ本。

最近なんでブログ書く頻度が落ちたのか考えてみた。
  • 忙しかった
  • 携帯でFacebook, Twitter, Tumblr, その他携帯アプリばっかり見てる、もしくはTumblrばっかり見てる
  • チャリ乗ったり筋トレしたりする時間が増えた
  • Emacsを使う頻度が下がって思いついたことを即座にメモる習慣がなくなった
  • かな。携帯って閲覧しやすいけど入力しづらいよな。

    雑なリマインダ

    「客先のfooさんにhogeの件で電話をかける」などのタスクはGoogle CalendarやGoogle Tasksで管理している。でも実際電話したら不在だったので「30分後にもう一度電話する」というタスクを忘れてしまう。ということで、こんな雑なリマインダを使ってる。 リマインダが欲しいけど、そのためにソフトを常駐させるのも嫌なので、こんなの使ってる。

    そういえば以前こんなの作ってた。console版のプログレスバー付きタイマーといったところ。notify-sendと組み合わせればリマインダになるな。

    と、思ったら、こんなの作ってた。

    複数のPCで一つのモニタを共用してるけど今操作しているPCの本体がわからないとき

    CD/DVDドライブを開けるとわかる。WindowsであればマイコンピュータのCD/DVDドライブを右クリックして取り出し。

    間違って印刷してしまった時は

    用紙トレイを引き出す、が正解。キャンセルしてもとまんねーし、プリンタの電源を切ると用紙が詰まるし。(上司に教えてもらった)

    無題

    ちなみに日記は2012/05/18から毎日書いてる。 日記が続いたことのない人にオススメ。あと懸垂も平日毎日続いてる。普通の懸垂を11回、バックビハインドを5回。あと気が向いたら帰ってから腕立て腹筋スクワット。去年の11月に筋トレ始めたので、もうすぐ一年。よく続いてて関心する。

    近況

    しごと

    7〜9月は出張ラッシュで、長崎、鹿児島、横浜、大阪、香川と忙しかった。横浜出張が多くて、昨日一昨日も横浜出張だった。8月は半分くらい横浜にいた。来週はまた香川(小豆島)。

    じてんしゃ

    7月にロードバイク買って通勤で乗ってる。半袖半ズボンにSPDペダルで通勤してる。にわかなので月に200kmくらいしか乗ってない。上司は月600kmくらい乗ってるけど、ガチの人からすればそれでもまだまだらしい・・・。休みの日はたまにチャリで山を登るなど。

     チャリはこれ
    必要なものがいろいろあって結構金がかかった。5月に結婚披露宴をやったばっかりで、お金がなくてなかなかしんどい。
    残るはgarminがあればひと通りOKか?諸事情で携帯のGPSが死んでしまい、Endomondoが使えずツライ。

    無題

    ブログ書いてなさすぎ。書きたいことはたくさんある。しばらくブログを書いていなかったら、書く習慣が消え去ってしまったらしい。ちょっと前はたくさん書いていたのに。習慣って怖い。書く習慣を復活させたい第一弾終わり。

    2012/06/30

    自宅のPCからコマンド一発で会社のPCの電源を入れる

    こういうことができるんですねw

    会社の私のPCはデフォルトで設定が全てオンになってました(笑)

    そこで隣の席の同僚がWOLパケットを投げるGaucheスクリプトを作ってくれたので、その起動スクリプトを会社のsshサーバに置きました。

    ということで、手元のPCからssh越しにその起動スクリプトを呼ぶコマンド(shell script一行)を作ったので、自宅だろうが外出先だろうが一撃で会社のPCの電源が入るようになってめでたしめでたし。

    会社のPCはwindowsなので試しにリモートデスクトップ(vinagreを使いました)で接続してみましたが快適過ぎる。。

    ただし電源を切るにはログインしてshutdownコマンドを叩く必要があります。ついでにこれも手元からコマンドで叩けるようにしてみましたが、基本的にリモートデスクトップで接続することしかないので不要ですね。

    結論:会社のサーバーにはgaucheが入ってる

    2012/06/27

    2012/06/27

    日記(ネット時間を減らすには)

    ここ数ヶ月ネットを見る時間が大幅に減ったvalvallowです。読むのに時間がかりそうな記事はpocket(read it later)に登録するというだけの方法。登録することで安心して当分読みません。するとヒマでヒマで仕方ないときに思い出したように記事を消化できます。これはすばらしい。でもtumblrばっかり見てるので+-0

    あ、でもtumblrばっかり見てるお陰ではてブが気にならなくなった。もうホッテントリのfeedいらんかも。しかしなんでtumblrはやたらと吉木りさ画像ばかり流れてくるん?

    週末は初ボルダリングなので楽しみです。

    2012/06/19

    2012/06/19

    日記

    しばらくいろいろと忙しく全然ブログ書いてなかったことでブログを書く習慣が消え去った。それと読書の習慣も消え去った。ブログも書きたいし本も読みたいのでさほど心配してない。そのうち復活すんじゃねーかな。

    逆に新しくできた習慣があって、筋トレ(腕立て腹筋スクワット懸垂)、水泳(週一)、日記(ohlife)。特に筋トレが楽しくてハッスルしてる。懸垂かわいいよ懸垂。水泳もいいリフレッシュになってる。

    gitでremoteのコミットをなかったことにしたい

    今日会社で困ったのでメモ

    目的

    remoteのコミットをなかったことにしたい

    参考にしたのはこちら

    基本的に内容は同じ。

    シチュエーション

    • 大幅修正
    • commit
    • commit
    • push
    • やっぱ大幅修正前に戻したい
    • コミットもなかったことにしたい

    シナリオ

    • ローカルでreset --hard
    • remoteのbranch消す
    • ローカルの状態をpush

    方法

    取りあえずremoteはoriginでbranchはmasterということで。


    branchのバックアップを取る
    % git push origin master:master_bak
    ローカルのcommitをなかったことにする
    % git reset --hard xxxxxxxxxxxx
    gitのremote branchを削除
    % git push origin :master
    ローカルのmasterをpush
    % git push origin master

    別解

    なんだこれでいけるのか。
    % git push -f origin xxxxxxxxxxxxx:master

    ところで
    % git push origin master:master_bak
    これでremoteのbranchのバックアップが取れるとは。(というかremoteのbranchを切れるわけか)
    remoteで作ったブランチを手元に持ってくるには
    % git checkout -b master_bak origin/master_bak
    でいいんだな。

    それと、
    % git push origin :master
    のとこで
    remote: error: By default, deleting the current branch is denied, because the next
    remote: error: 'git clone' won't result in any file checked out, causing confusion.
    remote: error: 
    remote: error: You can set 'receive.denyDeleteCurrent' configuration variable to
    remote: error: 'warn' or 'ignore' in the remote repository to allow deleting the
    remote: error: current branch, with or without a warning message.
    remote: error: 
    remote: error: To squelch this message, you can set it to 'refuse'.
    remote: error: refusing to delete the current branch: refs/heads/master
    
    みたいなメッセージが出る。その時はremoteのconfigに
    [receive]
         denyDeleteCurrent = false
    
    を追加してやるといいっぽい。

    試しにやってみるとこんな感じ。
    valvallow@ubuntu ~ % cd temp
    valvallow@ubuntu ~/temp % mkdir -p playground/{repo,local}
    valvallow@ubuntu ~/temp/playground/repo
     % git init --bare
    Initialized empty Git repository in /home/valvallow/temp/playground/repo/
    valvallow@ubuntu ~/temp/playground/repo
     % cd ../local
    valvallow@ubuntu ~/temp/playground/local
     % git init
    Initialized empty Git repository in /home/valvallow/temp/playground/local/.git/
    valvallow@ubuntu ~/temp/playground/local
     % touch hoge
    valvallow@ubuntu ~/temp/playground/local
     % echo 'Hello, world !!' > hoge
    valvallow@ubuntu ~/temp/playground/local
     % git add .
    valvallow@ubuntu ~/temp/playground/local
     % git commit -m 'initial commit'
    [master (root-commit) 1876f96] initial commit
     1 files changed, 1 insertions(+), 0 deletions(-)
     create mode 100644 hoge
    valvallow@ubuntu ~/temp/playground/local
     % echo 'add new row' >> hoge
    valvallow@ubuntu ~/temp/playground/local
     % git add .
    valvallow@ubuntu ~/temp/playground/local
     % git commit -m 'add new row'
    [master e532dc4] add new row
     1 files changed, 1 insertions(+), 0 deletions(-)
    valvallow@ubuntu ~/temp/playground/local
     % echo 'piyo' >> hoge
    valvallow@ubuntu ~/temp/playground/local
     % git add .
    valvallow@ubuntu ~/temp/playground/local
     % git commit -m 'piyo'
    [master 5e0355c] piyo
     1 files changed, 1 insertions(+), 0 deletions(-)
    valvallow@ubuntu ~/temp/playground/local
     % git remote add origin ../repo
    valvallow@ubuntu ~/temp/playground/local
     % git push origin master
    Counting objects: 9, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (3/3), done.
    Writing objects: 100% (9/9), 688 bytes, done.
    Total 9 (delta 0), reused 0 (delta 0)
    Unpacking objects: 100% (9/9), done.
    To ../repo
     * [new branch]      master -> master
    valvallow@ubuntu ~/temp/playground/local
     % git branch -a
    * master
      remotes/origin/master
    valvallow@ubuntu ~/temp/playground/local
     % git push origin master:master_bak
    Total 0 (delta 0), reused 0 (delta 0)
    To ../repo
     * [new branch]      master -> master_bak
    valvallow@ubuntu ~/temp/playground/local
     % git branch -a
    * master
      remotes/origin/master
      remotes/origin/master_bak
    valvallow@ubuntu ~/temp/playground/local
     % git branch
    * master
    valvallow@ubuntu ~/temp/playground/local
     % git checkout -b master_bak origin/master_bak
    Branch master_bak set up to track remote branch master_bak from origin.
    Switched to a new branch 'master_bak'
    valvallow@ubuntu ~/temp/playground/local
     % git branch
      master
    * master_bak
    valvallow@ubuntu ~/temp/playground/local
     % cat hoge
    Hello, world !!
    add new row
    piyo
    valvallow@ubuntu ~/temp/playground/local
     % git push origin :master
    To ../repo
     - [deleted]         master
    valvallow@ubuntu ~/temp/playground/local
     % git log
    commit 5e0355cb325a8ed90fe066131c72dead9faba329
    Author: valvallow
    Date:   Tue Jun 19 22:23:50 2012 +0900
    
        piyo
    
    commit e532dc4dc21f72292e2a700e28ed544d31c21a31
    Author: valvallow
    Date:   Tue Jun 19 22:23:17 2012 +0900
    
        add new row
    
    commit 1876f96ff3186b5082c9c32e4ed310ac8d4b8a9a
    Author: valvallow
    Date:   Tue Jun 19 22:22:39 2012 +0900
    
        initial commit
    valvallow@ubuntu ~/temp/playground/local
     % git reset --hard e532dc4dc21f72292e2a700e28ed544d31c21a31
    HEAD is now at e532dc4 add new row
    valvallow@ubuntu ~/temp/playground/local
     % git log
    commit e532dc4dc21f72292e2a700e28ed544d31c21a31
    Author: valvallow
    Date:   Tue Jun 19 22:23:17 2012 +0900
    
        add new row
    
    commit 1876f96ff3186b5082c9c32e4ed310ac8d4b8a9a
    Author: valvallow
    Date:   Tue Jun 19 22:22:39 2012 +0900
    
        initial commit
    valvallow@ubuntu ~/temp/playground/local
     % git push origin master
    Total 0 (delta 0), reused 0 (delta 0)
    To ../repo
     * [new branch]      master -> master
    valvallow@ubuntu ~/temp/playground/local
     % git log
    commit e532dc4dc21f72292e2a700e28ed544d31c21a31
    Author: valvallow
    Date:   Tue Jun 19 22:23:17 2012 +0900
    
        add new row
    
    commit 1876f96ff3186b5082c9c32e4ed310ac8d4b8a9a
    Author: valvallow
    Date:   Tue Jun 19 22:22:39 2012 +0900
    
        initial commit
    

    2012/05/16

    2012/05/16

    日記

    いやー日記書いてない。書きてー。最近日記は書いてないけど筋トレも水泳も続いてる。最近は特に懸垂が楽しい。腰が痛いのでなかなか腹筋ができないというのもある。懸垂続けてたら懸垂力上がって来た。懸垂すると腹筋も筋肉痛になるのでなかなかいい。夜な夜な公園で懸垂してる。体動かすとスッキリするので毎日何かしら体を動かしたい。

    最近あんまり時間取れてないけどSICPの続き読んでる。huffman符号化木のとこ。面白い。

    2012/04/27

    2012/04/27

    日記

    腰を痛めたorz腰が痛いのでチャリ通勤もできないし筋トレもできないし週一の水泳も行けない。つまらん。懸垂くらいしかできないので夜な夜な公園に行って懸垂してる。そういえば去年も3月にぎっくり腰やってるので春先は腰に気をつけた方がいいのかも知れない。 明日は39回目の9LISP! 今回はネタも多そうだし、愛甲さんはいらっしゃるようだしいつも異常に楽しみだわ!

    2012/04/17

    2012/04/17

    日記

    最近ほんとブログ書いてないなー。Scheme書いてないなー。久しぶりにSICPの続き読んでる関係で書くくらいしか書いてない。今Huffman符号化木のとこ。なんだかんだ忙しいような暇なような。そういや本も読んでないなー。積ん読は相変わらずいっぱいある。いろいろなTODOもたくさん積んである。そういやJ.P.ホーガンが1冊残ってるのを早く読みたいなー。代わりにチャリと筋トレと水泳は楽しくやってる。なんだかんだとても楽しく過ごしているので万事OK。仕事も楽しくていい感じ。楽しいのが一番だわ。幸せやね。

    2012/04/10

    2012/04/10

    日記(昼寝)

    弊社も眠くなったら寝ようぜな社風で昼寝用の仮眠室もある。「昼寝に限らず眠くなったら寝ていーよー。」「眠いときにコード書いても後が大変だしね(笑)」といった感じ。


    .NET2.0でもラムダ式やvarが使える

    コンパイラのバージョン次第で。ってのを今日会社で後輩(?)に教えてもらいました!スーパープログラマ後輩なのでいろいろ教えてもらってます(・∀・)あとmap欲しいなー(つまりlinqのselectのことですが)って思ってたら、ArrayにConvertAllやForEachやその他もろもろがあることも教えてもらいました。.NET2.0もなかなかやるじゃないですか。



    2012/04/03

    2012/04/03

    日記(TODO管理が破綻してメモや日記も破綻した)

    最近ブログ書いてないなー。忙しいのもあるんですが、理由は主に掲題の通りです。

    普段Emacsをメインで使っている私は、TODOも技術的なメモもquotesも考えたこともアイデアもブックマークも何でもEmacsのorg-remember(org-mode)で書いていました。これが超手軽にサクっとメモできていろんな閲覧の仕方ができて超便利なんすよ。んで、そのorgファイルを家でも会社でもノートPCでも共有してニヤニヤしていました。この仕組みはキレイに完結していたのでうまくまわっていました。

    で、私はorg-agenda(週別時系列でメモやTODOを閲覧できる)などでメモを眺め、それを元にブログを書いたりするわけです。これが破綻したのでブログも書きづらくなってしまいました。

    なぜ破綻したか。
    • Emacsの使用頻度が落ちた
    • スマホでもTODO管理したいけどEmacsでの方法と同期できない
    この状況を打破できずグダグダしているうちにブログを書く習慣が遠のいた。まずい。嫌だ。気持ち悪い。ブログ書きたい。うげっ

    (ちなみにEmacsの使用頻度が落ちたのはWindowsでC#なお仕事に戻ってきたからというのが大きな理由の一つ)

    どうにかしたい。Remember the Milk, Toodledoo, Google Tasksを検討中。Remember The MilkとToodledooはEmacsからも使えそう。Google Tasksを使いたいけど、Emacs拡張は今のところなさそう。うーん。

    ところで、会社ではチケット管理に困ってる。Redmineのチケットはプロジェクト・ベースなところが最高に使いづらい。お客さんごとのチケットはどこにぶらさげるのか?一つのお客さんが複数の製品(つまりプロジェクト)を使用している場合にお客さん別のチケットはどうやって見る?プロジェクト間横断検索は?複数タグ(カテゴリ)はつけられる?

    これがチケットベースでプロジェクトやお客さんやカテゴリがタグとして付加できるような仕組みならよかったのになー。チケットありきで、他の情報はタグ付けで管理する、はてブみたいなチケット管理ないの?んで、分散チケット管理でスマホからも閲覧/更新できて欲しい。何より登録/閲覧が素早くできないと使う意味がない。出先でもオフラインでもサクっと検索できないと足かせになるきがする。Redmineはチケットまですごく遠い。

    (Redmineをdisってるんじゃなくて、うちの会社の業務には合わない)(かといって他のプロジェクト管理ツールをちゃんと使ったことがあるわけではない)

    で。自分のメモ&TODO管理と会社のチケット管理の問題って、一つのアプリケーションで解決できるんじゃね?という気がしてくる。日本語でおk。会社のチケット管理の問題を全部解決してくれるアプリがあればそれを自分のTODO&メモ管理にも使えそう、という話。そんなのねーかなー。作るのは楽しそうだけどできあいのものがあればそれを使いたい。gitをバックエンドに使ったwikiの話があるけど、そんなノリで作れねーかなー。チケットを独自フォーマットのorgファイルにして、gitのpushをhookしてどうのこうのーみたいな。あんまちゃんと考えてないけど、そういうの。作ってエラい人ー

    追記

    pecculさんに教えてもらったMobileOrgが全て解決してくれた!

    2012/03/29

    2012/03/29

    日記

    ブログ書きたいんだけどなかなか気分的な余裕がない。いや気分的な余裕はあるか。まとまった時間がない。いや時間もそこそこあるな。Land of Lispの和訳すごく楽しみ。そういえば僕は会社で「準備と段取りと根回し」「人生の楽しみ方」を学んでいます。出張続きであんまりプログラム書いてないです。でも職場すごく楽しいです。おやすみ。

    2012/03/25

    2012/03/25

    日記

    忙しいと現実逃避が多くなるなー。主にネットへの逃避ですね。ネットサーフィンとかSNS系。いかんですね。逃避なのかようわからんですが。読書やプログラミングよりは非生産的だというだけか。

    ここんとこ出張が多かったので疲れが溜まってるらしい。今日も髪を切りに行った以外はずっと寝てましたがまだ眠い。

    ところで。まだ日記に書いてなかったけど2012/03/14(水)に結婚しました。式・披露宴は5月です。楽しみだけど忙しい。

    2012/03/24

    日記

    奄美大島に出張してきました。けいはんうめぇー!プロペラ機揺れすぎ怖ぇー!出張続きだったので疲れがたまりました。でも出張もなかなか楽しい。最近日記書けてないのでぼちぼち復活したい。

    2012/03/10

    2012/03/10

    リスト ("*" (2 3 4) (a b) "!" (8 9 0)) から文字列 "*2a!8", "*2a!9", "*2a!0", "*2b!8" ...を作る

    2chのLisp Schemeスレに掲題の問題が出てた。
    235 :デフォルトの名無しさん:2012/03/09(金) 15:21:07.33
    Allegro Common Lisp (ACL) の試用版を使っています 
    (list "*" '(2 3 4) '(a b) "!" '(8 9 0)) 
    こういう文字列とリストからなるリストをもとに 
    *2a!8 
    *2a!9 
    *2a!0 
    *2b!8 
    *2b!9 
    *2b!0 
    *3a!8 
    ... 
    と続くものを出力したいです(文字列とリストは0回以上ランダムに表れます) 
    リストについては命令型言語でいうところの 
    for (...) 
     for (...) 
    のような処理をすることになりそうですが 
    どこから手をつければよいかわかりません 
    おそらくmapcarを使ってリストを作り直す必要があります? 
    どうすればよいですか 
    
    この問題って、対象のリスト
    (list "*" '(2 3 4) '(a b) "!" '(8 9 0))
    の文字列も要素一個の集合ってことにして
    (list '("*") '(2 3 4) '(a b) '("!") '(8 9 0))
    であると見なして、集合の集合と考えちゃう。するとこれらの集合に対してSQLで言うところのcross joinの結果を出せばいいんじゃないかという気がする。調べてみたらcross joinってデカルト積って言うんですって。そこで、デカルト積を出すにはどうしたらいいのかなーと探してみたらgaucheのutil.combinationsにcartesian-productってのが組み込みであった。
    ちょっとズルい気もするけど、それっぽい結果になった。gaucheで書きました。
    (use util.combinations)
    
    (let* ((ls (list "*" '(2 3 4) '(a b) "!" '(8 9 0)))
           (ls (map (^x (if (list? x)
                            x
                            (list x))) ls)))
      (for-each (^s (write s)(newline))
                (map (apply$ string-append)
                     (map (map$ x->string)
                          (cartesian-product ls)))))
    
    ;; "*2a!8"
    ;; "*2a!9"
    ;; "*2a!0"
    ;; "*2b!8"
    ;; "*2b!9"
    ;; "*2b!0"
    ;; "*3a!8"
    ;; "*3a!9"
    ;; "*3a!0"
    ;; "*3b!8"
    ;; "*3b!9"
    ;; "*3b!0"
    ;; "*4a!8"
    ;; "*4a!9"
    ;; "*4a!0"
    ;; "*4b!8"
    ;; "*4b!9"
    ;; "*4b!0"
    


    追記

    せっかくなのでちょっと見やすく
    (use util.combinations)
    
    (define (print-list ls)
      (for-each (^s (write s)(newline)) ls))
    
    (define (list->set-of-set ls)
      (map (^x (if (list? x)
                   x
                   (list x))) ls))
    
    (define (cartesian-product-string set-of-set)
      (map (apply$ string-append)
           (map (map$ x->string)
                (cartesian-product set-of-set))))
    
    (define (main ls)
      (print-list
       (cartesian-product-string
        (list->set-of-set ls))))
    
    (main (list "*" '(2 3 4) '(a b) "!" '(8 9 0)))
    
    ;; "*2a!8"
    ;; "*2a!9"
    ;; "*2a!0"
    ;; "*2b!8"
    ;; "*2b!9"
    ;; "*2b!0"
    ;; "*3a!8"
    ;; "*3a!9"
    ;; "*3a!0"
    ;; "*3b!8"
    ;; "*3b!9"
    ;; "*3b!0"
    ;; "*4a!8"
    ;; "*4a!9"
    ;; "*4a!0"
    ;; "*4b!8"
    ;; "*4b!9"
    ;; "*4b!0"
    

    プログラミングGauche

    2012/03/09

    2012/03/09

    csvをsqlにする(insert, update)

    検索すればいくらでも出てくるようなものをあえて作りました。csvをinsert文、update文に変換するコマンド。

    昨日のこれと合わせると結構使えるかも。
    例えばこういうCSVを
    $ cat sample.csv 
    aaa,bbb,ccc,ddd,eee
    1,2,3,4,5
    10,20,30,40,50
    100,200,300,400,500
    
    csv2sqlに渡すと
    $ csv2sql sample.csv 
    INSERT INTO sample (aaa , bbb , ccc , ddd , eee) VALUES ('1' , '2' , '3' , '4' , '5')
    INSERT INTO sample (aaa , bbb , ccc , ddd , eee) VALUES ('10' , '20' , '30' , '40' , '50')
    INSERT INTO sample (aaa , bbb , ccc , ddd , eee) VALUES ('100' , '200' , '300' , '400' , '500')
    
    $ csv2sql -k aaa sample.csv
    UPDATE sample SET aaa='1', bbb='2', ccc='3', ddd='4', eee='5' WHERE aaa='1'
    UPDATE sample SET aaa='10', bbb='20', ccc='30', ddd='40', eee='50' WHERE aaa='10'
    UPDATE sample SET aaa='100', bbb='200', ccc='300', ddd='400', eee='500' WHERE aaa='100'
    
    $ csv2sql -k "aaa,ccc" sample.csv
    UPDATE sample SET aaa='1', bbb='2', ccc='3', ddd='4', eee='5' WHERE aaa='1' AND ccc='3'
    UPDATE sample SET aaa='10', bbb='20', ccc='30', ddd='40', eee='50' WHERE aaa='10' AND ccc='30'
    UPDATE sample SET aaa='100', bbb='200', ccc='300', ddd='400', eee='500' WHERE aaa='100' AND ccc='300'
    
    こんな感じ。CSVファイル名がTable名に、CSVのheader行がカラム名に。update文でキーまで更新してることに今ごろ気づいたけど気にしない。

    ソース

    Gaucheで書きました。ソースはこちら。

    追記

    update文でキーまで更新してることに今ごろ気づいたけど気にしない。 

    対応した。


    2012/03/08

    2012/03/08

    shell scriptでオプション引数を除いた引数を得る

    getoptsした後のOPTIND - 1分shiftすればよかったのかー。というかOPTINDなるものを知らなんだ。
    #!/bin/sh
    
    while getopts abcdef:g:h: OPT
    do
            echo $OPT
    done
    
    echo $OPTIND
    shift `expr "$OPTIND" - 1`
    echo "$@"
    
    $ ~/temp % ./cmdargs -a -b -c -d -e -f hoge -g fuga -h piyo a b c d
    a
    b
    c
    d
    e
    f
    g
    h
    12
    a b c d
    $ ~/temp % ./cmdargs -a -b -c -f hoge -g fuga -h piyo a b c d 
    a
    b
    c
    f
    g
    h
    10
    a b c d
    


    UNIXという考え方―その設計思想と哲学

    shellで相対パスを絶対パスに

    もっと簡単な方法はないのかね。
    $ abp ~/bin
    /home/valvallow/bin
    


    追記

    @kikuchan98先生に教えてもらいました!

    UNIXという考え方―その設計思想と哲学

    1行目無視

    1行目無視。sedで行指定で削除できんのか。
    $ cat hoge.txt | sed '1d'

    追記

    これまた@kikuchan98先生に教えてもらいました!
    $ cat hoge.txt | tail -n +2
    UNIXという考え方―その設計思想と哲学

    csvをmapping

    こういうCSVがあるとき
    $ cat sample.csv
    a,b,c
    1,2,3
    10,20,30
    100,200,300
    1,2,3
    10,20,30
    100,200,300
    1,2,3
    10,20,30
    100,200,300
    1,2,3
    10,20,30
    100,200,300https://gist.github.com
    1,2,3
    10,20,30
    100,200,300
    
    このように
    $ cat sample.csv | csvremap sample.js
    a,b,c
    1,2,3
    foo,hoge,30
    bar,200,300
    1,2,3
    foo,hoge,30
    bar,200,300
    1,2,3
    foo,hoge,30
    bar,200,300
    1,2,3
    foo,hoge,30
    bar,200,300
    1,2,3
    foo,hoge,30
    bar,200,300
    
    となる、というだけのコマンド。jsonってのがなんともアレだけど、動けばいいんです動けば。わりと活躍するかもしれん。

    sample.jsはこんな感じ
    $ cat sample.js
     {"a":{
             "10":"foo"
           , "100":"bar"
          }
    , "b":{
            "20":"hoge"
          }
    }
    
    cut,sort,uniqなんかのコマンドと相性いいかも(そらそうだろうな)。
    $ cat sample.csv | csvremap sample.js | tail -n +2 | sort -nr | uniq
    1,2,3
    foo,hoge,30
    bar,200,300
    
    で、こうやってmap系のコマンド作ると絶対reduce系のコマンド欲しくなるな(笑)

    ソース

    こちら。gauche。 いやー、やっぱS式っていいですね。人にやさしい脳にやさしい。

    追記

    jsonを標準入力から受け取るようにしてたけど、引数の順序を変えてCSVを標準入力から受け取るようにした。どう考えてもCSVの方が加工されてわたってくることが多いもんな。使ってて不便だった。

    プログラミングGauche

    2012/03/07

    2012/03/07

    KPF(熊本プログラミングフリークス)の勉強会を開催します

    ブログで告知するの久しぶり。 プログラミングが好きな人は参加すると楽しいと思います。これからプログラミングを始めたい人、LTしてみたい人、ヘンタイ(いい意味)、仕事のプログラミングで悩んでる人、面白いもの作ったので発表したい人、変な人(面白い人・すごい人)に会いたい人など、これまでいろんな人に参加して頂いてます。

    2012/03/31(土)の13時からです。会場は東海大学熊本キャンパスにお世話になります。ひやかし、のぞき見、歓迎します。

    LT応募多すぎて入り切らないかもしれません(笑)

    日記(読み物)

    読み物といってもプログラミング関係 じゃない方。 翻訳のところに面白いのがたくさんある。 しばらく前にいくつか読んでみて面白かった。並んでる作品はたぶん有名所なんだろうけどよう知らん。こういうのがあるってのを忘れてたので思い出したついでにメモ。また暇なときに読もうかなと。

    このへんは読んだ記憶がある。
    きっかけはなんだったかなー・・・と思いだしてみたらこちらの記事だった。

    C#でREPL(Windows)

    string.Formatのフォーマット指定子全部覚えてます?Enumerable.Range(0, 10)の結果が0から10までなのか0から9までなのか覚えてます?僕は覚えてないのでググるか、試しに書いてみます。consoleプロジェクト作って試したり、今書いてるソースに応急的に書き足して試したりするのって面倒じゃないですか?みんなどうやってんの?ConsoleApplication58.csとか作ってやってんの?REPL欲しくないですか? なのでvpsにmono入れてsshでcsharpを使って試してました。が、monoのwindows向けのバイナリ入れればいい話でした。アホ過ぎた。csharp.bat叩けばcmdでreplが立ち上がるのでお手軽。

    Effective C# 4.0

    2012/03/05

    2012/03/05

    日記(業務アプリ開発)

    久しぶりに既存業務アプリ保守のお仕事。C#。業務アプリ開発はほとんどSQLとリファクタリングがメインだなと。いい機会なので勉強しますか。幸いまーちんふぁうらー先生の本を積んでるので消化しましょう。あ、コードコンプリート巻を再読もいいかもしれん。しかし久しぶりを差し引いてもSQL難しい。C#も。S式はあんなに親切なのに・・・。というか脳スペックが悪いのでS式のシンプルさに慣れると戻れんのかもしれん。

    リファクタリング―プログラムの体質改善テクニック (Object Technology Series)

    日記(2012年)

    最近、読書もプログラミングもご無沙汰。去年の秋頃から私的な面で忙しいのが理由の一つ。去年の9月から今年の5月末まで週末はほとんど予定で埋まってる。リア充。2月に転職したのも理由の一つ。いくら楽しい職場と言っても新しい環境は何かと疲れる。 ということで今年は6月くらいまで、空いた時間は積極的にだらだらごろごろする。もしくは筋トレと水泳でリフレッシュだな。筋トレは4ヶ月超えてから効果出てきて(というより腹筋のやり方変えてから?)腹筋割れてきた。けど、徐々に筋肉痛にならなくなるとともに効果が落ちてきた。もっと負荷のかかるトレーニングに変えた方がいいのかな。

    2012/02/24

    2012/02/24

    日記(3分の1ルール)

    どうもこんばんわ。SE/PG広報を担当しているvalvallowです。

    昨日の日記がまさかのホッテントリ入りで少々ビビりました。
    どうしてこうなった・・・。ビビりなので今朝出社して上司に報告しときました。上司「いいぞもっとやれ」。ということもあり、せっかくなのでこの流れに乗って続きを書いてみます。ただ相変わらず派手な内容はありません。

    今日は以下のことについて書いてみます。
    • 「3分の1ルール」
    • ラーメン代稼ぎ
    • 「Lisper採用枠」始めました

    「3分の1ルール」

    「3分の1ルール」というものがあります。これは何のルールかというと「儲かったらみんなで山分け」という会社のスタンスにおける利益分配ルールです。

    割り振りは
    • 会社
    • 社長(追記:というか株主だね)
    • 社員
    となります。こうやって見ると「社長ズルくね?」と思うかもしれません。これは会社がヤバくなったら社長のフトコロが頼りになるためです。それに社長はいろんなリスクを負ってますからそれなりの報酬があって然りかと思います。結果的に3分の2を会社に割り振ってるようなものと思っていいかも知れません。

    残りの3分の1が社員の取り分です。素敵ですね!

    これを見ると「社員の人たち相当もらってんだろうな」と思う人もいるかもしれません。世の中そう甘くはないもんで、そもそも会社の利益なんて運転資金や設備投資費などを引けばそうそう残るもんじゃありません。給与も至って常識的な金額です。ただこの「3分の1ルール」のお陰で、会社に貢献すればその分ボーナスが爆発的に上がる可能性があるわけです。良いモチベーションになりますね!(追記:というより決算ボーナスとか臨時ボーナスとして支給されたりする)

    ラーメン代稼ぎ

    現在会社としてどういうステージにいるのか、私の視点で書いてみます。

    「ラーメン代稼ぎ」と聞いてピンとこない人もいるかも知れません。これは
    のことです。「ハッカーと画家」で有名なポール・グレアム氏のエッセイです。

    これを乱暴に要約すると「自分たちが食っていけるだけの毎月の収入を手に入れたベンチャー企業は強い」ということでいいかと思います。

    弊社は、創業6年目の小さなISVです。ですが、これまで一度も赤字になったことがありません。借金も0です。創業以来徹夜もありません。この業界としては珍しく、残業もありません。18時になったらみんな容赦なく帰ります。むしろ定時にならなくてもキリが良ければ帰ります。

    弊社には100%自社で開発した主力のパッケージソフトがいくつかあります。これらが今よく売れています。ただ売れてるだけではなく、売れたあとのことも考えた収入モデルがあります。この辺りはちょっと勝手に書くわけにはいかないです。上司に相談後また後日書くかもしれません。

    この時点で既にラーメン代稼ぎはクリアしています。それが今、ソフトの出来がよいためか、顧客満足度が高いためか、ひとりでに売れ始めています。「満足した顧客が最強の営業マン」とはよく言ったもんで、クチコミで評判が広がっているようです。

    ラーメン代稼ぎをクリアして、波に乗り始めている、といった印象です。乗るしかない、このビッグウェーブに!

    「Lisper採用枠」始めました

    この採用枠については半分本当で半分嘘です。ごねんなさい。会社公式ではそのような枠はありません。

    ですが現在開発者の約半数がLisperです。私も普段はLispをメインに使っていますし、仕事でもツールやスクリプティングにはLispを使っています。
    (前の会社では実際のプロダクト開発にもLispを使っていましたがその話はまた今度。ここも熊本の会社です。)

    そして、4月に入社が決定している新入社員(新卒)も私なんかより断然凄腕のLisperです。そしてさらにさらに、もっと凄腕のLisperを上司が勧誘中です。
    (Lispの凄腕っぽい書き方になりましたが、もともと凄腕のプログラマがLispを使ってるので凄腕Lisperなのです。ちなみに私はただのアベレージユーザーです。)

    「熊本はLispの国」とか「Lisp県」などという発言が最近ネット上で散見されるようになったのをご存知でしょうか。案外これは本当かもしれません。

    ポール・グレアムがこう言ってました。
    10人のLispハッカーを集められないなら、 たぶんあなたの会社はソフトウェアを開発するのに適さない都市にいるんだ
    おそらく熊本なら可能です。Lispの勉強会があるくらいですからね!
    最後は9LISPの宣伝になってしまいました。まだ書いてないことがあるので乞うご期待。

    2012/02/23

    2012/02/23

    日記(転職しました)




    ということで実は先日、熊本本社の独立系ソフトウェアベンダに転職しました。2月から社員として働いています。職種はSE/PGです。お客さん先に行ったりプログラム書いたりしております。

    はてな界隈では華麗な転職話がにぎわいますが、私の話にはあまり派手な内容はありません。ですが下記を見るとわかるように面白い会社です。 社員も多くないので適当に仕事すると会社に大打撃を与えてしまいそうです。だからというわけではありませんが真剣に頑張ります。何よりここで働くのが楽しいのでうまくやってけそうです。
    詳しいことはまた後日書いてみます。

    熊本の小さなISVです。ベンチャーと言った方がいいのかな。で、今後5年間の目標が
    • 収入の自動化
    • 週休5日
    のようです。もちろん汚いことをせずに真っ当に、です。上司が「働いたら負け」と言ってる。

    現時点でも残業なく定時には皆帰る。創業以来、徹夜や赤字が一度もないとのこと。デスマ0でクレームというクレームもこない。というかクレームなんてきたことない。曰く「うちの顧客満足度最強」とのこと。自社パッケージソフト見て思った、そりゃそうだ、できがいいもん。
    • 楽しく働いていっぱい稼ごう
    • 儲かったらみんなで山分け(「3分の1ルール」というのがある。詳細はまた今度。)
    • 無駄なことはせず短くちゃんと働いて、できた時間で楽しく遊ぼう
    というスタンス。

    自社で開発したパッケージソフトがガンガン売れてる。作りこみがすごい。九州だけでなく関東・関西・中国・四国・東北など全国展開。バグ・要望対応もめちゃめちゃ素早い。すごい。

    ひと月そこそこ見てわかったのは、何事にも「事前準備」と「段取」がめちゃめちゃしっかり行われてる。

    見てると「Eric Sink on the Business of Software 革新的ソフトウェア企業の作り方」を思い出す。

    追記

    さて、転職先を書いたので、前の会社のことも書かないと。前の会社(熊本市内)には一生かかっても到底追いつけないスーパーハカーが2人いたり、仕事でLisp(Gauche)使ったりしたので、ネタてんこ盛り、かもしれない。今でもお客さんとこのFreeBSDでGaucheが毎日元気に動いています。

    追記

    続き書きました。


    日記

    会社終わってから上司(であり先輩であり師匠であり友だち)とプールで泳いできた。田舎のスポーツ用品店でなんとなく買ったらspeedo社製だった水着で(笑)高いと思ったんだよな。 設備の整いっぷりに驚きました。年上のお姉様方が多かったです。場所が前の職場の超近くw

    週一くらいで行くといいかもしれない。3年前は定期的に泳ぎに行ってたので復活したい。筋トレも丸4ヶ月経つし、これに水泳もやれば勝つる!

    Speedo(スピード) メンズスパッツ ブラック×ゴールド  ブラック×ゴールド S SD88S08