2010-01-01から1年間の記事一覧

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を書いててハマったのでメモ。 こんな感じのコードだっ…

昨日騒ぎになったTwitterのXSS脆弱性によって実際に受けそうな被害とその対策

何が出来るのか どんな脆弱性かの詳細はこちらを参照2010 年 9 月 21 日現在のツイッターのバグ(脆弱性)について 外部JavaScriptを読み込むコードを仕込めたので、 どんなJavaScriptでも実行できる状態でした。 以下、JavaScriptの実行によってTwitter上で出…

git rebaseでよくやること

ticket1というtopic branchで作業していて、 ひとつ前のcommitに対する修正をしたくなったとする。 git checkout HEAD^でひとつ前に戻って、修正してcommit,commit場合によってはcommit --amend。 この時のhash値(1234ab等とする)をコピーしておいて、 git c…

若手IT勉強会 secrets of the JavaScript Ninja 読書会(第5章 prototypeの話)

注意 基本的に自分が気になったことしか此処には書かないので、 これだけ読んでもNinja本読んだ代わりには全くならないですよ、っと。 HTML Prototypes HTMLElement.prototypeに生やしたmethodが、 document.getElementById等で取得したDOM要素のobjectで使…

旧態然とした会社と最新技術をおいかけまわす会社、以外の会社

それが本当に「間違っている」のであればそれはいずれ淘汰されます。だけれども旧態然とした会社と最新技術をおいかけまわす会社、5年後にどちらが存続しているかは結構微妙な勝負なのではないかと思います。現在もそんなやり方をつづけられているのであれば…

rebase時に順番変わっても元のcommit日時は保持されるのね

画像はMercurial Rebase Extensionのhg rebaseを使った後のlogをTortoiseHGで表示したもの。 もちろんchangesetのhash値は変わっている。 なお、Gitも同じ。

WebMVCにおいては、View=Presentation+Seriarizationではないかという話

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.com/widgets.js"; fjs.paren…

TortoiseHG+hgsubversionでmerge trackingを使ってsvnのbranchをmergeする

前説 前回エントリは単純なmergeの例だったので、 svnリポジトリのbranchのmergeをMercurial上でやるメリットがそれほど大きくない。 Mercurialを使ってバージョン管理をする場合以下のようなやり方をすることが多い。 3のmergeでconflictがあまり発生しない…

TortoiseHG+hgsubversionでのsvnのbranchのmerge

概略 hgsubversionではhg mergeしてできたmerge済みrevisionをpushすることはできない。 hg mergeしたら merge前revisionにhg update merge済みrevisionでrevert hg commit とやって同内容の非merge revisionを作ってそれをpushすれば良い。 せつめー 黄色の…

Excelの表中の「数字-」の数字を増減

例:1減らす場合 Firebugのconsoleに下のコードをコピペして、 Excelの表を範囲選択してコピーしたものを"ここ"って書いてあるところに突っ込む。 で、実行。 copy( <> .toString().replace(/(\d)-/g,function($0,$1) ($1-1)+"-") );

RSpecで日付を上手く扱うmatcherはないのかと思ったが

Railsなら別になくても困らなかった。 というのもDate,Timeに.today? past? future? などの 使い勝手のいいmethodが生やされているので、 RSpec標準のbe_predicate matcherを組み合わせれば、 subject {@hoge_time} it {should be_today } みたいに書けちゃ…

Excelの表をRedmine等に持っていく

Firebugのconsoleに下のコードをコピペして、 Excelの表を範囲選択してコピーしたものを"ここ"って書いてあるところに突っ込む。 で、実行。 copy( <> .toString().replace(/^|\t|$/gm,'|') );

ActiveRecordのhas_many :throughでn:nをやる時にハマっている件

Rails(2.3.5)でハマっている。 hoge,fugaの2テーブルを中間テーブルhoge_fugaを使い、 ActiveRecordのhas_many :throughでn:nにしたい。 class Hoge < ActiveRecord::Base set_primary_key 'hoge_id' has_many :hoge_fugas, :foreign_key => 'hoge_id', :dep…

Subversionのブランチ操作を git並に簡単にするsvnbr

http://openlab.dino.co.jp/2010/04/07/225425663.htmlをforkした。 GitHub - monjudoh/svn-utils: Subversion Utilities 変更内容は root以外の階層でbranches/,tags/を作っていてもbranch,tagの操作ができるようにした tagについてもswでsvn swできるよう…

hgsubversionの導入

基本的にhttp://monkeyisland.pl/2009/11/04/hgsubversion-on-windows/を参考にする svnをインスコする hgsubversionを使うにあたってはsvnコマンドのインストールが必要。 TortoiseSVNが入っていてもダメ。 Apache Subversion 設定時に知っておくべきことか…

Ex DOM Storageが読み込んだ直後に使えるとは限らない件

Ex DOM Storageのscriptタグの下のscriptタグ内のJavaScriptで、 localStorage,sessionStorageの各プロパティ・メソッドが使えないという現象が、 数回に一回発生した。 今、これを使ってるアプリではとりあえずDOMContentLoaded後にはまず確実に使えるっぽ…

Webページのtable一行分をコピーして、CSV一行分に変換してクリップボードに突っ込む

Firebugのconsoleに下のコードをコピペして、 table一行分をコピーしたものを"ここ"って書いてあるところに突っ込む。 で、実行。 copy( <> ここ .toString() .trim() .replace(/\n/g,'') .replace(/\s+/g,',') ); 文字列の中にXMLのタグとして解釈されるで…

Secrets of the JavaScript Ninja輪読会 JavaScriptのテスト

先日行われた若手IT勉強会 : ATNDに参加。 JavaScriptのテスト周りの話を読む。 JavaScriptのテストユニットフレームワークにおいては、 非同期テストのサポート eventのシミュレーションのサポート が重要とかそんな感じだった。 QUnitでは非同期テストはサ…

システムエンジニア 生き残りの極意

実はオブジェクト指向ってしっくりこないんです!:気分はstatic!:エンジニアライフ クソみたいな技術力でも生き残れる世渡り術の話を聞きたいですね。 技術力の酷さをアッピルしてるのは、極意の話をするための前振りですよね?

Ex DOM Storageがあるからと安心してWeb Storage使いまくりなWebアプリを作ると落とし穴に嵌る件

Ex DOM Storageを使っていて嵌った。 頭がおかしくなりそうだったがなんとかとりあえずの解決はできたので、 その件について話をする。 Ex DOM Storage IE6,7でWeb Storageを使えるようにするライブラリ。 userData behaviorとhtcを使って実装されている。 …

Ex DOM StorageをRailsで使う

Ex DOM Storage をリリースしました - Yet Another Hackadelic 個人的メモ Content-Typeの設定 Content-Type を設定するEx DOM Storage では IE 独自機能である DHTML Behavior を使っています。これについては別のエントリで解説しようと思いますが、配布フ…

storage eventの中でlocalStorage.lengthを参照し、localStorage.removeItem()実行でFirefox3.6を落とす

JS Bin localStorage storage eventの中でlocalStorage.lengthを参照するようにして、 localStorage.removeItem()実行後にlocalStorageにitemが1件ある状態で localStorage.removeItem()を実行すると Firefox3.6 では稀によく死ぬ。 同じkeyに対するsetItem(…