素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: twitter: @javascripter にどうぞ。

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

Capy CAPTCHAは一瞬で突破できる

Capy CAPTCHA 早速、実証コードが(CAPY IS A VERY READABLE CAPTCHA)出たようだ。このように一瞬で突破されてしまい意味がない。 さきほどインターネットを見ていたらスパム防止用の「読みづらい画像認証」に、日本人が終止符を打った技術が斬新過ぎる!経由…

ルーターの脆弱性を探して侵入する手順

更新し忘れたが、既に下記の脆弱性は修正されている 4/11/2013 6:42 PM 追記: 明日エンジニアと調査するとカスタマーサポートから連絡があり、また近日アップデートパッチを用意するとのことだ。 先日紹介した、Satechi Smart Travel Routerだが、ふと直感的…

モナドについて考えた記録

Promiseってなんとなくモナドっぽいなと思って、ジェネレータ使ってHaskellのdoを再現できないかなあというのがはじまり。結論からいうと、できない。 そもそもPromiseがモナドであるかを考える。 return :: Monad m => a -> m a 値を受け取ってfulfilledさ…

持ち運び出来る小型トラベル用ルーターがすごく便利

Pocket Wifiの話ではなく、電源を使うタイプの、Airport Expressのようなタイプの小型ルーターの話である。 先日、Satechi Smart Travel Routerという、持ち運びできる小型ルータを購入したら予想よりも大幅に便利だったので、紹介しようと思う。 まず、これ…

MutationObserverを使った高速setImmediate/nextTick

MessageChannel / setTimeout / requestAnimationFrame / postMessageを使ったものより異様に速い。 というのも、setTimeout等は、次のサイクル(すなわちnextTick)の開始時に実行する関数を登録し、DOMや画面の更新後に実行されるのだが、 MutationObserve…

オンラインエディタのIME対応などのメモ

世の中に存在するオンラインエディタうち、textareaを直接使っていないものの大半が、適切にIME処理を出来ていない。IME周りの処理は厄介なので、とりあえずどういう感じなのかを調べた結果をメモしておく。後で直したい。 オンラインエディタの仕組み オン…

成人しました

ついに20歳になりました。自分が20代に突入したんだと思うと、なんだかとても奇妙な感じがします。自分が小さい頃は、自分と親の見た目や知識、経験などの差があまりに圧倒的で、子供と大人の差なんて当たり前すぎて、疑問にすら思いませんでした。そして、…

node-webkitでNode.jsをいろんなことに使う

node-webkitとは node-webkit wiki 日本ではあまりnode-webkitは知名度が高くないが、簡単に言うとIntelが開発に関わっている、nodeとWebKitを統合し、DOMコンテキスト上でnode.jsの機能を使えるようにするソフトウェア。一言でいうと言うと、ウェブでnode.j…

なぜ文法は暗記ではないのか、効率的な英文法の覚え方

英文法がただの暗記に思えるのだとしたら、おそらく文法の学習方法が間違っている。 単に「覚えろ」と学校では言われがちな文法にも背景となるロジックがあり、個々の文法が学年や章ごとに分かれているわけではなく繋がっているものだ、ということをここで例…

Web系がモバイルアプリ開発を覚えるまで

昨年末あたりからモバイルアプリ(iPhone, Android)の開発をやっていて、新しい言語とかSDKを一気にいろいろと覚えた。Web開発ばかりやっていてスマホアプリは未体験だったので、今日はスマホアプリ開発について雑感をいろいろ書く。 Titanium Mobile 独自のS…

Google Chromeに入ったジェネレータとPromiseで非同期処理に革命が起きた

Google Chrome Canary(正確にはV8)に、ついにGenerators(yield)が入った。これを上手に使うと、エラー処理を含む非同期コードを同期的に書くことができるようになり、見通しが極めて良くなるので、ここで紹介する。 ここで紹介するものはいずれNode.jsで…

LinuxをUSBメモリブートしようとおもって間違えてMBRを上書きした場合

Windows8マシン上で作業をしているとやはりLinux環境が欲しくなることが多く、Windows自体は消したくないのでLinux MintをUSBメモリに入れてデュアルブートしようと思った。 そうしたら失敗して何故かMBRが書き換えられてしまい、元から入っていたUEFIが消え…

nextTick、setTimeout(fn, 0)の代わり

setTimeout(fn, 0)より高速な関数は最近はこんな感じのを使うといいと思う。 var nextTick; if (typeof setImmediate === 'function') { nextTick = setImmediate; } else if (typeof process === 'object' && typeof process.nextTick === 'function') { ne…

Promises/Deferredsを使うとき

現状ではPromiseを生成する手段がライブラリによって異なるので、統一されたインターフェースを作ってそれを使うようにするとライブラリを自由に変更できて非常に便利である。 今のところ自分が考えた中で一番最大公約数的かつ便利な関数はこんなかんじ。 /*…

僕とRackhubの15日間戦争(Rackhub試してみたメモ)

遠い昔に知人の自宅サーバを間借りしてサイトを作っていたのだがいつの間にオフラインになったのでMacBookで開発をしていたのだが、他人に何かを見せるときはURLがあると良いということで、VPSを借りることにした。 従量課金は不安だし、結局は遊びにしか使…

文字コードとXSS

またXSSか、という感じではあるが、今日は文字コードに関連するXSSを紹介する。 エキサイトを例にとって説明する。エキサイトウェブ検索の&target=パラメータは、文字列を動的に埋め込んでいる。 例えば、 http://www.excite.co.jp/search.gw?search=1&targe…

GPS2点間距離を使用した住所特定の脆弱性

先日、非常に珍しい、GPSつかったチャットの脆弱性を発見したので、ここに注意もかねて書いておく。 簡単に言うと、WebSocketに生で自分でGPS座標を送り、相手との距離差を何度でも取得できる脆弱性で、離れてる、近いくらいしか分からないことを前提にGPS使…