RubyでRedis使ってて便利だったgem

・redis-objectsの「Redis::Lock」 redis-objectsがまず便利なんだけど、その中で「Redis::Lock」。 処理が平行して実行されないようにしたい時など、処理の一部をロックしたい時に役立つ。これは、redis公式の http://redis.io/commands/setnx これに則って…

vimでslimファイルの色づけ

ここにある https://github.com/slim-template/vim-slim 導入 git clone https://github.com/slim-template/vim-slim.git vim-slim以下のものを、~/.vim/以下に配置もっとあか抜けた入れ方があると思うんだけど。vim力あげたい。

「つくって学ぶプログラミング言語 RubyによるScheme処理系の実装」を読みはじめた

1.2 はじめてのプログラムの評価のところ。 サンプルのパーサをrubyで書いてはいるんだけど、scheme風にするために(is_a? Arrayしてるのをあえてdef list?定義してたり)で書かれていて読むのがつらかった。 とりあえず動きだけ把握したいなーと思って、ruby…

「なるほどUnixプロセス ― Rubyで学ぶUnixの基礎」を読んだ

良い本だった。Ruby関係ない人も、Unix的な仕組みの理解につながると思う。この本の内容でそれほど触れているわけでは無いが、普段なにげなく叩いているコマンド実行時の「パイプライン」。 これの理解がコマンド同士の入力、出力をつなげるくらいしか理解で…

xmpp4rで日本語のチャットルームに入ると deadlock detected

xmppなチャットルームにrubyからメッセージを送りたいと思い、 http://d.hatena.ne.jp/gnarl/20120810/1344564294 を参考にして下記のスクリプトを書いたけど、 # -*- coding: utf-8 -*- require "xmpp4r" require 'xmpp4r/muc' chat_room = "ほげ-会議室@co…

Arduino

