サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Wikipedia
badatmath.hatenablog.com
今回は MetalSmith という超シンプル!超タイニー!なNodeで動作する静的サイトジェネレータのお話。 なんつーかその、メタルスミスとカタカナで書きたい衝動を煽られます。 そう、名前って大切ですよね。 スタティックサイトジェネレータはAssembleをはじめ、他にいくつもあって、 なかにはhexo なんていうものもあるんですが・・・うん・・・・。名前大事。 このメタルスミスというネーミング自体はマイナス34℃の環境下で作られたという、同じく静的サイトジェネレータのWinterSmithにインスパイアされたのかなーと思ったり。 というわけで公式ドキュメントはこちら 背景 さて、このメタルスミス、segment.ioという、Webデータ解析のインテグレーションツールを提供している会社によって作られていて、彼らのgithub organizationをのぞいて見ると、赤シャツのTJやJu
今話題のKoaについて書こうかとも思ったのですが・・・。 なんとなく最近、HNを中心に見るようになったので、HNスクレーパーを作ってみました。 皆さんは日頃、どのような手段で情報を収集しているのでしょうか?今年はGoogle Readerの終了というこの世の終わりか審判の日かといわんばかりの破壊的なイベントが発生して阿鼻叫喚の地獄を味わった方も多いかもしれません。代替手段はなきにしもあらずなので、「気のせいだった。」とおっしゃる諸兄も多い事でしょう。しかし僕にとってはもう「!!!!!!!」と、声にもならなかった出来事であり、頼みの綱のReederは開発を終了、(その後バージョンアップ)してしまい、自分はただ涙を流して冷たいコンクリートの壁を叩き、泣き崩れる毎日だったのです。そんななか、タイミングよく現れていたGunosy、これぞ救世主とばかりに登録したものの、そもそもの情報ソースが自分の求
はじめに 技術ネタじゃないです!もし期待されてた方がいたらごめんなさい。今回は、海外のカンファレンスに行ったことがなく、これから行くことを考えている人、もしくは行ってみても良いかもという人向けにカンファレンスに行く際のTIPSをまとめてみました。で、もちろん自分はNode大好き、かつNode学園祭のアドカレなので実例としてはNodeのカンファレンス、です。ちなみに世界中でJS/Nodeに関するカンファレンスが数多く開催されています。ホント、世界レベルで見れば月二回以上は開催されてる?ってくらい。 今回出席したNodeDublinの翌週にはEmpire.jsやRealtimeConf(これJSに限らないかもだけど)なんかが開催されています。JS/Node界隈で大きなカンファレンスといえばJSConfとNodeConfですね。JSConfはアメリカとヨーロッパで開催されていましたが、新しくオー
CSの分野で言えば MacOS Xでも採用されているMachカーネルを開発したところとしても有名です。もしカーネギーメロンのことを知らないMac使いに「メロン???」なんて聞かれたらこのことを教えてあげましょう。あとアンディー・ウォーホルも CMU 出身。 人工知能をはじめとしたロボティクス関連でも有名でDARPA主催のURBAN CHALLENGEというAIを乗せた車を自走させて行うレース大会でも優勝しています。動画もありました。 何年か前に兵庫県に CMU の大学院ができましたが、あまり経営は芳しくない様子。これは日本とアメリカの賃金格差が一因だと自分は思っています。CMU の授業料は日本の大学に比べてかなり高額ですが(1年半で 700 万程度だったかな?)CMU卒かつMasterであった場合、アメリカであれば年棒は初年度で平均8万ドル以上なので十分ペイできます。それに比べると日本では
日本の大学のコンピューターサイエンスについてのカリキュラムを探そうとすると結構苦労しますね。というのも「コンピューターサイエンス学部」というのはまだ少ないうえ、ほとんどが工学部か理学部に所属する形になっており、さらに大学によってその呼び名が変わるため検索するのに骨が折れます。 ですがカリキュラムの指針を情報処理学会が出しているのを見つけました。 大学の理工系学部情報系学科のためのコンピュータサイエンス教育カリキュラム J97,1.1 版 http://www.ipsj.or.jp/12kyoiku/J97-v1.1.pdf ただこのカリキュラムが出てから10年が経過し、その間の技術革新は無視できないものだったため内容を新しいものに差し替えるべく情報系専門教育カリキュラム標準 J07というカリキュラムが新規に策定されています。 J07の中では CS:コンピューター科学 IS:情報システム S
当初はNodeのことを5分で話すつもりでしたが、id:tricknotesの「時間はどのくらいあればいいですか?」という有難い申し出を受けて設定したのが20分。 さすがに手元の資料では足りないのでJavaScriptの歴史についても話してきました。 そちらについては資料すら作ってなかったのでホワイトボード使いつつ記憶を頼りに延々しゃべっていくという・・・さらに字が汚くて見えづらかったと思います。すみません。 JS history View more presentations from badatmath で、帰ってきてからざざざっと資料を作りました。 まずはECMAのトコまで。 JSってサイドストーリーがとっても多い言語なので突っ込んで調べるといろいろ新しい発見があり、ネタに事欠かない言語でもあります。そういうのを調べて行くとかなりJavaScriptに親近感が湧くようになるのでみなさん
しばらくの間仕事が忙しくてぜーんぜん更新できていませんでした。 ドラフトの状態のものはたくさんあるんですが、体裁を整えてblogにポストできるようにするまでが大変です。そんなイケてない脳をどうにかできそうな記事を発見しました。 How To: Make Your Brain Bigger In Only 3 Months この記事によると「脳は筋肉のように鍛えられる」とのこと。 それはさておきマサチューセッツ工科大学、MIT の CS です。MIT は日本でも知名度があるし、粋なイタズラである Hack でも有名ですね。 http://hacks.mit.edu/ ほかにも MIT では、DSpaceというサイトで論文を無料で公開しています。プレプリントサーバであるコーネル大学の arxiv から概念的に一歩進んだ感じのもの。 日本の場合、著作権や版権が提出先の学会に移り有料で公開される場
みなさま、明けましておめでとうございます! blog の更新が滞ってしまっていて大変申し訳ないのですが、今はちょうど node.js の本を執筆しているところでなかなか node ネタを書けないというかここでネタ書くヒマがあったら本を書けという心の縛りがありまして・・・。 でも新年明けましてということで今日は書いちゃうのだ。 さて、もう半年以上 CS のカリキュラム紹介をしていなかったんだけど、今日は Harvard 大学の CS50 という授業を紹介。折しも元日ということで学びに関連する記事をあげるのにはいい日だと思って。というか今日明日の夜はサンデル教授の白熱教室、再放送もやってることだし! さて、CS50 はいわゆる CS の入門コース。 どこが白熱なのかというと、まず、やっぱり先生がイイんだよね。彼の名は David J. Malan。彼は Harvard での BA -> CS
これは最近よく感じる疑問。普通にきれいな英文を書けているような人でもなぜみんな一様に「もっと英語勉強しなきゃ」って言うのだろうか。もう勉強する必要ないじゃん。 TOEICの勉強している人は今600点だから、700点取らないとと言う。で、700点取ってる人は800点取らないとという。最終的にみんな900点以上を目指す勢い。もちろん何かを勉強することに異論は全然ない。むしろ大賛成だよ。でも「英語学」を勉強している訳じゃなく、その目的は英語を実際に使うことではなかろうか?いや、プロの翻訳家目指していたり比喩や暗喩バリバリの難しい文章を理解できるようにっていうのなら話はまた別だけどね。 英語を学ぶっていうのはつまり、プロトコルを学ぶこと。エンジニア向けに言い換えると「英語を学ぶということはTCP/IPを学ぶようなこと」と言ってもいいかもしれない。そう考えてみると英語を勉強している人っていうのは伝送
何を持って学習できたと判断するのか、認知プロセス面でそれを定義づけたのがブルームの教育目標分類です。1956年に世に出ており50年以上経過しているので、批判などをもとに最近では改訂版(Revised Bloom's Taxonomy, RBT)というものが提唱されています。 オリジナルの分類 ブルームの分類法は思考の段階を 知識 理解 応用 分析 統合 評価 の6つに分けるというもので、もっとも単純なレベルである「知識」から最高度なレベルの「評価」へと思考の段階が移っていくとされています。 改訂版 近年ブルームの教え子だった Anderson らがブルームの分類法の矛盾点や問題点を整理して改訂版を作成しています。そのなかで知識次元という次元を設定し、また従来の認知過程次元についても見直しを行いました。 追加された知識次元は次のように分類されています。 事実的知識(factual knowl
さて、前回まで基礎部分をいろいろと説明したので今回からは実装について。現在のソースやその成り立ちを説明するのもいいんだろうけど、今日からはちょっぴりハンズオン形式に趣向を変えてみよう。ってことで node.js を作っていくよ! 実装編その一はJSエンジンであるV8にJavaScriptのソースを食わせて実行する、つまりはオレオレJS環境を作るまでを扱うのだ。 V8はもともと他のソフトウェアに組み込まれて使用されることを想定(例えばChromeとかね)されているのでこういう作業が必要になる。 手順は大きくわけて二つ 1. まずはV8のソースを落としてきてV8のビルド 2. V8のソースディレクトリに自作のC++のソースを作ってコンパイル&実行 C++が出てきた時点で引いちゃったかもしれないけど、C++を使えるようになるのが今回の目的ではないのでまずはリラックス。C++っていったってそんなに
今日はnode.jsで採用しているCommonJSの話である。 CommonJSの説明だけだとあっという間に終わってしまうのでJavaScriptの歴史を混ぜ込んだら期せずして長くなってしまった。 さて、1995年に発表されたJavaScriptは開発当初「Mocha」と呼ばれ、次に「LiveScript」となり(実際Netscape Navigatorの2.0のアルファ版ではではこの名前だった)、最後にようやくJavaScriptになる(Navigatorの2.0B3から)という変遷をたどった。このJavaScriptという名前っていうのはJavaというコンパイル言語を補完するスクリプト言語にしたいという考えがあったからという話もあるんだけど、そのころ開発元のNetscapeはSunとの業務提携を発表しており、ちょうどそのころJavaが世に出てNetscapeブラウザ上でクールなJava
本当はいろいろ書きたいことがあるのだけれど、書けるレベルにまで自分をなかなか引き上げられない。といってこのまま書かないのも何なので、今日はOSSを巡る国際情勢についてちょっぴりだけ書く。 今のOSS界隈の動きは実は自分が経験した中でも凄まじいことになっているのだ。 中でもすげーと思っているのはコミッタ、コントリビュータの国際化だ。もうね、名前からしてこれどう読むんだろうって人が増えている。10年くらい前までは欧米の人たち中心だったOSS界、今や完全にボーダーレス化しているんだよね。 露出が高まっているなと感じるのは中南米、ロシア・東欧、インドなんかの人。 もうさ、これだけ多くのOSSプロジェクトが乱立しているとそれに寄与できる人材の増加って追いついて行かないんじゃないかって危惧した(なんて上から目線な!)時もあったんだけど、どうやらそんな心配なんてこういった開発者の多国籍化によって杞憂に終
最近彼は inc.com に定期的に寄稿(だいたい月初めだけど8月のはまだ)しているんだけど、その記事の中から彼の考える「採用」についてまとめてみた。 元記事はこちら(もう二か月以上前だけど・・・) Never Read Another Resume タイトルは「履歴書なんて捨てちまえ」という感じかな。以下、内容を箇条書きで要約。 実際に必要になる前に人を雇うな。 仕事がないなら如何に素晴らしい才能を持つ人材がいようとも採用するな。 出来る限り社員数は増やすな。 仕事を知りもせずに採用しようとするな。(自分でやってからにしろ) 履歴書はみんながみんな良く見えるので役立たずだ。 カバーレターこそ読むべき価値がある。 迷ったら文章がうまい方の応募者を採用せよ。 「その」仕事を勝ち取るための応募者の努力を考慮せよ。 How の質問をする者は避けること、対して Why の質問はいいサインだ。 「試
日本のIT系ニュースサイトをほぼ見なくなってもう半年になる。 検索エンジンで検索したときに引っかかったのを参照するくらいしかしなくなった。 で、見ないって決めたのは日本のIT系ニュースサイトって要するに アメリカ発の記事の翻訳 日本企業のプレスリリース情報 くらいしかないんじゃないか?とある時ふと疑問に思ったからだ。 それならアメリカ発のものについてはソース記事そのまま読んだほうが早いし、日本企業のプレスリリースなんて自分には必要のないものがほとんどだ(大抵は興味をひかないエンプラ系ばっかり)。だからRSSリーダの類から日本のIT系ニュースサイトのものを全て取っ払い、見えないようにした。 最初は何気に不安だったんだけど、今ではその存在すらほとんど忘れている程度なのでやっぱり必要なかったんだろう。その代わりといってはなんだけど、こっちのメディアが注目しないようなアメリカのスタートアップの動き
昨日に引き続き、いざ!part2なのだ。 前回では node.js と v8 の結びつきまでを書いたので、今日は Non-Blocking I/O の話を。 Non-Blocking I/O という言葉からブロックしない I/O をイメージするのはたやすい。でもこれを実現しようとなるといろいろとまあ面倒くさいんだよね。 それを解決する常套手段で言うとファイルディスクリプタ(ネットワークならソケットだね)を開いてそれをselectシステムコールの監視対象に加えておき、selectを呼び出すことで監視するっていう方法がある。こうすると何が嬉しいのかファイルディスクリプタが2つある場合で考えてみよう。 まずAとBというファイルディスクリプタを監視対象とする。 selectシステムコールを呼び出し、そのどちらかが読み出し準備完了となっていないかを確認する。 もしどっちも準備できていなかったらプロセ
前回書いた通り、「最新コンパイラ構成技法」を読む途中で ML 習得の必要性を感じて OCaml を始めたわけだけど、今やすっかりハマっている。 「最新コンパイラ構成技法」については第二部をある程度読み終えて(いやこの二部は実際すごくイカしてる)、Ocaml をある程度使いこなせるようになったらまた第一部の続きから自分でもコンパイラの実装に挑戦しようと思っているところだ。 ということで、「プログラミングの基礎」という本を購入し、Ocaml の単純な記法とアルゴリズムの組み合わせの素晴らしさや難しさに一喜一憂しているのが現状。 ところでこの「プログラミングの基礎」という本はホントに非の付け所がないほど素晴らしい。プログラムを組む際の指針として必要なことはだいたいこの本から学べるんじゃないだろうか。 プログラミングの基礎 ((Computer Science Library)) 作者: 浅井健一
何を隠そう、数学はこのブログ随一の非モテコンテンツ。 もうこの数学って単語見た瞬間にブラウザの戻るボタン押されたりタブ閉じたりされているんじゃないかって思ってる。 まー、でもここはそういうブログなのだ。 半年くらい前に始めた微積、実はもう3周目くらいに突入している。 1周目はホント辛くってさ、何もかもがほぼ忘却の彼方だったので予備知識はほとんどない状態だったんだ。もうね、高校生の頃に習ったような公式類を忘れているもんだからその歩みは匍匐前進レベル。ブックオフで高校生向けの参考書を買ってきて、あーそうだっけなぁと思いつつ復習してようやく元の微積の本に戻るということを繰り返していた。だから1周目は全体を俯瞰するだけと思っていたのに想定外に時間がかかりまくった。で、2周目にようやく突入して今度は練習問題を解くということを中心に。今の3周目は証明と応用に重心を置いて読んでいる感じ。 で、今その3周
IT系企業のWebサイトに魅力を全然感じないのはなぜか?本来であればこの分野に長けていて不思議はないハズなのに、もうあたり一面死屍累々といった感じなのである。そういったサイトにありがちなパターンは本文に抽象的なキーワードが散りばめられ、何を言っているのかわからないこと。中でも程度を表すものについては注意する必要があったりする。 最 ベスト 高 長 低 安 全 強 圧倒的 先進的 卓越した 短 大 小 迅速 上 豊 明ここにリストアップされている文字、あるいは単語が入っていると途端に文章がボヤけてしまい、読み手はたちまちにして白昼夢へトリップだ。トイレに席を立つだけでもそんなサイトを見たことを忘れてしまうだろう。例えば、ということでよくありがちな文章をひとつ部分的にピックアップしてみよう。 「〜技術力で高品質、かつ最適なソリューションを提案します。」 もうね、これだけでもかなり傲慢な文章だ。
期せずして久々の更新になってしまった。ブログを書く気がなくなったとかそういうのではなくてただ単に忙しかっただけ。その間、まぁ仕事が予期せぬ方向から炎上してみたり、事故をもらって愛車が全損したり(フロントガラスが全面熱線入りなんていう変なオプションなどを諸々付けていたからお気に入りだったのに)と決して良いことばかりで忙しかったわけではないけどね! で、今回は node.js のお話。異様な盛り上がりを見せているものの、じゃぁそれっていったい何かというと「JavaScriptを用いたNon-blocking I/O環境」という非常にシンプルなものだ。 その根底には「うまくスケールできること」と「動作が速いこと」という理念が見受けられる。 まず「うまくスケールできること(多量のアクセスを捌けること)」を解決するにあたり、まずはスレッドモデルか、イベントループかという問題があった。そこで auth
またもや 37signals ネタなのだけれども、彼らの blog で連載されている「Bootstrapped, Profitable, & Proud」というシリーズが凄まじく面白いし参考になる。 内容はそのタイトル通り初期投資にお金をかけずに(ベンチャーキャピタルを使わずに)設立し、利益を生むまでになった(収入でいうと100万ドル以上の)会社を一社づつインタビューしてそのサクセスストーリーを披露するというものだ。 で、最新版にはみんな大好き GitHub が登場。 Bootstrapped, Profitable, & Proud: GitHub その中から「How did the business get started?」という質問に対する回答を訳してみる。チョー訳だけど。 最初 GitHub は週末プロジェクトだったんだ、git のホスティングサイトをやりたいって Tom Pre
Rails3 では ActiveRecord の部分で Arel という関係代数モデルのモジュールが使われるということなので少しだけ予習しておく。 CREATE TABLE articles ( id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, title TEXT, body TEXT, author TEXT, create_date TIMESTAMP, update_date TIMESTAMP ); CREATE TABLE comments ( id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, parent_id INTEGER NOT NULL, title TEXT, author TEXT, mail TEXT, url TEXT, body TEXT, create_date T
一昨日から始めた Ruby の trunk の継続的インテグレーションビルド、すっかり気に入ってしまった。どれもLinuxではあるものの3プラットフォームでビルドしている。 自分はもちろん Ruby のコミッタではないのだけれど、コミットするごとにビルドが走りその結果が表示されるのをみていると、もう外野ながらも応援したくなるのだ。 その模様はこちらから 今はCIツールとして Buildbot を使っているけど、他にもフリーのものとして Hudson(Java) CruiseControl(Java) CruiseControl.rb(Ruby) PHPUnderControl(PHP) chkbuild(Ruby) Bitten(Trac Plugin) Continuum(Java) などがあり、それぞれ特徴がある。例えば buildbot は サーバ、クライアント共にPythonで動作
おそらく、日本のIT業界、特にスタートアップ企業の人たちはビジネス展覧会系のイベントに辟易しているはずだ。 全然面白くない。あんなの、ただの粗品交換会じゃないか。使えそうな製品があったらもうとっくに試しているし、使えないと思っていた製品が触ってみるとやっぱり使い物にならないっていうのを確認しに行くだけだよ。もし行って良かったなんて思うのならそれは普段の情報収集が足りていないってことだね。 で、そんなとこへ出かけていく物好きな人たちがどのくらいいるかわかる?実は途方もない数だ、休日の渋谷みたいに。そこで来場者数の多さが高らかに謳われた「こんなにこのイベントは効果的なんです」という宣伝に乗り、いろんな会社がバカ高い出展料を払い、必須アイテムである数々のノベルティを揃えてそこにやってくる。うん、これっていい商売だとは思うよ。(イベント企画側にとってはね)もちろん出展料に応じてオプションもあって、
Googleの創始者達が在学していた大学だったり、Apple のスティーブ・ジョブズが卒業祝賀スピーチをしていたりということでも有名ですし、他にも研究成果のメディアへの露出がすごい印象があります。 あと一部の授業を iTunes 経由で配信していたり、ごく最近のトピックとしては、映画「アバター」で、シガニー・ウィーバーのアバターが Stanford のタンクトップを着ています。(シガニー・ウィーバーは Stanford を1972年に卒業)実はこのアバターについてはスタンフォード内の Virtual Human Interaction Lab で実際に研究が行われていて、なんでも最近の研究結果ではアバターの存在が実生活をよりよいものにするとか・・・。 卒業後の進路 2005年から2008年までの就職先が学部、学位別に掲載されているのがこちらのリンクです。 http://cardinalca
クラウド上で動作するプログラムを組んでいく際、スケールすることを狙って多くのロジックがデカップリングされ、複数のサーバに分散されることと思いますが、そこで顕著になってくるボトルネックの一つがネットワークなどのI/O待ちです。 このI/O待ちを減少させるのに効果的なのが Reactor パターン。 このパターン自体は特に目新しいものでもないのですが、近年のクラウドブームで再び脚光を浴びそうなので自分の備忘録もかねて紹介します。 Reactor パターン http://en.wikipedia.org/wiki/Reactor_pattern この Reactor パターンはどういった場合に使用するかというと 複数のI/O待ちが想定される場合 というのが代表格のようです。今回はネットワークI/Oを想定していますが、データベースへの問い合わせに時間がかかる際にも有用となります。 例としてクローラ
ログイン時にIDとパスワードを入力する際、ほとんどのサイトではパスワードが伏字になっているため、自分がどのような文字列を入力しているかを確認できませんが、パスワードの入力文字列がいつも入力しているものと一緒かどうかを判別する方法の一つが HashMask です。 デモサイトでパスワードを入力するとフィールドの右端にグラフが描かれますが、これはパスワードフィールドの入力値が一緒であればその形や色が変わることはありません。このことを利用して、グラフがいつもと一緒の形、色であれば普段と同じ正しいパスワードを入力していることを確認できます。 このプログラムのアルゴリズムはごくシンプルで、 パスワードからハッシュ値を算出する。(sha1ハッシュ関数ライブラリを使用) グラフの色をハッシュ値を利用して設定 ハッシュ値を数値化する。 数値によりグラフを描画(sparklineグラフ描画ライブラリを使用)
さて今回から実際にアメリカの大学のコンピューターサイエンスのカリキュラムを見ていきますね。それと、学部の3、4年になると細分化されてしまうのでまずは学部の1、2年レベルを扱います。最初は UC berkeleyから。 二つのCS berkeley でコンピューターサイエンスを学ぼうとすると College of Engineering で BSCS (Bachelor of Science in Computer Science) を取るコース (EECS) と College of Letters & Science で BACS (Bachelor of Arts in Computer Science) を取るコース (CS)の2つがあるみたいです。それぞれコンピューターサイエンスに関するカリキュラムは違わないのですが、それ以外の取得単位が工学寄りか人文系寄りかという違いがあり、前者
次のページ
このページを最初にブックマークしてみませんか?
『I am bad at math』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く