備忘録的な何か

技術ブログ的な何かです

サンデーダウの信頼性検証

昨今の株価暴落で、twitterを検索するとサンデーダウが若干流行っていたので、信頼性を検証してみる。(ざっくり検証のため、参考程度でお考えください)www.ig.com ①価格のグラフを書いてみる 青色の期間:サンデーダウのみ取引可能時間 橙色の期間:CFDの…

Web Browserを作った

Sushi BrowserというWebブラウザを作りました。 Electronというデスクトップアプリ用のフレームワークがあり、 さらにそのForkのmuonというライブラリを使っている。特徴はマルチパネルでいろいろ操作できること。 検索しながら別の窓で開くみたいなことがで…

Rubyの配列、ハッシュ、文字列のメモリ使用量を見る。そして、固定長テキスト最強説..

※一行のサイズが40byte以下だとあまり良い検証にならないことに気づいたので、再検証予定。最近よくRubyで大規模テキストの処理をしています。 大規模と言っても、数GBレベルで今どきのマシンであれば全部メモリに乗せれるんじゃ..というサイズになります。…

Maybeモナド的な何かに惹かれて、RailsのtryのgetOrElse的なものを作った。

皆さん、tryっていいですよね。でも、MayBeモナド的なgetOrElseにつながるチェーンもかっこいいですよね。 ※ScalaでいうところのList(0,-1,1).find(_ > 1).getOrElse(999) // 999ということで、以下を考えました。 class Object def try_else(*a,else_val, &…

rsyncでサーバ移行

さくらのVPSで上位プランに移行するための手順 - さくらインターネット創業日記で書いてある通りにやったが「Bringing up interface eth0: Device eth0 has different MAC address than expected, ignoring, FAILED」と出てネットワークが認識されなかったた…

ActiveRecordのwhereが素晴らしい件

Railsのwhereは非常に使い勝手が良い。 慣れれば、普通にSQLを書くより読みやすいと思う。一番簡単な例だと、次のものになるが、まあ便利ですねくらいのものである。 Article.where(id: [1,3]) #=> select * from articles where id in (1,3) しかし、次のよ…

正規表現クックブック(O'Reilly Japan)読感

正規表現クックブックを読んだ。詳説 正規表現とどちらを買うか迷ったのだが、 本屋でぱっと見、先読みとか後読みについて詳しく書いてたのが クックブックの方だったので購入した。さて、僕は基本的にはRubyを第一言語で使っており、そこそこ正規表現は使え…

Slimを.rbファイルの中に書く (Railsネタ)

タイトル通りの話です。 次のようにすればできますが、効率は悪いような気がします。 engine = Slim::Engine.new eval engine.call('a href="http://www.google.com" Google') #=> <a href="http://www.google.com">Google</a>

CRuby(MRI)はスレッドセーフなのか

少々炎上しそうな表題ですが、色々と調べたので覚書。まず、前提条件として、CRubyはGIL(Global Interpreter Lock)という仕組みがあります。 細かい説明は グローバルインタプリタロック - Wikipedia を参照いただくとして、Rubyインタプリタは必ずGILを取得…

C#のiEnumerable#SelectはEnumerator::Lazy#mapだった件

C#は.net framework 3.5より、LINQ用のEnumerableメソッドが追加されています。Select,Where,OrderByなどです。 これらのメソッドは、LINQでの使用はもちろん、ラムダ式を渡して、利用することができます。これは、Rubyのmapやfilterに当たるものになります…

C#でeach_with_indexをする

Rubyのeach_with_indexって便利ですよね。 C#には、each=ForEach、map=Select、select=WhereとRubyのEnumeratorのメソッドに相当するものが有りますが、私の大好きなeach_with_index相当がありません。 ということで、拡張メソッドを使ってサクッとモンキー…

ActiveRecordのTimeZoneConversionが遅い件 (Rails小ネタ)

ActiveRecordでレコードを取得する場合、以下の様なコードを書いたとする。 Article.where(cond).map{|record| #condは検索条件 record.attributes.each{|name,value| #hoge } } この処理はレコード数が多い場合に非常に遅い。その理由は、record.attributes…

Rubyのnilの挙動を利用する

皆さんご存知の通り、RubyはnilはNilClassのオブジェクトである。 NilClass.instance_methods(false).sortとしてみると、結構な関数が定義されている。 => [:&, :^, :inspect, :nil?, :rationalize, :to_a, :to_c, :to_f, :to_h, :to_i, :to_r, :to_s, :|] #…

ActiveRecordで複数条件のorクエリまたはinクエリを投げる(Rails小ネタ)

ActiveRecordでor検索をしようと思うと、意外と簡単にはできない。 Table.where(id: 1).or(id: 2) とかでできそうなものだができない。 真面目にやるには、Arelを使ってやるのが一番のようだ。 http://techracho.bpsinc.jp/tsunekawa/2013_05_24/8502 非常に…

compactしないで、nilを含む配列からnilではない最初の要素を取得する方法

表題どおり。 arr = [nil,"hoge","fuga"]という配列があり、nilではない最初の要素を取得したい場合、私は以下のようにしていた。 arr.compact.first #=>"hoge" コードゴルフ的に言えば18byteなので、あまりいただけない。(firstではなく、[0]でアクセスする…

tapを使って配列じゃなくてもeachする方法

処理対象がEnumerableな要素かそうでないかわからない時ってよくありますよね。 ActiveRecordなんかもそうですが、1要素の時は単体のオブジェクトがきて、複数要素の時はEnumerableが来るapiってわりとあります。(scanとかもそう。) で、tapを使えばそれを…

ActiveRecordのjoinsで全カラムを取得する方法 (Rails小ネタ)

ActiveRecordではjoinsメソッドを利用して、inner joinすることができる。 例: Blog.joins(:article) #=> SELECT "blogs".* FROM "blogs" INNER JOIN "articles" ON "articles"."blog_id" = "blogs"."id" ここで、問題になるのは"blogs".*である。articles…

Rubyでまとめて動的クラス定義

リファクタリングRubyエディションを読んでいたら、def_eachというイカしたメソッドがあった。まとめて、似たようなメソッド定義をするものだ。 ここで、まとめて似たようなクラス定義をする関数もあったらいいなと思ったので作ってみた。役立つか微妙だが*…

redcar(Ruby)のオレオレ改造をしてみた。

JRuby製テキストエディタRedcarというのがある。 https://github.com/redcar/redcar 便利なのだが、個人的に以下の不満があった。 (1) Ruby1.8系でしか動かない。Evalする時にRuby1.9系のHashの構文とか使えない (2) 日本語ファイル名がNG。日本語ファイル(U…

Excel VBA To Ruby Converter

手抜きプログラムシリーズ。 Excel VBAが吐き出したコードをRubyのWin32ole対応のコードに変換するスクリプトを作成した。やっぱ、ExcelやるならRubyでしょ的な。 https://www.dropbox.com/s/jw51apxtrgjle3k/vba2ruby.rb 基本的な文法(SubとかWithとかForと…

postgreSQL RC 9.3 インストール

http://www.enterprisedb.com/products-services-training/pgdevdownload に行く。 Linuxの場合、Linux版のをダウンロードする。 chmod 755 postgresql-9.3.0-rc1-linux.run で権限を付けて、 ./ postgresql-9.3.0-rc1-linux.run すれば、Windowsのインスト…