2011年12月19日月曜日

Nimrod is elegant


全国の Nimrod ファンのみなさんこんにちは。
Nimrod Advent Calendar の 15日目を担当している、@takano32 a.k.a. TAKANO Mitsuhiro です。


Nimrodは美しい言語です

  • マクロは構文解析木の構築に欠かせないパラダイムです。Nimrodはメタプログラミングにマクロの他のスタイルを併用する必要がありません。
  • マクロはNimrod自身の文法を変えることはできないようにしてあります。Nimrodの文法は充分に柔軟だからです。
  • 複文はインデントによってそれぞれの組みにわけますが、複文自体は複数行にまたがっても大丈夫です。インデントは必ずしもハードタブで行う必要はなく、コンパイラはいつもあなたに合わせたインデントを考慮してくれます。

Nimrod plays nice with others


全国の Nimrod ファンのみなさんこんにちは。
Nimrod Advent Calendar の 12日目を担当している、@takano32 a.k.a. TAKANO Mitsuhiro です。


今回はNimrodの `Nimrod plays nice with others'(他との協調性) についての文章を翻訳してみます。

Nimrodはさまざまなプロダクトと親和性があります

  • NimrodのコンパイラはWindows、Linux、BSD、そしてMac OS Xで動作します。他のプラットフォームに移植することも簡単です。
  • GTK2やWindows APIやPOSIX API、それからOpenGLやSDLにCairoなどのマルチメディア分野やPython、Lua、TCLなどの言語にもバインディングが用意されています。X11やlibzipやPRCEも扱えますし、ODBCやlibcurlやMySQLやSQLiteのバインディングも用意されています。
  • C言語によって書かれたプログラムをNimrodのコードに変換するユーティリティも用意されています。c2nimを用いれば新しいC言語向けのライブラリのバインディングを簡単に生成することができます。
  • Pascal言語によって書かれたプログラムをNimrodのコードに変換するユーティリティもあります。これは Object Pascal の大半の仕様に対応しており、かなりのコードをNimrodのコードに変換することができます!

2011年12月14日水曜日

Nimrod is expressive


全国の Nimrod ファンのみなさんこんにちは。
Nimrod Advent Calendar の 14日目を担当している、@takano32 a.k.a. TAKANO Mitsuhiro です。


今回はNimrodは効率的 - Prologueの続きとして、Nimrodの二番目の特徴としてあげられている `Expressive' についての文章を翻訳してみます。

Nimrodはとても自由に表現できます

  • Nimrodのコンパイラ、および標準ライブラリはすべてNimrod自身で記述されています。
  • 組み込みでさまざまなデータ型をもっています。たとえば、文字列やセット、シーケンスなどのデータ型があります。
  • 近代的な型システムも搭載しています。ローカル副作用型、タプル型、多相型、ジェネリックス型などがあります。
  • ユーザは演算子を定義することもできます。ユーザが定義した新しい演算子によって組み込みの演算子を再定義したコードよりも読みやすくなる場合も多々あります。たとえば、 =~ の演算子は re モジュール(正規表現モジュール)のなかで定義されています。
  • 強力なマクロ機能も搭載しており、これを使えばコンパイルするときに抽象構文木を書き換えることも可能です。

2011年12月13日火曜日

Nimrod is efficient


全国の Nimrod ファンのみなさんこんにちは。
Nimrod Advent Calendar の 13日目を担当している、@takano32 a.k.a. TAKANO Mitsuhiro です。


