タグ

2011年3月19日のブックマーク (7件)

  • bash 超プログラム術

    bash の解説なんて、ネット上には結構あったりするのだが、これをわざわざ公開しようというのは、次の理由による。 某ソフトハウスでのUNIX講座用に書いてしまったから。 ネット上にある bash 解説だと、表面的な構文解説程度であり、きっちりスクリプト言語として使い倒すレベルの解説はあまりない。まあ、プログラミング言語として凝ったサンプルもやってみようじゃないの、というノリで割とディープに解説する。 アクセスを増やすための人気取り(苦笑)。 まあ、そんな不純な目的による bash 解説である。とはいえ、日常的に使い慣れている bash であっても、「え、こんな使い方があったの!?」という発見もあることであろう。苦笑しながらでも読んでくれたまえ。だから、初歩的なリダイレクションなんかは解説しないからそのつもりで。 ちなみに参考書としたのはオライリー・ジャパン刊「入門 bash 第2版」である

    lam_bda
    lam_bda 2011/03/19
  • ctagsを使ってVimでCode Readingを加速する | Webシステム開発/教育ソリューションのタイムインターメディア

    コードを書いて何か具体的なものを作ることが、僕たちプログラマの仕事でありアイデンティティですが、 ただ、一日中コードを書き続けているわけではありません。 優れたコードを書くスキルを習得するためには、いろんな人たちが書いたコードを大量に読むことが欠かせません。 この、コードを読む(Code Reading)ことはなかなか奥が深く、読みこなすには骨が折れるものです。 なぜならその背景をコードから読み解く知識(データ構造、アルゴリズムやアーキテクチャ)や経験が要求されるからです。 しかし、Code Readingは何よりも楽しいものです。読み進めていると斬新なアイデアや綺麗に表現しているコードに出会ったときは興奮してしまいます。 では、コードはどうやって読むのでしょうか? 印刷して紙で読む? Webブラウザでsyntax highlightされたコードを読む? いいえ。エディタです。 使い慣れた

    ctagsを使ってVimでCode Readingを加速する | Webシステム開発/教育ソリューションのタイムインターメディア
  • Rubyの標準ライブラリStringScannerがすごい! - hythofの日記

    もう5日ですが、あけましておめでとうございます。 毎年新年の目標を立てるのですが、なかなか難しいものですね。けど、今年は頑張ります! さて、文字列処理に強いプログラミング言語と言えばPerlが有名ですがRubyもすごいんです。Rubyの標準ライブラリ「StringScanner」を使えばパーサをあっという間に書けるんです。 試しにWindowsでよく目にする「.ini」ファイルを読み込みRubyのハッシュに読み込むプログラムを書いてみます。 require "strscan" def parse_ini src section = { "" => {} } current = section[""] s = StringScanner.new(src) while !s.eos? case when s.scan(/\s+/) # nothing when s.scan(/\[(.+?)\

    Rubyの標準ライブラリStringScannerがすごい! - hythofの日記
  • Tsujii Lab. Enshu3 -- Japanese Dependency Analysis

    という文に対して、私の、高い、ワインを、二宮さんに、飲まれた、という各文節間の係り受け関係「私の→ワインを」・「高い→ワインを」・「ワインを→飲まれた。」・「二宮さんに→飲まれた」を求めることです。 機械学習を用いた日語係り受け解析は、ここ数年自然言語処理におけるホットトピックの一つとなっていて、我々のグループでも、最高精度の結果を出したことがあります(参考文献[1])。その当時より、研究室内で機械学習のためのライブラリが充実してきているので、演習の1ヶ月という短期間でも最新の研究に匹敵する結果(精度90%程度)を出すことができるかもしれません。 課題内容 課題のメインテーマである機械学習とは、簡単に言えば、ある現象に関して既存のデータの振る舞いから未知のデータの振る舞いを推定する確率モデルを作るということです。この課題の文脈にこれを当てはめれば、日語の係り受けという言語現象に関して

  • Martin Fowler's Bliki in Japanese - パーサー恐怖症

    http://martinfowler.com/bliki/ParserFear.html 2008/5/20 最近はドメイン特化言語についてみんなと話すことが多いのだが、外部DSLのことになると、だいたい決まって「パーサーを書くのは難しいよ」とか言われる。 外部DSLの構文としてXMLがよく使われるのは、「パーサーが無料で手に入るから」だったりする。 でも、パーサーを書くのは思ったよりも簡単なことなのだよ。いやマジで。 XMLのパースができれば簡単なことだよ。 証拠だってあるのだ……つっても、私の話だけど。 でもでも、十分に証拠となるものだから引き合いに出そうと思う。 現在執筆中の書籍に入門的な例を書いたんだけど、 簡単なステートマシンを作るのに外部DSLを2つ作ったのだ。 1つは(ゲートウェイドラッグ*1として)XMLを使ったもので、もう1つはカスタム構文をAntlrを使ってパースした

  • 「Metal」 based on Parsing Expression Grammar - 古橋貞之の日記

    Parsing Expression Grammar (PEG)をベースとした構文解析器を生成するパーサジェネレータMetalを作りました。Rubyで書かれており、Rubyのコードを生成します。 Metalの多くはOMeta: an Object-Oriented Language for Pattern MatchingをRubyに移植したものです。 Metalの特徴: Rubyでアクションが書ける オブジェクト指向(継承、Mix-in、委譲、オーバーライド、super) PEGの特徴はそのまま 曖昧さが無い 左再帰が書けない(いまのところ) メモ化する ソースコードはCodeRepos:/lang/ruby/metalにあるので、ガツガツいじれます。 使い方 Ruby gemsでインストールできます。 $ gem install metal 文法定義ファイルを書いて、metalコマンド

    「Metal」 based on Parsing Expression Grammar - 古橋貞之の日記
  • データ中心指向とオブジェクト指向

    オブジェクト指向プログラミングと対比されるものとして、手続き型のほかに、データ中心指向があります。データ中心指向は、大量のデータを扱う業務アプリケーションで適用される方法論で、機能や処理を中心に考えるのではなく、データを中心に考えていくアプローチです。機能や処理に比べてデータは不変であるため、データが重要な意味を持ってくる業務アプリケーションでは、この考え方が適しています。 オブジェクト指向との違いは何かというと、簡単に言えば、オブジェクトを中心に考えるか、データベースを中心に考えるかの違いです。 ドメインを中心に考えている点では、どちらも一緒です。ドメインとは、アプリケーションが解決しようとしている問題領域のことです。ドメインを明確にする際、モデルが作成されます。モデルは、その問題領域で扱うデータを構造化し、関連を明確にし、アプリケーションの質的な部分、骨子を明確にしていくものです。そ

    lam_bda
    lam_bda 2011/03/19