昨日騒ぎになった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(…

JavaScriptが遅い第一の原因

十年近く前の処理系が未だに現役であること。 JavaScriptが遅い4つの原因とは? - Publickey

Firefoxのタイトルバーの表示名を変える(clone profileの使用時等)

Firefoxの複数profileの使用 Firefoxのprofileをたくさん作っている場合、 今開いているのがどのprofileなのか分からなくなり、 例えばPersonasで別Personaにすることで区別したりする。 分散SCMによるclone profileの使用とその際の問題 ただ、あるWebサイ…

RSenseをvimで使ってみた(MacOSX)

http://cx4a.org/software/rsense/index.ja.html 基本的にはhttp://cx4a.org/software/rsense/manual.ja.htmlの通りにやったが、 そのままだと動かなかったので、.vimrcに以下を追加したら動くようになった。 setlocal completefunc=RSenseComplete なお、g:…

minifyされたJavaScriptにconsole出力等の処理を挟む、特定経路を通った場合に処理を挟む

minifyされたJavaScriptへのブレークポイントでの処理の挟み込み Firebugのブレークポイントは行に貼るのでminifyされたJavaScriptと相性が悪い。 例えばjQuery.ajaxが定義されている行にFirebugで元のJavaScriptのコードに手を入れずにdebug用のconsole出力…

Firebugを使って無名関数への参照を手に入れる

Firebugで元のJavaScriptのコードに手を入れずにdebug用のconsole出力を入れる方法 - 文殊堂の応用編参照が欲しい無名関数の中の適当な所で、 breakpointを設定し、条件を↓にする。 (window.someFunction = arguments.callee),false この無名関数が1度でも実…

コミュニティへの帰属意識

もうひとつ、転職が日常茶飯事なので、会社をまたいだ人脈のつながりが非常に大きい。会社は人を探す時にまず人脈に頼るし、人が就職先を探す時もそう。なので気分で馘を切ってる職場があったとしたら、業界内でどういう評判になるかは推して知るべし。「そ…

Firebugで元のJavaScriptのコードに手を入れずにdebug用のconsole出力を入れる方法

Firebugでは条件付きブレークポイントが使えるので、 scriptタブにて該当行にブレークポイントを貼り、 条件としてconsoleへの出力を||区切りで、最後に&& falseを入れる。 console.debug('this.lastPosition') || console.dir(this.lastPosition) && false …

changesetを書き換える者すらいた。 commitログで嘘はつける

subversionのcommitごとにdiffを見ればどういう思考をしたかはだいたいわかる。むしろ、自然言語で進捗を報告すると、30%しかできていないのに80%できたと見栄をきったり、1日でできる仕事なのに「これは1週間はかかるッスね」と言って楽をするといった不…

Prepare Interceptorの使いどころ

http://struts.apache.org/2.x/docs/prepare-interceptor.html action methodの事前処理としてprepare() methodやprepare{MethodName}() methodを呼べる と言われても今一使い勝手が分からなかったが、 これがinterceptorであり、 interceptorはinterceptor-…