今回はNimrodへようこそ - Prologueの続きとして、Nimrodの十八番の特徴である `Efficient' についての文章を翻訳してみます。

Nimrodは効率的な処理ができます

  • Nimrodでは仮想マシンに依存しないネイティブコードの生成(現在はC言語を用いて生成しています)を行います。
  • 再帰的ではなく、漸進的で世代型のガベージコレクタを搭載しており、ゲーム作成のようなちょっとしたリアルタイム性が要求されるシステムにも向いています。
  • システムをプログラミングする上での特徴もあります。メモリアクセスを自分で制御し、直接ハードウェアを扱う能力もあるのです。また、ガベージコレクタが管理しているメモリ領域と自分で制御するメモリ空間はきちんと区別されています。
  • オーバーヘッドがないイテレータも搭載しています。
  • マルチターゲットの仕組みも搭載しています。
  • 仮想メソッドのテーブルを使わないインラインのダイナミックなメソッドの定義にも対応しています。
  • ユーザが定義した関数についてコンパイル時間を計測することもできます。
  • 生成された実行可能なファイルには使われる機能のみが組み込まれ、すべてのプログラムからデットコードを消す仕組みをもっています。
  • 値を基本にしたデータ型、たとえばオブジェクト型や配列型などをヒープではなくスタックに配置することができます。

うえのような特徴をもっているそうです。うひー、はじめて知った特徴多いな・・・
14日目の記事はsyanbi a.k.a. @xga さんの記事になります。お楽しみに!

2011年12月10日土曜日

なんと Nimrod で Python が使えるの!?

全国の Nimrod ファンのみなさんこんにちは。
Nimrod Advent Calendar の 10日目を担当している、@takano32 a.k.a. TAKANO Mitsuhiro です。

今回はexamplesにふくまれているpythonex.nimについてお話します。
Nimrod/examplesにはさまざまなサンプルプログラムが収録されています。fizzbuzz.nimなどの基本的なものからkeyval.nimのような正規表現の利用例などがあります。
おやおや、なにか気になる名前のサンプルがあります。"pythonex.nim" とあります。これはいったいなにをするプログラムなのでしょう。

おお、どうやらPythonの処理系をプログラムに組み込み実行するサンプルのようです。ほんとに実用的なのかな?と思って以下のような意地悪をしてみました。


おお、わりと複雑なパースが必要なはずなのに動いています!すごいですね。これはRubyistとしてはrubyex.nimを作成する使命を感じます。おっと、次回予告か死亡フラグとなってしまいそうです。今回はこれまでとさせてください。

11日目の記事はsyanbi a.k.a. @xga さんの記事になります。お楽しみに!

2011年12月7日水曜日

Nimrodへようこそ - Prologue

全国の Nimrod ファンのみなさんこんにちは。
Nimrod Advent Calendar の 7日目を担当している、@takano32 a.k.a. TAKANO Mitsuhiro です。6日目の記事は @esehara さんの 始めてオープンソースに関わったことを話そう -- プログラミング言語番外編 です。ぜひ、こちらもご覧ください。

今日は初心にもどり、公式サイトの序文を訳してみました。
Nimrodへようこそ
Nimrod は新しい手続き型静的型付けのプログラミング言語です。Nimrodはシンプルで効率的な言語でありながら手続き型、オブジェクト指向型、関数型、そしてジェネリックプログラミングを利用できます。
特徴のひとつにはLispから発想を受け継いでいる、自身の抽象構文木(AST: abstract syntax tree)の構成がNimrodにはあります。これによって協力なマクロシステムが利用することができ、DSL(Domain Specific Language)の作成などを行うことができます。
また、Nimrodはコンパイル可能な言語でありながら、GC(garbage-collection)を搭載しつつ、生産性とパフォーマンスのバランスに優れた開発が可能なプログラミング言語です。
Nimrodの開発ポリシーは3つの「E」に象徴されています。それはEfficiency(効率)、Expressiveness(表現力)、Elegance(上品さ)のポリシーであり、挙げた順番、つまり、効率、表現力、上品さの順でそれぞれを優先して開発しています。
マルチパラダイムでありながら、生産性とパフォーマンスにすぐれた素晴らしい言語です!みなさんもぜひ使ってみてください。

8日目の記事はsyanbi a.k.a. @xga さんの記事になります。お楽しみに!

2011年12月5日月曜日

Nimrod で FizzBuzz を書こう!

全国の Nimrod ファンのみなさんこんにちは。
Nimrod Advent Calendar の 4日目を担当している、@takano32 a.k.a. TAKANO Mitsuhiro です。3日目の記事は @esehara さんの オフサイドルールこそが正義である です。ぜひ、こちらもご覧ください。

今日はサンプルのプログラムとして有名な FizzBuzz をNimrod で書いてみたときのことを紹介したいと思います。

まず、FizzBuzz というのは
プレイヤーは円状に座る。最初のプレイヤーは「1」と数字を発言する。次のプレイヤーは直前のプレイヤーの次の数字を発言していく。ただし、3で割り切れる場合は 「Fizz」(Bizz Buzz の場合は 「Bizz」)、5で割り切れる場合は 「Buzz」、両者で割り切れる場合は 「Fizz Buzz」 (Bizz Buzz の場合は 「Bizz Buzz」)を数の代わりに発言しなければならない。発言を間違えた者や、ためらった者は脱落となる。  
Wikipediaより引用
というルールのゲームです。これをプログラムで出力します。

私がはじめに Nimrod で書いた FizzBuzz はこんなものでした。そして、 exampels のひとつとして取り込んでもらうために pull request しました。


Commit 0398a3c616d3de11f779ac36c3b0ef957052a814 to hametsu/Nimrod - GitHub
このプログラムにはいくつか問題がありました。それを Araq はとても親切に指摘してくれています。
Use 'elif' instead of 'continue'. Use 'echo a, b' instead of 'echo a & b'. Use 'const' instead of 'var'. Sorry for the nitpicking, but people like examples to be idiomatic nimrod code ;-).
日本語にすると以下のようなかんじでしょうか。
'continue' の代わりに 'elif' を使って、'echo a & b' の代わりには 'echo a, b' を使おう。あと、'var' の代わりに(変化しない変数なのだから)'const' を使うといいよ。 examples は多くの人が Nimrod の理想的なコードとして参考にするので細かい指摘ばかりになっちゃった(^−^)
とても親切に細かいところまでレビューしていただきました。その後、数度のやり取りを経て、以下のようなコードとなりました。


このコードは取り込まれ、現在、Nimrodのexamples以下にあります!みなさんもぜひexamplesになりそうなコードなどを書いてコミットしてみてはいかがでしょう。
5日目の記事はsyanbi a.k.a. @xga さんの記事になります。お楽しみに!

Auto Coin Dozer のすべて

あとで
邂逅


エロい


今後の展望

いまこそ Ruby の力じゃ! Capybara を使え!!!

この記事はRuby Advent Calendar jp: 2011 : ATNDの4日目です。前日は@hiro_asariさんのRubySpec を走らせるでした。
こんにちは、最近コミットできていない幽霊Rubyコミッタとなりつつある@takano32です。はやく復帰できるようリハビリしています。

さて、今日は Capybara というものを使ってWebでのテストなどを自動化する方法について簡単に説明したいと思います。
と、いいたいところなのですが、面倒なので説明は特に設けることなく、コメントとして説明を入れました。
なんか不足しているモジュールとかがあって走らないようでしたら、空気を読んで gem install hoge すれば動くんじゃないかな。たぶん。

本来はWebサービスのテストなどに使うのですが、今回は分かりやすいように日記やAdvent Calendarで使っているみんなも大好きな「はてな」に自動でログインするスクリプトを書いてみました。


こんなかんじで気軽に記述することができます。ヤバイですね。
特にヤバイかなぁ、ってポイントをふたつほどあげてみます。

  • Capybara.register_driver で Android端末などのUser-Agentを使うことができる
    • 「どうせ高度なアクセスはAndroidからはこないだろう」って思ってるサイトは危険かもしれません。ってーか、危険ですよ。
  • val = evaluate_script('JavaScriptVariable') のような記述をするとJavaScriptの変数がRubyの変数として使える。
    • JavaScriptの変数の中に次のサイトへの遷移のURLを入れていたりしてませんかね。危険ですよ!普通にJavaScriptの変数にアクセスしてブラウザの訪問先を変えたりできます。
今回は Ruby でブラウザの自動操作などができる Capybara を紹介してみました。最後に危険という話ばかりしていますが、よい子のみなさんはテストなどに使いましょう。ダメ、絶対。

5日目はZonu.EXE, tadsan.による記事の予定です。楽しみですね!

2011年12月1日木曜日

カレンダー罰

どうみてもやりすぎです。本当にありがとうございました。

まず定番。

Ruby Advent Calendar jp: 2011
四日目だったかな。わんつーすりーの12/3狙っていたら  $ ruby -e (0..2).each {|i| puts 2**i} になった。
こっから完全に罰。

Nimrod Advent Calendar jp: 2011
Nimrodというプログラミング言語のカレンダー。言語について語るのでよい。三人で回す。
一日目担当。だが三日後にはまたくる。とりあえず一日目は書いた。
【1日目】こんにちは、Nimrod! - 32nd Blogger

My AdventCalendar 2011
@takano32 についてのカレンダー。自分についてただ語るのはつまらないので、ぜんぶ英語で書くことにした。これから24日間続く罰。一日目担当もクソもねぇよ。書いた。
【day 1st】Welcome to "My AdventCalendar 2011"

ちなみに俺以外にも俺カレンダーの猛者たちいる。はじめに俺カレンダーみたいなのはじめようって考えたクズハはパネェと思う。PHP愛を感じる。
このままいくとRuby以外はぜんぶ複数回書くことになりそうなのでお前らもなんか参加しろってば!!!的な。何か。

なんなら高野光弘になりませんか。ならないね。

こんにちは、Nimrod!

この記事はNimrod Advent Calendar jp: 2011の1日目の記事です。

こんにちは、こちらは今日からはじましります、NimrodのAdvent Calendarの1日目の記事です。私は1日目を担当している @takano32 です。

まず、Advent Calendar とは12月1日から12月25日までブログ記事をある事柄についてのリレーしていくという技術系界隈から派生した文化です。
Nimrod Advent Calendarではプログラミング言語のNimrodについての記事をリレーしていきたいと思います。

さて、初日ですので、Nimrodの紹介からはじめましょう。
Nimrodは海外での開発がさかんな新しいタイプのプログラミング言語です。以下のようなサイトで情報を手に入れることができます。
    • Nimrodの開発および開発に関する議論などはGitHubを通じて行われています。ここのソースコードがマスターです。私たちもこのレポジトリをフォークしてhametsu / Nimrodを編集し、コミット、プルリクエストなどをしています。作者のAndreas Rumpfさんはとても気さくな方で、些細なプルリクエストなどについても議論、検討を行なってくれます。ぜひみなさんもコミットしていきましょう。
  • nimrod-code.org
    • Nimrodのマニュアルなどが整備されている公式サイトです。あらゆる情報が掲載されています。コードを読むよりも先にNimrodがもつ特徴などを知りたい!といった場合にも、まずはこちらを参照されるとよいでしょう。
  • Nimrod forum
    • NimrodにはGitHub以外にも議論を行うためのフォーラムが用意されています。アクセスしてみましょう。おやおや?一見、何も議論がされていないようにみえますね。これはphpBBという掲示板システムが複数の掲示板を取り扱うように設計されているため、そのうちのひとつとしてNimrodの掲示板がきちんとリンクされています。
      コードをベースにした議論はあまりありませんが、重要なアナウンスや今後の方針についての議論がされていますのでこちらも要チェックですね!見逃せません!!!
今日はNimrod Advent Calendar jp: 2011の1日目をお送りしました。
軽くNimrodのコミュニティについて説明させていただきました。わくわくしてきましたね。みなさんもぜひ新しい世界へのプログラミング言語Nimrodを習得し、楽しいNimrodライフを!

次の記事はsyanbi a.k.a. @xga さんです。お楽しみに。

Welcome to "My AdventCalendar 2011"

Hi, this is TAKANO Mitsuhiro a.k.a. @takano32.
Welcome to my advent calendar that hashtag is #advent11takano32.

This advent calendar will be written about me and in English.
Today is first entry of my advent calendar and introduction of itself.

"Continuation is power." i think.
That's enough for today.

Thank you.

My AdventCalendar 2011 - All your base are belong to us

2011年11月23日水曜日

My first contribute for Nimrod



i cant join contributors.txt yet, but i got started!!!

https://github.com/Araq/Nimrod/commit/f3d64258ade903d2e8dddf2e16b9176ade69ab18

https://github.com/Araq/Nimrod/issues/65

2011年11月14日月曜日

8月の@keitahaga 2.0



9月の@keitahagaのときはすっかり8月は夏休みだとおもっていたのですが、修正のQAを通ってる段階だったらしく、後で掲載されたと本人から聞きました。

何ヶ月連続よ・・・

http://technet.microsoft.com/en-us/security/cc308575

2011年10月13日木曜日

Google released a structured programming language for Web programming, `Dart'.

