気がつけばブックマークを使わなくなってた

この1年ほどブラウザのブックマークをほとんど使わなくなった。
ローカルだけではなく、はてぶのようなサービスも使わなくなった。
使うとしたら、テンポラリでブックマークバーに表示出来る程度といくつかのブックマークレットだけになってしまった。


おそらく以下の理由からだろう
・はてぶやブックマークに登録しても後から見ることはほとんどない
・また、気になる記事があっても、たいていRSSがあるのでGoogle リーダーに送る
・仕事柄、技術的ネタはブックマークに送るのではなく、必要な部分をEvernoteに送る
(Extension入れてれば検索結果にも反映させれる!)
・ブックマークしてても、次に同じようなことを調べる時はググってしまう


昔はよく使ってた機能やサービスは、やっぱり時とともに変化するんだなあと思いました。

redmineのチケットをiCalで出力するpluginを作ってみた

iPhoneとかで自分のチケットがカレンダーで見れると色々捗ると思って作ってみた。
やっつけで作ったので不具合あるかもしれないので、その場合はお知らせください。

https://github.com/ryu00026/redmine_ical

今のところの仕様

・担当者がOrganizer(主催者)
・ウオッチャーがAttendee(参加者)
・自分が担当で完了フラグが付いてないステータスのチケットを取得

TODO

・国際化
・watcherに入ってるチケットもカレンダーで出力すべき?
・なぜかGoogleカレンダーで取り込めない。誰か助けて

とある会社のリスクマネジメント

地震の少し前になりますが、友達が務めているとある会社に遊びに行った事がありました。
その会社のプロダクトもユニークですが、会社としての考え方が大変興味深かった。

レポジトリなどやサーバ、ドキュメントの保存先など、あらゆるリソースは全てクラウドに置いているということでした。また、従業員には全員Macbookを貸与していて、どこでも仕事ができる環境を構築していました。

COOの人曰く、「このビルに隕石が落ちてきても、失うものは何も無い」と仰っていました。
その時は、そんな事があったら仕事どころじゃないだろうとは思っていましたが、最近の先行きの見えない原発事故の状況を見るに、仮に東京から避難しないといけない状況になっても、ネットさえあれば仕事が出来る状況があるというのは、会社としても、また雇用されている従業員としても大変心強いかもしれません。

Pマークなどとか、個人的にはあまり意味の無いと思ってる制度に縛られてる会社には出来ない環境だと思った。オフィスに何かあった場合、会社としての機能を喪失してしまう方が恐ろしいなあと思う。

これから就職や転職を考えてる人は事業内容や福利厚生など以外にも、こういった所も注目していくのかもしれないですね。

spark2のインストール

node.jsには複数の子プロセスを起動してそれらに処理を分散させるライブラリがあります。その中にあるspark2というのがヨサゲなんですが、インストールに躓いたのでメモ。

