ときどきの雑記帖 リターンズ

最新ページへのリンク
目次ページへのリンク

前の月へ 2007年5月
次の月へ 2007年7月

ホームへ

忠君愛国にもおのずと限度があってしかるべきとは思う、僕も

皇国の守護者4 壙穴の城塞
    

2007年06月30日

More Effecive C++

ぢつはまだまともに中身を見ていませぬ(笑)

推薦図書/必読書のためのスレッド PART34
http://pc11.2ch.net/test/read.cgi/tech/1173930196/981-

981 デフォルトの名無しさん [sage] Date:2007/06/29(金) 23:36:01  ID: Be:
    More Effective C++の新訂版クソw

    買うな。今から訳者に貴様ら本を出版するなって抗議する

982 デフォルトの名無しさん [sage] Date:2007/06/29(金) 23:39:07  ID: Be:
    どの辺が?具体的にお願いしたい。 

983 デフォルトの名無しさん [sage] Date:2007/06/29(金) 23:43:25  ID: Be:
    え、あれだけ叩かれてまた糞とか嘘だろ?
    明日本屋にあったら立ち読みしてみるか 

984 デフォルトの名無しさん [sage] Date:2007/06/29(金) 23:49:44  ID: Be:
    >>981
    詳しいレポートよろ 

985 デフォルトの名無しさん [sage] Date:2007/06/30(土) 00:26:28  ID: Be:
    >>981
    人柱乙。詳細頼む。

986 デフォルトの名無しさん [sage] Date:2007/06/30(土) 00:36:44  ID: Be:
    Amazonから明日届くおれは勝ち組…? 

987 デフォルトの名無しさん [sage] Date:2007/06/30(土) 00:39:56  ID: Be:
    >>986
    紀の国屋に平積みしてあったからさw 

988 デフォルトの名無しさん [sage] Date:2007/06/30(土) 00:49:45  ID: Be:
    「ほとんど常に」って英語でなんていうっけ?

989 デフォルトの名無しさん [sage] Date:2007/06/30(土) 00:54:33  ID: Be:
    >>988
    エキサイトやOCNにかけたら「Always almost」「Almost always.」って出てきた

    …そういう読んでて疲れる日本語ばかり書いてあるの? 

990 デフォルトの名無しさん [sage] Date:2007/06/30(土) 01:06:32  ID: Be:
    これは、仮想基底クラスコンストラクタの実引数は、作成
    されるオブジェクトのほとんどの派生クラスが与えねば
    ならないからである。

    これすぐ意味解かる?俺コード見れば言ってる事はわかるけど
    本文だけ見て等価なコード書いてって言われるとちょっと苦慮すると
    思うw 

991 デフォルトの名無しさん [sage] Date:2007/06/30(土) 01:12:39  ID: Be:
    それはその概念自体がわかりにくいような気がする 

992 デフォルトの名無しさん [sage] Date:2007/06/30(土) 01:23:11  ID: Be:
    >>990
    日本語にすらなっていないな(w
    仮想基底クラスコンストラクタへ与える実引数は大抵の場合、オブジェクトを作成する
    派生クラスが与える必要があるからだ。

    じゃだめ? 

993 デフォルトの名無しさん [sage] Date:2007/06/30(土) 01:29:14  ID: Be:
    まぁ、読んでるといたるところでこんなめちゃめちゃ
    日本語出てくるよ。特に概念的にこれ理解したいんだよなって
    ところが全滅していると思われる。

    買わん方がいいと思う。 

994 デフォルトの名無しさん [sage] Date:2007/06/30(土) 01:29:18  ID: Be:
    >作成されるオブジェクトのほとんどの派生クラス
    がよくわからん 

995 デフォルトの名無しさん [sage] Date:2007/06/30(土) 01:30:04  ID: Be:
    >>992
    うん、そっちのがわかりやすい
    ってか、翻訳した人は意味分かってるのか?w 

996 デフォルトの名無しさん [sage] Date:2007/06/30(土) 01:34:56  ID: Be:
    原書買ったほうが分かりやすいって、本当だったんだ… 

997 デフォルトの名無しさん [sage] Date:2007/06/30(土) 01:34:59  ID: Be:
    まぁ訳がまともじゃないってのは訳者が理解出来てないっていう証拠だよな
    わかってる訳者なら意訳的にわかりやすく書き直せれる 

998 デフォルトの名無しさん [sage] Date:2007/06/30(土) 01:39:33  ID: Be:
    >慶應義塾大学大学院政策・メディア研究科

    こりゃ全く理解してなさそうだ 

999 デフォルトの名無しさん [sage] Date:2007/06/30(土) 01:40:13  ID: Be:
    つかこれで博士とかほんとにどうなってるんだって思う。 
推薦図書/必読書のためのスレッド PART35
http://pc11.2ch.net/test/read.cgi/tech/1183139960/13-


13 デフォルトの名無しさん [sage] Date:2007/06/30(土) 09:52:40  ID: Be:
    よし今日も朝から新訂版読むぞ

    はぁ読むたびに怒りがこみ上げる本ってひさびさだなw 

14 デフォルトの名無しさん [sage] Date:2007/06/30(土) 10:00:18  ID: Be:
    人柱のためにリンク貼っときますよ(^^

    新訂版 More Effective C++
    ttp://www.amazon.co.jp/dp/4894714760 

15 デフォルトの名無しさん [sage] Date:2007/06/30(土) 13:11:59  ID: Be:
    新訂版って前のと比べて新しい内容とかあるの? 

16 デフォルトの名無しさん [] Date:2007/06/30(土) 14:13:22  ID: Be:
    訳がまともになってるんか? 

17 デフォルトの名無しさん [sage] Date:2007/06/30(土) 16:28:48  ID: Be:
    >>16
    なってないっすよw
    章が進んで言語の深い機能になってくると訳が破綻してますw
    たぶんC++書いたことないと思われるw 

18 デフォルトの名無しさん [sage] Date:2007/06/30(土) 16:34:48  ID: Be:
    テクニカルライティングの技術がある奴らに書かせて出版してくれよ
    大学受験の現代文読んでる気分になってくる 

まあわたしはイタイ翻訳のできの本をネチネチチェックするのが好きなのでいいんですけど、 買うときはぜひ一度中身の文章を見てから判断したほうがよさそうですよ。 C++のことがまるでわかっていないであろう人がやくしたトンデモ本というのは 全盛期にも買ったことありますねえ。 タイトルも忘却してしまいましたが。たしか原著者はシャピロだったと思うのですが。

んで思うのですが、こういう「こ れ は ひ ど い」翻訳の本が出るのと、 それすらもでないのとどちらがマシなのだろうかと。 まさか出版社も「隗から始めよ」を実践しているわけじゃあないよねえ(笑)

本物のプログラマは

ネタ元 → 初心者のためのプログラミング言語ガイド Part4 547

実はオチがあります。

$ ls -l 本物のプログラマ
lrwxrwxrwx 1 名無しさん 10 Nov 16 07:43 本物のプログラマ -> /home/名無しさん/反面教師

読み方

プログラミング言語 Lua  その3
http://pc11.2ch.net/test/read.cgi/tech/1160799232/


234 デフォルトの名無しさん [sage] Date:2007/06/26(火) 19:34:06  ID: Be:
    Lua、LL魂で紹介されるらしいね 

235 デフォルトの名無しさん [] Date:2007/06/28(木) 21:53:59  ID: Be:
    Luaって何て読むんですか?

    ぅあ?

236 デフォルトの名無しさん [sage] Date:2007/06/28(木) 21:58:04  ID: Be:
    >>235
    ルア 

237 デフォルトの名無しさん [sage] Date:2007/06/28(木) 21:58:44  ID: Be:
    ポルトガル語で月って意味らしいし
    英語だとルナだから ルアじゃない? 

238 デフォルトの名無しさん [] Date:2007/06/28(木) 22:06:53  ID: Be:
    >>232
    誤爆じゃねーじゃん 

239 デフォルトの名無しさん [sage] Date:2007/06/28(木) 22:30:30  ID: Be:
    「ぅあ」ワラタ

240 デフォルトの名無しさん [sage] Date:2007/06/28(木) 22:54:58  ID: Be:
    すいませんそのまま打ったらぅあなのでなんてよむのか分からなくて 

241 デフォルトの名無しさん [sage] Date:2007/06/29(金) 00:08:09  ID: Be:
    「ぅあ」は良いなw 

242 デフォルトの名無しさん [sage] Date:2007/06/29(金) 14:58:30  ID: Be:
    萌えるな 

243 デフォルトの名無しさん [sage] Date:2007/06/29(金) 18:25:03  ID: Be:

    プログラミング言語ぅあ その4

244 デフォルトの名無しさん [sage] Date:2007/06/29(金) 21:14:15  ID: Be:
    Luaの呼び方は「ぅあ」であることが決定された瞬間だな。 

245 デフォルトの名無しさん [sage] Date:2007/06/29(金) 21:19:09  ID: Be:
    瞬間はいいが、次スレなんてどんだけ先だよw 

246 デフォルトの名無しさん [sage] Date:2007/06/29(金) 21:28:27  ID: Be:
    >>245
    あと2~3年だな 

247 デフォルトの名無しさん [sage] Date:2007/06/29(金) 22:27:28  ID: Be:
    ぅあって、単なる配列も整数のインデックスなのに辞書みたいに毎回ハッシュを
    計算するって本当ですか?
    あとインデックスが0じゃなくて1から始まるらしいんですけど、何故なんでしょう・・・
    この点が無ければ、スクリプト言語で今のところ最有力候補なんですが・・・ 

248 デフォルトの名無しさん [sage] Date:2007/06/29(金) 23:00:05  ID: Be:
    >247
    配列とハッシュ表が区別されない同一のデータ構造なのは本当。
    でも、ふつうに配列と使っているときには、配列用のパートにつっこまれてハッシュ
    なんか計算しないよ。
    つまり効率が気になるようなら、そこは効率わるくならないようになっている
    と考えてよい。

    なぜ1から始まるかは知らん。

249 デフォルトの名無しさん [sage] Date:2007/06/30(土) 08:13:12  ID: Be:
    1から始まるぐらいで嫌ならぅぁあ向いてないよ 

250 デフォルトの名無しさん [sage] Date:2007/06/30(土) 11:21:38  ID: Be:
    >>247
    その辺を改良したのがsquirrelなんじゃね?
    squirrelもなんかよみにくね? 

251 デフォルトの名無しさん [sage] Date:2007/06/30(土) 16:17:40  ID: Be:
    よみにくね? 

abandon ther support for bcc(ruby)

[ruby-dev:31098]

>公式にはメンテナは小西さんなのですが、お忙しいらしく反応がず
>っとありませんね。
>他のWindows版メンテナの間では「もうbcc32版サポートは打ち切ら
>ざるを得ない」という意見もあります。
>
>というわけで、環境を持っててコンパイルする気力がある人が愛の
>手を差し伸べないと厳しそうです。
メール自体はみているのですが、最近の変更について行けないことと、実際まと
まった時間がとれない状態にあります。
以前にも、サポートのお話がありましたが、正直メンテを続けられないので、ど
なたかメンテナを変わっていただけないのであれば、公式的にはbcc対応はなし
ということで仕方がないと思います。
心苦しいですが、そのようにお願いします。

まあ仕方がないといえば仕方がない。 どのくらい使っていた人がいるか疑問だし、VC Toolkit → VC EE と無料で入手できるようになってしまってはメリットもないしねえ。 VCのほうも問題があるっちゃあるんだけど(DLL HELL!)。

わ○くま

参加者のひとり(あ、ふたりか?)のblogの内容に言及したことがありますが、 なんつーか、「ひでえ」

わんくま同盟ってウザくね?
http://pc11.2ch.net/test/read.cgi/tech/1182120520/283


283 デフォルトの名無しさん [sage] Date:2007/06/30(土) 13:26:53  ID: Be:
    わんくまは持ってせいぜい来年までじゃないかねえ。
    MSKKの開発者/ITPro向けマーケ部門が内部崩壊起こしたのを知らずに、
    毎月のように健気に勉強会開いてるのを見てるとちょっと可哀想な気もする。
    残念ながら、踊らされるだけ踊らされて、その貢献が報われることはもうないんだよ。

284 デフォルトの名無しさん [] Date:2007/06/30(土) 13:49:37  ID: Be:
    >>283
    >MSKKの開発者/ITPro向けマーケ部門が内部崩壊起こした
    君、これについて詳しく報告しなさい 

285 デフォルトの名無しさん [sage] Date:2007/06/30(土) 14:22:21  ID: Be:
    まぁマイクロソフトの宣伝員なんだからいいんじゃね?
    ノセられてマイ糞のオモチャで開発してる奴らは可哀相だと思うが。
    近々オープンソースへの作り替えで地獄を見るだろうな。 

まーるち まーるち

  OKWave pascal

pascalのプログラミングの質問で、

「名前」と「得点」を入力して得点の高い順に並べ替え、順位をつけて表示するプログラ
  ミングを教えてください。お願いします。



pascalのプログラミングの質問で、 「名前」と「得点」を入力して得点の高い順に...
  - Yahoo!知恵袋
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1012029445
  
pascalのプログラミングの質問で、

「名前」と「得点」を入力して得点の高い順に並べ替え、順位をつけて表示する
  プログラミングを教えてください。お願いします。

補足
たしかにそうですね。気を付けます。
自分は得点のプログラムはできましたが、順位をつけて表示するところが、わかりません。
if文でできるのかはかんがえてみたのですが・・・。
  
OKWave pascal
http://okwave.jp/qa3126203.html
pascalのプログラミングの質問なんですが・・・
何個かの点数のデータをもらって、その平均、総和、最大値、最小値、標準偏差を計算する
プログラムを教えてください。お願いします。

pascalのプログラミングの質問なんですが・・・ 何個かの点数のデータをもらって、...
- Yahoo!知恵袋
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1412029529

pascalのプログラミングの質問なんですが・・・何個かの点数のデータをもらって、...

pascalのプログラミングの質問なんですが・・・
何個かの点数のデータをもらって、その平均、総和、最大値、最小値、標準偏差を計算するプログラムを教えてください。お願いします。

補足
標準偏差の部分のヒントでもいいのでお願いします。
  

至急お願いします。学校の問題なんですが、後で見直すので回答お願いします。 - Yahoo!知恵袋 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1012001770 至急お願いします。学校の問題なんですが、後で見直すので回答お願いします。 5角形ABCDEの各辺と2つの対角線の長さa,b,c,d,e, f,gを入力し,5角形の面積を求めるプログラムを作成せよ 対角線の引き方は、自由です。 補足 すいませんC言語です。 至急お願いします。学校の問題なんですが、後で見直すので回答お願いします。 - Yahoo!知恵袋 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1112001456 至急お願いします。学校の問題なんですが、後で見直すので回答お願いします。 5角形ABCDEの各辺と2つの対角線の長さa,b,c,d,e, f,gを入力し,5角形の面積を求めるプログラムを作成せよ 補足 プログラムでお願いします。 対角線は、dとcでヘロンでお願いします。 至急お願いします。学校の問題なんですが、後で見直すので回答お願いします。 至急お願いします。学校の問題なんですが、後で見直すので回答お願いします。 main関数から実数データa,bを関数に渡して,その和と差を計算して表示する プログラムを作成せよ.ソースファイル名は「06-26-1.c」とせよ. 至急お願いします。学校の問題なんですが、後で見直すので回答お願いします。 - Yahoo!知恵袋 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1212001197 円の半径rを入力して,円周と面積を計算するプログラムを作成せよ.ただし, 円周と面積を計算する部分を,それぞれ関数ensyu,関数mensekiとして作成せよ. ソースファイル名は「06-26-2.c」とせよ. nを読込んで,n!(nの階乗)を計算し,表示するプログラムを作成せよ.ただ し,n!を計算する部分を関数kaijyoとして作成せよ.ソースファイル名は「06-26-4.c」 とせよ. よろしくお願いします。

「後で見直すから回答くれ」というのは どういう思考回路から出てきたものなんだろうか?

どちらかというと

機動警察パトレイバー » 機動警察パトレイバー » 篠原重工 名刺ケース | 萌える美少女キャラクターグッズ販売の二次元コスパ

シャフト・エンタープライズのほうが欲しいな。名刺入れなら。 → シャフト・エンタープライズ - Wikipedia

今月の皇帝陛下(ヤングキングアワーズ ナポレオン・獅子の時代)

この日ロディで川を渡った男たちの中から ナポレオン帝国を支える多くの軍人が現れる

ランヌ
1804年元帥昇進
マッセナ
1804年元帥昇進
マルモン
1809年元帥昇進
ヴィクトール
1807年元帥昇進
ベルティエ
1804年元帥昇進
ミュラ
1804年元帥昇進
1808年ナポリ王
オージュロー
1804年元帥昇進
スーシェ
1811年元帥昇進

ロディは伝説となった

ここに名前の挙がっていない元帥だと、 ダヴー、ネー、ベルナドット、ウ-ディーノ くらいしか記憶にないな。

2007年06月29日

■_ (他人の)ソースコードを読もう

Part1 オープンソース/C言語に学ぶ「ソースコードの読み方」:ITpro

<> 自分の話をすると、いわゆる教科書的な本に書いてあったプログラム片では 「簡単のため××は省略して…」とかあったときに そこをどう実装するかが一番知りたいんだってば、莫迦 という状況が何度かありまして、 そんなときにGNUプロジェクトのソースを見て勉強したことがあります。 てか、入社してしばらくはあまり仕事も割り振られないので、 空き時間に一生懸命GNUユーティリティのソース読んでいたりしました ;-)

さすがにgcc(でも当時のバージョンは2が出るかでないかくらいだったので 今に比べれば結構読めなくもなかったような気もしますが)とか Emacsには手を出せませんでした。 ソースコードを読む技術も持ち合わせてなかったしね。

■_ あの言語

http://gauc.no-ip.org/wiki.cgi/private?page=Blog%2F2007%2D6%2D28


あの言語 (?) が LL に登場か!?
Web ページの更新に注目です。(私だけ?)

Eで始まる言語?

■_ 死亡確認ですか

砂糖より甘く

FEEDBRINGER is dead

王大人「死亡確認!」

FEEDBRINGER.net 開発室 がなんだか痛々しい.

記事自体は残っていて,サービスリリースのエントリは こちら.

まだ幾つかアドレスが復旧できてないblogがあるんだよなあ。 困った。

■_

【特集】Advanced/W-ZERO3 [es](第1回)ケータイライクな“スリムデザイン”の本質に迫る!:デジタルARENA
【特集】Advanced/W-ZERO3 [es](第2回)コミュニケーション機能の進化を探る:デジタルARENA

機種変更できるのいつぐらいになるかなあ。 アキバにいっても多分新規契約でしか買えないだろうし。

■_

The Security Development Lifecycle : Lessons Learned from MS07-029: The DNS RPC Interface Buffer Overrun

The Code

The vulnerability is a stack-based buffer overrun in a structure; the structure
that's overrun is:

typedef struct _CountName {

    UCHAR   Length;

    UCHAR   LabelCount;

    CHAR    RawName[ DNS_MAX_NAME_LENGTH+1 ]; 

} COUNT_NAME, *PCOUNT_NAME;

A pointer to this structure is passed to the following function as well as the
DNS name to crack, the last element in PCOUNT_NAME, PCOUNT_NAME->RawName is
overwritten by untrusted data. Untrusted code and data constructs appear in red.

あとでかく 例によってこの構造体にある配列 RawNameが諸悪の根源だったりしたわけですが、 外からの untrasted なデータを安易に扱っちゃあ怖いよねという話ですか。 ざっと見た感じあるていどこの手のパターンに対処する(検出できる) ツールもあるようで。

Java とか C++ のPODでないデータとか スクリプティング言語の変数だと、 いろいろチェックをする仕掛けも組み込みやすいだろうし、 余地はあると思うのですが、 フロー解析でどのくらいまで検出できるだろう?

■_

ongoing · Ruby News

げ、RubyKaigi会場の写真にわしが写ってる(^^;

M17n · This is short for “Multilingualization”, what Matz has been promising will be in Ruby 2.0 for some years now. I have some firm ideas about how M17n should work (short form: Unicode should not be compulsory, but it should be easy, correct, and fast).
Anyhow, I was sitting beside Matz in the front row while one of the less-exciting speakers was speaking, and he popped up an Emacs buffer and said “Look at this”. It was his private-sandbox dev version of Ruby, and he showed me how he could make String#length and String#strip work properly with UTF-8 data. There’s a new method called (I think) String#bytesize.
I gather that the idea is that there’ll be a pragma you can assert per-file or per-IO or per-socket to specify the character encoding from that data source, and then everything will Just Work. We agreed that for the cases where you just don’t know, it would nice for someone to translate Python’s Universal Encoding Detector to Ruby. I might be tempted to try that if nobody else has.
This cheers me up immensely. I also think it’s the single piece of Ruby 2.0 that’s most likely to make the next version attractive to the Rails developers.

Ptyhon's Universal Encoding DetectorってMoonWolfさんが何かやってなかったっけ?

■_ Ruby Won't Be Mainstream

GoTheDistance: Ruby Won't Be Mainstream

JavaやC/C++という広く使われている言語、つまりメインストリームがあって、かつて
「hot」だったperl,php,VBという言語は決して十分な支配力をもつことはなかった。
そして、今「hot」なC#, Javascript, Ruby, Python, Delphiという言語も同じ道を
たどるんじゃないだろうか、ということを示唆しています。

これは実にシゲキックスな指摘です。Hotな言語は決してメインストリームになることは無い、
って言ってるんですから。

同じことを言っているエントリがこれ(英語)。コメント欄、盛り上がり杉。

    * Why Ruby on Rails won’t become mainstream

その理由をかいつまんでご紹介。
  1. Rubyの先進的で複雑な文法・言語構造を、VBやPHPプログラマが吸収するにはとっても難しい。
  2. RoRは先進的すぎる。才能ある開発者にはいいけど、 一般の開発者との間には大きなギャップがある。
  3. 信頼できるIDEがない。EmacsがCoolだぜなんて言ってる場合じゃない。今は1996年じゃない、 2006年*1だ。IDEに頼るのを恥じるのは、おろかなことだ。
  4. RoRユーザーが狂信的。もうちょい謙虚になってもit never hurtsよ、と。 悪いことにはなんないよって訳すのがちょうど良いかも。
  5. RoRだけしか有力なフレームワークが無い。何か対抗できる強力なライバルがいないと 進化が止まってしまう恐れがある。
  6. Enterprise用途に耐えうる能力があるのか、スケーラビリティがあるのかが不明確。
  7. ISPのサポートが無い。つまり、ホスティング業者等がRubyをサポートしてない。 PHPは事実上どこでもサポートしてるようなもんだけど、 Rubyを使うなら自分でサーバー立てたりする必要が出てくるのではないか。
骨子は「一般人には先進的過ぎる」ってことのようだ。
マジョリティを意識する、言い換えればJava化していくことでRubyはメインストリーム
になるのだろうか。それによって本来持っていたHOTさが失われてしまうんだろうか。
それがメインストリームになることと同義なんだろうか。

Rubyには色々考えさせられます。

あとでかく Part2
RubyもLispなどの言語のトガッた機能を換骨奪胎して持ち込んだという 点は結構強調されることがあると思うのですが、 それでもなお一般人には先進的過ぎるということなんでしょうかね。

まつもとさんは多分積極的にはメインストリームどうこうという方面には 意識を向けていないと思いますが、実際のところメインストリームに 「なってしまった」らどうなるんでしょうか。 メインストリームとして挙げられていた Java/C/C++ という顔ぶれをみると、 どうにもその可能性は少ないものであろうとは思いますが。

IDEに関しては CodeGearのアレがどうなるかですね。 RoRユーザーが云々というのは実際どうなんでしょうか。 RubyKaigi2007でDave Thomasもちらっと触れていましたけど。

■_ PythonWorkshop2007

ライブ中継があるらしい。

2007年06月28日

■_ fmemopen(3)とかopen_memstearm(3)って

要は StringIOみたいなものなんでしょうか?

from めもがき:2007年6月26日分

GNU stdio では、2~3個 の C 関数を新たに記述すれば自分の新しいストリームを定義することができる。fmemopen 関数は、文字列に対してストリームをオープンするためにこの方法を採用しており、必要に応じて拡張が可能である。自分の書いた C 言語の関数を使うために、自分用のprintf のフォーマット文字列を定義することも可能である。例えば、他のプログラミング言語向けに、 printfのような関数を実装する場合に、ユーザからの入力に対するフォーマット文字列を安全に処理することが可能である。

■_ Perl ≒ 神社?

WIRED VISION / Perlは日本の神社と同じ――『Supernova』会議レポート

続いて、Shirky教授が演台に上がった。Shirky教授は、まず、 日本の歴史上重要な神社の写真を見せた。1300年前に建立された神社だ ――ただし、木造なのでいつまでも使うというわけにはいかず、 一定の年数が経過するとデザインを変えずに建て替える。 彼らから見れば1300年間ずっと同じ神社だが、国連教育科学文化機関(UNESCO)は、 正確には同じ材料ではないという理由で、この神社を歴史的建築物に分類していない。
Shirky教授は次に、ドットコム時代初期の話をした。当時、 Shirky教授の会社はAT&T社との契約を勝ちとって『Perl』を使おうとしたが、 AT&T社の関係者はPerlについて懐疑的だった。 オンラインコミュニティーの大々的なサポートはあったものの、 正式なサポート契約がなかったからだ。
「Perlは神社と同じだ。何百万人もの人々に日々愛されているがゆえに、 Perlは『現に活動している実体』として存在するのだ」

するってーとあれか、今やっているPerl 6への移行作業ってのは 式年遷宮みたいなものか(笑) → 神宮式年遷宮 - Wikipedia

式年遷宮は伊勢神宮の行事で、1300年前に建立の神社 (古さを強調していることから多分法隆寺だろう) ではないけどさ。と思ったら伊勢神宮のことっぽい? → 神宮・遷宮 Q&A>伊勢神宮式年遷宮広報本部 公式ウェブサイト

Q. 式年遷宮って何のことですか
 式年遷宮の制度は、今から約1300年前に第40代天武(てんむ)天皇がお定めになり、 次の第41代持統(じとう)天皇の4年(690)に皇大神宮の第1回目の御遷宮が行われました。 以来長い歴史の間には一時の中断(戦国時代)はありましたが、20年に一度繰り返されて、 来る平成25年には第62回目の御遷宮が行われます。
 遷宮とは、新しいお宮を造って大御神にお遷(うつ)りを願うことで、 式年とは定められた年を意味します。 神宮には内宮・外宮ともそれぞれ東と西に同じ広さの敷地があり、 20年ごとに同じ形の社殿を交互に新しく造り替えます。 また神様の御装束神宝も新しくされます。

■_ 身の振り方を考えてみる

我々も仕事をしていく中で、得意技、必殺技というか、「勝ちに持っていくパターン」 みたいなものがあり、それを拠り所に、修羅場だ土壇場だ正念場だとやらを、 うまくやり過ごしていく割合は、実は多いのではないかと思っています。
ところが、あるとき、差別化されていると思っていたその「技」が、 いわゆるコモディティ化してしまったら、それはもうショックの一言ですね。
特に、病気や怪我でしばしのブランク、その後現場復帰して「さあ、やるぞ!」 と思ったときにはライバルに先を越されていて・・・いやあ、悲しいよなー。 怠けていたつもりがないだけに。
一方で、そんなリスクやら不安やらを一笑に付し、「俺はこれで勝負してやる!」 って言い切れる・・・すごーい素敵なことです。

強いていえばいいプログラミング言語とは 「プログラマーの給料が高くなるプログラミング言語」でしょうか (もちろん、経営者の視点で見れば逆になります)。 どんなにきれいなプログラミング言語でも、 そのプログラマーとして稼げなければやっぱりダメ言語でしょう。 例えばHaskellやML、 Schemeは言語としてはきれいだとは思いますが、 (もちろん学術研究は別にすると)こうした言語だけで稼いでいる人を当方は知らなかったりします。 その意味では(特に米国では)Javaが給料が高いプログラミング言語なので、 Javaがいいプログラミング言語となるでしょうか。 ただ、需要と供給の関係があり、プログラマーの給料が高い言語は、 その言語を覚える人が増えるので、いずれは給料水準はさがることになります。 Javaの場合は大学で教えることが多いので、 いまはJavaプログラマーは供給過剰になって給料も下がっているかもしれません。 注目はRubyやPythonなどのスクリプティング言語系ですが、 (当方も急ぎのときはよく使いますが)スクリプティング言語系は生産性が高く、 短時間でプログラムが書けるというメリットがありますが、 プログラマーの給料に反映しているとは思えないのですよね。

最後に、Nickがこのようなまとめをしています。
    Because skills in open source programming are increasingly necessary to
enhance the potential career prospects of individual programmers, individual
programmers have strong motivations to join in - and as more programmers join
in, the incentive for each individual programmer to participate becomes ever
stronger. At the same time, the total amount of money that goes to
programmers falls as open source is adopted by more companies.

OSS開発ができるスキルは、個々人のプログラマのキャリアの見通しを広げていくのに ますます必要になってくると。プログラマがOSSに参加するインセンティブや モチベーションが明確にあるので、多くのプログラマがOSS開発に参加することに なるだろう、と。だが、プログラマに落ちてくるトータルのお金はオープンソースが 多くの会社で採用されていくことで落ち込んでいくだろう、と。 腕を磨くことで自分の首を絞めてしまうのではないかというお話でした。

飛び立てば闇
振り向けば闇
光は遥か
遠くに見えない~♪

さてどうしたもんですかねえ。

■_

経験を次に生かせるような技術を習得すべし - @IT自分戦略研究所

「ソフトウェアのエンジニアとしては、当然ながらプログラミング言語やOS、 アーキテクチャ、開発手法などといったソフトウェアに関する技術を幅広く修得 することが求められますが、組み込みエンジニアにはそれらに加えて 磨かなければいけないスキルがあります。それは、ものづくりのベースでもある QCD、 つまり求められる品質(Quality)、コスト(Cost)、納期(Delivery) を絶対に実現することです。品質と納期については組み込みに限らないかもしれませんが、 難関なのがコスト。CPUの能力やメモリ容量、消費電力といった限られたリソースを どう効率よく使って、求められるコスト内に収めるか。組み込みエンジニアになるには、 そのための技術や知識を大いに磨く必要があります」
 ではそのスキルを磨くためには、具体的にどうすればよいのか。 「そうした技術や知識を習得する努力はもちろんのことですが、 そこから先は自らの経験を常に次に生かしていくことが非常に重要だと思います」 と小笠原氏。やはり、組み込みエンジニアにとっては経験を積み重ねていくことが 大事なようだ。

まあある意味腕のふるいがいがある分野ではあるのだろうけど、 最近のはどれも規模がそれなりにでかいから、わしがやってたころのように せいぜい2~3人でやるなんてことは(ものにもよるだろうけど)ないんだろうねえ。

■_ どうにかしてくれ Firefox

Amigomr の徒然日記 : Firefox の高 CPU 使用を防ぐ方法

もし「All the time」(いつも)起こるのであれば、それには 3 つの解決策があります。 1つは拡張機能です。問題のある拡張機能は過剰な CPU 使用を招く要因となり得ます。 2 つ目は Windows の互換性モードです(これは意外と知られていないように思う)。Windows の互換性モードとは新しい Windows では動かないソフトウェアも古い Windows で動いていればそれに互換するというものです。これを直すには、Firefox を起動するアイコンを右クリックし「プロパティ」を表示。上の「互換性」タブをクリックし開きます。もし互換性にチェックが入っていればそれを解除します。そして Firefox を再起動します。 3 つ目はハードウェアを加速することです。具体例として、いくつかのビデオカードとドライバ上でカーソルとビットマップハードウェア加速を無効にします。すると画像を表示するときに CPU が減速するそうです。

どれにも当てはまらないなあ。 それに起きているCPU使用の上昇も、 数十秒くらい待つと下がってきたりするし (Thunderbirdのほうはもっと長い)。

数学ガール購入

ある程度予想はしていたけど、自然科学のところにあった(笑)

2007年06月27日

■_ Lhaca脆弱性 (続報とか)

これなんですけどね

この脆弱性は、文字列長の確認を適切に行わない strcpy() の呼び出しが原因となって起こるもので、この脆弱性を突いた問題の .lzhファイルはスタックメモリを上書きし、マルウェアを植えつける。

 公開された「+Lhaca Version 1.21」では、LHA展開処理内に存在したstrcpy をstrncpyに変更、バッファオーバーフローを発生させないようにしたもの。

ほんとーーーーーーーにこの修正でいいんでしょうか? いやまあソースコード上でどう手を入れたかはわからないので 間違っているとも断言できませんがstrncpyはstrncpy で問題を持っている仕様なわけで、今回の問題はピンポイントで防ぐことが できるとしても別の問題を抱えたままになっているような気がしてならないのですが… 杞憂ってやつですかね?

strlcpyとかstrcpy_sとかにした方が良いんじゃないかなあ (→ Strlcpy - Wikipedia
strcpy_s、wcscpy_s、_mbscpy_s )。 まあ、使っているCコンパイラのCRTに入ってないから使えないよ、 ってなことかもしれないけど。 でもstrlcpyなら自由に使える実装が(OpenBSDのソースを引っ張ってこないでも) 転がってないか?

■_

kmoriのネタままプログラミング日記 - スーパーコンピューターを20万円で創る

10万個もの天体からなる多体問題を解きたいという動機をもつ杉本。そのためにはコン
ピューターをどう使えばいいかよくわかっている牧野。二人は、(当時の)既存のスーパ
ーコンピュータでは能力不足で、せいぜい千個程度の問題しか解けないとわかっていた。

そこへやってきた伊藤は、いきなりコンピュータの勉強をしろといわれ、多体問題の計
算専門のコンピュータを作るはめになる。

普通に考えたら無茶苦茶な話。伊藤はそれまで論理回路を設計した経験はなかったそう
だ。本書にはGRAPE-1の写真が掲載されているが、とても初めて設計をやる人が取り組む
ようなものには見えない。しかしそれをキッチリ予定通り仕上げてしまう。あまりにも
順調なので、読んでてエンジニアとしてムカつくほどである。

また、伊藤が「最初の版は練習用なので8ビットでいきます」と現実的な目標を設定す
ると、天才牧野が素早く精度の見積りを行って「8ビットでも無衝突系のシミュレーシ
ョンになら使える」と、それを最初から実用に使えるように仕立てていく、そして実際
に「巨大楕円銀河誕生の謎」の答を出してしまう。このくだりは非常に面白い。
  

ふむ。読むのは後回しにしようと思って買ってもいなかったのだけど 早速明日の会社帰りにでも買うとしよう。

ところでBRAINS はあれで終わりになっちゃってるんですかねえ… 最終回(?)がヴァニバー・ブッシュだった(と思う)ので ちと物足りない。 ノイマンは、ウィルクスは、チューリングはあ? → Amazon.co.jp: ブレインズ―コンピュータに賭けた男たち (1): 本: 伊藤 智義,久保田 真二
Amazon.co.jp: ブレインズ―コンピュータに賭けた男たち (2): 本: 伊藤 智義,久保田 真二

Pascalのうた

Pascalの宿題は俺にやらせろ!!Part2 
http://pc11.2ch.net/test/read.cgi/tech/1136994325/502-

502 497,498 [sage] Date:2007/06/24(日) 16:49:06  ID: Be:
    >>500-501
    大きなヒントを下さってありがとうございます♪
    教養科目で卒業が掛かっているのでとても嬉しいです

    問1を自分なりにやってみたのですが、
    program gengou(input,output);
    var a:integer;
    begin
    readln(a);
    writeln('西暦',a,'年の元号は?');
    if a>1988
    then writeln('平成',a-1988,'年です')
    else if a>1926
    then writeln('昭和',a-1926,'年です')
    else if a>1910
    then writeln('大正',a-1910,'年です')
    else if a>1867
    then writeln('明治',a-1867,'年です')
    else writeln('江戸時代です')
    end.

    何がダメなのかすらわかりません><
    助けてください・・・ 

503 デフォルトの名無しさん [sage] Date:2007/06/24(日) 18:28:48  ID: Be:
    別に何もダメじゃなくね? 

504 デフォルトの名無しさん [sage] Date:2007/06/24(日) 18:33:10  ID: Be:
    強いて言えば問いかけの前にreadlnしてるとこ。 

505 デフォルトの名無しさん [sage] Date:2007/06/24(日) 18:38:36  ID: Be:
    あ、元号境界の処理と+1してない。 

506 デフォルトの名無しさん [sage] Date:2007/06/24(日) 19:41:59  ID: Be:
    >>505
    INC(年号)は俺も気づかなかった 

507 デフォルトの名無しさん [sage] Date:2007/06/24(日) 22:34:49  ID: Be:
    >502
    1989年は平成元年かつ昭和64年ってのを、最初のif文で判定する必要があると思う。 

508 デフォルトの名無しさん [sage] Date:2007/06/25(月) 23:25:06  ID: Be:
    なんとなく年号のテーブルがずれてる気がした。

    program gengou;
    {$APPTYPE CONSOLE}

    var a, i: integer;
    const
    era: array[0..3] of Integer = (1989, 1926, 1912, 1868);
    eraname: array[0..3] of array[0..10] of char = ('平成', '昭和', '明治', '大正');
    begin
    readln(a);
    writeln('西暦', a, '年の元号は:');
    for i := 0 to 3 do
    if a >= era[i] then
    begin
    writeln(eraname[i], a - era[i] + 1, '年');
    if a = era[i] then
    writeln(eraname[i + 1], a - era[i + 1] + 1, '年');
    break
    end

    end.

509 デフォルトの名無しさん [sage] Date:2007/06/25(月) 23:30:14  ID: Be:
    一応コンパイラはdelphi使って確認したけどコンパイラ指示除いてBorland拡張は
    使っていない・・・と思う。

510 デフォルトの名無しさん [sage] Date:2007/06/25(月) 23:32:37  ID: Be:
    例題から察するに、配列はまだ習ってないんじゃないか 

511 デフォルトの名無しさん [sage] Date:2007/06/25(月) 23:34:46  ID: Be:
    >>508
    >const
    >era: array[0..3] of Integer = (1989, 1926, 1912, 1868);
    >eraname: array[0..3] of array[0..10] of char = ('平成', '昭和', '明治', '大正');

    ここでもうBorland方言でつ。 

512 デフォルトの名無しさん [sage] Date:2007/06/25(月) 23:37:46  ID: Be:
    む、そうなるとかなり長いif文の羅列になるな・・・スマンそのコードは俺の性には合わない。 

513 デフォルトの名無しさん [sage] Date:2007/06/25(月) 23:39:22  ID: Be:
    な、な、定数配列はBorland方言とな!標準Pascalじゃやっぱり書けん! 

514 デフォルトの名無しさん [sage] Date:2007/06/25(月) 23:41:54  ID: Be:
    >>513
    大域変数として名前を確保し、変数初期化手続きを書いて、
    大域変数はそこでまとめて面倒を見ておく、てのが常道だった。
    まーそこまでストリクトに標準Pascalの流儀を守る必要もないんだけどw

    あと、文字列型を使っていいのかも不明なんだよな。 

515 デフォルトの名無しさん [sage] Date:2007/06/25(月) 23:55:10  ID: Be:
    久しぶりにヴィルトの原書開いてみたらやっぱり載ってなかった。
    なるほどK&Rのどちらかだったか、「これじゃ書けねえ・・・」と思った気持ちもわかる。
    いや、嫌いじゃないんだよPascal。むしろ好き。
    ありがとう僕の友達Pascalに会わせてくれて。 

516 デフォルトの名無しさん [sage] Date:2007/06/26(火) 00:03:33  ID: Be:
    >>515
    それはラスカルだ 

517 デフォルトの名無しさん [sage] Date:2007/06/26(火) 00:03:38  ID: Be:
    >>515
    定数配列や変数宣言での初期化は便利だし、可読性も高くなるんだよね。

    言語仕様を出来るだけ小さくしようと言うのがヴィルト先生の狙いだったのと、
    原始Pascalでは宣言の順序が決まっているから、
    定数宣言の中にユーザ定義型の識別子を書けないというのがあったのかな。

518 デフォルトの名無しさん [sage] Date:2007/06/26(火) 00:04:48  ID: Be:
    >>516
    歳がバレるぞww 

519 デフォルトの名無しさん [sage] Date:2007/06/26(火) 00:10:27  ID: Be:
    いや歌は違うだろうけど最近もやってるよ。
    ttp://www.nippon-animation.co.jp/pocapoca/ 

520 デフォルトの名無しさん [sage] Date:2007/06/26(火) 04:24:17  ID: Be:
    テラキモスw 

521 光速エスパー世代774RR [sage] Date:2007/06/26(火) 12:41:47  ID: Be:
    break文もBorland方言だな。標準Pならgoto文で抜け出すことになるね(こういう時
    のためにgotoを残してあるんで)。
    era回りだけど、record型を使う方が原則的で美しいよな。それと、効率は少し落
    ちるけど、
    eraname = packed array [1..10] of char;
    era = record
    beginyear, endyear : integer;
    name ; eraname
    end;
    eraarray = array[1..4] of era;

    とやってあげて、eをeraarray型の変数として、
    for i := 1 to 4 do with e[i] do begin
    if (a >= beginyear) and (a <= endyear) then begin
    j := a - beginyear;
    if j = 0 then write(name, '元年 ') else write(name, succ(j), '年 ')
    end
    end;
    writeln

    も手だな。eがソートされていなくても動くし、元年の処理の特殊性が減る。
    課題とは動作が違うけどね。 

しろつめくさのはながさいたら
さあいこう
Pascal♪

ですかい?(笑)

ああ、そりゃアウトですね

哲のほうのわたなべさんのところ。
diary (Japanese)

委託を行なうような場合、相手のプログラミングレベルを確認するのが「だめ」とか、 派遣社員さんの事前にプログラミングレベルを確認するのは「だめ」とか聞いたような。 私が間違っている可能性が高いですけど。 「だめ」といわれても私は確認したいです。 相手のレベルがわからなければ、話もできないです。

はいダメです。明確に禁止されています。 つか、事前に「面談」すらもできません。 ですので、派遣元のいうことを信じるしかありません (派遣会社に対して、これこれこういう技術を持った人を。というお願いはできます)。 派遣元に嘘吐かれてもお互い不幸になるだけなんですけどね。

多分選抜して派遣社員として使うくらいなら正規雇用せいよということだと思います。

Rubyのことかと思った

  http://pc11.2ch.net/test/read.cgi/tech/1177499924/655
D言語 Part13

655 デフォルトの名無しさん sage 2007/06/25(月) 14:25:25 

D言語に完成なんて求めてどうするんだ?
こいつは永遠の実験言語だってば 

VC8ってのは結構色々内部的にも変わっているんだね

  http://pc11.2ch.net/test/read.cgi/tech/1182740506/l50
【初心者歓迎】C/C++室 Ver.39【環境依存OK】



85 デフォルトの名無しさん sage 2007/06/26(火) 14:51:43 
>>82
const char*なのが困り物

たとえばVC++8.0ではlocale依存の方法でUTF-16に変換する
それ以前ではコードページ依存の方法でUTF-16に変換する
いずれにせよ、NTFSのUTF-16なパスを正しく扱えるとは言いがたい

UTF-16なパス名をちゃんと扱いたければ、fstreamを捨てて
カスタムのストリームバッファを作れという話になるだろう 

本日の購入

逆説の日本史 14 近世爛熟編文治政治と忠臣蔵の謎
逆説の日本史 14 近世爛熟編文治政治と忠臣蔵の謎

自己再生―36歳オールドルーキー、ゼロからの挑戦
自己再生―36歳オールドルーキー、ゼロからの挑戦

数学ガールを買いに行ったはずが買ったのはこれら。 つか数学ガールは見つかんなかったんですけどね。

ブートキャンプを継続して続けられる秘訣? 成功は安易には手に入らないんだよ。
人生で困難にぶつかった時は、乗り越えようとするだろ? それと一緒さ、
やり続けることが大切なんだ。自分の頭で『こういう結果が欲しい』と想像すること。
自分の理想や夢をちゃんと見据えて、頑張ってほしい


ビリー隊長
ビリーの生「ぶん! ぶん!」に400人熱狂! - ビリーズブートキャンプイベント | エンタテインメント | マイコミジャーナル
  

2007年06月26日

■_ 本日の(´・ω・`)

Advanced W-ZERO3の予約事前登録(9:00AM受け付け開始)に乗り遅れますた。 ちょっと用事があったので10時過ぎにアクセスしたのに手遅れ…

■_ だからその値段をなんとかしてくれと

Bruleでは、7月中旬から日本国内にて、FlipStartの発売を予定。販売価格は、 31万9800円となっている。

興味はあるが、この値段じゃとても手を出す気にはなれん。

■_ Dave Thomas 基調講演 (RubyKaigi2007) テキスト

こうやって記録に残るというのは素晴らしい。

It is same for Python and Ruby. Ruby and Python will give you different things when you play with them. Python values `Kata' (form). Whoever the author is, programs look similar.

のあたりで、Guido と名前を出していたような記憶があるんだけど違うかなあ。 漏れの英語耳怪しいしなあ(笑)

■_ Video Oral History of Microprocessor at Computer History Museum(1)

Video Oral History of Microprocessor at Computer History Museum(1) --- CPU「4004」の詳細な論理設計を開始:ITpro

嶋さんのblog更新。

Computer History Museum は,米DEC(Digital Equipment Corporation)の Digital Computer Museum として出発し,25年以上前に米国ボストン市に Computer Museumとして開設され,さらに,1996年にComputer History Museumと改名され, 2002年にマウンテンビュー市に移転した。Computer History Museumのホームページに アクセスするとコンピュータに関連したいろいろのことに出会える。 ガイド付きのToursでは,運が良ければ, SPARCプロセッサの開発者がガイドをしてくれるかもしれない。

わたしが今でもボストンにあるものと思って、帰国前に行ってみたらどうですか とodzさんに薦めたら、実は移転していたという例のアレですね。 shinhさんも今日のblogでここにいらしたようなことを書いてましたが。

米国カリフォルニア州マウンテンビュー市にあるComputer History Museumで, 最も有名な初期のマイクロプロセッサに関する「Video Oral History」の収録が始まった。 収録される資料は,将来の展示品として使われ, 歴史家や研究者やWebを介して一般の人にも公開される予定とのことである。

素晴らしい(本日二度目)。

エピローグが1957年に書かれた“W・S・チャーチル著の「第二次世界大戦」 (佐藤亮一訳,河出書房新社)” である。チャーチルの記録への執着は“すごい” の一言である。誰が何をしたか,誰が何をしなかったのかなどが克明に書かれている。 読み始めると途中で止められない本である。訳者あとがきで引用したチャ-チルの 「過去に深い考慮を払うことが,来たるべき日の手引きとなり, 新しい世代をして過去の誤りを幾らかでも是正せしめ, こうすることによって人間の必要と栄光に従い, 未来の恐るべき光景の展開を抑制できることを,私は心から願っている」は至言である。

この本は読んだことないなあ… む、文庫で四冊ですか。 日本語訳に難ありとかAmazonでレビューついてるよ(笑)

NHKエンタープライズ(だと思う)のえらいひと、 どーか「電子立国 日本の自叙伝」のDVDでの再販を切に願うものであります (Blu-RayとかHD-DVDだったらそのハード買ってでも(笑))。

■_

ウィルコム「W-ZERO3 [es]」でLinuxを起動するツールが公開 | memn0ck.com

「W-ZERO3(WS003SHおよびWS004SH)」ではうまく動かず画面が真黒になるだけでした。 ただ,なんかキーボードライトは付いてましたw

わはは、なにか違うのかねえ(いやまあまったく同じってこたないですけどね)。

■_ Lhacaに脆弱性(ひらがな書きは止めようよキャンペーンちう)

あの「Lhaca」がアブない、日本標的のゼロデイウイルス発見:ITpro

多分なんらかのバッファオーバフローの類だろうとは思うんだけど、 Lhacaってば完全に自前のエンジン使ってるんだっけ? ほかのLzh対応アーカイバはどうなんだろう。 特に他のアプリから使われることが多いであろう unlha32.dllとか。 ちょっと前(2年位前?)にもLzh対応のアーカイバに軒並みバッファオーバフローの 穴があったという騒ぎがあったような記憶が。

リンク先のシマンテックのページ(英語)を見ると 情報がちょっとあるね。

The vulnerability lies in a call to strcpy() with improper string length validation. Critical stack variables can be overwritten, and control is passed to a shell code. Interestingly, it seems the .lzh file we have contains duplicate code to maximize exploitation chances. According to my tests, it seems the string being copied is a file name of one of the archived files. I’ll let you draw the obvious conclusion.

(スタック上にある)ローカル変数の値を潰すと。

■_ Python 3000 Status Update (その4)

まだまだつづくよ

Printing and Formatting (出力と書式指定)

Two more I/O-related features: the venerable print statement now becomes a print() function, and the quirky % string formatting operator will be replaced with a new format() method on string objects.

あと二つの、入出力に関連する機能: venerableな print文は、今やprint()関数となり、 % 文字列 による quirklyな書式指定演算子は stringオブジェクトに新たに作られた format()メソッドに置き換えられました。

Turning print into a function usually makes some eyes roll. However, there are several advantages: it's a lot easier to refactor code using print()functions to use e.g. the logging package instead; and the print syntax was always a bit controversial, with its >>file and unique semantics for a trailing comma. Keyword arguments take over these roles, and all is well.

print を関数へと変更したことは、通常はsome eyes roll (多分何かのイディオムだろう)させます。 しかし、その一方で幾つかの利点もあるのです。 まず、print() 関数を使ったコードをリファクタリングすることが 非常に簡単になることです。 たとえば ロギングのパッケージを代わりに使うようにするとかです。 また、printの構文は、 その >>ファイル という形式の扱いと、 末尾にあるカンマの意味の特異さによって いささかcontroversial(議論の余地がある?)ものです。 キーワード引数はこれらの役割を何の代わって何の問題もなく果たします。

Similarly, the new format() method avoids some of the pitfalls of the old % operator, especially the surprising behavior of "%s" % x when x is a tuple, and the oft-lamented common mistake of accidentally leaving off the final 's' in %(name)s. The new format strings use {0}, {1}, {2}, ... to reference positional arguments to the format() method, and {a}, {b}, ... to reference keyword arguments. Other features include {a.b.c} for attribute references and even {a[b]} for mapping or sequence access. Field lengths can be specified like this: {a:8}; this notation also supports passing on other formatting options.

同様に、新しい format()メソッドは以前の % 演算子にまつわる 落とし穴のいくつかをなくします。 特に、"%s" % x で xがタプルであったときなど。 また、%(name)s の最後の's'を付け忘れてしまうありがちな間違いもそうです。 新しい書式文字列として使われる {0}, {1}, {2}. ... は format()メソッドに対する引数の順序で参照します。 同様に、{a}, {b}, ...はキーワード引数を参照します。 そのほかにも 属性を参照する {a.b.c} や マッピングやシーケンスに対するアクセスのための {a[b]}のようなものもあります。 フィールドの長さは {a:8} のように指定することができます。 この表記はまた他の書式化オプションを渡すこともサポートしています。

The format() method is extensible in a variety of dimensions: by defining a __format__()special method, data types can override how they are formatted, and how the formatting parameters are interpreted; you can also create custom formatting classes, which can be used e.g. to automatically provide local variables as parameters to the formatting operations.

format()メソッドは variety of dimenstionsで 拡張可能なものです。 特殊メソッド __format()__ を定義することにより、 データ型はそれがどのように書式化されるかを上書きすることができ、 書式化のためのパラメータがどのように解釈されるかを決めることができます。 書式化のためのクラス(formatting classes)を作ることも可能で、そこでは 書式か操作のためのパラメータとして ローカル変数が自動的に提供されます。

■_ 翻訳そのもののプロかもしれないけど

エキサイト、プロ翻訳者が24時間以内で翻訳するサービス

技術書の翻訳はどうだろうか? たまーに人に投げたくなるほどややこしい文があるんだよねえ(笑)

ソフトウェア開発も心がないとダメ。
根性だ! 集中だ! 心の底から頑張れ!!

from バカが征く ( http://www.jitu.org/~tko/cgi-bin/bakagaiku.rb?bakaid=20070625 )

2007年06月25日

■_ Advanced W-ZERO3

Advanced/W-ZERO3[es]とW-ZERO3シリーズの大きさを比べてみました - GIGAZINE
ウィルコムの最新スマートフォン「Advanced/W-ZERO3[es]」フォトレビュー - GIGAZINE

明日(6/26)から申し込みできるんだよなあ。 機種変更してしまおうか。

コネクタが従来の物と形状が大幅に変更されています。 このままでは既存のW-ZERO3シリーズ用の充電ケーブルや外部バッテリーは 使えそうにありません。

げ、それはちと困るな。

■_ 特に深い意味はない。多分。

大事なのは、問題を取り上げて議論するときに「なぜ(Why)」ではなく「なに(What)」 から始めることです。例えば、「どのような設計をしたの?」とか、 「それに使われた標準は何?」といった質問です。そういうWhatの質問を積み重ねていく。 Whatから始めれば、「この問題は見かけ上は誰かのミスのように見えるが、 実は標準の不備が原因だったのか」といった問題の本質が見えてくるわけです。
 最初からWhyをメンバーに投げかけると、現状把握をすっ飛ばして「対策をどうするか」 という話題になりがちです。これでは適切な解決策は見いだせない。 医者は症状をよく聞きもせずに「頭が痛いって? あなたは脳腫瘍に違いないからすぐ手術を」 とは言いませんよね(笑)。まず、どんな症状かをじっくり見ていく。企業の現場では、 このような「患者を見ずに治療法ばかりを議論する」という構図が意外に多いのです。 パッと見て、すぐに対策だ、と。

日高:変な治療をするとますます悪くなってしまいますよね。

遠藤:そう。「What then Why」が必要です。社内では「TTY(whaT Then whY)」 と言っています。Whatを追求してからWhyを考える。

WhyではなくWhatから始める~リコーの業務改革、その勘所:ITpro

私が常々おかしいと思っているのは、ITベンダーは私たち患者の言うことだけを聞いて そのまま仕事することです。医療の世界では、患者が「お腹が痛い」と言った時、 医者はこれまで得た知見を生かして、様々な角度からその症状を分析して、治療する。 ところがITベンダーを医者に置き換えると、医者はただ患者が具合を説明するのを 待っているだけ。そして、患者が「薬が必要だ」と言えば薬を与え、「注射が必要だ」 と言えば注射する。治らなければ患者の責任です。それではプロとは言えない。

リンクトリストのソートについて - MSDN フォーラム

C言語で構造体のリンクトリストを作成しています。

構造体は次のようなものです。

(ry

ここで、person_tのメンバであるpcodeをキーにしてソートしたいのですが、
リンクトリストのソート方法がわかりません。

どなたかご教授願えないでしょうか。

Cで、という質問者に対し、C++で答えるepi様ってばステキ :)

ところで連結リストをソートするということなら、 マージソート(さらに狭く云えば自然マージソート) あたりが無難な選択だと思うけど、 クイックソートもやってできなくはないと思う (Haskellのサンプルで有名になったアレをクイックソートとしてみていいのなら という限定つきだけど)。

つまりクイックソートのキモは、 1) pivot となる要素を選択して 2) pivot より小さいものと大きいものとにわける (等しいものの扱いはお好みでどうぞ) 3) 分割された要素群に対して再帰的に同じことをする
ということだと思うので、 連結リストの先頭要素をとりあえずpivotとして選択してから 二番目以降の要素を振り分けてきゃあいいんでない? リストの尻尾に気をつけないといけないけど、 要素に対してランダムアクセスできなきゃクイックソートはできない とまではいえないんじゃないかなあ。

実証コードは面倒なので書かない。 だからこの内容が間違っていても 責任はとれないので、 信じるか信じないかはあなた次第です :)