Dartについて直感的な感想。


  • え、JSのような言語っていってるのにリフレクションないの。
  • corelibみたかぎり劣化Javaだな
  • 現実的に大規模でコードかくにはこんくらい硬くないとむり。趣味で遊ぶならメタプログラミング必須って思う。しかも、リフレクションは後付するかもね、と言い切れるくらいには拡張性・展望があるってことだもんな。
  • Coffeeみたいなアプローチも用意して過渡期やり過ごす方法考えないと利用価値ない

    • Translate Dart code to JavaScript that can run in any modern browser
    • サンプルのContent-typeが application/dart... なのは野心的

  • 予約語は仕様書の10.29にパンピー突き放してるとしか思えない形式で載ってますね
  • Coffeeがクズになるくらいの大きい規模での開発では便利かもしれないが、それほどの規模のところがGoogleと運命を共にするっていう判断するとは思えない
  • JavaScriptとは目的違って、アホがまとまるために必要な言語であってホビィストが使う言語ではないっていうスタンスにみえる
  • 意思決定でアホの船頭が選択する言語であって、ホビィストやアホのための言語ではない
  • フレームワークで檻作ってJSのレイヤーをアホが書いても破壊活動できないようにするための言語なのでは
  • JSがもはや規模大きくなると手に負えない化物になるのでそれに対するひとつの提案じゃないのかな
  • コレクションのシグネチャーとか見る限りはどっちかというとJava族っぽい
  • factoryは劣化リフレクションっぽい


