型推論に興味はあるけど、抽象的な説明が多く難しそうだと思っている方々。基礎的なことを押さえておけば、型推論器は簡単に実装できます。 ここでは、私が JavaScript で書いた型推論器を例に、型推論の基本的なアルゴリズムの一例を具体的に説明していきます。解説対象は、ibis-js-1.0.0です。 型推論の可視化ツールを使いながら読むとよりわかりやすいかもしれません。 目次 型変数と単一化 多相型 let と let rec バリアント型
型推論に興味はあるけど、抽象的な説明が多く難しそうだと思っている方々。基礎的なことを押さえておけば、型推論器は簡単に実装できます。 ここでは、私が JavaScript で書いた型推論器を例に、型推論の基本的なアルゴリズムの一例を具体的に説明していきます。解説対象は、ibis-js-1.0.0です。 型推論の可視化ツールを使いながら読むとよりわかりやすいかもしれません。 目次 型変数と単一化 多相型 let と let rec バリアント型
■in演算子の仕様 まずはin演算子の動作を知る。 Special Operators - MDC Docs オブジェクトが指定されたプロパティ(prototypeチェーンを辿って)を持っているかの真偽値を返す 要はhasOwnPropertyとほとんど同じで、違いはprototypeチェーンを辿るかどうか。 in 演算子と obj.hasOwnProperty()の比較は以下を参照 in 演算子と obj.hasOwnProperty() はどちらが早い!? - hogehoge @teramako 次は仕様書を見てみましょう。 ES3の仕様書:11.8.7 in 演算子 (The in operator) RelationalExpression を評価。 GetValue(Result(1)) を呼出す。 ShiftExpression を評価。 GetValue(Res
JS2Coffee The JavaScript to CoffeeScript compiler. Source $ npm install js2coffee $ js2coffee input.js > output.js
最近、こんな記事を見ました。 JavaScriptプログラムのバイトサイズ縮小テクニック – 強火で進め JavaScriptにおけるプログラムを短くするテクニックが紹介されていました。 その中に、JavaScirptでswap(変数の入れ替え)を行う方法が紹介されていました。 こんな感じです a = [b, b = a][0]; すごいでしょ!? 正直驚きでした。 かと言ってswap自体使い道が…(まあそれはさておき) ところで、今日はプログラミングの授業がありました。 何人かで話していたときに、コレをCでも組めないか、という話になりました。 最終的にこうなりました。 b = (b -= a = (b = a * MAX + b) % MAX) / MAX; /* MAXはint型の自然数 */ いやー、すごい! Cでも出来るじゃないですか。 ただしこれは、 a, b はi
Chirome上のJavaScriptで、見慣れない、 Uncaught TypeError: Illegal invocation というエラーが発生しました。 見慣れないエラーなので、ちょこっと調べました。 ネイティブ関数の別参照を作ると発生するエラーとのことで、自分の場合は var c = console.log; の際に発生しました。 だめなものはダメなので、こういう風に書いちゃダメってことすねー。 ただ、この場合に限りなら、 意味合いは大分変わってしまいますが、 var c = function(value){console.log(value)}; とやれば、「console.logと書くのが面倒なので短くしたい」という目的は果たして、 エラーを回避できます。
「JavaとJavaScriptの20年戦争」 http://wise9.jp/archives/2245 なんというか全体に「これはひどい」ネタ記事なんだが*1,なんでコレが絶賛されてるか分からん.*2 そもそもJavaとJavaScriptを比較する時点でねえ... さて、Javaだが、JavaはC++の流れを汲む言語だ。 C++の源流は言うまでもなくCにあり、Cの源流はPascalやFORTRANといった手続き型言語にある。 Javaが本格的に登場したのは1996年。 うーん,こういう書き方している時点で,プログラミングのことを全く知らないんじゃないかと思うくらいに酷い. さらっと流しているが,「JavaをC++の流れを汲む言語」と捉える人はそんなに多くないのでは. 「C系の表記+オブジェクト指向」というならJavaと近い部分もあるが,それだけならObjective-Cだってあったわ
kanazawa.js の女子部。女子JSer増加を促進するためにゆるふわな感じで勉強会開いていきます♪男子なんですが・・・ 困ります>< JavaScript(プログラミング)全然分かりませんが参加してもいいですか? 学ぶ意欲さえあればどなたでも参加できます。参加者の中には JavaScript 得意な方もいらっしゃると思いますので、その人に教えてもらうなんてこともありです。 各自のペースで勉強していきましょう♪ 諸事情により参加できなくなりました。 当日までにATNDにてキャンセルの手続きをお願いします。 その際には @kanazawajs まで連絡をくれると嬉しいです。 開始時間に間に合いそうにないのですが…(or 途中で帰ってもいいですか?) はい、問題ありません。(ただし、参加費の返金はありません><)。 各自好きな時間に来てもらって構いませんし、好きなときに帰ってもOKです。
Web系の人でiPhoneアプリ作ってみたいなーと思ってる人って多いのかな?どうなんだろ? 個人的には、HTML5技術とか進んでて、Webアプリでもかなりのものが作れるようになってきてますけど、やっぱりまだまだネイティブの方が有利な部分が多いと思ってます。あと、iPhoneの仕様を深く知る上でもいいんじゃないかなーと。 ちょっとしたアプリ作るなら、Titanium Mobileとかで全然いいと思うんですが、Titanium MobileのAPIに無いことをやろうとするとObjective-Cしかありません。 Objective-C自体はそんなに難しくないと思うんですよ。どちらかというと、APIやら仕様やらの情報がわかりにくい。それさえ調べ調べやれば、Web系の人でもアプリ作れます。 ということで、Web系の人でObjective-C学んでみたいという人向けに、ちょっとまとめてみました。 た
HTTPレスポンスをajaxでストリーミング的に受け取りたいとき、要するにHTTPストリーミングをしたい時には、Transfer-Encoding: chunkedなレスポンスを生成してやるとよい。こうするとAjaxではHTTPレスポンス全体を受け取るのを待たずに、レスポンスの中身にアクセスすることが出来るようになる。従って、一つのHTTPコネクションでサーバ側から任意のデータを好きなタイミングでプッシュすることが出来る。 コード 一秒ごとに生成されるJSONをストリーム的に受け取るデモのコードが以下。 <?php // push.php function output_chunk($chunk) { echo sprintf("%x\r\n", strlen($chunk)); echo $chunk . "\r\n"; } header("Content-type: applicati
モバイルゲーム 物凄い勢いで勃興したモバイルゲーム業界は、いろいろな課題や問題に直面しながらも巨大化し、今日の時点でのスマートフォン向けゲームの市場へと継承されていきます。 モバイルゲームの歴史 2001 Javaアプリと3Dゲームの登場 Javaが利用できるようになったことにより、ダウンロード型のゲームが供給できるようになりました。 2002 携帯電話端末の大容量化・3D化競争 Java搭載携帯電話端末が登場してからごく僅か1年の間に、アプリのサイズに関しては10倍に広大化し、表現方法も2Dから3Dにシフトし始めました。J-PHONEは『ゼビウス』や『スペースハリアー』などといった昔のアーケードゲームを、ドコモはSIMCITYなどパソコンで世界的規模のヒットを飛ばしたゲームを主力商品としていました。 2003 モバイルゲームの一般化 メモリの制限が厳しいJava仮想マシン上ではなく、OS
モバイルゲーム 物凄い勢いで勃興したモバイルゲーム業界は、いろいろな課題や問題に直面しながらも巨大化し、今日の時点でのスマートフォン向けゲームの市場へと継承されていきます。 モバイルゲームの歴史 2001 Javaアプリと3Dゲームの登場 Javaが利用できるようになったことにより、ダウンロード型のゲームが供給できるようになりました。 2002 携帯電話端末の大容量化・3D化競争 Java搭載携帯電話端末が登場してからごく僅か1年の間に、アプリのサイズに関しては10倍に広大化し、表現方法も2Dから3Dにシフトし始めました。J-PHONEは『ゼビウス』や『スペースハリアー』などといった昔のアーケードゲームを、ドコモはSIMCITYなどパソコンで世界的規模のヒットを飛ばしたゲームを主力商品としていました。 2003 モバイルゲームの一般化 メモリの制限が厳しいJava仮想マシン上ではなく、OS
豚 @butabuta_bot ベンチャーナウに本気でアタマにきた。向こうが電話取材でJavaとJavaScriptについて聞き間違えたくせに「鍵括弧内の修正には一切応じられない」と。僕がJavaとJavaScriptを間違えるわけないだろ!記事の確認もさせなかったくせに http://ht.ly/55L3C 2011-05-30 17:14:56 豚 @butabuta_bot 挙げ句、なんだよ「Java(Script)」って。めちゃくちゃだ。ベンチャー媒体を語る資格すらない。恥ずかしくないのか? Javaのワケないだろ。記者が不勉強なせいで僕まで馬鹿だと思われてしまうだろうが。しかも削除要求には応じないということなので法的手段に訴えることにした 2011-05-30 17:16:20
JavaScriptの書き方はJavaScript自体がある程度自由なためいろいろな書き方ができますが、一貫性を持って書いた方がバグなども発生しにくくなるため、コーディングルールを定めておくのはよいことだと思います(特に複数人の開発の場合) 有名な企業やライブラリはコーディングルールも公開している事が多いので適当にまとめてみました JavaScript style guide – MDC Docs Mozilla/Firefox向けのものなので、一部ECMAScriptの範囲を超えたものも含まれています。 多くの人が見ていると思うので、見たことない人は一度読んでみるといいです。 jscsにこのコーディングルールをチェックするプリセットが用意されています。 Google JavaScript Style Guide Google JavaScript Style Guide 和訳 — Goo
JavaScriptでは初期化されていない変数には全て「undefined」という値が入っています。 var a; alert(a); //undefinedが入っている これを利用して、変数が定義済みかどうかを判別することが可能です。…が、やり方がいろいろあるみたいなので、まとめてみることにします。 undefinedと比較する if (a === undefined) { alert("aは未定義"); } グローバル変数として、そのまんまundefinedという名前の変数が用意されているので、それと比較するやり方。一番素直な方法ですが、JavaScriptにおいては良くない書き方とされています。 undefinedは予約語ではなく、単なる変数です。だから上書きすることができるし、関数スコープ内で同名のローカル変数を作ることもできます。(ただし最近の処理系ではconst扱いになって上書
最近気になっている「Traceur」 次世代JavaScriptを“いま”実現するグーグルの「Traceur」 - Publickey パッと見なんか凄そうだなってのと、どうやって実装してるんだろうかというのが気になったので暇な時間にすこしずつソースを読んでいます。 「Traceur」とは関係ないけど気になる1行 var window = ("global", eval)("this"); 最初見たとき、「なんじゃこりゃ」と思ったので調べてみた。 evalの挙動 下記のようなコードは「local」というアラートが出るはず。 var x = "global"; (function () { var x = "local"; eval("alert(x)"); })(); でも次のコードはグローバルと表示される。 var x = "global"; var geval = eval; (fun
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く