それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ruby

rubyでWindows(sjis)Zipファイルを文字化けさせずにunzipする。

Windowsで作ったZIPファイルに日本語ファイル名やフォルダを含めると、UTF-8環境では化けます。その逆にUTF-8環境で作ったZIP日本語ファイルはWindowsで化けます。 文字化けさせずに取り出す。 文字化けさせない方法は色々あるがRubyでぱぱっと書くのが一番…

ファイル簡単検索にlocate コマンド。自分だけの検索インデックスを使う。

loccate便利 いままでfind に頼ってましたが、locateを覚えてからはlocateばかり使っています。locate食わず嫌いでした。反省してます。 locateコマンドもファイル検索コマンドです。find・grep/locateの大きな違いは、事前インデックス作成の有無です。loca…

rubyなら日付を連続10日分の日付作るのがアツ−!と言う間です

Rubyがあれば、もうこんな事しなくて良いんです。 d + 60*60*24*i # 秒に直して計算 ruby はDate(日付)がRangeオブジェクトとして使えるのでとても早い 10日分の日付をあっという間に作る。 takuya@host $ ruby -r date -e \ '(Date.parse("2010-02-11")…

MechanizeがHistoryを保存してメモリを食いつぶすのを防ぐ

Mechanizeって便利で、すごく使うのだけれど、履歴がさー履歴がたまるとメモリを食いつぶしました。 Mechanizeでは簡単に防げるようです WWW::Mechanize#max_history で履歴の最大数を指定できます。履歴機能を活用しないという場合の推奨値は 1 です。 agen…

自分のグローバルIPを調べる方法

自分のグローバルIPを調べる方法を考えたがめんどくさかった。 自分のグローバルIPを通知して、ファイルを上手に転送したり、DNS更新したかった。 自分のグローバルIPを調べて共有する方法は幾つか考えられる。 確認クンなどにアクセスする ルーター機器など…

Mechanizeでパースに失敗するHTMLを何とかする。

HTMLの閉じタグが抜けていたり、HTMLの構造がおかしいサイトがある。これをMechanizeすると困ることになる。MechanizeがParseできなくてこまるんです。つまりNokogiriがエラーになったり、Nodeがウマく取れなくてFormのInputが無かったり、有るべきリンクが…