こんなかんじ。まだ一行も書いてない。

9月の@keitahaga



http://technet.microsoft.com/en-us/security/cc308589

8月は夏休みだったみたい。

2011年8月17日水曜日

many thanks to @keitahaga / Nimrod



https://github.com/Araq/Nimrod/commit/7d03cb1f9b9025693ac9b73e97f49b956652bd7b#L0R208

https://github.com/Araq/Nimrod/commit/35e4ba07b57dba39cb9ecdbd070d238dd3001956

2011年7月30日土曜日

HOD

破滅用語の基礎知識。

今回は `HOD' です。

HODとは


「はーい、OKです」の略である。
物事について関心の有無を問わずに相槌をうつときなどに使われる。

スパムTwitterアカウントなどを発見し、晒すときに Hr4sD(はーい、Report for Spamです)などのように応用されて使われることもある。

由来


深夜にギークハウス浅草で荒川智則(@takano32, @yuiseki, @niryuu)が turntable.fm で遊んでいるときに「これ、Awesome(評価ボタン。[+1] みたいなもの)を押しては次のDJにスキップ、ということを繰り返すと無限にゲーム内ポイントがたまるのでは!?」ということに気づいてしまった。ここらか惨事がはじまるとは・・・

そして、以下のような手順でレベリングされた。

  1. DJが紅をかける
  2. DJを含めた聴衆がクビをフリ、Awesome状態になるまでAwesomeを連打
  3. すべてのDJがクビをフリはじめたら「はーい、OKです」というチャット発言
  4. DJは次のDJにBack to Back


この過程で「はーい、OKです」ということをタイプするのが面倒な荒川智則(たしか @chansuke か @mapi だったと記憶している)が、突然「HOD」と発言しはじめ、周囲は「はーい、OKです」の意味として文脈で把握した。そして、この風習は瞬く間に広まり、荒川智則らはレベリングされるのを確認すると同時に「HOD」と叫び続けた。

これが `HOD' 誕生の秘話である。

