Mozilla Vision 2012 Conference Day アウトラインメモ

Mozilla Vision 2012 – Conference Day

Mozilla Vision 2012 Conference Dayに参加してきたので、その時のメモです。(いつも通り正確性は保証されません)

NewImage

Read the rest of this entry »

今まで書いたJavaScript情報の読み方をまとめてみた

もう既に見た人もいるかもしれませんが、オフライン勉強会でJSer.info一周年について発表してきた | JSer.info
今まで書いてた記事のまとめ的な発表をしてきました。

世界のJavaScriptを読もう @ 2012を発表していた時、RSS購読フローの部分がなぜか受け良かったようなので、簡単な補足を書いておきます。

Social flow

自分はRSSリーダを多用しているので、何でもRSSにしてとりあえずRSSリーダーに流れてくるような状況を作っています。
Webサイトを見ていて、Read It Latorなどで後で読むことにしても結局読むのを忘れてしまうことがあるため、Read It Latorに登録したリストがRSSとしてRSSリーダーに流れてくるといった感じです。

Pinboardやはてなブックマークやソーシャルニュースサイト等もRSSで購読していると、同じ記事を扱ったものが何度もRSSに出てきます。
これは今からRSS購読すべきタグと検索結果でLDRの読み方にでも書いていましたが、SBMなどは量が多くなってしまうので、全て目を通そうとすると気疲れします。
そのため、SBMや検索結果等のRSSは高めのレートにして心理的に飛ばしやすい(LDRでいうSキーを押す)状態にしています。

なんで検索結果のRSSは★4にしてるかというと、検索結果RSSで出てくるサイトは★3のサイトと被ったりすることがあるので、
★4で飛ばしても★3で出てくるからまあいいっかと適当な感じで読める安心感が生まれます。

今からRSS購読すべきタグと検索結果 | Web scratch

ここから、発表してたときにウケてた部分ですが、RSSリーダで読んでいるときに少しでも気になった記事は
とりあえずTwitterへ投稿しています。(Post Now browsing to TwitterがLDRから直接投稿できるようにしているのもその辺の関係)
一応軽くは目を通してからTwitterへ投稿していますが、専門的な記事や英語の記事など一度みるだけじゃ理解が出来なかったり、判断が難しい記事も多いと思います。

そういう時にTwitterのフォロワーから反応があると理解しやすかったりします。
またFavやRTがあったものが流れてくるようにRSSを購読しておけば、重要な記事 (少なくてもフォロワーが興味を持った記事)が再度RSSとして流れてくるようになります。

こういう感じで、重要な記事は何度もRSSとして流れるようにして、読み忘れを減らしたり & 心理的に軽い気持ちでフィードを読み飛ばしても大丈夫なように意識しています。
他の人の力も借りて手を抜きつつ、人があまり見ないようなところもチェックするようにして、いろいろな情報を共有できればいいかなと思います。

