- blogs:
- cles::blog
Ruby で任意精度の計算をする
ruby
programming ちょいと任意精度で計算したい用事ができたので、 Ruby で簡単なスクリプトを書いてやっつけました。
忘れないうちにやり方をメモ。基本的には BigDecimal*1 を使えばいいみたいです。
div に有効桁数を渡してあげると、こんな感じで任意精度の計算が出来ます。
ØMQ ( zeromq ) 事始め
zeromq
ruby
mom ØMQ がちょっと面白そうだったので、サンプルを書いて動作確認してみました。
MQ という名前がついているので MOM の一種かと思うのですが、ちょっしたキューの機能はあるものの、メッセージの永続化やトランザクション機能を持っていないので、下記の解説にもあるとおり使いやすいソケットライブラリと考えた方が良さそうです。
The Intelligent Transport Layer - zeromq
ØMQ \zeromq\:
Ø The socket library that acts as a concurrency framework.
Ø Faster than TCP, for clustered products and supercomputing.
Ø Carries messages across inproc, IPC, TCP, and multicast.
Ø Connect N-to-N via fanout, pubsub, pipeline, request-reply.
Ø Asynch I/O for scalable multicore message-passing apps.
Ø Large and active open source community.
Ø 30+ languages including C, C++, Java, .NET, Python.
Ø Most OSes including Linux, Windows, OS X.
Ø LGPL free software with full commercial support from iMatix.
以下、動作確認メモ。
[ØMQ ( zeromq ) 事始め の続きを読む]
gem が起動出来なくてハマる
scientificlinux
ruby SL6 を minimal install して rbenv の環境を作ってみたら ruby 1.9.3-p0 の gem が下記のようなあまり見たことがないエラーを吐くので困ってしまいました。
とりあえず同じような問題を解決した例*1を見つけたので、これを参考にyumで以下のライブラリ群をインストール。
これで無事、起動できるようになりました。
rbenv で複数のrubyをインストールして切り換える
ruby Ruby はバージョンによって微妙に挙動が違ったりするので、複数のバージョンを入れて切り換えてテストする必要があるときにはバージョンごとに VM で環境構築をしていました。最近、いろいろ調べてみたところ rbenv というツールを使えば同じマシンに ruby を複数インストールして切り換えて使うことができるようなのでちょっとインストールに挑戦してみました。
インストールしたのは、 rbenv と ruby-build の2つで、環境は CentOS 5.x 系です。
以下、インストールメモ。
[rbenv で複数のrubyをインストールして切り換える の続きを読む]
動かしながら Ruby が学べる 「Ruby Monk」
ruby
programming
courseware RubyMonkというサイトが面白そうなのでメモ。
ブラウザ上でインタラクティブに Ruby が学べる「Ruby Monk」 - インターネットコム
似たようなサービスが最近増えてきましたな。どちらにしろプログラミングは一般常識として必須なんじゃないか、と思うぐらいなのでご紹介。 Ruby Monk では、ブラウザ上で Ruby を勉強していくことができる。説明があって、お題があるので、それにコードで回答していけば OK だ。画面上部には大きく「あと○○問!」とあるので進捗がわかりやすいのがポイントだ。
そろそろ Ruby でも…と思っている人はいかがでしょ。
Ruby を対象として Codecademy や Eloquent JavaScript: A Modern Introduction to Programmingと同じようなスタイルの、チュートリアル形式でプログラムを動かしながら勉強していくスタイルですね。
こういうサイトがどんどん出てきてる気がしますが、こういう教育スタイルが最近はやりなんでしょうか。
Ruby のライセンスが GPLv2 + Ruby's から BSD + Ruby's へ
ruby
licence 今回リリースされた Ruby 1.9.3 のライセンスが変更されているようなのでメモ。
Ruby 1.9.3登場 - ライセンスがGPLv2からBSDライセンスへ変更 | エンタープライズ | マイナビニュース
Ruby 1.9.3は基本的に1.9.2の改善バージョンだが、ライセンスが変更された点が注目される。それまでRubyはRubyライセンスとGPLv2のデュアルライセンスのもとで提供されていた。今回、GPLv2が2条項のBSDライセンスへ変更された。BSDライセンスは大きく4条項、3条項、2条項がある。4条項のBSDライセンスがオリジナルのBSDライセンスで、ここから宣伝条項を排除したライセンスが3条項BSDライセンス、または修正BSDライセンスと呼ばれている。ここからさらに条項を減らしたライセンスを2条項BSDライセンスになる(最近ではこの2条項BSDライセンスを指してFreeBSDライセンスと表記するケースもある)。
上記の記事だとタイトルにデュアルライセンスと書いてないので分かりにくいのですが、GPLv2 と Ruby ライセンスのデュアルライセンスから、二条項 BSD ライセンスと Ruby ライセンスのデュアルライセンスに変更になったということですね。組み込み用途とか考えるとGPLだと縛りがきつすぎるので、BSDL を採用せざるを得ないということなんでしょうかね。
[Ruby のライセンスが GPLv2 + Ruby's から BSD + Ruby's へ の続きを読む]
Java から MSMQ を使う
java
mom
ruby おそらくこういう事をやろうという人がいないのだろうと思いますが、ググっても情報が出てきません。やりたいのは以前に書いた「Ruby から MSMQ を使う」「JRuby と IronRuby と Ruby-mingw32 のスレッド実装の違い」のあわせ技のような感じなのですが、意外と時間がかかってしまいました。
大まかな話としては Java から COM を呼び出せれば目標達成なわけなので、JRubyも使っていると思っていたJACOBというライブラリを使ってみました。
JACOB - Java COM Bridge | Download JACOB - Java COM Bridge software for free at SourceForge.net
JACOB is a JAVA-COM Bridge that allows you to call COM Automation components from Java. It uses JNI to make native calls to the COM libraries. JACOB runs on x86 and x64 environments supporting 32 bit and 64 bit JVMs
これで最低限のことはできるのですが、どうしても既存のAPIだけでは定数が名前で呼び出せません。最初はちょっとダサいけど、ライブラリの制限なので仕方ないかなーと思いましたが、よくよく考えたら jruby-win32ole は WIN32OLE::const_load で定数取れてるじゃないかということに気づいたので、じゃあそのの実装はどうなってるんだろうと調べ始めてしまったのが、運の尽きでした。
[Java から MSMQ を使う の続きを読む]
Ruby の DateTime で時間の計算をする
ruby Ruby の DateTime クラスは DateTime.now + 1 のようにすると1日分日付をプラスできるようになっているのですが、これを1時間単位で上手に計算する方法がないかと思っていろいろ調べてみたところ、Rational を使うと上手くできるというエントリを見つけたのでメモ。
DateTime に月、日、時、分、秒を足す。 - こせきの技術日記
DateTimeに秒を足す方法がなかなか見つからなくて苦労した。結局ActiveSupportのソースから探した。
Rationalを足せば良い。
下記を見ると Float だと誤差が出てしまうような場合でもきちんと計算できているのが確認できると思います。
Rational なんてこれまでほとんど使ったことがないクラスなんですが、こんな使い方をするためのクラスなんですね。
Ruby 1.9.2 から $LOAD_PATH にカレントディレクトリが入っていない
ruby 久しぶりに新しいマシンにRubyをインストールして、テスト用のプログラムを起動してみたらエラーを吐いてしまいました。旧マシンは1.9.2p0 [i386-mingw32]、新しいマシンは1.9.2p290 [i386-mingw32] です。どうも自作のライブラリのロードに失敗している(ファイルが見つからないと言っている)ようなので、試しにスクリプトの最初に下記を追加してみたところ動作するようになりました。どうやら$LOAD_PATHにカレントディレクトリが含まれていないのが原因のようです。
いろいろ調べてみると同じようなところでハマった人のエントリを発見。
Ruby 1.9.2から$LOAD_PATHにカレントディレクトリが含まれなくなった - ぬいぐるみライフ(仮)
タイトルの通り,Ruby 1.9.2から$LOAD_PATHにカレントディレクトリが含まれなくなった($:も同様).この変更により,以下のような条件でrequireを使っているスクリプトが動かなくなった.
・スクリプトが置いてあるディレクトリdirで実行することが前提として作られている
・他のスクリプトをdirからの相対パスでrequireしている
下記のような方法が使えるらしいので、今回はこれで済ませる事にしました。
後方互換性を考えなければ、require_relativeを使うのがいいみたいです。
Ruby が ISO規格化にむけて、まずJIS化
ruby
standardization Ruby が JIS X 3017 として規格化されたようなのでメモ。
RubyがJIS規格に、日本発のプログラム言語で初 - ニュース:ITpro
情報処理推進機構(IPA)は2011年3月22日、プログラム言語RubyがJIS規格に制定されたと発表した。日本で発案されたプログラム言語が JIS規格となるのは初めて。IPAでは「JIS規格化されたことにより、Rubyの相互運用性が向上し、Rubyを用いてより生産性の高いプログラム開発・システム開発が可能になる」としている。
昨年の晩秋に中田育男先生にお会いした際にコンパイラの本にサインしていただきながら、「最近はどんな活動をしておられるのですか?」と質問したときに、Rubyの国際標準化のことを熱心に話していたことが印象的でした。JIS化はその第一歩ということのようです。JIS化しておくと、ISO化のときに少しハードルが下がるというのは知りませんでした。
- sadpkv
- CACHEMANAGER.phpというのはどうだろうかと
- pairb1m
- Lightning のToDoリストを複数のPCで共有できるアドオン
- majodca
- 九州旅行から帰ってきました
- majodca
- 九州旅行から帰ってきました
- hot534
- yum を使って OpenVPN をインストールする
- dresssu3
- NP_Trackbackを騙るトラックバックspamについて
- zippern7o
- NP_SpamBayesJP jp1b
- park81o
- Google Docs をメールフォームとして使う
- fogmpl
- なんで官庁の文章はPDFなんだろうか
- cutjw9
- 即席スライドショーを作る
- frightenlho
- 添付ファイルの容量を表示する「Attachment Sizes」
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(5064)
3 . GitHub が全ての公開リポジトリへのシークレットスキャンを有効に(4200)
4 . 年次の人間ドックへ(4132)
5 . 2023 年分の確定申告完了!(1つめ)(3990)
Academic[574]
Book[155]
Diary[522]
Disaster[101]
Foodlogue[1425]
Game[284]
Goods[805]
Healthcare[341]
Hobby[32]
IT[1195]
Military[343]
misc.[1570]
Mobile[510]
Music[38]
Neta[106]
News[95]
Photo[391]
RealEstate[120]
Security[1178]
SEO Contest[36]
Software[634]
Tips[1886]
Travelogue[1238]
Web[675]
Work[193]