タグ

ブックマーク / monjudoh.hatenablog.com (29)

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

    お前、誰よ 文殊堂といいます BePROUD社員 お仕事 最近は、JavaScript時々Objective-C 今日のお話 自動テストの話はしません テスターによるテストの話をします タイミングによって発生したりしなかったりする類のバグってありますよね テスターさんがモンキーテストをやってくれてる時に見つけてくれたりします でも報告されるのは… 「何をやっているときに」 「何が起こったか」 つまり、「操作」と「現象」だけです 原因箇所を特定するにはプログラマもその操作をなんども繰り返さないといけません ダルい 何とかしたい 問題の実例 IE(主に6,7)で「操作は中断されました」が出る What Happened to Operation Aborted? – IEBlog HTML解析中にまだ閉じタグまで解析されていない要素(bodyとか)に対して、子要素の追加や削除を行うと「操作は中

  • jQuery custom event 応用編 - monjudoh’s diary

    前置き custom eventとは何か?(前置きの前置き) ブラウザがサポートしているeventではない独自定義event。 clickとかはブラウザがサポートしているevent ユーザのアクションやブラウザの状態等によって直接発火されることはない click eventは、ユーザがマウスポインタを要素の上に移動後にマウスのボタンを押すと発火される DOMContentLoaded eventは、ページのHTMLがダウンロード完了し、すべてパースされると発火される jQueryではtrigger,triggerHandler methodでeventをユーザのアクション等に関係なく発火することが出来る custom eventも発火出来る 逆に言うとcustom eventはJavaScriptの側からしか発火されない 以前The JUI 2009 Returnsで話をしました。 htt

    jQuery custom event 応用編 - monjudoh’s diary
  • CSRF脆弱性対策 - monjudoh’s diary

    CSRF対策のtokenはセッションIDで良い セキュリティ的にワンタイムトークン>セッションIDではない。 という話が、この辺の記事に書かれています。 高木浩光@自宅の日記 - クロスサイトリクエストフォージェリ(CSRF)の正しい対策方法 高木浩光@自宅の日記 - CSRF対策に「ワンタイムトークン」方式を推奨しない理由, hiddenパラメタは漏れやすいのか? 肝はこういう事のようです tokenは外部のサイトから知り難い(実質知り得ない)ものでないといけない セッションIDはcookieに格納される document.cookieは自ドメインのものと親ドメインのものしか見れない→外部サイトで動かすJavaScriptからは参照できない セッションIDは『暗号学的に安全な擬似乱数生成系で生成されているはず』(引用) 推測も事実上できない 補足すると、セッションIDを使用したCSRF対

    CSRF脆弱性対策 - monjudoh’s diary
  • 昨日騒ぎになったTwitterのXSS脆弱性によって実際に受けそうな被害とその対策 - monjudoh’s diary

    何が出来るのか どんな脆弱性かの詳細はこちらを参照2010 年 9 月 21 日現在のツイッターのバグ(脆弱性)について 外部JavaScriptを読み込むコードを仕込めたので、 どんなJavaScriptでも実行できる状態でした。 以下、JavaScriptの実行によってTwitter上で出来る事。 セッションハイジャック JavaScriptからcookieを参照できるのでログイン状態のセッションIDも参照できます。 また、任意のJavaScriptが実行できる以上、参照したセッションIDを攻撃者のサーバ等に送信することも出来ます。 攻撃者は奪ったセッションIDをcookieに設定すれば、被害者のアカウントでtweet,direct messageの閲覧・送信が出来ます。 確認してみたところ、ログイン状態のセッションIDはログアウトしても無効にはなりません。 設定→パスワードからパスワ

    昨日騒ぎになったTwitterのXSS脆弱性によって実際に受けそうな被害とその対策 - monjudoh’s diary
  • Excelの表をRedmine等に持っていく - monjudoh’s diary

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

    Excelの表をRedmine等に持っていく - monjudoh’s diary
  • Firefox3.6への移行 - monjudoh’s diary

    Webブラウズ用profile アップデートしたadd-on Stylish-Custom 0.7.0 Wescript 0.0.35 アンインストールしたadd-on Personas 3.6から標準機能になったのでいらなくなった。 MR Tech Toolkit で互換とみなしたadd-on It's All Text! 1.3.1 デフォルト以外の拡張子が選べないなどの問題があるので正式なアップデートが早く提供されないものかと思っている。 今頑張っているところらしいhttp://trac.gerf.org/itsalltext/roadmap Auto Copy 1.0 Hatena Toolbar for Firefox 0.6.0 Live TopHatenar 0.3 Long URL Please 0.4.1 Save Image in Folder 1.2.7 Select

    Firefox3.6への移行 - monjudoh’s diary
  • 自分の見方とお客さんの見方は違う、もしくは違ってもいい - monjudoh’s diary

    http://d.hatena.ne.jp/aureliano/20100114/1263451331 好きを貫いているかというと微妙だけど楽しく仕事してる私が通りますよ、と。 別に自分を捨てなくてもお客さんに喜んでもらえる場合も多々あると思うのだ。 仕事をする人が自分の見方で楽しい・嬉しいと思えるやり方で仕事をしたとして、 その結果が顧客の見方で好ましいものであれば双方ともにハッピーだが、 この時顧客は仕事をする人がなぜハッピーであるかを仮に全く分からなかったとしてもハッピーである。 レガシーコードの改修で高品質を実現したことで顧客が喜んでいるとする。 開発者にとって、そのコード自体は全くエキサイティングでない事も、 俺々バージョン管理を通じて分散SCMでのtopic branchの運用ノウハウを蓄積出来てうれしい事も、 インチキこっそりTDDを通じて乏しかったTDDノウハウが少々身に付

    自分の見方とお客さんの見方は違う、もしくは違ってもいい - monjudoh’s diary
  • 車輪の再実装をしない方がよい理由 - monjudoh’s diary

    「俺のソースだから」というプログラマは死んだらいいのに - 神様なんて信じない僕らのために 車輪を再実装しない方がよいというか、 再実装した車輪を使わない方がよい理由だけど、 テストや検証の量が全然違うからというのが一番大きいと思う。 標準のライブラリなりOSSなりなんかの製品なりだったら、 テストコードはきっちり書いてあるだろうし、 それ以外のテストもしてるだろうし、 たくさんのユーザが使う事で分かったバグの対処もされている。 逆に言うとそうでない場合はあんまり有り難みはないけど、 再実装したての車輪にはもっとない。 車輪の再実装をする当のコストっていうのは、 車輪を実装する分のコストだけじゃなくて、 テストや検証を既存の車輪と同じくらい充実させるコストも含んでるという訳。 仕事でコードを書いているときは、 車輪を再実装する事自体が目的でない以上、 なかなかそこまでコストはかけられない

    車輪の再実装をしない方がよい理由 - monjudoh’s diary
    imai78
    imai78 2009/12/30
    ビジネスなのだから勉強の為云々を考えてる暇はないし、それ以外にやるべき事てんこ盛りだし。使いまわせるものなら使いまわすのが当然だよね。
  • jQuery1.4aでのlive event/special event - monjudoh’s diary

    BPStudy#28 : ATNDの発表資料。 スライドなどは用意しておらず、これで発表する。 自己紹介 技術方面でのキーワード jQuery 主にevent周りを追っかけている Mercurial 俺々管理からチーム開発まで、開発をより上手くまわせるバージョン管理の仕方を追求中 Struts2 今仕事で使ってる 気に入った 技術者相手では名前で損してる印象 Python Be PROUD社員だったりDjango・Pyhonハッカソン、Python温泉によく参加してたりで誤解されがちだが全然書けない Perlの方がまだ書ける Be PROUD 株式会社ビープラウドの社員 ついったでbeproudハッシュタグ付き発言を時々している 今日の題jQuery1.4 先日jQuery1.4のアルファ版がリリースされた。 jQuery 1.4 Alpha 1 Released | Official

    jQuery1.4aでのlive event/special event - monjudoh’s diary
  • Python Hack-a-thon 第2回 jQuery plugin作成ハンズオン - monjudoh’s diary

    jQueryのハンズオンをやりますが全然準備していないので即興でやります。 jQueryを始める上であるとよいもの jQuery jQuery 開発環境 MacPCLinux 向け新高速ブラウザー | Firefox Firebug FireQuery is a Firebug extension for jQuery development FireQuery - jQueryを扱う際に便利なFirebug拡張 - - 文殊堂 https://addons.mozilla.org/en-US/firefox/addon/11905/ FirefinderはJavaScriptプログラマ以外も使うべき - 文殊堂 ドキュメント http://api.jquery.com/browser/ 下の方に"INSTALL NOW"とかあるのでクリックしてAdobe Air板をインスコしましょう

    Python Hack-a-thon 第2回 jQuery plugin作成ハンズオン - monjudoh’s diary
    imai78
    imai78 2009/11/19
    pluginって思っていたより全然簡単に作れるのね。
  • TortoiseHGのGuess Renamesが超素敵な件 - monjudoh’s diary

    EclipseのJava projectをMercurialのリポジトリとして管理していて、 その中に何かclassがあるとします。 Eclipseのリファクタリング機能でpackage移動とclass名変更すると、 変更/移動元classのファイル削除と、 無関係の新規ファイル(変更/移動)追加になっている。 これは嬉しくない。 そこで、右クリックメニューからGuess Renamesを選択する。 類似度を自動判定し、後付けでhg renameにしてくれる。 ちゃんとファイルの移動になっています。 annotateで見てもちゃんと、 (自動で)変更されたpackage宣言/class宣言の行だけが 先ほどcommitしたリビジョンになっています。 参考・公式ドキュメントより Bitbucket | The Git solution for professional teams

    TortoiseHGのGuess Renamesが超素敵な件 - monjudoh’s diary
  • FizzBuzz - monjudoh’s diary

    最近FizzBuzzをblogで書くといいよみたいな流れになっている(曲解)ので // JavaScript1.8前提 new Array(101) .join(',') .split(',') .map(function(n,i) i%3 ? n : n + "Fizz") .map(function(n,i) i%5 ? n : n + "Buzz") .map(function(n,i) n || i) .slice(1,101) .join('\n'); ジェネレータ式も試してみた。無限FizzBuzzイテレータを生成し、100回だけ呼んでみた。 // JavaScript1.8前提 let it = ( (function(n,i) n || i)( (function(n,i) i%5 ? n : n + "Buzz")( (function(n,i) i%3 ? n : n

    FizzBuzz - monjudoh’s diary
    imai78
    imai78 2009/10/02
    うむ、意味が分からん><
  • JavaScriptで二つの配列の積集合を取得 - monjudoh’s diary

    面倒くさいのでJavaScript1.8で、 1.8をFirebugで使いたい場合は↓を参考に。 肉少なめ | Item - Firebugのコンソールでjavascript 1.8を使う var array1 = [1,2,3,4,5]; var array2 = [2,4,5,6,7]; var in_array1 = {}; array1.forEach(function(n,i){in_array1[n]=true;}); var result = array2.filter(function(n,i)in_array1[n]); result != array2; // true result; // [2,4,5]

    JavaScriptで二つの配列の積集合を取得 - monjudoh’s diary
  • Mercurialを使った俺々バージョン管理ノウハウまとめ(2009年夏編) - monjudoh’s diary

    職場でMercurialを使っていい感じに俺々バージョン管理を やれるようになってきた感があるので、 ノウハウをまとめる。 概略 中央リポジトリと同期をとるbranchを用意する 同期branchはsync_cvsとかそんな名前 defaultをそのまま使っても良い このbranchで開発作業は絶対にしない 全ソースをhgで管理しない 中央リポジトリで管理しているソースの数が多い場合の話 hgで管理するファイル数が多いとhg update等が遅くなり、開発のスピード感が落ちる ticket毎に開発作業用branchを作成する 同期branchから作成する 同期branchから随時rebaseする 必ず、同期branchの最新版からrebaseした状態でテストを行う。 テストが通ったらticket別branchから同期branchにmergeする。その後、同期branchの内容で中央リポジト

    Mercurialを使った俺々バージョン管理ノウハウまとめ(2009年夏編) - monjudoh’s diary
  • The JUI 2009 Returns (JavaScript User Interface) - monjudoh’s diary

    The JUI 2009 Returns (JavaScript User Interface) : ATND CSS Transforms, JavaScript IME, Explorer-like selection Paul Bakaus jQuery UIのメインcommiter JavaScript UIunittest frameworkを作ってる 3Dの箱の表面にテクスチャ貼ったりテクスチャをごりごり動かしたり 今はsmart.fmのflash UIJavaScriptに置き換える仕事で来日 CSS Transforms CSSだけで要素に角度付けたりとか回転したりとか transformie JavaScript IME formにアルファベットを打ち込んでいくとカナに変換してくれたりする。 smart.fmの新UI 凄い データを持ってくるところ以外は全部JavaS

    The JUI 2009 Returns (JavaScript User Interface) - monjudoh’s diary
  • 第二回チキチキ 日本ペアプログラミングの会java-ja支部会(仮) - monjudoh’s diary

    http://java-ja.yoshiori.org/index.php?%E7%AC%AC%E5%8D%81%E4%BA%94%E5%9B%9E 30分遅刻した テスト 開発者 顧客 品質保証 それぞれの立場でのテストがある 現在のソフトウェア開発三柱 バージョン管理 branchをどこまでmergeしたかとかの管理が大変だった モダンなSCM(Mercurial,Git)ではその辺憶えててくれてるから楽になったよねー。 テスティング 自動化 Hudson 自動化→自働化 3足のイスの足みたいなものなので一つ破綻すると全部破綻する 動作する・きれいの2軸 きれいにする→リファクタリング リファクタリングは一気にたくさんやろうとするととても大変 常に細かくリファクタリングし続ける red→green,refactoringのフィードバックサイクルは色んなスケールで回す。 TDDと品質

    第二回チキチキ 日本ペアプログラミングの会java-ja支部会(仮) - monjudoh’s diary
    imai78
    imai78 2009/06/09
    行きたかった><
  • FirefinderはJavaScriptプログラマ以外も使うべき - monjudoh’s diary

    Firefinderとは何か? https://addons.mozilla.org/en-US/firefox/addon/11905/ CSSセレクタやXPathで要素を検索出来るFirebugの拡張です。 どんな人にお勧めか? hiddenフィールドの値を閲覧したり、 formのどの要素のnameが何かとかさくっと見たくなることないですか? あるならお勧めです。 Firebugには既に$$というCSSセレクタで要素を検索出来る関数があるんだが? CSSセレクタのサポートの度合いが違います。 $$関数では基的なCSSセレクタしかサポートされていないので、 例えば、ここなら、http://images.google.co.jp/advanced_image_search?hl=ja $$('input'); // [input, input ja, input Google 検索, i

    FirefinderはJavaScriptプログラマ以外も使うべき - monjudoh’s diary
  • BP Study#19 Google Apps & Google App Engine - monjudoh’s diary

    株式会社ビープラウド Google Apps 独自ドメインでGoogleのWebアプリを使える。 メール・カレンダー・ドキュメント・サイト・連絡先・ビデオ APIやサービスが結構充実している 細かい要求についてはAPIを叩いて各自実現すれば良いのでGoogleはそんなに実装しません Google Apps APIs Email Migration 管理者権限でユーザのメールボックスにメールを突っ込める Single Sign-On 例えば、メールを使う際にGoogleにログインしないで、組織内の認証が通っていればよしとするとかいったことができる Domain Shared Contacts 社内共通で見れるアドレス帳とか使える N大学案件 2007年春 約10万人の全学生にGoogleAppsを導入 ユーザ管理ツール なかったのでPHPでカカッと作成 学部ごとの管理権限 カスタムのメールア

    BP Study#19 Google Apps & Google App Engine - monjudoh’s diary
  • 業務システムとか - monjudoh’s diary

    クソの役にも立たない言葉なので使うのやめようぜ というのは半分冗談だけど半分音。 「業務システムでは実装なんて3割程度だから大して重要ではない」がSI業界が解決すべき問題を端的に示している - @katzchang.contexts このエントリ見てふと思ったんだけど、 一口に業務システムと言っても、お客さんの商売の種類や何のシステムかによってずいぶん違うと思うのだ。 IT技術者の所属している業界について、SI業界とWeb業界みたいにきれいに分かれているように言う人も結構いると思う。 でも、例えば、ECサイトのユーザ側じゃなくてバックエンド側のシステムの開発はWeb業界の仕事となると思うんだけど、 SI業界の仕事で似たようなのあるでしょ? 同じようなものを扱ってるのに、SI業界の仕事だからどうだとかWeb業界の仕事だからどうだ、 とか言ってたら正確な議論はできないし、逆もまたしかりで、

    業務システムとか - monjudoh’s diary
    imai78
    imai78 2009/02/23
    ウォーターフォールとかって関係あるの?
  • 属人性の排除とか(プログラマ以外編) - monjudoh’s diary

    ちょっと昔話 私が前の会社で新人の頃に最初に行かされた案件の話。 誰もが知っている大手SI屋が元請けで誰もが知っている家電メーカー相手にやっている2000人月の大規模プロジェクトで、 新人だった私には各テスト環境向けにビルドとデプロイをするだけの刺身タンポポな仕事があてがわれました。 CVSでつけられたタグ名のセットを受け取って順繰りにexportして…とかそんな感じだったと思います。 私の同僚がミスを連発する等して一日分の結合テストが丸々無駄になったということもままありました。 私は刺身タンポポ作業が退屈で仕方なかったので、作業を自動化するツールを作って、 作業量と作業の際に必要な集中力の量を大幅に減らしました。 ミスはほとんど起こらなくなりました。 私は仕事中はほぼイソターネッツ三昧でしたがプロジェクトの偉い人にとても誉められましたし、 高評価が営業を通して会社に伝わったので、会社での

    属人性の排除とか(プログラマ以外編) - monjudoh’s diary
    imai78
    imai78 2009/02/15
    属人性の排除、というのがもう都市伝説なのかもね、という雰囲気の中のツールGJ。