すみっこのメモ - FrontPage  Index  Search  Changes  RSS  Login

LLDN2005に参加したときのメモ

URL

Language Update

awk

  • Aho(エイホ),Weinberger Kernihanの頭文字をとった名前
  • 国際化
    • 3.1.5から
  • Xgawk
    • gawkの先行開発という位置づけ
    • XMLモードに切替えないと普通のgawkとして動作する

curl

  • curly brackets(中括弧)から名前が付けられているらしい

Gauche

Haskell

  • 仕様はHaskell98から変わっていない
  • GHCが事実上の標準コンパイラ
  • runghcが新しく追加された
    • 6.4から
    • シェルスクリプトのようにプログラムコードの1行目に#!/usr/bin/runghcと書くことでスクリプトとして実行可能
  • 有名なアプリケーション
    • Darcs
      • バージョン管理システム(CVSとかSubversionみたいなもの)
    • Pugs
      • Perl6インタプリタ
      • 1ヶ月でHaskellをマスターした人が1ヶ月ぐらいで実装したらしい。
    • Monadius
      • 某シューティングゲームもどきゲーム
  • Haskellプログラマの10のレベル

ML

  • Language Updateの中ではプレゼンが一番面白かったかも?
  • SMLは1997年から仕様は変わっていない
  • Ocamlは新機能が比較的ホイホイ入ってくる様子
  • F#
    • .NETで実装されたOcaml処理系
    • SML.netを作った人がMicrosoftに引き抜かれてF#にかかわっているらしい

