カテゴリー
データ可視化

KalkiCode – 基本的なデータ構造を各種言語でどう書くかや動く図で見せてくれるサイト

Kalkicode は、例示や図によるプログラミングサンプルを、プログラミング上の問題(基本的なアルゴリズムやウェブサービス技術)と複数の言語のそれぞれの切り口から並べて示そうとしている、教育サイトです。

配列・行列・リスト・ツリー・グラフ・再帰、などさまざまなデータ構造・アルゴリズム毎に分けられた章を開くと、

データ構造 and/or アルゴリズムの解説に、それを実装したコードサンプルが10前後のプログラミング言語で用意され、コードの実行結果、図、などが続きます。

ものによっては動的にデータ構造の変化を見せてくれたりもします。

こちらは平衡二分探索木にノードを追加したり削除したりする際の動きをアニメーションで表示しているところ。

双方向リンクリストへの追加や削除とか

環状単方向リストへの追加と削除とか

プログラミングの学習をする際に、理解を助けてくれそうなコンテンツがたくさんあります。

10前後のプログラミング言語で同じことを書く、というのもこれだけ多くの項目となると大変なことだと思います。見た感じ、ある程度自動で変換してるのかなとも思いましたが。

# 同じサイト内に Java-to-PHP converter なんてのもあったので、全部じゃないにしてもある程度横展開は自動なのかもしれません。

via Hacker News

カテゴリー
技術

Gently down the stream – Apache Kafka の動く絵本

Gently Down the Streamは、Apache Kafka がどういうものであるかを紹介する、動く電子絵本です。

Kafka は、大量のイベントストリームを処理するためのオープンソースのプラットフォームで、もともとは LinkedIn が大量のユーザーの行動データをリアルタイムに処理分析してニュース通知などに反映する目的で作られたものだそうです。メッセージキューと似てるように聞こえますが、処理量や処理速度に対応するために特化改良されているそう。

自分も一見では「メッセージキューのツール?」ぐらいにしか思っていなかったので、Kafka だからこそできること、みたいなのを説明するためにこの絵本が生まれたのかもしれません。

ストーリーは、森に住むカワウソたちがお互いの家族間でニュースを広めあい共有するという世界観の中で、家族が増えたり共有したい情報がどんどん増えていくことで様々な問題が起こるところから、

家族が直接ニュースを伝えに行き来するところから、ニュースを伝えるメッセンジャーの導入。そして森の中の大河である Kafka川を、支流ごとに Topic に分け、そこで Producer と Consumer に分かれてイベントの投入と受け取りを分離する、Topic に流れるイベントがさらに増大した際に Topic を分割する Partitions 、といった概念を、カワウソで説明してくれます。

「これで完全に解ったのか?」と言われるとそこまで自信はないのですが、Kafka で使われる概念や用語について、読む前よりは少し知ることができたように思います。

なお、Apache Kafka については以下の記事も参考にしました。

カテゴリー
ゲーム

Oh My Git! – git の使い方を学べるゲーム

Oh My Git! は、バージョン管理ツール git の使い方を学ぶためのゲームです。

中央にgitツリーのグラフが表示され、手元にはgitコマンドを表すカードが配られます。

カードを使わずに右側のターミナルでコマンドライン操作することも可能。お題で出てきた課題を満たすためのカード/コマンドを正しく実行すると、右側の達成項目が緑に反転し、すべて達成すればそのレベルはクリアです。

commit を指定し、そこにカードを捨てることでカード上のコマンドを適用。

levels にあるステージ一覧から、好きな項目について遊ぶことが可能です。

カードを使っても解けますが、コマンドラインで解くと右端のボックスを黄色にすることができます。

ソースコードは GitHub で公開されていて、バイナリ版も Windows, MacOS, Linux 向けに提供されています。

テキストファイルで新たなlevelを自作することも可能で、必要な学習項目が無ければ追加することもできるようです。

作者の二人による紹介動画

git を学ぶためのサイトはこれまでもいろいろ出ています。それだけ初めて使う時は難しさがあるんでしょうね。また、普段gitを使っていても自分が日常的に使わないコマンドについては全く知らない、なんてこともあるので、このようにlevelで網羅されているとそういった知らないコマンドの勉強にもなりそうです。

via Hacker News