タグ

ブックマーク / karasuyamatengu.hatenadiary.org (7)

  • Perl6のマクロ - karasuyamatenguの日記

    Perl6にはASTを操作する格的なマクロがある。それをわかりやすく解説したポスト: http://strangelyconsistent.org/blog/macros-what-are-they-really コードからASTを得る quasi { <コード> } quasiはQuineという哲学者の「quasi-quote」というコンセプトに由来している。ちなみにこれはクワイン プログラムの由来の人でもある。 マクロ宣言: macro <マクロ名> { } macro HOGE { quasi { $*ERR.say("OH HAI") } } マクロの呼び出し HOGE(); 関数のようなシンタックス。Cのようにマクロは大文字にするのが慣習のようだ。ただし… マクロへの引数はその値ではなくて、コンパイラによりコードから変換されたAST ASTをコードに埋め込む: {{{AST}}

    Perl6のマクロ - karasuyamatenguの日記
  • 西洋から見た「本音と建前」 - karasuyamatenguの日記

    西洋にも音と建前という状況はある。例をあげて説明した後、このような便利な嘘と西洋人の関係を説明している。 「それは私達を悩まし続ける。集団としては当の感情を表わす反応より、このような安定性を保持するためのしきたりを好むがそれが終るとこのしきたりを偽善的で不要なものと罵しる」 http://www.bbc.co.uk/dna/h2g2/A571565 以下Prezの記事から面白いところを抽出 日の解決策 日語ではこの二重の社会的現実が二つの反対の言葉によって明示的に認められている: Tatemae: 正式かつ公式な社会的に要求される現実 Honne: 社会の位置付けと無関係な非公式な個人的な現実 日語にこの二語が存在するという事実は大変興味深い現象だ。部外者から見ると語彙によって「何気ない嘘」について正直な社会ということになる。しかし、日ではどちらかというと正直モード(mode

    西洋から見た「本音と建前」 - karasuyamatenguの日記
    yhara
    yhara 2011/05/02
  • URLバーの中のゲーム - karasuyamatenguの日記

    HTML5のヒストリAPIでブラウザ内のJavaScriptがURLを変更できるように。これをデモするためにURLバー内でプレイできるゲームを作った奴がいる http://probablyinteractive.com/url-hunter# このURLを開けてescを押すとゲームが開始される。「O」がプレイヤーで「a」が「動物」。 アローで左右に移動し、「a」と重なったところでスペースを押すとOが動物をったことになって得点になる。一次元のパックマンのようなゲーム。ただそれだけなんだが、ハマる。

    URLバーの中のゲーム - karasuyamatenguの日記
  • プログラミング言語「J」がオープンソースされた - karasuyamatenguの日記

    http://jsoftware.com/source.htm 「J」は実用されている言語のなかで一番難解な部類に入るんじゃないだろうか。Jの前身のAPLはギリシャ文字の入力と表示を可能にする特殊環境でなければ使えなかったと読んだ記憶がある。Jはasciiベースになったが、簡潔な表示を追求するために句読点とアルファベットを混ぜた二文字を使っているらしい。数学的な表記で配列を操作するのを得意としているようだ。 コード密度においてAPL/Jを越えるものは無いだろう。なんと一行で「game of life」を実装してしまう: http://catpad.net/michael/apl/ (これはAPLによる)。 その難解度というかとっつき難さも他の追従を許さない。難解を目的として書かれたPerlなど比べ物にならない。詳しくはwikipediaのJ言語ページを。 このJ言語はクローズされた製品だっ

    プログラミング言語「J」がオープンソースされた - karasuyamatenguの日記
    yhara
    yhara 2011/03/15
  • 宣言型model-viewクライアントフレームワーク「knockoutjs」を試す - karasuyamatenguの日記

    knockoutjs (http://knockoutjs.com/)というクライアントフレームワークを試してみた。モデルとUIの依存関係を宣言することにより、自動的に更新してくれるというものだ。売り文句をまとめると: OSS, 他フレームワークとの利用可能、軽い、ブラウザサポート等々。誰が管理しているのか知らないが、ドキュメントはよく書かれていてサポート体制はしっかりしているよう。 必要なもの <script type='text/javascript' src='./jquery-1.4.3.js'> <script type='text/javascript' src='./knockout-1.1.0.debug.js'> インストール詳細はこちら: http://knockoutjs.com/documentation/installation.html http://githu

    宣言型model-viewクライアントフレームワーク「knockoutjs」を試す - karasuyamatenguの日記
    yhara
    yhara 2010/11/01
    knockout.js
  • FireSheep: ワンクリックで他人になりすませるFireFoxプラグイン - karasuyamatenguの日記

    凄いfirefoxプラグインが出た: http://codebutler.com/firesheep 使い方 大勢の人が使っているwifiに接続する 「キャプチャ開始」ボタンを押す 待つ このプラグインの対象となっているサイトにログインしたユーザがいるとそのユーザのプロフィール画像と名前が出てくる。 スクリーンショットにはgoogle, facebook, twitter, flickrなどが出ている。 ユーザをダブルクリックすると、その人としてサイトにログインした状態になる! これはHTTPセッションハイジャックを簡易化したプラグインだ。ログインのさい、パスワードは暗号化するがそれ以降セッションはクッキーをクリアテキストで送るという広く知られた脆弱性をついたものだ。wifiなら多くのセッションクッキー簡単にみれる。この問題は前から知られていて、解決策も知られている。 HTTPS/SSLだ

    FireSheep: ワンクリックで他人になりすませるFireFoxプラグイン - karasuyamatenguの日記
    yhara
    yhara 2010/10/27
  • PerlでContinuationベースのウェブサーバ - karasuyamatenguの日記

    Continuationっていうのはプログラムの実行過程を途中でフリーズして別のところから再スタートさせたりすることができるという頭の痛くなるような機能だ。はやり御家はscheme(call/cc)だけど他のハイレベル言語でもできるものがあるようだ。 ウェブフレームワークとしてはsmalltalkのseasideやcommon lispのuwcが有名。RubyPythonもGeneratorを使って実装したものがあるらしい。あと、アプリケーションとしてはPaul Graham氏のnews.ycombinator.comが有名。これは彼の「100年言語」(実はPLTの上にマクロで作ったLispの方言)によって実装されている。 perlにはcall/ccやgeneratorのようなコールが無いのでContinuationベースのフレームワークは無いと思っていたが、間違っていた。Perlにで

    PerlでContinuationベースのウェブサーバ - karasuyamatenguの日記
  • 1