Rubyの難読化へのさらなる一歩

RubyではUTF-8文字の変数名を使うことができるということを@fusuianさんとの会話で思い出した.このことを利用すると,以下のように変数名を全角スペースにしてしまうこともできる. # -*- coding: utf-8 -*- = "Hello, world!" puts 読めない.また,どうや…

Rubyで記号だけを使ってFizzBuzz

@shtaxxxがFizzBuzzでコードゴルフをやっているのを見かけた.気分転換に私もやってみようと思ったけど,コードゴルフはよく分からないので記号プログラミングでやってみた.以下は1から100までのFizzBuzz.Ruby1.9以降で実行できる. $____="#"=~/$/;$___=$…

C++0xのautoキーワードによる型推論

C++0xのautoの紹介 autoキーワードを使って変数を定義すると,コンパイラが初期化値を基に変数の型を推論してくれる. int f(); auto x1 = 1; // x1 : int auto x2 = f(); // x2 : int auto x3 = 3.14; // x3 : double auto &x4 = x1; // x4 : int& const au…

typenameキーワードの使いどころ

C++

C++でtypenameキーワードを使うケースは以下の2つがある. テンプレートパラメータを宣言するとき テンプレート内にあるネストされた依存型名を指定するとき(例外あり) テンプレートパラメータの宣言時 ひとつはテンプレートパラメータを宣言するとき. temp…

C++0x Support in GCC

GCCのC++0xのサポート状況は以下のページで確認できる. http://gcc.gnu.org/projects/cxx0x.htmlいち早くC++0xの新機能を試してみたい,けど興味のある機能が最新のGCCで使えるかどうか分からない,という人はここでチェックしてみよう.初期化リストとかau…

mickey24_botで週間天気予報ができるようになりました

mickey24_botで週間天気予報ができるようになりました.真面目に実装しました.mickey24_bot (@mickey24_bot) | Twitter 雨予報bot「mickey24_bot」の使い方 ver 2.0 - ぬいぐるみライフ? どうやって使うの 以下の形式でmickey24_botにreplyすると,指定し…

mickey24_botの近況(?)とか

最近mickey24_botについてやってることや考えてることを軽く列挙してみようと思います. Twitter Bot Contest 2010にエントリーしました. 週間天気予報機能,近いうちに実装予定です. User Streamに対応させてユーザのクエリをリアルタイムで取得&即reply…

Tsukuba.R#8で発表しました

関係者のみなさん,お疲れ様でした.私は「Extend R with Rcpp!!!」というタイトルで,C++でRを拡張するためのパッケージ「Rcpp」について紹介しました.Extend R with Rcpp!!!View more presentations from mickey24.RでC++の拡張を簡単に作りたい方はぜひ…

Rcppを触り始めた

R C++

Rcppを使うと従来の方法と比べてよりシームレスにRの拡張を作れるようになる. Rcpp: Seamless R and C++ Integration RをC++で拡張する動機 主に以下の二点が挙げられる. 計算速度を向上させる C++から使えるライブラリをRで利用する 1については以下の記…

RubyでうどんげQuine(とAA型Quineの作り方講座)

山手Quineのid:ku-ma-meさんに敬意を表しつつ. Quineって何なの Quineとは実行すると自身のソースコードを出力するプログラムのこと.クワイン (プログラミング) - Wikipedia うどんげQuine ソースコードがうどんげのAAになっているQuineコードを作ってみた…

Rubyのブロック構文の書き分け(do end,{})

do endと{}の違い Rubyにおけるブロックはdo endと{}の二通りがあり,基本的にどちらを使っても同じようにブロックを記述することができるが,両者にはdo endより{}の方が結合が強いという違いがある. # fの引数はa,b,ブロック f a, b do end # bの引数は…

unlessの使い所

RubyにもPerlと同様にunless文がある.unless文では与えられた条件式が偽の場合のみ処理が実行される.if not 条件式と書くよりも「偽の場合に実行する」という意図をより明確にできるという理由で積極的に使っている人もいるかもしれない.しかし,このunle…

RubyGemsのTwitter::Baseがraiseするサーバーエラー関連の例外を拾いリトライ処理を行う

RubyGemsのtwitterパッケージは非常に便利で,これを使うと少ないメソッド呼び出しで簡単にTwitter APIを利用することができる.このパッケージのTwitter::Baseを用いてTwitter botを運用している人も結構多いのではないかと思う. # create Twitter::Base o…

リファクタリング本を読みたい