どういう所などをみているかについてはオフライン勉強会でJSer.info一周年について発表してきた | JSer.infoのスライドの方にもまとめたのでそちらを見てください。

 

    shibuya_sp 勉強会 vol1 アウトラインメモ

    #shibuya_sp 勉強会 vol1 : ATNDに参加してきたので、その時のメモです。

    iOSアプリケーションのUnit Test – 岸川

    テストを習慣化するには

    なぜテストを書かないか

    • テストの効果がわかりにくい
    • iPhoneアプリのテストってどう書けばいいのかワカラナイ
    • デバイス固有のデータを利用していたりする

    ツール/フレームワークを使う

    • 繰り返し実行するのが簡単
    • 自動化できる
    • テスト結果が見えてくるようになる

    無理をしない

    • モデルのテストは書きやすい
    • 論理構造はそう簡単に変わらないはず
    • 繰り返し実行するメリットがあるので(正常系/例外/異常/境界値)をちゃんとテストする

    表示は論理構造が簡単にひっくり返る事があるので、テストを無理に書こうとしない

    テストしやすいコードを書く努力はする

    • テストしやすいコードは、使い易いコードなので良い設計にも繋がる
    • メソッドをきちんと分けてあげる

    単体テストをワークフローに取り入れる

    • OCUnit
    • GHUnit
    OCUnit
    • XCode標準
    • XCodeと統合されてるが、アサーションが貧弱
    • 非同期テストがサポートされてない

    GHUnit

    • XCode非標準
    • アサーションが豊富
    • まともなテストができる(teardown/setup)
    • 非同期テストのサポート(waitを使える)
    • OCUnitのテストケースも実行可能
    • viewのテスト機能が追加された

    Viewのテスト

    GHVerifyView あらかじめ取っておいた画面の画像と照らしあわせてテストしてくれる 画像での比較

    Flashからcocos2dに移植した話 – CAつりポンチーム

    • Flashとcocos2dに移植した

    • 1万7千件のレビュー

    • 平均4.5☆

    • Twitterによる拡散

    • 完全無料広告なし
    • アメーバピグ
    • ストレスフリー
    • App Storeのレビュー誘導

    オフライン対応

    非会員対応

    • ほぼすべての機能を非会員でも遊べる
    • 会員と非会員の差別化
    • タイトル画面の対応のみ
    • ポイントの管理をローカルにおいて、サーバ側からポイント管理を排除

    iPod Touchのユーザーが30% => オフライン対応の成果?

    cocos2dとFlash

    大量の画像を書きだす

    • 手動は日が暮れるので
    • アクションを作って、画像ファイル名=レイヤー名にしてバッチで生成

    texturepacker を知る

    • 一枚の画像に素材を貼り付けて、座標データからファイルを切り出して表示する
    • CSS スプライトみたいな

    AutoSD

    自動でRetinaと通常の解像度を作成できる

    Spriteはフォルダ管理

    Finder上でフォルダ構造そのままにSPriteを管理できて楽 texturepacker上に反映する

    見ていて飽きないガチャを作れという司令

    まずはFlashで動きを作る

    1. 色を選ぶ
    2. ガチャを出すアニメーション

    自作AIRツールで座標の抽出

    swfから座標の抽出をするソフトを作成した

    • 座標系の違いを補正する スクリーン座標 -> デカルト座標
    • Flash上のレイアウトがそのままcocos2dに移植

    cocos2dを利王した最適化と高速化

    • 描画処理の高速化
    • テクスチャロードの非同期化

    iPhoneのOpenGLの傾向と対策

    • OpenGLの描画を呼び出すほどオーバーヘッドが大きなリ重くなる傾向
    • なので、texturepackerを使ってテクスチャを一回でロードしたりして 呼び出し回数を減らした。

    テクスチャロードの非同期化

    • 非同期で先にテクスチャを読み込んで、読み込み待ちを減少させる
    • addImageAsyncを使って非同期ロード

    テクスチャフォーマットの調整

    • RGBA4444に統一してる(32bit -> 16bit)

    モーション制御の最適化

    CCPawnやCCSequenceを処理コストが多いでの、人体とかが苦手だった。 モーションデータを削減して、モーション制御をNEONで並列処理にして最適化

    コンフィグの微調整

    ccConfig.hでCCUSESVBOを無効にするだけで結構変わる

    Time Profiler

    順次上から見て最適化をしていく

    まとめ

    • テクスチャは一枚にまとめてCCSpriteBatchNodeで描画
    • NEONなどSIMDを使って最適化
    • ccConfig.hをみてチューニング

    OCTOBAから見た面白いAndroidアプリ – 丸岡

    Android Market

    アプリ削除率

    • 37%?

    OCTOBA

    • 男性が多い
    • 30-40代が多い

    パーミッションの問題

    Any.Do

    • 機密ログデータの読取
    • このパーミッションを要求するアプリはレビューしない

    いろいろなパーミッション

    • 機密ログデータの読取
    • 連絡先データの読取
    • SMSメッセージの送信
    • アカウントの認証情報を利用
    • 起動中のアプリケーション情報
    • 端末ステータスとIDの取得

    広告SDKでGPSデータを利用してターゲティングを使用したりするものもある。 組み込んだアプリでGPSを使ってなくても、パーミッションが求められる

    レビューの基準

    人気ジャンル

    セキュリティが5月(2011)あたりが入ってる

    • ツール・設定系
    • ゲームエンタメ系

    昔はツール系が多かったが、ゲームエンタメ系が増えてきている

    検索キーワード

    1. 電話帳
    2. 時計
    3. メール

    使ってもらえるアプリの考え方 – fladdict

    ATMアプリを考えてみる

    架空の事例で考える

    リサーチ

    • 既存のATMの機能?
    • 既存のATMの不便?
    • どういう時に使う
    既存のATMの機能
    • 残高確認
    • 入金、引き出し
    • 送金
    • 設定変更

    オンラインバンキングを含めるともっとたくさんあるので、 どの機能をアプリに含めるのかを考える -> 絞り込む、利用の想定

    シナリオ

    • 通販などの振込
    • 通常の送金
    • 支払い忘れへの緊急対応
    • 残高確認

    逆にスマートフォンで保険や税金管理などの操作はしないとのでいらないはず

    90%のユーザーが必要な機能を入れる

    • ヘルプなしでわかるアプリを作る
    • アプリを起動してからそのアプリのタスクを1-2駅程度の間に完了できるようにする

    必要な機能を絞り込んでから、コンセプトを立てる

    コンセプトの定義

    iPhoneアプリは大体4つの形がある

    • ユーティリティ型
    • ナビゲーション型(TableView)
    • タブ型
    • 没入型(全画面)

    それぞれのタイプをプロトタイピングして検証していく。

    ユーティリティ型

    • 最低限だけの機能
    • 残高の確認
    • 送金ができる

    ナビゲーション型

    ユーティリティより機能は増える

    • ニュース
    • 残高
    • 送金
    • 設定

    タブ型

    ナビゲーション型と似た機能を持つが、平行して機能を使える

    没入型

    iPhoneのUIに頼らないので時間がかかる

    • 実際の画面に似せるなど
    • ナビゲーションを出してみたり
    • 現実のメタファ

    今回はナビゲーション型かタブ型

    ナビゲーション型

    • 拡張しやすい
    • 単純

    タブ型

    • 拡張に限界がある
    • 平行して機能を利用できるのが利点

    ナビゲーション型は階層が深いと、作業を切り替えるにコストがかかるので、タブ型の方がやりやすい

    タブ型のメニュー

    よく使うものから左から右へ配置していく

    ニュースを残高確認後に見る人はあまりいない ニュースをATM側としては配信したいので、ニュースを左に持ってきて自動的に見せるようにした。

    設定画面

    • ピンコード
    • アカウント名
    • 銀行アカウントのパスコード

    入力UI

    • Pickerを使って桁ミスなくすなど
    • 送金時はボタンのミスタッチをなくす
    • スライドで送金処理を完了させる <= 難しいUIな気がする…
    • 最初にボタンを詰め込みすぎない

    Edit Qute for PC/Mac

    第七回ありえるえりあ勉強会 アウトラインメモ

    第七回ありえるえりあ勉強会 〜JSで大規模・エンタープライズ開発〜に参加してきたので、その時のメモ。

    「JavaScriptで大規模ゲーム開発」渋川

    ソーシャルゲームの定義
    • ユーザー間で非同期のやり取りが発生する

    ngCore

    • マルチプラットフォーム
      • 同一ソースでAndroidとiOSに対応
      • テスト環境はFlashにも対応
    ゲームの構成
    • ngCore上にゲームロジック/JavaScript
    • サーバ/APach+FCGI上に認証とか結果の書き込みをMobageサーバに
    役割分担
    • ngCoreのクライアント
      • アクションシーン
      • サーバ側で作ったデータの再生
    • ゲームサーバ
      • パラメーター保持、変化
      • アイテム管理
      • ミッションのスロットの目の決定など
      • ずる防止をするためサーバ側でロジックがある
    ngCoreの開発サイクル
    • node.jsで書かれたビルドサーバでビルドを行う。
      • ファイルの結合とか
    コード
    • CJSライクなモジュール
    • クラスを作るsubclass関数
    • ゲームはmain関数から始まる
    • Core.UpdateEmitter でゲームループを回す
    ゲームの基本構成
    • シンプルなクラス群
      • Sceneクラスを継承してシームを作っていく
      • Sceneを遷移してゲームの遷移が行われる
    • サーバ側からjsonのジョブスタックを受け取る
      • ミッション結果なども配列で返ってくる
      • 知らないジョブが来たら無視が基本方針
      • クライアントは順番に再生していくだけ
      • 新しいミッションも簡単に追加できる
    • サーバエラーがおきたらホーム画面に強制的に戻る
    DnLig/ngGo
    • DnLib
      • ゲーム開発の共通ライブラリ
    • ngGo
    開発拠点
    • サンフランシスコ
    • 日本
    • パキスタン

    • SKypeチャットが主なインフラ

    • git
      • git flow
    • ドキュメントSphinx
    ngGo/ngBuilder
    • – データ駆動で行えるように
    • - パラメーターチューニングのしやすさ
    デバッグとテスト
    • デバッグメニュー
      • サーバにデバッグ用画面がある
    • Jasmineを使ってる
    今後のngCore
    • 3D対応、HTML5対応

    まとめ

    JavaScriptベースで

    オフラインWebアプリケーションの作り方 (白石)

    Google Gearsを使ってオフラインアプリケーションを作ったことがある。

    オフラインWebアプリケーション

    Google Gears
    • Google Gears終了 –> HTML5へ以降を推奨
      • HTML5を中心にするようになった

    オフラインでも読めるアプリの作り方

    • それほど実装は難しくない
    • アプリケーションキャッシュを利用すればいい
    アプリケーションキャッシュとは
    • 静的なリソースをキャッシュすることができる機能
    • ローカルキャッシュの利点
    • IE以外のブラウザでは実装されてる
    キャッシュマニフェスト
    • リソースのリストを作成する
    • Titanium Mobileのリファレンスはローカルキャッシュされてる
    アプリケーションキャッシュのJavaScript API
    • window.applicationCacheにJavaScriptから操作できるアプリケーションキャッシュAPIがある。
    アプリケーションキャッシュを利用する上での注意点
    • キャッシュマニフェストを更新しないとリロードで反映しない
    • キャッシュ容量が限られている
      • モバイルとかだと10MBぐらい

    オフラインでも書けるアプリの作り方

    • 割りと面倒なもの
    • デスクトップアプリとやりたい事はあんまり変わらない
    オフラインWebアプリを作るポイント
    • 基本はリッチクライアント+同期機能
    利用できるローカルストレージ
    • Web Storage
    • Web SQL Database
    • Indexed Database API
    • File API
      • ドメインごとに仮想的な空間
      • セキュリティ的なものがあるため
    双方向同期

    かなり難しく面倒くさい – フェールセーフ – 更新の衝突 – 同期のタイミング – ネットワーク状態、データの状態管理 – ローカルDBのスキーマ管理/サーバのスキーマと2つできてしまう – ローカルDBのクオータ(5MBぐらい)

    - 容量の限界がきたときにどうするか
    

    まとめ

    • オフラインアプリケーションといっても読む/書くの2つがある
    • 書く/同期的なアプリケーションはかなり面倒臭い
      • 割り切ったほうがいい

    スケールするUIについて – @monjudoh

    Objective-Cで非同期処理のチェーンライブラリとか

    要素数

    ループの中でbind/unbindしてたので大量に追加されたときに重たかったのでliveメソッドに変更 bindはここの要素に付けるから、要素が多いと死ぬ。delegateとかliveはその枠の方にイベント一個張るだけだから軽くてすむ。

    D&D
    • ユーザが触れる範囲だけにイベントを付ける
    • D&Dは複数のイベントから成り立つので複雑(down->move-up)
    要素の生成
    • UITableView
      • 表示範囲+ぐらいのみを描画してる
      • 再利用してる

    JavaScriptのテスト事情 – @os0x

    • JavaScriptのテスト
      • まだまだ未成熟
    • 二種類
      • JavaScriptのテスト
        • JavaScriptだけなので比較的わかりやすい
      • JavaScriptを含めたテスト
        • UIとかも含むインテグレーションテスト
    インテグレーションテスト
    • インテグレーションテストは書くのが大変
    • 動いてあることが保証できるので重要
      • 後から追加修正とかも
    インテグレーションテストの定番 – Selenium
    • インテグレーションテストは遅い
    テスト実行環境
    • カピバラさん + Webkit
    QUnit,Jasmine
    • Jasmineの方がアプリケーションテストは向いてる
    jasmine-headless-webkit
    • jasmine のspecをCUI環境で実行できる

    Titanium Mobile – Masui Yuichiro

    • ココログ
    • liblis
    • AKB
    • サイボウズLiveの
    • MobSnap

    Titanium Mobile

    • JavaScriptだけでアプリを作成できる
    • Titanium Mobile のモジュール売買できる
      • mobile market place

    モバイルのUX

    • それぞれのプラットフォームに合わせた形に変換する
    • それぞれに合わせたUIはUXに
    • タブバーの位置がAndroid/iPhoneで逆になったり

    飯食う

    • 追加モジュールとサポートのみが有料
    • 認定トレーニング

      感想

      • ちょっと落ち着きがなかった気がするの
      • あまり掘り下げた感じにはならなかったのは少しもったいない気がした。

      メモ環境

       

        Mozilla 勉強会@東京 6thのアウトラインメモ

        2011年10月1日に行われたMozilla 勉強会@東京 6thのメモ

        イベントのページ: Mozilla 勉強会@東京 6th
        Twitterのまとめ: Mozilla 勉強会@東京 6th – Togetter

        • 14:30 – 15:00: 開場、発表者準備
        • 15:00 – 15:10: Opening

        自己紹介の流れ。

        ■15:10 – 15:50: Firefox for Developers – 開発者ツール&セキュリティ編
        Firefox開発者ツール – Web Console
        • コマンドの補完

        Inspector

        • DOM Inspectorみたいなもの
        • 要素を調査するツール
        • Style Inspector(開発中)
        CSS Doctor
        • CSSの間違いとか
        ScrachPad
        • エディタ
        • 選択行のコードだけを実行できたりする。
        GCLI
        • ubiquityみたいな感じの
        • CUIとGUI
        Source Map
        • CoffeeScriptのような変換コードと元コードをマッピングしたたものを作る
        • 変換前の言語
        Tilt
        • DOMマップを3D化するアドオン
        about:Firefox
        セキュリティとプライバシーの話
        Same Origin Policy
        Content Security Policy
        • 次世代のセキュリティポリシー
          • XSSの攻撃防止
        • コンテンツ種別で読み込み制御
          • 画像やCSSやJSなども制御できるようにする
        • Webkitではほぼ開発されてる
        • デフォルトセキュリティポリシーがいろいろ強化される
        • CSPの使い方
          • X-Content-Security-PolicyのHTTPレスポンスヘッダを送信
          • HTMLのメタタグは書き換えできたりするものだからヘッダーで
          • Apache でCSPの設定
        • CSP対応に移行する
          • JS,CSSは外部ファイルに
          • evalを使わない
          • ポリシー違反レポートでどこがおかしいのかも確認できる
            • ヘッダーでレポートを報告するURLを指定してログを残せる
          • CSPブックマークレットもある

        HTTP Strict Transport Security

        • HTTPSでの接続を要求するヘッダ
        X-Frame-Options
        • クリックジャッキングとか
        Cross-Origin Resource Sharing
        • クロスドメインでの読み込み許可
        • 他のドメインから読み込まれてもいい場合の設定
        • XHR2とか
        ユーザ追跡拒否ヘッダ
        • Do-Not-Trackヘッダ
          • ブラウザ側でサイトに通知する
          • IE,Safariも対応
          • Chromeだけ非対応
        • 受け取ったらユーザー追跡をしない
        ■15:50 – 16:30: Pano って拡張機能 teramako
        Panorama
        • Firefox4から導入された
        • タブグループを管理するビュー
          • アクティブなタブグループの切り替え
        タブの種類
        • ピン止めタブ(AppTab)
        • グループの属するタブ
        • グループに属さないタブ(Firefox7で廃止)
        Pano できること
        • グループの作成/削除
        • グループ名の変更
        • D&D操作
        実装の仕組み
        • panoramade上で起こったイベントを拾ってビューを作ってる
          • tabopenなど
          • 起こらないイベントは上書きして起こす
        • 基本的にはビュー
        頑張った所
        • アイコンはSVG
          • いろいろな場所で使われてる
          • 使いまわしたい -> SVGで作る
        • SVG
          • ベクターなので拡大縮小できる
          • ファイルサイズも小さい
        • about:addonsでアイコンが表示されてない
          • アイコンのサイズが指定されてなかった
          • SVG内にサイズの指定した
        • タブ、Panoramaから発生するDOM Eventを拾う
          • Panoramaから発生しないEvent
            • グループが作成された
            • グループから削除された
            • グループから移動した
          • 取れないEventは無理やり発行させる
            • Gropuが作成されたときに起きるイベントを上書きする
        • GroupItems.registerの上書き
          • 元関数を実行
          • DOM Eventを発行
          • コールバックシステムに関数を登録してDOM Eventを発行させる
        起動速度の改良
        • 起動時のスクリプトは最小限
          • 必要なときにロードさせる
          • mozUSSubScriptLoaderの使用
        • 必要なときに取得
          • getterの使用
        • 速い読み込み
          • Firefox8 から mozUSSubScriptLoader もキャッシュされる
        実装方法
        • 最初の読み込みは必要最小限
          • 40行ほど
          • 最初はロードするものを書いておいて、ロードしたときにそれを上書きする
        • getterの使用
          • XPCOMUtil.jsmを使用してgetterを使いやすくする
          • defineLazyGetter
        コンテンツの遅延読み込み
        • bartab
          • 起動したときはタブはできるが、ロードはされない
          • タブが選択されたときに初めてロードされる
        • nsISessionStoreが鍵
          • 短いコードで実現する
        非アクティブなグループ内に開くには
        • Panoramaとバッテングして上手く行かなった
        • 上手い解決方法が見つからない
          • setTimeoutでぐるぐるー
        パネルでD&Dするために
        • パネルをドラッグする前に閉じないようにする
          • noAutohide = true
        • メニューボタンを押したときは閉じない様にする
        ■16:40 – 17:20: restartless – 再起動不要なアドオンをSDK無しで作るフレームワーク – Piro
        Add-on SDKの目的
        • 誰でも開発できるようにする
        • 高機能なアドオンの開発は目的ではなかった
        • 今までのアドオン開発
          • 自由すぎた
          • 敷居高い
          • 何でもできた
        • SDKを使えばある程度制限された状態で簡単作れるようになる
        Add-on SDKはGreasemonkeyスクリプトと同じような立ち位置
        restartlessの目的
        • 再起動不要なアドオンを今までの開発と同じ方式で作れるように
        • Mozilla特有の事情を必要なのも従来方式
        • 対象も従来の開発者向け
        restartlessの使い方
        • main.jsの内容
          • startup()で読み込まれる
          • 専用の名前空間で実行される
          • shutdown()を定義
        • ユーティリティ
          • location.href
          • load関数 = Cu.importと互換
          • require関数
          • existsでファイルの有無を調べる
          • resolve 相対パスの解決
          • EXPORTED_SYMBOLS
          • doAndWait
            • 非同期処理を同期的に扱うときに使用
          • jstimer
          • pref
          • locale
            • 国際化
          • config
          • WindowManager
            • DOMWindowにアクセスする
            • ウィンドウのopenを監視
          • KeyboardShortcut
            • ショートカットの定義
          • jsDefferred
        restartlessの利用例
        • ALT
        • back to owner tab
        • Fox Splitter

        restartlessのコードリーディング

        • index.rdf
          • bootstrap=”true”で再起動不要と認識される
        • bootstrap.js
          • モジュールのロードとか
        • loader.js
          • ユーティリティとかが定義されている
          • doAndWait
            • スレッドをたててメインループを回す実装
        • main.js
          • 各アドオンのコード
        • module
          • 各ライブラリが入ってるので、削除すれば消える
        ■17:20 – 18:00: Lightning Talk
        • アドオン SDK を利用した初めてのアドオン開発– by knagato
          • 初めてアドオン開発する人が対象
          • SDKを使ったアドオン開発を特徴
            • HTMLやJavaScriptなどが中心で、XULやXPCOMなどMozilla特有の機能を使わなくても開発できる
          • 開発環境の種類
            • Add-on BuilderをWeb上での開発
              • 再起動不要なのでその場で試せる
            • Addon SDKを使った開発
              • コマンドラインベース
          • Add-on SDKのチュートリアル
        • Thunderbirdアドオンによるワークフロー開発について– by Nakashima
          • 提案するツール
            • 自分自身でのプロセス改善が可能
            • やり取りの簡略化ができる
          • http://www.p2pwf.com/ に仕様の詳細
        • Forking Secure Login – by saneyuki_s
          • Secure Loginアドオンのフォークの話
            • 現在はメンテナンスアップデートのみになってる
            • 全面改装してる
          • 一部機能の省略
          • レガシーコードの除去
          • doorhanger対応
            • Firefoxに入ってるSSLのポップアップするやつ
        • jQueryで破棄されたrequestAnimationFrameとJSでのアニメーション実装で注意すること – by kyo_ago
          • requestAnimationFrame
            • setIntervalの問題点としてアニメーション向けではない
          • jQuery 1.6から削除された
            • setIntervalとrequestAnimationFrameが衝突してキューがたまる
            • タブがバックグランドにあるときの挙動
        • ES.next WeakMap– by mooz (@stillpedant)
          • WeakMap = 連想配列
          • Firefox6から利用可能
          • {}やObject()と比較して
            • keyにオブジェクトが指定可能
              • ハッシュはkeyに文字列しか指定できない(toStringされてる)
              • WeakMapはkeyにオブジェクトが指定可能
                • オブエジェクトしか指定できない
                • プリミティブ値はエラー
              • オブジェクトの外部拡張
                • DOMノードに独自プロパティは危険
                • ES5ではオブジェクトの拡張がfreezeできる
                • オブジェクト自体は拡張しないで、外部に付加情報を持つ
                • WeakMapを利用する
                  • キーとして外部情報をもたせる
            • keyに指定されたオブジェクトを弱く参照
              • CGにたいして
        • Firefox4以降のE4X– by teramako
          • ワイルドカード
            • *が指定子に使える
          • 属性アクセス
            • @が使える
          • Firefox3.6までは上記のものがE4X以外でも使えた
            • Firefox4以降は禁止された
            • ざんねんでしたね

        無料で読めて定期更新されているIT系の電子雑誌

        PDF形式などで配布されていて、定期的に更新があるサイトの紹介
        今だとブログがいっぱいありますが、まとまった形態,書式である良さというのもあるので、ブログとはひと味違う感じの所を中心に。

        デジタルプラクティス

        発行は季刊で1月(創刊号のみ2月),4月,7月,10月に発行されるのをPDFで読める。
        内容も多岐にわたっていて、論文というほど堅くはないものもあり読みやすい。

        デジタルプラクティスでは,実務の現場におけるIT 実践例・経験・ノウハウのレベルの成果でも社会的に有用なものならば歓迎し,IT実践における新たな発展を先導するような論文を積極的に採録します
        創刊に当たって

        また、著名な人も結構寄稿されているので、読みたいものが何かしらあると思います。

        などなど

        情報処理推進機構:ニューヨークだより

        IPAにより月一でPDF形式で発行される。
        アメリカのIT関係についての最新事情を扱っていて、ものすごく詳しく書かれている。
        ITやスマートフォンなどのデジタル機器(OSについても)やITと政治についてなど、かなり詳細な情報を掲載している。
        無料とは思えない質だったり、情報元のソースを脚注で入れてくれるので、情報元自体も見られてとても良い感じになっている。おすすめです。

        Wizard Bible

        Wizard Bibleとは、基本的に毎月リリースしているWebマガジンです
        Wizard Bible

        発行は月一でtxt形式で発行されている(最近不定期だった気がする)
        内容はどういったテーマで書けばいいのか?を見ると分かると思いますが、セキュリティ関係のものが中心となっています。それに関係するプログラミングや数学などの内容も扱われています。

        IS Report System

        本サイトは 「同志社大学生命医科学部医情報学科 医療情報システム研究室」 及び 「同志社大学工学部インテリジェント工学科 知的システムデザイン研究室」 の所有する研究報告である ISレポートの管理システム
        IS Report System

        医療やソーシャルメディア、インターネットや携帯電話などの電子機器について書かれたレポートが公開されています。
        HTMLとepub形式(一部PDFも)で配布されていて、図などが入ったものも多く内容も結構読みやすいです。
        結構書かれているジャンルが幅広い気がします。

        The Pragmatic Bookshelf | Read Our Magazines

        Pragmatic Bookshelfにより毎月発行されるプログラミング関係の電子雑誌。
        HTML PDF epub mobiが用意されている。

        番外編

        タイトルから外れて有料の雑誌。
        といっても海外だと電子版の雑誌は珍しくないので、気になったものだけ。

        JsMag – the magazine for JavaScript developers

        JavaScriptについて扱う月刊誌。
        一号毎に購入($4.99)か一年分まとめて購入($53.88 )ができる。
        日本にもこういうの欲しいですね。。

        Hacker Monthly – Print Magazine of Hacker News

        Hacker Newsで話題になったものを厳選して扱う月刊誌。

        おわり

        電子雑誌というタイトルにしたけど、別に雑誌じゃないものが多い気がする。
        今はブログやソーシャルメディア経由でだいたいの情報はカバーできるだろうけど、論文や雑誌、スライドなどある程度労力を伴って書かれたものにはブログとは異なるものがあると思ってるので、こういうものも読んでいきたいですね。

        JavaScriptの論文かき集める仕組み欲しい。日本でも小さなもの含めて年間二桁は書かれてる感じする。
        Twitter / @azu_re: JavaScriptの論文かき集める仕組み欲しい。日 …

        とか思ったりするのはそういう理由です。

        他にもおすすめがありましたらよろしくお願いします。

        第3回ブラウザー勉強会 アウトラインメモ

        2011年8月20日開催された第3回ブラウザー勉強会に参加してきたので、その時のメモです。

        TwittterのログはTogetter – 「第3回 ブラウザー勉強会(#BrowserWS)のまとめ」にまとまっています。

        Read the rest of this entry »

        サイボウズラボユース中間結果発表会アウトラインメモ

        サイボウズ・ラボユース 「中間成果報告会」に参加してきたのでそのときのメモです。
        かなり乱雑なメモで正確性など存在していないので、そのまま読まない方がいいです。
        (特に手元でスライドがあるわけじゃないので、ちゃんとメモれてすらないです…)

        環境記録
        メモソフトウェア: bodhi/MarkdownEditor – GitHub

        サイボウズラボユース中間結果発表会

        NDAは結ばずに、成果をオープンすることを条件に支援を行う。

        「ロボット制作を支援するログ解析プログラムの開発」 by @sn_monochr

        マイコンカー

        赤外線センサーを使ってリアルタイムで制御するカー。 C言語で開発を行う。

        マイコンカーの走行ログ

        走行ログ

        • 制御プログラムの動作状態
        • 赤外線などのセンサー状態

        メモリが限られているので、データはシフト演算などを使って一つにまとめて保存、送信を行う。 これらのデータを可視化していくため、解析ソフトウェアを開発する。(Windows)

        走行ログの可視化

        • データに基づいたマシン調整が可能になる
        • 1つのソフトウェアに統合

        夏の合宿

        目標設定をして合宿を行った

        • 走行ログの可視化

        ラインの中でモードの変更をライン色の変更してる。

        • 無線通信でログのやり取りをするのが今後目標

        走るコースに、車線変更や直角カーブなどのマークが書かれていて、それを読み取ってモードを変えることで動きを変える。


        「世界最速の正規表現JITエンジンの実装」by @sinya8282

        • 正規表現エンジンの作成
        • 正規表現の歴史は古い 1960~
          • 実装はたくさんある
          • いろいろやられている

        「正規表現エンジンの開発」には意義があるのですか? -> 車輪は車輪でも「最速の車輪」を開発する

        正規表現エンジンRegen(れーげん)の開発

        Regen

        動的コード生成

        • Xbyak でJIT regex
        • 正規表現に合わせて、プログラムがプログラムを生成する
        • 正規表現コンパイルに最適化レベル導入(O0 – O4)
          • 最適化しにくいパターンもある

        マッチング並列化

        • 並列化のための特殊なモデルを実装

        ベンチマーク

        Google RE2との比較。

        JITしても3-5倍の高速化 -> 今はメニーコアの時代 -> 正規表現の並列化

        • 6コアでガクって落ちるのはアーキテクチャの問題

        まとめ

        高速化の二台手法は実装した、成果もでた

        • JIT
        • 並列化

        これからの課題

        • 実システムへの応用、ツールの作成
        • 正規表現エンジンじゃないと処理できない問題
          • なければ作る
        • ライブラリとして今夏中に整えたい

        質問

        • 正規表現 <-> インデクシング
        • フィルターなどの分野では、流れるデータに対して正規表現の活用などもある。
        • 禁止ワードのORつなぎみたいなものは正規表現より向いてる方法があるとか

        「JavaScriptによる型推論器の実装と可視化」by takuto_h

        型推論

        • 型を書かなくて楽
        • 型があるんで安全

        引数の型

        function foo(bar){ return bar + 1; }

        どのような演算子を呼んでいるかを見て、型を推論する

        型推論は方程式

        • 値が広志位なら型が等しい
        • 方の上での方程式を集めて解くのが型推論

        コンピューターでは解くのか

        a = b, b = c, c = d, d= int

        <a>, <b>, <c>, <d>というオブジェクトとintという物体を用意する。

        • a = b で <a : <b>>, <b>, <c>, <d>
        • b = c で ….

        どんどん置き換えて行って型推論を行う。

        Ibisという型推論機

        IbisはJavaScriptで書かれている。

        • まずはパースして構文木にする
        • ここからステップごとに型推論の計算(推論)を表示
        • 最終的に、関数の入力と出力の型推論結果が表示される

        型推論はパズル

        質問

        型推論にとってオブジェクトは鬼門

        Q . 循環参照の時はどうするの?

        2つの考え方

        • 禁止する方針
        • 再帰的なものも許す方針

        OCamlは不健全な循環参照は禁止されている。 再帰的なものはチェックを付けて型推論を続ける。

        演算子のオーバーロードがあると型推論はむずい


        「世界で一番仕様に忠実なJavaScript処理系の作成」 by Constellation

        iv/lv5

        iv / lv5 VM engine – 枕を欹てて聴く

        • ESのパーサーiv
        • エンジンlv5

        sputniktestというECMA262への正確性を測るテスト

        • 以前はASTはインタープリンタ
        • VMに変えたのでECMAエンジンといえますね。
        • インタープリタと共存している(オプションで切り替えが可能)

        JITをモジュールとして取り込めるのではないかと。

        高速化

        いろいろ。11倍近く高速

        まだJITはしていない。

        今後

        • RegisterVmについての検討
        • GCの自作

        az: ECMAScript Analyzer

        JavaScriptの補完候補を出す

        型の推論 Doctorjs

        • 抽象的なAbstractインタプリターを使って型情報を集めている
        • これを元にC++にした

        JavaScriptは後ろに関数宣言置けるし、補完するときにシンタックスは壊れてるからどうするの?

        方針: シンタックスが不正なASTに対して解析を行う
        • シンタックスが不正なスクリプトでも常にASTを得る

        target.

        こういう時はに解析を行うと、式がエラーになるので、ここでステートメントにマークを付ける。

        改行があったらそのへんは大丈夫なんじゃないかと、してぶっちぎる。 JavaScriptにはセミコロン自動挿入があるので、改行を判定に使う必要性が出てくる。

        問題点
        • Abstractインタープリタは状態が有限でないと終わらない
        • なので状態を有限して、行う
        • jQueryとのfor inとかむず

        WebStromの場合

        • JSDocで型情報を読んでこれを基準に解析
        • 元に情報を用意して何とかする方向

        おわり

        仕様忠実は第一


        「現役高校生の考えるクラウドOSの設計と実装」by liva_s

        クラスドOSって何だろう?

        Googleの場合

        • ブラウザ上でWebアプリを走らせている
        • 確かにクラウドを利用している

        僕の考えるクラウド化

        カーネルのクラウド化
        • カーネルがやるべきことをクラウドサーバー上で一括処理するのはどうだろか?
        • サーバー側に処理を置くことで、クライアント側の負荷が減る

        カーネルを分割して、クラウド上でカーネルが動いてるいうという状態

        • 当然ローカルでやるべきことも残る(ハードウェア制御)
        • ローカルとくらうどの線引きが大事になる

        どの境界線はどう測るべきものかがわからない(ベンチマークで?)

        マイクロカーネル開発

        カーネルには最小限なものにして、Serverというアプリケーションにわけてやるもの。 この時のServerをクラウドに乗っければ、クラウドOSになる。

        => マイクロカーネルの開発がいいのではないかと

        Serverを単位にして、ローカルとクラウドでベンチマークを取れば、境界線がわかりやくなる。

        モジュール開発とマイクロカーネル

        モジュールはプロセス管理を作る前に、モジュールを開発できる。 (後で動かせばいい)

        まとめ

        クラウドOSはWebアプリベースのOSではない

        Q. カーネルでどの辺がボトルネックになってるのか?

        A. モジュール化していけばベンチは測りやすいから、これからは。

        カーネルのモジュール化はダイナミックに構成を変更できるということが結構面白い事になる

        Q.マルチキャストの逆みたいな話。同じような処理をしてるコンピューターはいっぱいあるから、そのへんの処理を効率ができるのではないかと

        Homebrewを使ってMacにPHP環境を構築する

        Homebrewのインストール方法はいろいろなところで見られるので手短に

        $ ruby -e "$(curl -fsS http://gist.github.com/raw/323731/install_homebrew.rb)"
        $ brew install git
        $ brew update

        これでbrewコマンドが使えるようになったので、下のFormula(パッケージの情報みたいなもの)を使ってPHPやMySQLなどをインストールする。

        最近のMacだとデフォルトPHPとか入ってるけど、何かアップデートとか面倒そうなのでbrewを使ってインストールし直してる。

        $ brew install https://github.com/adamv/homebrew-alt/raw/master/duplicates/php.rb --with-mysql --with-intl

        という感じでインストールした。
        インストール後にwhichコマンドで、どのphpバイナリを示しているかを確認すると、デフォルト?のphpが参照されてままだった。(Homebrewは/usr/local/bin/以下にインストールしていく)

        $which php
        /usr/bin/php
        なので、Homebrewでインストールしたものを示すように.bashrcでPATHを書き換える必要がある。(この辺brew linkとかでどうにかなったりしそうだけど…)
        /usr/local/bin/php
        デフォルトのMacだと.bashrcがないので自分でホームに作成する必要があるけど、そのままではTerminalで読み込まれなくて、~/.bash_profileを作って~/.bashrcを読み込むようにする。

        ~/.bash_profile を作り、下記の内容を書き加える。

        if [ -f ~/.bashrc ] ; then
        . ~/.bashrc
        fi
        同じ要領で、~/.bashrcを作って下記の内容を書き加える。
        export PATH="$(brew --prefix)/bin:$PATH"
        これで、Terminalを再起動すると、~/.bashrcが読み込まれるようになるので、
        $ which php
        /usr/local/bin/php
        というようにHomebrewでインストールしたphpが使えるようになる。
        ブラウザからphpのファイルにアクセスするにはApacheの設定も必要になるけど、下記を参考に設定した。
        MacのApacheは「システム環境設定」→「共有」→「Web共有」をON/OFFすれば、コマンドから再起動とかしなくてもいい。後、デフォルトだとPHPモジュールが読み込まれてないので、MacでApache, MySQL, PHP環境を作ったよ – bojovs blogのように httpd.conf のコメントアウトを外してPHPモジュールを読み込むようにする。

        httpd-vhosts.conf を使って、バーチャルホストを設定する際は設定を変更して保存したら

        apachectl -t

        のコマンドで文法ミスがないかをチェックしてから再起動などして試した方が安心。
        またコピペして設定する時は、クオーテーションがおかしくないかなども確認した方がいい。

        参考

        Scriptish v0.1.3の更新内容とGreasemonkeyの互換性について

        Scriptishが0.1 -> 0.1.3へとアップデートされたのでそれの更新内容を調べてみる。

        - Version 0.1.1 issues
        - Version 0.1.2 issues
        - Version 0.1.3 issues

        に全部載っている事です。
        バグとかは面倒なので省いています。結構いろいろあるので気になる人は上のを見ておくといい。

        オプション画面の変更

        image

        Scriptish自体のオプション画面も大きく変更されています。

        imageimage

        一枚目は主要プロトコルでの動作の設定以外は以前とそこまで変わらないので、問題ないと思います。
        二枚目はグローバルのExclude(スクリプトに書かれてるexcludeとは違ってグローバルで動かないURL)の設定がタブに分かれて書きやすくなっています。

        image

        三枚目が結構重要な変更が入っていて、特にGreasemonkeyスクリプトを書く人はここの設定に注意する必要があります。

        ☑ユーザスクリプトをキャッシュする

        という設定にチェックが入っていると、スクリプトを書き換えてページをリロードしても、すぐには反映しない(キャッシュが使われる)ため、スクリプトを書く人はチェックを外した方がいいと思います。

        後は、UIを常に英語にしたり、今までabout:configから直接決めないといけなかったものもGUIから設定できるようになっているみたいです。(全てではないですが)

        これ以外にも、パフォーマンスとか内部のバグなど結構改善されてると思います。

        Greasemonkeyとの互換性の話

        新しいAPIはGreasemonkeyが実装してくれないと互換性はない(fail safeを書くか、分岐するなどで対処)ですが、元々あったGM_openInTabなどは拡張して実装されてるので基本的にGreasemonkeyと互換性があると思います。

        ただ、GM_registerMenuCommandはGreasemonkeyでは第一引数にeventオブジェクトが渡されるようになって、

        function sayHello(evt) { console.log(evt) }
        GM_registerMenuCommand("Hello, world (simple)", sayHello);

        のようなコードがScriptishではundefinedで、Greasemonkeyで動かすとなぜかイベントオブジェクトが入るようになり互換性がちょっとないです。(これはGreasemonkeyが勝手に壊した感じです)

        function sayHello(evt) { console.log(evt) }
        GM_registerMenuCommand("Hello, world (simple)", function(){
        sayHello();
        });

        そのため、Scriptish、Greasemonkeyどちらでも安全に動くようにするには、明示的に無名関数などを使った方が良いでしょう。

        後、外部コンテンツを読み込む系のGreasemonkeyやブラウザ拡張を作る際の注意事項などの対策(Full Feedのものが行ってるタイプ)として、GM_xhrで取得したコンテンツを自前でフィルターするのをベタに書くと速度的な問題が発生したりするので、そういう時はScriptishにあるGM_safeHTMLParser APIを使用するのが良いでしょう。
        自前で書いても工夫すれば実用的な速度にはなるが、用意されているものを使うのが楽という意味で。

        また、まだ入っていませんが、Scriptish 2.0でGM_xpath – GitHubというXPathのAPIが入るようなので楽しみ。

        Greasemonkeyにとどまる意義はあまり見つける事ができませんが、Scriptitshに移行する意義は見つける事ができるような感じの状態です。
        Scriptish作者のErik VoldさんはGreasemonkeyに対してさよならと言ってるので、これから少しずつ差が出てくるような気がします。

        これからGreasemonkeyスクリプト実行環境がどうなるのかはまだ何ともいえませんが、とりあえず私はScriptishを中心に使っていきます。

        1 2 3 4 5 6 31
        プロフィール: azu(アズ)
        Firefoxの事やソフトウェアの紹介や使い道、Greasemonkeyの作成
        • OS:Windows Vista, 7
        • ブラウザ:Firefox
        • Twitterのアカウントはこちら
        • azu_re
        • メールアドレス(Twitterの方が確実)
        • info@ドメイン名
        リンク

        WebMoney ぷちカンパ