■_ Perl 6動向

■_ ビル・ゲイツのスピーチ

ガ島通信 - ビル・ゲイツ「卒業」スピーチ・邦訳 経由で sam-karoのコミュニケーションサービスデザイン論 - ビルゲイツのハーバード卒業式の式辞・軟弱翻訳(最初と最後だけ)よしだ日記

皆さんは素晴らしい時代に卒業することになったものです。 私たちが決して手に入れることのできなかったテクノロジーがあり、 私たちが気付くことのできなかった世の中の格差についても知っている。だから、 ほんの少しの努力で救うことのできる人たちを無視してしまうことが、 やがてどれだけ自らを苦しめるかだって、きっとわかっているでしょう。 皆さんは私たちよりも多くのものに恵まれています__すぐに始めましょう。 そしてより長く続けるのです。

いいこと云うじゃないの。

■_ Remember The Milk

Remember The Milkを使い倒す - GTDなTODO管理に最適なRTMの特徴や機能を紹介します

使えるようになってすぐにアカウントとっていろいろやったのだけど 片手間にやっていたせいか、思うようにリマインドメールが飛んで来なくて 放り投げてしまった。 もう一回がんがってみるか…

■_ ふと思いついた

Nihon Haskeller Kyokai

N・H・Kへようこそ! ということで :) → N・H・Kにようこそ!
NHKにようこそ! - Wikipedia

■_ 戸惑う話

  1. くねくね科学探検日記: まるきもの、汝の名は惑星・その1
  2. くねくね科学探検日記: まるきもの、汝の名は惑星・その2
  3. くねくね科学探検日記: まるきもの、汝の名は惑星・その3
  4. くねくね科学探検日記: まるきもの、汝の名は惑星・その4
  5. くねくね科学探検日記: まるきもの、汝の名は惑星・その5
  6. くねくね科学探検日記: まるきもの、汝の名は惑星・その6
  7. くねくね科学探検日記: まるきもの、汝の名は惑星・その7
  8. くねくね科学探検日記: まるきもの、汝の名は惑星・その8
  9. くねくね科学探検日記: まるきもの、汝の名は惑星・その9
  10. くねくね科学探検日記: まるきもの、汝の名は惑星・その10

それは良いんだけど、この見出しは何だかなあ……って感じなんだよね。  冥王星の「降格」つー表現は、いい加減止めて欲しいんだよ。
 この記事では、冥王星は準惑星では最大と見積もられていたって書いてあるけど、 それはウソで、マイケル・ブラウンさんは、今のところ太陽系で最も遠い位置にある 準惑星であるセドナは、発見当初から冥王星より大きいだろうといっていた。 それに、冥王星が「降格」なんて表現も使っていない。これって、 あくまでマスコミが言っていることなんだよね。
....
でも、あれを「降格」と呼ぶのは、いかがなものか。たこがなものか。  テレビも新聞も雑誌も、ほとんど全てがそう書いていたけど、天は星の上に星を作らず星の下に星を作らず。

アジモフの科学エッセイの未訳分は無理としても、 「つかぬことをおうかがいしますが」の続きは出ないもんですかねえ >ハヤカワ書房さま

■_ shiroさんにインタビュー

川合史朗@Gaucheは、ハワイで俳優をしている/Tech総研

プログラミングはいつから始めたんですか?

小学校6年生くらいからBASICを紙で書いたり、パソコンショップで打ち込んでいたのですが、親がパソコンを買ってくれない。悔しくて、中学2年のときにチップを買って自分で組み立てました。高校までは独学で、大学の授業でPascalやFortranなどを学びました。

Lispに出合ったのも大学時代ですか?

そうです。大学生協の古本屋で『CでLispを書く』といった本を買って、やってみたら自分で言語処理系を書けるじゃないですか。しかも好きに機能が増やせるので、これはすごいぞと。

多分、アスキー出版のあの本だろうな(笑)

ミラーナイフが宙を切る♪

ということでTOKYO MX TVでのミラーマン放映第一回。 始まる前に「不適切な部分を編集しますた」のテロップが出たのは笑った。 まあ時代が時代だからな。ってどのへんが引っかかったんだ?

2007年06月24日

スカイ・クロラ

全面flashってのはやめてもらいたいもんなんだがなあ。 押井守のコメントのページを直接ぺたり。 押井守監督最新作 映画「スカイ・クロラ The Sky Crawlers」公式サイト: Reports

何者かになることは大事かもしれませんが、何者かになって何をするのかということが 大事なんです。これは残念ながら自分で見つけるしかありません。 誰も教えてはくれません。何者かになった後にどうやってそこから戻って来るかも、 誰も手を貸してはくれません。何者かになった後、拘置所に入るのか、 それとも引退して悠々自適に暮らすのか、稼いだお金で更に大きなことをやるのか、 いずれにせよその場に立ってみなければ分からない、これが人生なんです。 結局最後の選択は自分でするしかないんです。 だからこそ生きることに醍醐味があるんです。 ですから、どんなに鮮烈な言葉も、サンプルになるものはないんです。 自分の人生のサンプルになるものは何もない。 自分の手でひとつずつ確かめるしかないんです。

ということで、原作が文庫落ちしていたようなので買ってみた。

半日ジュンク堂(新宿)ですごす

書泉は要所を扱わなくなって久しいし、三省堂も品揃えが今ひとつの気が… ということでジュンク堂新宿店へ(池袋店はコンピュータ関係の洋書のスペース が小さくなった?)。

アサマシリンクをつくるwebサービスが落ちているっぽいので、 タイトルだけぺたり(あとでリンクにするかもしれません(笑))

for Dummies シリーズにデザインパターンのものがあるのを見つけて、 よっぽど買おうと思ったが他との兼ね合いで泣く泣く断念。 次に行ったときにも売ってたら買おう。

ドキュメントの賞味期限/消費期限

について書こうと思ったが、なかなかまとまらず。ボツ。 いずれまた日を改めて。

2007年06月23日

日経ソフトウエア8月号

日経ソフトウエア 2007年 08月号 まつもとさんと結城さんのインタビュー記事。