最近Arduinoが気になってたので、手を出してみることにした。 いろいろ頑張れば、Webサーバと連動したり障害物を判定して動いたりするような電子工作ができるらしい! そもそもArduinoって? 電子工作。 プログラミング(Java風のオブジェクト指向言語「Proce…

今さらrails debuggerの便利な機能

いつもpry-railsでデバッグしててあんまりdebugger使ってなかったんだけど、 debuggerって多機能だし、その機能ってどんなんあるだろうと。 で、その中でup、disp、infoって便利だと思った。 up 呼び出し元を見る。 ある箇所でおかしな事になってるけど、元…

autotestのmapping

なぜかmodelファイルの変更をしても、autotestで再実行されない。 とりあえず、autotestのmappingを下のようにしたら実行されるようになった。 app以下のファイルとspecファイルのmapping。.autotest Autotest.add_hook(:initialize) {|at| at.add_mapping(/…

MacはBSDベース

MacはLinuxベースじゃない。BSDベース。そのおかげではまった。historyの出力から、行番号部分だけとりたかった。 これを、 121 ls -al 122 pwd こうしたかった。 ls -al pwd だけ。で、sedで-r(拡張表現オプション)つけて実行。 history | sed -r "s/^ +[0-…

Mac Lionにclispをインストール

Mac Lionにclispをいれる。 brew install clisp Warning: Building with LLVM, but this formula is reported to not work with … If it doesn't work you can: brew install --use-gcc … Error: Failed executing: ulimit -s 16384 && make 「--use-gcc」つ…

unicornのpreload_app

unicornの設定「preload_app」について。 ざっくりと、「workerのアプリケーションの先読み」の設定らしい。 このサイトに詳しい説明があったので訳してみた。英語は苦手なので怪しいがなんとなく雰囲気は合ってる気がする。http://unicorn.bogomips.org/Uni…

Mac Lionにnginx+php-fpmをいれ、Shindigを動かす

事前にいるもの ・Homebrew ・wget(Homebrewでbrew install wgetでいける) nginx、php-fpmインストール nginx brew install nginx php-fpm php-fpmを有効にしたphpをインストールする必要がある。 brewで入るが、デフォではbrew対象外(/usr/local/Library/…

さくらVPSで、node0.5.3〜npmのinstallではまった

ローカルのnode.js環境をさくらVPSに移した。 いくつかはまる部分があったので備考録。まずはnode.jsのソースをもってきてconfigure。 cd /usr/local/src/ wget http://nodejs.org/dist/v0.5.3/node-v0.5.3.tar.gz tar xzvf node-v0.5.3.tar.gz cd node-v0.5…

2011/07/22 Node.jsの勉強会 「『Node.js』とは何か。そして、その先へ。」 に行ってきました

「『Node.js』とは何か。そして、その先へ。」( http://www.jus.or.jp/benkyokai/11-07.html ) (日本Unixユーザ会の勉強会)のレポートです。・日時 2011/07/22 18:30〜20:30・講師 bad_at_mathさん、jackさん 資料が配布され、それに従った説明を聞く+サ…

MySQLのデータ分割。パーティション(Partition)とは

最近、DBのパーティションという言葉をよく聞くようになった。 DBのパーティションとは、「データの分割」。自分が扱うアプリケーションはまだこれを扱うべき状況にはなっていないが、いまいちどういう物なのか分かっていなかったので調べてみた。主にMySQL…

mongooseのconnectの接続エラー(node.js)のハンドリング

mongooseのconnect実行時、mongodが上がっていなくてもthrowされないので、そのあたりのハンドリングがしたくてmongooseのソースを呼んでみました。(非同期IOだから当たり前ですが・・) たぶん、コールバックを指定すれば良いとかそのくらいの事なんだろう…

MySQLな人から見たMongoDBのデータの持ち方比較

Nodeでアプリ作ってて、DBどうしようか迷ってたら、どうもMongoDBが相性が良いらしいと言われているようなので調べてみた。 自分はMySQLしかほとんど触ったことがないので、MySQLと比較して特長をつかんでみる。 とりあえずはデータ構成の比較。 データの持…

node.jsの最低限の例外処理

node.jsでサーバを立てる場合、アマPHPerな自分にとってはApacheを書くという今まで謎だった部分を実装するイメージになる。 だが、まずい実装をすると例外が発生し一発でサーバが簡単に落ちてしまい大トラブルになる。例外処理対策、やった方が良さそうなこ…

svnで〜日以降に変更、追加のあったファイルの確認

svn log -v -r {2011-05-10}:HEADなんて感じ。 rはリビジョン指定。ここに{}で日付を指定できる。 vは詳細。 今更だけどまだまだ使っているsvn。

node.js、socket.ioでチャット。切断中に受け取れなかったデータを再接続時に取得

概要 websocketの入門者の定番の「チャット」をnode.js+socket.io(とexpressを少々)で実装。 クライアントの接続が途中で切断された場合、再接続時にメッセージを取得する処理も実装したメモ。 (nod32のHTTPチェックが、websocketを定期的に切断したので・…

socket.ioのwebsocket接続がdisconnected、connectedを繰り返してしまう

21 Apr 01:29:34 - Initializing client with transport "websocket" 21 Apr 01:29:34 - Client 37915311800315976 connected 21 Apr 01:29:56 - Client 37915311800315976 disconnected 21 Apr 01:30:02 - Initializing client with transport "websocket" …

Redmineでgithubと連携する備考録

Redmineで設定しだいでGitリポジトリとの紐付けができる。 githubのgitともいけるはず。 ただ、いくつか制約がある。 git初心者的にはもろもろはまった。 Redmineはローカルのgitリポジトリを参照 Redmineのgitリポジトリ設定に、 git@github.com:motsat/tes…

NOD32がWebSocketのsendの邪魔をする

下記のようなHTML側のJavaScriptで、WebSocketのsendが失敗(サーバに通信されない) ws = new WebSocket("ws://localhost:8000/test"); // OK.接続はできる。 ws.onmessage = … // OK。サーバからのメッセージも受け取れる。 ・ ・ ws.send('message'); // …

v8エンジンと他の環境の、コンパイルの周り比較

node.jsにも使われているv8エンジンの速さの秘密は、主にコンパイル周りにあるらしい。 そもそもコンパイルの流れなどがよくわかっていなかったので調べてみた。 (対象の言語は自分の身近なもの+興味あるもの) PHP ■インタプリタ 一行ずつ、「解釈」→「中…

v8エンジンとブラウザ周りの関係

そもそもv8エンジンはJavaScriptのエンジンらしいが、 ブラウザとその辺りの関係性がよくわかってないのでまとめてみた。 v8エンジンとブラウザ周りの関係 ブラウザの構成要素は、主にHTMLレンダリングエンジンとJavaScriptエンジンでできている。 v8エンジ…

vimな人がnode.jsを始めるにあたって

Javascriptのシンタックス シンタックス表示でjsを見やすく。 http://www.vim.org/scripts/script.php?script_id=1491 quickrun.vimでjs実行 ターミナルで即実行。 http://www.vim.org/scripts/script.php?script_id=2419 quickrunは拡張子を見て実行コマン…

node.jsはじめる

サーバサイドにも使える「node.js」。 普段Apache×PHPだが、PHPより言語的にはJavaScriptの方が好き。 ふつうのWebアプリ、またWebSocketにも手を出してみたい。 node.jsインストール 公式サイトだと、最新版は0.4.5っぽい(2010/04/05) wget http://nodejs.o…