タグ

2014年4月6日のブックマーク (6件)

  • escopeの仕様意訳 - 若くない何かの悩み

    es**シリーズの仕様意訳第三回。前回はestraverseでした。今回はescope。 escope escopeは、ASTを喰ってスコープを解析するためのモジュール。 estraverseと同じように、ASTをescope.analyzeに喰わせるだけで動く。 デモを見ると挙動がよく分かる。サンプルコードがモナドなあたりに玄人臭を感じますねw 使い方は前回、前々回同様、超カンタン。 escopeとASTを吐かせるためのesprimaをnpmで取ってくる。 npm install esprima npm install escope あとはこんな感じで実行。 var esprima = require('esprima'); var escope = require('escope'); var ast = esprima.parse('console.log("Hello, world

    escopeの仕様意訳 - 若くない何かの悩み
  • estraverseの仕様意訳 - 若くない何かの悩み

    es**シリーズの仕様意訳第二回。前回はesprimaでした。今回はestraverse。 estraverse estraverseはASTの巡回コードをお手軽に書けるようにするモジュール。 ASTは子ノードのプロパティ名がまちまちなので、巡回させるコードを書くのが結構手間なんで重宝する。 基的にesprimaの吐いたASTをestraverse.traverseに喰わせるだけでOK。 ここらへんも当によくできていて、esprimaとestraverseは疎結合を保っている(AST仕様のみで結びついているといってもよい)。 ではいってみよう。estraverseと、ASTを吐かせるためのesprimaをnpmからとってくる。 npm install esprima npm install estraverse 以下のようにコードを作成。 var esprima = require('

    estraverseの仕様意訳 - 若くない何かの悩み
  • esprimaの仕様意訳 - 若くない何かの悩み

    ドキュメンテーションツール作るときにお世話になりそうなesprima、estraverse、escope、資料とか仕様がなくて困ったので、3回に分けてメモとして残しておく。 esprima esprimaはピュアなJSで書かれたJavaScriptパーサモジュール。JavaScriptコードの文字列をパースしてAST(Abstract Syntax Tree)を返す。 かなり速く、テストもよくされているらしい。 デモがよくできていて、ASTの構造、トークンの構造がよくわかる。 オプションによってStrategyを変えるため、無駄な条件判定が省かれている。こういう細かいところまで行き届いているのでパフォーマンスが良いわけだ。 使い方はいたってカンタン。 まず、esprimaをnpmで取ってくる。 npm install esprima 次に、以下のスクリプトを作成する。 var esprim

    esprimaの仕様意訳 - 若くない何かの悩み
  • Estraverseの動きを可視化する

    EstraverseというJavaScript ASTのtraverseを行うライブラリがあります。 JavaScript ASTについては以下を参照して下さい。 JavaScript AST Walker カジュアルJavaScript AST このtraverse関数にはそれぞれのnodeの通り方としてenterとleaveというものが用意されています。 estraverse.traverse(ast, { enter: function (node, parent) { if (node.type == 'FunctionExpression' || node.type == 'FunctionDeclaration') return estraverse.VisitorOption.Skip; }, leave: function (node, parent) { if (node

    Estraverseの動きを可視化する
  • Optimization killers

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    Optimization killers
  • Railsアプリつくった - ✘╹◡╹✘

    最近APIサーバ用途でRailsアプリを1個つくったので振り返る。 概要 接続元はiOSやAndroidアプリとか、Webブラウザとか、別のWebアプリケーションとか。1ホストあたり秒間数百リクエスト、平均応答時間10msぐらい。Rails 4.1.0.rc2、Unicorn、Nginxを使ってる。正直Railsは全部入りで重いイメージがあったので何となく平均50ms以内程度であれば良いところだろうと思ってたけど、意外と速い。多分そもそもサーバの性能が良いんだと思う。実装時に気を付けたことは普段の開発と特に変わりない。いつもは大勢でワイワイ開発するものに少し手を加えるということが多いんだけど、今回は珍しく自分一人でつくったから目が行き届いてたのかもしれない。DBへの問合せの効率に気を配るとか、Rubyでの処理の無駄を省くとか、アプリケーションのプロセスに無駄なコードを読み込ませないとか、計

    Railsアプリつくった - ✘╹◡╹✘