back numbers

1.01.2013

あけましておめでとうございます

C83 東Y16a COMFRKにお越し頂いた皆さま、ありがとうございました。 読み手の皆さまあってのCOMFRKですが、今後も基本方針『書き手が読みたい記事を書く』で邁進したいと思います。次はVOL.5の他にVOL.4.5(VOL.4の加筆版)を予定しております。本年もどうぞよろしくお願い申し上げます。(VOL.4をお持ち頂いた方には無料交換を予定)

忘年会は中華鍋でしたが、新年会はチャンコ鍋に行きたいですね!(mjsp始めも考えないと)

12.31.2012

COMFRK VOL.4

今回は例年にないくらいギリギリですが新刊(VOL.4)出します…

C83 三日目 東Y16a COMFRK
持込物:COMFRK VOL.2,3,4(既刊は少部数) 各300円
*) 既刊のDL版はFreeです。

今回はScala,Clojure,Javascript,Prologと人気の言語が揃った内容です。 あと数値計算の話も個人的には凄く読みたい内容なので今から愉しみです。

それから当日は終了後にCOMFRK打ち上げです。参加資格とか無いので、 執筆の関係無しに興味ある方は15時くらいにサークルまでお越し下さい。

1.04.2012

はい、おめでとう

気が付いたら2012年になってましたね、さぞかしおめでたいことでございましょう。

コミケ前日からちょい体調悪かったのを"成せばなる!"の精神で押し通し、三日目撤収し打ち上げしてる段階で身体はもう限界っぽかったわけですが、帰宅したらもう完全に風邪をこじらせたみたいな具合で寝正月を満喫しました。今更ながらバリキ・ドリンクの一本や二本は飲んでおくべきだったと後悔しております。それはともかく、本年もCOMFRKをよろしくお願い申し上げます。
VOL.3の在庫はしばらくありませんがVOL.2は未だかなりありますよ。

床に伏しているだけなら本も読めようものですが、文字通り寝てたので去年の積読書も手に着かず…やろうと思ったことも出来ず、万事の前提にまず健康ありきと痛感した次第…
皆さん本当に健康に生きましょうね。

未だ"完全復活!(CV:玄田哲章)"ではないですが、明日から仕事だし、新年のご挨拶だけでも、と。

12.29.2011

COMFRK VOL.3 Advent Calendar 3

今年はこれでおしまいだからって、まだまだCOMFRKは終わりません。
だからこれはCOMFRK VOL.3 Advent Calendarの記事。

みなさんエミュレータとシミュレータの区別は付きますか?
こっちがエミュレータで、こっちはシミュレータです。計算機のエミュレータはよく見掛けますが、計算機のシミュレータはどうでしょう?これとかがそうですね。

COMFRKも毎回記事集めやネタ出しに苦労しているので、今回から連載を始めることにしました。連載を通しての題材は、そう計算機のシミュレータを作っていこう!です。これはその一回目。

COMFRK VOL.3 Advent Calendar 2

忘れてたわけじゃないけれど、忘れていることを忘れていただけです。
だからこれはCOMFRK VOL.3 Advent Calendarの記事。

プログラマは大きく分けてREALな型とINTEGERな型に分けられるのは皆さんよくご存知ですね?INTEGERなプログラミングと比較してREALな方は泥くさい部分が少なくありません。もちろん両者は互いに手を取り合うべき存在なわけですが、ことREALな方は計算機の上で論理的に考えるよりも、黒板の前で筋肉を弾ませることを好むため、なかなか上手くいきません。
そんなREALなプログラミングの四方山話…

12.25.2011

COMFRK VOL. 3 Advent Calendar

今年は出ないかと思われた(思った)COMFRKですが、出る(出す)ようです。
だからこれはCOMFRK VOL.3 Advent Calendarの記事。

