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/20
2012/12/10
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接続できるようにしておきたい。
こういうの他にもいろいろあるんですねー。最近買った大人のおもちゃ
これでまた人生が少し楽しくなった。
ちなみにlinuxでgarmin connect使うにあたって、これを利用した。
Raspberry Piはここで買ったら7日で届いた。
日本のとあるところから買うと半年かかると聞いた。
Edge 500はここで買った。
15日かかった。調べてみると税関の関係で他の人もだいたい15〜20日くらいかかってるっぽい。
プレミアムハートレート and ケイデンス付き、というのがポイント。黒が欲しかったけど赤しかなかったので赤を購入。
2012/12/08
2012/11/30
2012/11/26
2012/11/21
2012/11/16
2012/11/15
2012/11/12
2012/11/11
2012/11/10
2012/11/09
2012/11/06
2012/10/27
2012/10/26
ライフメーカー
- 星を継ぐもの (創元SF文庫)
- ガニメデの優しい巨人 (創元SF文庫)
- 巨人たちの星 (創元SF文庫 (663-3))
- 内なる宇宙〈上〉 (創元SF文庫)
- 内なる宇宙〈下〉 (創元SF文庫)
- 創世記機械 (創元SF文庫)
- 未来の二つの顔 (講談社漫画文庫)
ホーガン作品は手元にあと2冊ある。 どちらから読もうか。
2012/10/22
2012/10/19
複数のPCで一つのモニタを共用してるけど今操作しているPCの本体がわからないとき
近況
しごと
7〜9月は出張ラッシュで、長崎、鹿児島、横浜、大阪、香川と忙しかった。横浜出張が多くて、昨日一昨日も横浜出張だった。8月は半分くらい横浜にいた。来週はまた香川(小豆島)。じてんしゃ
7月にロードバイク買って通勤で乗ってる。半袖半ズボンにSPDペダルで通勤してる。にわかなので月に200kmくらいしか乗ってない。上司は月600kmくらい乗ってるけど、ガチの人からすればそれでもまだまだらしい・・・。休みの日はたまにチャリで山を登るなど。チャリはこれ
必要なものがいろいろあって結構金がかかった。5月に結婚披露宴をやったばっかりで、お金がなくてなかなかしんどい。
残るはgarminがあればひと通りOKか?諸事情で携帯のGPSが死んでしまい、Endomondoが使えずツライ。
2012/10/15
2012/10/11
2012/10/09
2012/10/03
2012/10/01
2012/09/30
2012/09/29
2012/09/27
2012/09/22
2012/09/21
2012/09/20
2012/09/15
2012/09/14
2012/09/13
2012/09/12
2012/09/11
2012/09/08
2012/09/05
2012/09/04
2012/09/03
2012/08/28
2012/08/27
2012/08/21
2012/08/18
2012/08/17
2012/08/13
2012/08/03
2012/07/23
2012/07/17
2012/07/11
2012/07/07
2012/07/06
2012/07/02
2012/06/30
自宅のPCからコマンド一発で会社のPCの電源を入れる
会社の私のPCはデフォルトで設定が全てオンになってました(笑)
そこで隣の席の同僚がWOLパケットを投げるGaucheスクリプトを作ってくれたので、その起動スクリプトを会社のsshサーバに置きました。
ということで、手元のPCからssh越しにその起動スクリプトを呼ぶコマンド(shell script一行)を作ったので、自宅だろうが外出先だろうが一撃で会社のPCの電源が入るようになってめでたしめでたし。
会社のPCはwindowsなので試しにリモートデスクトップ(vinagreを使いました)で接続してみましたが快適過ぎる。。
ただし電源を切るにはログインしてshutdownコマンドを叩く必要があります。ついでにこれも手元からコマンドで叩けるようにしてみましたが、基本的にリモートデスクトップで接続することしかないので不要ですね。
結論:会社のサーバーにはgaucheが入ってる
2012/06/29
2012/06/28
2012/06/27
日記(ネット時間を減らすには)
ここ数ヶ月ネットを見る時間が大幅に減ったvalvallowです。読むのに時間がかりそうな記事はpocket(read it later)に登録するというだけの方法。登録することで安心して当分読みません。するとヒマでヒマで仕方ないときに思い出したように記事を消化できます。これはすばらしい。でもtumblrばっかり見てるので+-0
あ、でもtumblrばっかり見てるお陰ではてブが気にならなくなった。もうホッテントリのfeedいらんかも。しかしなんでtumblrはやたらと吉木りさ画像ばかり流れてくるん?
週末は初ボルダリングなので楽しみです。
2012/06/25
2012/06/22
2012/06/20
2012/06/19
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 xxxxxxxxxxxxgitの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/06/18
2012/06/16
2012/06/14
2012/06/13
2012/06/07
2012/06/06
2012/06/05
2012/06/04
2012/06/01
2012/05/31
2012/05/30
2012/05/29
2012/05/28
2012/05/24
2012/05/23
2012/05/23
- L'eclat des jours(2012-05-23)
- 第1回 関数型言語勉強会 大阪に行ってきました « i pensieri stretti & il viso sciolto.
- 第1回 関数型言語勉強会 大阪に行って話してきた感想とか #fpstudy - 日々常々
- 第一回関数型言語勉強会懇親会に出て分かった多くのこと #fpstudy - 森理 麟(moririring)のプログラマブログ
- 第1回 関数型言語勉強会に参加した+InverseFizzBuzz - .
- 第1回 関数型言語勉強会 大阪に参加しました « 仙人の心得
- 「第一回関数型言語勉強会 大阪」に参加しなかった人へ
- 括弧と確固の間 - 第1回 関数型言語勉強会
2012/05/21
2012/05/18
2012/05/17
2012/05/16
2012/05/15
2012/05/13
2012/05/12
2012/05/08
2012/05/07
2012/05/02
2012/05/01
2012/04/28
2012/04/27
2012/04/24
2012/04/23
2012/04/21
2012/04/20
2012/04/17
2012/04/15
2012/04/14
2012/04/13
2012/04/11
2012/04/10
.NET2.0でもラムダ式やvarが使える
2012/04/09
2012/04/09
- 誤読の世界
- Island Life - Gauche-tk
- 相手に「寛容さ」を強要する傲慢 - FANTA-G - 楽天ブログ(Blog)
- Pro Git - Pro Git 3.5 Git のブランチ機能 リモートブランチ
- Redmineのテーマを自作してみた « kwLog
- VimでのSchemeプログラミング - 再帰の反復
- 改めてGaucheとrlwrapの連携について - 再帰の反復
- Kyoto.lispを作ります - Kyoto.lisp
- Kyoto.lisp TT #1 開催決定 & 発表者募集 - Kyoto.lisp
- 合理的で自由な働き方:投資十八番
- ブログの消失について — Gist
2012/04/08
2012/04/07
2012/04/06
2012/04/05
2012/04/04
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/04/02
2012/04/02
- いかにしておっぱい画像をダウンロードするか~2012 Scheme(Gauche)編 - 円環は無慈悲な理の女王
- Emacsで書いたorg文書とToodledoを同期するorg-toodledo - 勉強日記
- Google Tasks API - Google Apps Platform — Google Developers
- Gauche > Archives > 2012/03/29
- Universal Shell Programing Laboratory
- UEC - usp engineers' community - インフォメーション
- 25 useful Bug and issue tracking software
- 付録B フリーなバグ追跡システム
2012/04/01
2012/03/30
2012/03/29
2012/03/28
2012/03/27
2012/03/26
2012/03/25
2012/03/24
2012/03/23
2012/03/22
2012/03/21
2012/03/20
2012/03/19
2012/03/15
2012/03/14
2012/03/13
2012/03/11
2012/03/10
リスト ("*" (2 3 4) (a b) "!" (8 9 0)) から文字列 "*2a!8", "*2a!9", "*2a!0", "*2b!8" ...を作る
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"
2012/03/09
csvをsqlにする(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,500csv2sqlに渡すと
$ 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
shell scriptでオプション引数を除いた引数を得る
#!/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
1行目無視
$ cat hoge.txt | sed '1d'
追記
これまた@kikuchan98先生に教えてもらいました!$ cat hoge.txt | tail -n +2
csvをmapping
$ 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の方が加工されてわたってくることが多いもんな。使ってて不便だった。2012/03/07
KPF(熊本プログラミングフリークス)の勉強会を開催します
2012/03/31(土)の13時からです。会場は東海大学熊本キャンパスにお世話になります。ひやかし、のぞき見、歓迎します。
LT応募多すぎて入り切らないかもしれません(笑)
C#でREPL(Windows)
2012/03/06
2012/03/05
2012/03/05
- Gauche用OpenCVラッパー、Gauche-CVお披露目 - aharisuのごみ箱
- DB操作ツール Emacs DBI を作ってみた - 技術日記@kiwanami
- セキュリティさくら 勉強会#3 - self.extract
- 【みんカラ】 第3回 熊本セキュリティ勉強会 #セキュリティさくら|まいふぇいばりっつ|ブログ|俺様ななみん - 車・自動車SNS(ブログ・パーツ・整備・燃費)
- neocomplcacheを利用したGauche用補完プラグインgosh_completeを作ってます(インストール篇) - aharisuのごみ箱
- Gauche-SDLでライフゲーム - aharisuのごみ箱
- Gauche-SDLをWindowsで動かす - aharisuのごみ箱
- ***でSTGを作りますが何か?:いで庵
日記(業務アプリ開発)
日記(2012年)
2012/03/04
2012/03/04
- 『Emacs実践入門』を書く際に心掛けた点について。 - 日々、とんは語る。
- 3連続でTwitterに書くぐらいならブログで書いたほうがいい - ARTIFACT@はてブロ
- プログラマのためのUXチートシート — ありえるえりあ
- 自分をすごい人間だと過信していたから、人のことを話す時は悪口しか言えなかったんです。 - tumbllow
- 司馬遼太郎先生がね、物事を始めるとき、すぐに意味や答えを見つけようするのはやめなさい、って言ってたよ。... - tumbllow
- よいと説明しないとわからないものはたいしてよくない - tumbllow
- 楽しさにはビジネス価値があります――結局、モチベーションこそがプログラマの生産性を左右するのです。 - tumbllow
- 駄目な人ほど人に忠告したがる - tumbllow
- 10人に 9人は凡人だが、10人に 9人は自分は凡人ではないと思っている - tumbllow
- フルタイムのプログラマとして働き出して間もない頃、 ある有名なハッカーと話していて、... - tumbllow
- 僕の見る限りでは、自称常識人はキチガイ。 - tumbllow
2012/03/03
2012/03/02
2012/02/29
2012/02/28
2012/02/27
2012/02/26
2012/02/25
2012/02/24
日記(3分の1ルール)
昨日の日記がまさかのホッテントリ入りで少々ビビりました。
どうしてこうなった・・・。ビビりなので今朝出社して上司に報告しときました。上司「いいぞもっとやれ」。ということもあり、せっかくなのでこの流れに乗って続きを書いてみます。ただ相変わらず派手な内容はありません。
今日は以下のことについて書いてみます。
- 「3分の1ルール」
- ラーメン代稼ぎ
- 「Lisper採用枠」始めました
「3分の1ルール」
「3分の1ルール」というものがあります。これは何のルールかというと「儲かったらみんなで山分け」という会社のスタンスにおける利益分配ルールです。割り振りは
- 会社
- 社長(追記:というか株主だね)
- 社員
残りの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
日記(転職しました)
ということで実は先日、熊本本社の独立系ソフトウェアベンダに転職しました。2月から社員として働いています。職種はSE/PGです。お客さん先に行ったりプログラム書いたりしております。
はてな界隈では華麗な転職話がにぎわいますが、私の話にはあまり派手な内容はありません。ですが下記を見るとわかるように面白い会社です。 社員も多くないので適当に仕事すると会社に大打撃を与えてしまいそうです。だからというわけではありませんが真剣に頑張ります。何よりここで働くのが楽しいのでうまくやってけそうです。
詳しいことはまた後日書いてみます。
熊本の小さなISVです。ベンチャーと言った方がいいのかな。で、今後5年間の目標が
- 収入の自動化
- 週休5日
現時点でも残業なく定時には皆帰る。創業以来、徹夜や赤字が一度もないとのこと。デスマ0でクレームというクレームもこない。というかクレームなんてきたことない。曰く「うちの顧客満足度最強」とのこと。自社パッケージソフト見て思った、そりゃそうだ、できがいいもん。
- 楽しく働いていっぱい稼ごう
- 儲かったらみんなで山分け(「3分の1ルール」というのがある。詳細はまた今度。)
- 無駄なことはせず短くちゃんと働いて、できた時間で楽しく遊ぼう
自社で開発したパッケージソフトがガンガン売れてる。作りこみがすごい。九州だけでなく関東・関西・中国・四国・東北など全国展開。バグ・要望対応もめちゃめちゃ素早い。すごい。
ひと月そこそこ見てわかったのは、何事にも「事前準備」と「段取」がめちゃめちゃしっかり行われてる。
見てると「Eric Sink on the Business of Software 革新的ソフトウェア企業の作り方」を思い出す。