harry’s memorandum

おれおれメモ

ruby

rubyでQRコード生成

ライブラリはたくさんあって何を使えばいいのやら。いくつか試して良さそうなものを。 rqrcode インストール rqrcodeとrqrcode_pngは一緒にいれると便利。 $ gem install rqrcode $ gem install rqrcode_pngrequire 'rubygems' require 'rqrcode' require 'r…

Win32OLEでインストール済みソフトウェア一覧を取得してみたよ

リーマンは時折無駄としか思えない人力作業を強制させられるときがあります。インベントリを人力で調べるなんて拷問ですよ。 ささっとvbsを書いて終わりのつもりだったのですが妙に遅い...半端ではない遅さ。 hostname = "remote_host" set locator = Create…

VirtualBoxのAPIで楽しく仮想化ライフ (1)

周りがマックばかり購入するので、カッとなって Thinkpad X1 を購入しました。まずはUbuntu12.04にVirtualboxを入れて遊んでいます。ほんとSandyBridgeとSSDの速さは恐ろしいものがありますね。AMD信者としてはどうしていいのかわからない気持ちになります。…

単語を数える例のやつ

wordcountの例題は map/reduce でよくでてくるよね。 ruby rubyは便利。 array = %w(foo bar hoge foo foo bar fuga hoge) h = Hash.new(0) array.each {|e| h[e]+=1} p h #=> {"fuga"=>1, "foo"=>3, "hoge"=>2, "bar"=>2} perl perlも便利。初期化しなくて…

いつも忘れるcheckinstall

いつも忘れる。gemのやつは。rpm-buildいつも忘れる。 $ yum install rpm-buildrubygems checkinstall -R ruby setup.rb

フィルムセンターの上映スケジュールをgcalapiでGoogleカレンダーに登録

東京国立近代美術館フィルムセンターという国立映画機関があります。大小の2ホールで映画を上映していたり、映画資料展示や映画関連文献の公開もしていて、映画ファンならかなり楽しめるところです。 今回の特集は「フィルム・コレクションに見るNFCの40年」…

hello world

ゴミですな。 m = ("a"..."z").to_a + ["!","\s"] puts [7,4,11,11,14,-1,22,14,17,11,3,-2].map {|n| m[n]}.join #=>hello world! m = ("a"..."z").to_a + ["!","\s"] [7,11,14,22,17,3].zip([4,11,-1,14,11,-2]){|x,y| print m[x], m[y]} puts #=>hello wo…

LinuxのhostidってIPアドレスから生成されてたらしい

まったくもって無知でした。 LinuxのIPアドレスを変更したらhostidが変わってしまったので、とあるアプリが動かなくなってしまいました。仕事の大先輩に「linuxのhostidはIPアドレスから生成されるから気をつけないと」と中国語なまりで教えて頂きました。こ…

RubyでGoogle Talk

色々できるみたい。 $ sudo gem install xmpp4r Successfully installed xmpp4r-0.5 1 gem installed Installing ri documentation for xmpp4r-0.5... Installing RDoc documentation for xmpp4r-0.5...#!/usr/bin/ruby require 'rubygems' require 'xmpp4r'…

RubyでIP Messanger

IP Messanger のv2.07がリリースされました。なんと6年振の更新だそうです。バルーンで通知してくれたり、ちょっぴりカッコよくなっています。 http://www.forest.impress.co.jp/docs/news/20100421_362762.html Vista/Win7環境の menu 位置修正 UTF-8ログ保…

XenServer5.5でsnapshotをrollback(revert to snapshot)してみる

XenでもXenServerの話。 XenServerは体感ではVMwareよりずっと軽く感じる*1ので、最近はとても愛用しているのですが、XenServer5.5のXenCenterにはスナップショットから元に戻す機能が付いていないので少し不満でした。 調べてみると、どうやらXenServer5.5…

Godでプロセスが落ちたときにgmailで通知する方法

書いたコードをデーモンとして動かすときに、手抜きしてnohupでバックジョブに投げていたんですが、id:kenkitiiさんに 「rubyにGodという便利なものがあるよ」と教えてくれました。 このGodってどういうもの? 通常のプログラムをデーモンとして動かせます。…

Xen - Ruby interface to the Xen API を使ってみる

Xenを操作するために、virt-manager, xmコマンド, virsh でも特に不満はないのですが、Xen Management APIというのがあるそうなので使ってみたくなりました。 xenライブラリをインストール gem install xen Successfully installed xen-0.1.2.1 1 gem instal…

ruby の googlereaderライブラリ で Google Reader API を使ってみた