$ npm install spark2
npm info it worked if it ends with ok
npm info using npm@0.3.4
npm info using node@v0.4.1
npm info fetch http://registry.npmjs.org/spark2/-/spark2-2.0.11.tgz
npm info calculating sha1 /var/folders/ha/hahuiaCIG94DCkXqGm1vYE+++TI/-Tmp-/npm-1298819796102/1298819796102-0.6748477106448263/tmp.tgz
npm info shasum 3e55f7a488e9498d310b4e07e0b93441891b777b
npm info calculating sha1 /Users/ryu/.nvm/v0.4.1/lib/node/.npm/.cache/spark2/2.0.11/package.tgz
npm info shasum 826b4e1fcd1a587724e9c0a5413bab9b9bffc549
npm info range lsof@>=0.0.1
npm info fetch http://registry.npmjs.org/lsof/-/lsof-0.0.1.tgz
npm info calculating sha1 /var/folders/ha/hahuiaCIG94DCkXqGm1vYE+++TI/-Tmp-/npm-1298819796102/1298819798003-0.06807073205709457/tmp.tgz
npm info shasum 16fa5fbab03599f1c78df731b4bc61df87fbde21
npm ERR! couldn't read package.json in /var/folders/ha/hahuiaCIG94DCkXqGm1vYE+++TI/-Tmp-/npm-1298819796102/1298819798003-0.06807073205709457/contents/package
npm ERR! Error installing lsof@0.0.1
npm ERR! Error: Failed to parse json
npm ERR! Unexpected token ]
npm ERR! at jsonParseFail (/Users/ryu/.nvm/v0.4.1/lib/node/.npm/npm/0.3.4/package/lib/utils/read-json.js:89:11)
npm ERR! at /Users/ryu/.nvm/v0.4.1/lib/node/.npm/npm/0.3.4/package/lib/utils/read-json.js:82:14
npm ERR! at P (/Users/ryu/.nvm/v0.4.1/lib/node/.npm/npm/0.3.4/package/lib/utils/read-json.js:62:40)
npm ERR! at cb (/Users/ryu/.nvm/v0.4.1/lib/node/.npm/npm/0.3.4/package/lib/utils/graceful-fs.js:31:9)
npm ERR! at [object Object]. (fs.js:86:5)
npm ERR! at [object Object].emit (events.js:39:17)
npm ERR! at afterRead (fs.js:843:12)
npm ERR! JSON.parse
npm ERR! JSON.parse Failed to parse package.json data.
npm ERR! JSON.parse Note that package.json must be actual JSON, not
npm ERR! JSON.parse just a JavaScript object.
npm ERR! JSON.parse
npm ERR! JSON.parse This changed in npm 0.3.0, and is not a bug in npm.
npm ERR! JSON.parse Tell the package author to fix their package.json file.
npm ERR! JSON.parse
npm not ok

どうもパッケージlsofをインストールする時にjsonのパースに失敗しているようです。

cd /var/folders/ha/hahuiaCIG94DCkXqGm1vYE+++TI/-Tmp-/npm-1298819796102/1298819798003-0.06807073205709457/contents/package
vi package.json

以下のjsonでカンマが不要なので消します。

"contributors": [
{ "name": "Dav Glass", "email": "XXXX@gmail.com" },←コレ
],

"contributors": [
{ "name": "Dav Glass", "email": "XXXX@gmail.com" }
],

修正したものでもう一度lsofをインストールしてみる

npm install /var/folders/ha/hahuiaCIG94DCkXqGm1vYE+++TI/-Tmp-/npm-1298819796102/1298819798003-0.06807073205709457/contents/package
npm info it worked if it ends with ok
npm info using npm@0.3.4
npm info using node@v0.4.1
npm info calculating sha1 /Users/ryu/.nvm/v0.4.1/lib/node/.npm/.cache/lsof/0.0.1/package.tgz
npm info shasum 873f0797c07c5e932b0c716eb8dc033a57702076
npm info preinstall lsof@0.0.1
npm info install lsof@0.0.1
npm info postinstall lsof@0.0.1
npm info preactivate lsof@0.0.1
npm info activate lsof@0.0.1
npm info postactivate lsof@0.0.1
npm info build Success: lsof@0.0.1
npm ok

うまくいきましたので、もう一度spark2をインストール

npm install spark2
npm info it worked if it ends with ok
npm info using npm@0.3.4
npm info using node@v0.4.1
npm info preinstall spark2@2.0.11
npm info install spark2@2.0.11
npm info postinstall spark2@2.0.11
npm info preactivate spark2@2.0.11
npm info activate spark2@2.0.11
npm info postactivate spark2@2.0.11
npm info build Success: spark2@2.0.11
npm ok

上手くインストールできました。


spark2の細かい使い方は
https://github.com/davglass/spark2
のREADMEにあります。

10分で作るチャットアプリ by node.js

ひと昔前、Railsが流行りはじめた頃、Railsの生産性の高さを証明するためによく見かけた10分で作るアプリの動画がありましたが、同じようにリアルタイムチャットを10分で実装して、node.jsやweb socketの面白さや手軽さを伝えてみようと思います。

以下のmoduleを使って実装しました。

  1. express
  2. socket.io
  3. ejs

