こんにちは。シーケンスについて一段落し、ついに本筋っぽい個所に入ってきます。 関数型プログラミング=FPとして以後書きます。FPによるコードが書きやすく、読みやすく、テストしやすく、再利用しやすい理由として、 下記の理由があげられています。 …
こんにちは。そろそろ、書籍も説明的な内容が増えてきたので単にべた書きではなく、 理解したことをまとめていく方針を取ります。 1.遅延シーケンスと無限シーケンス JavaにあってClojureにないシーケンスの一番の特徴がこの遅延シーケンスと無限シーケンス…
では、続きます。 前回のClojure記事にもあるように、環境がSublime Text2に移ったのでかなり快適になっています。Clojureではシーケンスに対する関数が多くありますが、それらは下記のカテゴリに分類されるとのこと。 シーケンスを生成する関数 シーケンス…
こんにちは。Clojureでの環境問題も解決したので一度Kafkaの方も進めておきます。 概要がわかったので、実際に動かしてみようとKafkaのサイトに向かったところ・・・最新版の0.8.0系のアーカイブが存在しないという状態でした。0.8.0のページ。ダウンロード…
こんにちは。今までREPLをコマンドラインで起動して使っていましたが、 さすがに効率が悪いようになってきたため、一度エディタから直接呼べるように環境を整えます。というわけで、Sublime Text2にREPLのプラグインを導入してみます。ですが、まずSublime T…
こんにちは。ようやく1ページ全てまとめ終わったので、 最後にまとめ投稿として投稿しておきます。尚、ページは下記です。 http://kafka.apache.org/07/design.html========== 1.何故Kafkaは作られたのか? 元々はLinkedInのActivity StreamとDat…
こんにちは。今回は実際分散協調をどうやっているかという話。 ある意味分散システムとしてのコアです。 19.分散方式 以後、BrokerとConsumerの協調に用いるZookeeperのディレクトリ構成とアルゴリズムについて記述する。 Zookeeper上のディレクトリ構成判例…
こんにちは。今日は実際にメッセージを保存しているログファイルの形式と形態について述べた章になります。 これまで述べられたメッセージがどういう形式でディスク上に保存されているかですね。 18.ログ "my_topic"というトピック名称を持つ2パーティション…
こんにちは。APIの確認もすみ、更に先に進みます。 15.ネットワーク層 ネットワーク層の構成は単純なNIOサーバであるため詳細な説明は省略する。 sendfileの実装はMessageSet#writeToメソッドを用いて行われる。 FileChannel#transferToメソッドにおいてFile…
今回からは実際のAPIを確認していく形になります。 13.Producer側のAPI Producer側のAPIは以下の2つの低レベルAPIをラップしている。 kafka.producer.SyncProducer kafka.producer.async.AsyncProducer class Producer { /* Sends the data, partitioned by…
こんにちは。ついに設計の大方針の内容が終わり、 個々のプロセスの設計の内容に入っていくようです。 11.Producer Producerプロセスの自動ロードバランシング Kafkaは、ProducerのTCP接続のバランスをとるための専用ロードバランサを使用するために クライ…
こんにちは。では続きに。 10.メッセージ消費側駆動の状態管理方式 プッシュ対プル これまでのBroker、Consumer側の話に関連する質問として、 Broker側がデータをpushするのか、Consumer側がメッセージをpullするのか、がある。Kafkaはデータの流れとして下…
こんにちは。とりあえず続きです。 9.エンドツーエンドのバッチ圧縮 多くの場合、ボトルネックはCPUではなくネットワークになる。 特にデータセンター間でメッセージを転送する必要があるネットワークトポロジを組んでいる場合は。もちろん、ユーザはKafkaの…
こんにちは。とりあえず続きです。 10.メッセージ消費側駆動の状態管理方式 メッセージ配信セマンティクス これまでからわかるように、メッセージ配信の保証方式として下記の3パターンが考えられる。 1回以下:前述した第1のケース。メッセージは提供後す…
1年位間があいてしまっていますが、ベースデザインの章の続きを読んでみました。 あと、個々の言葉を訳しても時間がかかるので、要点のみ抽出してとりあえず最後まで読み切ります。尚、ページ自体は下記の場所に移動していました。 http://kafka.apache.org…
こんにちは。連休が挟まったということで若干間があいていますが、続けます。で、この間にプログラミングClojureの第2版が発売されました。プログラミングClojure 第2版作者: Stuart Halloway and Aaron Bedra,川合史朗出版社/メーカー: オーム社発売日: 20…
こんにちは。とりあえず、コンパイルができなかった問題をさらに追ってみます。この辺のページを確認したところ、原因は「Classファイルの出力先ディレクトリが存在しないから」でした。 ・・・というか、である調でブログを書くこと自体が結構厳しいことに…
ClojureのオブジェクトはJavaに対応するものがあればそのインタフェースを実装している。 Clojureのデータ構造はJavaのコレクションAPIを実装している Clojureの関数はRunnableとCallableを実装している ・・・後者は中々。このあたりやはり並列実行用の言語…
次は「ファブラボ鎌倉の挑戦」。 1.講演内容 結論としては、 「今後ものづくりにソフトウェアとハードウェアの垣根はなくなる。 ソフトウェアでハードも作れるようになる。」15年に一度、技術が社会とであう。 パーソナルコンピュータ(1980) インターネッ…
こんにちは。今日はQConTokyo2013に来ています。 まずは、KeyNote1 プログラミング・スタイルと私たちの脳」から。とりあえず講演の中のメモをそのまま貼り付けたもののため、 内容的なまとまりはいまいちですし、抜けもあるとは思いますが、とりあえずとし…
こんにちは。徐々に書けることが広がってきてはいますが、まだ4分の1。 とりあえず地道に続けます。前章で述べたJavaの呼び出しで述べた方法を使ってJavaを呼ぶのがClojureでは普通。 これで基本的には十分に高速のはずだが、さらに高速化を行うことができ…
こんにちは。とりあえず構文の説明が終わり、後は実際に機能をコードを書きながら確認していく形になりそうですね。ClojureコードはJavaバイトコードに直接コンパイルされ、Javaを呼び出す際に変換が挟まれることはない。 Clojureは直接JavaのAPIを活用でき…
こんにちは。ついに2章も最後まで来た形になります。 とりあえず概念が大量に出てきたのにたいして書いた量がいまいち不足しているため消化不良な感もありますが・・・ まぁ、それはその先の章でも書き続けることで対処できるでしょう。では、続きです。メ…
というわけで、続きです。これまで見てきたが、forループがないし、直接変更可能な変数というものも登場していない。 単に、関数とインプット、アウトプットがあるだけという非常にシンプルなIPOを示すのみとなっている。・・・というのがJava辺りから入った…
なんか徐々にまともなプログラムを書くためのパーツがそろってきたように思える今日この頃です。 では、続きです。Clojureではフロー制御の方式はif、do、loop/recurでほとんど賄える。 1.ifによる分岐 Clojureのifは最初の引数を評価し、それが論理的に真で…
では、続きです。オブジェクトをdefやdefnで定義するとオブジェクトは指定した名前にバインドされる。 下記の例ではuser/fooに10がバインドされる。 user=> (def foo 10) #'user/foo user=> foo 10 user=> user/foo 10 ここで束縛される場所は「var」と呼ば…
こんにちは。 では、さっそく実際のコードを書いてみましょう。今回の範囲は「2.2 リーダマクロ」「2.3 関数」です。 この辺を突破すれば多少は読めるのではないかと期待しながら入ります。。。 2.2 リーダマクロ リーダマクロ≠マクロであり、 Clojure…
こんにちは。 では、さっそく実際のコードを書いてみましょう。今回の範囲は「2.1 フォーム」です。 「実際にClojureでどうやって記述するか?」の章で、多分この辺が中途半端だったので途中からわけわからくなっていました。 そのため、地道に。 1.フォ…
最近Stormのコードを読んでいるのですが、Clojureの基本文法が曖昧なために 結局深いところは読み解けないという状態に陥っている今日この頃です。というわけで、プログラミングClojureを使って 実際にClojureのコードを書いて、理解を深めることにします・…
こんにちは。 なんか1年以上忘れ去っていましたが、 最近StormのClojureコードを読むことが増えてきましたので、とりあえずゆるゆると再開してみます。 1.まず重要なのはClojureのコードです これはStormを扱う上でいうまでもない内容になりますね。 ・・・…