なお、この turntable.fm の集まりは DJ Point がほぼ 0 の @mapi が 300 Point まで意識が高まったところで解散された。
しかし、その頃にはすでに外は明るく、 turntable.fm が MMORPG 2.0 であることを認識した次第である。

2011年7月8日金曜日

LISP症候群

レベルみたいなの。


  1. S式のコピーとペーストでプログラミングらしきことや、エディタの設定などをしているが、本人はS式と気づいていない。
  2. LISPの存在を知る。S式はみたことがあるが、どう呼称するのかは知らない。
  3. S式の存在を認識し、思想を理解しはじめる。このころから逆ポーランド記法をみると精神が安定するようになる。
  4. 特殊形式の存在などを知る。一方で簡単な計算やワンライナー規模のプログラムをREPLなどで書くようになる。
  5. LISPでのプログラミングをたしなむ。
  6. LISP処理系を作成する。
  7. carやcdrなどの用語を日常会話に折り込みながら使いはじめる。
  8. SRFIなどにコミットしはじめる。
  9. エディタの補助機能などを切っていてもターミナルから相互に対応する括弧の対が浮き上がって見える。
  10. LISP処理系になる。むしろ、LISPそのものに存在が昇華する。


自分は「carやcdrなどの用語を日常会話に折り込みながら使いはじめ」たくらい。

