最近のラディッシュ

一ヶ月以上前に撒いたのだけど、まだまだだ。

1324628922

来年はベランダ菜園も増やしていこうかと。リーフ系の野菜を育てておくと便利なので。

UNIXネットワークプログラミング入門

Nodeを触っているのは楽しいんだけど、じゃぁなんか作りたいものがあるのかと言われたらイマイチ思い浮かばない。リアルタイムウェブ〜とか言っておいて(言ってないけど)アイデアが浮かばないってのはまずかろうとソケットプログラミングの本を読んでみることにした。

ソケットプログラミングを覚えるにはいい本だった。サンプルはCで書いてあるんだけど、システムコールとかの低レベルのモジュールはPerlもPythonもほとんど一緒なので、動きがイメージできるようになって良い感じ。本を読み終えたついでにSocketServerのソースコード読んでみたけど、理解度がさらにあがった。

ProductName UNIXネットワークプログラミング入門
雪田 修一
技術評論社 / ?円 ( 2003-06-05 )


本の内容は、

  1. 一対一通信
  2. 一対一非同期通信
  3. 一対多通信
  4. 一対多非同期通信

非同期はselect使っています。8章でデーモンの入門の章だったんだけど、なんでforkを二回するのかわかりやすい説明ではなかったので、ここを読むといいですね。

3章のチャットっぽいものをPythonとPerlで書いてみた

server

import socket

host = socket.gethostbyname('localhost')
port = 50000

soc_waiting = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
soc_waiting.bind((host, port))
soc_waiting.listen(1)
print "server running at %d\n" % port

(soc, client_addr) = soc_waiting.accept()
soc_waiting.close()

print "Go ahead!"

msg = ""

while True:
    msg = raw_input()
    soc.send(msg)
    msg = soc.recv(512)
    print msg
    if msg == "quit":
        break

soc.close()

Client (Python)

import socket

host = socket.gethostbyname('localhost')
port = 50000

soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
soc.connect((host,port))

print "Wait\n"

while True:
    msg = soc.recv(512)
    print msg
    msg = raw_input()
    soc.send(msg)
    if msg == "quit":
        break

soc.close()

Client (Perl)

#!/usr/bin/env perl

use IO::Socket;

$soc = new IO::Socket::INET("localhost:50000");

die "IO::Socket : $!" unless $soc;

print "Wait\n";

my $msg;

while (1) {
  $soc->recv($msg, 512);
  print $msg,"\n";
  $msg = <STDIN>;
  chomp($msg);
  $soc->send($msg,512);
  last if $msg eq "quit";
}

close($soc);

Unixネットワークプログラミング欲しいなぁ

ProductName UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI
W.リチャード スティーヴンス
ピアソンエデュケーション / 8400円 ( 1999-07 )


おまけ(なんか考えた)

今度静岡でおまちバルがあるように、静岡はバルブーム、バルバブル、バブルボブル。で、バルイベントにはハッシュタグとtwitterでつぶやいて盛り上がろう的な今時なソーシャルな仕掛けも一緒についてくるんだけど、これがまじでつまらない。

ハッシュタグが漢字混じりのひらがなとかあり得ないでしょう。そもそも酒飲むイベントで打たせるか?と。全員がiPhoneに向かってカチャカチャやってるIT系のオフじゃないんだから。あと、飲んでる時にハッシュタグでtweetおいかけるのもめんどくさい。結局送りっぱなしになっちゃうので、だれかがまとめたのを読み返すくらいで、全然リアルタイムじゃないね。

というわけで、バルのtweetシステムに不満があったのでソーシャルでスマホ持ちの我々が使って楽しいシステムを考えてみた。

バルラーにちまちまと端末を打たせないように店の入口に「店なうだらー、ハッシュタグ、ジオコード」が入ったQRコードを貼っとく。これで、カメラで撮るだけでtweetできるようになるので酒が良い感じに入っていてもOK。パンフにつけておいてもいいかも。そっちは宣伝で、人気度調査用にしてもいいかもしれん。

で、サーバー側をリアルタイムウェブで、twitterのストリーム読みながらマップ上にマッピングさせていくと。ジオコードの頻度で明るくするとかでもいいしね。そうすればリアルタイムで楽しい。ユーザーの動向を線でつないでも面白いかも(どういう順番で店をまわってんのかとか)。主催者側にもそういうデータが集まればいろいろ役に立つでしょう。

そういうシステムをNode.jsでつくったら楽しいだろうなぁと思った。

ブロックソートを理解した

データ圧縮に関して書いてある1,2章が面白かった。

個人的にはブロックソートの説明がわかりやすかったので、それだけで満足だった。

人参の葉のふりかけを作った

先日収穫した人参の葉っぱでふりかけを作ってみた。

1324380811

これはなかなか美味しかった。

Cのポインタとか

最近はずっとUNIXネットワークプログラミングの写経をやっているんだけど、PerlとかPythonからプログラミングにに入った僕としてはCって書いてて楽しくないですね。

ProductName UNIXネットワークプログラミング入門
雪田 修一
技術評論社 / ?円 ( 2003-06-05 )