結構便利。 インストール 最初はgooglereaderライブラリをインストール。 $ sudo gem install googlereader 認証 これだけでOK. これはgooglreaderライブラリじゃなくて一緒にインストールしたgooglebaseライブラリの機能ですね。 require 'rubygems' requir…

Tokyo Cabinet を触りだけ使ってみた

mixi Engineers’ Blog をみてて、Tokyo Cabinet すげえと思ったので少し触ってみた備忘録。 開発環境 CentOS5.4 x86_64 Tokyo Cabinetインストール rpmforge を設定してなかったら設定。 $ wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmfor…

rubyでhttpプロトコルをのぞいてsessionidを取得してみる

ruby/pcapというlibpcapを扱う便利なライブラリをみつけた。 http://www.goto.info.waseda.ac.jp/~fukusima/ruby/pcap-j.html これは便利だ。これでsessionidをとっ捕まえてなにかを自動化できそうだ。 ruby/pcapインストール $ sudo yum install libpcap-de…

rubyのwin32oleでディスク情報チェック

最近更新さぼっているので、とりあえずwin32oleでなんか書いておこう。 require 'win32ole' require 'pp' def diskinfo host = "." service = WIN32OLE.connect("winmgmts://#{host}/root/cimv2") disk = service.ExecQuery("Select * from Win32_LogicalDis…

rubyでtwitterってできるのかな

簡単にできるみたいですね。でも便利だけどtwitterをいまいち楽しめないオールドタイプの自分が悲しい。。まずはgemでインストール。依存関係のgemがすげー。 $ sudo gem install twitter When you HTTParty, you must party hard! Successfully installed r…

rubyでWindowsのIPアドレスを変更してみる

vbsのサンプルがたくさんあるのでそれを参考にWIN32OLEで書いてみました。 書いたのですが、vbのErrオブジェクトをWIN32OLEでどうやって使えばいいのかわからない。。。まあいいか。 #!/usr/bin/ruby require 'win32ole' require 'optparse' require 'pp' # …

ruby で pstree

rubyで書く簡易版pstreeはこんな感じかな。 class PsTree def initialize @line = "-" @space = " " @table = Hash.new{|h,k| h[k] = []} proc_dat end def proc_dat Dir.glob("/proc/[0-9]*") {|dir| stat = stat_open("#{dir}/stat") pid = stat[0]; ppid …

rubyでプログレスバーの備忘録

前にid:kenkitiiさんとプログレスバーで盛り上がったので忘れないように備忘録。簡単なサンプル。 #!/usr/bin/ruby class Progress def initialize(word = ".") @cnt = 0 @space = " " @word = word end def bar(interval = 0.05) sleep interval @cnt += 1 …

ruby-mp3infoを使ってmp3をIDv1からIDv2に変換してみた

圧縮音楽が気がついたら100GBこしていました。1997年ぐらいからアルバムをしこしこエンコードしていたのが懐かしいです。Pentium2 233Mhzだと1時間のアルバムはエンコードに1時間かかるんだもんな。 というので、古いIDv1タグのMP3が数多く残っていたのでIDv…

rubyでプロセスの優先度を普通に変更

前回のように特権でプロセスの優先度を変更するんじゃなくて、普通に優先度を変更する場合、rubyだとすごく簡単。 require 'win32ole' #LOW, NORMAL,HIGH, REALTIME, ABOVENORMAL,BELOW_NORMAL BELOW_NORMAL = 16384 strComputer = '.' def usage puts "#{__…

Xenのディスクイメージファイルを拡張してみた

Xenのディスクイメージファイルを拡張してみました。]]Ubuntu Japan[[ にXenのディスクイメージの拡張方法が書いてあったので試してみたのですが、なかなかうまくいきませんでした。 # cd /etc/xen/images # mv sarge-root.img sarge-root.img.old # dd if=/…

Win32OLEをつかってWindowsのサービスをリモートから起動停止してみる

Win32OLEがすごく面白かったのでWindowsのサービスをリモートから起動停止するコードを書いてみました。 Win32OLEを使ったrubyのコード require 'win32ole' すれば後はvbsで書くのとあまりかわりはありません。vbsと違い強力なrubyのHashやArrayやイテレータ…

MySQL性能テストのためのゴミデータ作成

mysqlに1000万件のゴミデータをインサートするために、ゴミコードを書いた。 環境 os:centos5.2(xen-domain-u) memory:2GB ruby/mysqlインストール configを指定してインストールします。 $ sudo yum install ruby ruby-devel mysql-server mysql-devel mysq…

ネットワーク上にある仮想マシンを探す方法

仮想マシンがたくさん増えるとその管理も大変になります。仮想化を推し進めればコストダウンになると思いきや、単純にサーバの数が増えるので管理コストが増えしまいます。いいかげんな開発環境によっては勝手にIPを振り仮想マシンをボコボコ起動させる人も…

Xen Domain-U の UUIDとMACアドレス

xenのdomain-uを複製したあと、定義ファイルのUUIDとMACアドレスを手でコリコリ書くのはバカっぽいので ユニークなUUIDとMACアドレスを生成するゴミプロ。 #!/usr/bin/ruby # vender-id 00:16:3e mac_address = ["00", "16", "3e"] 3.times {|n| mac_address …

指定した URL にある画像を取得

dropboxに何も入れておらず寂しくなったので、WallPaperをダウンロードして置いてみたくなりました。 とりあえず、書いてみた。ruby foo.rb でOK. コード require 'rubygems' require 'hpricot' require 'open-uri' url = ARGV[0] class PhotoGet def initia…

ruby-graphviz で遊んでみる

ruby-graphvizで遊んでみました。 インストール サーバはCentOS5.2 x86_64で。 先にYumリポジトリを追加*1 $ cd /etc/yum.repos.d/ $ sudo wget http://www.graphviz.org/graphviz-rhel.repo $ sudo yum list 必要なものをインストール $ sudo yum install g…

Nokogiriが速いそうです

NokogiriというXML/HTMLパーサが速いそうです。 http://nokogiri.rubyforge.org/nokogiri/ Nokogiri parses and searches XML/HTML faster than Hpricot, and also has correctly implemented CSS3 selector support as well as XPath support. Hpricotより…

Yahooのトランジットから運賃を取得する

GoogleでもYahooでも路線情報は便利なのですが、運賃を教えてくれるAPIってないから、乱暴だけどURIから情報を無理やり取るようにしてみた。 必要なライブラリをインストール とりあえずURIいじる関係のものをインストール $ sudo gem install hoe hpricot m…

ping.rb

少しだけサーバの死活監視をしたいんだけど、nagiosなどのツールを設定するのも面倒なので、 rubyでicmpって簡単にできるのかな?と検索したところping.rbを発見。標準にあるみたいですね。 require 'ping' Ping.pingecho "google.com", 10, 80 pingのサーバ…

optparse の使い方

optparseとは? コマンドラインのオプション解析をするものです。 C++とかperlとかShellなどにある、コマンドオプション解析の getopt、それのruby版*1です。 チュートリアルが非常にわかりやすい。 http://www.ruby-lang.org/ja/man/html/optparse_A5C1A5E5…

win32-eventlog

win32utilsを使うと色々できる。 イベントログの取得。エラーログのみプリント。 require "win32/eventlog" include Win32 handle = EventLog.open() handle.total_records # e.g. 916 handle.oldest_record_number # e.g. 1 # Read through every entry, in…

はてなの質問に答えてみる

FTPソフトに関する質問です。 フォルダの中に11万のファイルがあり 容量は460MBです。 サーバーを移転するためにこのフォルダをダウンロードしたいのですが、 容量が大きいためかダウンロードすることができません。http://q.hatena.ne.jp/1221766039 ファ…

UNIXのユーザ作成

ユーザ作成と一時的使用のパスワードを発行するのが面倒なので、自動生成するスクリプトの作業履歴。 そのうちexpireとか機能追加しないと。 #!/usr/bin/ruby require 'etc' # salt def getRandomString (length = 15) source=("a".."z").to_a + ("A".."Z").…

rubyライブラリの Gruff で遊ぶ

きれいなグラフを簡単に作成できる、rubyライブラリの Gruffを使ってみました。 ライブラリのインストール 詳しいサイトを参考にインストール。 http://kazuhiro.ty.land.to/blog/2007/01/gruff_with_ruby.html サンプルデータ とりあえず、データはpostfix…

rubyでssh(Net::SSH) - 2

リモートサーバに接続して色々できるということなので、nagiosでリモートサーバのメモリ監視をする簡単なpluginを書いてみた。 ここでのsshの認証はパスワードが生になっているけど、運用で使うには公開鍵認証にしないとね。 #!/usr/bin/env ruby require 'n…

rubyでssh(Net::SSH)

telnetやssh,ftpなど対話的にコマンドを自動実行するのに、expectやteratermマクロなどを使っていたのですが、rubyにnet-sshというライブラリがあったので、試してみました。 gemでnet-sshをインストール まずはgemで必要なライブラリをインストールします。…