実行したディレクトリ内の"."で始まるファイル・ディレクトリのシンボリックリンクを
ホームディレクトリ以下に作ります
RUBY:
-
Dir.glob('*', File::FNM_DOTMATCH){|f|
-
if f =~ /^\.\w+/
-
s = File.symlink(File.expand_path(f), File.expand_path("~/#{f}"))
-
puts "#{f} OK" if s == 0
-
end
-
}
File.globの第2引数にFile::FNM_DOTMATCHで隠しファイルがマッチするようになります
これでdropboxに置いてるLinux用設定ファイルを一括でインストール出来るようになりました
linux, ruby
ubuntu9.10
BASH:
-
sudo aptitude install memcached
-
sudo gem install memcache-client system_timer
gemのmemcacheは入れない(入れてたらuninstall)
使い方
RUBY:
-
require 'rubygems'
-
require 'memcache'
-
-
CACHE = MemCache.new 'localhost:11211', :namespace => 'hoge'
-
CACHE['cached'] = 'value'
-
p CACHE['cached']
memcached, ruby
gmailはssl必須なので面倒かと思ったのですが、意外と簡単でした
まずは以下のライブラリを入れましょう
#以下はruby1.8系の場合. ruby1.9系はsmtpがssl対応してるのでtlsmailは要りません
TEXT:
-
sudo gem install tmail tlsmail
tmailはメールをparse、tlsmailはsmtpのssl化をしてくれます
RUBY:
-
require 'rubygems'
-
require 'tmail'
-
require 'tlsmail'
-
require 'net/smtp'
-
require 'net/pop'
-
require 'kconv'
-
-
mail = TMail::Mail.new
-
mail.to = 'recieve@some.domain'
-
mail.from = 'your@gmail.com'
-
mail.subject = '件名'.tojis
-
mail.date = Time.now
-
mail.mime_version = '1.0'
-
mail.set_content_type 'text', 'plain', {'charset => 'iso-2022-jp''}
-
mail.body = 'うんたらかんたら'.tojis
-
Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
-
# port = 587はtlsの場合. ruby1.9系でenable_sslしている場合はport = 465になると思われます
-
Net::SMTP.start('smtp.gmail.com', 587, 'localhost.localdomain',
-
'your@gmail.com', 'your_gmail_password') do |smtp|
-
smtp.sendmail(mail.encoded, mail.from, mail.to)
-
puts 'send mail.'
-
end
-
-
Net::POP3.enable_ssl(OpenSSL::SSL::VERIFY_NONE)
-
Net::POP3.start('pop.gmail.com', 995, 'your@gmail.com',
-
'your_gmail_password') do |pop|
-
unless pop.mails.empty?
-
pop.mails.each do |m|
-
mail = TMail::Mail.parse(m.pop)
-
# toutf8はterminalなんかで表示する場合. windowsならtosjis
-
puts "#{mail.from}:[#{mail.subject}] #{mail.body.toutf8}"
-
end
-
end
-
end
マルチバイト文字が入るところには忘れずにtojisしないと文字化けします
ruby
今までキャプチャにはgyamblr(矩形選択してtumblrにアップ)というソフトを使っていたのですが、
Vista64bitでは動きませんでした(単にtumblr側の仕様変更かもしれませんが)
最新版は2008年のものなのでこのソフトはあきらめ、別の方法を採りました
今回は矩形選択可能なキャプチャソフトとrubyスクリプトでキャプチャするだけで自動的にファイルをアップロードするようにしました
事前にflickrのAPI認証を行ってトークンキーを書き出しておきます(flickr.dat)
詳細はrflickrに同梱のサンプルを見てください
今回使用したスクリプトはこちら
説明は必要ないかと思いますが、このスクリプトのあるフォルダを監視して拡張子がjpe?gかpngのファイルがあったらアップロードし、完了したら削除します
RUBY:
-
#flickr_uploader.rb
-
require 'rubygems'
-
require 'flickr'
-
-
flickr = Flickr.new('flickr.dat',
-
API_KEY,
-
SECRET
-
)
-
-
while(1)
-
Dir.glob('*.{jpg,jpeg,png}').each do |f|
-
begin
-
flickr.photos.upload.upload_file(f, f)
-
puts "#{Time.now} upload success #{f}"
-
File.delete('./' + f)
-
rescue
-
puts "#{Time.now} error raised"
-
end
-
end
-
sleep 10
-
end
[Tips] WindowsやLinuxで標準ブラウザを開く方法 - tetralabo
ここの方法でアップロードしたらブラウザを開くようにしてもいいかもしれません
で、Linuxだと問題なくこいつを&つけてバックグラウンドで動かせばいいのですが(Linuxはキャプチャソフトのほうが問題?)、
windowsだとrubyスクリプトをバックグラウンド(ウィンドウのない状態)で動かす方法がなく(?)、
仕方なくexerb(rubyスクリプトをexeで書き出す)を使うことにしました
今回一番難しかったのはexerbでexeを書き出すことです
flickrの依存でmimeというgemも一緒に入るのですが、これのmime/types.rb.dataというファイルが拡張子がrbじゃないせいかexerbで読み込まれず、
仕方なくmime側を直接書き換えてtypes.rbの中にtypes.rb.dataを追記しました;
これで、
ActiveScriptRubyでruby環境を構築している場合、コマンドプロンプトから
mkexy flickr_uploader.rb
Ctrl+C(スクリプトを終了させる)
exerb -c gui flickr_uploader.exy <- rbじゃないので注意
でflickr_uploader.exeというファイルが出力されます
こいつはウィンドウも何も持たず、キー操作を受け付けないのでタスクマネージャから終了する必要があります
ちなみに矩形選択可能なキャプチャソフトはWinShotを使っています
ruby, windows