Takuto Wada @t_wada TJ が component を開発するにあたっての所信表明エントリ。なぜ npm や bower や browserify とは別のものを開発することにしたか。 / “Components - TJ Holowaychuk” htn.to/713F39 2014-06-17 17:36:01

Takuto Wada @t_wada TJ が component を開発するにあたっての所信表明エントリ。なぜ npm や bower や browserify とは別のものを開発することにしたか。 / “Components - TJ Holowaychuk” htn.to/713F39 2014-06-17 17:36:01
最近、というか昨日からTypedCoffeeScriptの開発再開してAST 気分が盛り上がってるので、簡単なチュートリアルでも。 この記事でやること ASTの取得 ASTの生成 JavaScript の出力 やらないこと 構文解析 準備 適当にプロジェクト作ります。 $ mkdir tinyaltjs $ cd tinyaltjs $ npm init # 色々聞かれるけどEnter 連打で良い $ npm install escodegen esprima prettyjson --save esprima はJavaScript のコードをASTに変換。 escodegen は AST から JavaScript を生成。どっちもConstellationさん製 escodegenはConstellationさん製で、彼はesprimaにもコミットしてます。この界隈に来ると基本的に彼
最近調べたnode.jsのstreamに関連した雑多な内容を、思いつくままに適当に書く。 例えば、 function* createPiGenerator() { var result = 0; for (var i = 1;; i += 4) { yield result * 4; result += 1/i - 1/(i + 2); } } こんな感じのジェネレータがあったとして、それをファイルに出力したい場合 function createPiStream() { var r = new require('stream').Readable(); r.setEncoding('UTF-8'); // バッファじゃなくてstringとして処理したい var g = createPiGenerator(); // piの計算をするジェネレータ var tid; r._read = fun
2013-11-29 JavaScript の関数の中で window と undefined を定義する理由を調べてみた JavaScript jQuery などの JavaScript のライブラリのソースコードを読んでいると、このようなコーディングパターンをよく見かけます。 (function(window, undefined){ // ... })(this); これはすぐに実行される関数の中にライブラリの実装コードを閉じ込めて、関数の中で定義した変数がどこからでも参照できる変数(グローバル変数)になる問題を回避しています。これは「グローバル汚染の回避」と呼ばれています。下記のコードを見てください。 (function(window, undefined){ var foo = "foo"; console.log(foo) //=> foo })(this); console.
デモページ:タイムライン Swift Parallaxの使い方 Step 1: 外部ファイル jquery.jsと当スクリプト、当スタイルシートをhead内に外部ファイルとして記述します。 <head> ... <!-- Iclude jQuery (laters version) --> <script src="https://code.jquery.com/jquery-latest.min.js"></script> <!-- Include Swift Parallax files --> <link rel="stylesheet" href="css/swift.css"> <script src="js/swift.js"></script> </head> Step 2: JavaScript 外部ファイルを記述した下あたりに、スクリプトをセットします。 <script
CSSスプライトを生成する「grunt-spritesmith」 grunt-spritesmithはCSSスプライトを生成するGruntモジュールです。 Gruntの基本的な使い方は「Gruntで始めるWeb制作の自動化 - to-R」を参照に。 grunt-spritesmithのインストールは以下のコマンドです。 npm install grunt-spritesmith --save-dev Gruntfile.jsの内容は以下のようにします。srcで個別の画像を置くディレクトリを、destCSSで関連するCSSを書き出すファイル名(SassやLess、StylusでもOK)を、destImgで結合したスプライト画像のファイル名を指定します。 module.exports = function(grunt) { //グラントタスクの設定 grunt.initConfig({ spr
JavaScriptプログラミングのTOPへ 今から3分で,HTML5の JavaScript API の使い方を2つ覚えよう。 1:ドラッグ&ドロップAPI 画面上の要素を。 画面外から。 2:File API 読み込み。 書き込み ※これは覚える必要はない。 シンプルなサンプルコード付きで,これらの実装の方法を素早く学習する。 ※サンプルは,IE8のようなHTML5未サポートの古いブラウザでは動かないので注意。FirefoxやChromeを使うこと。 では,ここから3分の時間のカウントを開始。集中して読もう。 (0:00〜前半の1分半) 画面内でのドラッグ・ドロップ (後半の1:30〜3:00) 画面外からのドラッグ・ドロップ 参考資料 (0:00〜前半の1分半)画面内でのドラッグ・ドロップ まず,動作例を見てみる。「リンゴ」をバスケットにドロップしてみてほしい。 動作サンプル1 ht
JavaScriptのプログラミングに関するTips集。 主に中級レベルの話題とノウハウを掲載する。 なお,JavaScript初級〜中級をクイズ形式で網羅的に学習するためには,下記のエントリを参照。 JavaScriptの動かないコード (JavaScriptエラー集) http://language-and-engineering.hatenablog.jp/entry/20080912/1221297779 ※JavaScript以外のプログラミングについては,こちらを参照。 ピュアJSを極める: JavaScriptで,クラスを継承する方法 (複数のサブクラスから共通クラスのプロトタイプを参照する) JavaScriptでの例外設計 (throw,try-catch-finally構文のイメージと利用パターン) JavaScriptで,動的に追加されたイベントリスナの実行順序を保
JavaScript で人為的に例外を発生させるには、大きく分けると以下の2種類があります。 throw new しない書き方 throw "ソフトウェアでエラーが発生しました。サポート担当者に連絡し、この問題を報告してください。"; o_o は String 扱いで、o_o.stack も undefined になっています。 throw new する書き方 throw new Error("一般的なエラーだよ"); throw new TypeError("型がちがうよ"); throw new SyntaxError("文法おかしいよ"); throw new URIError("URIちがうよ"); 他にも、RangeError, ReferenceError, MediaError, FileError, EvalError などがあります。 throw new した場合は、o_
「このJavaScriptコードが動かないのは,なぜですか?」というミニクイズ集。 すべて制限時間は1分。 別名,JavaScriptのエラー事典。またはアンチパターンのまとめ。 中級編 初級編 番外編 2015年5月現在,全53記事。 中級編 JavaScriptの仕様関連 p要素への appendChild() で失敗する かけ算を間違える イベントハンドラが見る値のエラー クロージャを使わない場合に起きるエラー オブジェクトのprototypeを変更した時のエラー 正規表現で同じ文字の連続を検出したい - 置換前パターン中での後方参照 jsonオブジェクトをevalできないエラー 不要なイベントが連鎖で発生してしまう (バブリングの対処) オブジェクトのプロパティ定義にthisを使って失敗するエラー setTimeoutのタイマーが指定時刻に動かないエラー オブジェクトのメソッドを
CakePHPでRESTful APIを作って、Backbone.jsのデータの永続化をサーバサイドで行う方法をメモしておきます。RESTful APIは、FuelPHP等、その他のPHPフレームワーク、Ruby on Rails等でも簡単に作成することができますので、各々好きなものを選択してください。ここでは、CakePHPを使った例を示します。 ここで制作したアプリケーションは、以下よりダウンロードできます。 Backbone ToDos with CakePHP RESTful API – GitHub 開発環境開発環境は以下の通りです。それぞれ執筆時点での最新バージョンを用いました。 ソフトウェアバージョン
WebアプリケーションにおいてJSONを用いてブラウザ - サーバ間でデータのやり取りを行うことはもはや普通のことですが、このときJSON内に第三者に漏れては困る機密情報が含まれる場合は、必ず X-Content-Type-Options: nosniff レスポンスヘッダをつけるようにしましょう(むしろ機密情報かどうかに関わらず、全てのコンテンツにつけるほうがよい。関連:X-Content-Type-Options: nosniff つかわないやつは死ねばいいのに! - 葉っぱ日記)。 例えば、機密情報を含む以下のようなJSON配列を返すリソース(http://example.jp/target.json)があったとします。 [ "secret", "data", "is", "here" ] 攻撃者は罠ページを作成し、以下のようにJSON配列をvbscriptとして読み込みます。もちろ
先週の4/26に開催された第38回HTML5とか勉強会「Webアプリ×テスト最新事情」で、JavaScriptのテストについて話させてもらいました。 発表資料はこちら。 JavaScript Unit Test Why? What? How? from teppeis 恥ずかしいビデオはこちら。http://www.ustream.tv/recorded/31976691 発表内容は、前回のWEB+DB PRESSで書かせてもらった内容の要約版+アルファでした。 個人的には、最近ようやく実践テスト駆動開発(通称GOOS本)を読んで、2重のフィードバックループとアジャイルテストの4象限、TDD/BDDなんかが自分内でガシーンと、ザ・ワールドが時の歯車をがっちり掴んだときのようなつながった感があったのですが、まだ言語化するには早かったらしくあまりうまくは伝えられなかったかなと反省しました。 座
LibIMEはオブジェクトに対するIME入力状態を検知できるJavaScriptライブラリです。 タッチタイピングが苦手な人が下を向いて文字を入力し、顔を上げたら全て英語で入力されていて(またはその逆)ショックを受けた、なんてことは度々あります。それを防ぐのに使えるかもしれないのがLibIMEです。 ime.statusでIMEの状態を取得できます。 入力するとそれに伴ってIME入力か直接入力かが分かるようになっています。 LibIMEを使えば日本語入力中であるか、直接入力中であるかがすぐに判別できます。それによって処理を変えたりするのも容易でしょう。使いどころの多そうなツールです。なお、jQueryがある場合はそちらを使うようになっています。 LibIMEはJavaScript製のソフトウェア(ソースコードは公開されていますがライセンスは明記されていません)です。 MOONGIFTはこう
福岡を拠点に活動するPLUSではWebサイト制作・iPhone/Androidアプリの開発を行っています。 WordPressはそのままだとアクセスが増えた時に、重くなりがちです。プラグインも入れすぎるとさらに重たくなることに。このブログだと表示スピードが改善前は7.7sかかっていましたが、見直しを行って0.4sにまで改善することができました。表示スピードは離脱率や、SEOとしても重要な要素ですので、改善する余地は大いにあります。 高速化に役立つツール まずはじめに、改善に役立つツールを2つご紹介します。 一つ目はWebWait。URLを入れると、読み込み時間を教えてくれます。まずはどのくらい時間がかかっているのか、チェックしてみましょう。 次はGoogleの「PageSpeed Insights」。URLを入れるだけで、高速化に役立つTipsを教えてくれます。もともとGoogle社内で
video/audioにハマりまくったメモ。作ってたのは、Flashでやってたような、複数の動画ファイルを、途中の選択肢によって色々変えながら見せるというようなインタラクティブムービーみたいなの。なので、ハードにvideoを使いまくるという意味で、普通に一本動画を見せるという用途よりももっと色々する必要があったわけだけれども、そうでない場合でも、videoが色々厄介であるということは知っておく必要があると思う。 とりあえず、videoやaudioを使いたい人は、以下の2ページを熟読せよ。 プラグインは要らない!音声/動画対応したHTML5 - audio/video要素 | Think IT Video - Dive Into HTML5 videoのイベントは HTML5 Video を眺めてるとなんとなく分かる。 audioライブラリ試してうまくいったやつはこれ。 SoundJS vi
こんにちは、すどーです。 RequireJSでjQueryやjQueryプラグインの非同期ローディングを試してみました。 最近は大規模な構成になると、「ちぢめる、まとめる、かためる(minify, combine, compress)」のが主流のようです。 ですが小中規模な構成や、依存関係にあるフレームワークなども多くあるので、簡単な使い方だけでも覚えておくと便利かと思います。 RequireJS: http://requirejs.org/ RequireJS API: http://requirejs.org/docs/api.html RequireJSの主な特徴 モジュール化(AMD APIをサポート) 非同期ローディング OPTIMIZERによる最適化 1. モジュール化(AMD APIをサポート) AMD(Asynchronous Module Definition)はComm
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く