サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
send.hatenadiary.org
すごい面白かった。会いたかった人にも沢山会えたし。 適当な感じのスライドですが、そこそこ反応があって嬉しかった。 [Shibuya.xss] セキュリティ小ネタ二本 View more PowerPoint from send_
何が危ないのか img.onerror や img.onload は src 属性の内容が評価された段階で実行されるので、外部ソースに対して HTMLDocument を構築する際などで、意図していないタイミングでスクリプトが実行されるケースがある。 具体的には、以下のような場合。 var source = '<img src="not_found.jpg" onerror="alert(1)">'; var range = document.createRange(); range.createContextualFragment(source); // onerror が実行される var img = document.createElement('img'); img.setAttribute('onerror', 'alert(1)'); img.src = 'not_found.
この件について。 http://d.hatena.ne.jp/iskwn/20091215/1260828978 継承というかスコープがわかりやすいというのもメリットだと思うけど、カプセル化しやすいのも大きなメリットかなと思う。 function Foo(){} (function(){ var bar = 'bar'; this.bar = bar.toUpperCase(); function baz () { console.log('baz'); } this.baz = function() { baz(); console.log('BAZ'); } }).call(Foo.prototype); function Bar(){} Bar.prototype = new Foo(); (function() { this.hoge = 'hoge'; this.baz = fu
JSCron が Cron としてはかなりいまいちで不満だったので、適当にでっちあげてみた。 http://github.com/send/misc/blob/02d97e5ba9adbc124cf218d922e0a79fe262a6f2/js/cron.js if (!Array.prototype.indexOf) { Array.prototype.indexOf = function (elt /* , from */) { var len = this.length; var from = Number(arguments[1]) || 0; from = (from < 0) ? Math.ceil(from) : Math.floor(from); if (from < 0) from += len; for (;from < len; from++) { if (from
最近、また if 文における {} 省略の話をよく見掛けるようになった。何年たっても繰り返される話なんだろうなと思う。 なので、人のことをとやかくいう前に、自分のコードの変遷を考えてみると、簡単に言うと以下の様になる。 OOP 厨以前 {} 必須派 {} なしはバグの温床 OOP 厨時代 {} 以前に分岐ありえない {} 以前に分岐は悪。クラス分けするのが正義 OOP 厨脱却後 分岐はあり。{} は基本的に使わない 後々ややこしいことありそうだなと思うところは {} つける {} ありの部分は、将来リファクタリング入る可能性もあるので要注意 三項演算子の話も似たようなことでよく出てくる話なんだけど、どっちの話も同じような話で、そもそも意味がわかってないという人と、使いかたが合理的じゃないという人が槍玉に上げられてるような気がする。 で、そういうことが発生しないようなコーディング規約みたいな
Introduction of the ZSH に載ってるやりかただと乱数を使ってるために同じ色になったりしてちょっと不満だったので zshrc を以下のようにしてみた。 PROMPT_COLOR=32 precmd() { PROMPT_COLOR="$[32 + ($PROMPT_COLOR - 31) % 5]";} PROMPT=$'%{^[[${PROMPT_COLOR}m%}%U%n@$HOST'"%u%{^[[m%} %(!.#.$) " RPROMPT=$'%{^[[${PROMPT_COLOR}m%}[%~]%{^[[m%}' これで、行が変わる毎にプロンプトの色が 32-37 の間でローテートしてくれていい感じになる。
なんでも JSONP で取れるので、どこかでベーシック認証通していると、認証ダイアログも出ずに DM のぶっこ抜きなんかが出来てしまったりする。 DM を JSONP で取得するデモ(ソース見て貰えればわかるけど、サーバサイドにデータ送ったりしてません) http://kaz.july.7.googlepages.com/twitter_dm_jsonp.html まあ予想通りといえば予想通りだけど DM なんかが JSONP できるのはちょっと問題なんじゃないかなと思う。 最初から一貫して、セキュリティなどに関しては twitter はあてに出来ないのは何も変わっていないので protected や DM なんかで、公開されたら不味い情報のやりとりをしているような人は気をつけた方が良いでしょう。
今まで、Poundが/var/log/messagesにログ吐くのが嫌で仕方なかったんだけど、設定の仕方がやっとわかった。 /usr/local/etc/pound.cnf LogFacility local0 /etc/syslog.conf local0.* /var/log/pound.conf これ設定して、syslogdとpound再起動でOK。Facilityとかパスは、各々の環境で読み替えてくれればいいと思う。 あと、何故か、syslogdがHUPでちゃんと再起動してくれなかったのが謎だった。 それと、logrotateを設定しておかないと、あっという間にログが2G超えると思うので、そこは要注意で。
URL っぽいのにリンク貼られてない場合、開くのが面倒だなと感じてきたので作った。 こういうのは GM とかの方が良いかなあとか思ったけど、重そうなので vimperator plugin で。 http://coderepos.org/share/browser/lang/javascript/vimperator-plugins/trunk/appendAnchor.js :anc で、その buffer の url っぽい文字列にリンク当てる。 liberator.buffer.evaluateXPath() とか Range.surroundContents() 初めて使ったけど便利。 xpath や URL 判別の正規表現はちょっと適当。
:ldr [url] で購読。url 省略時は現在のタブ。 (function () { liberator.commands.addUserCommand(['ldr'], 'Subscribe URL with livedoor Reader', function(arg, special) { var url = (arg) ? arg : window._content.top.location; window.loadURI('http://reader.livedoor.com/subscribe/' + url); }, {} ); })(); あ、見ればわかるとおり、バックグラウンドで動いたりせず、遷移します。
Adium で Twitter などのサービスを IM で受け続けていると、やがて CPU 食いまくって kill しない限り固まる現象が頻発する。 これがウザいなあとおもったので簡単な Shell Script 書いてみた。 なんちゃって daemon がこんな感じ。ファイル名は supervisediumd にした。 1秒間隔で監視して CPU 使用率 75% 超えた状態が、10回続けば再起動する。 #!/bin/sh # settings COUNT_LIMIT=10 CPU_LIMIT=750 APP="/Applications/Adium.app" PIDFILE=$1 if [ -f $PIDFILE ] ; then echo "supervisediumd is already running" exit 0 fi trap "rm -rf $PIDFILE; echo
id:HolyGrail 周りで盛り上がってたので、ちょっと調べてみた。 DOMContentLoaded イベント使ったら、計測どころを何処にしていいかわからないので、それ以外の部分で。 昔ながらのやりかた。 <html lang="ja"> <head> <title>Test</title> </head> <body> <script> var start = new Date(); </script> <div> <ol> <li><a class="events" onclick="javascript:(function(){alert(1)})()">click!</a></li> </ol> </div> <script> var end = new Date(); alert(end.getTime() - start.getTime()); </script> </b
w.Keybind オブジェクトができる前に走るから。 ちょっと、自分が適当に混ぜ込んだ Site Info とかも混じってるけど以下、 patch 。Keybind オブジェクトができるまで、 setTimeout まわるようにした。 --- ldrfullfeed.user.js.200802119 2008-02-19 23:48:09.000000000 +0900 +++ ldrfullfeed.user.js 2008-02-19 23:44:26.000000000 +0900 @@ -30,6 +30,16 @@ var SITE_INFO = [ { + url: 'http://today-yuuri.cocolog-nifty.com/yuuri/', + xpath: '//div[@class="entry-body-text"]', + enc: 'UTF-8'
Firefox や、 Opera で DOMNodeInsertedIntoDocument イベントがあまりイケてなかったので、比較的マシな DOMNodeInserted イベント使って、似たような動きになるようなモノを作ってみた。 Firefox 2.0.0.12 と Opera 9.25 と Safari 3.0.4 で動作確認してます。 IE は、今、手元に環境が無いから試してないけど多分動くんじゃないかな。動けばいいな。 var InsertedIntoDocument = function(){}; (function(){ /*************************/ /** * Original Source : * jQuery (jquery.com) */ var ua = navigator.userAgent.toLowerCase(); var br
いちいち個別の filter スクリプトに AutoPagerize 対応入れるのもなんかなと思ったから、ちょっと書いてみた。 こういうの userscripts.org に上げた方がいいのかな? // ==UserScript== // @name Filterize // @namespace http://d.hatena.ne.jp/send/ // @description apply filter on any site. // @include * // ==/UserScript== (function () { var FilterContainer = function() { this.__container = {}; this.addFilter = function(name,func) { this.__container[name] = func; retu
自分でフィルタするか、removeしろよっていうのもアレかなと思ったので使い捨てGM。 // ==UserScript== // @name Twittfilter // @namespace http://d.hatena.ne.jp/send/ // @description twitter filter // @include http://twitter.com/* // ==/UserScript== // (function (){ var filter = function(nodes) { var f = { anouncement : function (context){ var path = '//td[@class="content"]/span[@class="entry-title entry-content"]'; var elems = document.e
これで動くと思ってなかった。試してみて怖くなった。 <?Php ECHO "aaaaaaa\n"; function FoobAr() { return "foobar\n"; } eChO fOOBaR(); //=> foobar IF(true) echo "true\n"; claSs Aaa { public staTic function dump() { echo "aaa\n"; } pubLic funCtion doDump() { echo "!!!!!\n"; } } AaA::Dump(); AAA::DumP(); $Obj = new AaA(); $obj = nEw AaA(); $obj->DODUMP();
id:RAVERAVER:20071013 の 人に聞かれたので、 Firebug ML 読み直しました。 ML で、 John J Barton 氏 の発言を中心に見た限りでは、こういう感じなのかな? 現象 Windows*1 Firefox 2.0.0.7 以降 Firebug 1.05 以降 Google Adsense msvcrt.dll + Google Adsense の問題っぽい。 原因 Google Adsense の問題 Script を Create したり、 Destroy したりしすぎ イベント毎に大きな script 読み込みすぎ 結果として warning が多すぎる Firefox 側の問題 script.functionSource のバグ 暫定的対応策 攻撃的対応 about:config の javascript.options.strict を fa
反省点とか。 TAKESAKOメソッドでその場で資料を作ってたのでgdgdでした 調べる部分などはあらかじめ調べていたから良いかなと思ったら甘かった。 プロジェクタ等のチェックはやっておくべきだった。 フォントサイズとかコントラストとかレイアウトとかgdgd 声とかも聞き取りにくかったですね。ごめんなさい 銅鑼あり初めてで焦った割には、全部終わらなかった… 資料 ものすごく適当なツールなので、buggyです。 クリックで次のページに進みます。連打すると変なことがあるかもです。 http://blog.linkthink.co.jp/doc/k.sakai/mozilla24/20070915/ 追記: いぬビームの発言は半分捏造です。twitterでそういうことは言ってません。(会社で同じニュアンスのことは言ってたけど。)
箇条書きテキストしか用意していなかった。超適当 Webアプリケーションセキュリティ初歩の初歩 〜はまちやの傾向と対策〜 はじめに どうセキュリティに取り組むべきか 脆弱性の殆どは、境界で起きる 基本はバリデーションとエスケープ バリデーション そのシステムで予期しているデータのみ受け入れる エスケープ 出力先に応じて適切な出力を送る 出力先での特殊文字に注意する でも、IEとか バッドノウハウ的に対応せざるを得ないものがある CSSXSS的なのとかContent-Type判別を利用した攻撃とか 当然、自システム内での脆弱性の作り込みには注意する Cなんかでは、Buffer Overflowとか作り込みやすいよね バッドノウハウ/グッドラッパー 金床さんの文章 http://www.jumperz.net/texts/bkgw.htm 脅威のカテゴリ Spoofing(なりすまし/偽装) T
時間がなかったので、数分だけ喋った。ついでにFirebugの話だけじゃないよ。 以下の、htmlを題材に使った。 <html> <head> <title>send_のほーむぺーじ</title> <script type="text/javascript"> console.log("I hate %s !!!!","Safari"); </script> </head> <body> <div id="hoge"> <form> <input type="text" name="hoge" value=""/> </form> </div> <div id="hoge" style="color:red"><marquee id="foo">こんにちはこんにちは!</marquee></div> </body> </html> getElementById IEでidが複数あるhtml
(function(){})() の代わりに - IT戦記関連 カップリングとか言われたのでのっかりコネタ。 (function(){ this; // object global })() new function() { this; // object object } (function(){})() thisがglobal(ブラウザだったらwindowオブジェクト) returnしたものを返す。 new function(){} thisが自分自身(実行しているのがコンストラクタだから) thisを返す。 他になんかあったっけ?とりあえず両者を区別しなくても困るケースは思いつかない。
Firefox拡張:FirefoxをVim風のキーバインドで操作するVimperator | OSDN Magazine Vimperator // Vimperator LDRとかはてブみたいに、サイトでキーボードショートカットが割り当てられている場合は、"I"を打ってVimperatorのキーバインドを解除して使えばいい。 あと、Firebugの為に、:set guioptions=sでステータスバー出しておく。 もうmozlessいらない。 あと、 :js <<EOS alert(1); alert(1); EOS みたいな感じで、jsをeval出来たり。 :set nobeepもしておいた方がいいかな?
ソースは昨日の呑み。 riko「わたしアイデア却下されまくって、ポイントなくなったんですけど」 却下されまくるのもある種の才能だと思った。社員なのに。
Firebugのコードを読んでから、apply廚になりはじめている。 var Foo = function() { this.name = "Foo"; this.foo = "foo"; this.hage ="foo"; } var Bar = function() { this.name = "Bar"; this.bar = "bar"; this.hage = "bar"; } var Hoge = function() { this.name ="Hoge"; } new Hoge(); // Object name="Hoge" Foo.apply(Hoge.prototype); new Hoge(); // Object name="Hoge" foo="foo" hage="foo" Bar.apply(Hoge.prototype); new Hoge(); // O
最近、ブログパーツに特化したJSフレームワークを作りはじめている。 んで、createElementなんかでscriptをloadした時とか、いちいちタイミング調整したりしてごにょったりするのが、嫌になって来たので、queueに登録しておいて定期的にチェックするようなのを書いてみた。 setTimeout/clearTimeoutとかevalとか気持ち悪いので、もっといい方法がある気が。 if(typeof Widzzy == 'undefined') var Widzzy = function(){}; Widzzy.library_version = 0.01; if(typeof Widzzy.LazyTask == 'undefined') Widzzy.LazyTask = function(){}; if( typeof Widzzy.LazyTask.version == '
Ubuntuが最近話題になってたりするみたいだから、関連して少し。 確かにUbuntuはデスクトップ用途としては、敷居が低いということも含めて、完成度が非常に高いと思う。 でも、X周りとかはデフォルトのドライバ*1だと、話にならないぐらいもっさりしてるので、快適に使うためには、この辺りを弄れないと辛いかも。 でも、nvidiaとかだとBeryl込みで、http://wiki.beryl-project.org/wiki/Install_Beryl_on_Ubuntu_Feisty_with_nVidia辺りの手順で、比較的簡単に出来るかなあ。 もっとMacっぽく!とかは、http://www.advicesource.org/ubuntu/Ubuntu.htmlを見れば出来たりするので、そういうのがすきな人は楽しいと思う。 ちなみに、俺はこの間まで、会社のデスクトップとしてAMD64でUb
Twitterとソーシャルハッキング - 鳥たちの創造 - はてなグループ::ついったー部 この辺の話とかで。 自分が開発側にいるからなのかもしれないけど、サービス跨いで同じパスワードを使う事はあまりないなあ。 twitterはじめる時も、こんな海のものとも山のものともわからんサービスに他のサービス使ってるようなものを使えるわけがないと思ったし。 モバTwitterも、そういうパスワードだからこそようやく使えると言うか。 あとはてブのコメント欄にパスワードマネージャ使うと複数でも困らないよ!ってことを書いてる人がいたけど、個人的には環境変わったときに困るから使わないし、何よりもFirefoxの場合、パスワードマネージャに脆弱性があるから使わない方がいい。 使うとしたらバレても困らないものに留めておくとか。 じゃあ面倒じゃない。って思うんだったら、ベースパスワードとサービスの識別子組み合わせ
スピーカ、スタッフの皆様お疲れ様でした。 中継してくださったi-revoさん、ウタゴエさんありがとうございました。 ご来場・視聴者の皆様、ありがとうございました。 今回初参戦だったわけですが、場の空気を事前に読めていなかったので、ものすごいアウェー感でした。せめて、プレゼンツール位は事前に用意すべきだったなあとか。KeynoteってShibuya.jsメンツはわかってる癖に、「どうやってJavaScriptで作ったの?」とか、「それ、Firebugで動くの?」とか。ムカついたので、FirebugのCustom Tabで動くプレゼンツールを作ってみたいと思います。 全般的に、事前準備が足りなかったので、次は頑張りたいなとか。 さて、感想です(敬称略)。 amachang 濃かった。amachang節全開。ASは殆どわからないので、ちゃんと理解するには、復習しないとダメな感じだった。 でも、ア
次のページ
このページを最初にブックマークしてみませんか?
『nothing but trouble』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く