対談の内容はweb上でも公開されているようです。 → まつもとゆきひろ×結城浩,Rubyを語る:ITpro

MOONLIGTHMILE 1st session -Lift off- MISSION: 01 宇宙の向こうへ MISSION: 02 果てなき夢

観た。 正直微妙な出来ではある。継続してDVD買うかどうかは保留。

Rozenmaiden 8巻(最終巻)

薄っ(笑)

More Effective C++

売っていたので購入。 訳文がどうかはまだチェックしていない。
新訂版 More Effective C++

pc11サーバーだうんちう

ム板もマ板もみられにゃい…

   ゚  o   .  。   .  .   ,  . , o 。゚. ,゚ 。 + 。 。,゚.。
 ゚ ,   , 。 .   +  ゚   。  。゚ . ゚。, ☆ * 。゚. o.゚  。 . 。
。 .  .。    o   .. 。 ゚  ゚ , 。. o 。* 。 . o. 。 . .
        。   .   。  . .゚o 。 *. 。 .. ☆ . +. .  .
 。 .  . .   .   .  。 ゚。, ☆ ゚. + 。 ゚ ,。 . 。  , .。
    ゚  。   ゚  .  +。 ゚ * 。. , 。゚ +. 。*。 ゚.   . . .  .
 。  .   . 。 。゚. 。* 。, ´。.  ☆。。. ゚。+ 。 .。  .  。   .
  .   。  ゚ ゚。 。, .。o ☆ + ,゚。 *。. 。 。 .    。    .
 .  .     . ,     。       .           .  ,    .

       ∧_,,∧   BIOSアップデートが成功したら、pc11が復活するんですよ
      (,,    )
       (    )
       し―J
     ~"''"""゛"゛""''・、
 ""゛""''""""゛゛""''' "j'
 :::::ヘ :::::....ヽ :::;;;ノ  ::(
 ::  ゝ  :::::......ノ:;;../
K&Rのカドに頭ぶつけて死んじまえと思う (笑)。


バカが征く
http://www.jitu.org/~tko/cgi-bin/bakagaiku.rb?bakaid=20070622

2007年06月22日

■_ Py3kつづき

Py3kつづき

Status of Individual Features

There are too many changes to list them all here; instead, I will refer to the PEPs. However, I'd like to highlight a number of features that I find to be significant or expect to be of particular interest or controversial.

ここでリストして書き連ねるには対象となる変更が多すぎるので、 PEPを参照するようにしましょう。 ただし、 わたしが重要であると見なしている変更であるとか、 興味深いとか論争になったようなものに関しては強調しておきます。

Unicode, Codecs and I/O
Unicode、コデックス、I/O

We're switching to a model known from Java: (immutable) text strings are Unicode, and binary data is represented by a separate mutable "bytes" data type. In addition, the parser will be more Unicode-friendly: the default source encoding will be UTF-8, and non-ASCII letters can be used in identifiers. There is some debate still about normalization, specific alphabets, and whether we can reasonably support right-to-left scripts. However, the standard library will continue to use ASCII only for identifiers, and limit the use of non-ASCII in comments and string literals to unit tests for some of the Unicode features, and author names.

わたしたちは、Javaからのものとして知られるモデルへと移行します。 そこでは(変更することのできない)テキスト文字列は Unicodeであり、 バイナリデータは要素が個々に独立していて変更することのできる “バイト”データ型(bytes data types)です。 それに加えて、構文解析器はよりUnicodeフレンドリになります。 デフォルトのソースエンコーディングはUTF-8となり、 非ASCII文字を識別子で使うことも可能になります。 特にアルファベットに関してまだ正規化(normalization)のための 話し合いが続いており、また、右から左へと記述する書法の 合理的なサポートができるかどうかについても話し合いがされています。 しかしながら、標準ライブラリはASCIIのみを識別子に使用することが継続され、 非ASCII文字の使用はコメントや Unicodeの機能を検査するユニットテストで使われる文字列リテラルの中、 あるいはそのライブラリの作者の名前のみに制限されます。

We will use "..." or '...' interchangeably for Unicode literals, and b"..." or b'...' for bytes literals. For example, b'abc' is equivalent to creating a bytes object using the expression bytes([97, 98, 99]).

やり取り可能なUnicodeリテラルでは "..." もしくは '...'を使い、 バイトリテラルに対しては b"..." か b'...'を使います。 たとえば b'abc' というバイトリテラルは bytes([97, 98, 99])という式を使って生成されたバイトオブジェクトと 等価です。

We are adopting a slightly different approach to codecs: while in Python 2, codecs can accept either Unicode or 8-bits as input and produce either as output, in Py3k, encoding is always a translation from a Unicode (text) string to an array of bytes, and decoding always goes the opposite direction. This means that we had to drop a few codecs that don't fit in this model, for example rot13, base64 and bz2 (those conversions are still supported, just not through the encode/decode API).

わたしたちはコデックス(codecs)に対するアプローチとして まったく異なるものを採用しました。Python 2では、コデックスは Unicode か 8ビットの並びのいずれも、 入力や出力として受け付けていました。 Py3kでは、エンコードは常にUnicode(のテキスト)文字列から バイトデータの配列へと変換されます。そして、 デコードでは常にその反対方向の変換を行います。 これはつまり、このモデルとうまくすり合わせのできないいくつかの コデックスを取り除かねばならなかったことを意味します。 そういったものの例には、rot13、base64、bz2があります (これらの変換そのもののサポートは継続されますが、それは encode/decode APIを通じたものではなくなります)。

New I/O Library

The I/O library is also changing in response to these changes. I wanted to rewrite it anyway, to remove the dependency on the C stdio library. The new distinction between bytes and text strings required a (subtle) change in API, and the two projects were undertaken hand in hand. In the new library, there is a clear distinction between binary streams (opened with a mode like "rb" or "wb") and text streams (opened with a mode not containing "b"). Text streams have a new attribute, the encoding, which can be set explicitly when the stream is opened; if no encoding is specified, a system-specific default is used (which might use guessing when an existing file is being opened).

I/Oライブラリもまたこれらの変更に対応して変更が加えられました。 わたしはなんにせよ、 Cの標準入出力ライブラリ(stdio library) に依存している部分を取り除くために、書き直したかったのです。 バイトの並びとテキスト文字列を区別する新しいやり方は、 APIに関して大きな変更を要求しました。そして、二つのプロジェクトが undertaken hand in hand でした。 新しいライブラリでは、バイナリストリーム("rb"とか"wb"というモードで オープンされたもの)とテキストストリーム ("b"を含まないモードでオープンされたもの)は明確に区別されます。 テキストストリームは新たにエンコーディング (encoding)という属性を持つようになりました。 この属性はストリームがオープンされたときに設定されます。 エンコーディングが指定されていない場合、システムに固有のデフォルト設定が 使用されます(おそらくすでに存在しているファイルがオープンされようとしたときに)。

Read operations on binary streams return bytes arrays, while read operations on text streams return (Unicode) text strings; and similar for write operations. Writing a text string to a binary stream or a bytes array to a text stream will raise an exception.

バイナリストリームに対する読み込み操作はバイト配列が返ってきます。 一方、テキストストリームに対する読み込み操作は(Unicodeである) テキスト文字列が返ってきます。 バイナリストリームに対してテキスト文字列を書き込もうとしたり テキストストリームにバイト配列を書き込もうとすると、 例外が発生します。

Otherwise, the API is kept pretty compatible. While there is still a built-in open() function, the full definition of the new I/O library is available from the new io module. This module also contains abstract base classes (see below) for the various stream types, a new implementation of StringIO, and a new, similar class BytesIO, which is like StringIO but implements a binary stream, hence reading and writing bytes arrays.

そのほかに、APIは素晴らしい互換性を保ち続けています。 組み込み関数の open() はまだ存在しており、 新しいI/Oライブラリで定義されているすべては新しい ioモジュールから使用することが可能です。 このモジュールはまた、 StringIOの新しい実装であるとか、 (StringIOに似ているけれどもバイナリストリームに対するもので バイト配列を読み書きする)BytesIOというクラス、 はたまたさまざまなストリーム型のための 抽象基底クラス(abstract base classes)を持っています。

■_ xpressive つづき

 The first thing you'll notice about the code is that all the types in xpressive 
live in the boost::xpressive namespace.

xpressiveにおけるすべての型は boost::xpressive 名前空間にいるということが、
あなたがこのコードに関して最初に認識することでしょう。

[Note] 	Note

Most of the rest of the examples in this document will leave off the using 
namespace boost::xpressive; directive. Just pretend it's there.

以下に挙げている例は大部分が、using namespace boost::xpressive
というディレクティブが省略されています。

Next, you'll notice the type of the regular expression object is sregex. If you are familiar with Boost.Regex, this is different than what you are used to. The "s" in "sregex" stands for "string", indicating that this regex can be used to find patterns in std::string objects. I'll discuss this difference and its implications in detail later. 次に、正規表現オブジェクトの型が sregexというものであることに気がつくでしょう。 もしあなたがBoost.Regexに慣れ親しんでいたのなら、 sregexはあなたがこれまで使ってきたものとは違います。 “sregex”の“s”とは、“string”を表すもので、 この正規表現がstd::stringオブジェクトに含まれるパターンを見つけ出すのに 使うことができることを示しています。 ここで、Boost.Regexのような従来のものと sregexとの間の違いと、 sregexの詳しい説明をすることにしましょう。 Notice how the regex object is initialized: まずregexオブジェクトをどのように初期化するかを知ってください:
sregex rex = sregex::compile( "(\\w+) (\\w+)!" );
To create a regular expression object from a string, you must call a factory method such as basic_regex::compile(). This is another area in which xpressive differs from other object-oriented regular expression libraries. Other libraries encourage you to think of a regular expression as a kind of string on steroids. In xpressive, regular expressions are not strings; they are little programs in a domain-specific language. Strings are only one representation of that language. Another representation is an expression template. For example, the above line of code is equivalent to the following: 文字列から正規表現オブジェクトを生成するために、basic_regex::compile() のようなファクトリメソッドを呼び出さなければなりません。 これはほかのオブジェクト指向正規表現ライブラリとxpressiveとが異なっている 部分の一つです。xpressive以外のライブラリは steroidsにおける文字列の一種として 正規表現を考えるように強制します。 xpressiveでは、正規表現は文字列ではなくて、 ドメイン固有言語(domain-specifice language)で記述されている 小さなプログラムです。 もう一つの(xpressiveにおける)特徴は、正規表現が式テンプレート (expression template)であるということです。たとえば、 上の例は以下のように書いたコードと等価です。
sregex rex = (s1= +_w) >> ' ' >> (s2= +_w) >> '!';
This describes the same regular expression, except it uses the domain-specific embedded language defined by static xpressive. これは同じ意味を持つ正規表現を記述していますが、静的な xpressiveによって 定義されているドメイン固有埋め込み言語(domain-specific embeded language) を使っている点が異なります。 As you can see, static regexes have a syntax that is noticeably different than standard Perl syntax. That is because we are constrained by C++'s syntax. The biggest difference is the use of >> to mean "followed by". For instance, in Perl you can just put sub-expressions next to each other:
abc
But in C++, there must be an operator separating sub-expressions: しかしC++では、演算子が部分式を分けていなければなりません:
a > b > c
In Perl, parentheses () have special meaning. They group, but as a side-effect they also create back-references like $1 and $2. In C++, there is no way to overload parentheses to give them side-effects. To get the same effect, we use the special s1, s2, etc. tokens. Assign to one to create a back-reference (known as a sub-match in xpressive). Perlではカッコ対('()')は特別な意味を持っています。それらはグループ化を行いますが 同時にその副作用として$1とか$2のような後方参照(back-references)を作り出します。 C++では副作用を与えるためにカッコ対にオーバーロードを施す手段がありません。 Perlと同様の効果を得るために、わたしたちはs1, s2, etc. という特殊なトークンを 使うことにしました。それらに代入することによって後方参照を生成します (xpressiveではサブマッチ(sub-match)として知られています)。 You'll also notice that the one-or-more repetition operator + has moved from postfix to prefix position. That's because C++ doesn't have a postfix + operator. So: 同様に一回以上の繰り返しを表す演算子である '+' は、 後置演算子から前置演算子へと変更されました。 これは、C++では後置の + 演算子を持つことができないからです。 したがって:
"\\w+"
is the same as: これは以下のものと同じ意味です:
+_w
We'll cover all the other differences later. このほかの違いについては後で述べることにします。

■_ もやしもん 5巻

書店員の情報交換スレ31
http://anime2.2ch.net/test/read.cgi/csaloon/1180582004/386
386 【マロン名無しさん】 sage

アレ、「もやしもん」の入荷数
特装版と通常版の数が逆になってるぞ・・・

まあ、いいかw
さて通常版追加追加。

今回は限定版の刷り部数がかなり多いというのをどこかで聞いたのだけど それを裏付けるものかも知れず(笑)

本屋の平積みの状況を見ると、この書き込み通りだったようだ。

■_ 脆弱性(PHP)

yohgaki's blog - tidy_parse_string() オーバーフロー

yohgaki's blog - tidy_parse_string() オーバーフローNational Vulnerability Database (CVE-2007-3294)

PHPは表面的にしか知らないので、 この関数がどういうときに使われるものなのか良くわからず。 exploitコードも良くわからんなあ。って十六進ダンプだから当然?(笑)

PHPの脆弱性ということでこういう話題も → PHPコードのXSSやSQLインジェクション脆弱性をチェックする「Pixy」:phpspot開発日誌

大昔の、Cコンパイラに対するlintみたいな立ち位置のツールか?

■_ scala

ここしばらくはあまり新言語を積極的に追いかけていないのだけど (このページを言語情報の追加で 更新したのはいつが最後のことやら…(^^;)、まつもとさんのところで 一応名前だけは知っていた。が、

jijixi's diary - 今日の新言語『The Scala Programming Language』 , Scala の型推論 , Scala のパターンマッチ , 暗黙の変換 , カリー化 , カリ..

ともあれ、パターンマッチにちょっと工夫があったり (Regular Expression Patterns) おもしろそうな部分はいろいろある。ちまちまいじってみよう。

というところに心惹かれリンクをたどってみる。

General RegExp patterns temporarily retracted from Scala

Since we discovered a problem in correctness, this feature is temporarily retracted 
from the Scala language. If there is request from the user community, we might 
reactivate it in an improved form.

According to our opinion regular expressions patterns were not so useful for XML 
processing as we estimated. In real life XML processing applications, XPath seems 
a far better option. When we discovered that our translation or regular expressions 
patterns has some bugs for esoteric patterns which are unusual yet hard to exclude, 
we chose it would be time to simplify the language. 

しょぼーん。

encoding (Perl)

昨日ちょっとふれたモジュールですが、 danさんを始めとしたPerl Mongerのblogで取り上げられているようです。 → Time to ditch encoding.pm: blog.bulknews.net
YappoLogs: encoding::sourceをperl5.8系で動かす
404 Blog Not Found:perl - no encoding; # whenever possible

danさん曰く

本来のencodingプラグマの役割は、過去のソースのための「つなぎ」だったのに、 偶然かつあまり幸福とは言えない形で現代も使われているわけです。 「このあたりのことをわかってないと、かえって不幸になる可能性がありますよ」 というのはencodingのPODにさんざん書いてはいたのですが、 しかし立っているものは$^Hでも使ってしまうのがPerl Mongersの悲しい性。

「ドキュメントが英語だから」ということでろくに情報が newbieと呼ばれるようなレベルの人たちに届いていないというわな。 まあその存在を知りもしないということで、 かえって事態が悪化しないですんでいるという見方も成り立つとは思いますが、 「Perlで日本語のテキスト扱うにはどうすればいいんですかあ?」とか 「(ShiftJISでソースを書いていたら)正規表現マッチングしようとすると エラーになる漢字があるんでどどうすればいいんですかあ?」 という怨嗟(笑)の声は絶えず。

2007年06月21日

■_ xpressive

User's Guide
http://boost.org/doc/html/xpressive/user_s_guide.html#boost_xpressive.user_s_guide.introduction

What is xpressive?
xpressiveってなんですか?


xpressive is an object-oriented regular expression library. Regular expressions 
(regexes) can be written as strings that are parsed dynamically at runtime (dynamic 
regexes), or as expression templates that are parsed at compile-time (static regexes).
Dynamic regexes have the advantage that they can be accepted from the user as input 
at runtime or read from an initialization file. Static regexes have several 
advantages. Since they are C++ expressions instead of strings, they can be 
syntax-checked at compile-time. Also, they can refer to other regexes and to 
themselves, giving static regexes the power of context-free grammars. Finally, since 
they are statically bound, the compiler can generate faster code for static regexes.

xpressiveとは、オブジェクト指向に基づく正規表現ライブラリです。
正規表現を実行時に動的に解析される文字列(dynamic regexes)として記述することも、
コンパイル時に解析される式テンプレート(static regexes)として記述することも可能です。
動的正規表現は実行時にユーザーから受け取ったり、初期化ファイルから読み込んだ
ものを受け付けることができるという利点があります。
静的正規表現にも幾つかの利点があります。C++の文字列ではなく式であるので
記述されたものをコンパイルしているときにチェックすることが可能です。
また、他の正規表現や自分自身をも参照すること可能で、これは静的正規表現に
文脈自由文法(context-free grammers)としての力を与えることになります。
さらに、(静的正規表現は)静的に束縛されるので、コンパイラは
それに対してより高速なコードを生成することが可能となります。

xpressive's dual nature is unique and powerful. Static xpressive is a bit like the 
Spirit Parser Framework. Like Spirit, you can build grammars with static regexes 
using expression templates. (Unlike Spirit, xpressive does exhaustive backtracking, 
trying every possibility to find a match for your pattern.) Dynamic xpressive is a 
bit like Boost.Regex. In fact, xpressive's interface should be familiar to anyone 
who has used Boost.Regex. xpressive's innovation comes from allowing you to mix and 
match static and dynamic regexes in the same program, and even in the same expression!
You can embed a dynamic regex in a static regex, and the dynamic regex will 
participate fully in the search, back-tracking as needed to make the match succeed. 

xpressiveのもつ二重の性質(dual nature)は特異なものであり、かつ強力なものです。
静的なexpressiveはちょっとばかし Sprit Parser Frameworkに似たものです。
Spirit同様、あなたは式テンプレート(expression templates)を使った
静的正規表現によって文法を構築することができます。Spiritとは異なり、
xpressiveは貪欲なまでにバックトラッキングを行い、与えられたパターンに対して
マッチ可能なもの全てを見つけ出そうとします。動的正規表現は Boost.Regexのような
ものです。事実、xpressiveのインターフェースはBoost.Regexを使ったことにあるひと
にとって親しみやすいものになっています。xpressiveのイノベーションは
静的正規表現と動的正規表現を一つのプログラム、いえ、一つの式の中でさえも
混ぜて使うことを許していることからきていてます。
静的正規表現の中に動的正規表現を埋め込むことができ、そしてその動的正規表現は
検索において制限なく使用することが可能で、
マッチを成功させるために必要なバックトラッキングも行います。

Hello, world!

Enough theory. Let's have a look at Hello World, xpressive style: 
#include <iostream>
#include <boost/xpressive/xpressive.hpp>

using namespace boost::xpressive;

int main()
{
    std::string hello( "hello world!" );

    sregex rex = sregex::compile( "(\\w+) (\\w+)!" );
    smatch what;

    if( regex_match( hello, what, rex ) )
    {
        std::cout << what[0] << '\n'; // whole match
        std::cout << what[1] << '\n'; // first capture
        std::cout << what[2] << '\n'; // second capture
    }

    return 0;
}
This program outputs the following: このプログラムの出力は以下のようになります。
hello world!
hello
world
The first thing you'll notice about the code is that all the types in xpressive live in the boost::xpressive namespace. このコードについてあなたが最初に気がつくであろうことは、xpressiveにおける すべての型は boost::xpressive という名前空間の中にあるということです。

■_ Python 3000 Status Update (その2)

Compatibility and Transition

Compatibility
互換性

Python 3.0 will break backwards compatibility. Totally. We're not even aiming for 
a specific common subset. (Of course there will be a common subset, probably quite 
large, but we're not aiming to make it convenient or even possible to write 
significant programs in this subset. It is merely the set of features that happen 
to be unchanged from 2.6 to 3.0.)

Python 3.0では過去のプログラムに対する互換性(backwards compatibility)を破ります。
白紙の状態に戻します。わたしたちは特定の共通部分(specific common subset)で
さえも求めません(もちろん実際には共通部分は存在するでしょうし、それは
かなり大きなものでしょう。それでも、わたしたちはその共通分の中で
重要なプログラムを記述することを可能にするとか便利するようなことを
目指したりはしません。共通部分とは、たまたま2.6から3.0への間で変わることのなかった
機能の集まりに過ぎません)。

Python 2.6, on the other hand, will maintain full backwards compatibility with 
Python 2.5 (and previous versions to the extent possible), but it will also support 
forward compatibility, in the following ways:

一方Python 2.6では、Python 2.5(と可能な限りそれより遡るバージョン)との完全な
互換性が維持されます。しかし、未来に対する互換性(forward compatibitily)も
同様にサポートされます。それは以下の手段によります:


    * Python 2.6 will support a "Py3k warnings mode" which will warn dynamically 
      (i.e. at runtime) about features that will stop working in Python 3.0, e.g. 
      assuming that range() returns a list.

Python 2.6は、“Py3k 警告モード”をサポートします。
これはPython 3.0で使えなくなってしまうであろう機能に対して実行時に
警告くを発するというものです。対象となるものには range()がリストを返すと
いう仮定などがあります。


    * Python 2.6 will contain backported versions of many Py3k features, either 
      enabled through __future__ statements or simply by allowing old and new syntax 
      to be used side-by-side (if the new syntax would be a syntax error in 2.5).

Python 2.6はPy3kからバックポートされた多くの機能を持ち、
それは __future__ 文や side-by-sideで新しい構文と古い構文とを混ぜて
使うことによって使用可能となります。


    * Complementary to the forward compatibility features in 2.6, there will be a 
      separate source code conversion tool. This tool can do a context-free 
      source-to-source translation. As a (very simply) example, it can translate 
      apply(f, args) into f(*args). However, the tool cannot do data flow analysis 
      or type inferencing, so it simply assumes that apply in this example refers to 
      the old built-in function.

2.6で未来に対する互換(forward compatibility)を提供するために、
別個の独立したソースコード変換用ツールが作られます。
このツールは文脈自由なソースからソースへの変換を行うことができるものです。
たとえば(非常に簡単な例ですが)、このツールは
apply(f, args)を f(*args)に変換してくれます。
しかしながらこのツールはデータフロー解析やtype inferensing(型推論?)を
行うことはできないので、この例では古い組み込み関数を参照するように
単純な仮定を置いています。 


Transitional Development

The recommended development model for a project that needs to support Python 2.6 
and 3.0 simultaneously is as follows:

Python 2.6と3.0とを並行してサポートするためにプロジェクトが必要としている
推奨開発モデルは以下のようなものです:


   0. Start with excellent unit tests, ideally close to full coverage.
   1. Port the project to Python 2.6.
   2. Turn on the Py3k warnings mode.
   3. Test and edit until no warnings remain.
   4. Use the 2to3 tool to convert this source code to 3.0 syntax. Do not manually 
      edit the output!
   5. Test the converted source code under 3.0.
   6. If problems are found, make corrections to the 2.6 version of the source code 
      and go back to step 3.
   7. When it's time to release, release separate 2.6 and 3.0 tarballs (or whatever 
      archive form you use for releases).

0. 優れたユニットテストから始め、全て網羅した時点(full coverage)でクローズする
1. プロジェクトをPython 2.6に移植する
2. Py3k警告モードを有効にする
3. 警告がなくなるまでテストと編集を繰り返す
4. そのソースコードを 3.0の構文に変換するのに 2to3ツールを使う。
   出力を手で編集してはいけません!
5. 変換されたソースコードを3.0の元でテストする
6. もし問題が発生したらソースコードの2.6バージョンを訂正し、ステップ3へ戻る
7. リリース時期がきたら、2.6と3.0のtar玉(もしくはあなたがリリースに使っている
すべてのアーカイブ形式)を分けてリリースする

The conversion tool produces high-quality source code, that in many cases is 
indistinguishable from manually converted code. Still, it is strongly recommended 
not to start editing the 3.0 source code until you are ready to reduce 2.6 support 
to pure maintenance (i.e. the moment when you would normally move the 2.6 code to a 
maintenance branch anyway).

変換ツールは高品質のソースコードを生成します。多くの場合は
手作業で変換したコードと区別することができないでしょう。
ただし、あなたが純粋に保守のために2.6のサポートを縮小する準備ができるまで
(2.6向けのコードをmaintenace branchに移動する時期がくるまで)は
3.0向けのソースコードを編集するべきではありません。


Step (1) is expected to take the usual amount of effort of porting any project to a 
new Python version. We're trying to make the transition from 2.5 to 2.6 as smooth as 
possible.

ステップ1は、プロジェクトを新しいPythonバージョンに移行するために
必要なことであると見なされています。わたしたちは 2.5から2.6への移行も
可能な限りスムースなものにしたいと努力しています。

If the conversion tool and the forward compatibility features in Python 2.6 work out 
as expected, steps (2) through (6) should not take much more effort than the typical 
transition from Python 2.x to 2.(x+1).

変換ツールやPython 2.6の forward compatibility 機能が期待通り動いたならば、
ステップ2からステップ6まではPython 2.xから2.(x+1)へ移行するのとそう大差ない
手間でできるでしょう。

■_ 陳腐な表現だけど

「心に響いた」

今、映画監督として何を作るべきか。私は、今を生きる若い人たちに向けて、何かを
言ってあげたいという思いを、強く抱くようになりました。
 彼らの生きるこの国には、飢餓も、革命も、戦争もありません。衣食住に困らず、
多くの人が、天寿を全うするまで生きてゆける社会を、我々は手に入れました。しかし、
裏を返せば、それはとても辛いことなのではないか──と思うのです。
僕はこの映画を通して、今を生きる若者達に、声高に叫ぶ空虚な正義や、紋切り型の
励ましではなく、静かだけれど確かな「真実の希望」を伝えたいのです。その為に私は、
近年培ってきた演出手法を封じ、「イノセンス」とはまったく違うシナリオ・演出法を
もって、この映画を、若い人へ向けたエンターテインメント作品として作ろうと決意を
新たにしています。

■_

ウィルコム「Advanced/W-ZERO3[es]」の発売日は7月19日に決定 - GIGAZINE 経由で WILLCOM|Advanced/W-ZERO3 [es] 7月19日(木)より発売開始 ~「ウィルコム無線LANオプション」無料お試しキャンペーンも実施~

機種切り替えのことが何も書いてないなあ。 他のも気になるし → 第4回 解像度と輝度ならEM・ONE,HTC製は片手操作でも快適:ITpro
第2回 Windows Mobile搭載機,HSDPA採用の2機種に軍配:ITpro

■_ encoding::source

http://search.cpan.org/src/RGARCIA/encoding-source-0.02/lib/encoding/source.pm

use 5.009005; ってのがちとあれだけど

=head1 DESCRIPTION

This pragma allows to change the default encoding for string literals in the
current lexical compilation unit (block or file).

This is like the encoding pragma, but done right:

* It doesn't mess with the STDIN and STDOUT filehandles.

* It's lexically scoped and its effect doesn't leak into other files.

というのは期待しちゃっていーんだろうか?

■_ 今日のポチっとな

ドリームテック 翠星石

■_ 本日の購入

MOONLIGHT MILE 1stシーズン -Lift off-ACT.1
MOONLIGHT MILE 1stシーズン -Lift off-ACT.1

あまりいい評判を聞かないのだけど、怖いもの見たさでとりあえず 最初の一本目はチェックしとく。
ロケットガール 2
ロケットガール 2

宇宙物が二本並んだ(笑)

らき☆すたは一巻二話収録×12巻というのについていけないのでパス。 そんな構成は攻殻機動隊でお腹一杯 (だから「精霊の守り人」もスルーかなあ。IGの作品だから期待はあるんだけど)。

■_ mawk

ebanさんのところより

http://jarp.does.notwork.org/diary/200706b.html#200706201
mawkのprintfのバグ

Quineの有名なC版をawkに移植していて気づいたmawkのバグ。

BEGIN {
  f = "%c%s%c\n"
  printf(f, 34, f, 34)
}

これをmawkで実行するとなにか足りない。

% mawk -f x.awk
"%c%s"

ほんとはこうならないといけない。 

パッチです。 見てわかるとおりメモリリークする代物です :)

--- print.c.1~	1996-09-18 10:04:36.000000000 +0900
+++ print.c	2007-06-21 23:31:48.557979400 +0900
@@ -235,7 +235,7 @@ do_printf(fp, format, argcnt, cp)
 {
    char save ;
    char *p ;
-   register char *q = format ;
+   register char *q = strdup(format);
    register char *target ;
    int l_flag, h_flag ;		 /* seen %ld or %hd  */
    int ast_cnt ;

まあ必要性があったらもっときちんとしたのを作るということで。

2007年06月20日

■_ うまいな

知的好奇心解放 - マ儿コの日記 - 空飛ぶオランダ人みたいなブロガーになりたいね

良くできた地図だ。 どういう意味をこめて各bloggerをその国に当てはめたのかが 非常に気にはなるが。 ところでユーゴスラビアのところは分裂後のようなのに、 チェコスロバキアは一つになっているような?

■_ Python3000

まるまる訳している時間がないのでかいつまんで。 例によってツッコミ、提案は歓迎です。

Python 3000 Status Update (Long!)
http://www.artima.com/weblogs/viewpost.jsp?thread=208549

Python 3000 Status Update


Summary

Here's a long-awaited update on where the Python 3000 project stands. We're 
looking at a modest two months of schedule slip, and many exciting new features. 
I'll be presenting this in person several times over the next two months.

ここで述べるのは、長らく待たれていた Python 3000プロジェクトの状態の
アップデートです。

Early History
前史

The first time I came up with the idea of Python 3000 was probably at a Python 
conference in the year 2000. The name was a take on Windows 2000. For a long time 
there wasn't much more than a list of regrets and flaws that were impossible to fix 
without breaking backwards compatibility. The idea was that Python 3000 would be 
the first Python release to give up backwards compatibility in favor of making it 
the best language going forward.

最初にわたしがPython3000に関するアイデアを披露したのはたぶん、2000年の
Pythonカンファレンスでのことです。その名前はWindows2000から拝借しました。
長い間それ(Python3000)は、過去のスクリプトに対する互換性をなくすこと
抜きには修正するこのできないようなもののリスト以上のもではありませんでした。
Python3000とは、過去の資産に対する互換性を断念した最初のPythonになるであろう
もので、そうした上で最善の言語というものを求めようという考えがありました。

Recent History

Maybe a year and a half ago (not coincidentally around the time I started working 
for Google, which gave me more time for work on Python than I had had in a long
time) I decided it was time to start designing and planning Python 3000 for real.
Together with the Python developer and user community I came up with a Plan. We
created a new series of PEPs (Python Enhancement Proposals) whose numbers started
with 3000. There was a PEP 3000 already, maintained by others in the community,
which was mostly a laundry list of ideas that had been brought up as suitable for 
implementation in Python 3000. This was renamed to PEP 3100; PEP 3000 became the 
document describing the philosophy and schedule of the project.

おそらく1年半くらい前のことだと思いますが
(これはわたしがPtyhonに関して以前よりもより多くの時間を割けるようになった
Gooogleで働き始めた頃とは一致していません)、
わたしはPython 3000を実際にデザインしリリースすることを考えるときが
来たのだと決めました。
Pythonの開発者とユーザーコミュニティの両方とともに、
わたしはプランを練り上げました。
そのとき、3000から始まる番号のついたPEPs(Python Ehnancement Proposals)
の新しいシリーズが始まりました。
PEP 3000は他のコミュニティよって保守されていた
Python 3000の実装におけるアイデアのまとめられたリスト
としてすでに存在していたので、
これはPEP 3100と改められました。
PEP 3000は本プロジェクトに関する哲学とスケジュールとについて説明している
ドキュメントとなりました。

Since then, we have, well, perhaps not moved mountains, but certainly a lot of water 
has flowed under the bridge of the python-dev mailing list, and later the separate 
python-3000 mailing list.

そしてそれから、わたしたちが山を動かすようなことはありませんでしたが
python-devメーリングリストの橋のもとで湧き出る水のごとくメールがあふれ、
のちにpython-3000メーリングリストを分割することとなったのです。

  
Tentative Schedule

A schedule was first published around a year ago; we were aiming for a first 3.0 
alpha release by the end of the first half of 2007, with a final 3.0 release a year 
later. (Python 3.0 will be the version when it is released; "Python 3000" or "Py3k" 
is the project's code name.)

最初のスケジュールは約一年ほど前に公にされました。
わたしたちは 3.0の最初のアルファリリースを2007年の上半期の末までに
行い、3.0ファイナルリリースをその一年あとということを考えていました。
Pyhton 3.0とは、リリースされたときのバージョンであり、
“Python 3000”だとか“Py3k”というのはそれを開発するためのプロジェクトの
コードネームです。


This schedule has slipped a bit; we're now looking at a first alpha by the end of 
August, and the final release is moved up by the same amount. (The schedule slip is 
largely due to the amount of work resulting from the transition to all-Unicode text 
strings and mutable raw bytes arrays. Perhaps I also haven't delegated enough of 
the work to other developers; a mistake I am frantically trying to correct.)

このスケジュールにはちょっと遅延が起きました。
現状で、わたしたちは8月の末に最初のアルファが出せるだろうと期待しています。
そして先のスケジュールでの場合と同じくらいの期間をおいた後に
ファイナルリリースが出せるだろうと見込んでいます。
このスケジュールの遅延は、主に文字列や変更可能な生バイト(mutable raw bytes)
のUnicodeテキスト化によるものです。たぶんわたしはほかの開発者に対して
十分な作業を伝播していなかったと思います。わたしの犯した間違いは
修正しようとしています。

Python 2.6

There will be a "companion" release of Python 2.6, scheduled to be released a few 
months before 3.0, with an alpha release about 4 months before then (i.e., well 
after the first 3.0 alpha). The next two sections explain its role. If you're not 
interested in living on the bleeding edge, 2.6 is going to be next version of Python
you'll be using, and it will not be very different from 2.5.

“companion” リリースである Python 2.6がおそらくリリースされます。
これは3.0より数ヶ月先行してリリースされ、4ヶ月のアルファリリース期間の後
正式リリースとなります(これは最初の3.0アルファより後になるでしょう)。
続く二つのセクションで、2.6の果たすべき役割について説明します。
もしあなたがbleeding edge に生きることには興味がないのであれば、
2.6はあなたが使うPythonの次のバージョンとなり、そしてそれは
2.5とそう変わったところのないものです。


Compatibility and Transition
Compatibility
Transitional Development
Status of Individual Features


Unicode, Codecs and I/O
Unicode、コデックス、I/O

New I/O Library
新しいI/Oライブラリ
Printing and Formatting
出力と書式指定
Changes to the Class and Type System
クラスと型に対するシステムへの変更

Other Significant Changes
Exception Reform
例外処理の再構築
Integer Reform
整数の再構築
Iterators or Iterables instead of Lists
イテレータもしくはリストの代わりとなるイテレート可能なもの
Miscellaneous
雑多なことがら

The backtick syntax, often hard to read, is gone (use repr()), and so is the 
<> operator (use !=; it was too flagrant a violation of TOOWTDI).

backtick構文は読みにくくすること度々なので、なくなる(代わりに repr()を使う)。
また同 <> 演算子もなくなる(!=を使うこと。これはTOOWTDIの原則を破って
いたためである)。


Library Reform
ライブラリの再構築

And Finally

Did I mention that lambda lives? I still get the occasional request to preserve 
it, so I figured I'd mention it twice. Don't worry, that request has been granted 
for over a year now.

lamdaの消息については云ったっけか? わたしはいまでもlamdaをなくさないでという
リクエストをたびたび受け取っているので、もう一度ここではっきりしておこう。
心配することはない。そのリクエストは一年以上前に受理されてますよ。と。

■_ 一方Perlは

Perl6の本が出るらしい。 → Learning Perl 6

リンクから辿れるところにあるプロポーザルが結構面白い。

We're writing Learning Perl 6, the Perl 6 version of our Learning Perl. 
O'Reilly Media has accepted the proposal and we're negotiating the contract.

わたしたちは“Lerning Perl 6”を執筆している最中です。これは
“Lerning Perl”の Perl 6版です。
O'Reilly メディアは提案を受理し、契約について話し合っているところです。


=head2 The market for the book.

We anticipate two major markets for this book, both of which assume
prior programming experience:

わたしたちはこの本に関して二つの市場があると予測しています。
それぞれは読み手のプログラミングの経験により分けられます。


1) The current Perl programmer who wants to learn Perl 6. This is a
very large market segment containing everyone currently using Perl,
including intermediate and advanced programmers who would not normally
be part of the beginner book market. Perl 6 is so different than Perl
5 that it can be like starting a new language for most current Perl
practitioners.

Perl 6を学んでみたいと思っている現在でもPerl プログラマである人たち。
これは非常に大きなマーケットセグメントであり、現在Perlを使っている
ひと全てが対象となります。そして、初心者向け書籍のマーケットに
収まらないような intermediate programmer や advanced programmerも
ここに含まれるでしょう。Perl 6は Perl 5とは非常に異なっているので、
現在の Perl practitioner のほとんどにとっては新しい言語を学び始める
ようなものになるでしょう。


2) People new to Perl who are starting with Perl 6. We expect this
market to be small initially, and grow significantly as Perl 6 takes
over real production work from Perl 5.

Perl 6で初めてPerlに入門するような人たち。わたしたちは、この市場は最初は
小さいけれどもPerl 6による real production work がPerl 5によるそれを追い
越すのに歩調を合わせて成長してくことを期待しています。


A previous O'Reilly book, "Perl 6 Essentials", could perhaps cover
part of the first market, but was last updated in 2004.

先に O'Reilly より出版されている “Perl 6 Essentials”は
最初の市場を一部カバーしているかもしれません。
しかしこの本は2004年が最後の更新なのです。

■_ intermission

んーキーワードがたくさんあるせいかgperfに掛けた結果が10M以上ある… しかたない二分検索にするか。

■_ ソフトを売るのも大変ね

■_ メモ

  • 机の上は自分の心を映す鏡
  • 物が見つからないのは警告信号
  • まず書類を「捨てる」から始めよ
  • 「捨てる」ことは時間を節約
  • 「もったいない」「いつか必要」「過去の思い出」の誘惑を振り切れ
  • 「見える」で仕事の流れを把握
  • 「見せる」でリバウンドを防止

耳に痛い…実に。

■_ 本日の購入

The Art of UNIX Programming
The Art of UNIX Programming

でかい版型の本なので通勤時に持ち歩いて電車内で読むとかは できそうにないなあ。 読む時間取れるだろうか。

■_ メモ(アジャイル開発に対する9つの誤解)

  1. ドキュメントを作成しない → 作成コストを意識して、価値のあるドキュメントだけを作成する
  2. 規律がない → 適切な規律が求められる
  3. 計画性がない → Just-in-timeの計画が求められる
  4. 先見性がない → 先を見据えた開発手法である
  5. 大規模開発には向かない → Eclipseのような大規模プロジェクトでも使われている
  6. 流行ものにすぎない → 近い将来標準となるだろう
  7. 銀の弾丸(すべての問題を解決する魔法のようなもの)である → 習熟した技術者によって成し遂げられるものである
  8. RUPはアジャイルプロセスではない → RUPは柔軟にカスタマイズできるアジャイルプロセスである
  9. 実績に応じた開発費の変更が難しい → 予算、スケジュール、開発規模をステークホルダーがコントロールできる

アジャイル開発では、動作するプログラムを最重要視し、2週間などの決められた期間で定期的にリリースを行う。さらに、それに対するユーザーからのフィードバックを順次取り込み、顧客にとって利用価値の高いシステムを提供するというアプローチになる。

ウォータフォール型プロセスのように、顧客が求める結果に対して直接の関係がない成果物(ドキュメントなど)はあまり作成しないため、「従来のように、プログラムは一切作成していないのに開発作業の6割が終わったなどと放言するようなことにはならい」(Ambler氏)という。また、「そもそも、そのような(認識の甘い)プロジェクトが開発を継続すべきではないことは、冷静に考えればわかることだ」とも続けた。

■_ PCRE 7.2

MYCOMでアナウンスがあるとはねー。 → Perl 5の正規表現をC言語へ - PCRE 7.2登場 | エンタープライズ | マイコミジャーナル

7.2ではPerl 5.10の正規表現からいくつかの機能「(?-n)、(?+n)、(?(-n)、 (?(+n)、\k{name}、\g{name}、\K、(?|、\ h、\H、\v、\V」が追加されたほか、 バグの修正、パフォーマンス改善のためのリファクタリングなどが実施されている。

わお。 本家より先に出ちまったぜい(笑) (開発者リリースで、と言う話はなしということで)

小迫さん(鬼車)はどうするんだろう? ちょっとだけはてな日記で言及があったけど。

■_

神様なんて信じない僕らのために - 要はどんなプログラマになりたいか? かなとか。

戦闘機のパイロットやF1ドライバは機械べったりの知識は必要ないと思うんですが、 戦闘機やF1を運転しているときに感じる(かもしれない、もっと上へいくための) 違和感の正体の理由を知っているかどうかで、 よりよい運転ができるようになるかもしれないですし 人にも言葉にして伝えられるかもしれず。 (たとえはたとえということで一つ宜しくお願いします)

確かにそのとおりで、その辺に言及するのを忘れていました。 これだからたとえ話は怖い(笑)

2007年06月19日

■_ Let's Boost

痺れを切らして自分でビルドすることに。 二三引っかかったが、基本的には大きな問題もなく。

bjam --prefix=/boost1_34 --toolset=msvc-7_1 --without-wave --without-test --without-serialization --without-python --without-graph install

てな感じで。 フルビルドするとでかいので、 あまり使いそうもないものを泣く泣く幾つか削る。

■_ Perl6会議

今週のは結構面白い。と思う。 今回は長いので所々切り出しながら。

http://use.perl.org/articles/07/06/15/113205.shtml

 The Perl 6 design team met by phone on 13 June 2007. Larry, Damian, Patrick, 
Jesse, and chromatic attended. These are the minutes.

Larry:

    * it went pretty well
    * I spent a great deal of my time writing that talk
    * it's an interesting conference
    * several hundred programming language geeks of the CS variety
    * they tend to have very specialized interests and speak very technically
    * Perl came off pretty well during the weekend
    * the functional programming panelist as much as said that Perl was one of the 
      successful functional programming languages
    * he counted among the failures Lisp, Scheme, and Haskell
    * this was the Scheme guy saying this...
    * I think some people cottoned to the notion that we're doing something special 
      here
    * being a "scripting" language is not inconsistent with doing other paradigms 
      well
    * if we can get more academic attention and stay practical at the same time, 
      that would be good I think
    * other random interactions on forums
    * stomping on the conditional operator complexification


Patrick:


    * also have the new quoting syntax from S05 working under Parrot now
    * (the ability to do proto regexes and :sym<...> is still not implemented)



****

Damian:

    * I have some concerns about the multi-line comment syntax and its relation to POD
    * it's a great language construct
    * my concern is just this interaction
    * POD has always been a layer above the code
    * you don't have to understand the code to parse it
    * this new language feature sits above the POD as well
    * it mixes the levels
    * the rationale is to comment out POD
    * you could already do that with the =comment block, which comments out POD in POD
    * why is it necessary to put this type of comment at a level above POD?
    * why not just a programming level construct that works as it works?

Larry:

    * you're right
    * I'll fix it

Damian:

    * oh
    * okay


***

Larry:

    * if the heavy magic is for Perl 6 to allow extensible grammars and other languages don't want to tap into that magic, that's fine

Patrick:

    * it's simple in Parrot to get their precedence levels bottom-up now
    * if I switch to the Perl 6 approach, their complexity goes way up

Larry:

    * it's sort of a duck-typing non-duck-typing issue
    * we can leave it at that for now

Jesse:

    * what's your sense of the completeness of the Pugs test suite?

Larry:

    * we should probably double it

■_ もうひとつPerl6

use Perl | Learning Perl 6 by brian d foy経由で http://www.perlcast.com/audio/Perlcast_Presentation_004.mp3http://www.pair.com/~comdog/Talks/LearningPerl6-NPW2007.pdf

  • It's a completely new language
  • That other one never existed
  • Llama 6 is a long way off
  • This is the basics of the language
  • Next week it might be different
  • Perl 6 is a new language
  • It Borrows from Perl (and ancestors)
  • It's not done yet, but it's almost usable

■_ マイクロソフト ACE プログラム

マイクロソフト ACE プログラム

ACE (Award for Customer Excellence) プログラムは、熱意を持ってマイクロソフトの 製品やテクノロジーに接し、コミュニティで活躍されている多くの方々に、 マイクロソフトが有益な情報や機会を提供し、支援するプログラムです。 ACE プログラムでは、専用フォーラムの提供や特別イベントの開催など、 数々の特典を用意し、コミュニティで活躍する皆様の活動および知識の拡大の お手伝いをします。

現在、ACE 事務局では、 常日頃から答えてねっとで素晴らしい活躍をされている方々を中心に、 ACE 候補者の選出を予定しています。 具体的なスケジュールや候補者への連絡方法などの詳細が決定次第、 本サイトにてご連絡させていただきます。

答えてねっとはチェック対象から外れてたな。 どんな感じなんだろうか。

■_

最近の企業の新人研修では, プログラミング言語としてJavaが使われることが多いようですが, ぜひアセンブラとC言語の教育も検討してほしいと思います。 Javaだけ学ぶのは,極端なことを言えば,医者が人体の構造を知らずに, 高度に自動化された医療機器の使い方だけを覚えるようなものです。 そうした人が「プロ」と名乗っている状況を見ると,私はゾッとします。

greentea師匠が たとえ話は危険だという趣旨のエントリをバカ征くで書いたことがあると 思いますが、これなんかもそのうちの一つになるような気がします。

Javaだけ、というのはまあ極端にしても、 アセンブリ言語とかCの知識って「必須」といえるほどのものなんだろうか? と考えることがあります (「必要ない」とまでは云っていないのでその辺よろしく)。

「仕事で」LispとかHaskellなんかを使うことはまあ皆無といわないまでも、 まずないでしょうけれども、とにかくそういった方面のプログラミングをするときに 具体的な「計算機」の低レベルな実装というのは逆に足枷になったり しないかなあと思うわけです。(とっても危険な)たとえ話をもちだすならば、 戦闘機のパイロットとか、F1ドライバーは 整備士が持っているであろう機械べったりな知識というのは必要ないですよね。 あくまでも掛けることのできる労力や時間と効果とを考慮して決めるべき 問題ではないでしょうか。 無制限に教育に時間をかけられるところなんてないでしょうから、 なまじ中途半端に低レベル言語に手を染めるよりは他のことに注力した方が 良いのではないでしょうか。

無論、受ける側の人間がやりたいというのであれば止める道理もありません。

あ、上でgreeteaさんに付けた「師匠」ってのは 落語家の真打なんかを呼ぶときのようなものだと受け取ってください。 別に弟子入りはしていません(笑)し、しようとしても門前払いでしょう。

■_ 4004開発回顧録

LSI設計の難しさを知っているファジンは,4003SRのウェーハが出来上がると, 一緒にデバッグをしようと,私を実験室に誘った。 チップが予想通りに動作したときの彼の感激は非常に大きかった。 私は,動いて当たり前だと思っていたので,正直に言うと,あまり興奮も感激もしなかった。 後に8080の開発においてレイアウト設計を指導してLSI設計の難しさを初めて知った。 しかし,このときは,論理的に間違いが無ければ, 回路やレイアウトの設計は大きな障害がなく実現可能であると思っていた。 経験がないと成功の喜びも薄くなる。

LSIの開発なんてのは縁がありませんが、 新規開発のコントローラつかったプロジェクトなんかは 苦労しましたねえ(遠い目) 未完成のハード(やそのエミュレータ/シミュレータ)を相手にしながら プログラムを書くというのはもうやりたくない(笑)


西の空に明けの明星が輝く頃

一つの光が宇宙へ飛んでいく…それが僕なんだよ
さよならアンヌ

ウルトラセブン最終話

無粋な解説:
「明けの明星」は「西の空」には輝きません。 「西の空」に輝くのは「宵の明星」です。 まあこの地球での話でないとか、 実体(金星)は同じぢゃねーかといわれればそれまでですが :) → 明けの明星 - Wikipedia

TOKYO MX TVでの放送が最終回なので取り上げてみました。

2007年06月18日

■_ 人生は伊達と酔狂

ということで Me.age += 1

BGMはみーさまの 寒水魚
寒水魚
で。

年をとるのは素敵なことです。そうじゃないですかあ♪

■_ More Effecive C++

今月末に新訂版てのが出るそうです。 → Amazon.co.jp: 新訂版 More Effective C++: 本: スコット・メイヤーズ,安村 通晃/伊賀 聡一郎/飯田朱美/永田周一

昨日(つか今日)2ちゃんねる某スレで情報を見かけて早速探してみたのだけど そのときは新刊を裏付けるものを見つけられなくて (つーか、放置プレイが過ぎないか? >ピアソン →参考 Pearson Education Japan いつの新刊がトップにきてんだよ…)ガセかとも思ってたところ 今日になって複数の場所で新訂版の文字を見かけたので 改めて検索してみたら見つけることができた。

巡回先のどこかで、More Effecive C++を読みたいが絶版状態で、 古本もプレミア付きで手を出せないとかいうのを読んだ記憶があるのだけど どこだったかなあ。 これで読めるといいですね。

しかし、書影がない本のリンクというのは張っても味気ないなあ 新訂版 More Effective C++
新訂版 More Effective C++

■_ さんだば

んー 2.0.0.4になったのとほぼタイミングを同じくして、 なんかの拍子にCPUパワー喰いまくり現象がThundribird でも起きるようになってしまった。 他のアプリを操作することはできるんだけど、 Tbに対しては何もできない状態になってしまうのでストレスがたまる (アプリケーション切り替えをしても、ウィンドウの描画すら まともにしない状態)。 しばらく待つと元通りにはなるんだけど、 今のところどういうタイミングで起きるのかすら皆目見当がつかないので にんともかんとも。

どーにかしてくれ >Mozillaの中の人

■_ Python Workshop the Edge 2007

Python Workshop the Edge 2007(2007年6月30日開催)

もたもたしてたら埋まってしまったらしい。 しょぼーん。

■_ Let's Boost?

steps to phantasien t(2007-06-13)

新しい正規表現ライブラリ boost::xpressive はビルドがいらない. ヘッダファイルだけで閉じている. すばらしい. boost のキラー機能がひとつ増えた. Spirit 風の言語内 DSL で正規表現を組み立てられるのがマニア的な見所なんだろうけれど, ちゃんと文字列の正規表現もコンパイルできる. 安心.

何日か前にもBoostをチェックしたのだけど、 1.34のバイナリパッケージ(VC用)がなくて断念していたり。 1.33でちょっとやってみるかなあ。 → Chapter 21. Boost.Xpressive

Description

xpressive is an advanced, object-oriented regular expression template library for 
C++. Regular expressions can be written as strings that are parsed at run-time, or 
as expression templates that are parsed at compile-time. Regular expressions can 
refer to each other and to themselves recursively, allowing you to build arbitrarily 
complicated grammars out of them.

xpressive は、C++のための先進的でオブジェクト指向の正規表現テンプレートライブラリです。
正規表現は文字列として書くこともでき、その場合は実行時に解析が行われますが、
コンパイル時に解析が行われる式テンプレート(expression template)として記述することも
可能です。正規表現ではほかのもの参照したり、あるいは自分自身を再帰的に
参照する子もできます。これによって任意の複雑な文法を構築することが可能になります。


Motivation

If you need to manipulate text in C++, you have typically had two disjoint options: 
a regular expression engine or a parser generator. Regular expression engines (like 
Boost.Regex) are powerful and flexible; patterns are represented as strings which 
can be specified at runtime. However, that means that syntax errors are likewise not 
detected until runtime. Also, regular expressions are ill-suited to advanced text 
processing tasks such as matching balanced, nested tags. Those tasks have 
traditionally been handled by parser generators (like the Spirit Parser Framework). 
These beasts are more powerful but less flexible. They generally don't allow you to 
arbitrarily modify your grammar rules on the fly. In addition, they don't have the 
exhaustive backtracking semantics of regular expressions, which can make it more 
challenging to author some types of patterns.

あなたがC++を使ってテキストの操作を行いたいと思ったとき、典型的には
二つの disjoint な選択肢があります。ひとつは正規表現エンジンであり
もうひとつはパーザジェネレーターです。Boost.Regexのような正規表現エンジンは
強力であると同時に融通が利きます、パターンは実行時に特定可能な文字列として
表現することができます。しかしながら、このことは逆に、構文エラーのような
ものも実行するそのときまでは検出することもできないということになります。
正規表現はまた、テキスト中にあるネストしたタグがバランスしているかどうかの
検査のために使うのにはあまり向いていません。このようなタスクは伝統的に
(Spirit Parser Frameworkのような)パーザジェネレータによって取り扱われてきた
ものです。これはより強力なものではあるのですが、フレキシブルといった観点
からみると正規表現には劣ります。パーザジェネレータは一般的に、実行時に
その場で(on the fly)文法を好きなように変えてしまうことを許しません。
それに加えて、パーザジェネレータには書き手を掻き立てるような要素である
正規表現において非常に高くつくバックトラッキング
のようなものははありません。


xpressive brings these two approaches seamlessly together and occupies a unique 
niche in the world of C++ text processing. With xpressive, you can choose to use it 
much as you would use Boost.Regex, representing regular expressions as strings. Or 
you can use it as you would use Spirit, writing your regexes as C++ expressions, 
enjoying all the benefits of an embedded language dedicated to text manipulation. 
What's more, you can mix the two to get the benefits of both, writing regular 
expression grammars in which some of the regular expressions are statically bound -- 
hard-coded and syntax-checked by the compiler -- and others are dynamically bound 
and specified at runtime. These regular expressions can refer to each other 
recursively, matching patterns in strings that ordinary regular expressions cannot. 

xpressive はこれら二つのアプローチをシームレスにまとめ上げることで、
C++を使ったテキスト処理においてunique niche を占めることになります。
Boost.Regexを使うような場所でxpressiveを使うことで、正規表現を文字列として
表すことができますし、Spiritを使うような場所でxprressiveを使うことで
正規表現をC++の式として書き下すことが可能であり、テキスト処理を行うための
組み込み言語(embedded language)の利益を享受できます。
さらに、これら二つを混ぜて使った上で両方から利益を受けることができます。
正規表現構文をいくつかの正規表現で書いたものは静的に束縛されます
(ハードコードされ、コンパイラーによって構文チェックが行われます)。
また、それ以外のものは実行時に特定され動的に束縛されます。これらの正規表現は
普通の正規表現ではできないような、文字列中のパターンのマッチングでの
それぞれ互いに再帰的な参照が可能です。

■_ リスト内包表記(List Comprehension)

リスト内包表現は自然言語(英語)に近い形式で配列を表現できますし,RubyでEnumerableのメソッドを使った場合よりもコンパクトに記述できるため,Pythonユーザーの中ではかなり人気があるようです。Pythonにもcollectと同じ働きをするmapという関数がありますが,リスト内包表現があるからもうこれは要らないという動きがあるくらいです。

リスト内包表現は興味深い文法ではありますが,次のような理由により, 将来にもRubyに採用される可能性はないでしょう。

  • 日本人(特に私)にとってそれほど読みやすいとは思えないため,魅力が少ない
  • 評価順序が前後するため,Rubyの他の部分の順序(基本的に左から右に進む) との整合性が悪い
  • 結局はcollectとselectの組み合せだけしか実現できず,ブロックの方が (少々記述が冗長だが)より幅広い領域に応用可能

Dave Thomasにはこの辺の話はしたのだろうか? まあまつもとさんの主張には頷けるのだけど、 DaveはDaveで意見もっているだろうしなあ。 ってこれ元は2005年11月の記事か。 まつもとさんの見解も変わっていたりする?

■_ 日本じゃあやらねえ…だろうなあ

O'Reilly Radar > Buy O'Reilly Books by the Chapter

Go to virtually any O'Reilly catalog page (well, actually, 350 books are live as of Saturday night), and in addition to the existing options (buy this book, buy a downloadable pdf, buy reprint rights, read online with Safari), you can now buy individual chapters for $3.99 each.

素晴らしい。

■_ なんだか良くわからないものだがどうなのよ

Alinous-Coreは、プログラミング知識がほとんどないデザイナーの人でも、 簡単にシステムを作れてしまうWeb-DB開発言語環境です。通常のJavaやPHPの開発では、 プログラミング知識が必要ですが、 Alinous-Coreの場合には、 ほぼHTMLとSQLの知識のみで簡単に本格的なアプリケーションが作れます。 開発環境も無償で提供されており、 非常に効率良くWebアプリケーションを開発することができます。

Webアプリケーション開発で使われる言語としてはJavaやPHPなどがあると思いますが、 次のようなことで悩んだことはないでしょうか?

  * Javaを習得する敷居が高い、言語が難しい。
  * デザイナーとの連携が非常に困難。
  * ソースコードが複雑になるため、保守するときにどこを直してよいか見つけるのが大変。
  * フォーム変数のチェックにものすごく時間がかかる
  * 1画面に複数の機能が入るにつれてプログラムが難しくなっていく。
  * 一部分変えるだけでも、沢山のファイルを直さなくてはならない。
  * HTMLの部品化ができない。再利用が困難。

 これらの問題を解決するためにAlinous-Coreは誕生しました。それでは、 Alinous-Coreについて見ていきましょう。

眉に唾つけてから読んでみるとしよう。

■_ L魂(えるだま)

略しすぎ>じぶん

それはさておき

そこで今回、LL魂のLanguage Updateセッションは、 すでにLLイベントで発表経験のある言語【ベテラン】枠と、 まだ発表されていない言語【ニューカマー】枠に分けて、 それぞれ3~5言語に絞ることにしました。

【ニューカマー】

    * Io : 浜地 慎一郎
    * Lua : 上野 豊 

おお、Lua。 namerleとかはいないのかな? あ、あとxtalの彼。

http://ll.jus.or.jp/2007/show/Blog


日本最初のハッカー、和田英一先生に「ハッカー気質」という題で講演していただきます。
ご期待ください。

サインねだっちゃまずいかなあ…

2007年06月17日

教材

from 某ML

# 加えて言うなら、OS の勉強をきちんとしようとしたら Linux
#は必ずしも最適な教材ではないと思う。shell script の基礎知
#識を学ぶのに Bourne shell じゃなくて zsh 使うようなもの。

基本的に異論はないんですが、いい教材になるものってありますかね? むろんLinuxであっても使いどころによっては使える選択肢にはなるとは 思いますが…

先端技術云々というところを除いて考えると (自分がその方面よく知らないからです :)、 FreeBSDとかMINIX、Plan9あたりが候補になるのでしょうか?

まあセコいはなしではあるんですが

よく紹介されてる商品を買うときに、 アフィリエイトリンクを避けて買いに行く人もいるが、あれは意味が無い。 紹介者に払われるはずだった分がAmazon ならAmazonの儲けになるだけである。 別に買う値段が変わるわけでもないし、著作者に行く金が減るわけでもない。 ましてや自分の懷に何が入って来るわけでもない。

ほとんどの場合は気にせずアフィリエイトつきのリンクでも踏みますが (でぽちっとな)、ある人たちの張っているリンクの場合は避けます。 自分の懐に出入りする金額が変わるわけではありませんが、 その人たちにわずかなりとも紹介料が入るのが我慢ならないという。

だったらだんでそんなところ(blogとか)に行くんだよ。 という指摘を受けたら答えに窮するんですけどね(笑) まあこういう考えをする人もいるのだということで。

foo bar bazの語源は中国にあった? (注意:ネタです)

【書き方は】Pythonのお勉強 Part19【一通り】 [bbs2chreader]
http://pc11.2ch.net/test/read.cgi/tech/1181064980/l50

199 デフォルトの名無しさん [sage] Date:2007/06/17(日) 16:19:27  ID: Be:
    >foo bar baz
    意味わかってつかってるのか?
    でなければ痛々しいだけだ 

200 デフォルトの名無しさん [sage] Date:2007/06/17(日) 16:32:07  ID: Be:
    >>199
    >>197じゃないがぜひ「意味」を教えてくれ 

201 デフォルトの名無しさん [sage] Date:2007/06/17(日) 17:06:08  ID: Be:
    >>200
    元々は中国明代の言葉で「風羽蓮」のこと。
    清の時にはとっくに使われなくなってたんだけど、アロー戦争後の反清運動の気運のなかで、
    明の文化への回帰運動が起こり、「永楽大典」に載ってたのが流布した。
    意味は「疾風の如く進み、鳥羽のように繊細に、蓮花のように高潔に。」
    (ちなみに、蓮は仏陀の象徴ね。)

    その言葉に感銘を受けた宣教師が、一字ずつ英語の発音に直したのが「foo bar baz」
    その宣教師の著書が欧州でウケて、この言葉はちょっとした流行語になった。
    やがて意味が忘れられて、おもしろい語感のおかげで、単語だけが残ったってわけ。

    参考:民明書房「この国を見よ!」 

202 デフォルトの名無しさん [sage] Date:2007/06/17(日) 17:13:16  ID: Be:
    蓮の訓読みにワロタ

    俺も>>199のご高説が聞きたいね 

203 200 [sage] Date:2007/06/17(日) 17:19:47  ID: Be:
    >>201
    にやけてしまった漏れの負け 

204 デフォルトの名無しさん [sage] Date:2007/06/17(日) 18:39:41  ID: Be:
    えらぶりたいだけの厨房でしたとさ 

205 デフォルトの名無しさん [sage] Date:2007/06/17(日) 18:49:33  ID: Be:
    痛々しいな 

206 デフォルトの名無しさん [sage] Date:2007/06/17(日) 19:00:08  ID: Be:
    俺、Python3000が出たら識別子に風羽蓮使うんだ・・・ 

想像してごらん

もうひとつ2ちゃんねるからのネタ。 見つけたのは今日ですが、結構古いものです。

Python の宿題ここで答えます Part 1
http://pc11.2ch.net/test/read.cgi/tech/1153585095/


105 デフォルトの名無しさん [sage] Date:2006/08/27(日) 02:55:30  ID: Be:
    ぶっちゃけ日本語のテキスト処理は難しい。
    文字とバイトが一致してない。
    多数の文字コードが混在している。
    互換性のない文字集合がいくつもある。
    あっちを立てるとこっちが立たない。
    あるアプリでうまくいく方法が別のアプリでは通用しない。
    簡単かつ明瞭に誰にでも分かるように仕様を設計することは不可能、もしくは非常に困難。
    簡単かつ明瞭に誰にでも分かるように説明することはさらに困難。
    理解できない人がいても不思議ではない。
    理解できないことに罪はない。
    根本的に難しい。
    終わっている。

    Imagine there's no encodings,
    it isn't hard to do,
    nothing to encode or decode,
    no charset too,
    imagine all the people
    living with Unicode...

    You may say I'm a dreamer,
    but I'm not the only one,
    I hope some day you'll join us,
    and the world will be as one.


108 デフォルトの名無しさん [sage] Date:2006/08/27(日) 11:07:57  ID: Be:
    >>105
    自分が理解できないからって(w

  

ところでこのスレにあった

104 デフォルトの名無しさん [sage] Date:2006/08/27(日) 02:33:29  ID: Be:
    > 問題なのは各言語のコーデックの機能を使いこなせないやつの能力.

    いや、むしろ使いこなしのノウハウが誰にでも分かるように
    まとまった形で広く公開されていないところが問題。

    初心者に「とりあえずチュートリアル嫁」と言うのと同じぐらい簡単な
    definitive なリソースが必要。



    って言うのは簡単だけどな(苦笑

Pythonに限らずこれはありますね。 一年経っても状況はぜんぜん変わっていない。 Pythonに関してはそろそろ出るというクックブックでどうにかなる?

2007年06月16日

ディスコミ

あ、ちとすれ違いがあったような。 ポインタと参照(reference)の違いとして、わたしは ポインタはincrement/decrementなどの操作を加えることができるが 参照ではできない。 というのは、 保持している先の値のことではなく保持している値そのもののことです。 C++で書くと

void
hoge(int v)
{
    int &rv = v;
    int *pv = &v;
    int x, y;

    x = *pv++; //pv の値が増加する
    y = rv++;  //rvの参照しているvの値が増える
               //rvが指している対象を別のものにすることはできない
}

ということを云いたかったのです。

Emacsでの正規表現関数の拡張

新Emacsの強力な置換機能を使いこなす - ZDNet Japan

replace-regexpがプログラマブル置換へとパワーアップ
Emacsではreplace-regexpで正規表現置換ができる。 現在主流となっている正規表現のスタイルはPerlに源流をおいたものが多いが、 Emacsの正規表現はそれとは異なる。特に\( \)の表記などが独特だ。とはいえ、 Emacsを愛しているならば、馴れるしかないだろう。書き方が違うだけで、 本質的には同じことだ。
さて、22.1.xではこの正規表現置換で関数の使用がサポートされた。 具体的には、正規表現のなかに、任意の処理が実行可能なLispコードを指定できる。

Emacsのサポートする正規表現て、ものぐさマッチ(最短マッチ)とか 先読み/戻り読みに代表されるPerl拡張はなかったと思うけど違ったっけ? elispパッケージでサポートしてたような気もするけど、 「本質的には同じ」というのは少々疑問を感じる。

んで、置換関数のreplacementのところに関数をおくことができて、 その関数の戻り値によって実際に何に置き換えるかが決定するというのは PythonとかPHP(pregだけ?)でサポートしているし、 Rubyでもブロックを使えば同様のことができる。 というのはどうでもよくて、これの元祖というのはやっぱり Perlの e オプションなんですかねえ。

IEEEでもISOでもよろしいから、 Perl拡張の交通整理をやってくれはしないものかと思う今日この頃。

置換後文字列の指定:

\1 \,(if (= (string-to-int \1) (string-to-int \3)) "="
            (if (< (string-to-int \1) (string-to-int \3)) "<"
	      ">"))
	      \3

んーここで登場している ',' はマクロ定義でよくでてくるあれと同じ?

NoScriptはアンインスコしたが

しかしFirefoxを使い込むにつれてアドオンが増え その結果、起動時間・表示時間に遅れが出ることになる その最大要因はアドオンであり数種のアドオンによって遅くなる

   1.  LinkificationはText Link(テキストリンク開く)へ変更
   2. IETabはIEView(IE変換)へ変更
   3. Google Toolbar for FirefoxからGooglebar Liteへ変更 (追記070613)
   4. bbs2chreader(ビューアー)は使用時以外はアドオンを無効にしておく
   5. noScriptはMcAfeeSiteAdvisorに変更するかJavascriptを手動設定にする
   6. Firebugは使用時以外アドオン自体を無効にする
   7. Greasemonkeyは使用時以外アドオン自体を無効にする
      広告除外などWebサイトの外観を変える程度ならAdblockやスクリプトを使うよりも
      Stylish等でCSSを変更したほうが軽くなる

これ以外の一般のアドオンを追加しても特に遅くならなかった
また一度すべてのアドオンを切って再起動して
アドオンを入れ直すのも効果があった

んーIETabじゃなくてIEViewを使ってはいる。 bbs2chreaderとFirebugとGreasemonkeyは使ってるなあ… さてどうするか。

Perlを勉強するうえで読んでおくべき書籍とは

  くだすれPerl(超初心者用) 
http://pc11.2ch.net/test/read.cgi/php/1157862828/174-

174 nobodyさん [] Date:2007/06/15(金) 18:43:38  ID:3CYhNC9F Be:
    Perlを勉強するうえで読んでおいたほうがいい書籍ってなんですか? 

175 nobodyさん [sage] Date:2007/06/15(金) 19:41:34  ID:??? Be:
    >>174
    1. ああっ女神さまっ 1~34巻
    2. 逮捕しちゃうぞ 文庫版1~4巻
    3. 大人のCGIスクリプト 

176 nobodyさん [sage] Date:2007/06/15(金) 20:12:22  ID:??? Be:
    女神はクソアニメだろ… 

177 nobodyさん [sage] Date:2007/06/15(金) 20:55:45  ID:??? Be:
    銀英伝全巻(余裕があるなら、アニメ版全巻も) 

178 nobodyさん [sage] Date:2007/06/15(金) 21:51:09  ID:??? Be:
    それが僕には楽しかったから(小学館プロダクション)
    ニーチェ入門 (筑摩書房)
    本当の潜水艦の戦い方 (光人社) 

179 nobodyさん [] Date:2007/06/15(金) 22:38:03  ID:3CYhNC9F Be:
    まじめに教えてくださいよ 

180 nobodyさん [sage] Date:2007/06/15(金) 22:48:57  ID:??? Be:
    あいまい3cm 

181 nobodyさん [sage] Date:2007/06/15(金) 22:51:37  ID:??? Be:
    答えていますとも。

    >SF を読むこと。
    >だじゃれや言葉あそびへの理解を深めること。
    >母国語できちんと文が書けるようになること。
    >多くのハッカーは「おたく」というレッテルを受け入れています。
    >それは自分が普通の社会的期待から自由だと宣言する方法の一つなのです。
    ttp://cruel.org/freeware/hacker.html 

まあ選択にちょっと異論を挟みたくならないでもないがいい連携だ。 IDが出ない板なので自演かもしれないけどね(笑)

メモ(Dの正規表現)

/trunk/meta/regex.d - ddl - dsource.org

Dはまったく追いかけていないのですがどんな状況なんでしょうか。 一応余裕があったら正規表現周りだけは見ておこう(笑)

2007年06月15日

■_ メモ

util.c

unsigned long
ruby_scan_hex(const char *start, int len, int *retlen)
{
    static char hexdigit[] = "0123456789abcdef0123456789ABCDEF";
    register const char *s = start;
    register unsigned long retval = 0;
    char *tmp;

    while (len-- && *s && (tmp = strchr(hexdigit, *s))) {
	retval <<= 4;
	retval |= (tmp - hexdigit) & 15;
	s++;
    }
    *retlen = s - start;
    return retval;
}

parse.c
      case 'x':	/* hex constant */
	{
	    int numlen;

	    c = scan_hex(lex_p, 2, &numlen);
	    if (numlen == 0) {
		yyerror("Invalid escape character syntax");
		return 0;
	    }
	    lex_p += numlen;
	}
	return c;

---
      case 'x':	/* hex constant */
	{
	    int numlen;

	    tokadd('\\');
	    tokadd(c);
	    scan_hex(lex_p, 2, &numlen);
	    if (numlen == 0) {
		yyerror("Invalid escape character syntax");
		return -1;
	    }
	    while (numlen--)
		tokadd(nextc());
	}
	return 0;

---
regparse.c

    case 'x':
      if (PEND) break;

      prev = p;
      if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_BRACE_HEX8)) {
	PINC;
	num = scan_unsigned_hexadecimal_number(&p, end, 8, enc);
	if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
	if (!PEND) {
          c2 = PPEEK;
          if (ONIGENC_IS_CODE_XDIGIT(enc, c2))
            return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;
        }

	if (p > prev + enc_len(enc, prev) && !PEND && (PPEEK_IS('}'))) {
	  PINC;

■_ NHK

観るこた観てますが時間的にはそれほどでも。 23時頃の教育での語学番組とかは割と観てますが。 あとはNスペくらい?

■_ 試作

#!/usr/bin/ruby
# -*- encoding: utf-8 -*-

=begin
UCD: Unicode NamesList File Format
http://www.unicode.org/Public/UNIDATA/NamesList.html

1.1 NamesList File Overview

The namelist files are plain text files which in their most simple form look like this

@@<tab>0020<tab>BASIC LATIN<tab>007F
; this is a file comment (ignored)
0020<tab>SPACE
0021<tab>EXCLAMATION MARK
0022<tab>QUOTATION MARK
. . .
007F<tab>DELETE

The semicolon (as first character), @ and <tab> characters are used by
the file syntax and must be provided as shown. Hexadecimal digits must
be in UPPER CASE. A double @@ introduces a block header, with the title,
and start and ending code of the block provided as shown.

@@@  
@@  
@@+ 
@  
@+ 
TAB* 
TAB= 
TAB% Form Alias
TABX 
TAB;
TAB:
TAB#

CHAR TAB NAME LF
CHAR TAB < LCNAME > LF
CHAR TAB NAME COMMENT LF

CHAR  [0-9A-F]{4,6}

=end

NAMELIST = 'NamesList.txt'
CHAR     = Regexp.new('[0-9A-F]{4,6}')
NAME     = Regexp.new('[A-Z0-9 \-]+')
LCNAME   = Regexp.new('[a-z0-9 \-]+')

blockname  = ""
scriptname = ""
val      = ""
propname = ""

=begin
puts <<END_OF_HEADER
sturct nametable {const char *name, unsinged int val};
%struct-type
%define slot-name name
%define hash-function-name hash_function
%define lookup-function-name lookup_function
%includes
%define string-pool-name stringpool
%%
END_OF_HEADER
=end

File.open(NAMELIST).each do |l|
  if (/^(#{CHAR})\s</o.match(l))
    # <control>etc...
    val = $1
  elsif (/^(#{CHAR})\s+(#{NAME})/o.match(l))
    val = $1
    propname = $2
  elsif (/^\t=\s(#{NAME})/o.match(l))
    propname = $1
  #elsif (/^@@@/.match(l))
  #elsif (/^@@/.match(l))
  #elsif (/^@/.match(l))
  end
  
  if ((val != "") && (propname != ""))
    puts %Q!"#{propname}", 0x#{val}!
    val = propname = ""
  end
end

gperfを使って完全ハッシュ関数による検索にするか、 ソートをかましてから二分検索にしたほうが悩んでいる最中。

PHP

こういうこと書くとけなしていると取られるかもしれないけど、 「(言語設計的に)なにをしたらいけないか」というのを明らかにした という点において、PHPは存在価値はあったんじゃないかなあと。 htmlspecialchars とか magicquoteとかそのへん。

あと、置換関数で、置換対象に配列を与えたときは その配列の全要素に対して置換を実行するという仕様はいいんじゃないかと思った。 まあmapがありゃあいいよ、という話があるかもしれませんが。

ぐりもん

すみません。プロファイルを作り直したときに Greasemonkeyのスクリプトを登録しなおすのを忘れていただけでした。

努力の方向間違ってない?

OKWave クイックソートしながら重複要素削除アルゴリズム

アルゴリズムが苦手な上、アルゴリズム解説自体C言語ベースで書かれ
ている物が多く処理のイメージが沸かずクイックソートもコピペや既存
の関数で処理していて、満足に理解出来ていないのですが。
以下の問題を、お解かりになるかた教えて頂けませんでしょうか?

■問題
2万件位の数値データの中から重複要素を削除しながら昇順または降順で、
ソートするアルゴリズム(※1)

■条件
BASIC的(※2)な記述やプログラム中のコメントなどの形式でも構いま
せん出来るだけ簡単に示して頂けると助かります。

補足
(※1)ソートする際、重複要素を消すともっと処理が早くなるのではと
  思ったので。
目的は、処理の速さを求める事と、次回から応用が聞くよ
うにソート自体を理解したいのでクイックソートで無くても構いません。

後のほうでPython示されているコード片は、Haskellなんかでの クイックソートの例で紹介されているやり方と同じですよね。 で、この場合メモリを大量に喰うようになると。 さらにそれに応じて要素の移動が増大するはずなので、 速度的にどれほど有利なのか不利なのかわからない。 つか、推測する努力をしてくれと。

んで、ソートとuniqを同時に行うとするならば、 マージソートでやるのが一番楽で速度的にも有利かなという気がするがどうだろう。 面倒なので試す気はないが(笑)

きたーか

Subject: update your account

Billing confirmation center
	

	

	eBay Security Center 	

We were unable to process your most recent payment. Did you recently change your
bank, phone number or credit card?.
To ensure that your service is not interrupted, please update your billing
information today by clicking here. Or contact eBay Member Services Team. We're
available 24 hours a day, 7 days a week.
If you have recently updated your billing information, please disregard this
message as we are processing the changes you have made.

Regards,
eBay Member Services Team
Learn more about selling with confidence.

If this email is inappropriate or in any way violates eBay policy, please help
protect other eBay community members by reporting it to us immediately.

俺 eBay のアカウントなんて持ってないから(笑) Thundribirdはこれをspam判定してくれなかった。

2007年06月14日

■_ 信者なのかなあ>わし

ユメのチカラ: オープンソースの破壊力
のコメント欄でのお話。

多分、1990年頃にほぼ年一回来日していた頃からrmsの言動を (英語というハードルはあったにしろ)見聞きしてたせいもあると思うのだけど (有給休暇使い、かつお金を払って行きましたよ。はい)、 どうも吉岡さんの発言の根底には rms(とFSF)に対する不信感とでもいうべきものが抜きがたく存在しているように 感じられる。 片手間に探しているのでまだ見つからないのだけど、 FSF(rms)が、GNU Projectのソフトウェアに対する trivialでないパッチが contributeされてそれを採用するときに、 その作者に対して著作権のFSFへの譲渡を行うための書類を要求される ということに関して、コメント欄に書いたとおりわたしは 単純に、あるソフトウェアの著作権者が複数になってしまうことの 混乱を避けるため(先にコメントしているnakata mahoさんの言及している ケースもその一つ)だと思っています。 てかそういう風にrmsが発言した記憶があるんだけどなあ。

まあ本当にそう云ってたとしても、本音と建前とか色々いうことはできますし、 2ちゃんねるのUNIX板あたりでは批判的な意見も結構見ますので 吉岡さんの意見(見方)が少数派であるとは思いませんが、 ちと納得できないです。

てか自分自身の意見を云えば、自分がcontributeに値するような なにかをGNU Projectのソフトウェアに対して行ったとしても ベースとなるソフトウェアの肩に乗っかったものなんで 「このパッチは俺が書いたものだから誰にもわたさねー」 なんてことは云うつもりにはならないし、むしろ 「後々オレが手を入れつづけるのも面倒だから好きに使って」で、 手離れさせるために署名しても良いと思ってます。

■_ そういえば浮動小数点数をビジネス用(ってどういう定義?)に 使うようになったのはいつからなのだろう

lethevert is a programmer - 浮動小数点数について思う からお題拝借。

浮動小数点数というものがそもそもビジネス用ではなくて、 科学計算用に設計されているのではないかとか邪推しています。

ビジネス系では、JavaのBigDecimalやCOBOLの十進数型のような、 十進数で誤差なく演算できる方が便利なのですよね。もちろん、浮動小数点数を使って、 必要な桁数の十進数で誤差がないようにすることはできると思いますけれど、 大抵の場合そこはがんばる所ではないというか。

邪推じゃなくて正しい認識だと思います。 いわゆる「ビジネス用途」の祖であろうCOBOLの言語仕様では 二進 or 十六進(IBMのメインフレームに採用されている例があります)を 基数にした浮動小数点数を使うということはなかったと思います (そういやPL-Iってどういう仕様だったっけ?)。 というか「有効桁数」をきちんと理解していないと (上記の意味での)浮動小数点数は使えないんじゃないでしょうか。 工学向けの仕様であり、ビジネス向けとは云い難いのではないかと。

事務処理用及び管理分野用とされるCOBOLにおいては会計・経理処理などのように通貨を 対象とした正確な数値計算が特に要求されるため、数値に対する10進数から2進数への 基数変換時に計算誤差の発生しない2進化10進数による数値型(固定小数点数) を用いることができる。これはFORTRANなどのプログラミング言語において浮動小数点方式 などによって実数を近似値で表現しようとする発想とは対峙するものである。

以前ここでちょこっと書きましたが、 IEEEでも十を基数にした浮動小数点数の策定に動いている (→IEEE754r - Wikipedia) ようですが、基本的に小数を使おうとするとハードウェアの助けを 借りることができないので速度的には圧倒的に不利になります。

多分、猫も杓子も浮動小数点数(IEEE754)を使うようになったのは パソコンでCを使って記述されたプログラムで 処理するようになったからではないかと考えています。 Excelもご多分に漏れず小数はIEEE754ですし、 ちょっと遡って Lotus 1-2-3とかもそうだったと思います。 10MHzにも満たない動作クロックの8086での元では 数値演算コプロセッサ(8087)を増設することにより 演算速度を大幅に向上させることができるということで 浮動小数点数が採用されたのかもしれません (細かいこというとIEEE754が正式採用になるより 8087の発売の方が早かったようですが)。

さらに遡ってVisiCalcはどうよ?という疑問が湧きますが、 どうなんでしょう。 まさかソースは公開されてないだろうしなあ。

多分、普通の人にとっても、同じことがいえるのではないかと思うので、 PHPのround()が気持ち悪いとか(分析はよいのですが)批判する暇があったら、 十進数型をネイティブにサポートすればいいのにと思います。

全面的に賛成いたしまする。

Programming language implementations

A common use of fixed-point BCD numbers is for storing monetary values, where the inexact values of floating-point numbers are often a liability. Historically, fixed-point representations were the norm for decimal data types; for example, in PL/I or COBOL. The Ada programming language includes built-in support for both fixed-point (in two variants: ordinary and decimal) and floating-point. JOVIAL also provides both floating- and fixed-point types.

Very few computer languages include built-in support for fixed point values, because for most applications, floating-point representations are usually simpler to use and accurate enough. Floating-point representations are easier to use than fixed-point representations, because they can handle a wider dynamic range and do not require programmers to specify the number of digits after the radix point. However, if they are needed, fixed-point numbers can be implemented even in programming languages like C and C++, which do not commonly include such support.

■_ 二進と十進の間

つーわけでイロイロさまよっていたところで決定的(か?)なものを 見つけました →Implementing VisiCalc

ダン・ブルックリンとともにVisiCalcの作者とされている ボブ・フランクストンのページです。この中で

Calculations and Formulas

At its heart, VisiCalc is about numbers. One of the early decisions we made was to use decimal arithmetic so that the errors would be the same one that an accountant would see using a decimal calculator. In retrospect this was a bad decision because people turn out to not care and it made calculations much slower than they would have been in binary.

We did want to have enough precision to handle large numbers for both scientific calculations and in the unrealistic case it would be used to calculate the United States budget. Of course, as it turned out, that was one of the real applications.

設計の初期において、十進演算を基準にすることを決めたとあります。 もっとも二つの理由によりそれはあまりよくない判断であったと続いていますけど。

VisiCalc: Information from its creators, Dan Bricklin and Bob Frankston

This version of VisiCalc was from very early in the coding (about 1 week in). You'll note that all of numbers are left justified. There were no fixed decimals, yet, so we carefully typed in numbers that would all look good, with no zeros to be suppressed (e.g., "12.10" would have been "12.1"). VisiCalc used a variation of decimal arithmetic so all money values could be represented exactly, with no funny behavior common at the time from binary floating point.

VisiCalcは十進演算の一変種を使っていたので、お金の絡む計算のすべてで正確な
値を表すことができ、しかも、
二進基準の浮動小数点数を使ったことによるありがちな奇妙な振る舞いを
することはなかったのです。

■_ 参照(reference)とポインタの間の大きい(かも知れない)溝

狐の王国 C言語のポインタが難しくて挫折した経験

その後、perlでreferenceという概念に出会い、それと同じようなものかと思ったのだが、 C言語を理解してる友人には違うものだと言われた。もうさっぱりわからない。

とりあえずポインタをC(or C++)のそれに限定していいならば、

参照     → increment/decrementのような操作ができない
ポインタ → increment/decrementのような操作ができる

くらいに割り切っちゃうとか。 Pascal(除 Turbo-Pascal :-))のポインタは? という話になるとちょっと怪しいですが。

■_ なんで

わしが買ってから こういう購買意欲をそそるものを出してくれるかねパナソニックわっ → パナソニック、ブラック仕様の「Let'snote R6 ジェットブラック」

■_ 今日のうぎゃ

愛用している(狐志庵さんありがとう) Amazonのページへのリンクを短くしてくれるgreasemonkeyスクリプトが、 レイアウトが変わったせいか動かなくなっている模様。 うきー、ぐりもんわからねー(笑)

丸投げを受けてみるが多分華麗なスルーパスになるだろうテスト

jijixi's diary - あー……あかん、あかんわ…… , 『クロージャによる超軽量並行プロセス』を Ruby で , 思い切って Safari 3 Beta を入れてみた ,..

Proc.new と proc と lambda が微妙に違うのがナゼか……は、知りません (駄目だ)。なんかメーリングリストか何かで見た憶えが微かにあるので、 たぶん誰か物覚えの良い人が教えてくれるでしょう (丸投げメソッド)。

この辺でしょうか? → [ruby-dev:28681] ブロックパラメータと多値について から始まるスレッドと [ruby-dev:29006] block wrapper とそのフォロー記事。 すいません自分の言葉でまとめられませぬ orz

大元の sumiiの日記 - 他力本願メソッドによるRubyの習得、およびRuby 1.8と 1.9のProc.newとprocとlambdaとブロックの動作についての sumiiセンセソさんがここを見ているかはわからないけど 逆方向に伝播して行くだろう、多分(笑)

あと、多分 1.7 feature は 1.6がstableだった頃に書かれたものが そのまま残っているのだと思います。 その当時は 1.7 (後の1.8)が HEADでしたから。 現行のマニュアルで独立して書いているところは置いといて 1.9 feture って注意書きあったかな?

2007年06月13日

■_ 2ちゃんねるのほんのちょっとは優しさでできている(かもしれない)

【入門】Common Lisp その3【質問よろず】
http://pc11.2ch.net/test/read.cgi/tech/1181479267/13-

13 デフォルトの名無しさん [] Date:2007/06/13(水) 03:41:07  ID: Be:
    すいません、明日提出の課題で完全に煮詰まってしまってもう何も浮かんできません
    どなたか教えていただけないでしょうか 

14 デフォルトの名無しさん [] Date:2007/06/13(水) 03:42:31  ID: Be:
    どうぞ。 

15 デフォルトの名無しさん [sage] Date:2007/06/13(水) 03:43:21  ID: Be:
    ありがとうございます。 

16 デフォルトの名無しさん [] Date:2007/06/13(水) 03:44:03  ID: Be:
    はやくしろ。 

17 デフォルトの名無しさん [sage] Date:2007/06/13(水) 03:45:50  ID: Be:
    まだか? 

18 デフォルトの名無しさん [sage] Date:2007/06/13(水) 03:46:37  ID: Be:
    やっぱりもう寝る。
    俺のほかにも、少なくとも1人居るみたいだから任せた。 

19 デフォルトの名無しさん [] Date:2007/06/13(水) 04:07:51  ID: Be:
    申し訳ありません!お待たせしました

    9
    (1 1 1 1 1 1 1 0 1)
    (1 0 0 0 0 0 0 0 1)
    (1 0 1 0 1 1 1 0 1)
    (1 0 1 0 0 0 1 0 1)
    (1 0 1 1 1 0 1 0 1)
    (1 0 1 0 0 0 1 0 1)
    (1 1 1 0 1 1 1 0 1)
    (1 0 0 0 1 0 0 0 1)
    (1 0 1 1 1 1 1 1 1)

    上記のようなデータが入ったテキストファイルを読み込んで、迷路を解くという問題です
    最初の数字が迷路のサイズを表していて、ここでは9なので9*9です
    1が壁、0が道となっています

20 デフォルトの名無しさん [] Date:2007/06/13(水) 04:09:07  ID: Be:
    次の手順を追って作成するようになっています

    a.迷路ストラクチャを定義せよ.迷路ストラクチャは,迷路のサイズ(整数値)と迷路の形状データ(2次元配列)を保持する

    b.迷路ファイル名を引数に受け取り,それを読み込み迷路ストラクチャを返す関数 load-maze を定義せよ
    >(load-maze "m9.txt")
    #S(MAZE SIZE 9 DATA
    #2A((1 1 1 1 1 1 1 1 1) (1 0 0 0 0 0 1 0 0) (1 0 1 1 1 1 1 0 1)
    (1 0 0 0 1 0 0 0 1) (1 0 1 0 1 0 1 1 1) (1 0 1 0 0 0 1 0 1)
    (1 0 1 1 1 1 1 0 1) (0 0 0 0 0 0 0 0 1)
    (1 1 1 1 1 1 1 1 1)))

21 デフォルトの名無しさん [] Date:2007/06/13(水) 04:10:06  ID: Be:
    .迷路ストラクチャを引数に受け取り,迷路のデータを表示する関数 print-maze を定義せよ
    >(setq m (load-maze "m9.txt"))
    >(print-maze m)
    ■■■■■■■ ■
    ■       ■
    ■ ■ ■■■ ■
    ■ ■   ■ ■
    ■ ■■■ ■ ■
    ■ ■   ■ ■
    ■■■ ■■■ ■
    ■   ■   ■
    ■ ■■■■■■■

    NIL

    d.迷路データファイルを入力として受け取り,スタートからゴールまでの最短パスを出力する関数 solve-maze を作成せよ.プログラムがなるべく読みやすくなるよう作成すること
    >(solve-maze "m9.txt")
    ■■■■■■■*■
    ■  *****■
    ■ ■*■■■ ■
    ■ ■***■ ■
    ■ ■■■*■ ■
    ■ ■***■ ■
    ■■■*■■■ ■
    ■***■   ■
    ■*■■■■■■■

    Solved!
    NIL 

22 デフォルトの名無しさん [] Date:2007/06/13(水) 04:11:17  ID: Be:
    すいません、迷路が上手く書けませんでした 

23 デフォルトの名無しさん [sage] Date:2007/06/13(水) 06:33:33  ID: Be:
    まずは教官に「宿題をやってなかったので提出期限を一週間延ばしてください」と
    お願いにいくところから始めよう。 

24 デフォルトの名無しさん [sage] Date:2007/06/13(水) 07:01:01  ID: Be:
    難しいな。
    見た事あるけれど、たしか、プログラミングコンテストの問題だった気がする。
    本があったかなぁ? 

25 デフォルトの名無しさん [] Date:2007/06/13(水) 07:10:08  ID: Be:
    プロコンですか・・・解ける気が全くしないですorz 

26 デフォルトの名無しさん [sage] Date:2007/06/13(水) 07:13:40  ID: Be:
    朝っぱらから楽しげだなw
    cl-user(142): (defstruct maze size data)
    maze
    cl-user(143): (make-maze :size 4 :data #2a((1 0 0 0) (1 0 0 0) (1 0 0 0) (0 1 0 0)))
    #S(maze :size 4 :data #2A((1 0 0 0) (1 0 0 0) (1 0 0 0) (0 1 0 0)))
    経路探索はこのデータ構造じゃ面倒臭い気がするけど、
    >>6 の hiroi 氏のページ見たら何とかなるんじゃね? 

27 デフォルトの名無しさん [] Date:2007/06/13(水) 07:30:29  ID: Be:
    発狂hiroiさんのページを見せてもらったんですが、やっぱりダメみたいです

    (1 1 1 1 1 1 1 0 1)
    (1 0 0 0 0 0 0 0 1)
    (1 0 1 0 1 1 1 0 1)
    (1 0 1 0 0 0 1 0 1)
    (1 0 1 1 1 0 1 0 1)
    (1 0 1 0 0 0 1 0 1)
    (1 1 1 0 1 1 1 0 1)
    (1 0 0 0 1 0 0 0 1)
    (1 0 1 1 1 1 1 1 1)

    ↑のデータをテキストから読んで、構造体の中の配列に入れることができないです・・・ 

28 デフォルトの名無しさん [sage] Date:2007/06/13(水) 07:41:47  ID: Be:
    >>27
    発狂って何?
    read 関数はS式単位で読み込めるので何も難しいこと無いと思うが、、
    さては授業まったく聞いてないな?w

    おれは仕事行くけど誰かこの駄目学生見てあげて、気が向いたらでいいw 

29 デフォルトの名無しさん [sage] Date:2007/06/13(水) 07:47:49  ID: Be:
    授業料もったいねーなぁ。ところでスタートとゴールの定義がわからねーんだけど。
    それぞれ座標固定でいいの?

    (defstruct maze size data)

    (defun load-maze (file)
    (with-open-file (stream file :direction :input)
    (let ((size (read stream)))
    (make-maze :size size
    :data (make-array (list size size)
    :initial-contents (loop for data = (read stream nil :eof) until (eq data :eof) collect data))))))

    (defun print-maze (maze &aux (size (maze-size maze)))
    (loop for row below size do
    (loop for col below size do
    (princ (if (eq (aref (maze-data maze) row col) 1) "+" " ")))
    (terpri))) 

30 デフォルトの名無しさん [] Date:2007/06/13(水) 07:48:09  ID: Be:
    発狂しそうです
    って書こうと思ってやめたんですけど、発狂だけ残ってましたw
    お察しの通り授業全く聞いておりませんでしたorz
    一行ずつ配列に追加していこうと思ったんですが、consみたいに配列に追加していく関数もないし、どうすれば良いかわからない状況です
    お仕事前にありがとうございました! 


32 29 [sage] Date:2007/06/13(水) 07:52:16  ID: Be:
    ほほう、近年稀にみる素直さだな。バレバレの嘘よりは好ましい。
    はやくゴールとスタートの定義おしえてよ。急いでるんだろ? 

35 31 [sage] Date:2007/06/13(水) 08:18:07  ID: Be:
    なんかダメダメっぽい。
    一応考えを書いておくね。
    もしa(x,y)が1ならば、行ける場所は0
    そうでなければ、a(x,y)=1にして、周囲4近傍における合計値+1
    それの再帰で行ける場所が求まるはずなんだけれど。 

36 デフォルトの名無しさん [] Date:2007/06/13(水) 08:37:01  ID: Be:
    そうですか、でも>>29のところまででも凄いタメになりました!
    ただ、loop for~のくだりがこちらでは使えないんですが、どういうものなのか教えてもらえませんか? 

37 29 [sage] Date:2007/06/13(水) 08:42:30  ID: Be:
    (defun solve-maze (maze &aux (start '(8 1)) (goal '(0 7)) (size (maze-size maze)) (buffer (make-array (list size size) :initial-element nil)) (path nil))
    (labels ((calc-step (pos n &aux (x (first pos)) (y (second pos)))
    (cond ((or (< x 0) (< y 0) (>= x size) (>= y size)) :skip)
    ((or (= (aref (maze-data maze) x y) 1) (aref buffer x y)) :skip)
    (t
    (setf (aref buffer x y) n)
    (calc-step (list (1+ x) y) (1+ n)) (calc-step (list x (1+ y)) (1+ n)) (calc-step (list (1- x) y) (1+ n)) (calc-step (list x (1- y)) (1+ n)))))
    (find-path (pos n &aux (x (first pos)) (y (second pos)))
    (cond ((or (< x 0) (< y 0) (>= x size) (>= y size)) :skip)
    ((or (= (aref (maze-data maze) x y) 1) (null (aref buffer x y))) :skip)
    ((= (aref buffer x y) n)
    (push pos path)
    (find-path (list (1+ x) y) (1- n)) (find-path (list x (1+ y)) (1- n)) (find-path (list (1- x) y) (1- n)) (find-path (list x (1- y)) (1- n))))))
    (calc-step goal 1)
    (let ((n (aref buffer (first start) (second start))))
    (cond ((null n) (error ">_<"))
    (t
    (find-path start n)
    (loop for x below size do
    (loop for y below size
    for wallp = (= (aref (maze-data maze) x y) 1)
    for step = (member (list x y) path :test #'equal) do
    (princ (cond (wallp "+")
    ((null step) " ")
    (t "*"))))
    (terpri))
    (write-line "Solved!"))))))

38 29 [sage] Date:2007/06/13(水) 08:44:18  ID: Be:
    途中で、経路複数とか考えるの止めたのでちょっと冗長だが…って、 LOOP がエラー?
    環境は何なの?今時の Common Lisp で LOOP が無い環境なんてあるの? 

39 29 [sage] Date:2007/06/13(水) 08:46:02  ID: Be:
    むしろ俺がそちらの環境を教えてくださいませんか?というキブン。 

40 デフォルトの名無しさん [] Date:2007/06/13(水) 08:47:13  ID: Be:
    こんなに長いプログラム作ってくださって本当にありがとうございます
    loopは大丈夫なんですけど、forのところで引っかかるみたいなんです 

41 デフォルトの名無しさん [] Date:2007/06/13(水) 08:49:04  ID: Be:
    環境はGnu Common Lispというものみたいです 

42 29 [sage] Date:2007/06/13(水) 08:51:56  ID: Be:
    だーから使ってる Lisp 環境を教えろって。それが古すぎるんじゃないか?
    LOOP FOR ... は 20 年以上前の ANSI Common Lisp で規格に入った機能。それ以前の
    処理系には LOOP FOR はない。(ただの LOOP はある)
    CLISP, GCL, SBCL, ABCL, ECL, LispWorks, ACL で LOOP FOR が使えない環境なんてないぞ。
    しぬほど古いバージョンの GCL でも使ってるのか? 

43 デフォルトの名無しさん [] Date:2007/06/13(水) 08:53:07  ID: Be:
    死ぬほど古いバージョンのGCLのようですorz 

44 29 [sage] Date:2007/06/13(水) 08:58:26  ID: Be:
    あれ? GCL か? -ansi オプションとかそんなんついていない?
    うーむ。じゃあ do に直して使って。この書換えはなんか参考書とか教科書とか。

    (loop for data = (read stream nil :eof) until (eq data :eof) collect data)
    ↓
    (do ((data (read stream nil :eof) (read stream nil :eof))
    (lst nil (cons data lst)))
    ((eq data :eof)
    (reverse lst)))

    (loop for x below size do (princ x))
    ↓
    (do ((x 0 (1+ x)))
    ((>= x size))
    (princ x))

45 デフォルトの名無しさん [] Date:2007/06/13(水) 08:58:53  ID: Be:
    といってもバージョンは(2.4.0)みたいです・・・ 

46 デフォルトの名無しさん [] Date:2007/06/13(水) 09:05:40  ID: Be:
    何から何までありがとうございます
    今日の課題を出せば少し暇になるのでまた見直して勉強させて頂きます! 

47 29 [sage] Date:2007/06/13(水) 09:23:45  ID: Be:
    せっかく払った授業料だ。元が取れるようにガンバレよ。今からならまだ遅れも取り戻せるだろう。
    歩数マップを作って解く形式だったが、本当はスタートから辿っていくほうがいいのかもしれないなぁ。
    別のやり方を考えてみるのもいいと思う。あとは 37 のイケてない所をチェックして直すとかね。 

48 デフォルトの名無しさん [] Date:2007/06/13(水) 09:54:53  ID: Be:
    3・4週間前までは課題も楽しくできてたんですが、少し遅れてしまったようです
    他の人のプログラムの書き方を見ることができたのは本当にためになりました
    ありがとうございます! 

朝からいいもん読ませてもらった(笑)

■_ メモ

Unicode Character Database

UCD File Format

Files in the UCD use the following format, unless otherwise specified.

Each line of data consists of fields separated by semicolons. The fields are 
numbered starting with zero. Code points are expressed as hexadecimal numbers 
with four to six digits. They are written without "U+". Within a sequence of code 
points, spaces are used for separation. Leading and trailing spaces within a 
field are not significant.

UCD: Unicode NamesList File Format

The namelist files are plain text files which in their most simple form look like 
this

@@<tab>0020<tab>BASIC LATIN<tab>007F
; this is a file comment (ignored)
0020<tab>SPACE
0021<tab>EXCLAMATION MARK
0022<tab>QUOTATION MARK
. . .
007F<tab>DELETE

The semicolon (as first character), @ and <tab> characters are used by the 
file syntax and must be provided as shown. Hexadecimal digits must be in UPPER 
CASE. A double @@ introduces a block header, with the title, and start and 
ending code of the block provided as shown.

For an ISO-style, minimal name list, only the NAME_LINE and BLOCKHEADER and their 
constituent syntax elements are needed.

■_ greetea語録(何個めだっけ?)

http://127.0.0.1:4474/~tko/cgi-bin/bakagaiku.rb?bakaid=20070613


ヒモを引くかどうか迷うくらいなら引け。

■_ 仮想敵

気を使うRuby

例えばRoRの37signalsは、自分たちのサービスそれぞれに仮想敵は何か発表している。 Rubyだって仮想敵としてPHPを名指しして、 お前らとはここが違うとはっきりいうだけでいいのに。 言い訳は後からちょこっと断言口調で追記しておけば十分。

Getting Real by 37signals:
敵を想定することのメリットの1つが、非常にはっきりとしたマーケティング上のメッセージを持てることです。 人は衝突によって火がつくものです。そして、人は他と比べることで、商品を理解するのです。

こういうのは日本人の心情には合わない、とかいう人もいるのだろうけど、 そういうことをいう人がどこまで真剣にマーケティング上のメッセージについて考えているのかは不明だ。

まつもとさん本人がマーケティング上云々のことは考えてないんじゃないかなあ。 でなければちょっと脇が甘すぎ。

■_ printf

lethevert is a programmer - Java: 浮動小数点数

 public
  static void test2 (double x)
  {
    System.out.println("test2");
    p(x);
    p(x * 100.0D);
    p(x * 100.0D + 0.5D);
    p((x * 100.0D + 0.5D) / 100.0D);
  }
  static void p (double x) { System.out.printf("%.19f\n",x);}

test2
5.0450000000000000000
504.5000000000000000000
505.0000000000000000000
5.0500000000000000000

あれ?test2の結果ってこれでいいの?

Javaのprintfはかしこいんですかねえ。 ビットパターンを見ると当然ながらCのそれと同じですし。

d:\work\t\0613>java Moge
5.0450000000000000000 : 40142e147ae147ae

d:\work\t\0613>moge
5.0449999999999999000 : 40142e147ae147ae


import java.lang.*;
public class Moge {
    public
      static void main (String[] args)
      {
          double x = 5.045;
          System.out.printf("%.19f : %016x\n",
                            x,
                            Double.doubleToLongBits(x));
      }
}


#include <stdio.h>


int
getlow(double x)
{
    return *((long *)&x);
}

int
gethigh(double x)
{
    return *(((long *)&x)+1);
}

int
main()
{
    double x = 5.045;
    printf("%.19f : %08x%08x\n", x, gethigh(x), getlow(x));
    return 0;
}

こういう変換時の動作って仕様は決まっているんだろうか? アルゴリズム的には一つしか考えられないかな?

■_

ストレスを加速!エンジニアを駄目にする魔の座席表/Tech総研

以前の席の配置はちょっとプレッシャーのかかるものでした。 この辺、greeteaさんの見解を知りたいなあと思ったり。

■_ 今月のOCaml

第11回 クロージャによる超軽量並行プロセスの簡単実装法:ITpro

すみません。よく理解できませんなんだ

■_ 誰?

Matzにっき(2007-06-07): The Hand of FuManChu - Python concurrency syntax 経由 The Hand of FuManChu - Python concurrency syntax

香港映画のどれかの主人公だっけ? >ふーまんちゅー

と本題とはまるで関係のないところで悩んでみる。

これか。→

Fu Manchu - Wikipedia, the free encyclopedia

Dr. Fu Manchu is a fictional character, an evil genius of Chinese origin, first featured in a series of novels by English author Sax Rohmer during the first half of the 20th century. The character was also featured extensively in cinema, television, radio, comic strips, and comic books for over 90 years and has become an archetype of evil criminal genius.

香港映画ではなかった模様。

■_ ふと思い出したこと

ここで注目して欲しいのは、1/3がピッタリ表せない世界なのに、1/3を6倍した結果はピッタリになっていることです。なぜこんなことが起こるかというと、1/3がこの世界でピッタリ表せなかったのと同様、0.333を6倍した数がこの世界ではピッタリ表現できないからです。現象として見ると、1/3を 0.333にしたときに生まれた誤差が、6倍すると消えています。浮動小数点数で0.1を10倍した場合も同様ですね。このように、誤差は蓄積する可能性もありますが、打ち消し合うこともあります。これも普段の直感とは異なる点ではないでしょうか。

消費税が初めて導入されることになったとき当時わたしは某所でバイトをしていたのですが、 そこで消費税導入に関するレクチャーを受けました。 で、そこで説明されたことの一つに以下のような事例がありました

税込み1000円の商品があります。 税抜きでは971円です(int(971 × 1.03) → 1000)。 しかしこれを十個まとめてレジにもってくると、 int(971× 10 × 1.03) → 10001 とどこからともなく1円が湧いて出てくるという(笑)

たしかこの場合は100010000円で計算するんじゃなかったかなあ。 バイトはレジには触れなかったから、良く覚えていない。

島根は鳥取の左


しまねOSS協議会副会長 and/or 島根大学教授 野田哲夫氏

2007年06月12日

■_ 一日遅れですが

日曜日の深夜(正確には日付は変わってますが)、 久しぶりにフジのF1中継を観てたんですよ(何故かは訊かないで(笑))。

ハミルトンすげーっ

佐藤琢磨すげーっ

琢磨のオーバーテイクシーンはようつべにもあるのか。

■_ メモ

regparse.c
  onig_st_lookup_strend
  property_name_to_ctype
  ONIGENC_PROPERTY_NAME_TO_CTYPE
  fetch_char_property_to_ctype
  TK_CHAR_PROPERTY
  fetch_escaped_value
st.c
  st_lookup
regenc.h

typedef struct {
  OnigCodePoint from;
  OnigCodePoint to;
} OnigPairCaseFoldCodes;

typedef struct {
  UChar    *name;
  int       ctype;
  short int len;
} PosixBracketEntryType;
unicode.c
  static st_table* NameCtypeTable;
  HashEntryData[]
  init_name_ctype_table
  onigenc_unicode_property_name_to_ctype

static PosixBracketEntryType HashEntryData[] = {
  { (UChar* )"NEWLINE",                0,  7 },

  { (UChar* )"ASCII",                 14,  5 },

#ifdef USE_UNICODE_PROPERTIES
  { (UChar* )"Any",                   15,  3 },

  { (UChar* )"Zs",                    53,  2 },
  { (UChar* )"Arabic",                54,  6 },

  { (UChar* )"Han",                   76,  3 },
  { (UChar* )"Hangul",                77,  6 },
  { (UChar* )"Hanunoo",               78,  7 },
  { (UChar* )"Hebrew",                79,  6 },
  { (UChar* )"Hiragana",              80,  8 },
  { (UChar* )"Inherited",             81,  9 },
  { (UChar* )"Kannada",               82,  7 },
  { (UChar* )"Katakana",              83,  8 },

  { (UChar* )"Ugaritic",             113,  8 },
  { (UChar* )"Yi",                   114,  2 },
#endif /* USE_UNICODE_PROPERTIES */
  { (UChar* )NULL,                    -1,  0 }
};


static const OnigCodePoint* CodeRanges[CODE_RANGES_NUM];
static int CodeRangeTableInited = 0;

static void init_code_range_array() {
  THREAD_ATOMIC_START;

  CodeRanges[0] = CR_NEWLINE;
  CodeRanges[1] = CR_Alpha;


extern int
onigenc_unicode_property_name_to_ctype(OnigEncoding enc, UChar* name, UChar* end)
{
  int len, ctype;
  UChar buf[PROPERTY_NAME_MAX_SIZE];
  UChar *p;
  OnigCodePoint code;

  p = name;
  len = 0;
  while (p < end) {
    code = ONIGENC_MBC_TO_CODE(enc, p, end);
    if (code >= 0x80)
      return ONIGERR_INVALID_CHAR_PROPERTY_NAME;

    buf[len++] = (UChar )code;
    if (len >= PROPERTY_NAME_MAX_SIZE)
      return ONIGERR_INVALID_CHAR_PROPERTY_NAME;

    p += enc_len(enc, p);
  }

  buf[len] = 0;

  if (NameTableInited == 0)  init_name_ctype_table();

  if (onig_st_lookup_strend(NameCtypeTable, buf, buf + len,
			    (void*)&ctype) == 0) {
    return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
  }

  return ctype;
}
typedefs
typedef struct OnigEncodingTypeST {
  int    (*mbc_enc_len)(const OnigUChar* p);
  const char*   name;
  int           max_enc_len;
  int           min_enc_len;
  int    (*is_mbc_newline)(const OnigUChar* p, const OnigUChar* end);
  OnigCodePoint (*mbc_to_code)(const OnigUChar* p, const OnigUChar* end);
  int    (*code_to_mbclen)(OnigCodePoint code);
  int    (*code_to_mbc)(OnigCodePoint code, OnigUChar *buf);
  int    (*mbc_case_fold)(OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to);
  int    (*apply_all_case_fold)(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg);
  int    (*get_case_fold_codes_by_str)(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem acs[]);
  int    (*property_name_to_ctype)(struct OnigEncodingTypeST* enc, OnigUChar* p, OnigUChar* end);
  int    (*is_code_ctype)(OnigCodePoint code, unsigned int ctype);
  int    (*get_ctype_code_range)(int ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[]);
  OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p);
  int    (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end);
} OnigEncodingType;

typedef OnigEncodingType* OnigEncoding;

OnigEncodingType OnigEncodingUTF16_LE = {
  utf16le_mbc_enc_len,
  "UTF-16LE",   /* name */
  4,            /* max byte length */
  2,            /* min byte length */
  utf16le_is_mbc_newline,
  utf16le_mbc_to_code,
  utf16le_code_to_mbclen,
  utf16le_code_to_mbc,
  utf16le_mbc_case_fold,
  onigenc_unicode_apply_all_case_fold,
  utf16le_get_case_fold_codes_by_str,
  onigenc_unicode_property_name_to_ctype,
  onigenc_unicode_is_code_ctype,
  onigenc_utf16_32_get_ctype_code_range,
  utf16le_left_adjust_char_head,
  onigenc_always_false_is_allowed_reverse_match
};
  • プロパティの名前のデータベースは自前(作成方法は不明)
  • エンコーディングごとにデータベースを持てる
  • 使用に先立って名前データベース→ビットマップテーブルへの変換をする?

■_ gawk random.c

--- gawk-3.1.5/random.c	2005-05-12 00:28:17.000000000 +0900
+++ gawk-3.1.5g/random.c	2006-09-15 21:15:45.000000000 +0900
@@ -10,11 +10,7 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
+ * 3. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
  *
@@ -31,6 +27,22 @@
  * SUCH DAMAGE.
  */
 
+/*
+ * Per the statement at http://opensource.org/licenses/bsd-license.php,
+ *
+ *	The advertising clause in the license appearing on BSD Unix files was
+ *	officially rescinded by the Director of the Office of Technology
+ *	Licensing of the University of California on July 22 1999. He states
+ *	that clause 3 is "hereby deleted in its entirety."
+ *
+ * I removed the advertising clause in the above copyright.
+ * The above web site points to
+ * ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change.
+ *
+ * Arnold Robbins
+ * 15 September 2007
+ */
+
 #if defined(LIBC_SCCS) && !defined(lint)
 static const char sccsid[] = "@(#)random.c	8.2 (Berkeley) 5/19/95";
 #endif /* LIBC_SCCS and not lint */

Arnold、年を間違えとるぞ(^^; それはさておき確かに random.c 自体に変更はない。

d:\src\gawk-3.1.5>.\gawk --ver
GNU Awk 3.1.5 build date Mar 23 2007
Copyright (C) 1989, 1991-2005 Free Software Foundation.
d:\src\gawk-3.1.5>cd test

d:\src\gawk-3.1.5\test>..\gawk -f rand.awk
 62  67  88   6  35  77   3  68  30  96  90  26  35   8  88  93  49  53  37

d:\src\gawk-3.1.5\test>cat rand.ok
 62  67  88   6  35  77   3  68  30  96  90  26  35   8  88  93  49  53  37

d:\src\gawk-3.1.5\test>cd \work\t\0531\gawk-3.1.5g\test

d:\work\t\0531\gawk-3.1.5g\test>..\gawk.exe --ver
GNU Awk 3.1.5g
Copyright (C) 1989, 1991-2007 Free Software Foundation.

d:\work\t\0531\gawk-3.1.5g\test>gawk -f rand.awk
 62  67  88   6  35  77   3  68  30  96  90  26  35   8  88  93  49  53  37

d:\work\t\0531\gawk-3.1.5g\test>cat rand.ok
 62  67  88   6  35  77   3  68  30  96  90  26  35   8  88  93  49  53  37

つーことでさいとうさんのビルド環境に問題があると思われ。 とりあえず本当にgawkのソースツリーの random.cにある srand/randomを使っているか どうか確認されたし。

■_ お題拝借

西尾泰和のブログ @ Cybozu Labs: Pythonコード添削道場

「Pythonコード添削道場」はこのワークショップのセッションの一つで、私、西尾 泰和と増田 泰さん、柴田 淳さんの3人で投稿されたコードを添削するという企画です。
この企画はみなさんにコードを投稿して頂かないと始まりません。コードの内容は自由なので、ぜひご投稿ください。
また「投稿してといわれても、ちょうどいいコードがないなぁ」という人のために、お題が7つ用意してあります。お題に挑戦してみて結果のコードを投稿するのもよいでしょう。

    * お題1:ファイルの同期
    * お題2:単語数カウント
    * お題3:シングルトン
    * お題4:入れ子リストの中身を順に表示
    * お題5:行列の回転
    * お題6:名簿の並び替え
    * お題7:整数とビット列の相互変換 

勉強のため、Haskellでやってみようと思い立ったはいいが どれから手をつけるのが良かろうか? リスト(お題4)かなあ?

さいとうさんがawkで解くのはデフォルトですのでよろしく :) (でもawkで1はちときついかも)

んでHaskellといえばで脱線 Inemuri nezumi diary(2007-06-12)

Haskellを推す

何故私は Haskell を推すのか。Haskell の根底に流れている思想を私たちは共有している。 すでに。あなたがそれに気がついていない。のだ。

オブジェクト指向があなたの人生を変えたように、遅延評価と関数型もあなたの人生を変える。重要な事はいつ行っても重要である。重要でないことは隠せ*1。複雑な物は分解でき、 単純な物はより見やすく書くことができる。

では、Haskellは何故皆の手に渡らないのか。私の仮説では、Haskellをわかった者は Lispとその処理系の実装を紳士淑女のたしなみとしてすでにわかっていたからではないか、 と推測する。 Graham の本を除いて、Haskellについてのいくつかの教科書の序文にはこうある: 「読者は関数型言語について幾分かの知識を持っているものと仮定する」

これはあんまりだ。

世界樹の迷宮はシビアなゲームだ。

街を出たばかりの1FのフロアにLv1では倒せない敵がいる。

全ての実用的プログラミングにはこの魔物が棲む。

  • printf(s)は危険
  • scanf("%d", s)は危険
  • mktemp(f)は決して使わないこと
  • etc.

(略)
初心者向けの教科書には、もちろん、この手の魔物については書かれていないため、 例えば、 携帯電話のバグさえ引き起こしてしまうかもしれないのだ。

■_ perl-mode

mieki256's diary: xyzzyのperl-modeで

open(IN, $infile) or die $!; と書くと、indent-region が正常に働かないな…。open(IN, $infile) || die $!; なら大丈夫だけど。
エディタの機能制限で、ソースの記述方法まで制限を受けてしまうという見本、になりそうでちとマズイ。

mieki256's diary - Meadow 3.00 開発版をインストール

xyzzy の perl-mode があまりよろしくないので、Meadow の cperl-mode はどんなものだろうかと。てことでインストール。や、以前から一応入れてはあったのだけど、バージョン的に古いのか新しいのかがよく判らなかったので。

xyzzyのperl-modeって結構な部分をC/C++と共用していて、 しかもそれがコアのC++で書かれている部分だったりするので 直そうにも結構辛いんですよね。 xyzzy-lispオンリーで書き直したら遅いかなあ… (それ以前に全部Lispで書きなおせるほどLispもxyzzyもわかってないけどなっ)

■_ 最長

めもがき:2007/6/6(Wed)
http://sigsegv.s25.xrea.com/diary/?20070606#06

もしかしてUnicodeの中ではリガチャ(合字)の最も長いものは
U+FDFA(ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM)なのかな。
U+FDFA = U+0635 + U+0644 + U+0649 \
	+ U+0020 + U+0627 + U+0644 + U+0644 + U+0647 \
	+ U+0020 + U+0639 + U+0644 + U+064A + U+0647 \
	+ U+0020 + U+0648 + U+0633 + U+0644 + U+0645

うひゃ。 日本語なんてこの方面ではかわいいもんだ。

■_ ReadyBoost

ふむそういうカラクリだったのか。 ちょっと前に某MVP様が××の説明は間違っているとお書きになられていたのだけど、 これが正しいというのを(ポインタすらさえも)書いてくださらなかったので ちと悶々としておりましたのですよ。ええ。

フラッシュメモリ活用による高速化技術を理解するためのキーワード- @IT

■ReadyBoost(レディブースト)
  Windows Vistaで導入されたフラッシュメモリを利用したキャッシュ機能の1つ。 正式には、「Windows ReadyBoost」という。
フラッシュメモリがReadyBoostとして設定されると、そのルート・フォルダに 「ReadyBoost.sfcache」という名前のキャッシュ・ファイルが作成され、ここに SuperFetchのデータ・ファイルが保存される。このデータ・ファイルは、 2:1の圧縮比になるように圧縮されるため、 1Gbytesのキャッシュ・ファイルには 2Gbytesのデータが格納されることになる。また、このファイルには、 書き込むブロックごとに128bit のAdvanced Encryption Standard(AES) で暗号化されるため、抜き出したフラッシュメモリを紛失しても、 そこから情報漏えいするようなことはないとしている。
 またReadyBoostでは、ランダムアクセスに対してはフラッシュメモリ上の キャッシュ・データから読み出しを行うが、シーケンシャルアクセスに対しては ハードディスクの方がフラッシュメモリよりも高速なため、データがキャッシュに 存在しても、直接ハードディスク上から読み出すようになっている。

■SuperFetch(スーパーフェッチ)
頻繁に使用するアプリケーションを認識して、あらかじめメモリにこれらの アプリケーションや関連ファイルを読み込むことによって、システムの応答速度を向上させる Windows Vistaに実装されたメモリ管理技術。正式には、「Windows SuperFetch」という。
  SuperFetchでは、アプリケーションやファイルなどの使用パターンを分析し、 よく使うアプリケーションのメモリ・イメージをあらかじめロードしておくことで、 メモリへのロード時間を短縮するなどすることで、コンピュータの応答時間を改善する 機能である。これにより、アプリケーション起動やハイバネーションからの復帰の高速化、 アイドル時などに実行される、バックグラウンド・アプリケーション (検索用インデックス生成など)実行後の性能低下防止などを可能にする。
  SuperFetchは、頻繁に使用するアプリケーションのメモリ・イメージをキャッシュし、 これを実際の実行開始以前にメモリにプリロードしておくことにより、 アプリケーションの起動速度を高速化する。またSuperFetchは、 バックグラウンド・アプリケーション(ウイルス検査やデスクトップ検索のための インデックス生成など。コンピュータのアイドル時に自動実行されるものが多い) の実行完了を検出すると、それ以前の状態にメモリを自動的に復帰する。これにより、 例えば昼休み中にバックグランド・アプリケーションが実行され、 大量のスワップが発生した場合でも、ユーザーは昼食後に気持ちよく作業を再開できる。

ふむ。 なんとなくではあるが動作のイメージがつかめたような気がする。

■_ PHPって鬼子?

Rauru Blog » Blog Archive » PHPのセキュリティ

しかしこのニュースを取り上げてる slashdot.org についたコメントがどれもかなりひどい。 例えば PHP Security Expert? Isn’t that an oxymoron? とかってどうよ。

oxymoronという単語が良くわからないけど (ぐーぐる先生には聞いてみた)、 まあろくでもないことを云っているようなのは見当がつく。 → 撞着語法 - WikipediaOxymoron - Wikipedia, the free encyclopedia

PHPに関してもう一つ きしだのはてな: round(0.49…)の挙動をありえないと思う人はPHPを使ってはいけない

PHPを使う場合は、こういったポリシーで開発されているということを踏まえて、 それなりの用途で使うか、それなりの対処をするかが必要です。

■_ 今日のフラゲほか

アンインストール
イントロで涙が流れそうになるほど先週のエピソードが印象に残ってたり。
Breathe on me
TV東京で5年位前にやっていた番組の主題歌ですが、 数ヶ月前からMX TVで放送してたりします。 歌い方がTVのオープニングと違うのがちと不満。
光の行方
これも某深夜アニメの主題歌。

2007年06月11日

さらに思い出した

むとうさん永井さんに名刺をもらった。
はやくこういう場で使える名刺を作ろう。

むとうさん(Ruby GNOME, Ruby gettext)、永井さん(Ruby/Tk)が 協力してくれる開発者募集中。そこの若さあふれるキミ。 そう、キミだ。 腕を上げるチャンスを活かしてみないか?

吉田さんのテスト駆動プログラミング入門も書くの忘れてた。 おもしろそうではある。 →日本 Ruby 会議 2007 - AgileなRuby教育術

Rubyistにも、そうでない人にも。 日本 Ruby 会議 2007 - Log0610-S5
あまりよく聞き取れなかった自分の英語耳が今日ほど恨めしかったことはない(笑)

さらに思い出した:
takano32さんと握手してない(笑)
#するつもりだったのかよっ

■_ なんというか

<-- ひら - 風邪で寝込んで見つけた日本 http://d.hatena.ne.jp/hira_sosuke/20070608/1181293268 --> 歴史とか考古学に関する「常識」にしばられないのは大切だと思いますけど、 それを説明するのに グラハム・ハンコック と彼の著書を持ち出すのはどうかと思います。 神々の指紋しか読んでいませんけど、南極大陸の古代文明(でしたっけ)のくだりで あまりにもバカバカしくなって、他の作品は手にとってすらいません。 ひょっとしたら「アタリ」のものが中にはあるかもしれませんが、 この南極大陸の古代文明の話はそんなものがあったとしても信用できない (少なくとも彼が語るところでは)という判断をさせるに十分なものです。

■_ バカ征くに思う

バカが征く
http://www.jitu.org/~tko/cgi-bin/bakagaiku.rb?bakaid=20070610


いやいやいや、自分は結構読者を楽しませる努力はして
ますよ? でも、記事の背景とかグダグダ書いてもせん
ないでしょ? 大体、ここで選んでる元ネタなんて、ここ
読んでる人だったら知ってるのばっかりでしょ?

いやあわたしには元ネタがわからないことが結構あったりして悩むことがありますよ。 でもそれはそれでgreenteaさんの「芸風」の一つだと思ってますし、 自分のアンテナの低さを恨むだけです。 で、「元ネタがわかればらっきー」ぐらいに考えています。

ここも、『アジャイル以外のこと書かなきゃいいのに』っていわれてるらしいし (笑)。

え゛ーっ? 信じらんねー(笑) わたしは囲碁の話とかも好きですけどねえ。良く知らないんですけど (高校時代、囲碁部を作るのでお前もこいと引きずられた過去がありますので、 ちょっとだけなら打てますが)。

■_ Perl 6 Design Minutes for 06 June 2007

use Perl | Perl 6 Design Minutes for 06 June 2007



Allison:

    * spent the week implementing pieces of the new object system
    * it was a lot of fun
    * I made a lot of progress
    * we're passing over half of the old object test suite, using the new objects
    * the biggest mismatch is a piece that I want to remove anyway
    * trying to store classes and instantiate objects by type number
    * that system just can't handle the things that we're doing now
    * it works well if you have no namespaces or hierarchical class names or dynamic effects
    * I'm making the new system work with it for now
    * but we'll remove it later

Nicholas:

    * I always wondered if it would work
    * what did numbers give you?
    * you can't serialize them; they get renumbered when you load classes in a different order

Allison:

    * in theory it's an optimization
    * passing around an integer is in theory more efficient than passing around a string or a class object
    * but you end up retrieving the class object anyway

Nicholas:

    * that's effectively a pointer lookup anyway

Larry:

    * you end up boxing repeatedly

Allison:

    * it just really doesn't make sense
    * oh, and today the OSI board is voting on the AL 2.0
    * we will likely get approval
    * if it gets approved, I'll switch the license for the next release of Parrot

Jesse:

    * what are the chances they'll give a conditional approval with some changes?

Allison:

    * low
    * no issues came up

Jesse:

    * what are you doing in the next week?

Allison:

    * traveling
    * probably working on the PMC PDD and then the object stuff
    * I want to get as much of the object stuff as possible for the next release
    * I'm doing the release in two weeks

Larry:

    * the talk is going about as well as it ever does
    * working a lot
    * cleaning up various things in the Synopses
    * decided it was stupid not to distinguish symbolic from hard references in indirect method calls
    * you always use quotes if you're doing a symbolic method name
    * you can interpolate a variable there
    * the non-quote form of indirection $.method_name is always exclusively a hard reference
    * that opens up using a list variable of some sort
    * we now have a very easy way to specify a list of candidates to visit
    * we can get rid of the WALK pseudo-class
    * we just need a method that returns a list of candidates, perhaps lazily
    * then we can dispatch to that list of candidates
    * talking about why we will or will not rename various fundamental structures
    * I've thought @: was ugly for a while
    * syntactically now you can use any sigil as a list operator
    * they require trailing whitespace, so we didn't need the colon
    * trying to come up with a decent word for all of the contexts that sigils supply
    * the @@ context is now "slice"
    * a list of lists you use in a multi-dimensional subscript
    * I was inconsistent in my terminology
    * the whole thing is now a slice, not just each individual dimension

c:

    * is the other a "sliver" now?

Larry:

    * there was a bunch of speculation about the xx operator
    * you can repeat an indefinite number of times with lazy lists
    * there was a proposal to do the same thing with strings
    * in the end, I decided that you can emulate it with a Cat object
    * that's an infinite list

Nicholas:

    * Perl 6 effectively supports infinite strings?

Larry:

    * it's an object that emulates a string
    * it does the Str role
    * I don't want to make all strings capable of that
    * it would have a bad effect on performance, I think

Nicholas:

    * sometimes it's useful to ask for the length of a string

Larry:

    * basically, strings are scalar and should not be lazy

c:

    * fixed a few bugs in Parrot
    * applied a lot of patches
    * fixed a couple of memory leaks
    * have a couple more to fix
    * they're not big, but they do help PGE
    * then I really will work on the getting started guides

Jesse:

    * I've been going back and forth with Flavio about his KP6 project
    * trying to get a sane roadmap
    * he has a set of projects, milestones, and tasks
    * those tasks are delegatable to Perl 5 and Perl 6 coders
    * it's focused on Perl 6 on Perl 6, not Perl 6 on Pugs and Perl 6 on Parrot
    * those are bonus projects

Allison:

    * we've handed out about $6000 in the Parrot grants lately
    * it's $2000 for finishing a milestone

Infinite string というのは長さが無限大の文字列ということでいいのかな? で、Larryは「そりゃ文字列(string)じゃなくて (文字列のように振舞う)オブジェクトだろう。 文字列はスカラーで、遅延評価が行われないようなものであるべき」 と。

■_ Affero GPL(AGPL)

んと、ネットワークサービス上のソフトウェアに関するのはこれが本命ということ? Open Tech Press | Affero GPLv3のディスカッションドラフト公開 から。

ライセンスの改訂が続いている。GNU一般公衆利用許諾契約書のバージョン3(GPLv3) の策定が終盤を迎えつつあるなか、フリーソフトウェア財団(Free Software Foundation) はAffero GPLv3の最初のディスカッションドラフトを公開した。

 もともとAffero GPL(AGPL)は、ネットワーク上でサービスを提供する GPLソフトウェアをある組織が改変しても、一般的な意味での「頒布」 が行われないためにそうした改変が役に立たない可能性がある、 というネットワークの抜け穴に対処しようとしたものだった。 今回公開されたドラフトも同様の保護を行うものだが、 AGPLの条項を他の種類のプログラムに拡大適用するものではない(以下を参照)。

本使用許諾書の他のいかなる条項の定めにもかかわらず、対象プログラムの改変を 行った場合は、コンピュータネットワークを介してそのプログラムと遠隔でやりとりを 行うすべてのユーザに対し、(改変後のバージョンがそうしたやりとりをサポートしていれば) そのバージョンに該当するソースをネットワークサーバから無償でコピーできる権利を 提供することにより、そのソースを受け取る機会を与えなければならない。

■_ お金時間がないっ

いや、お金も自信を持って「ある」といえるほど持ってないけどさ(笑)

パフォーマンスについては,2007年12月にリリース予定の次期版1.9で, 笹田耕一氏が開発したRuby仮想マシン実行環境を組み込むことにより向上する見込み。 Unicodeサポートの改善についてはまつもと氏が現在作業中だ。

当然といえば当然だけど、「ぎゃっ」

最終的にrejectされるとしても、 自分の提案するところの機能参照実装を提出せんとイカンのだけど どういう方針でやるのがいいのか正直道が見えてない。 燈明になってくれそうなPerlのソースは壁が高いときた(笑) 例によってどういう流れでどう仕事しているのか良くワカラン。

とりあえず、実装しやすさ優先で組んでみるのがいいか?

■_ メモ

ハングアップの日々 (2007/06)

Vista で Cygwin の patch.exe を bash 上で実行しようとしたら、access denied などと表示されてしまった。コマンドプロンプトから patch.exe を実行したら、 UAC の昇格ダイアログが出た。OS に、インストーラの類だと判断されてしまったようだ。  昇格しないようにするためには、manifest を用意しないといけない。 本当はファイルのプロパティで昇格しないように設定できると良いのだが、 管理者権限で起動するようにするための設定はあっても、 逆に一般権限で起動するようにする設定はない。実に中途半端だ。  次のような内容のファイルを用意して、c:\cygwin\bin\patch.exe.manifest というファイル名で保存したところ、無事に一般権限で起動するようになった。

Cygwin捨てて、coLinuxでも入れるのがいいのかなあ >わしのノートの環境 → ITmedia エンタープライズ:VistaのUAC、今後の開発者方針に影響――米アナリストの指摘

第6回 意外に知られていないブラインドSQLインジェクション|gihyo.jp
なんのこっちゃいと思いつつ読んだけど色々あるんだねえ。 webアプリは難しいや。

■_ Haskell再入門

Inemuri nezumi diary(2007-06-09) で絶賛されている Programming in Haskell ですが、 実は持っていたり (ってこの方の以前のエントリ http://madscientist.jp/%7Eikegami/diary/20070504.html#p1 ) を見てぽちっとなしちゃったんですけどね。 版型はちょっと大きめだけど、薄くて軽い本なので持ち歩くのもそんなに苦になりません。

■_ あとでチェック

RubyForge: gbstring-0.1-released-

GBString provides a ruby class similar to String class and can manipulate string 
that is encoded in GB18030. Now the version 0.1 has been released! Try to use 
it to manipulate strings that is encoded in GB18030, it's easy to use!

興味深い +1

■_ どうしようかなあ

NHKのハイクオリティ・不思議アニメ「電脳コイル」DVD化

 バンダイビジュアル株式会社は、5月からNHK教育テレビにて放送がスタートしたアニメ 「電脳コイル」のDVD化を、9月25日より開始する。限定版と通常版の2バージョンを用意。 第1巻の通常版は2,940円、限定版は6,510円。2巻以降の価格は未定だが、 各巻に通常版と限定版が用意される。

なんで通常版と限定版でそんなに値段が違うんだ(笑)

2007年06月10日

RubyKaiji2007 二日目

昨日書き忘れたこと

  • artonさんのハンドルの由来
  • akrさんはバグ袋を持っているらしい
  • 会場の書籍販売でRHGが何冊かあったらしい
  • PS3症候群
  • 勝敗は明らか
  • 懇親会でばびーさんを捕捉できず

うわ、自分で書いた字なのに読み取れないのが結構あるよ(^^;

  • IRCのログ公開してくれないかなあ
  • 席の間が昨日より開いている?
  • 小さな会社での悩み
    • 新人に基本的なところから教えていられない
    • 全力を投入できない
  • CodeGolf服務
  • イキナリヘビーな要求→応えるとエスカレート
  • 敗北戦隊ザンパイダー
  • ときどき分析ツールからプロダクトに昇格するものあり
  • ソーシャルヒストリサービス
  • Jruby on Rails
  • 互換性98%以上 よほどのものでなければ大丈夫
  • わっふるわっふる
  • AP4R
  • Lightweight Programming
  • Rubyを愛する
  • which do for role developer
  • まじろう
  • ××駆動
  • 日本アイビーエム社内にはRubyコミュがあるらしい?
  • 普通 vs. 先進
  • Energey Tehcnologyの推進
  • Scripting in IBM
  • Perl for z/OS
  • PHP for z/OS
  • ThinkPadのリカバリソフトにPythonが使われていたという事実
  • Ruby DBR
  • DB2 on Rails
  • Timeline
  • レアもの
  • Rubyを社用のもの構築のために使用
  • 楽天はここではアウェイ
  • 日本Rubyの会に助けに出せる人材を
  • 今日は'さん'づけ
  • 認定試験を?
  • 社名を間違えられやすい
  • Rubbics
  • Railsのレンダリングが重い
  • select→epoll/kqueue
  • Rubyは仕事に使えるよ!
  • Award on Rails
  • Embeded用途に使える?
  • まつもとの野望
    • アイデアは出す
    • 実装よろしく
  • Tcl/Tk 入り口は広い。奥は深い
  • オプションデータベース
  • 再利用性が低い→Ruby/Tkで改善
  • Ruyb GNOME
  • GUI専用じゃないよ
  • Windows版はInstallerあるよ(Uninstallerつき)
  • 青木さん寝坊
  • Windowsはアウェイ
  • MDD (Mascot Driven Development)
  • 思ったよりも使われているようだ?
  • ぬこ
  • ライブプレゼン
  • ノッポさん?
  • 2007秋 1.0リリース予定
  • ロスタイムは?
  • るびまに記事書きませんか?
  • デスマ→るびま
  • ええとこどり
  • インプリンティング
  • 30分でわかる継続
  • HSP
  • PS3症候群
  • ImageMagickのソースを読むのは辛い
  • rcairo
  • コミュニティ
  • 東方熊次郎
  • ちゃかちゃんちゃん
  • Ruby/SDLのデモお願いします
  • ハードウェアくだちい
  • 交渉します
  • 愛のないプログラミングはツライ
  • ツールへの愛は成果に現れる
  • You have to love what you do
  • 日々8~9時間仕事をするとして、その仕事を愛していないのなら それはなんて無駄な時間なんだろうか
  • Python vs. Ruby
  • Pythonが好きな人たちがいる
  • Rubyが好きな人たちがいる
  • Python派もいるしRuby派もいる
  • 両方好きだという人はあまりいない
  • Pythonには(空手でいうような)型がある
  • form
  • それはGuidoの型
  • Ruby とは 侘び・寂び
  • どんな言語を使おうが書ける行数で観れば大差はない
  • じゃあどの言語を使おう?
  • 多くのプログラマは自分でプログラムを書くよりも 他人のプログラムを読むことのほうが多い
  • I don't want to rely on nasty people
  • Ruby is also a teenager
  • 激変する時期
  • 互換性重要
  • Don't extend language where a library would work
  • Change Will be happen!
  • Vendor Fragment → No
  • The world is Changed
  • show thethem our way
  • Ruby-do (道)
  • We Protect what we have
  • But learn from them
  • Prepare to welcome new people
  • スタンディングオベーション
  • コミュニティは成長するそのまま野放しにしては良くない
  • agile!
  • 変化をすでに経験したコミュニティ?
    • Javaコミュニティ
    • Linuxコミュニティ
    • MatzはLinusではない
    • 違ったやり方
  • Ruby should be Chageable
    • Rubyは十分変わったとはいえない
    • リスト内包表記ほしいよね
  • 10年も経てば変わることそれ自体が難しいことになる
  • いまはfreezeすべき時期ではない
  • いろんなことを試すのは重要
  • Ruby is my life
  • 100%ではない
  • 残りの5%?
    • Haskell
    • Erlang
    • いずれにしろ関数型言語は経験しておけ
  • いろんなものを試してみて、だめなら(Rubyに)戻ってくりゃいいじゃん

おまけ:

パッチ袋展開中のなかださんの図。 写真撮影を快諾していただいたなかださんに感謝。

そ、それは

新人研修しているんだが
http://pc11.2ch.net/test/read.cgi/prog/1180232556/

590  【仕様書無しさん】 sage DATE:2007/06/09(土) 13:43:18
俺が出した宿題がム板の宿題スレに出てた 
一応、仕事なんだからさぁ・・・答えてあげたけど 

592  【仕様書無しさん】DATE:2007/06/09(土) 13:44:03
>>590 
宿題スレで宿題聞いたんだから、ある意味正解だろw 

参考になる

TERRAZINE

自己紹介を「持ちネタ」に

自己紹介が苦手だって人は少なくないだろう。緊張するし、ちょっと恥ずかしい気もする。
でも、そんなんじゃあダメだ。ちゃんとした自己紹介も出来なくては一人前とはいえない。
だから「持ちネタ」をTPOに合わせていくつか用意しておくといい。自己紹介で大事なのは、
顔と名前と「どんな人」かってのを覚えてもらうことだ。

mawk

sh, awk, python - forkは遅いけど

$ time perl builtin.pl
perl builtin.pl  0.22s user 0.17s system 98% cpu 0.396 total
$ time ruby builtin.rb
ruby builtin.rb  0.36s user 0.12s system 99% cpu 0.485 total
$ time gawk -f builtin.awk
gawk -f builtin.awk  0.36s user 0.16s system 99% cpu 0.522 total
$ time nawk -f builtin.awk
nawk -f builtin.awk  0.11s user 0.14s system 96% cpu 0.259 total
$ time mawk -f builtin.awk
mawk -f builtin.awk  0.01s user 0.05s system 92% cpu 0.065 total

なんと mawk が意外に速い。

mawkはフットプリントが小さいのと、gawkが構文木を愚直に 再帰的に解釈していくのに対してバイトコードに変換していくので 結構早いです。 ちょっと前のバージョンだと、変換したバイトコードをファイルに保存して それを直接実行するとかできたんですよね。 しかもMS-DOSのスモールモデルで実行ファイルが作成できたという小ささ。

2007年06月09日

今日は登校日RubyKaigiなんだ

さて。

それって

我田引水すれば、もっとも選択肢の多い(自由度の多い)言語がユーザ満足度が 高いとは限らないということでもある。

(ぴー)ですね? (ぴー)のこと云ってるんですね?(笑)

RubyKaigi2007

まとめている余裕がありませぬ。 速報はそこかしこにあると思うので、覚えているキーワードでも。 メモ帳持っていくの忘れちまったい。 ペンは持っていったのに(笑)

  • 寝坊したので、タクシーで会場に行った。
  • ささださんの95%は××でできているらしい
  • (満貫になるには一飜足りないような気がするがどうか)
  • Tkのドキュメント化の対象ははたくさんあるらしい
  • 多様性は善
  • いつの間にかRubyの実装が増えましたね(JRuby, IronRuby, matzruby,...)
  • ネイティブスレッドいらねーんぢゃね?
  • 1.9.1のリリースに関してマイルストーンも決まっていないらしい
  • でも8月にはpreviewみたいなリリースを出すらしい
  • Unicodeはbestでないにしても現実的な選択
  • 歴史上の文物などの非常にマイナーなものを扱うときは別途コードを決めればいいんじゃね?
  • PCREつかっとけ
  • 山野さんて誰?
  • データ上は1.9.1のリリースは2009年?

matzにっきのコメント欄が小火(ぼや)になっている

まだ炎上には至っていないので。 それはともかく、PHPサイドとまつもとさんとで話がかみ合ってない (論点が微妙にすれ違っている)ような気がするがどうか? まあ「攻撃されている」と受け取ってしまったらそうなるのかもしれないが。

2007年06月08日

■_ しかし

まつもとさんもよく誤解される人だなあ。 まあ誤解されない人もそうはいないだろうし、 まつもとさん自身の問題(ちょっと不用意な表現の発言とか)もあるんだろうけど、 (コノ業界で)目立つ人だから仕方のないもの?

■_うぉっ

例によってアクセスログのリファラー眺めてたら http://www.rubyist.net/~kazu/samidare/ というのが複数あってびっくり。 思わず確かめにいきましたとも。ええ(笑)

リストから取り除けとか何とか無粋なことは云いませんのでよしなに。> 管理者様

■_ キター

2ちゃんねる某スレで知ったのですが、6/20(予定)に こんな本が出るんですねえ → The Art of UNIX Programming

さすが腐っても(腐ってない腐ってない(笑))アスキーといったところですか。 でもこれも原書買ってんだよなあ(^^;

■_ Pythonクックブック

こちらも発売間近。 oreilly.co.jp -- Online Catalog: Python クックブック 第2版 で、日本語版では幾つかの章が省かれているということを聞きました。

【書き方は】Pythonのお勉強 Part19【一通り】
http://pc11.2ch.net/test/read.cgi/tech/1181064980/23

23 デフォルトの名無しさん sage 2007/06/07(木) 20:30:26 
Python クックブック 第2版
ttp://www.oreilly.co.jp/books/9784873112763/

原書にあった以下の章はカット

Chapter 15: Distributed Programming
Chapter 16: Programs About Programs
Chapter 17: Extending and Embedding
Chapter 18: Algorithms
Chapter 19: Iterators and Generators
Chapter 20: Descriptors, Decorators,and Metaclasses

日本語版に追加された付録

A Pythonと日本語処理について
A.1 Pythonで日本語を使う
A.2 ソースコードに日本語が使いたい

日本語版で追加されたのは確かに必要だろう。 しかしカットされたところも惜しいなあ。特に19章 (それほどおまいはジェネレータが好きかっ)。 海外版だと目次(Table of Contents)が見づらいなあ → O'Reilly Media -- Bookstore: Python Cookbook, Second Edition
単純に目次の内容だけ確認できればいいのに。

■_もうひとつPython

Python Workshop the Edge 2007 開催のお知らせ

日 時】 : 2007年6月30日(土) 10:00 - 18:00
      ※イベント閉会後懇親会を予定
【場 所】 : 東京大学駒場キャンパス 5号館
【定 員】 : 約140名

どうしたもんか喃。

■_ うぞっ

あーありがち: ほんとに 5GB になってた

どれ冷やかしてみるかと思って nifmail.jp にアクセスしたら Camino が弾かれた。
しょーがねーなぁ、UA じゃなくてオブジェクトモデルで判断してよと思いながら 
Firefox でアクセスしても弾かれた。

責任者、出て来い。

■_ ライセンス

use Perl | Artistic 2.0 approved by OSI

Allison writes "In a June 6th meeting of the board, the Open Source Initiative has approved the Artistic License 2.0 for their online list of licenses that comply with the Open Source Definition. The new version of the license will replace the original Artistic License and the Clarified Artistic License. Though the revision process for the Artistic 2.0 was completed nearly a year ago, this marks a significant vote of acceptance for the license from the broader open source community."

Arttistic License2.0が採択されましたよ。と。 どこが変わったのかもう忘れてしもうたので要再チェック。

■_

わしはへたれなxyzzy使いなので(xyzzyそのものがへたれではないので 念のため)、Emacsの事情は良くわからんけど

From: 	Richard Stallman
Subject: 	Re: contribution of ruby-mode.el
Date: 	Sun, 03 Jun 2007 17:27:50 -0400

To make this program understandable and maintainable, please give
every defconst and every defun a doc string that explains what jobs
they do.  Large functions such as ruby-calculate-indent need a comment
to explain every group of lines.  Maintaining Emacs is hard already,
and if we don't want to make it harder, we need to ensure that new
files are really clear.

It would also be good to add comments at the top of the file
decribing the features that the mode provides.

    (cond
     ((featurep 'font-lock)
      (or (boundp 'font-lock-variable-name-face)
          (setq font-lock-variable-name-face font-lock-type-face))

      (setq ruby-font-lock-syntactic-keywords

Please delete that cond, and put all the contents at top level.


(このメールの元記事は
→
contribution of ruby-mode.el)

このcondがなんでいけないのか良くわからないけど、それはともかく “understandable で maintainable なものにするために every defconst とevery defun に、説明文(docstring)つけれ” というのは理解できる。 が、なかださんなりまつもとさんに丸投げするのもどうかと思う。 というのはMLに投げるべきなのかなあ。

ライセンスの件はあらかじめわかっていたけどこういう条件も あらかじめ洗い出しておくべきだったということか。 他山の石としよう。

2007年06月07日

■_ どーすっかなあ

WILLCOM|幅50mmのスマートなスマートフォン誕生 3インチワイドVGA液晶を搭載し、さらに進化したW-ZERO3[es] Advanced/W-ZERO3 [es]  <型番:WS011SH> を開発・発売 ~スライド式キーボード付きスマートフォン国内最軽量、最薄!~
ウィルコム,スリム化・軽量化した新W-ZERO3[es]を7月中旬に発売:ITpro

新規購入という縛りがなければすぐにでも買いたいところだけど、 W-ZERO3からの乗換えでなければ余り意味ないし。 一回解約して新規契約というもの面倒だしねえ(笑)

■_ N○Kあたりがドキュメンタリーを作ってくれないもんかなあ

世界初のCPU「4004」開発回顧録(9):ITpro

ま、「電子立国 日本の自叙伝」でちょっとやりましたが (8mm角のコンピュータ)。

■_ どうする、どうなる(Rubyの)継続

だからまつもとさん、発言するときは慎重すぎるくらいでないと。

実装の中身をまだ見ていないのと、継続を理解しているとはいえない状態なので 残して欲しいとも、なくしてもいいんじゃね?ともいえない。 外部イテレータとかジェネレータ書くのには便利そうだけど。 んで、Pythonのジェネレータは大好きなのでRubyにもあったらいいかなとは思っている。 心からの欲求じゃないけど(笑)。 ジェネレータが使いたければPython使えばいいだけの話だし。

■_ GPLv3

ITmedia エンタープライズ:GPLバージョン3へアップグレードすべき理由 (1/2)

GPLv2とGPLv3が非互換であるということはつまり、GPLv2の下にあるコードとGPLv3 の下にあるコードとを1つのプログラムの中で合法的に混ぜ合わせる方法はないという意味だ。 その理由は、GPLv2とGPLv3がどちらもコピーレフトのライセンスであるためだ。 どちらのライセンスも「このライセンスの下にあるコードを『より大きなプログラム』 の中に含める場合には、その『より大きなプログラム』もこのライセンスの下に 置かなければならない」としている。GPLv2とGPLv3に互換性を持たせるようにすることは 不可能だ。GPLv2と互換性を持たせるための条項をGPLv3に加えることはできたかもしれないが、 GPLv2の側にもGPLv3と互換性を持たせるための条項を加える必要があるため、 GPLv3だけにGPLv2と互換性を持たせるための条項を作っても意味がない。

ふむ。 まあ当然といえば当然だわいな。

■_ あとでみる(ことができるだろうか)

use Perl | Teach-In: Slides and Video

The slides from last weekend's Teach-In are are now available online.

You can also get audio and video of the first session on both Blip.tv and Google video. There's also an RSS feed that you can subscribe to if you want to know when the remaining three sessions are released (over the next couple of weeks). I'm told that this feeds links to "enhanced podcasts" of the presentation - but not being an iGeek I have no idea what that means.

■_ 乙女のPythonのポリシー

【書き方は】Pythonのお勉強 Part19【一通り】
http://pc11.2ch.net/test/read.cgi/tech/1181064980/9

9 【デフォルトの名無しさん】 sage DATE:2007/06/06(水) 07:00:13
しかし、一言言っておくと
TOOWTDI の読みは
there's only one way to do it と
there's one obvious way to do it の2通りがあって
どっちかって言うと後者の方が好まれる傾向にある気がする

後者は知らなかった。 ところでこの言葉をそのままぐーぐる先生に検索してもらうと、 Perlに関連するページがトップに来ました。 わは。

■_ Perl 6の動向 (Perl 6 Design Meeting Minutes for 30)

use Perl | Perl 6 Design Meeting Minutes for 30 May 2007

Larry:

    * getting ready for my History of Programming Languages talk
    * mostly tweaking the design in various spots in response to questions
    * some things on indirection of method calls
    * x and xx operators
    * questions about how is cached works
    * also added an is reparsed trait to go with is parsed
    * kludges in a key matcher which changes the thing
    * decided to allow placeholders in the conditionals of closures
    * if statements, for example

c:

    * fixed a few Parrot bugs
    * broke compilation
    * it's mostly back, just needs a configure change
    * making that configuration change might spread the change to all platforms that 
      support that GCC version though

Allison:

    * working on PMCs
    * almost ready to put out that PDD
    * should finish it this afternoon
    * we have a few last implementation bits for objects

c:

    * I looked at S05 for a question about character classes
    * I didn't see a complete section about them
    * did I overlook it?

Larry:

    * they're mostly diffs from Perl 5
    * the only Synopsis I've really revised is S03
    * S12 is arguably in that state as well
    * S05 really needs a major reorganization

まあ当然HOPLには呼ばれているわな。

マテ > S05 really needs a major reorganization
major reorgnizationって…

■_ EM ONEはどんなもんなんだろうか

気になるけど高い - むささびの視線 [ITmedia オルタナティブ・ブログ]

比較してみたいっちゃー比較してみたい。

2007年06月06日

■_ FEEDBRINGER

Floating Log 6.6.2007: さようなら FEEDBRINGER

あーやっぱり止まってるんですか。 会社のPCで使えるサーバ型(っていうんですか?)のRSSリーダーって あまりないので重宝してたんですけどねえ。 ってそれ以前にあそこにしか登録してないblogのアドレスバックアップとってNEEEE

■_ Eben Moglen教授インタビュー・シリーズ

■_ roundについて考えてみる

つもりだったが、時間がなくて中途半端な状態なので予告だけ(笑)

さて、今回話題にしたいのは上記の挙動に関してです。まずはこの原因から探ってみましょう。念のためPythonのround関数のソースコードを貼り付けておきます。これはPython/bltinmodule.cに含まれています。下記は2.3.5と2.4.1で共通です。また、僕の手元にバイナリがある2.3.4と2.4系最新版の2.4.4でも同じでした。

static PyObject *
builtin_round(PyObject *self, PyObject *args)
{
        double x;
        double f;
        int ndigits = 0;
        int i;

        if (!PyArg_ParseTuple(args, "d|i:round", &x, &ndigits))
                        return NULL;
        f = 1.0;
        i = abs(ndigits);
        while  (--i >= 0)
                f = f*10.0;
        if (ndigits < 0)
                x /= f;
        else
                x *= f;
        if (x >= 0.0)
                x = floor(x + 0.5);
        else
                x = ceil(x - 0.5);
        if (ndigits < 0)
                x *= f;
        else
                x /= f;
        return PyFloat_FromDouble(x);
}

見て分かる通り、PHPとほぼ同じ実装と言って構わないかと思います。 違いはPHP_ROUND_FUZZにあたる部分が0.5固定なことくらいです。

今回の件とは関係ないのだけど、ちょっとびっくりしたのが http://mail.python.org/pipermail/python-list/2005-September/340398.html にあった例。手元の2.5で同じことをやってみた。

Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 0.0225
0.022499999999999999

awkでいうところのOFMTみたいなものがあってそれに従っているというわけではない? あと、Rubyで同じことをやると

irb(main):001:0> 0.0225
=> 0.0225
irb(main):002:0> x=0.0225
=> 0.0225
irb(main):003:0> x
=> 0.0225
irb(main):004:0> printf "%20.16f", x
  0.0225000000000000=> nil
irb(main):005:0>

んーーーー?

■_ Note PC

東芝、最薄部19.5mmのCore 2 Duo搭載ノート「dynabook SS RX1」
東芝、64GBのフラッシュメモリー搭載で900gを切った「dynabook」を発売:ITpro

マイミクの某氏がmixiの日記で触れていた奴か。 SSD搭載タイプがもーーちょっと安ければねえ。 とはいうものの、Let's Note買ったばかりだから無理か。

■_ 物欲が刺激される

PSPが地図になる! PSP専用地図ソフト『みんなの地図2 地域版』発売 / デジタルARENA

W-ZERO3でどうにかできるような気もするけどとりあえずチェックしておく。

■_ 今月のHaskell

第11回 Haskellで学ぶ並列プログラミング(その2) 並列化手法:ITpro

すでに先々月あたりから自分の頭で追いつかなくなってきている。 DRAMのごとくリフレッシュが必要加茂。

■_ W-ZERO3後継機

ITmedia +D モバイル:ウィルコムの新スマートフォンは、WM6“Classic Edition”搭載のW-ZERO3後継機

Windows Mobileが6になるとかいうのはさておいても、 W-ZERO3でのメモリ不足が頻発するようになった今日この頃 (一度にたくさん動かすからいけないんですが)なので、 乗り換えてみようかなとは思う。 しかし機種変更で買えるようになるのは発売開始直後ではないだろうねえ。

2007年06月05日

■_ せきにんしゃでてこい

わたしは寝る前の最後の巡回で見つけて書いただけなので odzさんと時間がほぼ同じだったのは多分偶然です (そうか、これがケコーンというやつか(笑))。

なるほどオフィシャルな訳として出てしまっているのなら仕方がない面はありますね。 とはいうものの、変更できる道があるのならなんとかしたいところですが。 Lispなんかの本では anonymous function → 無名関数ですよね。

しかし実はシステムがこっそりつけた名前があって ユーザーはそれを知ることができないとかちょっと面白いと思いました。 ここで、本当の名前を知ることができると何でもできるとか (式神か?(笑))

■_ エロエロLL魂

LL魂チケット

■_ C++0x

C++0x
http://pc11.2ch.net/test/read.cgi/tech/1149440647/l50

428 【デフォルトの名無しさん】 sage DATE:2007/06/03(日) 04:26:58
GCC 4.3にC++0xの実験的サポート
http://gcc.gnu.org/gcc-4.3/cxx0x_status.html

429 【デフォルトの名無しさん】 sage DATE:2007/06/03(日) 04:55:14
>>428
ワクワクテカテカしつつDLしてregexを見てみた。


@todo Implement this function.
@todo Document this function.
だらけだった。

430 【デフォルトの名無しさん】 sage DATE:2007/06/03(日) 05:36:10
w

ということなのでわたしも見てみることにした。

GCC, the GNU Compiler Collection - GNU Project - Free Software Foundation (FSF)

June 2, 2007
Experimental support for the upcoming ISO C++0x standard been added. Enabled with -std=gnu++0x or -std=c++0x, this offers a first look at upcoming C++0x features and will be available in GCC 4.3. Code was contributed by Douglas Gregor of Indiana University, Russell Yanofsky, Benjamin Kosnik of Red Hat and Paolo Carlini of Novell, and reviewed by Jason Merrill of Red Hat and Mark Mitchell and Nathan Sidwell of CodeSourcery.

これか。

C++0xといえば Visual C++ Team Blog : Update on the C++-0x Language Standard というのも見つけたのですが、 C++はフォローしてもc99サポートのレベルは現状のままだったりするのでしょうか?

■_

バカが征く
http://www.jitu.org/~tko/cgi-bin/bakagaiku.rb?bakaid=20070605

でも、デバッグのやり方なんて、フツー教わらないよ?
そこらへんに転がってる入門書でデバッグのことを
しっかり教えてるのなんてある?

いやまあ確かにそのとおりなんですが、 まるっきり手掛かりなしで放り出すのもちと可哀想ではないかなと。

たとえばカーニハン大先生の「プログラミング作法」では 一章(第5章)をデバッグに割いています。 今手元にはソフトウェア作法とプログラム書法はないので これらでどうなのかはちょっとわかりません。

あと、やねうらおさん(id:yaneurao)がSoftware Designに連載していた記事 (デバッグ手法に関するものです)を書籍にするという話があったはずですが、 まとめているひまがないほど忙しいのかな?

■_ さまーたいむぶるーす♪

サマータイム関連2題 | bewaad institute@kasumigaseki

自民党をたきつけているのは日本経団連とのことなので、 まずは官僚よりも日本経団連加盟企業かr(ry

また経団連ですか ○| ̄|_

ではなぜ日本経団連は生活のシフトではなく、サマータイム導入=時間のシフトを 要望しているのでしょうか。生活のシフトではダメだという理由を聞いたことが ないのですが、素朴に考えれば、生活のシフトよりも時間のシフトの方が日本経団連に とって得だ、ということでしょう。

・・・Y2K特需の再現が目的? タイムゾーンも不要?

■_

参考になる +5

英会話は苦手であった。本格的に英会話の勉強をしたこともなく,語彙も少なく, おまけに辞書も持たずに渡米した。インテルを訪問したビジコンの役員が呆れて, 持っていた辞書をくれたぐらい英語に関しては準備しなかった。しかし, 自分の情報や相手の情報が価値あると認め,「伝えたい,聞きたい」という気持ちが伝われば, 会話は何とかなるものである。ホフは,実に紳士であり,「わからない」と言うと, 違ったアプローチで何度でも説明してくれた。私も,ホフを見習って, 自分の主張が通じていないと感じたときは,相手がわかるまで, 違ったアプローチで何度でも説明した。相手の主張と議論の結果は,念を押すためにも, 自分の言葉にして確認をとった。

■_ KindaPerl

Pugs: "KindaPerl6" project roadmap

I finished the first version of the KindaPerl6 project roadmap, after a whole month of planning, prioritizing, and procrastination.

The goal of phases and milestones here is really just to break the project down into bite-sized pieces that regular hackers can get their heads around.

“regular hacker”にも扱える程度にdown into bite-sized pices するですか。 んじゃあ今作業しているのはよっぽど Super とか GreatなHackerなんだろうな。 → kp6-roadmap - The "KindaPerl6" Project Roadmap

本日の購入

さらに先月末に翔泳社が発売した書籍「コンピュータアーキテクチャのエッセンス」 を手がけた編集者から直接話を聞く機会があり,その感を強くした。この本は, コンピュータのアーキテクチャをTTL(Transistor-Transistor Logic)回路, 論理ゲートといった,ごくプリミティブな構成要素から解説している。

ということで買ってみた。 本当は別の本が目的だったのだけど、そちらは売り切れの模様 (重版はかかったらしい)。
コンピュータアーキテクチャのエッセンス
コンピュータアーキテクチャのエッセンス

2007年06月04日

■_ Code Quality(ただし原書)あげます (引き取り先決まりました)

ちょっと前にこのweb日記に書きましたが、 Code Qualityの原書 (→) を買った直後に翻訳版が出てしまいました。 結局翻訳版も買ってしまったので、原書が宙に浮いています。 このままわたしの部屋で朽ちていくのももったいないことなので、 「原書(英語)でもいいから読みたい」という方がいらっしゃれば 差し上げますので連絡ください。 差し上げるといいつつ、送料+ちょっとの上乗せくらい頂けると 別の本を買うのに廻せますので助かります(結局本に使うのかっ)。

連絡はこのページにあるメールアドレス、 kbk あっとまーく kt.rim.or.jp までお願いします。

先着にはしません。 何日か待ってそのときの状況で決めます。 応募者複数の場合は何らかの抽選にするか メールに込められた情熱で決めるかします。 あと、心情としては社会人よりも学生さん(又はそれに準ずる立場の人)を 優先したいと思っていますが決定的に有利になるというほどの扱いでもありません。

■_ GPLv3

GPLv3はSaaSビジネスを縮小するか? - 日本のITは世界を制す!? [ITmedia オルタナティブ・ブログ]

GPL v3の最終ドラフトが公開されたようです。先回のドラフトとの大きな違いの一つは、GPLコードを使ってSaaSなどのオンラインサービスを提供した場合、ソースコードも公開しなければならないという条項が追加されたことです。オブジェクトコードを提供していないのにソースコードを頒布しなければならない、という特殊なものです。

ということなので読んでみた。

うーん、どこにそのことが書いてあるのかわからにゃい… ちゃんとfinal draftを見ているはずなんだけどなあ。

■_ カウボーイなプログラマと農民なプログラマ

the.codist{} - A Programmer Metaphor: The Farmer and the Cowboy

Most of the jobs these days (especially in the corporate world) require teamwork, following methodologies, using predetermined standards and sticking to the plan. I remember an interview at an airline here where they bragged about how their architects never wrote code, the project leaders only designed api’s and the coders only filled them in. One job I had (frequently referenced in various posts) had a formal architecture review board, a detailed methodology (that did change almost every day) and endless schedule extensions. Only someone with a farmer mentality can survive in this kind of environment which expects you to work within the system (good or bad).

ふむ。(読み間違えていなければ)結構面白い事書いていると思う。 日本語訳させてくれって頼んでみようかな?

■_

(多分)artonさんのところ経由で 第1回 総論:C# 2.0らしいプログラミングとは - @IT

内容について特にコメントはないんですが(ちょっとつつきたいところはあるけど)、 「匿名メソッド」 はヤメレ

■_ PHP周辺が騒がしい喃

現実的に言って、PHPは死なないし消えもしないどころかますます普及する。

こうしてPHPは普及してゆく。perlと同じ感じで、「どんなサーバーにもたいていPHP は入ってる」という現実が拡散してゆく。MovableTypeというキラーアプリの 爆発的普及の影には「どこのサーバーにもたいていperlは入ってる」という現実の 裏打ちがあったのは明白である。そしてPHPには「いつものHTMLの途中に突然書ける include文」というキラーアプリがある。(笑)

まつもとさんと、原著者の云っているところの「dead」というのは 普及しないとかインストールベースが減っていくだろうということではなくて (それを含んで云っているかも知れないけど)、 メジャーバージョンアップであるところのPHP5への移行のペースが遅く、 近々リリースされるであろう6でもその状況は変わらないか却って悪くなるだろう ということをさして、言語的な発展の余地がない→言語として死んだ ということじゃないでしょうか。 まあよく云えば「枯れた言語」として見ることができるとは思いますけれど。

そしてリンクをさらに辿った Drupal is Part of the Problem | Nick Lewis: The Blog にはこういうパラグラフがあります。

So if the PHP developers aren't to blame for PHP's impending death, who is? Well, that would be us. Or more specifically, those who champion sticking with PHP 4 on "practical" grounds. If you ask me, I see nothing practical about making our technology obsolete on the grounds of "playing it safe" .

なるほどユーザーがいないプログラミング言語というのものは一顧だに価せぬ ものかもしれません。 しかし、逆に開発者不在の言語というものも明るい未来をもてないのでは ないでしょうか?

■_ 保守可能/不可能なコードの書き方

不可能編→ How To Write Unmaintainable Code

  • 命名編
  • Camouflage編
  • ドキュメント編
  • プログラムデザイン編
  • ぐちゃぐちゃなコーディング(Coding Obfuscation)編
  • テスト編
  • 言語の選択編
  • Dealing With Others編
  • Roll Your Own編
  • Tricks In Offbeat Languages編
  • 雑多なテクニック (Miscellaneous Techniques)編

This essay is a joke! I apologise if anyone took this literally. Canadians think it gauche to label jokes with a :-). People paid no attention when I harped about how to write __maintainable code. I found people were more receptive hearing all the goofy things people often do to muck it up. Checking for unmaintainable design patterns is a rapid way to defend against malicious or inadvertent sloppiness.

長々書いてきて「joke」ですかいっ でも結構いいこと書いているような気がするので、 詳しく追いかけてみようかな。と。

The cardinal rule of writing unmaintainable code is to specify each fact in as many places as possible and in as many ways as possible.
- Roedy Green

えーと、「保守不能なコードを書く大原則とは 可能な限り多くの場所において可能な限り多くの方法で 事実を明確にすることである」…んーよくわかりゃん。
追記(6/5):
なるほどDRYの反対ですか。それは納得です。

可能編→ Advogato: How to Write Maintainable Code

  • コードを少なくする(Use less code)
  • カプセル化する(Encapsulate)
  • 前提条件を減らす(Reduce preconditions)
  • 保守作業をしやすい言語で書く(Write in an easy to maintain language)
  • テストコードを書く(Write test code)
  • ツールを作る(Create tools)
  • 安全なテクニックを使う(Use safe techniques)
  • Let yourself get frustrated (自分自身に失望する?)
  • パフォーマンスに関して(A word about performance)

保守しやすい言語を書くのところで

My favorite language for maintainability is Python. It has simple, clean syntax, object encapsulation, good library support, and optional named parameters. An example of a language which is terrible for maintainability is Perl. Yes, I said it. No, I'm not going to back down.

とあるのは苦笑いするしかなかったり。

■_ Nifty

@nifty、容量3GBの無料Webメールサービス。接続会員向けは5GB

んー、塩漬けにしておくのももったいないし なにか使い道を考えるかなあ > Niftyのアカウント

■_ ヒ・ヒゲメガネて

greetea語録(笑)

http://www.jitu.org/~tko/cgi-bin/bakagaiku.rb?bakaid=200706041

まぁ、自分も公言してるけど、ヒゲメガネはダメだね。
なんでみんながあんなにありがたがるのかわかんない (w
Gauche Nightで呼んだ理由もわからないし (w

公言してましたっけ? あ、オフラインでかな。 Gauche Nigthに呼ばれたのは場を盛り上げるためではないかと推測いたしまする。

ただなぁ、楽天の件は別だとしても、まつもとさん、結構
ホイホイ名前貸しちゃうからなー。ほんと、「殿、御身
お大切に」って感じ。

やはりユリアン・ミンツのような秘書が (銀英伝知らない人ごめんなさい)必要でしょう。とは 何年か前にも書いたな。

2007年06月03日

それをいうのなら

Blog/2007-6-1 - Rocco の日記: hnwの日記 - PHPの奇妙なround関数

えーと、通常なら絶対にあり得ない設計なんだが、 PHPユーザはこういう設計センスの言語を信頼できるのか

2 進数という呪縛をユーザーに強いる必要はないんじゃないでしょうか? 私はこういう考え (PHP のような考え) は好きです。 身の回りが適当で成り立っているわけですから、それでいいんではないかと思いつつも、 MPFR か何かのような外部電脳を繋げるようにだけはしておかないと不安だったりするのが、 人間の適当さです。

いやPHPでも呪縛から解放してませんし。 件の変更でやっているのは、限定された状況でつじつまが合うように なされた「姑息な」(辞書に載っている本来の意味でよろしく)手段です。 であるからこそ、今回話しのタネになったようなその変更が裏目にでる 状況がでてしまったわけですし、 そのような「姑息な手段」で回避するのはどうなのよというのが まつもとさんの云われているところでしょう。

もし本当にその呪縛とやらから解放するのなら、 多倍長であるかどうかはともかく十を基数とした浮動小数点演算を 持ち込むべきでしょう。 現状では二進のそれとは異なりハードの助けを得られないので 速度的には不利になりますが、 それでもなお、 呪縛を解くことを目指すのならそうすべきであるとわたしは思います。

奥村先生のこのコメントがわたしのいいたいことに近いかも → Re: IEEEの話かと思った

IEEE 754も含めて2進の浮動小数点数に共通する話です。 10進で有限小数でも2進で無限小数になるので0.01を 100回加えても1にならなかったりするわけですが, 素人はそれがわからずバグだと騒ぐので, 素人対策におかしな処理を入れることによって, 玄人の数値計算に使えないような仕様になってしまうという話です。 昔のTurbo PascalのようにBCDを選択できるようにするのも手かもしれません。

6/11追記:
どうもずいぶんと奥の深い問題だったようです。 こちらに詳細な調査結果があります →hnwの日記 - round関数その6:啓蒙とお詫び

デバッグ手法って教わりましたか?

WSH(・∀・)スレッド! Part 2
http://pc11.2ch.net/test/read.cgi/tech/1176698934/65-

66  【デフォルトの名無しさん】 sage DATE:2007/06/02(土) 14:06:54

時間の有る無しの問題じゃないだろ。 
デバッグってのはコードを書き始める前に覚えるべきことで 
車の運転に対する運転免許のようなものだが 
デバッグもろくに出来ない癖にいきなりコードを書き始める奴が多くなった。 

最近の若い子は基礎とか準備とか、そういうのを飛ばして面白そうな所にいきなり飛びつく。 
んで、問題が起きると人任せに「たすけて~」と言うだけで、自分でどうにかしようとはしない。 
本人は努力してるつもりなのかもしれないけど、端から見たらすぐ投げ出してるようにしか見えない。 
これは時間の有る無しではなく人間性の問題だよ。 

○KWaveなんかでも、丸投げではなくても「動きません」→ 「ここがおかしいからこう直せば動くよ」→「動きました。ありがとう」 で、よくあるポカは除くとしても結局丸投げと大差ないんですよね。 わたしがCプログラミングを始めたころはIDEなんて影も形もなくて、 Turbo-Cとか、MS-C用のデバッガであるCodeviewなんかがでたときは 取れないバグなんてなくなるんじゃないかと感じられるくらい 便利になりました。もっともDOSの世界の話なので、ちょっと大きい プログラムを相手にするとメモリ不足でデバッガ経由で起動できなくなる というオチがありましたし、デバッガが便利になってもバグはなくならない。と。

どこへいくC++

C++0x
http://pc11.2ch.net/test/read.cgi/tech/1149440647/

372 【デフォルトの名無しさん】 sage DATE:2007/05/31(木) 07:09:44
内容的には>>360>>364で既出ですが、http://herbsutter.spaces.live.com/より 

New Language Features Voted Into (Draft) C++09 
・Template aliases (aka typedef templates, generalized typedefs) [N2258] 
・Variadic templates (aka "type varargs" for templates) [N2242; see N2087 for a more readable description and rationale] 
・Unicode characters and strings [N2249] 
・Rvalue references [N1952] 


373 【デフォルトの名無しさん】 sage DATE:2007/05/31(木) 16:54:12
へー、N2249入るかもしれないんだ。 
とうとうC++の世界でも明示的にユニコード文字列が扱えるようになるのか。 

374 【デフォルトの名無しさん】 sage DATE:2007/05/31(木) 17:46:31
すると現実の実装では、事実上wchar_tがchar16_tまたはchar32_tと同じ大きさを持つ型 
(当然整数型とwchar_tのようにtypedefではない)という扱いになるんだろうなと思う。 

375 【デフォルトの名無しさん】 sage DATE:2007/05/31(木) 19:57:46
これですな 
ttp://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html 

そのうちstd::u16stringとかstd::u32stringとかもできるんだろか 

376 【373】 sage DATE:2007/06/01(金) 00:57:02
入るかもしれないじゃないや。もう最新のドラフトに入ってるわ。 

JavaとかC#なんかの「文字」(の内部表現)はすでにUnicodeなので それを追いかけるという形なんですかね。 ライブラリをそろえるのは大変だと思うけどどうなんだろう。 wxxxx がそのまま移行するのかな?

新人研修しているんだが
http://pc11.2ch.net/test/read.cgi/prog/1180232556/177

そうそう、研修が終わったので報告しておく。 
人数は19名。その中で12名は特に問題なし。 
そして、3名ほど素質ゼロがおられる。 

びっくりするのはその中で2名は専門学校なり大学で「○○情報学科」等を卒業してきた、ということだ。 
問題ない12名の中には研修に入ってはじめてプログラムに触れた人もいるんだがなw 
卒業させた学校に対して贖罪と賠償を請求してもバチあたらんと思うが、どうよ? 

尚、19名はそれぞれ来週から配属されてゆく。 
CとJavaをやったが、月曜日からVBのヤシもいるのはご愛嬌。 
いきなり客先の連中もいるが、どうなろうと俺はシラン。 
単純に成績で配属先を決められていたが、成績は目立たず素質が高いヤシに関しては自分の部署で確実に確保。 

まったく大学の卒業証書程度にはなんの価値もねーな(笑) 情報なんたら学科卒のわたしも肩身が狭い喃。

千里の途も一歩から

tmtm日記: [メモ] Concepts + Principles 経由で Concepts + Principles - プログラミングの原則 - Concepts + Principles - Top

ここはプログラミングの原則を集める Wiki です。巨人の肩に乗って、 ふつうの人がよいプログラムを書くための指針を集めたいなと思ってます。

すばらしい。 参考書籍に「プログラミング作法」がないのは寂しいな。 何か書いてみるか。

ニコニコ動画に対するスタンス

狐の王国 ニコニコ動画で削除されるアニメ、されないアニメ

概ね主張されていることに賛成なのですが、ひとつ付け加えるならば、 アイドルマスターXENOGLOSSIAの制作がサンライズであることと 無縁ではないと思います。 というのもこの会社は自分が版権持っているもの(有名どころでは ガンダム)についての二次使用はとても厳しいところとして 知られていると記憶しています。 ですので、会社の基本姿勢としてニコニコ動画のようなところに アップロードされるのを看過することはできないというのがあるのではなかろうかと。

2007年06月02日

継続

を、バリケンさんが何か書いている。

わたしが継続を理解するの妨げているもの…それはなんだろうか? (おめーのオツムの出来だというのはなしの方向でお願いします)

で、まつもとさん

各所でのコメントなんかも出揃いつつあるようなんで流れに乗って。 まつもとさんがフェローになることを受けたことについては なんの文句もない(し云う義理も資格もない)のですが、 ちょっと気になったのは

* 楽天でなにするんですか?

    プレスリリースに書いてある以上のことはまだ決まってません。今月中に
    方向性を決める会合を開きます。

* フェローってなんですか?

    なんなんでしょうね。辞書には「特別研究員」と書いてありました。
    「直接お金になる仕事をしなくていい人」という意味だとありがたいなあ。

素でこういうことを云ってたらどうかなあと。 曲りなりにも「契約」するのにその辺明らかにされない状態で 契約書にサインしちゃーいかんでしょう。

歴史は繰り返す…のか?

軍事評論家=佐藤守のブログ日記 - 「俺は、君のためにこそ死にに行く」を見て

演技だけではなく、この種映画全体に、特攻作戦自体についての考察が不足している ように私は思っている。なぜ日本軍パイロットの技量が、米軍に劣っていたのか? についての考察である。
 開戦時にあれほど優秀で、米軍を驚嘆させたわが軍パイロットの技量が、 例えば海軍においては、ミッドウェー海戦の敗北で一挙に優秀なパイロットを 失ったとはいえ、それにしてもあまりにひどすぎるではないか。
 私はこれについて調べたことがあるが、その結果は「パイロット養成計画の不備」 の一語に尽きる。その原因には、日米が戦うという気がまったくなかったからでもあるが、 少なくとも日米開戦が不可避になったと考えられた昭和16年初頭には、 その造成計画を立案しておくべきではなかったか?それがなかったのは、 当時の陸海軍首脳の頭の中に「航空戦力の特質」についての知識と 考察がなかったからだと言える。

263 名前: 卵の名無しさん [sage] 投稿日: 2007/06/02(土) 00:03:39 ID:96+k2gJt0
>>262

件のブログ主が見落としている点として、米軍は中堅パイロットを必ずローテーションで

前線の激務 → 休暇 → 後進の教育 のサイクルが確立されていた。

 一方、我が国の方は中堅パイロットは南太平洋で激務の連続で次々と消耗し櫛の歯が
抜ける様に欠けていった。

 速成教育で養成しようにも、教える側が居なくなったのが、数の差以上に、質の差が
大きくなった要因やね。 

件の映画は多分観ることはないと思うのでどうでもいいのですが、 優秀なパイロットを無為に使いつぶし(まあ戦争やっているので 四の五の云ってられない事情はあるかもしれませんが)、それでいて 後の補充のことも考えていない。 まるでどこかの業界みたいなじゃないですか。

PHP

いろいろ検索ワードを工夫して探してみたのですが、 Rubyistが率先してPHPを貶めているという感じは受けなかったのですが いいワードがあるのかなあ はてなブックマーク - tomisimaのブックマーク / php

んー、なぜに彼の人はRubyistを目の敵にするに至ったのだろうか?

さんだば

窓の杜 - 【特集】「Thunderbird」v2.0対応拡張機能特集 第1回

タスクトレイに収めるアドオンはいいかもしれないので入れてみよう。

ゆとり?

OKWave 漸化式:nCrの計算(C言語)

早速の回答ありがとうございました<_ _> 漸化式とう言葉を今日始めて目にしたのでまだ理解に不足している ところがありまして・・・失礼な質問でしたらすいません><
漸化式について色々調べてみましたがまだ大体の機能・・・みたいな ものしか解らず、詳しい使用法などまだ理解が不足しております。 (数学に関する知識は乏しいです)
プログラムになるとそれをどう組めばいいのか解りませんでした・・・

中学か高校でやらなかったっけ? 「始めて(ママ)目にした」というのはちょっと信じらんない。

FAT COMMA

実装の話ではなくあるべき仕様の話をしています。

失礼しました。 ところで

実装から見て、さほど練られた仕様ではなさそうだということはわかりました。

というのを読んで記憶をたどってみたのですが、 '=>'を指して「ファットカンマ」と呼ぶことがあったように思います。 であるなら、これは(そういう言葉があるかどうか知りませんが) lexical sugar とも云うべきものであって、 MUSHAさんの提示した疑問の状況はある意味想定外だったのではないでしょうか? もちろんそれによって「仕様として練りこみが十分だったのか」 という疑問の回答が得られるわけではありませんが。

念のため書き添えておきますが、けして今の実装にあわせた仕様が 絶対に優れているのだという主張はするつもりはありません。 きっかけとしては、引っかかったわなの仕掛けを知りたかった。 というところでしょうか。

foo => somemethod, bar => hoge なんてあったときに、foo の先を強制的にスカラーコンテキストにするには リンク先にもあるように scalar 演算子を適用するという手段が 取れるとは思いますが、なんつーかこれもいわゆる「暗黒面」の一端という 気がしますね。といって逆にこの演算子の右辺ではスカラーコンテキストが 強制されることになると、scalar 演算子に対応する list 演算子というものはないわけで、これまたちょっと困るねえと (作ればいいというのはとりあえず置いて)。

私は人間であることをやめない。10人全員が助かる方法を考えます

それはどんな方法ですか!?

わかりません…だが考え続けます

「沈黙の艦隊」 第十六巻(オリジナル版)

2007年06月01日

■_ R

Rocco の日記: 2007-5-30 LL TODO

R の本とか出たら、速攻で買うんだけどなぁ。

出てますよ?

■_ 罠に掛かってみる

jijixi's diary - OCaml をお忘れなく , JoCaml 妄想日記 , Perlの罠 - =>とコンテクスト (工夫と趣向と分別と。) , JoCaml 妄想日記その2 , ..
工夫と趣向と分別と。 - 2007-05-30の日記 - Perlの罠 - =>とコンテクスト

これなんですけど、

    case '=':
	s++;
	tmp = *s++;
	if (tmp == '=')
	    Eop(OP_EQ);
	if (tmp == '>')
	    OPERATOR(',');

つーことで構文上は '=>' と ',' は等価 (左辺のbarewordの扱いとかありますけど)なので、 '=>'の右辺にあるからリストコンテキストになるというのは ちょっと違うような気がします。 それを含む全体がリストコンテキストということじゃないかなあ。 ってMUSHAさんがそういう意味で書いていたらごめんなさい。

■_ PHP

そういった意味で、私は
    PHPは案外使える言語 
と言えると思っている。

道具として使えるものであることは同意します。 つかわたしが目にした分では大体において上記のような見方をしていた ように感じるのだけど、このエントリに着いたコメントはちと疑問。

あと、苦言を呈すると RUBY派の人たちってなんでそんなにPHPに噛み付くんだろうって思った。 MacユーザのWindows叩きに似たものを感じて

PHPで困ってないユーザにしてみたら、ひがんでいるように見えなくもないわけで PHPのここがダサイ って内容を書くよりRUBYのここが良いってのを書けばいいのに

なかなかそういうのには出くわさないのが残念

RUBY派のWebサイトでPHPのことを書いていないのがどれほどあるのだろう。 逆にPHP派でRUBYの欠点を書いてあるだろうかとか思うと現状の パワーバランスの理由の言ったんじゃないかと思ったりした。

こういう感じ方をする人もいるのだなあと思った。 まあ自分の観ている範囲が狭いだけかもしれませんけどね。 確かに対案なき批判はあまりほめられたものではないかもしれませんし、 また、PHPの土俵に立つとRuby(RUBYぢゃないよ;-))にしろ、Perlにしろ アドバンテージをとられている状態ではあるでしょう。 もちろんそれぞれの言語を母語のごとく使いこなしている人ならば 何の問題もないかもしれませんが、 『とりあえず自分のホームページで××が作れればいいや』 という人たちはまた事情が違いますしね。

「RUBY派のWebサイト」ということで るるりんに挙げられているところをざっと眺めてみたのですが 「PHPのことを(多分悪意を持って)書いているところ」って 見当たらないのですけど、どこにそんなにあるんでしょうか?

逆方向のPHP派がRubyに対して、というのは多分PHPを使う人たちの主流が、 RubyとかPerlのような言語を使うことを考えていないとか いうことがあるのではないかと考えています。 要するに「客層」が違うのよ。と。 あと Street BASICのごとく、「(言語仕様に)攻撃しやすいネタにあふれている」 というのはあるかもしれませんね。 これはRubyistからに限ったことではありませんけど。

たとえば がるの健忘録 この方はRubyistではありませんが、結構強烈にPHPを批判(攻撃?)しています。 今回の引き金であろう弾さんにしてもRubyistではないですよね。

The World of floting pointed

sumiiの日記 - 浮動小数の世界

PHPの世界続き。「PHPで149999999999を四捨五入したらどうなるか?」

などという話は実はメインではなく (リンク先のトラックバック元でも言われているが)、IEEE 754の64ビット倍精度浮動小数(いわゆる IEEE 754の64ビット倍精度浮動小数(いわゆるdoubleで)

  1. 正確に表現できる最大の整数はいくつか
  2. 正確に表現できる最小の整数はいくつか
  3. 正確に表現できない最小の正整数はいくつか
  4. 正確に表現できない最大の負整数はいくつか

等が真のクイズ。カンニング(検索)は禁止。

追記:条件がきつすぎたので緩和。あと、 つまらない問題は削除。ちなみに、 doubleの指数部は11ビット、仮数は52ビットです (あとの1ビットは符号部)。検索の手間を省略するために一応。

検索の手間を省略するために、ってところに引っ掛けが潜んでいるような 気がしたのだけど勘違い?

1は、 1.11111…1111 (53ビット) × 21023 で、 3は1.11111…1111 (54ビット) × 253 じゃないかなあ。 面倒くさいので実際にどういう値なのかは調べません(笑)

↑CSSで文字の色と背景の色を同じにしてあります。 範囲指定すると反転して読めるようになると思います。 無論ソースを直接見てもかまいませんが (ファイルの先頭のほうにゴミがありますよ?)

odzさんはわたしにとっていい先生だなあ。 odz buffer - reducel/reducer Scheme編

(define (reducel-0 f ls)
  (if (null? (cdr ls))
      (car ls)
      (reducel-0 f (cons (f (car ls) (cadr ls)) (cddr ls)))))

(define (reducer f ls)
  (reducel-1 (lambda (x y) (f y x)) (reverse ls)))

見てすぐに、とはいきませんでしたが こちらのほうが読解はしやすかったと思います。 ちょっと引っかかったのは (reducel-0 f (cons (f (car ls) (cadr ls)) (cddr ls))) のところ。 なぜ f が二回登場するのかが気になってしまいました。 頭がLisp/Scheme向きにできていないらしいです。えぐえぐ。

IronRuby

OPC Diary: IronRubyとマイクロソフト

  1. IronRubyはマイクロソフトのプロジェクトである
  2. Codeplexでソースが公開される
  3. ライセンスはMs-PL(マイクロソフトBSDライセンス)
  4. ソースをフォークしてもかまわない

ふむ。 マイクロソフトBSDライセンスというのは馴染みがないな。 後で調べよう。

GPLv3

オープンソース・ライセンス「GPLv3」の最終草案が公開,正式版は6月29日に:ITpro

草案第4版を公開するにあたり,FSF会長のRichard Stallman氏は以下のように述べている。

 「プログラムにGPLv2を適用し続けても,問題は発生しない。ただしGPLv3に移行すれば, tivoization(TiVo化),デジタル著作権管理(DRM), ソフトウエア特許による脅威といった既存の問題を解消できる」。

最終ドラフトですか。 第一ドラフト(2006年1月)からすると長かったのか短かったのか。 gawkとかsed のライセンスもv3になるんだろうなあ。 ちゃんと内容を読んでおかないといかんな。 しかしタイトルで「オープンソースライセンス」とあるのはいいのだろうか?

ちょっw

Rubyについて Part 27
http://pc11.2ch.net/test/read.cgi/tech/1180031347/194

194 【デフォルトの名無しさん】 sage
楽天フェロー…、それは鉄火場で株いじりする研究 

ひとつさらせば自分をさらす 
ふたつさらせばすべてが見える 
みっつさらせば地獄が見える 
見える見える 墜ちる様 

哭きの竜かいっ!

まつもとさんの件は明日に回そう。


前の月へ 2007年5月
次の月へ 2007年7月

ホームへ


Copyright (C) 2007 KIMURA Koichi (木村浩一)
この文書の無断転載はご遠慮ください(リンクはご自由にどうぞ)。

メールの宛先はこちらkbk AT kt DOT rim DOT or DOT jp