突然ですがProlog復興会議準備会というイベントがあります!
twitter-id: TakaoOzaki=サンというPrologに対し並々ならぬ愛情をお持ち(のように見受けられる)方が主催で、twitter-id: Nikoriks=サンというこれまたPrologに対して多大な貢献をされている方もいらっしゃるようです。Prologに関心があれば参加して損は無いんじゃないかしら?

ところで皆=サンにとってProlog=サンって何でしょうか?たぶん多くの人にとって思うようにならないニクい奴って感じなんじゃないですか?僕は一時期ですが真面目な交際をしていました。結局この関係は長続きせず、今はまあ友達以上、恋人未満、むしろ友達です。そもそも僕が講義をサボっていたら偶然出会った先輩、それがProlog=サンなんです。青春ですね。

そんなProlog=サンの良い面や可能性を集めてファンブックを作ろうかと思ったんですが、そういうペーパーはかつて山のように書かれていたし今更おもしろく無いなと気付きました。だから今回は、ちょっと気恥しいんだけどProlog=サンと僕の思い出について書いてみます。青臭いです。正直なところ書くのが辛い。だけど僕はもう大人なんだから一度ケリを着けなきゃいけない…、そう考えて突き通しました。

というわけでCOMFRK VOL.3ではPrologと僕の青春の何ページかを書きます。

11.09.2011

ぼくがかんがえたさいきょうの10さつ

@natsutanさんが言ってたから考えました。数値計算篇。

1. 数値計算の常識

計算機の小数点と数学の実数は全く別物だということを忘れがち。
また所詮近似だからと言って誤差が野放しだと思っても大間違い。
過大評価も過少評価もいけません。
本当の数値計算のはなしをしよう..

2. HP-15C Advanced Functions Handbook

基本を押さえたら実践、の前に歴史から学ぼう。
HP-15Cという古の名機を手に、限られた資源の使い方を知る。
ちなみにこっちが本機のマニュアル。

3. Modern Fortran Explained

過去だけに囚われていては人類は進歩しない!
現代を生きよう、これが明日から諸君の武器となる。
Fortran2008に準拠した言語詳説。
配列演算も演算子オーバーロードもローカルビューもアリだ。

4. Fortran 77 応用ソフトウェア作成技法

これで準備は整った、戦争だ!と思った貴様は甘い!!
何故この時代にFortranがあるのかを少しは考えてみろ。
過去の遺産があるから仕方無くに決まってるだろうが!
静的解析が容易?Cと比較すればそうだろう..
だがな!だったらどうして強い型付けの関数型言語でない?
諸君の仕事がたとえ現代兵器でなされようとも、
戦場は弓矢や落とし穴といったベトコン仕込みの罠で一杯だ。
だからリストやツリーのデータ構造がどう定義出来るかなんて話じゃなく、
どうDOするのかってことを身体で憶えるんだ。

5. Theoretical Numerical Analysis

悪い兵士は居ない。居るのは馬鹿な指揮官だ。
武器や技術が幾ら凄かろうと正しい判断が伴わなければ無意味だ。
生き残りたければ各自が有能な指揮官となって戦わねばならん!
プログラムの意味論が領域理論やラムダ計算を基礎とするように、
数値計算もまた線形代数と関数空間を基礎としていることを知れ。

6. Numerical High Performance Computers

ようこそ戦場へ!!だがまだここは前線じゃない。
諸君にはこれより奥地の湿地帯で展開している部隊に物資を届けてもらう。
まずは我々がこれまでどのようにこの地で戦ってきたかを知ってもらおう。

7. Iterative Methods for Sparse Linear Systems

ヒーホー撃てば当たるぜ!!ここじゃあ何でもヤったモン勝ちよお!
新しい関数系や補間法、補空間なんでも構わねぇ、試せばザッツライト。
大体は何かに当たるからそれでオールクリアだ畜生めっ!!

8. Direct Methods for Sparse Linear Systems

