しょんぼり技術メモ

まいにちがしょんぼり

yyyymmdd形式の日付を含むファイルのうち、欠落している日を探すスクリプト

hoge.yyyymmdd.logのような形式を持つログファイルが大量に手元にあり、そのうち欠落している日を探すという処理が必要になったので、Rubyでちゃちゃっと書きました。 結構あちこちでありそうなケースだと思うんですが、既存のツールの組み合わせで書く方法…

Xiタブレットモニターキャンペーンの回線をアレコレした記録

昨年末にXiタブレットモニターキャンペーンというものがありまして。 「ARROWS Tabをモニターで貸し出すから感想とかを呟いてね。モニターとしての義務を全うしたらその端末あげる。あと2ヶ月目からの使用料から15000円分キャッシュバックするよ」というキャ…

ScientificLinux6でLDAP認証を使ってログインするときの設定

自分用メモ。間違ってたらごめんなさい。 nss-pam-ldapd, pam_ldapパッケージを入れる authconfig-tuiで設定する /etc/pam.d/system-auth の中で出てくるpam_sssをpam_ldapに置き換える 再起動

gnuplotでグラフを表示しているときに使えるショートカットキー

自分用メモ。ウインドウでhを押せばヘルプが出るのでそれを読めば解決するけど。 キー 機能 1〜4 座標表示のフォーマットを変更(?) 5 定規(ruler)表示時の距離を表示するか 6 ショートカットキーのコマンド内容を表示するか 7 図全体のアス比を変更 q 閉じる…

EmacsからYahoo翻訳を使う

国際会議の論文を書いていて、ある程度固まってきたので英訳する作業を始めたものの、いちいち書いてはYahoo翻訳にかけてチェック、書いてはチェックを繰り返すのは非常にめんどくさいので、なんとかならないかと思ってやってみた。・できること Emacsで範囲…

ローソンWeb会員で、他のサービスではログインできるのにローチケのみログインできない場合には、メールアドレスを"+"が含まれていないものに変更すれば良い