RubyでBasic認証をする(HTTPSアドレスで

ApacheのBasic認証をまとめて設定した、設定が正しいかどうかいちいち手作業でログインするのも面倒だし。rubyを使ってをテストしていた。 open-uriを使ってbasic認証をする #!/usr/bin/ruby require 'rubygems' require 'open-uri' ##とりあえずSSLのチェッ…

rubyでファイルから固有値(ハッシュ)を求める方法。

ファイルの固有値を求めて管理をしておけばe文書法にも対応できるって聞きました。 require 'digest/md5' p Digest::MD5.hexdigest(File.open('ruby-1.8.5.tar.gz','rb').read) ファイルサイズが大きすぎるときは class Digest::Base def self.open(path) ob…

URIモジュールを使わずに、uriからパス以外を取り出す。ruby

uri からパス以外の部分を取り出したい。つまりホスト部分を取り出したい。 http://d.hatena.ne.jp/takuya_1st/2010-11-29/ http://d.hatena.ne.jp/takuya_1st/2010-11-29/p1 から↓ http://d.hatena.ne.jp/takuya_1st/ を取り出したい 一般的なURL::HTTPも扱…

rubyでやってみた。『増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編』まとめ

『増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編』を読んだ。 Javaマルチスレッドはすごいと。Java見直した。がrubyもしゅごい Single Threaded Execution - この橋を渡れるのは、たった一人 Immutable - 壊したくとも、壊せない Guarded S…

Rubyでマルチスレッド 14 #ActiveObject

Rubyで結城浩せんせいのJavaマルチスレッド本 その14 # activeobject rubyで書いた。 長いので折りたたみ #!/usr/bin/env ruby module ActiveObject require "thread" class MethodRequest def initialize( servant,future ) @servant = servant @future =…

Rubyでマルチスレッド 13 #thread specific Storage

Rubyで結城浩せんせいのJavaマルチスレッド本 その13 # thread specific storage スレッド毎の領域 スレッド毎に排他的なストレージ領域。スレッドはそれを使ってるのを知らない。 rubyで実装 Logを書くだけのモノ #!/usr/bin/env ruby # ThreadSpecific S…

Rubyでマルチスレッド 12 #two-phase termination

Rubyで結城浩せんせいのJavaマルチスレッド本 その12 #Two-Phase termination 仕事中のスレッドを止める スレッドに例外を通知する。 フラグ waitしてるかも 例外 どこでキャッチしてるか分からない 2段階の終了 終了リクエスト受付 安全性を考慮して終…

Rubyでマルチスレッド 11 #Future

Rubyで結城浩せんせいのJavaマルチスレッド本 その11 Future 引換券 番号札を持ってお席でお待ちください 重要なのは、「席でお待ちください」ってことで。席で待ってたら届くと言うこと。必要になれば取りに行って待つことも出来るが。。。(balking/guard…

Rubyでマルチスレッド 10 # Worker-Thread

Rubyで結城浩せんせいのJavaマルチスレッド本 その10 Worker-thread worker-thread thread-pool- Background-thread とも呼ばれる woker の役割 仕事が届いたら仕事する。 仕事がなければ、仕事が来るまでまつ。 細かい制御をしてチューニングして使う。 W…

Rubyでマルチスレッド その8 # Read-Write Lock

Rubyで結城浩せんせいのJavaマルチスレッド本 8 # Read-Write Lock 読込中は書かない。 ログファイルのFlushとか、MySQLだとSELECT for UPDATE ってところか。 rubyで書いてみた #!/usr/bin/env ruby require 'thread' # Read Write Lock class ReadWriteLo…

Rubyでマルチスレッド その7# Producer-and-Consumer

Rubyで結城浩せんせいのJavaマルチスレッド本 7# Producer-and-Consumer Producer-and-Consumer 回転寿司だと思えば楽。作る人、食べる人、カウンターテーブル。が別々に仕事をする。 作るひとはどんどん作り 食べる人がどんどん食べる。 テーブルにお寿司…

Rubyでマルチスレッド その6 # Balking

Rubyで結城浩せんせいのJavaマルチスレッド本をやってみる試み、その5 Balking Balkinは待たずに、他の仕事を片付けます。一方でGuarded SuspensionはWaitセットで待つ。Balking は先に進みます。 Guarded Suspensionのこんなところが嫌なので、Balkingパタ…

Rubyでマルチスレッド その5 # Guarded Suspension

Rubyで結城浩せんせいのJavaマルチスレッド本をやってみる試み、その5 Guarded Suspension Guarded Suspensionはガード条件が満たされるまで while (your_trun?) { wait() } で まつ。 2本スレッドで、キューを使う クライアント:リクエストをキューに置…

Rubyでマルチスレッドその4 Immutable

Rubyで結城浩せんせいのJavaマルチスレッド本をやってみる試み、その4 Immutable パターン #/usr/bin/envy ruby #Immutable # 壊れない設計 class PrintPersonThread < Thread def initialize person @person = person block = Proc.new{ while true do put…

Rubyでマルチスレッドその3 Single Thread Execution

結城せんせいの「マルチスレッド本」を参考書にし、これをRubyで解釈する。 Rubyもデザインパターンも両方覚えちゃおうという強欲な試み。 Single Threaded Execution 壊れてしまう例 #!/usr/bin/env ruby #Single Threaded Execution #これは壊れる例 requi…

Rubyマルチスレッドその1

Rubyでマルチスレッドを動かしてみる。 Rubyでスレッドを動かす例 #/usr/bin/env ruby #Threadで動かしてみる puts "スレッドテスト" puts "スレッド作成" t = Thread.new { puts "Thread 開始" sleep 3 puts "Thread 終了" } puts "他スレッド待ち" main_th…

Rubyのスレッド関連の情報まとめ

Rubyのスレッド関連Doc Rubyのスレッド関連の情報リンクをまとめてみた。公式Docも添付ライブラリ・標準ライブラリ・コアと3種類あったりして探すのが面倒。 コア スレッド Ruby スレッド Ruby のスレッドの仕様 スレッドと例外 組み込みクラス Thread libra…

ical 形式について

ical 形式について 参考 http://www.asahi-net.or.jp/~ci5m-nmr/iCal/ref.html http://ja.wikipedia.org/wiki/ICalendar rfc2445形式 日付形式 ISO 8601 Data Elements and Interchange Formate Information Interchange Representation of Dates and Times …

RubyでWindows 共有ファイルへのアクセス

Ruby(ms-win32)からWindows共有ファイルつまり、NASのようなファイルにアクセスするには、 require 'kconv' $KCODE="u" #SMBのファイルにアクセスしてみるテスト path = '//192.168.11.5/共有ドキュメント/test.txt'.tosjis puts path.toutf8 puts open(path…

Ruby標準パッケージでディレクトリ比較を作ってrsyncモドキをする

rubyの標準パッケージの状態でディレクトリ内のファイルの比較を考えた。 rsync的にディレクトリ間のファイルの有無を調べたいと思います。SRCディレクトリとDESTディレクトリのファイル名一覧を取出し、 それ使ってSRCとDESTのファイルの違いを探したいと思…

配列を要素にもつHashについて

久しぶりにRubyを書くと上段のような書き方をしてハマることが多い。Array#inject でHash.new([])をinject試みて失敗する。またハマってしまった。以前はhadoop の reduce で injectを使ったreducer 書いていてハマッてる。ハマり記録みて愕然とした。同じ失…

RubyのGemでインストール済みの一覧を取得する。

基本的なことを忘れた。あはGemでインストール済みパッケージを見る gem listgem list で出てくるよ。一覧取得される。一覧の取得元は ruby -e 'puts $:'でライブラリの検索パスが分かる。 これはこれでめんどくさい。けど使い所を選べば便利。 http://d.hat…

Opera用にMhtファイルを保存する。

HTMLで作成したメモを人に送りたいなと思った。イチイチZipするのも面倒だし。Mht形式で送れば楽だ。そこでMHTを生成するRubyファイルを書いてみた。MhtはOpera生成ファイルを参考にした。Mht作れるが、Operaでしか開けない。あぁ Opera互換のMhtファイルを…

Mechanizeの使い方例。

RubyのMechaizeの使い方をよく忘れるので、メモする。サンプルに図書館を使おうとして、ためにしに岡崎市立図書館を取得してみた。 岡崎市立図書館がFlashとかあり得ないサイトだった。。 まぁサンプル例として。 Mechanize起動 起動〜Basic認証設定〜ファイ…