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

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

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

英文法の話パート3、which,thatの使い方についてなど

パート1: 英文法の話、時勢と動詞のニュアンスについてなど - 素人がプログラミングを勉強していたブログ パート2: 英文法の話パート2、to doとsomething to doの見分け方と使い方についてなど - 素人がプログラミングを勉強していたブログ 質問者 The rumor…

英文法の話パート2、to doとsomething to doの見分け方と使い方についてなど

パート1: 英文法の話、時勢と動詞のニュアンスについてなど - 素人がプログラミングを勉強していたブログ パート3: 英文法の話パート3、which,thatの使い方についてなど - 素人がプログラミングを勉強していたブログ 質問者 I should have taken some medici…

英文法の話、時勢と動詞のニュアンスについてなど

忙しくてブログを全然更新していなかったが、最近、友達に英文法を教えているので、 役に立つかもしれないのでログを載せておく。 パート2: 英文法の話パート2、to doとsomething to doの見分け方と使い方についてなど - 素人がプログラミングを勉強していた…

一つのファイルでサーバーとHTMLファイルとコードを共有するやつ

ちょっと説明がし難いがindex.htmlというファイルがあったとして、ファイルプロトコル経由で file://path/index.html などのように直接ブラウザで起動すると、プロトコルの関係でファイルが読み込めなかったり、エラーになったりすることがよくある。サーバ…

DBにおけるウェブシステムのアカウントの権限管理とセキュリティについて

下記にセキュリティに関する追記あり。読了後、そちらもチェックしてください ユーザーと管理者アカウントがあるウェブサイトで、管理者がユーザーのパスワードをリセットできたりといった風に、アカウントによって権限が違う場合のセキュリティについての考…

計算量とBig-O記法

プログラマであればアルゴリズムに関する話で、O(n)だとかO(log n)だとか、O(n2)だとか、そういった記号を目にすることはよくあると思う。 なんとなく、log n < n < n2の順に計算量が増加していくとかそういうことも知っていると思うが、計算量の増加とは何…

promiseを順番に実行する