よくここまで辿り着いたな、物資は確かに受け取った。礼を言うぞ。
諸君の勇気をたたえ、ここは一つとっておきの武器をくれてやろう。
コイツを使えば原理的にはどんな敵も倒せる、計算機が十分タフならな。
後方の奴らはこんなもん使えないとほざきやがるがそんなことはない。
コイツこそが使えるんだ!上手く使えば幾らだって速くなる!
では敵地に単独潜入している人物にこの封筒を届けてくれ。検討を祈る。

9. Graph Algorithms in the Language of Linear Algebra

オットあぶないぜ兄ちゃん、もう一歩で竹ヤリが飛び出してくらぁ。
ここは四方敵だらけの未踏の地さ、味方は他にゃあ居ないぜ。
フムなるほど、情報ありがとよ。
礼と言っちゃあなんだが、ここで知ったことを教えるよ。
グラフを線形代数で考えるんだ。
場合によっちゃあ必要なメモリサイズやアクセスパターンが分かる。
いつか役に立つかも知れねぇよ。

10. スーパーコンピュータを20万円で創る

そして伝説へ..


どうしてこうなった?
もっとFEMとか流行の粒子法とか方法論をカバーすれば良かったかも。
あと数値計算で大事な非線形へのアプローチとか。
数値計算と言えばNumerical Recipesも原著3版は良くなってるらしいです。
ただ個人的にああいったカタログみたいなの薦めるのは気が引けます。
基礎を知らないと、式を追ったところでよく分からないと思うので。

8.04.2011

Realtek8192se on Linux 2.6.40-

Kernelアップデートしたら蟹のWirelessドライバが刺さった。
TSFタイムスタンプをMPDU(MAC Protocol Data Unit)の先頭で与える事を示すためにRX_FLAG_TSFTを使っているのが(意図が不明瞭で)ダメらしい。これはRX_FLAG_MACTIME_MPDUに置き換えなさいとのこと。

以上のことは別に最近の話では無いみたいだけどRealtekにあるドライバには反映されていない。少くとも8192seは。まぁすぐに修正されるだろうけど。

2.13.2011

COMFRK FREE DL

vol. 2が出たらvol. 1は公開しますと宣言しましたが今まで遅れて後悔しています。
宣言があっても実装が違うというリアルが現実を浸食した!!
COMFRK VOL. 1

2.03.2011

NAMIKI 2

627
712 27 42 47
810 10 27 40 42 54
927 57
1042
1117 42
1217 42
1317 42
1417 52
1517 33 42
1617 42 42
1717 42
1817 37 57
1914 22 37
2007 22 47
2112 42
2207 32

12.29.2010

この先生きのこるTLS

C++ Advent Calendar jp 2010の記事です。

並列性の導入に伴うメモリモデルの変更についてCryoliteさんが丁寧な説明を書いてくれてますから是非読みましょう。時代は並列です。それもマルチホストやマルチノードではなくて、共有メモリ型のマルチプロセッサ(マルチコア)です。ふらっと電器店に入ったパウリ体質の親父さんが4-core(論理)マシンを数万円で手に入れてしまえるわけですから、並列性を考えてプログラミングしないわけがありません。

ところで並列ってどうして必要なんですか?パフォーマンスです。一口にパフォーマンスと言ってもMan-Machine Interactionの応答パフォーマンスから、CAEシミュレーションや健康診断の結果待ちまで色々なものがありますが、回路の遊び時間を減らし、処理の待ちを減らそうというのが基本的なモチベーションです。

だからおまえはまずlock-freeな実装を考えるんだ!待たせるな!!そういうわけでyamasaさんの記事を読みましょう。

それで僕です。みんなちょっと待て、C++0xで明日の生活を支えることは難しいぞ。だから今日は、昨日から使えていたC++0xの機能Thread-Local Storage(以下TLS)のお話です。