リファクタリングについて本を読んで勉強したい.でもまずどの本を買えばいいのか分からない.手始めにレビューサイトを読んで気になる本を簡単にまとめてみた. 動機など 静的型付けの言語(特にC++)でのリファクタリングを学びたい 動的型付けの言語(特にRu…

Fixnumのobject_id

SymbolだけでなくFixnumも値が等しければobject_idが等しくなるようだ. # Fixnum 1.equal?(1) #=> true 3.equal?(1 + 2) #=> true # Float 1.0.equal?(1.0) #=> false # Bignum 10000000000000000000.class #=> Bignum 10000000000000000000.equal?(1000000…

Rubyにおける==,===,eql?,equal?の違い

どれが何なのかたまに混乱するのでメモ. == オブジェクトの同値性のチェック クラスやオブジェクトの性質に合わせて再定義できる === オブジェクトの同値性のチェック(所属性を加味) case式で使われる クラスやオブジェクトの性質に合わせて再定義できる eq…

Boost.MPLでBrainf*ckのプログラムをコンパイル時に動かしてみた

C++のテンプレートメタプログラミングライブラリ「Boost.MPL」について勉強中.新しいものを勉強する時はとりあえずそれを使ってBrainf*ckのインタプリタを作るのが学習法の定石なので,早速Boost.MPLを使ってBrainf*ckのインタプリタを書いた. ソース コン…

C++テンプレートメタプログラミングでの文字列の扱い方で行き詰まった

C++

C++テンプレートメタプログラミングでいろいろ試していたら行き詰まった.文字列の先頭の要素(や特定の位置の要素)をコンパイル時に取得できるようにしたい.以下のようにテンプレート引数に文字列を入れるような形で書きたいのだが,どうやらこれは無理らし…

Ruby 1.9.2から$LOAD_PATHにカレントディレクトリが含まれなくなった

タイトルの通り,Ruby 1.9.2から$LOAD_PATHにカレントディレクトリが含まれなくなった($:も同様).この変更により,以下のような条件でrequireを使っているスクリプトが動かなくなった. スクリプトが置いてあるディレクトリdirで実行することが前提として作…

Rubyで任意のメソッドをメモ化する

Rubyベストプラクティスの5-4より.メタプログラミングの例として面白かったのでまとめてみる. メモ化とは メモ化とは,引数に対するメソッドの戻り値を保存しておき,再び同じ引数でメソッドが呼び出された時にその値を再利用することにより,同じ計算を何…

配列の要素数を返すテンプレート関数

C++

C++テンプレートテクニックの2-4より. #include <iostream> using namespace std; template <class T, int N> int size(T (&x)[N]) { return N; } int main(int argc, char const* argv[]) { int a[] = {1, 2, 3, 4, 5}; cout << size(a) << endl; return 0; } 出力結果 5これは面白い</class></iostream>…

Hashみたいだけどちょっと違うHashie::Mash

Hashie::MashはRubygemsのパッケージで公開されているclassのひとつで,m.key = valueのような書き方でkeyにアクセスできるHashのようなもの.twitterパッケージの内部でも使われている.GitHub - intridea/hashie: Hashie is a collection of classes and m…

読んでおきたいRuby本

C++本のついでに読んでおきたいRuby本も列挙してみる(既読含む). 既読 初めてのRuby 他のプログラミング言語の学習経験がある人向けのRuby入門書.224ページと非常にコンパクトで読みやすく,なおかつ要点が分かりやすくまとめられている.また,ブロック構…

読んでおきたいC++本

とりあえず読んでおきたいC++本を列挙してみる(既読含む). 既読 Effective C++ 原著第3版 定番.C++を使う上で知っておくべき55個のアドバイスが示されている.Effective C++ 原著第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)作者: スコット・メ…

DBCLS仕事ブログを開設しました

しばらく前にDBCLSでやっている仕事についてのブログをWordPressで立ち上げました.興味がある方はぜひご覧ください. g86 has gone.

Tsukuba.R#8やります

id:reposeも既に告知していますが,9月19日(日)にTsukuba.R#8を開催します.今回の会場は産総研です.興味を持たれた方はぜひ↓のWikiに名前を追加して参加表明してください.みなさんの参加をお待ちしています. Tsukuba.R#8 - Tsukuba.R - Seesaa Wiki(ウ…

mickey24_botの雨予報自動配信機能の負荷分散計画(案)について

mickey24_botの雨予報自動配信機能を改変することを計画中です.何かアドバイスがありましたらmickey24まで連絡いただけるとうれしいです.mickey24_botの詳細は以下のリンク先を参照してください. 雨予報bot「mickey24_bot」の使い方 ver 2.0 - ぬいぐるみ…

mickey24_botが臓物占いを始めました

mickey24_botが臓物占いを始めました.動物占いではありません.mickey24_bot (@mickey24_bot) | Twitter 雨予報bot「mickey24_bot」の使い方 ver 2.0 - ぬいぐるみライフ? どんな機能なの mickey24_botが今日のあなたにピッタリのラッキー臓物を画像付きで…

今日のDBCLS

バイト日記. リファクタリング続き がんばる. なるべくメソッドを分割してunit testしやすいように.

今日のDBCLS

バイト日記化しつつある. Cufflinksの実行方法について再検討 遺伝子発現を見るためのツール「Cufflinks」 http://cufflinks.cbcb.umd.edu/index.html 対処法を相談した結果 → http://d.hatena.ne.jp/yag_ays/20100611/1276224172 今まで書いたコードのリフ…