laclefblog logo

Fri, 21 Nov 2008

Monty Python公式YouTubeチャンネル

YouTubeでの公開によって、ロングテールを狙っている様だ。いやはや、相変わらず言い訳とオチが秀逸。

日本語吹替版DVD買おう。

YouTubeのチャンネルは開いたら自動再生されるから嫌だな。

Thu, 20 Nov 2008

惑星間ネットワーク実験

現在(地上/地下)のネットワークよりも強い保証が必要になる、いつ送信出来るかを知っておく必要がある等々、環境が大きく異なるため、ネットワークの基盤も大きく異なっている。

『カウボーイビバップ』の時代も近くなったか。

Wed, 19 Nov 2008

SSHの脆弱性

2^{-14} の確率で 14bit の平文を取り出すことができる(原文は"A variant of the attack against the OpenSSH implementation verifiably recovers 14 plaintext bits with probability 2^{-14}.")

この文に笑った。正解であると分かる確率のことを言っているらしい。

CTRモードに気を付けろ。

Tue, 18 Nov 2008

近未来Web

向こう側の世界の事をこちら側に伝える線がインターネットであり、もしそれをWebに限るなら、Webの上ではもっと優れた事が出来るはずだ、みたいな。

データを繋ぐ、人を繋ぐ、引っ括めて全てのリソースを繋ぐ。新しいWebは、きっと、現実でもソーシャルでも無い、全てのコンテンツが等しく流通する場だろう。

取扱説明書

取扱説明書有料化の他、薄くしたりもするらしい。

まあ、理由はどうあれ英断ではなかろうか。そもそも、紙の説明書なんて全文検索も出来ないし、場所を取る。勉強本なら最初のページから最後のページまで通して読む必要があるだろうが、説明書など困ったら開く程度のものだ。かく言う僕は、携帯電話もデジタルカメラも無線LANルータも、Webで取扱説明書を公開している機器は全て、PDFファイルをダウンロードして、ファイルサーバに置いている。いざ困ったらこっちの方がアクセスし易い。

しかし、最近のSoftbankは有料化連発で悪印象を与え過ぎ。危ないのか。

Mon, 17 Nov 2008

シロアリと細菌と窒素

空気中の窒素を吸収、アンモニウムに変換、アミノ酸とビタミンに合成。凄いぞシロアリ(の腸の中の細菌)。

敢えてこの環境で、他生物との共存を行っているという選択はいつ決定されたんだろう。

Sun, 16 Nov 2008

Pure

Q - Equational Programming Language の後継として、HaskellやMLに影響を受けまくった文法、レキシカルクロージャ、置き換えモデルによる評価等を特徴とする関数型言語。

流行?のLLVMを用いている。お陰でCライブラリとの連携が容易らしい。

プログラミング言語名でGoogle検索し難いのが難点。

Haskellで作成した関数をPythonから使う

漸くHaskellに慣れてきたが、Pythonの方が使い勝手が良いと感じることに変わりはない。

互いの良さを取り、上手く使い分けるために、HaskellとPythonのFII(Foreign Function Interface)を用いる。

Haskell/GHCでForeign.Cを用いてC共有ライブラリを作成し、Pythonからctypesで使用する。

まず、Haskellで関数を格納したモジュールを書く(hstopy.hs)。

module Htop where
import CString

fact :: Int -> Int
fact n = if n == 1 then 1 else (n * fact (n - 1))

factorial :: Int -> IO Int
factorial n = return (fact n)

mystring :: IO CString
mystring = newCString "hello haskell world!"

foreign export ccall factorial :: Int -> IO Int
foreign export ccall mystring :: IO CString

FFIの性質上、色々をIOモナドで包む必要がある。

次に、ランタイム初期化と脱初期化のためのエントリィポイント用コードを書く(必要最小限、hstopy_init.c)。

static void __attribute__ ((constructor)) mylib_init(void)
{
    hs_init(0, 0);
}

GHCでコンパイルする。

$ ghc -c hstopy.hs -fglasgow-exts
$ ls
hstopy.hi  hstopy.hs  hstopy.o  hstopy_init.c  hstopy_stub.c  hstopy_stub.h  hstopy_stub.o

GHCで共有ライブラリを作成する。

$ ghc -package unix -optl "-shared" -o libhstopy.so hstopy_init.c hstopy.o hstopy_stub.o
  # -package unix は今回は不要?
$ ls
hstopy.hi  hstopy.hs  hstopy.o  hstopy_init.c  hstopy_init.o  hstopy_stub.c  hstopy_stub.h  hstopy_stub.o  libhstopy.so

ctypesで共有ライブラリの関数を用いるために、関数ラッパを書く(hstopy.py)。

#!/usr/bin/python

import ctypes
_lib = ctypes.CDLL( './libhstopy.so')

_lib.factorial.argtypes = [ctypes.c_int]
_lib.factorial.restype = ctypes.c_int

_lib.mystring.argtypes = []
_lib.mystring.restype = ctypes.c_char_p

factorial = _lib.factorial
mystring = _lib.mystring

Pythonから使用する。

$ python
Python 2.5.2 (r252:60911, Oct  5 2008, 19:24:49)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import hstopy
>>> hstopy.mystring()
'hello haskell world!'
>>> hstopy.factorial(4)
24
>>> hstopy.factorial(5)
120

Foreign.Cでもctypesでもポインタも扱えるので、もう少し手の込んだことも出来る(はず)。

Sat, 15 Nov 2008

スパムの収益性

振り込め詐欺の話を未だに見る様に、SPAMが一向に減っていないらしい報告には理由があるということ。

この収益を小さいと見るかは、支出の割合も見ないと何とも言えないが、効果がそれなりにあるというのは認めなくてはならない。

撲滅より共存か?

Fri, 14 Nov 2008

無断転載コンテンツ

Webはコピィ文化。

これはどうするべきなのかなあ。常にコピィよりオリジナルへのアクセスを優先するようにパスを設置すれば良いのかなあ。

勿論、無断でもコピィが可能であるようなライセンスが浸透すれば良いのだけれど、誰が良いかというと受信者側だけか。発信者に優しいWeb。難しい。