まずTLSって何かと言うと、スレッド毎に個別に持ってるストレージです、まんまだけど。コレどうして要るのかって言うと、スレッド毎にスタックがあるんだからソッチで持ってよ!!とかそういう単純な話です。
「おいィ?メモリ空間共有してるのがスレッドのメリットだろ。
 なんでプロセスみたいな事するんだ!?」

それは一理あるんですけれど残り九十九理はないですね。おまえはコピー持つなら必ずフォークするのかとかそういう。で、使い方なんですけどとても簡単です。TLSとして扱いたいデータ(PODに限る)に thread_local と付けるだけです。
thread_local int x; // おまえはスレッド毎に保持される
ちょっと注意しておかないといけないのは、初期化忘れたら怖いよ?泣くよ?ということです。あとまあPODじゃないと困るとかいうのは、それこそCryoliteさんの記事よく読みましょう。

ちなみにC++0xではthread_localですけど、大抵の処理系で以前からサポートされています。!!yamasa さんから指摘頂きましたが、C++0x以降はPODでない変数もTLSとなる(N3225 3.7.2 Thread storage duration参照)ので以下の内容はC++0x以前の話です。!!
+--------------------+--------------------+--------------------+
| GNU/Sun | Intel/MS | C++0x |
+--------------------+--------------------+--------------------+
| __thread | __declspec(thread) | thread_local |
+--------------------+--------------------+--------------------+

それで実際(僕が)よく見るケースなんですけど、こんな感じのコードがあって..
void func(int a) {
static Hoge hoge;
// 以下、数百行のナンバークランチが続く
}

これでfuncのcallerをOpenMP化したい時とか困りますよね。しかもfuncが1つや2つじゃなくていーっぱいあると、ほんとヤダなーって感じです。でもhogeはPODじゃないんで(!!C++0x以前だと!!)TLS化出来ないんですよ。かと言ってhogeを触ってるところ全てでlockしてたらヤバい、遅くて死ぬ。しかし並列版funcを用意する気がとても起きない(or優先順位が低い)。そんな時はこうすると良いですね。
#define hoge _hogeLocal_()
thread_local Hoge *gl_hoge = static_cast<Hoge *>(0);
Hoge &_hogeLocal_() {
if (!gl_hoge) {
// LOCKしてnew
}
return *gl_hoge;
}
void func(int a) {
//static Hoge hoge;
// 以下、コードは弄らない
}
#undef hoge

まあ別に面白いコードでも何でも無い。だがこれでこの先生きのこることができる。精々明後日までだろうが..

ところでこれからのクラス設計という観点ではcoiledcoilさんの記事など参考になりますね、読みましょう。!!それからC++0xでTLSばんじゃ〜いしても、コンストラクタにロックなんて無いから安心して心配しろ、泣くぞ(3.6.2 Initialization of non-local variables参照)!!

それでは次の方、良いお年を。

12.26.2010

COMFRK vol. 2

夏に引き続き冬も出しマス、そういうマスが発見されました。
名前: COMFRK
日時: 12/31(金) 三日目
場所: 東ヘ51a
内容: 新刊 COMFRK vol. 2
既刊 COMFRK vol. 1
価格: 各300円
新刊の内容は..

  1. Prologressive Meta-ル by m0h1can

  2. なれる!?C++0x PG ~ムーブセマンティクス編~ by lyrical logical

  3. 至極簡単なメモリプール by cubicdaiya

  4. 型理論におけるパラドクス by ranha

  5. ATiの職人技が現代に息衝くこだわりGPGPU by m0h1can

  6. Game Seeker vol. 1&2 by mascalade


を予定していますが、まだ編集を終えてないので必死です。

なお既刊はデジタル版(PDF)を COMFRK にて無料公開します。

12.08.2010

プログラマが予約しておくべき本10冊

未だ無い本だからテキトーな事が書ける。大天才!



…まあつまり、自分が読みたい本のリストってことだ。

