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

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

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

オンラインエディタの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使…

Deferred/Promisesと非同期処理

概念/仕組み Deferred/Promisesは非同期処理を簡単にするための取り決め。 callback hellと呼ばれているような、非同期処理によるコールバックのネストを軽減することができて非常に便利。 慣れれば便利だが、一見どう使えばいいのか分かりづらいので、少し…

MacBook Retinaディスプレイでウェブページを小さくしないユーザーCSS

下記のCSSをユーザCSSとして登録してすべてのウェブページに適用しておくと、QuickResなどのアプリでMacBookのRetinaモデルで画面をドットバイドットにした時に自動的にウェブページが拡大されるようになり、インターネットが快適になる。 html { zoom: 150%…

markdown

はてなブログがmarkdownに対応したようなので、テスト。はてなブログの時代来たかもしれない。でもシンタックスハイライトが使えない? ruby require 'redcarpet' markdown = Redcarpet.new("Hello World!") puts markdown.to_html ```javascript var square…

動画までスクロールする

こういうのをブックマークレットに入れておくと便利なんじゃないでしょうか。 javascript: var _vindex = _vindex || 0; var vall = document.querySelectorAll('iframe[src^="http://flashservice.xvideos.com/embedframe/"]'); if (vall.length) { vall[_v…

料理、続き

最近研究中の、高速料理。電気ケトルと電子レンジとフードコンテナがあれば数分で食べれる状態に持っていける。一つ目。流ししゃぶしゃぶ。 しゃぶしゃぶ用の冷凍肉を買ってくる。 電気ケトルの電源を入れる。 食べる量の肉を手でちぎる。 おはしで肉をつか…

料理

オーストラリアにもどってきた。 最近、レンジでパスタという容器とフードコンテナ(口の広い魔法瓶)という容器を買ったので、料理が楽になった。もはや料理ではないが。 最近はだいたいパスタを食べていて、レンジでパスタを使えばパスタと水をいれてレン…

耳でキーボードのバックライトを聞き分ける

来週末に日本に一週間だけ帰国することにした。久しぶりの東京の夏。秋葉原とかに行きたい。 本題。高周波に敏感らしくて、MacBook Airのキーボードバックライトを点灯したときにジーという高音が聞こえる。バックライトを0にすると消えて、1以上だと同じジ…

最近の発見

流行の音楽が聴きたくなったら、iTunesのダウンロードランキングに行くと良いと思う。サビを認識できればその曲を知ってると言える[要出典]から、iTunesでサビを2〜3回くらい試聴すれば、トータルでだいたい30分で流行の最先端にたどり着ける。歌詞とかプレ…

海外旅行で外国人と仲良くなるコツ

せっかくだから外国人と仲良くなりたい!と思っても、英会話が得意だったり、すごく社交的だったりしない限り、なかなか会話を続けるのは難しい。基本的には、疑問文を使って相手に多く喋らせるというのが会話を続けるコツだが、何を聞けばいいのか。定番は…

はてなブログに移行

はてなブログ自体はモダンになったと思うけど、最近のはてなはFacebook/Twitter/Tumblrなどに押されて昔の勢いを失ってしまった感じがする。 Facebook/Twitterには内容的あるいは長さ的に載せたくないものを載せるための場所としての需要は今でも間違いなく…

高校生から、アメリカに行ってエンジニアリングを学びたい中学生への手紙

アメリカに行ってエンジニアリングを学びたい中学生 - Togetter 404 Blog Not Found:アメリカに行ってエンジニアリングを学ぶ前に用意しておくべきもの 14歳の、アメリカに行ってエンジニアリングを学びたい少年へ を読んで。 自己紹介 僕は18歳で、今年か…

おしゃれjQuery、Good Parts、Bad Parts

jQueryは互換性を保ちつつも洗練されたAPIを取り入れているので、新しく書くときは新しいAPIを使った方が良い。 liveとかセレクタの:hoverとかはBad Partsだ。 jQuery.fn.on / jQuery.fn.off live/delegate/bind/click等は滅びた。全てonを使おう。 また、da…

TOEICと留学。どのように英語を覚えるか。

プログラミングというよりコンピュータにすら関係ないが、今日はTOEICと留学の話をしようと思う。 成果 2010年9月: 425点 2011年8月: 970点 背景 僕が英語を勉強しはじめたのは去年の9月、オーストラリアに語学留学した時だ。 留学すれば英語ができるように…

近況

9月からオーストラリアに留学に来ていてとても忙しい。コンピュータに触れる時間もないし、日本語自体あまり使う機会がない。 最近、IE9 Betaが出たりとかiPod系がリニューアルされたりとかを聞いたけど、細かいニュースを追うのは時間の無駄かなと思い始め…

インデックスを増大/減少させるループとunsigned

c

for (int i = 0; i < N; i++) { /* array[i]を使う */ } というコードについて、iの型はC言語ではsize_tを使うほうが良いのか?という議論から発展して、size_tを使うと減少(降下)ループがきれいに書けなくなる、という問題があがった。 下の話では、size_…

jQuery.fn.$each

(function ($) { $.fn.$each = function (callback) { return this.each(function () { return callback.call($(this)); }); }; })(jQuery); こういうのを定義しておくと便利。 $("a").$each(function () { /\.jpg/.test(this.attr("href")) && window.open(…

Safari5の拡張を試した

Chromeみたいに必要なときだけステータスバーを表示するSafari5拡張を書いた。 javascripter/smart-status-bar · GitHubに置いた。 同様の拡張はSafari Extensions by Daniel BergeyのInvisible Status Barがあるが、.safariextzをzipとして解凍して中身を確…

幅優先探索

昔流行ったやつ。幅優先探索で迷路の経路を出す時は、ノードをリストにして逆算していくか、マップを0で初期化して、通るたびに0, 1, 2…というように徐々に増やしていって、ゴールについたら一つずつ減っていくような道を探す、という方法が使える。 それぞ…