JSer.info 200回記念イベントを開催したので、そのときのメモです。

以下にスライドや発表されたものはまとめてあります。

こっから先は個人的なメモです。

LoopBackについて @yuumi3

LoopBack (Open SourceのBaaS)を使ってみよう! その1. PostgreSQL接続とTwitter認証 - yuumi3のお仕事日記

  • BaaSは混戦状態
    • iPhoneの勉強会で使ったことがある人 : 2人
    • parse.com を使ってる人がいた
  • BaaSには2種類ある
    • Service指向
      • ある種の機能特化
    • Platform指向
      • 何でも出来るけど自分で作る
  • LoopBack
  • 現在のシステム
    • iPhone -> loopback -> PostgreSQL
  • LoopBackいいところ
    • API Explorer
      • ちゃんと動作してるのかの確認が簡単
      • GUIでどんどんチェック出来る
      • 条件、並びをfilterで指定できる
      • slcコマンドが強力
        • deployなどが簡単
    • RDBと繋ぐことが出来る
      • Railsと繋ぐこともできた
      • MongoDB使うのが楽
      • テーブル定義はカスタム出来る
    • ドキュメントがしっかり出来てる
      • 企業が作ってるのでドキュメントがちゃんとある
    • サンプルコードがある
    • OSSなのでソースを見ればいい
  • 悪いところ
    • Nodeについて知らないといけない
  • 結論
    • APIを作るならかなり便利

Inside TagManager - brn

  • どこで使われてるか
    • タグを埋め込む
    • ユーザの行動を記録したマークする
    • 色々使われ過ぎでごちゃごちゃ
  • 問題
    • タグ変えるの費用がかかる
  • タグマネージャを使う
    • タグマネージャのスクリプトを一個埋め込む
  • TagManagerの実装の問題
    • document.writeを使いまくり
    • 大文字のタグを使ってたりする
  • 初期の実装
    • document.wrtieで一行一行だしてた
  • 地獄の始まり
    • まずdocument.writeをなんとかしよう
    • document.writeの再実装
    • 複数に分けて出力できるので再実装無理
    • バッファにためてまとめて書き出す
  • タグの実行時間やエラーを検知したい
    • エラー抑制
      • インラインならtry-catchする
    • 外部タグのエラーの問題
      • document.writeappendChild等も乗っ取ろう!
  • ロード状態管理
    • IE6-8はonreadystatechangeを使う
    • しかしバグってるので無理
  • 実行時のエラー
    • window.onerrorを使う
  • タグの実行機能
    • 実行前にdocument.write等をすり替える
    • IEはevalが壊れてるのでwindow.execScriptで実行
    • コメントがあると動かないので除去する
    • これで外部タグを支配した
  • エラー検知
    • 現在実行中のタグを持っておく
    • グローバルな優先度付きのキューを持っておく
    • appendChild等の優先度を持たせて、ブロックを再現する
    • 管理画面でエラー率が見られる
      • クライアントが不安になるだけなので見ないで!
  • 実行ルール
    • 「URLパターン?」-> 「ページ内の文字列でやりたい
    • jQueryのロードが必要
      • noConflict(true) で衝突を避ける
  • マクロの実行
  • イベントの実装
    • クリックした時にタグを配信したい
    • 画面遷移したら計測失敗する
    • イベントの遅延
      • document.documentElementにイベントを設定
      • 優先度をつける
      • event.preventDefaultでページ遷移を防止する
      • ページ遷移イベントを最低優先度にする
  • タグマネージャー on タグマネージャー
  • Vendors
    • CA
      • 無茶な機能が多い
    • Google
      • 無難な機能
    • Yahoo
      • APIで後ろで通信してる
    • TagKnight
      • 無茶
  • タグマネージャー
    • 脆弱性の不安
  • document.writeでブロックした方が効果が高い!

Web Cryptography API - @iskmsy

  • WebCryptoで実現できる話
  • なぜAPI
    • JavaScriptで実現できるけど問題がある
    • 遅い
      • 鍵生成 = 素数
    • セキュリティ
      • VM上で秘密鍵を作っても大丈夫なのか?
      • VM上だと危ないかも?
      • 攻撃される可能性があるのかも
    • 安全性の確保
      • 統一的な安全性を確保
      • 仕様として安全性を確保する
    • 暗号ってなに?
      • 暗号が実現出来る機能
      • Encryption(暗号化)
        • 平文から暗号文を作成する
        • 秘密鍵を持ってる人しか見れない
      • Signature(署名)
        • 誰が書いたのか特定できる
        • 署名と文章を送る
        • 誰が送ったのかを確認出来る
        • 改ざんされてないかだけでは、なく誰が書いたのを特定出来る強い
      • Authentication(認証)
        • 通信相手を特定できる
      • DRM
  • WebCryptoのユースケース
    • Cloud Storage Encryption
      • サーバにアップロードする前に暗号化する
      • ユーザ側で暗号化するのでユーザしか見られない
    • Document Signing
      • 元データからハッシュ関数でハッシュ値を作り暗号化
      • これから署名を作る
      • ユーザーは秘密鍵と公開鍵をもっている
      • 相手は、公開鍵と署名を使って誰が送ったかを確認出来る
    • Multi-factor Authentication(認証)
      • OTP(= One Time Password)
      • ユーザ名とパスワードを使わないで認証が可能になる
      • 公開鍵をWebCryptoで作成、OTPを生成(暗号化される)
      • 秘密鍵でOTPを復号する
      • パスワードを直接サーバに送らない
    • DRM
      • 現状のDRMはFlashに頼ってる
      • ブラウザだけで完結できる
    • 実装状況
      • BlinkとIEは実装
      • Geckoは開発中
      • Webkitは開発中(新しい仕様に対応してない)

Brainfuckで遊ぼう その2 - @shigemk2

  • Node.jsでBrainfuck
  • Brainfuck
    • 8つのキーワードで言語を書ける
  • Node.jsでどうするのか
    • Exeコンパイラを作る
    • Brainfuckを実行Exeコンパイラを作る(Win7)
    • Brainfuckを実行Exeコンパイラを作る(Win2000)
  • EXEファイルの仕組み
    • ヘッダーがあってセクションがある
    • objdumpで見られる
  • objdump -dで逆アセンブルする
    • Aと出力する = 4行ぐらい
  • hexdumpしてバイナリの中身を見る
    • このバイナリをNode.jsで出力すれば動くものが作れる!
  • しかるべき場所にしかるべき値を入れるようにする
  • これをリファクタリングしていく
  • Brainfuckを実行するEXEコンパイラ(x86 Windows7対応)
    • Brainfuckをパースしてバイナリを書き込んでいく
    • 主なエラー
      • レジスタに値がはいってないエラー
      • Brainfuckのファイルサイズが大きすぎる
      • 読み込むファイルのサイズの多く対応しようとするとハードコーディング
  • Brainfuckを実行するEXEコンパイラ(Windows CE、SH3)
    • ヘッダとかをCE用に合わせる
    • .textにアセンブリを直書きする
    • 逆汗して命令を確認していく
    • 直接CEの端末で書くのは無理なので、CFにEXEファイルを入れて実行させる
  • 感想
    • ハードコーディングしてるとアドレスの値をずらそうとしたら大変

最後の方電池切れたので、 万が一のためにLTはメモれなかった。