オープンソースカンファレンス2008 Tokyo/Spring 2日目報告
以下では、敬称は省略させていただきます。
最近のRuby: 2008春 日本Rubyの会 高橋征義
最近のRuby 1.9
- 会場に質問「Ruby 1.9を使ったことのある人は?」
- 3人くらい挙手した。
- 当初は1.9.1だったはず
- バージョン番号のつけ方が1.9から変更になった。
- バージョン番号が1.X.Yのとき、
- いままで
- Xが奇数なら開発版
- Xが偶数なら安定版
- これから
- Y == 0なら開発版
- 0 < Yなら安定版
- いままで
- バージョン番号が1.X.Yのとき、
- バージョン番号のつけ方が1.9から変更になった。
- 完成度
- 仕様の完成度
- 追加はまだありそう。
- 実装の完成度
- 変更し続けている。
- 仕様の完成度
M17N
- 実装方法
- 文字列オブジェクトがエンコーディング情報を持つ。
- 文字列の長さ
- いままで
- バイト数
- これから
- 文字数
- インデックスも変わる。
- いままで
"あいうえお"[2] #=> "う"
- ?a
- いままで
- 97(ASCIIコードの値)
- これから
- "a"
- いままで
- 以下の記述でソースコードのエンコーディングを指定できる。
# -*- coding: EUC-JP -*-
- 指定された文字コードとして正しいか調べるメソッドがある。
ブロックローカル変数
1.9.1のリリース
- 2008年6月説
- RubyKaigiにあわせて
- 2008年12月説
- いままでの慣習から
- 年内に枯れそうになさそう。
Ruby 1.9を広めるためにはどうしたらよいか?
RubyKaigi 2008
- 会場に質問「RubyKaigi 2007に参加した人は?」
- 数人が挙手した。
- 会場
- つくば国際会議場
- http://www.epochal.or.jp/
- (イベントカレンダーにはまだ記載されていない模様)
- つくばエクスプレスで45分
- つくば国際会議場
- 日付
- 2008年6月20日(金)から2008年6月22日(日)の3日間
- RubyKaigi日記
最近のRails
- あまり動きがない。
- 2.0.2
- 2007年12月17日リリース
- 初期値の変更
- 公開モードでのテンプレートの読み込み
- 更新しても読み込まれなくなった。
- Zed Show's Rand
- Thin
- Merb
セキュアコーディングノススメ JPCERTコーディネーションセンター 久保正樹 戸田洋三
聴講者に配られた資料
- クイズ その1: このコードの問題点は?
/* return y = Ax */ int *matvec(int **A, int *x, int n) { int *y = malloc(n * sizeof(int)); int i, j; for (i = 0; i < n; i++) for (j = 0; j < n; j++) y[i] += A[i][j] * x[j]; return y; }
- クイズ その2: このコードの問題点は?
/* リンクリストを解放する例 */ for (p = head; p != NULL; p = p->next) free(p);
脆弱性について
- 脆弱性の定義
- セキュリティポリシーに違反する行為をさせることを許す一連の条件のこと。
- バグなのか脆弱性なのか、判断が別れる例もある。
- CERT/CC
- 8,000件/年の報告
- Common Vulnerabilities and Exposures (CVE)
- 会場に質問「普段C言語を使っている人は?」
- 3分の1くらいが挙手した。
ミニセキュアコーディングセミナー(Cだけ)
- 動的メモリ管理
- malloc
- 確保した領域は初期化されない。
- free
- 二重に解放したときの規定はない。
- calloc
- メモリはゼロで初期化される。
- mallocよりおすすめする。
- realloc
- alloca
- スタック上に確保する。
- 使うべきではない。
- freeしてはならない。
- スタックオーバーフローの危険性がある。
- メモリマネージャ
- 以下の書籍に記載がある。
- 作者: ドナルド・E・クヌース,有澤誠,和田英一,青木孝,筧一彦,鈴木健一,長尾高弘
- 出版社/メーカー: アスキー
- 発売日: 2004/02/18
- メディア: 単行本
- 購入: 2人 クリック: 150回
- この商品を含むブログ (66件) を見る
- 動的メモリ管理に発生する間違い
- 初期化に関するエラー
- mallocは確保したメモリを初期化しない。
- 実際の事例
- Sun tarball Vulnerability
- tarballに/etc/passwdの内容が含まれていた。
- Sun tarball Vulnerability
- 初期化に関するエラー
C/C++セキュアコーディング (SEI SERIES・A CERT BOOK)
- 作者: Robert C. Seacord,JPCERTコーディネーションセンター
- 出版社/メーカー: アスキー
- 発売日: 2006/11/06
- メディア: 大型本
- 購入: 2人 クリック: 66回
- この商品を含むブログ (39件) を見る
-
- 戻り値検査の誤り
- 確保できなかったとき、NULLポインタが返されるのか、例外が発生するのか?
- phkmallocは、環境変数などによって、割り当て失敗時の挙動を変更できる。
- 解放済みメモリの参照
- 参照してもメモリフォルトになるとは限らず、再現性が低い。
- 多重解放
- むしろ、メモリリークの方が危険は小さい。
- 実際の事例
- MOPB-32-2007: PHP 4.4.5/4.4.6 session_decode() Double Free Vulnerability
- http://www.php-security.org/MOPB/MOPB-32-2007.html
- malloc(0)するとどうなるのか?
- 実装に依存する。
- 0バイト割り当てられる。
- NULLポインタを返す。
- 0バイト長の割り当てはしないこと。
- 実装に依存する。
- realloc(0)
- NULLを返したとき、元の領域はまだ解放されていないことに注意すること。
- 戻り値検査の誤り
- 回避方法
- freeしたら、変数の値をNULLにすること。
- コードに一貫性を持たせること。
- セキュアなプログラムにしないとユーザをリスクにさらす。
クイズの答え
- その1
- mallocの結果をチェックしていない。
- n * sizeof(int)がオーバーフローする可能性がある。callocを使うこと。
- yの指すメモリ領域を初期化していない。
- その2
- 解放したメモリを参照している。
オープンソースとRIAの融合: Seasar2とBlazeDSでFlex3が加速する。ひがやすを
- 会場に質問「AIR, FlexBuilderをもう触った人は?」
- 3分の1から2分の1くらいの人が挙手した。
- FlexBuilderの落とし穴
- 会場に質問「BlazeDSをもう触った人は?」
- 3分の1くらいが挙手した。
BlazeDS
- AIRとFlexとサーバサイドをつなぐ。
- 利点
- 速い
- バイナリプロトコルAMF3
- データ量が少ない。
- AJAX + JSONの4倍速い。
- バイナリプロトコルAMF3
- 速い
- 無償
- オープンソース
- 将来はLife Cycle Data Serviceに移行して欲しいと、Adobeは考えている?
- turnkey
- flex.messaging.MessageBrokerServletからソースを読むといい。
- Tomcatプラグインを使うと、BlazeDSのソースに触れられる。
- 設定ファイル
- BlazeDSでは異なるドメインにもアクセスできる。
- <mx:RemoteObject>でサーバとやりとりするのがお薦め。
- サーバのクラスのメソッドが呼び出される。
- メソッドの戻り値をListとすると、AMFのプロトコルがシリアライズしてくれる。
- JavaBeansを戻り値にすると、ActionScriptのクラスにマップ(変換)してくれる。
- なくてもハッシュになる。
- クラスを作った方が実行速度が速い(らしい)。
- サーバからデータをプッシュできる。
- FlexBuilderを使うと開発が楽になる。
Coraleef
- HTMLをAIRのアプリケーションに変換する。
- Visual Basicのアプリケーションも変換できる(有償)。
- 株式会社電通国際情報サービスが開発した。
- http://www.isid.co.jp/solution/development/coraleef.html
- AmazonのトップページをAIRに変換するデモ
更に高速に! 便利に! 待望のPostgreSQL 8.3完全ガイド 日本PostgreSQLユーザ会 石井達夫
海外のPostgreSQLの活動
- Free and Open Source Software Developers' European Meeting (FOSDEM)
PostgreSQL 8.3
- PostgreSQLの日本でのシェア
- 1位 Oracle
- 2位 PostgreSQL
- Oracleと同じくらい。
- 3位 MySQL
- 4位 SQL Server
- 5位 DB2
- 6位 Firebird
- CPUスケーラビリティ
- PostgreSQLは負荷が高くても性能は落ちない。
- CPUを増やせば能力は高くなる。
- 性能
- いままで
- 更新すると物理スペースが増える。
- これから
- Heap Only Tuple (HOT)
- 更新する列にインデックスがないときのみ有効
- 更新するときにページに空きがあるときに有効
- FILLFACTORの設定が必要
- 50%にすると、あえてページの半分しかデータを入れない。
- FILLFACTORの設定が必要
- UPDATEしてもデータ量が増えない。
- 自動VACUUM
- ブロック内の空き領域が小さいとき
- 具体的には、ページサイズの1/10かFILLFACTOR以下のとき
- アボートしたときはHOTは適用されない(VACUUMが必要)。
- ブロック内の空き領域が小さいとき
- Heap Only Tuple (HOT)
- 同期スキャン
- 問題
- 共有バッファに入りきらないような大きなテーブルを、複数セッションが順にスキャンすると、キャッシュヒット率が低下する。
- 解決策
- キャッシュに入っているデータからアクセスする。
- 注意点
- 行の返却順序が一定にならない。
- ORDER BYを行って明示的にソートする。
- 本来RDBでは行の順序は規定されておらず、アプリケーションでもそれを考慮していると思うので、普通にアプリケーションを作っていれば特に問題はない。
- 問題
- 非同期コミット
- fsync=off
- OSがどの順序でディスクに書き込むか分からないので、停電した場合、整合性が失われる。
- 非同期コミットでは、整合性は失われない。
- fsync=off
- ORDER BY ... LIMITの高速化
- 負荷分散チェックポイント
- 問題点
- チェックポイントのとき性能が低下していた。
- 問題点
- WALログの省略
- 新しくテーブルを作成してデータを挿入する(TRUNCATEして、COPYする)とき、ログが書き出されない。
- Auto Vacuum
- Vacuumを自動実行する。
- ソート処理のモニタリング
- ボトルネックの大半はソート
- 作業ファイルを使用するため。
- 作業ファイルの大きさなどが分かる。
- ボトルネックの大半はソート
- ログ項目の追加
- ロック待ちトランザクション
- チェックポイントログ
- 更新可能カーソル
- 従来のカーソルは更新できなかった。
- "FOR UPDATE"で更新可能カーソルになる。
- 全文検索機能
- XML
- いままで
ライトニングトーク
オレゴンから愛とエンタープライズ しまねOSS協議会 野田哲夫
Geeklogを活用する 今駒哲子
- 汎用CMS
無償CMS Geeklog導入ガイド (Gihyo Expert Books)
- 作者: Geeklog Japanese
- 出版社/メーカー: 技術評論社
- 発売日: 2007/03/25
- メディア: 大型本
- 購入: 1人 クリック: 29回
- この商品を含むブログ (15件) を見る
- SNSで活動している。
Pythonによるリアルタイムビジュアル記述環境"NodeBox" さとうしんご
もっと早く打て! 中本崇志
- 知的生産活動の生産性を左右するのはキータイピングである。
- GPLType
- http://bd.tank.jp/garakuta/index.html
- GPLをタイプするタイピングゲーム
- 教育にいい
- 10 fast finger
- タイピングイベント企画中
ゲットーの斜め上をいくWebフレームワークの開発
OpenSUSEの紹介
- ノベルティの抽選
日本電子専門学校システム制作コンテスト
- KIMNY
- 課題を管理するウェブシステム
- PHP
- Piece Framework
懇親会
ライトニングトーク
- ゲットーの斜め上をいくWebフレームワークの開発
- ライトニングトークのリベンジ
- 結果は成功した。
- CRUDの機能を自動生成した。
- Simutrans
- 鉄道を敷設して楽しむソフトウェア
- http://www.simutrans.de/
- http://japanese.simutrans.com/