2011-01-01から1年間の記事一覧

curlでbasic認証を通る

http://curb.rubyforge.org/classes/Curl/Easy.html open(out_fname, 'w+') do |out| Curl::Easy.perform(url) do |easy| easy.http_auth_types = [:basic, :digest] easy.username = 'shokai' easy.password = 'homuhomu' easy.on_body do |data| out.print…

ダウンロード速度が遅かったらやめる

http://curb.rubyforge.org/ Ruby+Curlで大きなファイルをダウンロードしつつ、速度を監視して遅かったら切断する。 ダウンロード速度はだんだん上がってくるものなので、開始後しばらくは遅くても切断しないようにした。 普通にeasy performしても大量のwar…

nまでの素数を求める

みょうにシンプルにできたので書いておく ruby -e 'p 2.upto(ARGV[0].to_i).to_a.delete_if{|i| 2.upto(i/2).to_a.detect{|j|i%j == 0} }' 2000[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103…

mecabインストール

sudo apt-get install mecab-ipadic-utf8 mecab Rubyバインディングはあってもあんまり意味ない気がするので、使わないでおこうmecab-split-term.rb #!/usr/bin/env ruby def mecab_parse(str) `echo '#{str}' | mecab`.split(/[\r\n]/).map{|i| i.split(/\t…

openssl1.0が落ちる

Rubyを入れなおした直後からこういうエラーがでるようになった openssl/ssl-internal.rb:30: [BUG] Segmentation fault openssl1.0とリンクしたRubyをビルドしてしまうとこうなるらしい。 http://www.cozmixng.org/~w3ml/index.rb/rabbit-shockers/msg/793Ma…

node.jsとcoffee-scriptインストール

cd ~ git clone https://github.com/creationix/nvm.git ~/.nvm . ~/.nvm/nvm.sh nvm install v0.6.2 nvm alias default v0.6.2[[ -s "$HOME/.nvm/nvm.sh" ]] && source "$HOME/.nvm/nvm.sh" export NODE_PATH=/usr/local/lib/node_modules:$HOME/node_modul…

mongoidで"db_name must be a string or symbol (TypeError)"

sinatra+mongoidで、 http://mongoid.org/docs/installation/configuration.html にあるようにmongoid.ymlを作って Mongoid.load!("path/to/your/mongoid.yml") で読み込ませて、modelをnewした時点で"db_name must be a string or symbol (TypeError)"が起…

catしきれない時はxargsを使う

booksディレクトリ下の*.txtを全て標準出力経由でrubyのプログラムに渡したい時 cat books/*.txt | nkf -u | ruby -Ku make_dict.rb > dict.txt これでいいのだが、ファイルが多いと "argument list too long" と言われてしまう。 xargsとfindを使ったらでき…

Macのapache+passenger+sinatra環境でcoffee-scriptを使う

この、sinatraでcoffee-scriptを使ってるアプリをMac(Leopard)のapache2で動かす。 https://github.com/shokai/sinatra-template まずコーヒーをいれる brew install coffee-script gem install coffee-script which coffeenode等も入る。これで、自分でruby…

LaTeXフォーマットがshift_jisなのでutf8に変換した

brew install nkf ruby convert_utf8.rb /path/to/source /path/to/dest convert_utf8.rb #!/usr/bin/env ruby if ARGV.size < 2 STDERR.puts "ruby #{$0.split(/\//).last} /path/to/source /path/to/dest" exit 1 end src = ARGV.shift dest = ARGV.shift …

あまりおぼえていない

3つぐらいの話がつながってた気がする

memcached gemインストール

gem install memcached すると rlibmemcached_wrap.c:13285: error: ‘SASL_OK’ undeclared (first use in this function)というエラーでビルドできない libsasl2を入れたら通った sudo apt-get install libsasl2-dev libmemcached-dev libmemcache-dev gem i…

Androidの端末IDを作る

欲しいもの Android端末を識別したい ANDROID_IDという端末固有IDは使いたくない SIMのIDも使いたくない 機種変した時も移行させるとかめんどそう 他のアプリも使っているだろうし 変えれないと、ID漏れた時にセキュリティの人がトマホーク持って襲ってきそ…

http-post parameterをそのまま取る

post '/' do p env['rack.request.form_vars'] end postした値のname=shokai&location=hogeみたいなのをkey=valueにparseせずにそのまま取り出して使いたい時に便利 curl -d 'こういうのがそのまま渡せる' http://localhost:8080/

UDP

UDPSocket.openすると適当に50000番台の開いているportにbindされる eventmachineでopen_datagram_socketする時は、自分で開いているportを指定する sender.rb #!/usr/bin/env ruby require 'socket' sock = UDPSocket.open loop do sock.send(Time.now.to_s…

jsonのparse

jsで JSON.stringify({host:"shokai.org", port:8080}) すると "{"host":"shokai.org","port":8080}" になる これをJavaで import org.json.JSONObject; JSONObject json = new JSONObject(data); json.getString("host"); json.getInt("port"); parseできる

JavaのThread

Thereadをそのまま使うか、implements Runnableかextends Threadするかの3通りがある。 public class ThreadTest{ private class CountThread implements Runnable{ private int count; public CountThread(int count){ this.count = count; } public void r…

JavaのSocketとThread

試行錯誤の残骸。 テキストで行区切りで受信する毎に受信イベントが発生する イベントはlistenerで登録する 送信もMainスレッドと別で回せる Runnable interfaceに関数を詰めて渡せるのは便利だった ClientSample.java import java.io.*; import java.net.So…

JRubyでsocket client

Javaのsocketでclientを作りたくて、どんなんだっけと思ってJRubyでjava.net.Socketを使ってみた #!/usr/bin/env jruby require 'rubygems' require 'eventmachine' require 'ArgsParser' require 'java' import 'java.io.BufferedReader' import 'java.io.I…

マウスサーバー

JRubyで起動して、telnet localhost 5000で接続して 50,100 とか入力するとマウスが動く #!/usr/bin/env jruby ## telnet localhost 5000 and put "50,100" require 'java' import 'java.awt.Robot' require 'rubygems' require 'eventmachine' PORT = 5000 …

マウスを動かす

プログラムでマウスを指定した座標に移動させる方法 | OKWavejava.awt.Robot.mouseMove()を使うと動かせる #!/usr/bin/env jruby require 'java' import 'java.awt.Robot' r = Robot.new for i in 0...1024 do r.mouse_move(i, (i*0.6).to_i) sleep 0.05 end…

bookscanのチューニング後の本の名前を変更する

kindle4_本の名前.pdf という名前が並んでいると見づらいので、 kindle4/本の名前_kindle4.pdf にする。 #!/usr/bin/env ruby dir = '/home/sho/share/books' pattern = /^(ipad|kindle\d|iphone4)_(.+)\.(.+)$/ files = Dir.glob(dir+'/*/*.pdf').map{|f| {…

別サイトもwebviewで開く

webviewで開いたページからredirectされたり、linkを押して移動した時にブラウザが開いてしまわないようにする webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadU…

Ree1.8.7をLionにインストールする

export CC=/usr/bin/gcc-4.2 rvm install ree-1.8.7 CCのpath通しておかないとビルド失敗する。 Cant install Ruby Enterprise Edition with RVM on OSX Lion - Stack Overflow

gemspecの日付がおかしい

system gemにmongoid2.2.0をインストールした rvm use system sudo gem install mongoid で、入ってるか調べたら gem search mongoid 入ってなかった。 Invalid gemspec in [/usr/lib/ruby/gems/1.8/specifications/mongoid-2.2.0.gemspec]: invalid date fo…

エラー

status 404 @mes = {:error => 'not found'}.to_json すぐ処理終わらせてレスポンス返したい時は throw(:halt, [404, {:error => 'not found'}.to_json]) よく忘れる

Array.filter

はてブのタグみたいな記法をparseしたかった マツモティウスが教えてくれた "[aa][bbb][てすと]".split(/[\[\]]/) ["", "aa", "", "bbb", "", "てすと", ""]空文字列が入る filter使ったら消せた。 "[aa][bbb][てすと]".split(/[\[\]]/).filter(function(tag…

zsh-historyが巨大になってterminalの起動が遅くなってた

最近screenで新しいsessionを開始したりすると、%がでた後入力可能になるまで数秒待たされるようになってたhistoryの小さなファイルが大量にできていた 削除した rm ~/.zsh-history.*

パーティションサイズを変える

LionにしたらMacbookProのHDDの容量が足りなくなってきたので、bootcampのwindowsを消した。 いつもどおり/Applications/Utilities/ディスクユーティリティ.appでwindowsパーティションを消した。Macのパーティションを広げようとしたら「ディスクの検証に失…

TimeMachineのローカルスナップショットを切る

しゃおさんに教えてもらった http://www.macotakara.jp/blog/index.php?ID=13565 sudo tmutil disablelocal 復活はenable sudo tmutil enablelocal