それからポインタの理解がイマイチで、こういったものが何じゃこりゃ?となってしまう。

bind(soc_waiting, (struct sockaddr *)&me, sizeof(me)) == -1)

というわけで、C言語ポインタ完全制覇を読んでみたらこれは良書だった。

ProductName C言語ポインタ完全制覇 (標準プログラマーズライブラリ)
前橋 和弥
技術評論社 / 2394円 ( 2001-01 )


Cのメモリの使い方がかなりイメージできるようになって嬉しい。CとかJavaなんかは中古で良書が安い値段で手に入るのでそれはそれで嬉しいが。

そもそもなんでソケットプログラミングなんてやり始めたかというと、先日の勉強会で、「リアルタイムウェブで作りたいもののイメージがわかないんだよねー」と言ったんだが、結局それってリアルタイムな通信のサンプルをあんまやったことがないから、アイデアが浮かばないんじゃないかと思ったからなんだけど、なぜかシステムコールとかそっち方面に興味がわいたという。ノンブロッキングとか上っ面の概念ははいはい分かりますよーって感じなんだけどOSレベルではどうなんっているんじゃろか?と

ProductName 詳解 Linuxカーネル 第3版
Daniel P. Bovet
オライリー・ジャパン / 6930円 ( 2007-02-26 )


どこまで追いかけるべきかわからんけどね。

芝川の京という蕎麦屋さん

グロースヴァルトSANOにお歳暮を買いに行ったついでにそのまま芝川まで上がって京でお昼ごはんを。

掘っ立て小屋っぽいというか、ストーブが付いているにもかかわらず寒いですな。

1324291600

天ぷらが美味い。ショウガの薄切りの天ぷらが美味しかった。海老は息子にとられた。

1324291602

僕はもちろんセリざる。

1324291604

寒さに耐えかねて、子供と妻は暖かい蕎麦

1324291606

ここは美味いね。

そういえばまだソビッてない

今日の畑(111217)

ほうれん草が寒さでやられてた。葉物は難しいなぁ。

1324196032

結局人参しかとるものがない。

1324196034

娘に少し間引かせたら、なかなか形が良かった。1月終りくらいに良い感じの人参が収穫できるはず。

1324196029

帰りにいけたにさんによって根知男山をゲットしたついでに、畑を見せてもらいながら畑談義(というかほとんどレクチャーをうけている)をしてきたんだが、あんま除草に熱心になりすぎんのも良くないのかな?という自然農の方向にちょっと傾いた。

確かに、畝から外れた人参なんかは共生気味にスクスク育っているしなぁと。

とはいえ、家庭菜園で除草しないと色々とあるからなぁ、南隣のおじさんはそこらへんがおおらかでやりやすいんだけど、隣が除草しまくっていると気を使うんだよなぁ。

来年はもう少し多品種少量生産でいこうかなと思っているのと、今年の冬はきちんと耕して肥料を入れるという来期への準備をきちんとしたい。

ProductName 自然農の野菜づくり
高橋 浩昭
創森社 / 2000円 ( 2010-10-15 )


物理的なメカニズムを考慮した膜透過性の指標でヨサゲなやつを探している(<-いまここ)

膜透過という事象を物理的に考えた場合、脂質二重膜にぶつかって突き抜けるというモデルだと思うんで、よくQSPR解析で使うようなPSA(TPSA)とかClogPみたいな溶解性に関わる指標とかMWTとかVolのような大きさに関わる指標は微妙に違うと思うんだよねー。そもそもグローバルな指標でいいのかと。

どっちかというと侵入の際の表面積の相性と、進入時の切断面とかその後の脂溶性面積が重要なんかね?と。溶けるけど膜透過が悪いという化合物も結構あるしね。

というわけで、論文を探しているんだけどなかなかいいのが見つからない。

というわけで、面白そうな論文があったら教えてもらえると嬉しいです。

ProductName Introduction to the Blood-Brain Barrier: Methodology, Biology and Pathology

Cambridge University Press / 8978円 ( 2006-12-14 )


パーフェクトJava

Part1の概論がわかりやすかった。とはいえ15章のストリーム以降の理解はあやふやだけど。

ProductName パーフェクトJava (PERFECT SERIES) (PERFECT SERIES 2)
アリエル・ネットワーク株式会社
技術評論社 / 3780円 ( 2009-09-24 )


Part2のサーバプログラミングは興味がわかなかったので大して読まなかったが、Part3のGUIは面白かった。

というわけで、Part1をじっくり読む本かな。

JavaとAndroidの書籍はちょくちょく買う割にはたいして身についてないという、、、

来年はJavaとAndroidに真面目に取り組む年になりそう。

OS Xでxzを使う

Pythonのソースをダウンロードしようとしたらxz形式のサイズが妙に小さかったので、なんじゃこれと思ったら昔見たことあったわと。

macbookでも使いたかったので

brew install xz
brew install gnu-tar

で入れた。ちなみにコマンドはtarじゃなくてgtarになる。

圧縮は

gtar Jcf sample.tar.xz sample

解凍は

gtar Jxf sample.tar.xz

コマンドもわかりやすいので今度からはこっちを使おうっと。