8.30.2010

COMFRKはKindleでも読めます!

comfrk_on_kindle

Kindle向けに組版しないと壊滅的な読み辛さってことは分かった。

8.29.2010

C78おつかれさまでした

http://comfrk.info/

ギリギリまで仕事で、学部時代の実験レポートを思い出させる過酷な作業の末、関係各位の協力によって前日の夜八時頃に無事製本を終えた50部の創刊号たちは、この訳が分からない雑誌だれ得ですか?という予想とは裏腹に、午後1時を待たずして完売してしまうという…

次は既刊とVOL.2を予定しておりますのでよろしくお願いします。

VOL.2予告

  • エヴェレット解釈によると、我々の宇宙と平行してC++0xの別の仕様が存在するという…。そこではConceptが生き残っていた!?

  • メタプログラミングRubyという本が売れているそうなので、メタプログラミングPrologという本も売れるんじゃないですかね?

  • ???


あと執筆者は随時募集しております。巻頭漫画の枠がまだ空いているので漫画が描ける人を強く希望します!!

8.01.2010

COMFRK vol. 1

紆余曲折あって今年は転職した私ですが、それとは何の関係も無くC78にサークル参加します。既に売り子は確保出来ていますいませんが、コスプレして手伝いたいというヴァーチャルな方がおられましたら twitter-id: m0h1can までDM下さい。

名前: COMFRK
日時: 8/14(土) 二日目
場所: 東ア47a
内容: 雑誌1部 COMFRK vol. 1
価格: 300円

何気にまだ確定してない記事があって編集長としては心穏やかではないのですが、少くとも創刊号が落ちることは無さそうです…

1. 夏休み子供λ相談室 by ranha
2. Haskellコミュニティ探訪 - 処理系とライブラリを中心にして - by shelarcy
3. 差分のアルゴリズム by cubicdaiya
4. メインメモリアクセスマニュアル by nish
5. C++0xの空、Variadic Templatesの夏 by lyrical logical
6. PrologでSchemeの操作的意味論を実装 by zick
7. ゲームオーバーのすゝめ by mascalade

当日はranhaさんがウェイトリー家に生まれた双子の子供のうち異次元の血が濃い方のコスプレをするそうなので、深きものどもとか来ると良いよ。

12.31.2009

The End of 2009

コミケから帰ってきて身体がクタクタだし大掃除が出来なかったしお腹へったしシュタインズゲートをやれなかったしロクでもありませんね。じゃあ今年は何がロクだったかなと振り返ってみたところ、SchwartzのDistributionやScattering Theoryが使えるようになったのは良かったなと思いますね。そして今年も佐藤超関数は理解できなかった…。とりあえず岡潔の多変数関数論を読み始めたので、来年は何とかしたい…。

そうそう、今年は仕事を辞めた一年になったので、来年は仕事を始めた一年になると良いですね。欲を言えば、仕事をせずに暮せた一年になるほうがもっと良いですけど。

12.27.2009

Reading The Craft of Prolog

The Craft of Prologを読んでProlog的テクニックを学ぼうという集りがありました。
高等魔術の教理と祭儀

当日つかったスライドです。本を読む上で道案内になれば幸いです。


スライドを見ながら、あーだこーだらむだと話していると大体16時過ぎには終わってしまったので、後はかなり自由なトーキングセッションとなってしまい、ハイ、その辺は準備が不十分だったなーと痛感しています。ごめんなさい。

ranhaさんが、式は戻り値ほしーと言ってましたがPrologは記号処理をしたいのであって数値計算をしたいわけじゃないのでソレです。つまり、

?- X = 1 + 1.
X = 1 + 1.

?- X is 1 + 1.
X = 2.

:- op(500, xfy, +).
:- op(500, yfx, -).
C is A + B :- prim_add(A, B, C).
C is A - B :- prim_sub(A, B, C).

