2012年4月18日 東京Node学園 5限目 Lightning Talk
![nroongaでつくる groonga 全文検索 APIサーバ](https://cdn-ak-scissors.b.st-hatena.com/image/square/aad87cbf4ff00ae98c1a1c5398fb7816d89f173c/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F4f8eaae237aff9001f014e65%2Fslide_0.jpg%3F733840)
Jettyとsocket.io.jsを利用してWebSocketのアプリケーションを動かしてみました。 Javascript側は、node.js+socket.ioの場合と変わらないので、主にJavaのサーバー部分を中心にまとめています。 socket.ioとsocket.io-javaの関係 socket.ioはnode.jsのモジュールの一つで、WebSocketサーバーとJavascriptクライアントを共に提供します。 前回の記事速習!node.js + socket.ioでは、node.js、socket.ioのセットアップについて簡単に紹介しました。 socket.ioは、クロスブラウザに対応していてどのブラウザでも同じインタフェースで実装できます。また、WebSocketに対応していないブラウザでは代替の通信方法を自動的に選択してくれるので便利です。 2011年4月16日現在
やっと、Yコンビネータが何を意味するものなのか、どういう意義があるのかがわかりました。 名前を使わず再帰ができますよ!というだけのものじゃなかったのですね。 まずλありき 関数の話をしたいのです。 そのとき、いちいち hoge(x) = x * 2 としてhogeを・・・、とか名前をつけて話を進めるのがめんどうなので、関数を値としてあらわすと便利ということで、λという値を定義するのです。 そうすると、上のhoge関数なんかはλ(x)(x*2)などとあらわせますが、引数をあらわすのに()を使うといろいろまぎらわしいので、 λx.x*2 のように表記します。 というのがλ。 このとき、λになにかわたされたら、引数としてあらわされる部分を単純におきかえます。 (λx.x*2)y とあったら、xの部分をyでおきかえて (λx.x*2)y → y * 2 となります。λの引数部分を与えられた引数で置
gnu makeの高速版のようなもの。ただしシンタックスに互換性はない。 Ninja紹介: http://neugierig.org/software/chromium/notes/2011/02/ninja.html コード: https://github.com/martine/ninja 作者: Evan Martin http://neugierig.org/ 上記のブログでビルドツールの新規開発に至る経過を説明している。大雑把な流れは次のような感じ: ウインドーズから(linuxに?)移植したときにsconsを使った。しかし、コンパイルし始めるまでに40秒かかることもあった。遅いのはsconsのせいではなく、3万ものインプットを一つのexecutableにコンパイルするビルドシステムのせいだとしている。 gnu makeに書き換えて、グーグルの高速gold linkerを活用し、
Captcha security check beyondfog.com is for sale Please prove you're not a robot View Price Processing
指摘事項A中の(a)は、他を見なくても「セキュア」属性だと分かりますね。徳丸本(体系的に学ぶ 安全なWebアプリケーションの作り方)では、4.8.2クッキーのセキュア属性不備(P209)に説明があります。 指摘事項Bは、ここだけ読むと、XSSのようでもあり、サーバーサイドのスクリプトインジェクションのようでもありますが、検査ログからXSSであることがわかります(下図はIPAからの引用)。XSSは、徳丸本4.3.1クロスサイトスクリプティング(基本編)と4.3.2クロスサイトスクリプティング(発展編)にて説明しています。 ここまでは、ごく基本的な問題ですが、問題文P6に出てくる以下の部分は、少しだけひねってますね。 このプログラムは、利用者が入力した文字列をダイアログに表示するために、受け取ったパラメタの値をスクリプトに埋め込み、動的にスクリプトを生成する。図4の( c )行目では
Document has moved, if you aren't automatically redirected go here.
pythonbrewによるフレキシブルなPython環境の構築 Vimの設定とかはあまり関係ないですが最強を詠うために最強のPython環境が必要なので構築します。最強の環境とは インストールされているPythonのバージョンが違うことによって不可解なバグが発生しない インストールされているライブラリのバージョンが違うことに不可(ry インストールされているライブラリ同士が干渉して不可解な(ry だと思っています。これらを解決するために pythonbrew という素晴らしいソフトを利用します。 ただこのソフトはシェルが前提となっているのでWindowsをお使いの方は代わりに virtualenv をインストールして先に進んでください。 Pythonには大きく分けて2.x系と3.x系の大きなバージョンがあり、この二つは相容れないものとなっています。 2.x系はずっと使われてきたもので外部ラ
HTML5では、Web StorageやWeb SQL/Indexed DBといった、JavaScriptでクライアントサイド(ブラウザー)にデータを保存する機能があります。今回紹介する「File system API」もそんな機能の1つですが、MacやWindowsのようなディレクトリを持ったファイルシステムにデータをファイルとして保存できます。 File system APIを使うと、Canvasに描いた画像をファイルとしてブラウザーに保存する、といったことができます。現在のところ、「Google Chrome」と、Android 4の「Chrome for Android」だけで利用できますが、特にスマートフォンでファイルが扱えるのは便利でしょう。 今回は、File system APIを使って簡単なファイラーを作ります。File system APIは非同期処理が多く、掲載している
アジャイルソフトウェア開発はキャズムを超えたと言われてもピンと来てなかったけど、本当に超えたと僕が実感でき日も近いのではないかと思う@HIROCASTERでございませう。 「キャズム」という意味は、先進的な人と一般的な人との間にある隔壁のことです。 つまり、一部で活発になってきているアジャイルソフトウェア開発が一般的になってきているということ。 システムインテグレータ大手のNTTデータが下記の発表をしたことについて、思うことを書いておきたい。 若手リーダー層を対象としたアジャイル開発研修を開始 会社としての姿勢これまで欧米を中心に普及してきたアジャイル開発は、米国IT企業のソフトウエア開発における採用率で30%を超えるなど、欧米では最も利用されている開発手法となっています。昨今では、日本国内でも、Webサービス業界やゲーム開発業界などを中心に多くの開発事例が見られるようになってきましたが、
It has been almost a year since we announced the support for WebKit remote debugging. It is now officially supported by BlackBerry PlayBook and in Chrome for Android. Latest version of Chrome introduces new extensions API that exposes it to the in-browser clients as well. Today we are happy to announce the v1.0 of the remote debugging protocol. We commit to supporting it and maintain its backward
Channels lets you push events to clients over a WebSocket via a simple API call. To install Channels as a Heroku add-on, simply follow the steps below. Let’s say you want to add Channels an existing Rails 3 app. We’ll assume you’ve already created your app on Heroku. Install Channels Gem Start by installing the Channels gem, or adding it to your Gemfile. $ gem install pusher Install add-on $ herok
CPAN とか全然分かってないし、実装力も全くないけど、miyagawa さんがいらっしゃるということだったので Carton Hackathon に参加してきました。ほんと座ってただけ。。。 日本(世界)トップの Perl Mongers 達が交わすモジュールに関する会話は、聞いてるだけでホントに意味が分からない、じゃなくて勉強になることばかりでした。Hackathon という場に居合わせて、モノがどうやって生まれてくるのかを目の当たりにできて、いつも運用ばっかりやってる僕にとってはとても新鮮で刺激的でした。 その後の懇親会はいつもの通りで、笑いの絶えない楽しいものでした。とってもとっても楽しかったです。 せっかく参加させてもらったので何か貢献できないか、ということで一応取り組んだのがcarton list --treeの表示をもうちょっとかっこよくしようということでした。node.js
前にこういう記事書いたんですけど、Redmine プロジェクトは結構活発でついこの間 1.4.0 がリリースされてました。なんと Ruby1.9 系へ対応!Gemfile も提供されるようになってよりインストールが簡単になってたのでかっとなってやってみました。ついでにこちらもだいぶ枯れてきた rbenv+ruby-build を使い、HTTP サーバとしては unicorn を使ってみました。 rbenv+ruby-build のインストール git は入っている前提ですが、超簡単です。 $ cd $ git clone https://github.com/sstephenson/rbenv.git .rbenv $ mkdir -p ~/.rbenv/plugins $ cd ~/.rbenv/plugins $ git clone https://github.com/sstephe
(」・ω・)」うー(/・ω・)/にゃー(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!CHAOS☆CHAOS!(」・ω・)」うー!!(/・ω・)/にゃー!!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!
僕が一番好きな UNIXコマンド は cut です。 名前と機能が完全に一致していて、シンプルな動作(-d で指定したデリミタで行を区切り、-f で指定したフィールドを取り出す)を完璧に行っているからです。例えばログファイルからIPアドレスだけを抜き出してユニークな数を数えたりする時等に大活躍ですよね。 そんな素晴らしい cut コマンドですが、あとちょっとこれが出来たらいいのに!と思うことも多少あったりします。その殆どは sed/awk 等を使えば可能なことだったりするのですが、毎回同じような作業をしているなと感じたので「もう一つの(遅い)cut」として新たに実装しました。 以下のコマンドで install 出来ます。 sudo gem install pcutgithub はこちら https://github.com/bonar/pcut pcut は ruby で書かれたもう一つの
主にプランナー向けとして、プランナーがプログラム出来るようになると嬉しいよね、といった趣旨で勉強会をしました。 p4dにインスパイアされて、planer向けだし、p4pと名付けてみました。(すみません) その時の資料は以下 P4p20120408 View more presentations from Naoto Koshikawa やったこと 内容としては、以下の説明と実技という感じでした。 git ruby sinatra heroku git 一年ぐらいまえに非エンジニア向けにgitをレクチャーしたときの資料を元にgitの概要を説明。バージョン管理システムの概念や使う利点は伝わったかなと思います。 割と丁寧に説明したので、ここまでで2時間ぐらいです。 githubにアカウントを作っておいてもらったので、実際にリポジトリを作ってもらって、そこにRERADME.textileをおいても
またまたまた前回に引き続き CoffeeScript についてのエントリーです. 今回は, タイトルの通り CoffeeScript と gl.enchant.js を使って 15 分で 3D ゲームを作ってみました. 作ったゲームは以前書いたエントリー『gl.enchant.js を使って 10 分で 3D ゲームプログラミングしてみた. んで, その様子をビデオキャプチャーしてみました!!』で 作ったゲームと同じです. 狙いとして「 JavaScript で 10分掛かったけど, CoffeeScript だと 5分で作れちゃったよ~」ってエントリーにしようと考えていたのですが 何分 CoffeeScript はまだ不慣れなもので 15分も掛かってしまいましたw ただ, 慣れさえすれば Python のように流れるようにコードを書けるのでいくつかゲームなりツールなり作ればホントに 5分
Node.jsでつくったサービスをJenkinsで自動テスト走らせるようにした。gitでpushしたら自動でテストが走って失敗したらメールとかチャットに通知してくれる。便利。 インストール サーバーはUbuntu(v10.04@sakura vps)なのでここに書いてある通りにする。 http://pkg.jenkins-ci.org/debian/ まずキーを取得。 $ wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -次に以下を/etc/apt/sources.listに追加。 deb http://pkg.jenkins-ci.org/debian binary/んでインストール。 $ sudo apt-get update $ sudo apt-get insta
「bills」の創始者でレストランターのBill Granger(ビル・グレンジャー) IMAGE by: FASHIONSNAP
This extension is part of the Sinatra::Contrib project. Run gem install sinatra-contrib to have it available. Sinatra::ConfigFile¶ ↑ Sinatra::ConfigFile is an extension that allows you to load the application’s configuration from YAML files. It automatically detects if the files contain specific environment settings and it will use those corresponding to the current one. You can access those optio
やっとイメージ通りのものになりつつあるので、ここらでいったん公開したいと思います。 上記の画像が今の自分のデスクトップの画像です。 黒基調にしてみました。 説明していきます。GeekToolの基本的な使い方は、下記のリンクを参考にしてください。 Macのデスクトップカスタマイズの定番!『GeekTool』を使ってMacをギークっぽくカスタマイズ! * 男子ハック まずは真ん中のカレンダーはどうやって出しているのか。 こちらは三階ラボさんの壁紙カレンダーから使わせてもらっています。 下記のリンクからとりにいけます。 三階ラボ | 壁紙カレンダー 2011 ver.01 画像をダウンロードしただけでは、月が変わる毎に手動で更新をしないといけないので、 shellのGeekLetを選択し、下記のスクリプトを実行させます。 cp /desktop-calendar-2011-v01-sun/des
Mac、iPhoneなどPCの話を中心につらつらと書いていくブログ。 MacもiPhoneもまだまだ初心者。 いちエンドユーザーとして便利なソフトの使い方や役立つ情報、Apple製品のある生活を綴っていっきます。 以前紹介した Mac OS のデスクトップカスタマイズツール、GeekTool。 ブログで取り上げたっきり、他のアプリケーションによるカスタマイズのまま満足して放ったらかしにしていました。 気分が良くて何が悪い?| GeekTool - デスクトップに画像・テキストファイルの内容などを表示するPreferencePane 今回たまたま時間がとれたので、良い機会なのでこのGeekToolでがっつりとデスクトップカスタマイズと洒落込んでみました。 GeekTool以外にも細かいことを色々とやっているので、ここに備忘録として残しておきます。 こちらが完成形。個人情報の部分や知られるのが
前から気になっていたのですが、ようやく「ifttt」を試してみました。「ifttt」は、インターネットの各種サービスを繋げ、タスクを自動化することができるサービスです。 「ifttt」というのは「if this then that」の略なのですね。「this」をタスクのトリガーとし「that」のアクションを起こすのが基本です。 例えば「Instagramで写真撮影したら(this)Dropboxに保存する(that)」みたいな作業を自動化することができます。 利用できるチャンネル(サービス)は多数あります。 作業を自動化したくなるようなサービスは、ほとんど網羅されている感じでしょうか。 どんなことができるかの”レシピ”は「ifttt / Recipes」として、投稿されたものがまとめられていますので、ここを見ると自分のやりたいことは大体見つかるかもしれません。 いくつか面白そうなものをピッ
Karl Seguinさんの「The Little MongoDB Book」を和訳しました。 この本はMongoDBの基礎を実際に手を動かして学ぶチュートリアルです。 MongoDBの基礎から、データモデルの設計方法、MapReduceなど幅広い内容をカバーしています。 また、特別MongoDBに興味が無くても筆者のNoSQLへの考え方は一読の価値があるだろう。 ダウンロードPDF版 the-little-mongodb-book-ja.pdf epub版 the-little-mongodb-book-ja.epub(あんまりきれいに組版できてないけど…) 誤訳などあれば @hamano まで ソースはこちら: https://github.com/hamano/the-little-mongodb-book 更新履歴2012/04/17 v1.0 初版公開。 2012/06/15 v
apache 1.3.42 をビルドすると htpasswd.c:101: error: conflicting types for 'getline' というエラーが出る場合は glibc の stdio ライブラリの getline 関数と競合しているので、このパッチを当てるか、該当箇所を置き換えてやれば良い。 make 時のエラーメッセージは以下のような内容。 ===> src/support make[2]: Entering directory `/home/kyanny/cicindela/apache_1.3.42/src/support' gcc -c -I../os/unix -I../include -DLINUX=22 -DHAVE_SET_DUMPABLE -DUSE_HSREGEX -DNO_DL_NEEDED `../apaci` htpasswd.c htpa
PHPが動くPaaSの中でも知名度の高いheroku phpfog orchestraのそれぞれ実際のところどの程度のパフォーマンスが出るのか気になったので調べてみました。結論から言うとどのプラットフォームもAmazon EC2内のネットワークがボトルネックになっておりパフォーマンスの差はほとんどありませんでした。テストは下記の簡単なスクリプトに対してabで並列数1でリクエストを投げるという形で行いました。下記のグラフは1秒間あたりに処理したリクエスト数です。<?php echo json_encode(getdate());結果が頭打ちになってしまっている原因はおそらくネットワークです。3プラットフォームに対してtracerouteを取ってみましたがどれもAmazonのネットワークに入った後に追跡ができなくなっています。どのプラットフォームも連続的に接続を行うと接続がリセットされてしまう
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く