uncaughtExceptionのハンドラの中で例外発生させたときの挙動

基本的には、プログラムで例外が発生したときに、それがcatchされないとプログラムは終了する(落ちる)。 しかし、実際に運用する環境のプログラムでは、仮にcatchされなかったとしてもプログラムを止めることはできないので、 どうにかする。Node.jsの場合は…

とりいそぎExpress4を試す。

Expressを使い始めるためにひな形を作成するexpress-generatorが、Express4に対応してたので とりあえずそれを使って試すのがよさそう。本来なら npm install -g express-generator ですが、まだnpmにはExpress4向けのものは上がっていないので、githubから…

バリデーションとエラー処理について

値の妥当性チェックはどこでやるべきなのかの話 Webアプリケーションに限った話ではありませんが、特にWebアプリケーションを作っているとき、 ユーザから受け取った値のバリデーションは必ずどこかで行わなければなりません。例えばJavaでモデルを作るとき…

Webアプリケーションに対する攻撃手法まとめ(0.5 MongoDB インジェクション)

0.5 MongoDB injection 前回の記事でNode.js+MongoDBなら普通は脆弱性出ないから気にしなくていいですよね、等と書いたのですが、 僕自身が今までフツーに脆弱なコードを書いていました・・・。まずはその話から。 概要 Node.js+MongoDBでMongoDBのドライバ…

Webアプリケーションに対する攻撃手法まとめ(0.SQLインジェクション)

前置き 会社で1ヶ月ほど技術研修を受けましたので、その整理をするつもりで記事を書き始めましたが、 文にしようとすると自分の分かっていないところが諸々出てくるため、結局深彫りして調べる必要があり、結果書くのに要する時間も文量も予定の4倍くらいに…

express.ioの導入

紹介までしといてまだセットアップもしてなかったのかよっていうツッコミはおいといて。簡単に紹介し直すと、Node.jsのアプリの定番フレームワークとしてExpressがあり、またWebSocketを主に使った双方向通信ができるのがSocket.IOで、 この2つを合わせて使…

esprimaのパーサを試してみる

2つ前の記事で紹介したJavaScript Source Transformation: Non-Destructive vs Regenerativeのコメント欄にて、esprimaというパーサがあることを知った。 さっそくnpm installして試そう・・・と思ったのだが、なんと公式サイト上で試せてしまった。 http://…

UglifyJSのパーサを試してみる

前回の記事の続き。 asyncblockのソースを調べたところ、asyncblockのsource transformationは、内部でUglifyJSを使っていた。 UglifyJSは普通はソースをminifyする用途で使われるが、その一部としてjsの文をparseしており(当然か)、その部分だけ抜き出して…

記事を読んだ: JavaScript Source Transformation: Non-Destructive vs Regenerative

Node.jsの非同期処理を同期っぽく書けるようにするasyncblockというモジュールのreadmeを読んでいて、 その中に Source Transformationという言葉が出てきたので、なんじゃこれとググって次の記事を参照した。http://ariya.ofilabs.com/2013/06/javascript-s…

なるべく怠惰にWebサービスを作りたい件[サーバ編1]

サーバ編から行きます。npm, Node.jsはインストール済とします。 とりあえずCoffeeScriptをインストールしましょう、 npm install -g coffee-script フレームワーク 最初に、フレームワークはExpress.ioを選定しました。Node.jsのフレームワークといえば第一…

なるべく怠惰にWebサービスを作りたい件[前編]

一人で趣味でWebサービスを作る時、Node.jsを選択すればサーバもクライアントもJavaScriptで書けるわけですが、 JavaScriptにコンパイルできる言語はいくつかあり、 特に静的型付けを必要としなければ、CoffeeScriptは第一候補に入ってくるでしょう。 Coffee…

RequireJSで循環参照の回避