Perl

  • parrot
  • ponie
  • Pugs
    • Perl6処理系をHaskellで実装
    • 実行するのに600MBぐらいメモリを消費する様子。超大富豪プログラム(笑

追記(2005/09/30)

http://mono.kmc.gr.jp/~oxy/d/?date=20050828#c02 より。

_ 弾 (2005-08-29 01:49)

Pugsのメモ > 実行するのに600MBぐらいメモリを消費する様子。超大富豪プログラム(笑 これは、PugsをCompileする時にGHCが使うメモリーで、で着上がったpugsはそんなにmemory食いません。一応報告まで

PHP

  • 今年で10周年
  • どこかのアンケートでは70〜80%ぐらいの人がPHP4系を使っているらしい
  • PHP5.1
    • 高速化を意識しているらしい
  • PHP6
    • Unicode化
    • 危なそうな機能の削除
  • PEARライブラリについて
    • 標準添付しない方向で話がすすんでいるらしい
      • パッケージマネージャを提供するだけで、ユーザがライブラリをインストールする形態
      • パッケージのアップグレード時にファイルが消えるなどといった問題があるみたい。

Ruby

  • 質問コーナーでの意見
    • Rubyにはrequireはあるのにuseはなぜ無いの?
      • 小飼さんの御意見
        • requireは必要な時にファイルをロード&コンパイル
        • useは一番始めのコンパイル時に全部ファイルをロード&コンパイル

Python

  • 途中退席したので、あまり話は聞いていなかったり(汗

LLDN2005 フレームワーク対決

  • Webアプリケーションフレームワークとは何?
    • 初期のフレームワーク
      • horde 1999
      • Sledge 2001/9
    • 世の中的にはStrutsでブレイクした感
  • メリット&デメリット
    • メリットは省略
    • デメリット
      • 初期導入コストが高い
      • フレームワークで用意されていない事をやろうとすると、逆に大変(な場合もある)

Sledge

  • Sledgeとは?
    • Perl向けWebサービスフレームワーク
    • ライブドア(オンザエッヂ)の社内フレームワークを公開したもの
    • mod_perl,CGIで動作する可能
    • 2001/9に登場。比較的古いフレームワーク
  • フレームワークといいながら実はMVCのMは無い様子
    • 受注開発を行っていた際にこの部分はアプリケーション毎に異なっていたため、この部分はSledgeの範囲外としている。
    • デフォルトではMySQLを使うみたい。
  • 設定ファイルはPerlのスクリプト
    • ハッシュとかで値を設定しやすい
    • プログラマ以外の人が設定しづらい?
  • セットアップがちょっと大変
    • 大量にCPANモジュールをインストールする必要がある
    • bundle-sledgeという関連しているモジュールをインストールしてくれるCPAMモジュールがある様子。
  • HelloWorldの例
    • テンプレートを使っている
    • Template Toolkit またはHTML::Templateを使用可能
  • Hook機能
    • 常に同じ値をテンプレートに渡す処理系
    • 出力後のロギング処理とか
    • Hookできる場所
      • AFTER_INIT,BEFORE_DISPATCH,AFTER_DISPATCH.AFTER_OUTPUT
  • Sledgeの今後
    • Validation機能の追加
    • DB周りの機能
    • もっと手軽に試せるように
    • mod_perl2対応
    • 後方互換性は保てるのか?むしろSledge2にするべき?

Ruby on Rails

  • MVCの一体感
  • 自動生成
    • scaffold
      • 足場という意味らしい
  • デモ
    • 雛型作成
      • railsコマンドの実行
    • DB関連の設定
    • environment.rb
      • ここでtable名にsを付ける設定を無効にしておくのがおすすめ。
    • script/generate scaffold ページ名の実行
    • ruby script/serverの実行
      • Webrickを使ったRails環境のWebサーバ
  • ポイント
    • DRY
      • Don't Repeat Yourself
    • 規約重要
      • 決め打ちのお約束。テーブル名<->クラス名のマッピングとか
    • 言語重要
      • DSL(ドメイン特化言語)
    • 言語の硬軟
      • WebアプリにはMVCの疎結合が必要だと最近言われている
      • Railsは比較的密結合
      • 最近の流れとは逆行していないか?
      • Rubyなら言語が軟らかいのである程度対応できるのではないか?
      • Duck Typing
        • 継承関係を無視
      • LLが柔軟性をもたらす

Kahua

  • 「かふあ」と読むらしい
  • Scheme(Gauche)のWebアプリケーションフレームワーク
  • ページ遷移を継続で表現できる
  • 継続渡しはセキュリティ上問題にならないのか?(個人的な疑問)
    • 継続している状態をブラウザ側に全部渡すためパラメータの不正操作を行うことができるのが理由(個人的な疑問)
    • 話を聞いている限りでは、継続のデータはサーバ側で持っているらしい。

会場からの質問&意見

  • セッションデータはKahua以外だとどうやって実現するの?
    • ウイザードみたいなセッションにデータを保持させるのは自前で実装する必要あり?
    • Kahuaは継続とは別にログインなどセッションに関する実装は、別にフレームワークを用意している様子。
  • 高橋メソッドは継続なのか?
    • 小飼さんのJoke Question
    • 発表者はセッションを持っていないらしい。
    • セッション管理は聞いている人まかせ?(笑
  • Sledgeのドキュメントがしょぼい
    • ソース読め!
    • ソースを公開したら誰かが整理してくれるんじゃないか?という思惑もあったらしいが、実現してないらしい。
  • ActiveRecordのテーブル名のにsが付く仕様について
    • personはpeopleにするような辞書をもっているらしい。違う意味でスゲー
  • Kahuaの多言語対応は?
    • 標準はGaucheをコンパイルしたときのエンディーディングが使用される
    • UNIX環境だとデフォルトEUC-JP
    • 携帯向けhtmlの生成とかは、自前で文字コード変換はする必要あるみたい。
  • 継続を使うとファイルが1つになりがちで分離がしにくいのではないか?
    • Kahuaは階層が1階層?というご意見も。
    • クロージャがあるため、グローバル変数が連発するような状況にはならない。
  • SledgeのHookは他のフレームワークではどうなってるの?
    • Railsはいろいろ用意されている
      • ActiveRecordにまでHookが用意されている
    • KahuaもHookは用意されている
      • 必要に応じて実装?
  • 何か付け足したい機能は?
    • Sledge
      • Validationの機能
    • Rails
      • 多言語対応。現状UTF-8で実装した方が無難?
    • Kahua
      • Templateエンジン(笑
  • 実行環境の抽象化について
    • 伊藤直也さん質問
    • Ruby on Railsの実行環境は?
      • RoRで大規模サイトは多分まだない
      • mod_rubyあるいはfast_cgiを使うのが定石らしい
      • lighthttpdというhttpサーバがを使うのが海外ではやっているらしい
      • ↑スペル間違ってました。正しくはlighttpdでした。http://www.lighttpd.org/
    • RoRは実行環境を抽象化されているのか?
      • あらかじめ用意されているアダプタで吸収しているので、アプリケーション作製者はそのあたりは気にしなくても良い

君ならどう書く?

プログラムのお題

  • 2種類の電卓プログラムを書いてきてください
    • 規定演技
      • 漢数字電卓プログラム
      • 取り扱うのは整数のみ
      • 微妙に答えが違うのOK
    • 自由演技
      • できあがった電卓の観賞が目的

Haskell

  • 規定演技
    • パーサコンビネータ
      • パーサの組合せからさらに大きなパーサを作る
    • モナド
      • compuatationを抽象化するインターフェース
        • 例外とかを統一的に取り扱うため
        • 元は圏論から来た概念
  • 自由演技
    • チャーチ数の計算

Perl

  • 規定演技
    • 実装方法を考える
      • ローマ字に変換
        • 正規表現で置き換えた後、Math::Roman使う
        • 5とかの数で表記が変わるので挫折
      • Parse::RecDescentでまじめにパーサをを
      • 3つにわけて考える
        • 実際の計算はevalでやっちゃう
        • 漢数字<->数値の変換に集中できる
    • 漢数字の仕様
      • 言霊.htm
      • 桁が大きくなってくると、8桁づつ増えるところがあるので注意が必要
  • 自由演技
    • Perl/TkでGUIで実装
    • Ajaxで漢数字電卓を実装
      • XML-RPCでサーバ側で計算
    • Excelで実装
      • Ajaxと同じように実装(笑

Python

  • 規定演技
    • 漢字はUnicodeで
    • doctestをUnitTestに使用
    • generatorをたくさん使う
      • 関数からiteratorを生成する機能
  • 自由演技
    • GUIで電卓を実装
    • Pythonでカスタマイズ可能な電卓
    • Pythonのスクリプトをボタンとして新規追加できる
    • mapを使ってメモリにあるすべての数値に対して演算を適応することができる

Ruby

  • 規定演技
    • 実装の概要
      • スキャナー
        • 文字を分解
        • StringScanner
      • パーサ
        • ツリーを作る
        • racc
      • 日本語->数値の変換
        • componentオブジェクトとして漢数字を表現
    • Rubyのいいところ
      • 文字列を埋め込み式
        • ネストできる
      • iterator
      • 1つのクラスを複数ファイルに分けて書ける
      • 既存のクラスにメソッドを追加できる
      • 文の中でもクラスやメソッドを定義することができる
      • Duck Typing
        • 袋に動物が1匹入っているのを仮定、袋を叩くとDuckだった?というところが語源
        • 刹那的(笑
  • 自由演技
    • IllustratorのプラグインをRubyで書けるようにして、それを使ってeRubyで電卓(みたいなもの?)を実装
      • スクリプトで文字が回転してた(笑
      • Ruby MagazineのバックナンバーにIllustratorでRubyを使う話が載っている

sf

  • 自由演技のみ
    • sfとは何?
      • matrix,vectorの扱いがしやすいらしい
    • kVerifier Libraryの応用みたい

Squeak

  • 規定演技
    • Smalltalkの処理系のためのパーサ、コンパイラはSmalltalk自身で実装されている
    • メッセージ送信
    • 式の評価方法
      • print it(ctrl+p)
      • do it(ctrl+d)
  • 自由演技
    • パーサを本体に組み込んでしまった
    • パーサを通さなくてもSqueak本体で普通に漢数字が取り扱えてしまう
Last modified:2005/09/08 03:25:13
Keyword(s):
References:[いろいろメモ]