2011年6月28日火曜日

hook up proxy

スーパーハカーに教えてもらった。

CocProxy


結構有名らしい。
というより、みた記憶がある。使ったことはない。

Fiddler


.NET Frameworkで動くらしい。この手のヤツはSystem.Windows空間で変なの使ってなければmonoでも動く時代ですばらしいですね。
未検証ですが、たぶん動くと思う。

Burp Suite


すごいビューが充実している。有償のものもあり、それだとかなりのことができる雰囲気が感じられる。
有償版といい、ビューの充実といいASTEC Eyesとかを彷彿とさせる。

追記。

Chrome Developer Toolでもインスペクションくらいはできるので使いこなしていきたい。

あと、こんな話をしていたら AnglyChair という太古の昔に使われていたローカルプロキシのことを思い出し、HDMLと戦っていた日々などを思い出した。WAP・・・すべてが懐かしいですね・・・最近、フロントの開発してねぇなぁ。

追記。

http://w3af.sourceforge.net/

https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project

2011年6月9日木曜日

do you turn table?

荒川智則 @ turntable

大量の m4a でどうしろと・・・

おっ

m4a to mp3 - Ubuntu Forums



sudo port install -v mplayer +aa +caca +dts +mencoder_extras +esd +fribidi +lirc +live +man_all_lang +ods +sdl +smb +speex


なんか変換できるのもあるけど、できないのもあるなぁ

Today's minecraft

今日は @sora_h が作ってる昇エレベーターで「船が必要」とのことだったので、船の材料となる木を伐採してみることにした。
伐採には腐るように余っている資源の丸石でできた石斧を使った。

マルチプレイサーバでもひとりでログインしている状態ならベッドに入れば即朝になるのではやいサイクルで伐採できた気がする。

伐採の途中でふと、 IronOre から Iron を精錬するのに必要な燃料のことなどが気にかかり、精錬してみるなどした。どうみてもIron "Ingot" のグラフィックスなのだけれど、 Iron といったらこれらしい。Iron Block が Iron なのではないかといままで勘違いしていた。

植林すると木と苗が手に入るので無限に精錬できる、という話から木はガンガン使っても平気なんだなぁ、と感じながら気まぐれにいくつかの木を木炭に精錬してみるなどした。丸石を精錬すると石にできるということに気づき、もしやこれで斧作れば強いんじゃね、と思って挑戦してみるも、作業台の上で斧の形にしてみても斧を作成することができず愕然とするなどのハプニングも。

ふむ。だいたい 1カートンくらいの木を伐採して @sora_h のチェストに入れようと思ったのだが、@sora_h の部屋にはいろうとするといきなりダメージ。・・・そこには大きなスライムが扉から出れない状態で「パツン、パツン」と音を立てながらこちらに向かおうと扉になんどもぶつかってきていた。ちょっとカワイイ。しかし、これも敵。敵が出れないのをいいことに外から攻撃と回避を繰り返して倒そうとするも、ダメージをかなり受けてしまい、死にそうになる。

面倒だったので部屋の扉から離れ、そのまま部屋の外でログアウト。
あとで木材どこかに置いておかないとな。

2011年5月24日火曜日

Minecraft

Minecraftはじめました



初日は何すればいいのかメモ


  1. 肉の喰い方を覚える
  2. 夜はベッド探すかたいまつを作って逃げまわる
  3. 逃げまわるのがいやなら昼の間に武装


Craft or Die...

2011年1月26日水曜日

サカつくG

五位!!!

ちなみに、まだ課金してないよ。
Published with Blogger-droid v1.6.5

2011年1月25日火曜日

2011年1月17日月曜日

2011年1月16日日曜日