タグ

Tipsとrubyに関するN_Tのブックマーク (13)

  • Rubyで自然なDSLを作るコツ:値を設定するときはグループ化して代入 - ククログ(2014-02-13)

    最近、fluent-plugin-droongaという分散データストリームエンジンを書いています。その中で、RubyでDSLを実現するときに工夫していることに気づきました。それは、値を設定するときは代入する字面にするということです。代入する字面にするために、グループ化用のオブジェクトを作っていました。 これだけだとどういうことかわからないので、具体例を示しながら説明します。 RubyとDSL Rubyを使っているとRubyで実現されたDSLに触れることが多くあります。RubyのMake実装であるRakeの設定ファイルもそうですし、ライブラリー管理ツールのBundlerの設定ファイルもそうです。 Rakeの場合:

    Rubyで自然なDSLを作るコツ:値を設定するときはグループ化して代入 - ククログ(2014-02-13)
  • Rubyのエンコーディングとコマンドライン引数

    Ruby 1.9.3以降、ファイル名の扱いでひっかかりポイントがあったんだよな。なんだったっけ? と、ここしばらく、頭の片すみにモヤモヤが居座っていた。ついさっき、どういうことだったかを思い出せた。 最初にひっかかったのはファイルを操作するスクリプトだった。ファイル名にまつわるところに何かある、と勘違いしてしまっていたのはそのせいだろう。しかしきちんと思い出してみると、ファイル名ではなくコマンドライン引数のエンコーディングにより生じる問題だった。ファイル名のほうを適当に直すという場当たり対処をついついしてしまったのも勘違いを深める要因だったかもしれない。 ともあれ、問題のコードを以下に示す。 #!/usr/bin/env ruby # encoding: utf-8 require 'optparse' OptionParser.new do |opt| opt.on('-h') do p

    N_T
    N_T 2013/12/17
  • Ruby - RbConfig でインストール時の情報取得!

    ["ALLOCA", ""] ["AR", "ar"] ["ARCHFILE", ""] ["ARCH_FLAG", ""] ["AS", "as"] ["ASFLAGS", ""] ["BTESTRUBY", "$(MINIRUBY)"] ["BUILTIN_TRANSSRCS", " newline.c"] ["CAPITARGET", "nodoc"] ["CC", "gcc"] : ===< 途中省略 >=== : ["target_os", "linux"] ["target_vendor", "unknown"] ["topdir", "/usr/local/lib/ruby/2.0.0/x86_64-linux"] ["try_header", ""] ["vendorarchdir", "/usr/local/lib/ruby/vendor_ruby/2.0.0/x86_6

    Ruby - RbConfig でインストール時の情報取得!
    N_T
    N_T 2013/08/26
  • Route 477(2013-04-01)

    ■ [ruby] RubyでUTF8-MACUTF-8に直す プレビュー.appからMacVimにコピペしたら、「はじめに」が「はし゛めに」みたいになってしまって困ったので、 Rubyのワンライナで直してみた。 $ ruby -e 'print File.read(ARGV[0], encoding: "utf8-mac").encode("utf-8")' a.txt > b.txt Ruby(>= 1.9)便利。 ■ [ruby] RubyでMagic commentが必要なファイルを列挙する Ruby 2.0からスクリプトエンコーディングのデフォルトがUTF-8になったので、文字列リテラルに日語を使うときもマジックコメントを書かなくて良くなりました。 …というのは嬉しい変更なんですが、そうすると今度は「手元のRuby 2.0では動いてるけど、サーバのRuby 1.9.3で動かした

    Route 477(2013-04-01)
    N_T
    N_T 2013/04/02
    $ ruby -e 'print File.read(ARGV[0], encoding: "utf8-mac").encode("utf-8")' a.txt > b.txt
  • QA@IT サービス終了のお知らせ - @IT

    平素よりQA@ITをご利用いただき、誠にありがとうございます。 QA@ITは「質問や回答を『共有』し『編集』していくことでベストなQAを蓄積できる、ITエンジニアのための問題解決コミュニティー」として約7年間運営をしてきました。これまでサービスを続けることができたのは、QA@ITのコンセプトに共感をいただき、適切な質問や回答をお寄せいただいた皆さまのご支援があったからこそと考えております。重ねて御礼申し上げます。 しかしながら、エンジニアの情報入手方法の多様化やQAサービス市場の状況、@ITの今後のメディア運営方針などを検討した結果、2020年2月28日(金)15:00をもちましてQA@ITのサービスを終了することにしました。 これまでご利用をいただきました皆さまには残念なお知らせとなり、誠に心苦しく思っております。何とぞ、ご理解をいただけますと幸いです。 QA@ITの7年間で皆さまの知識

    QA@IT サービス終了のお知らせ - @IT
  • Rubyのpデバッグは「p x: x」のようにすると良い

    ■ [ruby] Rubyのpデバッグは「p x: x」のようにすると良い Rubyプログラムのデバッグ中はpメソッドで変数の値を表示したりしますが、普通に「p x」とか書くと、画面に 3 とだけ表示されたりして、何が3なのか分からなくなってデバッグが進まない…みたいなことありますよね。 そこで、Ruby 1.9から導入されたハッシュの記法を使って p x: x みたいに書くと、これは p({:x => x}) と同じ意味なので、デバッグ出力が {:x => 3} みたいになって、ああ変数xに3が入ってるんだなと分かりやすくなります(かつタイプ数もそれほど増えない)。*1 変数が複数のときは p x: x, y: y みたいにします。

    Rubyのpデバッグは「p x: x」のようにすると良い
    N_T
    N_T 2013/02/07
  • QA@IT サービス終了のお知らせ - @IT

    平素よりQA@ITをご利用いただき、誠にありがとうございます。 QA@ITは「質問や回答を『共有』し『編集』していくことでベストなQAを蓄積できる、ITエンジニアのための問題解決コミュニティー」として約7年間運営をしてきました。これまでサービスを続けることができたのは、QA@ITのコンセプトに共感をいただき、適切な質問や回答をお寄せいただいた皆さまのご支援があったからこそと考えております。重ねて御礼申し上げます。 しかしながら、エンジニアの情報入手方法の多様化やQAサービス市場の状況、@ITの今後のメディア運営方針などを検討した結果、2020年2月28日(金)15:00をもちましてQA@ITのサービスを終了することにしました。 これまでご利用をいただきました皆さまには残念なお知らせとなり、誠に心苦しく思っております。何とぞ、ご理解をいただけますと幸いです。 QA@ITの7年間で皆さまの知識

    QA@IT サービス終了のお知らせ - @IT
  • Rails で、Controller に定義されている action を一度に取得する方法はありますか? - QA@IT

    平素よりQA@ITをご利用いただき、誠にありがとうございます。 QA@ITは「質問や回答を『共有』し『編集』していくことでベストなQAを蓄積できる、ITエンジニアのための問題解決コミュニティー」として約7年間運営をしてきました。これまでサービスを続けることができたのは、QA@ITのコンセプトに共感をいただき、適切な質問や回答をお寄せいただいた皆さまのご支援があったからこそと考えております。重ねて御礼申し上げます。 しかしながら、エンジニアの情報入手方法の多様化やQAサービス市場の状況、@ITの今後のメディア運営方針などを検討した結果、2020年2月28日(金)15:00をもちましてQA@ITのサービスを終了することにしました。 これまでご利用をいただきました皆さまには残念なお知らせとなり、誠に心苦しく思っております。何とぞ、ご理解をいただけますと幸いです。 QA@ITの7年間で皆さまの知識

    Rails で、Controller に定義されている action を一度に取得する方法はありますか? - QA@IT
    N_T
    N_T 2012/09/25
  • twitterでURL扱い回避記号が減っていた - jarp,

    ■ 日付印 今日ははんこの日なので日付印を完成させた。 convert -size 200x200 xc:white \ -stroke "#ff0000" -fill "#ffffff" \ -draw "stroke-width 4 circle 100,100,190,100" \ -draw "stroke-width 4 line 15,68,185,68 line 15,132,185,132" \ -pointsize 40 -fill "#ff0000" \ -draw "text 20,120 \"$(date +\'%y.%_m.%_d)\"" \ -font /usr/share/fonts/opentype/ipafont-mincho/ipam.ttf \ -pointsize 20 \ -draw "text 45,40 'ほげほげ部'" \ -draw "te

  • Threadの中で即座に例外をあげる - 福島餃子Ruby親方

    どういうことかというと、Threadを作って、 その中で例外が上がるようなものを作ったとしても、 joinしないと例外が上がりません。 joinを前提にしていないループするプログラムなどは 困ります。 例えばこんなヤツ。 ネットワークが切れたら例外が上がって、 最初から処理をやり直したいって場合。 #!/usr/bin/env ruby # require 'net/http' begin http=Net::HTTP.new("d.hatena.ne.jp","80") Net::HTTP.version_1_2 t=Thread.new do loop do timeout(5) do http.start do |http| req =Net::HTTP::Post.new("/xibbar") response = http.request(req) end end p :thre

    Threadの中で即座に例外をあげる - 福島餃子Ruby親方
  • 超簡単に Ruby プログラムを exe にする新しい方式 (構想) - まめめも

    exerb は 1.9 に対応してないし、いろいろオーバースペックだと思う。ocra はテンポラリフォルダに展開して実行するのがダサすぎて論外。(参考) ということで、すごくシンプルに Ruby プログラムを exe 化する方式を考えてみました。 デモ # t.rb puts "test!"これを exe にしたい。こうします。 C:\Ruby>copy /B ruby.exe+t.rb t.exe ruby.exe t.rb 1 個のファイルをコピーしました。実行する。 C:\Ruby>t test!動いた! つまり、インタプリタとスクリプトをファイル結合するだけで exe にできてしまいます。 実装 Ruby にパッチをあててビルドする必要があります。やってることは自己解凍書庫と同じ感じです。 ruby.exe のファイルサイズをバイナリリソースとして ruby.exe 自身に持たせて

    超簡単に Ruby プログラムを exe にする新しい方式 (構想) - まめめも
  • x64-mswin64版Ruby 1.9.3をビルドした - 単なる日記@はてな

    2012-07-03追記: NokogiriのGitHubのURLが変更されたことへの追従。https://github.com/tenderlove/nokogiri → https://github.com/sparklemotion/nokogiri 以前から何度も玉砕している、x64-mswin64版Ruby 1.9.x(今回は1.9.3-p125)のビルドに成功したので、やったことをメモっておく。 環境はこんな感じ: Windows 7 SP1 Visual C++ 2010 Express 使用するソフトウェアはこんな感じ: libiconv-1.11 (artonさんのASRのページから入手) libxml2-2.7.8 libxslt-1.1.26 openssl-1.0.0g readline-4.3-2 (artonさんのASRのページから入手) yaml-0.1.4

    x64-mswin64版Ruby 1.9.3をビルドした - 単なる日記@はてな
  • http://www.machu.jp/posts/20120123/p01/

    N_T
    N_T 2012/01/23
  • 1