ということになっていて、計算の開始を指示しているのはis/2述語です。導出が始まると+-*/などの演算子はラベルのようなもので、prim_add/3述語(これは仮想的な述語ですが)のような処理系のプリミティブにぶつかると値が決まるという感じです。is/2をユーザ定義で勝手に拡張しても良い(arithmetic_function/1などで追加出来ます)のですが、実際はisp/2やism/2などユーザ側で独自なis/2述語を定義します。多項式演算ライブラリなどの実装で使われる場合が多いです。

kinabaさんが穴のある構造を使ったのってもっと無いかなー、と言ってたのですが、それは僕も探しているので思い付いたら教えて欲しいです。

12.24.2009

筑波にお年玉あらため落とし本

筑波というガイコクには、東京国と比べるとそれは酷い生活環境を強いられる恵まれない子が沢山居ると聞きました。だから僕は、お正月になったら筑波という隣のガイコクに行って、彼等には高くて手の出せないような本を恵んで、やがて彼等が筑波を豊かな国に出来る立派なオトナになる手助けをしたいと考えました。お返しに僕は、ランランという量がやたらと多い現地の食べ物をご馳走になろうと思います。

本当は部屋の本棚から本が溢れて仕方無いので本を譲りたいですが、面倒くさがり屋さんなので郵送なんかする気はありませんし、直接持って行くので欲しい人が居たら探して襲って奪って下さい。既に先約済みの本もあります。別にランランをご馳走しなく構いません。僕はオトナです。


シリーズ物その4が無いのは欠品ではなくて、そもそも発刊されて無いんです!どうしてこうなった…


日程: 2/1(月)
流れ: 午後に筑波に着いて、だらだら過ごして、夜RanRan食べて帰る

12.23.2009

Fourier on Hilbert

前回の続き

果たしてFourierの着想は妥当なものだったのでしょうか?得られた係数と再構成された関数から、これを確認してみましょう。



現代的な立場で言うと、これは丁度の関数に限定した場合のみ有効です。係数を求めるのに使った正弦関数はとしてスケールすることで正規直交系を構成し、フーリエ級数とフーリエ係数は次のように与えられます。



さて、Fourierはこの手法を一歩進めて次のように考えたのではないでしょうか。三角関数の周期を[0,π]に限定しなければ、より広い問題に適用できるのではないか?正弦関数による直交関係が有効であれば、余弦関数が有効な場合もあるのではないか?1807年にFourierは仏科学アカデミーに提出した論文において、積分区間[-π,π]で正弦関数と余弦関数を重ね合わせることで、関数の級数展開が可能であると述べます。つまり正規直交系として、



を選び、この関数が供える偶奇性を利用して、次のような展開を得たのです。



この時、展開した係数は次で与えられます。



ここで現代的な見通しの為に少し表示を変えることにしましょう。先の直交系はとまとめて書く事が出来ますから、直交関係はとなりますね。Fourierの対応は次のように改めましょう。



当時既にオイラーの関係式は広く知られていましたが、これを使えば先程の正規直交系はとなります。直交関係はヒルベルト空間での内積を考えることで解決します。



これで複素領域まで広げたヒルベルト空間の関数についてFourierの対応を述べることが出来ます。



ところでFourierは熱方程式を考えていた為に正規直交系として正弦関数を発見しましたが(Fourierの研究の後にRayleighも音に関する研究から余弦関数による展開を発見しています)、他の正規直交系は無いのでしょうか?工学の分野では有限要素法などで利用する直交系にLegendre多項式があります。関数列からGram-Schmidtの方法を利用して直交した基底関数列を構成することが可能で、こうして得られた正規直交系がLegendre多項式です。直交関係は直接計算によってと確認できます。これを利用した場合にFourierの対応が有効な関数はです。

to be continued..

tags

Profile

Taito, Tokyo, Japan
明けども明けども次の埒
hiro.kosh@gmail.com