5月092012
2
newgemで生成したgemのテンプレートに改行コードが\r\nのものと\nのものが混じっているのが気持ち悪いので、全部\nに統一した。
find * | xargs -n1 ruby -e 'lines = open(ARGV[0]).read.gsub(/\r\n/, "\n"); open(ARGV[0],"w+").write lines'
実行したディレクトリの中のファイルの改行コードが\nになる。
newgemで生成したgemのテンプレートに改行コードが\r\nのものと\nのものが混じっているのが気持ち悪いので、全部\nに統一した。
find * | xargs -n1 ruby -e 'lines = open(ARGV[0]).read.gsub(/\r\n/, "\n"); open(ARGV[0],"w+").write lines'
とある環境でbundle installしてsystemにインストールされたrubygemを使う様にしたら、Bundler.requireがエラー出すようになった。
bundler-1.1.3/lib/bundler/runtime.rb:77:in `require': private method `gsub' called for nil:NilClass (NoMethodError)
bundle install --path gems
source :rubygemsバージョン指定ができる。
gem 'sinatra', '>=1.3'
gem 'twitter'
gem 'oauth', '0.4.5'
gem 'json'
bundle installrubygemsに公開されていないgitリポジトリを指定したりもできるし、一発で全てのgemがインストールできるので開発環境から本番環境にデプロイするのに便利。
require 'rubygems'これでGemfileに書かれたgemがrequireされる。
require 'bundler/setup'
Bundler.require
require 'yaml'
tmp_cacheというgemを作った。
■インストール
gem install tmp_cache
#!/usr/bin/env rubyTmpCacheはグローバルにどこからでも読めるので便利
require 'rubygems'
require 'tmp_cache'
TmpCache.set('name', 'shokai', 60) # expire 60 sec
puts TmpCache.get('name') # => 'shokai'
sleep 61
puts TmpCache.get('name') # => nil
#/usr/bin/env ruby
require 'rubygems'
require 'open-uri'
require 'tmp_cache'
def get_page(url, expire=1200)
TmpCache.get(url) || TmpCache.set(url, open(url).read, expire)
end
url = 'http://shokai.org'
puts get_page(url)
puts get_page(url) # 2回目はcacheから読まれる
Twitterをterminalで見ていると、ごく稀に変な文字が入っているtweetがあって、それがUTF-8-MACだとgeta6に教わった。
Macだと「ぱぴぷぺぽ」など一部の日本語をファイル名にすると変な事が起こるのだが、それの原因がUTF-8-MACらしい。
そういう文字をDBに保存するとのちのち良くないので、Rubyで変換した。
Iconv使ったら簡単だった。
■例
touch ぱぴぷぺぽとなる。
echo は<309a>ひ<309a>ふ<309a>へ<309a>ほ<309a>
brew install iconv
gem install iconv
require 'rubygems'
require 'iconv'
ARGF.each do |line|
puts line
puts Iconv.iconv("UTF-8", "UTF-8-MAC", line)
end
touch ぱぴぷぺぽ結果
ls | ruby -Ku convert-macutf.rb
convert-macutf.rb
convert-macutf.rb
ぱÿぴÿぷÿぺÿぽÿ
ぱぴぷぺぽ
ls | iconv -f UTF-8-MAC -t UTF-8
半年ぐらい前に作って、書くのを完全に忘れてた。
Skype Botの類が簡単に作れるようになるし、スマホの重いSkypeクライアント起動しなくてもチャット読めたりしてなかなか便利です。skype-socket-gatewayは捨てましょう。
Mac版とLinux版がある。Mac版はchatの読み書きができるけど、Linux版はAPIがよくわからなくて書き込みしかできない。
自分のプログラム <--(HTTP)--> Skype-Gateway <--(AppleScript)--> Skype.appという感じで通信する。
curl -d 'hello!!' http://localhost:8787これでchatにhello!!と投稿される。