r.jsでビルドする際に設定として使うbuild.jsを動的にする。さらに部品化する。

r.js RequireJS用のmoduleをビルドする際にはr.jsを使います。 build.js この時にビルド設定の記述に使用するのがbuild.jsでこんな感じで書きます。 簡単な例だとこんなの ({ baseUrl:'./src', dir : './build', paths:{ jquery:"../lib/jquery-1.8.2", text…

Require JSで設定をmodule外に出して、それをビルド時に同梱する

モジュール別の設定を読み込む RequireJSではモジュールの名前として"module"が予約されていて、モジュール内でmoduleモジュールを取得するとそのモジュールの情報を参照することが出来ます。 define('foo',['module'], function (module) { }); RequireJS A…

CommonJS AMDとDeferred

Writing Modular JavaScript With AMD, CommonJS & ES HarmonyのModules With Deferred Dependenciesが便利なので活用してる。 初期化処理が非同期処理でrequireしてきても即使えるとは限らない場合に使う。 モジュール側ではモジュールそのものではなくてpr…

JavaScriptでコマンドを作って実行する

前置き Firebug1.10にhelpコマンドなるものが入ってました。 consoleでhelpって入力して実行するとFirebugで使える関数等が表示されます。 help();じゃないんですよ。 関数じゃなくてコマンド。 どうやって実現しているんだろうかって気になったのでエスパー…

JavaScriptでのbuilt-in/DOM objectのprototype拡張

@rosylillyが気にしていた window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.c…

BPStudy#60 ECMAScript5時代のJavaScriptライブラリ

JavaScript: 世界で最も誤解されたプログラミング言語(2001年) JavaScript: The World's Most Misunderstood Programming Language http://d.hatena.ne.jp/brazil/20050829/1125321936 2012年未だ誤解されているプログラミング言語JavaScript 嫌われている"J…

インスタンスに依存した初期値を持つ書き換え可能propertyの定義

インスタンスに依存してなければこれで済むから簡単ですよねー function A(){} var proto = A.prototype; Object.defineProperty(proto,'key',{ value : 'default', writable : true }); インスタンスに依存している場合はprototype定義時にそのインスタンス…

JavaScriptでの非同期関数合成

Unserscore.jsや互換ライブラリのLo-Dashを使うと関数合成が出来ます。 複数個の関数があって、関数を呼び出した結果を使って関数を呼び出して…っていうのを1個の関数にします。 ドキュメントの例を見れば分かるかと。 簡略化のために関数合成の対象になる関…

packerで圧縮されたJavaScriptのdebug方法

minifyされたJavaScriptは各種開発者ツールのdeminifierを使えば整形された状態でdebug出来ますが、packerで圧縮されたJavaScript(以下packed JS)はどうかという話。 Google Chromeの開発者ツール前提で話をするので他のブラウザについては誰か調べてみてく…

MacHGでのrebase onto Mercurial Advent Calendar 2011

partake.inの12日目は文殊堂がお送りします。 深夜35時などという遅くに申し訳ありません。 今日はSourceTree無料キャンペーンによって存在意義が危うくなった感のあるMacHGも得意な箇所は凄いんだよ、ということで MacHGでrebase ontoをやるお話です。 Merc…

LT概要「GitとMercurialのリポジトリ構造の違いと歴史改変について」SCMBootCamp in Tokyo

SCMBootCamp in Tokyo 開催しました。KPT公開。 - うさぎ組にて手ぶらLTをしたので資料はないが、内容を軽くまとめておく。 GitとMercurialの比較 Git Mercurial リポジトリ commit objectのグラフと、branchのHEAD,tagなどの参照で出来ている。 commit obje…

勉強会での内輪ネタについて

内輪ネタはただの+α 最近の話だとRubyKaigi他での魔法少女まどか☆マギカネタとRubyKaigiでのたこ焼き仮面ネタあたりか。 内輪ネタって知ってたら面白い、知らなかったらそれはそれで困りはしないってものであるべきだと思ってて、 つまり、+αであるべきだと…

clone元以外のリポジトリとの同期

remote repository追加 remote repositoryをgit remote addで追加。 GitTowerの場合Refs->Add New Remote Repositoryから追加。 remote branch情報の取得 remote repositoryに対してgit fetchで、remote repositoryのremote branch一覧を取得出来る。 clone…

友達を作る 新卒準備カレンダー 2011春

新卒準備カレンダー 2011春 : ATND お前だれよ 普段全然気にしてないのですが簡単な引き算が間違っていなければ社会人7年目らしいです。 去年くらいまではWebアプリを作る仕事がメインで、いろいろな言語でサーバサイド書いたり、 たまにクライアントサイド…

githubで複数ユーザを使い分ける

githubというかgitosisはsshの鍵でユーザを判定します。 設定の仕方はhelpでも見てくだしあ。 Redirecting... Redirecting... Redirecting... 自分のgithubユーザとして色んなマシンからgithubを使う場合は簡単です。 上記の説明のとおりに公開鍵を追加して…

Shibuya.js - Test.js LT テスターを支援する仕組みの話

お前、誰よ 文殊堂といいます BePROUD社員 お仕事 最近は、JavaScript時々Objective-C 今日のお話 自動テストの話はしません テスターによるテストの話をします タイミングによって発生したりしなかったりする類のバグってありますよね テスターさんがモンキ…

続・IEでのa要素の各属性について

前置き IEでのa要素の各属性について - 文殊堂の続き。 IE 6,7 で相対URL -> 絶対 URL の変換 - #生存戦略 、それは - subtechを参考にして、 cloneNodeハックとlink.hrefによるURLの絶対URL化を組み合わせてみました。 http://jsdo.it/monjudoh/o2Mk htt…

IEでのa要素の各属性について

色々あってa要素でURLをパースするというコードを書いていて色々はまったのでまとめます。 IE6-8でのa.hrefの上限 IE6,7:4096bytes IE8:4121bytes でした。 なお、Firefox,Google Chrome,Safariは1MBとか普通に扱えます。 使わないけど。 http://jsdo.it/mon…

BPStudy#41 RequireJSとeventとUIコンポーネント

自己紹介 文殊堂といいます BePROUDの見習いiOSプログラマです。 JavaScriptで30byteでFizzBuzzを書けます。 location.href='//is.gd/kzkQhu' iOSの前はUIがリッチな業務システムを作るとかそんな仕事をしてました。 内容 RequireJS実践編 jQuery custom eve…

疎結合なUIコンポーネントの作成について

複数画面で使えるAjax formダイアログのコンポーネントを作る 初期状態 Google CalendarのようなWebアプリを想像してください。 1日が1個のセルになっていて、セルをクリックしたらスケジュール登録ダイアログが表示され、 入力して登録ボタンを押すとスケジ…

jQuery custom event 応用編

前置き custom eventとは何か?(前置きの前置き) ブラウザがサポートしているeventではない独自定義event。 clickとかはブラウザがサポートしているevent ユーザのアクションやブラウザの状態等によって直接発火されることはない click eventは、ユーザがマウ…

Mercurialで別オリジンのリポジトリ間の同期を取る運用の仕方について

前説 DjangoでWebアプリを開発していて自分はJavaScript部分を担当しています。 で、サーバ側を動かさないと開発できないのは辛いので、 サーバサイドで生成されたHTMLとJSONをwgetして、js/dummy/とかに配置し、 各種URLの参照を書き換えてローカルでJavaSc…

java-ja.js #2 RequireJS実践編

java-ja.js #2 : ATND 自己紹介 文殊堂といいます。 BePROUDという会社のリーダーです ↑はロケタッチの話です(ロケタッチ知らない人は4SQでMayorになったみたいな話だと思っといてください)。 弊社では今(2010年12月現在)人材募集中らしいですよ。 今の仕事…

IEではRequireJS+jQueryで$(document).ready()で設定したcallbackが実行されないことがある&その対応

とりあえずRequireJS0.14.5+jQuery1.4.3,RequireJS0.15.0+jQuery1.4.4で発生。 IEは6~8っぽい。なんで気づいたかというと IEでjQueryUI等の動作がおかしくなった CSS Box Modelがサポートされている状態なのに$.boxModel(=$.support.boxModel)がtrueでない f…

RequireJS moduleについて

RequireJSって何? 公式サイト RequireJS スライド jQueryRequireJS.pdf 日本語記事だとこの辺? http://zudolab.net/blog/?p=451 要はJavaScriptの依存性解決をしてくれるライブラリで、こんな感じで使えます。 require( [ 'lib/a' ,'lib/b' ,'lib/c' ], func…

debug-assert-RequireJS-moduleなるものを作りますた

GitHub - monjudoh/debug-assert-RequireJS-module: RequireJS module for debugging and assertion. これは何かと言うとRequireJS moduleについて - 文殊堂で説明したRequireJSのmoduleで、 debug支援用のものです。 debug log出力の基本的な使い方 Require…

Dateをプロトタイプ汚染から守るExDate

というJavaScriptのライブラリを作りました。 GitHub - monjudoh/ExDate: JavaScript Date class wrapper for using conbination with Date libraly which leads to prototype pollution. 何をするライブラリか ExDateというclassを定義しています。 やって…

hgsubversionのhg clone --startrev

前置き hgsubversion自体の導入については↓をどうぞ hgsubversionの導入 - 文殊堂 ちょっと前までのhgsubversion ちょっと前までhgsubversionではsvnのリポジトリの完全なコピーを作ることしかできませんでした。 例えば10年物のsvnリポジトリをhg cloneする…

CSRF脆弱性対策

CSRF対策のtokenはセッションIDで良い セキュリティ的にワンタイムトークン>セッションIDではない。 という話が、この辺の記事に書かれています。 高木浩光@自宅の日記 - クロスサイトリクエストフォージェリ(CSRF)の正しい対策方法 高木浩光@自宅の日記…

GreasemonkeyでクロスドメインiframeのcontentWindowにアクセスするとエラーになる件の回避方法

http://from.example.org/ のページでほげほげした結果を iframeで開いたhttp://to.example.com/ のページにwindow.postMessageで渡して、 そっちのGreasemonkeyで何か処理をさせるみたいなGreasemonkeyを書いててハマったのでメモ。 こんな感じのコードだっ…