Backbone.jsの各ファイルをRequireJSでまとめて使ってるます。今回生じた問題は、 「viewからrouterをRequireJSを使って読もうとしたとき、なぜか読み込まれない」現象 views/index.js define(['router', 'backbone'], function(router, Backbone) { var Ind…

.bash_profileでnvm useしてもなぜかnodeやnpmコマンドが打てない?

nvm use するとそのままnodeやnpmコマンドが使えるようになるのだが、~/.bash_profileに次のように書いても、 source ~/.nvm/nvm.sh nvm use "0.10" export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/binなぜかnodeやnpmコマンドが効かない。もう一度 …

jade(テンプレートエンジン)をクライアントサイドで動かすの巻

2014/02/24 追記: jade.compile(jadeText, {client: true})は使えなくなったようです。かわりにjade.compileClient(jadeText)を使えとのこと。 あと、下の文中のanonymousはtemplateに変わってました。 Node.jsのフレームワークExpressの標準テンプレートエ…

EGitのアントラック

git

EGit(Eclipse用のgit)、結構はまる。いろいろ隠蔽されてて挙動がよくわからん。 まず前提 ・ファイルをバージョン管理しない場合は、.gitignoreを編集する ・すでに管理されてる場合は、後から.gitignoreを書いても除去されるわけではない。 そういう場合は…

横浜DeNAベイスターズ8-4北海道日本ハムファイターズ

人生初の野球観戦に行って来ました。メンバーは DeNA新入社員(一応ベイスターズ応援勢) 名前は横浜だけど北海道人(ファイターズ応援勢) 僕と奥さんと子供(中立勢) の5人。ちなみに横浜は今日初めて横浜に降り立ったらしい。で結果がこんな感じ F 0 0 2 0 0 1…

Problem 47

今日のコード書き練習です。ソースコードアップするのここが便利なので^^; ぱぱすに誘われて数的な問題を解いてるけど http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2047 jsの流儀が分からないcoffeescriptのコードです。結構話に…

MongooseArrayのindexOf

node.jsいじってます。 さらっと備忘録 mongoose.Schema.Types.ObjectId ObjectIdの比較は===ではダメ、anObjectId.equals(anotherObjectId)を使う Array.indexOf(obj) // mongooseのモデル var FooSchema = new Schema( {bars: [{type: ObjectId, ref: hoge…

こういう書き方どうなの?という話

Twitterで話したら反応頂いたのですがソース貼れないのでこちらで。後で追記する。 public class とある3人向けGame { /*略*/ public static enum RemovePlayerStatus { SUCCEEDED, GAME_ALREADY_STARTED, PLAYER_NOT_FOUND; } public RemovePlayerStatus re…

就職活動前半戦

25歳就活生ですこんばんわ。 昨年の流れ 2月 院にいくつもりが突然の留年(約1年前) 就職の事を全く考えていなかったので就活をスルーしてしまう 5月 papasuがDeNAに行くという話をきいて、まだギリ募集していたので駆け込みで応募する。 papasuが選ぶだけあ…

Xcode4.2以降でstoryboardが無いエラーの対処

iPhone/iPad開発です。 元々Interface Builder使ってなかったんですが、Xcode4.2からStoryBoardなるものに変わっていた(?)らしい で、知らずのうちに消してたっぽく、エラーでてたCould not find a storyboard named 'MainStoryboard'云々でてSIGABRT落ち。…

委譲メソッド自動作成

これは知らなかった・・・Eclipseで、変数右クリックして Source -> Generate delegate Methods...で その変数のデリゲートメソッドを自動生成できるこれは便利っす。 前回の話でもポーカーのカードリストとかって、さすがにArrayListを継承するわけにはいか…

Javaの配列Integerをintに変換するすべは…?

ちょっとJavaでポーカー作ってたんですけど、 やっぱカードリストは配列じゃなくてList(LinkedListとかArrayList)を使いたい気がします。で、例えばカード交換するとき、 もしGUIのアプリケーションだったら、ViewがCardオブジェクト持ってて、クリックでon/…

LINEの電話帳アップロードの弊害について検討してみた

こういう系、高木先生をフォローしてるからすぐ耳に入ってはくるんだけど、 実際何がどのようにマズイのかというところまでちゃんと考えずに終わる事が多い。で、昨日ぱぱす君とその話になり議論したので、とりあえずのところをまとめておこう。 ぱぱす君は…

Backbone.jsにおけるMVC

Cが多分ないんですけどね。Backbone.jsのM-Vは、以前書いたような教科書通り(?)のObserverパターンで書かれる。iOSプログラミングにおけるMVC - qsonaの日記でポイントとしては、Modelに対してViewが、自分をObserverとして登録するときに、 「Modelが変更さ…

vimユーザすげえ

http://vim-users.jp/2010/07/hack164/ セミコロン 多くのVimユーザはコロンとセミコロンの配置を入れ替え、コロンの入力を容易にするよう調整しているといわれています。な、何を言っているのか(略

バドミントンの無気力試合から見られる多人数ゲームの考察

色々と問題が噴出してるっぽい2012夏季ロンドンオリンピックですが、 個人的に面白い問題が出てきたので、ちょっと真面目に書いてみようと思います。 バドミントンの無気力試合 まずはニュースより引用。ソースは指定されたURLは存在しませんでした。/野球/…

ようやく

卒論完成っと・・・

近況

greeも1次でだめだったし、ソニーもサイレントお祈りかまされているようなので今年の就職活動は終了。 来年に乞うご期待。gree、面接で興味があるWebサービスは?っていう質問されて、 隣の人が堂々と「スマートフォンです」って答えててこいつすげえなって…

住所は数字まで全角で入れろというのに対する違和感

最近の住所入力フォームについてですが、住所は全角でってよく書いてあります。数字も。 数字まで全角で書かなきゃダメっておかしくない? ○○町1−2−3 みたいな。せめて入力はどっちでも良いにして、全角数字は後で半角へ強制変換とかじゃダメなのか?私は…