タイトルで完結シリーズ。某チケットの抽選予約に申し込むためにローチケ.comに会員登録したものの、ログインできないという問題に直面した。 Pontaを持っているのでローソンWeb会員として登録。パスワードに誤りがないことは、提携している他のサービス(HM…

MessagePack RPC for Rubyのタイムアウト系のエラーについてのメモ

忘れてたので自分用にまとめておく。サーバ側: require 'msgpack/rpc' class MyServer def ping_sync "pong" end def ping_async as = MessagePack::RPC::AsyncResult.new # as.result("pong") as.result("pong at #{Time.now}") return as end end mysvr =…

Rubyで配列に対して空かも知れない配列を追加する時は、事前にempty?でチェックした方が早いが、まとめて追加してから一気にflattenした方が圧倒的に早いが、そんなことするよりconcatした方が早い。

タイトルで完結シリーズ。(ご指摘頂いたArray#concatについて追記しました)ある配列に対して、「空かもしれない配列」を追加していく処理が必要になった。 fruits1 = [:apple, :orange] fruits2 = [] fruits3 = [:grape] fruits_array = [fruits1, fruits2…

MacでGX-DVI/U2AIを使ってDVI接続のモニタをUSB経由で利用する際にはDisplayLink社のページからβドライバをダウンロードすれば良い。回転させる場合にはDisplayRotationMenuを使うと良い。

タイトルで完結シリーズ。MBP13"にDisplayPort経由で30インチモニタを繋ぎ、USB-DVI変換アダプタを使ってさらにもう一枚モニタを繋いでいるのですが、あっさり使えるようにはならないのでメモ。ドライバはBUFFALOには置いてないので、http://displaylink.com…

Rubyでifやcaseで頻繁に評価されるものに対して小手先の工夫をしてもあまり意味がなかった

タイトルで完結シリーズ。ある比較処理を頻繁に実行するとする。その比較対象が、ほとんどある値を取る場合、その値を優先的に評価してやると高速になるんじゃないか?と思い立って実験してみた。linuxのコードに出てくるif(likely(cond))やif(unlikely(cond…

Rubyのcatch句のコストはそこまで安くない

制御構造を適当にやっつけで作るときに(たまに)便利なcatch句のコストは、あまり安いわけではなさそうだ。 以下のベンチマークが妥当かどうかは別として、catchじゃなくてもできる処理ならば、catchを書かずに実現した方がたぶん早い。 ほとんどthrowする…

FuseでQEMUにディスクイメージを提供する場合に、O_DIRECTフラグ付きのリクエストが来てEINVALを返して終了してしまう場合には、-driveオプションでcache=writethroughを指定すると良い

タイトルで完結シリーズ。 fusefsでディスクイメージを提供しているとき、qemuを起動すると"qemu: could not open disk image"と出て即死してしまう。straceすると、O_DIRECTフラグ付きのリクエストが来ているので、どうもそのあたりがクサい。 で、このO_DI…

XenServerでiSCSI上のSRを見失い、no such deviceと言われてしまったときの対応

How to Identify If SCSI Storage Repository has Changed SCSI IDsに書いてあります。 XenServer5.6SP2, 47101pで確認。ちょっとわかりにくいので自分用のメモもかねてまとめておくと: XenServerのコンソールにログインする XenCenterのConsoleから入るな…

UTF-8のBOMを手っ取り早く消す

$ perl -i.bak -p -e 's/\xef\xbb\xbf//' *BOM(0xEF, 0xBB, 0xBF)を消し去る。バイナリファイルが含まれるところで実行するとアレかもしれない。そのときは、末尾のワイルドカードをアレしてください。 元のファイルは、一応.bakっていう拡張子が付いて保存…

SL6.1にRuby 1.9(rpm) + Rails3 環境を作る

Scientific Linux 6.1のslリポジトリにあるRubyは1.8.7なので、自分で1.9のrpmを作ってインストールしてみた。 環境 $ cat /etc/redhat-release Scientific Linux release 6.1 (Carbon) checkinstallのインストール $ git clone http://checkinstall.izto.or…

Drawing horizontal lines in specified range with Gnuplot

to draw horizontal lines with Gnuplot, define a function like this: step(x,from,to,y)=( (from <= x) && (x <= to) ) ? y : 0/0 # draw y=7, horizontal line, in range: 5<=x<=7 plot step(x, 5, 10, 7) points are: gnuplot abandons drawing if NaN …

gnuplotで区間を指定して横線を描きたい

step(x,from,to,y)=( (from <= x) && (x <= to) ) ? y : 0/0 # 5≦x≦10のあいだだけ、y=7の横線を描く plot step(x, 5, 10, 7) 以上。 あそんでみる こんな感じのスクリプト #!/bin/env ruby height = 50 length = 3 str = <

nwdiagで手軽にネットワーク図を作成

感動したのでメモ。環境はMac OS X SnowLeopard/homebrew。 インストール $ brew install python $ /usr/local/share/python/pip install --upgrade distribute $ /usr/local/share/python/pip install pil $ /usr/local/share/python/pip install nwdiag $ …

Intel vProのAMTのRemoteControlで電源のON/OFFをリモートから行う

Intel AMTのSDKは適当に探してダウンロードしておいてください。今回はバージョン6を使用。LinuxでSOAP版の電源操作を行うコマンドはLinux/Intel_AMT/Samples/Soap/RemoteControlにある。 というわけで早速コンパイルしてみる。方法については、Linux/Intel_…

Ruby1.9ではBignumのインクリメントはFixnumのインクリメントに比べて倍ぐらい遅い

タイトルで完結シリーズ。しかも割と「いまさら」ではありますが。システムの稼働中に延々とインクリメントする変数が必要だったので、実際に実験してみた。 先に結果を。 ***** Hello, this is a test benchmark script for Incrementing Integer number. I…

XenServer5でシステム上にゲストOSのディスクイメージを作成した環境でゲストのファイルを吸い出したい

某所で使っているサーバが、地震やら停電やらの影響で死んでしまいました。おおさーばよ しんでしまうとはなさけない そのマシンにはXenServerがインストールしてあり、その上で動作していたゲストOSのファイルにアクセスする必要が出てきました。さて困った…

sambaのパスワードをApacheから使う on CentOS

Apacheで認証をかけたいけど、そのユーザアカウントはsambaと共通にしたい。というシチュエーションがあったので調べてみると、smbuserなる方法があるらしい。というわけで早速使ってみた。…らハマった。記事の環境はGentoo、こちらはCentOS。 下準備 libtdb…

ぼくのTwitterポリシー

ぼくのTwitterポリシー - くだらぬみちくさにっき ---- To waste one’s time on the road might be good, I think. に影響されて。念のため書いておきますが、「個人の見解」です。「こう使え」というものではなく、「こう使っています」というものです。 使…

MessagePack-RPCでバイナリデータを扱うときにUTF-8のままsliceすると死ぬほど遅いのでforce_encodingしよう(Ruby 1.9)

Ruby 1.9から、文字列にそのエンコーディングが含まれるようになった。また、MessagePack-RPCでは、Encoding::ASCII_8BITの文字列を送っても、受け手側ではEncoding::UTF_8になってしまうという仕様がある。 そのため、受け取ったデータをそのままsliceした…

MessagePack-RPCのFutureについての簡単な実験

MessagePack-RPC for Rubyの非同期RPCで使われるFutureについての簡単な実験。実験環境はRuby 1.9.2。 結論を先に: Future.getを複数回呼ぶとどうなるの? → 別に問題ない Future.getはスレッドセーフ? → いいえ。ロックしないと死ぬ。 Future.getを複数回…

MessagePack-RPC for Rubyででかいデータをやりとりするときの性能についての簡単な調査

をやってみた。環境はLinux 2.6.35.6, Core2 Quad Q6600, 4GB RAM. $ ruby --version ruby 1.8.6 (2010-02-05 patchlevel 399) [x86_64-linux] 結果 結果から先に。 $ ruby mprpc-bench.rb 127.0.0.1 12345 10 ********** Local Call ********* 1MB 0.001449…

RubyでWHOIS情報を参照する

Rubyを使ったスクリプトの中で、WHOIS情報を参照したいことがあったので調べてみたところ、Whoisというgemがあるらしい。すばらしい。 gem install whoisでOK。リファレンス等はhttp://www.ruby-whois.org/api/を参考に。 単純に問い合わせたい Whois.whois…

そうだ、DNSを調べよう。

なんかYahooにつながらないネタがHOTなので。 基本 DNSの調査を行うときは、digコマンドが便利です。詳しくはぐぐれ。 $ dig A 調べたいホスト名 @使用するDNSサーバが(Aレコードに対する)基本形です。担当するネームサーバなども知りたいときは、AではなくA…

kvm/RBD(RADOS Block Device) に成功した

長かった…基本的には、wikiを参照。こいつの不正確な情報のせいで苦労したけど コンフィグ テスト用のコンフィグはこんな感じ。ceph1-3全てでMon, MDS, OSDを起動する。RBDだとMDSはいらないかも。 [global] debug ms = 0 [mon] mon data = /data/mon$id deb…

Gmail(に限らず)受信トレイはキレイにしよう

他人のGmailの画面を見ると、案外散らかってたり無造作にされてたりという印象があるので書いてみる。うちのGmailは、3分割されている。画像参照。Gmailには、"Multiple Inboxes"という機能がある(Labs)ので、これを使っている。 (1)受信トレイ 1つ目は、受…