tag:blogger.com,1999:blog-76051703277199945802024-03-06T08:21:54.093+09:00taksatouの日記for my conveniencetaksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.comBlogger43125tag:blogger.com,1999:blog-7605170327719994580.post-70303175816523511852011-11-06T23:36:00.000+09:002011-11-06T23:36:17.458+09:00ブログ移転しましたhttp://mojavy.com/
taksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-12930179613080787932011-07-21T02:41:00.001+09:002011-07-21T02:42:08.770+09:00tcpdumpの使い方メモすぐ忘れるので自分用メモ
例えばmysqlだと以下でselect文がみれる。
sudo /usr/sbin/tcpdump -l -i eth0 -A -n -s 0 dst port 3306 | grep SELECT
unix ドメインソケットにながしてるデータを見る方法がないかあとで調査taksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-80672792373508870872011-06-25T20:04:00.002+09:002011-06-25T20:05:32.682+09:00railsのデフォルト起動ポートを変更する方法なんか毎回調べてる気がするのでメモ
config/boot.rbに以下を追記する
require 'rails/commands/server'
module Rails
class Server
def default_options
super.merge({
:Port => 4000,
})
end
end
end
taksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-11950849408579396082011-06-04T21:56:00.004+09:002011-06-26T23:18:18.234+09:00gitで迷子になった(no branch)に復帰する方法gitを使って開発しているときに、以前のコミットのハッシュを直接指定してブランチを切らずにcheckoutすると(no branch)という無名のブランチができます。
どうしてそんなことをするかというと、例えば、開発を進めてる途中で別のやり方を思いついて以前の状態からやり直したいけど、あんまり自信ないからbranch切って名前つけるのはめんどくさい、みたいなときとか。まあブランチきればすむ話ですが、とにかくno branchで作業しちゃうときもあるのです。そういうときに限ってうまく実装できて、no branchで作業していることを忘れてそのままcommitしてしまったりします。
で、なにげなくmasterに戻ってみるとさっきの作業内容が見えなくなって焦るわけです。そういうときはno branchでコミットしたときのハッシュ値を直接指定してやればno branchでの状態に戻れます。no taksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-72116753118755697782011-05-29T13:59:00.003+09:002011-06-04T22:14:11.081+09:00c++のコンテナをストリームに出力するコードスニペットどういうことがしたいかというと、for (vector<string>::iterator it = lis.begin(); it != lis.end(); ++it) {
cout << *it << endl;
}のようなループをかくのが面倒なのでcout << lis << endl;のように書きたい。これをやるにはtemplateパラメータにtemplateをつかってoperator<<をオーバーロードしてやればまあまあ簡単にかける。
forward_iteratorを実装してるコンテナならなんでもいけるはず。ネストしててもOKテンプレートパラメータが3つのコンテナ用の定義でlessとgreaterに分けてるのは、コンパイラに型推論をうまくやってもらうため。(テンプレートパラメータだけではstringtaksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-2392812719170839842011-04-29T02:37:00.002+09:002011-04-29T02:40:34.399+09:00ruby開発環境構築メモ - xmpfilterを使ってrubyスクリプトに注釈をつける
rcodetoolsを入れて快適なemacs生活をエンジョイしたい。
sudo gem install rcodetools
rcodetoolsをいれるとxmpfilterというコマンドにrubyスクリプトを食わせると、コメントで注釈をつけてくれる
これをemacsで使うためのelispがパッケージにはいってるので、それをload-pathの通っているところにコピーする。
.emacs.d/tmpがないと実行時にエラーがでたので、mkdirしておく
cp /usr/lib/ruby/gems/1.8/gems/rcodetools-0.*/*.el ~/.emacs.d/elisp/
cp /usr/lib/ruby/gems/1.8/gems/rcodetools-0.*/*.elc ~/.emacs.d/elisp/
mkdir ~/.emacs.d/tmp
.taksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-66411919488660211602011-04-23T15:11:00.004+09:002011-04-23T15:17:16.710+09:00rails3でrinariからmysqlにつなぐメモ
rails3でmysqlを使おうとすると、gem mysql2 を要求された。
なので、config/database.ymlには以下みたいになるが、rinari-sql は "sql-<adapter名>" という名前の関数を探しにいくので、emacs側でsql-mysql2がないというエラーになる。
development:
adapter: mysql2
database: foo
host: localhost
port: 3306
username: bar
password: baz
encoding: utf8
pool: 5
timeout: 5000
これを避けるには、以下のようにしてsql-mysql2にaliasをはるelispをかけばOK
(defalias 'sql-mysql2 'taksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-75933316348903082822011-04-08T23:27:00.006+09:002011-04-09T00:42:46.478+09:00haskellのリスト内包表記で格子点列挙haskellのリスト内包表記について勉強してるときにたまたまこの記事を見つけたので試しにやってみた。
http://d.hatena.ne.jp/odz/20070131/1170284561
main = mapM print (mesh [[1..10],[1..10],[1..10]])
mesh [] = [[]]
mesh (x:xs) = [ x':xs' | x' <- x, xs' <- (mesh xs) ]
パフォーマンスは調べてません。
もっといいやり方はありそうだけど、そこそこ直感的。。かな?
リスト内包表記って気持ち的にはSQL書くのに近い気がする。
taksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-63790200649255423192011-03-27T01:40:00.002+09:002011-03-27T01:42:54.394+09:00ruby環境構築メモ - fastri編いまさらだけど、そろそろまじめにrubyの開発環境を整えようと思ったのでとりあえずfastriを導入した。
5分でおわると思いきや地味に苦労したので作業履歴メモ
http://eigenclass.org/hiki/fastri
手順
最新版のソースをおとす
展開してsetup.rbを実行
'fastri-server -b' でインデックス作成
'fastri-server -B' でフルテキストのインデックス作成
'fastri-server' で起動
qri Array みたいなかんじで使う
ところがqriを使おうとすると以下のようなエラーが。。
/usr/lib/ruby/1.8/rdoc/ri/ri_paths.rb:61: uninitialized constant Gem::Version (NameError)
from /usr/lib/rubytaksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-34007269392387142612011-03-22T23:22:00.002+09:002011-03-23T01:06:00.011+09:00twitterやfacebookのOAuthをつかってrails+omniauthでログイン機能を実装するメモ その2前回(http://taksatou.blogspot.com/2011/03/twitterfacebookrails.html) 、OAuthで認証するところまでできたので、今回はtwitterアカウントでログインするところを作ります。omniauthのrailsチュートリアルビデオのpart2に大体対応してますが、ここでの内容はちょっと変えてます。
- http://railscasts.com/episodes/236-omniauth-part-2Contentsrails generate
modelauthenrication.rb
user.rb
controller
view
routes.rb
確認
まとめ
rails generate以下のようにしてdeviseのセットアップとmigrationをします。
emailとpasswordはつかわないので消します。taksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-51035453526708728672011-03-22T00:06:00.017+09:002011-03-23T01:07:15.519+09:00twitterやfacebookのOAuthをつかってrails+omniauthでログイン機能を実装するメモ その1OAuthをつかっていろんなサービスと連動したアプリケーションがつくりたくなったので調査。
railsでやるにはoauth_pluginとかwarden_oauthとか色々なプラグインがあるみたいだけど、omniauthがよさそうです。
rails初心者なので基本的にはomniauthのチュートリアルビデオに沿って作業します。
- https://github.com/intridea/omniauth
- http://railscasts.com/episodes/235-omniauth-part-1自前でパスワードやメールアドレスは保持せずに、twitterやfacebookのアカウントを使ってログインできるようにするのが目標です。
ちなみにtwitter anywhereを使えば似たようなことはできそうですが、twitterに依存してしまうので今回はパス。Contentstaksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-54634025026461125872011-03-21T15:01:00.001+09:002011-03-21T15:02:13.928+09:00githubでPermission denied (publickey)自分のgithubリポジトリに複数のホストからpushする方法についてメモ% git push git@github.com:taksatou/config.git master
とかやってPermission denied (publickey).
fatal: The remote end hung up unexpectedly
なってしまう場合は公開鍵が登録されていないhttps://github.com/account
のSSH Public Keys からpushしたいホストの公開鍵を登録すればOKtaksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-77755689902468440492011-03-19T14:01:00.007+09:002011-03-23T00:57:20.554+09:00Javascriptの統計ライブラリ jStatについてjStat (http://www.jstat.org/) とはJavascriptでMATLABやRのような処理をするためのライブラリです。
(同名のjvm統計データ監視ツールとは関係ないです)
http://www.readwriteweb.com/hack/2011/03/jstat-its-like-r-for-javascript.php
でも紹介されてます。
R開発者のEd Borasky氏によると、これからはJavascriptでビジュアライズするのがトレンドらしいです。というわけでちょっと遊んでみました。準備jStatは以下のものに依存してるけど、http://www.jstat.org/download から依存ライブラリをまとめてパッケージにしたものがダウンロードできるので特になにもしなくてOK。jQuery - version 1.4.4+ (http://taksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-62430996149602379622011-03-16T23:12:00.002+09:002011-03-16T23:20:41.325+09:00tmuxの複数セッション間でバッファを共有する方法マルチモニタで開発してる場合、それぞれのモニタ毎に端末アプリをたちあげることになりますが、端末ウィンドウ間でコピペをしたいときにマウスを使用せざるをえなくなってめんどうです。
emacsをサーバモードで起動すれば大抵の場合は事足りるのですが、いつもemacsだけで完結できるとは限りません。
というわけでtmuxとかscreenをつかってコピペするわけですが、tmuxのセッションをまたいでバッファを共有する方法をしらなかったのでメモ。manをみたところ、セッションをまたいでバッファをやりとりするのに以下コマンドが使えそうです。copy-buffer [-a src-index] [-b dst-index] [-s src-session] [-t dst-session]
(alias: copyb)
Copy a session paste buffer totaksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-8767704139065808122011-03-13T18:45:00.006+09:002011-03-14T22:22:01.078+09:00Cのプリプロセッサーについてのtips集Contentsプリプロセッサ処理のみを行う(gccの場合)
マクロの引数について
#ifdefと definedの違い
その他
pragmaとかpredefinedなマクロ
プリプロセッサ処理のみを行う(gccの場合)gcc -E a.cマクロの引数についてピリオド3つで可変長引数, __VA_ARGS__でその部分を展開
引数の頭に#をつけると文字列表記(ダブルコーテーションでくくられる)
引数の頭に##をつけると連結
#include <stdio.h>
#define MY_PRINTF(...) fprintf(stderr, __VA_ARGS__)
#define DEF(x, y) struct x##_##y##_t { static void f() { MY_PRINTF("%s, %s\n", #x, #y); } }
DEF(footaksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-70055815032516260312010-11-25T01:38:00.001+09:002010-11-25T01:39:16.373+09:00MacBook Air 環境構築まとめ 追記virtualboxの仮想環境についてちょっと設定が必要だったのでメモ
http://taksatou.blogspot.com/2010/11/macbook-air.html
仮想環境に対してSSH接続するにはvertualboxの設定からネットワークアダプタにブリッジアダプタを追加する必要がある。
そうしないと、ホスト側とアダプタを共有してしまうらしく、ゲストOS側にIPが割りあてられないみたい
ゲストOS側はubuntuがうまくやってくれるみたいでなにもしなくてOK
::taksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-70425852285686322832010-11-24T02:35:00.004+09:002010-11-24T22:43:10.807+09:00MacBook Air 環境構築まとめMacBook Airを購入したら環境をさらすのが流行ってるみたいなので便乗です。
macは完全に初心者なのでいろんな所を参考にしつつとりあえずいれてみた。
- Xcode http://developer.apple.com/technologies/tools/xcode.html
開発者ならとりあえずいれておくらしい。
- iTerm http://iterm.sourceforge.net/
標準で付属しているTerminalだと256色が変だったのでこっちをつかうことにした。
- virtualbox http://www.virtualbox.org/
- ubuntu http://www.ubuntulinux.jp/products/JA-Localized/virtualbox
手元の環境は汚さずに仮想環境で開発するのがモダン。
VirtualBox用のtaksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-78997812237463196532010-10-20T00:16:00.005+09:002010-10-20T00:53:29.990+09:00makeでちょっと便利なメタプログラミングGNU Make 第3版を見てたら、マクロとevalを使ってちょっと便利でおもしろいことができることに気づいた。
とりあえず例を書くとこんな感じ。
rules = foo bar baz
define def-rule
$1:
@echo $1
endef
$(foreach i, $(rules), $(eval $(call def-rule, $i)))
マクロとevalを使えば動的にルールを生成できるのだ。
これだけでfoo bar bazの三つのルールがつかえるようになる。
便利!
これを使えばサブコマンドを受け付けるコマンドを使うルールを定義したい時とか、複数のディレクトリに対して処理を行いたい時に妥協したシェルスクリプトを書く割合が減る気がする。
ただし、マクロの中は二重に評価されてしまうので、makeの自動変数やfor文、シェル変数を使いたい時は$の個数にtaksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-47496680949460025272010-07-04T23:22:00.002+09:002010-07-04T23:23:59.457+09:00debian 64bitで32bitバイナリをビルドするメモ64bit debianのgccでCプログラムをビルドするとデフォルトで64bitになる。
gccで32bitバイナリを作りたい時はgcc-multilib(C++の場合は、g++-multilib) を入れる
% sudo apt-get install gcc-4.1-multilib
として
% cc -m32 example.c
でOK
% objdump -p a.out | grep format
a.out: file format elf32-i386http://blog.gnu-designs.com/fix-for-incompatible-libstdc-error-messagetaksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-77592238405120716552010-06-27T23:00:00.004+09:002010-06-27T23:00:02.848+09:00ddclientメモ以前から使っていたDiCEではここ最近になってなぜかIPの更新ができなくなってしまったので、DynDNS.comの説明を参考にしてddclientを導入した。
ダイナミックDNSサービスはDynDNSを利用
https://www.dyndns.com/
IPアドレス更新クライアントについて
https://www.dyndns.com/support/clients/
Linux / UNIX Update Clients
https://www.dyndns.com/support/clients/unix.html
上側に書いてあったのでddclientを採用。
主要なOSのバイナリは配布されている。
debianなら導入はapt-getでも可。
DynDNSを使っていれば設定ファイルは以下から自動で生成できる
https://www.dyndns.com/taksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-79413381987307160112010-06-27T08:44:00.001+09:002010-06-27T08:49:11.088+09:00libmemcachedについてるlibhashkitであそぶlibmemcachedにlibhashkitなんていう便利そうなライブラリがついていたので、各種ハッシュアルゴリズムの特性を調べてみた。
http://libmemcached.org/libMemcached.html
libhashkitでつかえるアルゴリズムは以下の通り。(libhashkit/types.h参照)
それぞれのアルゴリズムの説明は検索すればでてくるので省略。
HASHKIT_HASH_MD5,
HASHKIT_HASH_CRC,
HASHKIT_HASH_FNV1_64,
HASHKIT_HASH_FNV1A_64,
HASHKIT_HASH_FNV1_32,
HASHKIT_HASH_FNV1A_32,
HASHKIT_HASH_HSIEH,
HASHKIT_HASH_MURMUR,
HASHKIT_HASH_JENKINS,
テスト方法は、互いに異なるtaksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-49303638767042044962010-06-23T02:12:00.004+09:002010-06-24T02:43:10.456+09:00GoogleCLをdebianで試すちょっと便利そうなものがでてたので試してみました。
http://japan.cnet.com/news/service/story/0,3800104747,20415466,00.htm
http://code.google.com/p/googlecl/
まずプロジェクトページからダウンロード~普通にインストール
wget http://googlecl.googlecode.com/files/googlecl-0.9.7.tar.gz
tar xzf googlecl-0.9.7.tar.gz
cd googlecl-0.9.7
sudo python setup.py install
gdataが必要らしいので同様にインストール
http://code.google.com/p/gdata-python-client/
wget http://taksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com3tag:blogger.com,1999:blog-7605170327719994580.post-70659069472318695272010-06-21T01:33:00.004+09:002010-06-21T01:56:46.549+09:00bloggerのテンプレートの出し分けをする方法のメモbloggerのトップページと個別の記事ページでテンプレートの出し分けをしたくなったのでやり方をメモ。
<b:if cond='data:blog.pageType == "item"'>
foo
</b:if>
これでfooの部分が個別記事のなかでのみ有効になる
taksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-20980671999423863362010-06-05T15:18:00.002+09:002010-06-05T16:19:07.391+09:00AMQP関連の参考リンクまとめ最近RabbitMQをよくいじっているので、参考にした記事などをまとめておきます。
RabbitMQとはerlangで実装されたAMQPの一つです。
http://www.rabbitmq.com/
概要をつかむには以下のスライドが参考になります。サンプルコードものってます。
http://www.slideshare.net/hungryblank/rabbitmq-with-python-and-ruby-rupy-2009
英語ですがこちらのブログ記事はチュートリアル的に書かれていてとても参考になりました
http://blogs.digitar.com/jjww/2009/01/rabbits-and-warrens/
下記のブログでもRabbitMQ関連の記事がよくポストされてます。
http://somic.org/category/rabbitmq/
greeのtaksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0tag:blogger.com,1999:blog-7605170327719994580.post-15630725142745580042010-04-18T16:53:00.005+09:002010-04-18T16:56:13.582+09:00debianの時計を合わせる普通はOSをインストールした時にちゃんと設定されはずですが、どういう訳かシステムの時計がずれてきていたので設定方法をメモ。
時計を合わせるにはntpdateというパッケージを使います。
debianではntpdate-debianというコマンドが使えます。
$ sudo apt-get install ntpdate
$ sudo ntpdate-debian
これでNTPサーバに問い合わせて時計を合わせてくれます。
/etc/default/ntpdateファイルを編集すればNTPサーバを変更できます。
ついでにcrontabの設定もしておきます。
$ sudo crontab -e
0 0 1 * * ntpdate-debian
taksatouhttp://www.blogger.com/profile/06653965188181943367noreply@blogger.com0