FPGA FPGAの状況 FPGAボード 立地で使い勝手の良いものは高い 雑誌付録もあるが…… PDP-11 16bitミニコン 1970-1990頃 回路図などの詳細なマニュアルが公開されている 大型冷蔵庫くらいあったものが、最終的には1チップに 初期のUNIXのプラットフォーム ソースコードが公開されていて、UNIX第6版の詳細な注釈本(Lions本)も出ている FPGAにPDP-11を実装する 目標は「PDP-11用のプログラムが動く」 PDP-11の命令セットや周辺回路はHDLで記述 HDL 見た目はプログラミング言語に似ている コンパイル・リンク・ロード→論理合成・配置実装・プログラム 本質的に並列処理 仕様を記述する、という思想から出発 テスト記述も意識している 主流はVHDLとVerilog HDL SystemCというものもあるがいまいち流行らない VHDL Adaベース 強い型付け言語 激しくダサい(主観) 何故ダサいか 大文字と小文字の区別がない エラーが出ないのに動かないことがある シミュレーション HDLによる記述はシミュレーション出来る ghdlなら無料 波形が格好いい 目で見て理解 問題の発見に有効 信号が伝わっていくときの遅延など、様々なレベルでシミュレーションが出来る シミュレーション例 ghdl + gtkWave UNIXのブート中の例 何をやったか w11(OpenCores)をAvent Microboardに移植 元々他のFPGAボードでは動いていた 入出力デバイスのフィッティング デモ ……元々使っていたボードが壊れましたので出来ません -> 別のボード UNIX v6 当時は出力がターミナルではなくてプリンタといったこともありえたので、 現在のように環境などがログインプロンプト時に出ない w11 CPU coreのdoxygen出力 ロジアナ XilinxならChipScopre 何が嬉しいのか ソフト屋はマニュアル通りハードウェアが使えれば十分なのか ユーザはマニュアル通りソフトウェアが使えれば十分か 必須ではないが、知っていればお得 野望 PDP-11の回路をFPGAでそのまま実装 VAXを実装 「PDP-11でライバルと差を付けよう!」 Extreme Java @Fantom_JAC 自己紹介 Java原人(Java原理主義者) Javaのためならなんでも 無線、特にZigBee (Java原人からみた) Javaとは 小型の組み込み機器等に使えるプラットフォーム やりたかったこと JavaからUSB無線ドングル 環境 Javaで直接レジスタがたたける EHCIデバイス 想定と違った 途中に仕様の分からないドライバと・仕様の分からないAPIが挟まっていた 必要なもの EHCIドライバ USBスタック・フレームワーク Ralinkドライバ 802.11MACスタック TCP/IPスタック EHCIとは USB2.0のコントローラ仕様 ちゃんとレジスタの仕様が公開されている 用意されたUSB環境 cHCが存在しない EHCIで1.1も繋がる謎仕様 1ポート OTGを経由している OTGにはレジスタの仕様の標準がない Global Controller OTG Controller 「せめてJavaらしく」 自分でメモリ管理するJava new出来ないので USBスタック JSR-80にたぶん準拠 実装はない…… TCKは通してません IMBの作ったRIを使用 squilla-jsr80 JSR-80をOSGiに対応させた UsbDeviceDriverを継承するとデバドラが簡単に作れる Ralink その界隈ではあまりにも有名 RT2860/3070を使用 FreeBSD用非公式ドライバを移植 Ralink IO Ralink共通(?)のAPIセット たぶんUSB以外のインタフェースでも共通 USBの実装はControl Ralinkの謎 起動時にファームウェアを丸ごと転送 しかも転送がよく転ける 膨大な量の転送 改造すれば普通に電波法破れそう メモリいじってパッチを当てている疑惑 怪しいノード管理 wcid = associationId & 0xFF 8bit <- 16 bit ControlFrameだけは実装されているっぽい リアルタイム性の問題 squilla-net Javaでプロトコルスタックを書くためのライブラリを作った 802.11関連 ManagementFrame MLME Javaに欠けているWLAN用API Androidにはある…… MLME SCAN JOIN AUTHENTICATE JOINがよく分からない 実際にはsyncのこと? TCP/IPスタック IPv4 適当 フラグメント処理とかやっていない ARP RequestおよびReply監視用Thread一本 UDP 簡単 Thread未使用 TCP もう二度と実装したくないプロトコルスタック堂々の一位(一人に聞いた) 不可解な輻輳制御 理不尽な仕様書 ... Slow-startもCongrestion avoidanceもなし TCPConnectionごとにThread一本 基本動作 基本はステートマシン tickと呼ばれるMethodを無限ループで呼び続ける 3Dゲーム開発でよくやる手法 tickされた時に 受信FIFOに溜まっていれば取り出して、TCPInputに投げて処理 なければTCPOuputにて、ACK可能か判断し、送信 最後に再送タイムアウトが発生したかチェックして、再送信 何故Single-Threadか 当初はMultiの予定 GCが使えないので管理が大変 GCより高いプライオリティで動いている プログラムのミスが起こりやすい リソースを消費する tickが空回りしないように何もしないときは50ms程sleep BufferedPipe スライディングウィンドウ実現のために作ったクラス 内部はリングバッファ 非同期に可変長のバイト列を出し入れ つまり両端がInputStream/OutputStream 探したけど意外とこういうクラスはなかった 元々TCP向けなので入出力個別にシャットダウン可能 readするとブロック 残酷な現実 やっぱりどうしてもTCPはまともに動かない 相性が酷い より具体的にいうと、暗黙の了解のようなものが多かった スクラッチから実装することの意義 勉強になる 百聞は一コーディングにしかず デバッグが容易 腐っても自分の書いたコード ライセンス問題ゼロ 話のネタになる 分かったこと Linuxはすごい EHCIのコードの雑さ ネット周りのスパゲティ よくこれで動いているな FreeBSDは読みやすい 特にネットワークスタック IEEEの仕様書は非常に親切 ちゃんとPDFで公開されている! IETFの仕様書は非常に非親切 そもそも ギョウムで必要でした 半年強で実装 結局使われず TCP動かなかったし… 「Javaなんて使わない方が良いんじゃないの?」 今後 JavaMEがCortex-M向けに出るらしいので 使い道募集中 組み込みJavaの場合GCが無い ImmotalHeapというものを使用する 自分でfreeする なのは完売 super_rti とある関数のバトルプログラミング フック処理 相手のプロセスに干渉して、特定のタイミングで自分の任意の処理を呼ばせる 外部からソフトウェアの拡張を行える 誰からもフックされないようなプロセスを作るには? 管理者特権は出てこない Windowsでのフック dllを作る フィルタドライバ APIを使う よく使われるAPIの話 dllやドライバは管理者特権が必要だったりで、気づかれやすい dll injection OSのプロセス保護を突破しやすい プログラムを作りやすい ドMくんとドSくん なのフェイの薄い本ください -> なのは完売 守りたい、この笑顔 anti dll injection 賢いLoadLibraryAを作ればよい 攻撃用dllであれば拒否する APIフック 今回は sexyhookを使う バリアを作った感じ LoadLibraryは複数ある LoadLibraryAがやられたようだな… 裏ボス:SetWindowsHookEx LdrLoadDll LoadLibraryの元締め的役割 SetWindowsHookExも採取的にはLdrLoadDllを呼び出す LdrLoadDllに対応すれば良い 全てのdll injectionに対応可能 dllを使わない攻撃 実はdllは無くても攻撃出来る CreateRemoteThreadで直接マシン語コードを挿入可能 anti thread injection そもそもThreadはどうやって作られているのか スレッドが実行されたら、実行される中身をUSOThreadに飛ばしてしまう スレッド開始 -> BaseThreadInitThunk -> uso thread 判別が難しいので、現時点では無差別 やられっぱなしは悔しいので攻性防壁 結構難しい 攻撃してきた相手を特定する必要がある 注意としては、dllを削除するのは危険 anti thread injection 攻撃者のコードによっては反撃出来る dll名からexeを特定して、exitする zap! zap! 攻撃してきたらsleepに置き換える 攻撃元はfreezeしてしまう 残酷なのは戦争 相手の攻撃より先にバリアを張るのが大切 コマンドとシェルスクリプトで企業システムを作る 上田隆一 @uecinfo USP友の会 @usptomo bashでCGIを書く人間 word pressを使っていたが、injectionされたので「bashで作ればinjectionされないでしょう」 Universal Shell Programming Laboratory 自社開発指導 顧客企業の情報システム部 CUIでOSを使う講習 vimの講習 awk・sedの講習 シェルスクリプトの書き方 イントラ用CGI いわゆるSIの世界 4次受け・5次受け当たり前 DBのレイアウト表の作者が某大手の3次受け 1次2次は何をしてたのか? まず、どのRDBMSを入れるか、から始まる 実績があるが高い企業と、安いが知らない企業はどちらが選ばれるか 知らない企業は警戒される ソフトウェア開発の問題点 見えない 安いといわれても、実物がどんなものになるか分からない 失敗リスク 関わる人が増えていく 失敗しない設計を請け負うSE・下請け、弁護士 「これを入れれば大丈夫」というミドルウェア 俺たちは成功する、という広告を請け負う広報・代理店 「震度ゼロで倒壊しない家!」 そんなに人が居ないソフトウェアハウス 実績をコツコツ作る 自分たちで作ってもらう 仲間作り 自分たちの取り組みを知って貰う 失敗しない仕組み 人・マニュアル・「見通しのよいアーキテクチャ」 USP手法(ユニケージ) コマンド+シェルスクリプト データをテキストファイルで持つ ファイルシステムを使う 余計なソフトウェアを入れない コマンド、apache、NFS、その他標準のもの データを整理整頓するノウハウ塊 ファイルがファイルシステム上であちこちに分散してしまわないようなシステムを構築する データの整理整頓 実会社でのデータの流れを意識 例えば伝票の扱い DBに相当するレベル 受け取った伝票は捨てないで綴じる 綴じた伝票をノートに書き出して台帳 台帳から統計データを集計 アプリケーションに相当するレベル 統計データを加工、問われたら答えるデータを準備 Apacheのログ解析での例 L1 ログをそのままコピーしてきたもの L2 awkで扱える形式に変換 L3 集計したデータ L4 表示する形式にしておく ブラウザに表示する直前のデータ -> アプリケーション DBを使う方法との差異 DB v.s. テキストという話ではない 「DBを使う」は道具の話 レベル1-5はアーキテクチャの話なのでもっと親切 データを整理整頓して失敗を避ける仕組み DBは木構造の概念が薄い -> DBより生のUNIXが良い ファイルからファイルへの変換 ファイルの入力リダイレクト -> コマンド -> パイプ -> コマンド -> 出力リダイレクト コマンド+シェルスクリプト コマンドはCで書かれているので速い シェルスクリプトの例 関数を使わない sedが酷い ログファイルに全角は来ないだろう -> 「あ」をsplit文字に使う プログラミングしない人にはこちらの方が分かりやすい gyo というコマンドで行数を数える wcはオプションが必要、遅い 一億行のparasort -> 20秒 keta コマンド open-usp-tukubai FreeBSD ports デバッグはteeとheadコマンドを使っている FreeBSD 9 新機能 後藤大地 @daichigoto さらに先の未来10へ & 最小特権オペレーション Capsicum ONGS オングス 代表取締役 FreeBSD committer FreeBSD unionfsの再設計と再実装 FreeBSD Daily Topics 可能な限りデイリーでFreeBSDのトピックをアップ FreeBSD Expert 2012 Digital Edition EPUBとHTMLで 今すぐ購入しよう! ZFSv28 「ZFSのバージョンは上げない」が安定運用の鉄則 どうしても新しい機能が使いたい場合は新しいサーバを作ってコピーが良い 重複排除の機能 実装上非常に大容量のメモリが必要となる 4GB以上、8GB~が推奨 AMD64版が推奨 v28以降のコードは出るのか Oracleの動きが分からない 暗号化はGEOMを使うという手もある 最小特権オペレーション Capsicum NFSv4のサポート nfsuserdが新しく追加 useridとgroupidのマッピングを行う必要が無くなったため デーモンの起動する順序が重要 rcoderコマンドで確認出来る nfscallbackd コールバックの機能を使いたいときは有効にする MacOSX LionからNFSv4にアクセス出来るようになった USF2 Soft Updatesジャーナリング機能 どのタイミングで再起動してもデータは壊れないといわれている メタデータとデータ本体の整合性がとれなくなることはある スナップショット機能 起動時にfsckが掛かる場合、バックグラウンドfsckを行うために用いる ただし、I/O負荷が高いので、実用には耐えかねる FreeBSDでは、Soft Updatesの操作に対してジャーナルログを取るようにした ブロックサイズとフラグメントサイズが引き上げられた dumpfsを見ると分かる UFS vs ZFS 必ずしもZFSが良いとは限らない 小さいファイルが大量にある場合はUSFは高速で動く BSD Installの導入 sysinstallの欠点 最近のFreeBSDで導入された機能を使用出来ない CUI installer OSの機能をフルに使う場合は、Cで書くよりもシェルスクリプトで実装した方が拡張しやすい GUIインストーラがどうしても必要であれば、PC-BSDを使うと良い TCP輻輳制御アルゴリズムの切替え 本書ではjailとVImageを使って別々のネットワークスタックを用意し、個別の輻輳制御を試している 動的切替えが重要な理由 無線の輻輳制御と高速なネットワークの輻輳制御を一つのアルゴリズムで行うのは現実的ではない v6オンリーカーネル v4が有効になっていると、v4が影響して問題が出ているのか、分かりにくい v4オンリー、IP無しのカーネルも可能 ATAサブシステムがCAMサブシステムに統合された disk ad -> adaに名前が変更になった ataraidが使えなくなった GRAIDを使って GPTがデフォルトへ MBRの制限が無くなったので、スライスを使わなくなっている FreeBSD 10へ USF2のライブラリサイジング BHyVe+jail GCC -> clang GPL3への懸念 どうなるか分からない部分はある Capsicum ケーパビリティの実装の一つ FreeBSDの既存のリソース保護機能 保護ドメイン アクセス制御リスト 複数の保護レベルを持ちたいとき 特に問題になるのはChromeのようなアプリケーション 最小特権オペレーション エンジニアが学習する量が非常に少なくて済む ファイルディスクリプタに、どこまでアクセスして良いか書かれている cap_enter(); イメージとしては、プロセスが自分でjailの中に飛び込んでいく感じ ケーパビリティに入った後にopenしようとするとエラーになる 一度ケーパビリティモードに入ると、forkしても出られない Chromeの実装における書くOSの追加コード Windows 20k以上 FreeBSD 100 FreeBSDサーバ構築・運用ガイド 労力の割に儲からないので、これが最後のFreeBSD本になるかも… ZFSの特許に対するFreeBSDの対応 ディベロッパーからの回答「I don't know.」 会社に任せているので分からない ライセンス的には問題ないでしょう dtraceは現状のまま取り込むことは出来なさそう @sora_h Self Introduction Rubyコミッター 中卒フリーター (オワコン最終兵器) cookpad 新幹線通勤 飯テロ tweet紹介でほぼ終わった 「あと33分の質問出来るよ」 Nyarlathotep @hiromu1996 Self Introduction 「ちゃんと高校に行っています!」 未踏の合宿から直接来ました 名状しがたいプログラミング言語nyaruko brainfuck置き換え(笑) Esolangの恐ろしさを教えてやる SKIコンビネータ チューリング完全 Uコンビネータ チューリング完全 同級生の純粋関数型言語野郎に、Iotaの命令置換じゃんといわれた ニャルコンビネータとか作る ------------------------------------------------ LTタイム m4で実用的プログラミング @a4lg 最初にお詫び 例によって手抜き ネタかぶり… => @hiromu1996 m4とは きわめて実用的なマクロ言語 CPPなどよりはるかに自由度が高い いろいろな所で使われている configureスクリプト (autoconf) sendmail posix m4でプログラミング マクロの中で同じマクロが出現しても良い CPP: #define a a -> a m4: define(`a', `a()')a() -> 無限ループ マクロの中から新しいマクロを定義出来る GNUの拡張はもはやカオス m4 言語 クオート `文字列' ``マクロ展開を抑制'' dnl コメント マクロ変数 ifelse() 数値計算をやる expr(`数式') 便利すぎるので今回は禁止 incr(`') / decr(`') m4における再帰 再帰 = ループ ≠ 再帰呼び出し m4におけるマクロはスタックを使わない m4におけるマクロ定義 = スタック マクロ定義はスタック状に詰むことが出来る 数々の黒魔術 ループ Diversion exprを使う m4はチューリング完全なのでは? brainf*ck処理系の実装 DEMO trコマンドで、brainf*ckの入力をm4のマクロに変換 おまけ 会場で10分で作った「名状しがたいプログラミング言語」 github:a4lg Arduinoで作る耳grep @katsyoshi whoami mikutter fav.rb, pakuri.rb 耳grep 2012/2/19 盛大なgrep TL バイナリにwavヘッダ Arduino for 耳grep バイトごとに音を鳴らそう headerとか面倒 PCでやっても面白くない => ではArduinoで Arduinoとは PICみたいなもの プログラマブル DEMO 再生が速すぎて…… 1MBで30分近く掛かる おわり 聞こえにくかった? ノイズですまんかった バイナリアンだったらもう一工夫在るのかなぁ grepはどこでやるのでしょう? 考えてなかった! シリアルのレートは9600で、サンプリングレートは? そのまま出ている バイトを10倍して、40を足している Software Development with Editor @suma90h Interest Developing Hex Editor Development life-cycle with Text Editor 我々は毎日何を行っているのだろう? テキストエディタはこのままでいいのか? KernelとVMの共通点 ハードウェアの抽象化 リソース管理 APIの提供 テキストエディタは? テキスト内部を気にせず編集 -> 抽象化 編集バッファ -> リソース管理 elisp -> VM? コンテキストスイッチ kernel <=> アプリ VMM <=> kernel -> 今回は考えない エディタ <=> 人間 エディタと人間 ソフトウェア開発において 考え、設計し、 実装する with Editor ビルド、実行、デバッグ コンテキストスイッチ バイナリエディタでは 16進数ダンプ、ASCIIなど読める部分を読む 色で見る、耳? 考える データを抜き出したり加工したり 複数のことを同時に考えるのは人間には無理ぽ GB単位のバイナリデータを目grepは無理 バイナリエディタで支援 大規模ソフトウェア開発 コード量が増えると一度に編集出来ない 未来のエディタに求めたいこと バイナリエディタ 求められる機能ははっきりしている -> ok テキストエディタは? Terminalとエディタ、人間のコンテキストスイッチを減らしたい でも、マルチタスクしたい リファレンス、ブラウザを見たい 分散システムの結合テストとかもやる SAN値論理と名状しがたいプログラミングSAN値Prolog たけおか @takeoka 二値論理 三値論理 e進数がもっとも情報の表現効率がいい 2.72進数というのは扱いにくい -> 三値論理 SAN値とは 論理型言語にSAN値というものを入れる 評価時の「頭のおかしさ具合」を「SAN値」と呼ぶ 評価時に、SAN値に近いSAN度を持つ節が選ばれる 節は評価して、真であったらSAN値が比較される 似た研究 ファジィ論理 Prolog 閾値より大きな事実が選ばれる 「大きい」ではなく、SAN値に近いものを選ぶ Lispで書いたPrologの処理系 「set-sanchi」 プロンプトが「にゃ?」 軽快なPlan 9 Update Illumos KVM上陸 @go_vm 軽快なPlan9では KVMの上で動いているPlan9 ネットワークに繋がっていないゲストがOSとのsocketを呼び出して、外のネットワークからデータを取ってくる ハイパーコール Linux KVMがIllmosに移植された Joent社の成果 Node.jsとかもやっているところ コードの構造は同じ Linux KVMが読めれば同じように読める ただしコードはBSDスタイル 床抜き clojureでスタブを書いた 起動中にbell研のサイトに繋がってhtml取ってくる しかし、ifconfigするとネットワークは繋がっていない Illmos KVMの利点 ネットワークの設定が楽 dtraceが使える いろんなイベントを観察出来る 軽快なBHyVe @syuu1228 BHyVeの現状 独自ローダからFreeBSDカーネルをゲストOSとしてロード、ブート出来るだけ BIOSが動かないので、ブートローダが動かない BIOSの仕組み int13h -> ソフト割込み -> CPUが割込みベクタを読む -> BIOS状のハンドラを実行 KVMでは SeaBIOSがHWへのIOを実行 実機状のBIOSと同じ動きをする IOはTrapされてQEMUで処理される SeaBIOSを載せればいいやん 却下 <= GPLだから BSDLでBIOSをエミュレートするソフトは既にある doscmdとか (FreeBSD状で動作) 仮想8086モードでDOSプログラムを動作 BIOSコールなどをtrap 32bit実装だし、移植するならhypervisor側に入れた方が良い ソフト割込みの時点でTrapするようにする IntelVTの機能でソフト割込みをTrapすると… 全てのソフト割込みがTrapされてしまう 多くのOSがシステムコールにソフト割込みを使っている ソフト割込みの中からBIOSコールだけを抽出したい ステート管理が必要になる リアルモードを用いるOSではシステムコールでTrapがかかる 軽快なBIOSコール VMの床抜き術はここでも使えます! 疑似BIOSを用いる 疑似BIOSがVMCALL命令を発行 AMD対応は? ToDOリストに載ってる段階 つくっておぼえる!仮想マシン ~直前で実装編~ @siritori @iorivur MIPSのマシンを erlangで haskellで 実装してみました 昨日頑張りました 意地でも手続き型言語では書かない Erlang アクターモデルな並列指向言語 OTPというすごいフレームワークを使うための言語 出来ている所 出来ていない所 ELFローダ レジスタとメモリ ETS 命令の実装 高階関数 感想 MIPSのVMを複数立ち上げるのも朝飯前なのでやってみたい Haskell みんなMonadになる できているところ できていないところ 例外、コプロセッサ命令、ジャンプ命令 実装 再帰がそのままクロックのようなイメージ Erlang 実行中にコードの書き換えが可能 Haskell インタラクティブにレジスタに対する命令が入力出来る なんでMIPSなの? さすがにx86をやる勇気はなかった なんでErlangなの? 関数型言語を触ってみたかった ビットマッチングが出来たから Xとかオワコンじゃね…っていう男の人って @naota344 自己紹介 SD誌でLinuxカーネルについて連載している X.ORGのコード スパゲティ XはもういやなのでWayland Xのアーキテクチャ X serverじゃまじゃね? Wayland client <-> Compositor <-> KMS / evdev Wayland Terminal フォントが気持ち悪い デモ Wayland自作クライアント 画像を表示するクライアント Wayland Waylandはプロトコル オブジェクト wl_display コアオブジェクト wl_shm クライアントとのメモリ共有 などなど メッセージ UNIXドメインソケットで送られる クライアント -> サーバ リクエスト 逆はイベント 実装 Haskellで書いた 問題点 クライアントIDを適当にやったらSEGVした intがうまく渡せないときがある Haskellだけど実装があれ Fdをメッセージと一緒に渡すので、パッチが必要だった x86_64/Linuxに独自メモリ空間を買って増設 @nminoru_jp メインフレームのソフトウェアエミュレータ 富士通のメインフレームのエミュレータ IBM System/370互換 エミュレータを高速化するには ゲストとホストでCPUが異なる計算機を想定 ARM,MIPS,SPARCなどをx86_64上で ゲストの仮想メモリがネック ホストのMMUを使いたい どうやって使う ・OSを自前で作る ・OSから一部のCPUを切り離して独自処理 ・既存のOSを改造 Linuxの仮想メモリの中に自分専用のVMを! /proc/oreorevm をmmap CPU命令をインタープリタがロード・ストア ゲストのTLBミスなどはSIGSEGV Hugetlbを参考に Shadow Page Table ゲストの仮想メモリ空間をホストのページテーブルに組み込む 俺俺VMの利点 ゲストCR3を切替え対応 ゲストのコンテキストスイッチに応じてSPTの書き換えが必要 毎回破壊するとコストが高いので、過去のSPTも保存 PUDをゲスト仮想空間一つに割りあてると効率がよい ゲストモード対応 ゲストにもusermodeとsupervisormodeがある JITコンパイラ対応 まとめ 俺俺VMではx86_64のMMUが使える! カーネルのリベースが必要だが、大変 なにかうまい手はないか…… bcacheのベンチマーク 低速で大容量のブロックデバイスを高速で小容量のブロックデバイスでキャッシュすることで 高速で大容量のブロックデバイスを実現しよう! consumer -> bcache -> SSD -> HDD まだLinuxメインラインに入っていない /dev/bcache0 などという名前のブロックデバイスが出来る ベンチマーク1 iozone HDD: Seagate 2.5inch 750G 7200rpm SSD: Intel 520 120GB RAID5: LSI MegaRAID Write HDD -> SSDで5%~7%の性能アップ Rewrite だいたい同じくらい Random Write だいたい同じくらい あまり利点が見つけられなかった ベンチマーク2 KVMで運用している既存の共用ホスティングサーバのディスクイメージに対するvfs_read/writeをSystemTapして記録 レイテンシを計測 bcacheありだと、レイテンシのばらつきがほとんど無い 無しだと、レイテンシがばらついてしまう ただし、使っているときより速いこともある FBのflashcacheとどう違うのか? write backとして使った時に、SSDにだけ書かれてHDDに書かれていない状態で電源が落ちても bcacheだと救える キャッシュの扱い方が違う bcache -> b-tree flashcache -> CPUのキャッシュと同じやり方 bcacheだとアクセスが偏らないみたい Tinycc on NaCl @shinh モチベーション ブラウザでちょっとCを実行出来ると嬉しい IOCCCのコードを実行してみよう 仕組み Tiny C Compiler セルフコンパイル可能な3301BytesのCコンパイラ TCCの特徴 コンパイルは速い 出来たバイナリは遅い? 割といろんなものがコンパイル出来る コンパイラであり、プリプロセッサであり、リンカでもあり、ローダでもある 3万行くらい Native Client CUIで実行するためのloaderもある NaCl Sandboxのつらいところ いろんなところがころころ変わる ドキュメントがない TinyCC on NaCl ToDO 頑張った割にまだ色々動かない kernelvim探検隊 @shougomatsu Vim枠 vinariseについて x86勉強会で発表する内容の予告編 XXDには問題があるので、vinariseを作っている bitmap viewer 驚異のvimスクリプトテクノロジー 動的にバッファが増えていく……! MBCSにも対応! bitmap viewerによって目grepが可能に バイナリっぽいデータが見つかったらvinariseで開く、といったことも可能 あなたにとってVimとは? どの要素も持っているが、エディタではないことは確か 彼女とVim、どっちをとる? 一応、彼女の方が大切 bviとはどう違うか メモリ展開しない 日本語対応