JavaScript の Promise を返す関数を直列で実行したいので Pinscher というライブラリを作ってみた。 - (define -ayalog '())について。 例えば、非同期に実行されるPromise p1, p2, p3があったとしてcallbackをp1, p2, p3の順番に実行したい場合、reduceが…

ES6のclassは巻き上げがされない

ちょっとハマったのでメモ。 例えば alert(A); function A() { } はできるが、 alert(A); class A { } ができないのはなぜか。 class A { } class B extends A { } 例えば、このようなコードの場合、hoisting(スコープ先端への巻き上げ)をしても問題ないが…

io.jsとES6とトランスパイラまわりの現状

最近いろいろな環境でES6まわりの環境が整いはじめたので、使っていくために下調べしておこうと思う。 ES6の実装状況であるが、ECMAScript 6 compatibility tableにまとめが載っている。 例えば、io.js (nodeのfork)のES6実装状況。stableなES6 featuresが元…

JSライブラリ/フレームワークの良い、悪いメモ

※ただのメモで、未来志向なのであまり真に受けてはいけない。 良いっぽい React.js 早速い/コンポネント志向/APIの設計がいい。JSXと他のトランスパイラの組み合わせという問題はある Promise ネイティブに入った、誰もが使ってる TypeScript ES6時代でも存…

Get mouse coordinates on Yosemite using JavaScript Automation(ターミナルからマウス座標をゲットする)

英語で調べたけどぜんぜん出てこないので英語で書く。Yosemiteでターミナルからマウス座標をゲットするコマンドはこれ。 osascript -l JavaScript -e "ObjC.import('Cocoa');console.log(JSON.stringify($.CGEventGetLocation($.CGEventCreate(null))))" In …

array.indexOf(value) >= 0で要素が含まれてるか検索すると失敗する場合がある

indexOf(val) >= 0の話 配列に要素が含まれているかのチェックに [1, 2, 3].indexOf(2) >= 0; // true のようなコードを使っている場面を極めて頻繁に(それ以外を使っているのを見ることは稀なくらい)見るが、 function contains(a, v) { return a.indexOf…

scrollイベントが呼ばれすぎることへの対処

onscrollを監視していると大量にeventが来てパフォーマンスが劣化するというのはよく聞く話で、 underscore.jsなどでイベントをthrottleやdebounceさせて対処していることが多い。 ただ、scrollに応じてスタイルを変更させたりする場合は、0.1秒くらい遅れが…

forも明示的な加算も使わずに「1から100まで出力する」

1から100までforを使わずに、さらに明示的な加算も使わずに表示するもの、自分で思いついたバージョンを書いておく。非同期である。 var INTERVAL = 1000; var d = Date.now(); var tid = setInterval(function () { var n = (Date.now() - d) / INTERVAL | …

FacebookのReactで綺麗で高速なDOMのView操作

それほど新しい話題でもないが、FacebookがReact | A JavaScript library for building user interfacesというDOMを抽象化したようなView操作のライブラリをリリースした。 Githubが出してるエディタのAtomが実験的にReactを採用したり、Instagramが採用して…

setTimeout, setIntervalを乗っ取って爆速にする

setTimeout() vs ハッカー、仁義なき戦いによると function isNativeFunction(func, name) { for (var o in func) { if (o === "toString") return false; } var match = func.toString().match(/^function (\S+)\(\)\s*{\s*\[native code\]\s*}$/); return …

はてなにログインしてると人のブログを見ただけでユーザー名がバレる

11 August 2014: はてなのサポートから連絡がきた。 いつもはてなをご利用いただきありがとうございます。 ご指摘いただきました件につきまして、ただいま対応を検討しております。 第三者に悪用される可能性もございますので、 もし、脆弱性を確認された場…

Project Parfaitで尋常じゃない速さでpsdファイルからウェブサイトを組み立てる

Project Parfaitとは、adobeが開発してるβ版の、ウェブサイト作成支援のサービス。これを使うと、.psdのデザインファイルからHTMLを書き起こすのが異常に高速になるので、オススメしておこうと思う。 具体的には、psdファイルをアップロードすると、psdファ…

複数の独自ドメインをGithub Pagesで運用する方法&.tokyoドメインをとった

昨日、.tokyoドメインの一般登録が始まったので、ムームードメインでprogrammers.tokyoを取得した。 用途を考えずに取ったので、何か使い道を思いつくまでは仮のindex.htmlでも置いておこうと思い、でもそのためにわざわざ月額払うのももったいないので、Git…

ボキャブラリを増やすのに効果的な英単語解剖プロセス

解剖というほど大それたものではないのだが、最近、新規に英単語を覚えてボキャブラリを増す努力を始めた。 一押しの本 「日本人だけが知らない難解英単語: 阿部, 山村 啓人」という本を使っているのだが、これが予想以上に覚えやすくて、このレベルの英単語…

オープンリダイレクタ脆弱性に気をつける

たまたま通販サイトを見ていたらログインページに脆弱性を発見したので、書いておく。 下記サイトのサポート部門から、システム部門に問い合わせて早急に調査するとの連絡があった。 16 June 2014: 脆弱性を確認したので今日か明日中に修正し修正が終わった…

カタカナ英語の脱却に相手の唇を見ることが有効

タイトルで説明しきった感じがあるが、英語の発音の覚え方とリスニング力の鍛え方について、自分の考えを書いていこうと思う。 ネイティブは英語をリスニングしているのか? ネイティブは、耳だけを頼りに英語を聞いているわけではないということを知ってい…

nodeとstream周り、ジェネレータ、非同期処理

最近調べたnode.jsのstreamに関連した雑多な内容を、思いつくままに適当に書く。 例えば、 function* createPiGenerator() { var result = 0; for (var i = 1;; i += 4) { yield result * 4; result += 1/i - 1/(i + 2); } } こんな感じのジェネレータがあっ…

Web Inspector/Chromeのデバッガで動画を再生する

普段、Web Inspectorはデバッガとして使っていると思うが、Web Inspectorは実は様々な物を表示できる。 例えば、コンソールでライフゲームを表示することができる。 Web Inspector Life Gameに、コードを置いた。タイミングによっては上手く動かないので、コ…

古本をAmazonで買ってスキャンサービスに送ってiPadで読む

海外に住んでいると、日本語の本を入手することの難しさもあって日本語の本を全く読まなくなってしまう。海外の書籍はお店やネット通販で気軽に買えるし、英語圏の電子書籍は日本の電子書籍と比べて品揃えが格段に良いからだ。 英語の本ばかり読むことになる…

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…