タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

Rubyに関するfmn10のブックマーク (11)

  • Ruby の CSV が nil を返さないようにする - tmtms のメモ

    RubyCSV ライブラリはとても便利なんだけど、ひとつだけ問題があって、CSV をパースしたときに nil を返すことがある。 つぎのような CSV をパースすると2番目のカラムが nil になる。4番目のカラムは空文字になるのに! hoge,,fuga,"",piyo require 'csv' CSV.parse_line('hoge,,fuga,"",piyo') #=> ["hoge", nil, "fuga", "", "piyo"] なので CSV のパース結果は全部文字列だと思って使ってるとエラーになってびっくりする。 CSV.parse_line('hoge,,fuga').map(&:upcase) #=> undefined method 'upcase' for nil (NoMethodError) CSV を生成するときも nil と空文字で変わる: pu

    Ruby の CSV が nil を返さないようにする - tmtms のメモ
    fmn10
    fmn10 2024/07/15
    TSV を使うことが結構あって、オプションのデフォルトを変更できたらいいのにと思うことがある
  • 僕たちが待ち望んでいたRubyスクリプトをデーモン化する方法 - http://rubikitch.com/に移転しました

    Rubyでは、簡単にデーモンが記述できる。その方法は簡単!Ruby 1.9だと Process.daemon と書くだけだ。その行の後は制御端末が切離され、デーモンとして実行される。Ctrl+Cで終了できないので、永遠に実行を続けるスクリプトは「pkill -f」などで殺す。 既存のスクリプトをデーモン化するには、この一行を加えればいいだけなのだが、常にデーモンにしてしまうとデバッグが困難になってしまう。そこで、テスト時はふつうに実行して、普段はデーモンにしてしまえばいい。その方法もまた簡単!上の一行を daemonize.rb というファイルに保存すればいい。だけどこれだけだとつまらないので、ついでにRuby 1.8にも対応させてみる。 if Process.respond_to? :daemon # Ruby 1.9 Process.daemon else # Ruby 1.8 req

    僕たちが待ち望んでいたRubyスクリプトをデーモン化する方法 - http://rubikitch.com/に移転しました
    fmn10
    fmn10 2021/07/10
  • Rindaで遊ぶ - しょんぼり技術メモ

    LindaのRuby実装、Rindaを使うことになったのでそのメモ。Rindaすげーよ! Rindaについては http://www.druby.org/ilikeruby/d208.htmlをご覧ください。非常に丁寧な解説があります。 TupleSpaceデーモンを作ってみる いきなりかよ、って感じですが、今回作ろうとしてるシステムでは、どこかに「常時走りっぱなしになってるTupleSpace保持プロセス」が必要だったので… tsd.rb (TupleSpaceDaemon)を次のようにして書きます。手抜き。 #!/usr/bin/ruby require 'rinda/tuplespace' drb_host = ARGV.shift drb_host ||= "127.0.0.1" drb_port = ARGV.shift drb_port ||= "6456" pid_filep

    Rindaで遊ぶ - しょんぼり技術メモ
    fmn10
    fmn10 2021/07/10
  • パイプライン演算子の歴史 - まめめも

    (You can read this article in English.) Ruby の開発版にパイプライン演算子(pipeline operator)が試験的に導入されましたが、いろいろあってプチ炎上になっています(チケット)。 せっかくの機会なので、パイプライン演算子の歴史を調べてみました。付け焼き刃の調査なので、間違ってたら教えてください。 パイプライン演算子とは こんな感じのものです。 x |> f |> g |> h # h(g(f(x))) と同じ意味 h(g(f(x))) という関数適用の式は、関数が呼ばれる順序(f→g→h)と、プログラムの字面上の順序(h→g→f)が逆でわかりにくいとされます。この問題は、特に、関数が大きくなったときに顕著になります。 wonderful_process_h( marvelous_process_g( fantastic_process

    パイプライン演算子の歴史 - まめめも
    fmn10
    fmn10 2019/09/19
  • Ruby 2.7では require 'stringio' が必要になりそう - pockestrap

    github.com 今まではrubygemsがrequire 'stringio'をしていたけど、高速化のためにlazy loadingするようにして起動時に読み込まないようになった模様。 結構な数のプログラムが壊れそう(実際壊れた)。1 $ ruby -v -e 'p require "stringio"' ruby 2.7.0dev (2019-07-31T01:22:47Z master e315f3a134) [x86_64-linux] true $ ruby -v -e 'p require "stringio"' ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux] false 該当のruby/rubyのコミットはこれ https://github.com/ruby/ruby/commit/6c5170634af2

    Ruby 2.7では require 'stringio' が必要になりそう - pockestrap
    fmn10
    fmn10 2019/08/08
  • GitHub - sugi/wareki: ruby 向け和暦ライブラリ。和暦と標準Dateの双方向変換をサポート。全元号対応。

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - sugi/wareki: ruby 向け和暦ライブラリ。和暦と標準Dateの双方向変換をサポート。全元号対応。
    fmn10
    fmn10 2019/06/18
  • Rubyで和暦・旧暦を扱うライブラリ (パースもできるよ!) - Qiita

    Yet another ruby 和暦ライブラリ Pure ruby な日の和暦を扱うライブラリ、名前はまんま "wareki" を作りました。割と網羅的な物になったと思うので、ぜひ使ってみて下さい。 コードと README は github に置いてあります。 特徴 和暦と西暦を相互変換 日語の日付文字列をパースして Date に 元号は大化から全部サポート 旧暦は445年からサポート 特殊記法(旧字体、略字、月の別名、晦日や朔日など)対応 コードサンプル 簡単な例 require 'wareki' すると、標準ライブラリの Date クラスの parse と strftime を上書きします。(もしこの挙動が嫌な場合は wareki/date を直接 require してください。) d = Date.parse("平成二七年 08月 22日") d.strftime("%F")

    Rubyで和暦・旧暦を扱うライブラリ (パースもできるよ!) - Qiita
    fmn10
    fmn10 2019/06/18
  • Rubyのテスティングフレームワークの歴史(2014年版) - 2014-11-06 - ククログ

    2014年12月にRuby 2.2がリリースされる予定です1。 Ruby 2.2にはRuby 1.9.1のときに外されたtest-unitというテスティングフレームワークが再びバンドルされる予定です。Rubyのテスティングフレームワーク周りに詳しくない人にはよくわからない状況でしょう。そこで、Rubyのテスティングフレームワークの歴史を説明することで状況を整理します。 名称の整理 この説明の中ではたくさんのテスティングフレームワークが登場します。似たようなものもあるため、最初にテスティングフレームワークの名称を整理します。この説明の中で登場する名称は次の通りです。 RubyUnit Lapidary rubyunit Test::Unit test/unit test-unit miniunit minitest RSpec 違いがわかりますか?ざっくり説明すると次の通りです。 RubyU

    Rubyのテスティングフレームワークの歴史(2014年版) - 2014-11-06 - ククログ
    fmn10
    fmn10 2019/01/17
  • ちょっと待った! Railsのgitリポジトリから Gemfile.lockとdb/schema.rbを除外してはいけない|TechRacho by BPS株式会社

    2014.02.07 ちょっと待った! Railsのgitリポジトリから Gemfile.lockとdb/schema.rbを除外してはいけない こんにちは、hachi8833です。 Railsをgitで管理するのであれば、ログファイルや、パスワード入りdatabase.ymlなどの登録したくないファイルを.gitignoreに記載してリポジトリから除外するのが普通です。しかし実際の案件では、除外すべきでないファイルが除外されていることがたまにあります。言うまでもないような話ですが、心当たりのある方は念のためチェックしてみましょう。 gitリポジトリから除外すべきでないファイル 以下では、誤ってgitリポジトリから除外されがちなGemfile.lockとdb/schema.rbについて説明します。代表的なものであり、すべてを網羅しているわけではないのでご注意ください。 Gemfile.lo

    ちょっと待った! Railsのgitリポジトリから Gemfile.lockとdb/schema.rbを除外してはいけない|TechRacho by BPS株式会社
    fmn10
    fmn10 2019/01/15
  • Rubyのhashメソッドをきちんと実装するには? - tomotaka-itoの日記

    データ構造のハッシュテーブルにオブジェクトが利用されることを想定する場合、同値性を確かめるeql?メソッドと、同じ値のオブジェクトに対して実行すると同じ値のFixnumを返すhashメソッドを実装する必要があります。 これを実装しておかないと、自分で独自に定義したオブジェクトをHashのキーに使うとバグってしまいます。 eql?は同値性を確かめることができればよいので、割と簡単に実装できるはずです。 このエントリで議論したいのは、hashメソッドのちゃんとした実装方法です。 class Hoge def hash return "#{self.class}hogehoge#{@var1}#{@var2}".hash end end といった実装をやっつけですることがありますが、これでは同じ内容のStringと衝突してしまうのがよくないはずです。 またHashのキーとして使われるので値がばら

    Rubyのhashメソッドをきちんと実装するには? - tomotaka-itoの日記
    fmn10
    fmn10 2017/08/18
  • RubyのFixnumの最大値と最小値 - simanのブログ

    気になったので調べてみました。 Rubyではある値を越えた時にFixnumからBignumへと変わります。 p (2**0).class #=> 1 p (2**10).class #=> 1024 p (2**100).class #=> 1267650600228229401496703205376 p (2**1000).class #=> 略 Fixnum Fixnum Bignum Bignumそこで二分探索を行ってFixnumとBignumの境界値を調べてみました。 class Fixnum class << self def const_missing(name) if [:MAX,:MIN].include?(name) generate_max_min self.const_get(name) else super end end def generate_max_min

    RubyのFixnumの最大値と最小値 - simanのブログ
    fmn10
    fmn10 2017/02/16
    “x64-mingw32” の ruby 2.3.3 では 1073741823 .. -1073741824 だった(1073741824 == 2**30)。一方 “x86_64-cygwin” ではこれと同じ 62 ビットだった。
  • 1