web socket使うと新しいウェブサービスを作れそうです。

ソースは以下においてあります。
https://github.com/ryu00026/simple-chat-application-by-node.js

node.jsとORMで普通の掲示板を作ってみた

前回の記事でnode.jsの環境を作ったので、簡単なアプリケーションを作って動かしてみます。

expressを使って割と簡単に作れました。
ORMはgithubを適当に検索してて、良さげな感じがしたsequelizeというのを採用。


サンプルコードは
https://github.com/ryu00026/simple_post_by_node
にあります。(viewやsqlも)


SinatraRailsを使ってた人には見ただけで解るんじゃないでしょうか?
ORMのequelizeの詳しい情報は下記を参照してください。
http://sequelizejs.com/

var express = require('express'), 
    ejs = require('ejs');

var Sequelize = require("sequelize").Sequelize;
var sequelize = new Sequelize('post_development', 'root', '', {
                                  host: "localhost",
                                  port: 3306
});

// models
var Post = sequelize.define('Post', {
                                title: Sequelize.STRING,
                                content: Sequelize.TEXT
                            });



var app = express.createServer();
app.use(express.bodyDecoder());
app.register('.ejs', ejs);

// GET
// 記事一覧表示
app.get('/', function(req, res) {
            Post.findAll(function(posts) {                             
                             var locals = {
                                 posts: null
                             };
                             locals.posts = posts;                              
                             res.render('index.ejs', {
                                            locals: locals
                                        });
                         });
        }
       );


// 記事作成
app.get('/new', function(req,res){
            res.render('new.ejs');
            var post = new Post({
                                })            
        });

// POST
// 記事作成
app.post('/', function(req, res) {
             var post = new Post({
                                     title: req.body.title,
                                     content: req.body.content
                                 });
             post.save(function(){});
             res.redirect("/");
});



app.get('/posts/:id',function(req,res){
            console.log(req.params.id);
            var id = parseInt(req.params.id);
            Post.find(id, function(post) {
                          res.render('show.ejs', {
                                         locals: { 
                                             title: post.title,
                                             content: post.content    
                                         }
                                     });            
                          
                      });

});

app.listen(3000);

node.jsが面白そうなので環境構築してみた

僕の中でいつか本格的にやろうと思っていた言語の一つがJavaScriptなんですけど、まあ、仕事や趣味ではJQueryでお茶を濁してきてたわけですが、node.jsを知ってからは俄然興味が出てきました。

特にExpress on Railwayという名前どころか中身までRailsそっくりなフレームワークが出てきたりしたので、そろそろやってみようかなとう気になりました。

というわけで環境構築から

ソースからビルドしてもいいけど、バージョンアップが早いのでrvmのようなバージョン管理システムのnvmを使うことにします。

git clone git://github.com/creationix/nvm.git ~/.nvm

ここで少しハマったんですが、もしShellがzshの場合、環境変数のセットがうまくいきません。
いきなり /srcとかディレクトリが作られてびっくりしたw
~/.nvm/nvm.shを開くとbashでしか動かないようです。

#export NVM_DIR=$(dirname ${BASH_ARGV[0]})
export NVM_DIR=/Users/hoge/.nvm
export NVM_DIR=$(cd $(dirname ${BASH_SOURCE[0]:-$0}); pwd)

とりあえず引数ではなくフルパスで書いておきます。
bashでは動かないんでzshで動くようにします。

. ~/.nvm/nvm.sh
nvm install v0.3.7

これでnvmとnode,パッケージ管理であるnpmも入りました。
後は必要に応じてライブラリをnpmで入れていくだけです。

あとは.zshrcのどこかに下記を書いておきます。

. ~/.nvm/nvm.sh
nvm use v0.3.7


とりあえず使いそうなものをいれておきます。

npm install node-dev
npm install node-inspector
npm install express
npm install express-on-railway
npm install mysql
npm install mongodb

MySQLはともかくMongoDBのアダプタがあるとは。。。

ともかく環境は完成したので次からはアプリを作っていきます!!