てきとうなメモ

本の感想とか技術メモとか

Ruby

redmineのバージョンアップ

redmineが2系でそろそろ古いかなと思って、バージョンアップしてみたのでメモ。 あと、ubuntu14.04だとrubyが1.9系で微妙なので、それもアップデートした。 構成 webサーバ: apache httpd appサーバ: thinというもの バックアップ redmineのディレクトリは念…

gemでnokogiriがインストールできない

nokogiriにいつからかlibxml2やlibxsltをバンドルするようになった。これらをコンパイルするためにmini_portile2を利用しているのだが、内部的に開発用ツールを呼んでいるので、開発用のツールが入っていないとインストールに失敗する。 Cのライブラリをコン…

nkfで全角半角変換

半角カナを全角カナに $ echo "アイウエオガギグゲゴ" | nkf アイウエオガギグゲゴ全角カナを半角カナに $ echo "アイウエオガギグゲゴ" | nkf | nkf -Z4 アイウエオガギグゲゴ全角アルファベット、数字を半角に $ echo "12345ABCDEabcde" | nkf -Z 123…

Bundlerのproxy設定はメタデータの取得とgemのインストールで異なる

メタデータの取得は*_proxy環境変数を見るのみなのだが、gemのダウンロードはrubygemを利用していているので、環境変数だけでなく.gemrcのhttp_proxyの設定を見てしまう。さらに、.gemrcの方を優先してしまう。そのため、.gemrcに間違った設定を入れていると…

RubySpec終了

Matz's Ruby Developers Don't Use RubySpec and It's Hurting Ruby - Rubinius RubySpecについては1.9.2の頃のRuby会議で聞いたので、うまくいっているものかと思ったがそうではなかったのか。RubySpecの人は共通の言語仕様があって、CRubyやJRubyやRubiniu…

X-Forwarded-Hostヘッダの扱い

Railsで自分のサーバ名を知ろうとしてrequest.host_with_portを使おうとして、多段reverse proxy下だったのでめんどうなことになった。Rails(Rack)だと def host_with_port if forwarded = @env["HTTP_X_FORWARDED_HOST"] forwarded.split(/,\s?/).last else…

./configure --disable-install-rdoc

gemインストールする時に、riとかrdocのインストールに時間がかかるので $ gem install --no-ri --no-rdoc xxxとかやるのだけども、Rubyそのもののrdocも要らないので./configureでそんなオプションないかなと思ったらあった。 $ ./configure --disable-inst…

与えられた整数のリストで四則演算を使ってxを作る

【画像あり】受験生に配られた東工大新聞の入試対策問題が面白いと話題に 問3が気になったのでRubyで解いてみた。 require 'mathn' def four_op(numbers, result) if numbers.size == 1 and numbers[0] == result return numbers[0].to_s end for i in 0..nu…

RHEL 6.5でruby 1.8.7-p374のコンパイルに失敗する

Bug #8384: Cannot build ruby against OpenSSL build with "no-ec2m" - ruby-trunk - Ruby Issue Tracking System このバグ引いてしまったっぽい。opensslのconfigureのオプションが変更されてno-ecがなくなってec系の関数もコンパイルしようとしているのだ…

passengerでログが出力されない→passengerはどのユーザで実行されているのか

passengerでrailsアプリのログが書き出されないなと思っていたら、apacheのプロセスはapacheで起動するのだが、passengerのプロセスがnobodyで起動していた。ログファイルの所有者はapacheにしていたので書き込めなかったわけだ。なんでnobodyなのか調べると…

incompatible character encodings: UTF-8 and ASCII-8BIT

ruby 2.0 + rails 3.0のアプリでタイトルのようなエラーがでた。ググるとパッチが見つかるけど、自分の場合は、DBアダプタがmysqlになっていて、それがちゃんと処理していなかったようだ。mysql2に変更したら解決した。

ruby-modeのインデント

ruby-mode のインデントをいい感じにする - willnet.in (setq ruby-deep-indent-paren-style nil) とすると下記のようにインデントできます。 SuperLongClassName.super_long_name_method( hoge: 'fuga', foo: 'bar', baka: 'aho' ) おお!すばらしい…かと思…

evernote->delicious変換

Scuttleにインポートするためにevernoteの.enex形式からdeliciousのAPIの形式に変換するRubyスクリプトを書いた https://gist.github.com/boscono/5424396

RailsのSQLインジェクション脆弱性

Rails SQL injection vulnerability: hold your horses, here are the facts – Phusion Corporate BlogPhusion Corporate Blog Let Me Github That For You | Lands of Packets CVE - CVE-2012-5664 (under review) User.find_by_name('foo', :select => 'id…

irbで日本語を使えるようにする

id:boscono:20120304で、インストールしたirbでは日本語がうまく入力できない。どうもirbがGNU readlineではなくlibeditを使っているかららしい。というわけでreadlineをインストールしてRubyを再インストールしようかと思ったらうまくいかなかった $ brew i…

ruby-1.9.3-p125

Mac OS 10.7.3にインストールしようとしたらエラーになった $ rbenv install 1.9.3-p125 ... BUILD FAILED ... Last 10 log lines: ... configure: error: in `/var/folders/5j/j1vm1p3j7sb3hz0n6qcsb8yh0000gn/T/ruby-build.20120302230442.467/ruby-1.9.3-…

インストールスクリプトのないツール

$ ls foo foo.rb foo $ ls foo/foo bar.rb $ cat foo.rb require 'foo/bar' ....というようなツールを使いたい場合、foo/bar.rbをロードしなければならないのと、/usr/local/binあたりのPATHの通っている所にシンボリックリンクを置きたいというのを両立させ…

Ruby会議2010 一日目

ちょっと一日目と二日目行ってみたのでメモ オープニング 今回のテーマはConflict and Resolution。あと、Ruby 1.9.2リリースとRails 3.0リリース予定がニュース。 Conflicts and Resolutions in Ruby and Rails Jeremyさんによる基調講演が急遽中止になった…

Ruby会議2010 二日目

Ruby 1.9.2 is released! リリースマネージャであるyuguiさんによるRuby1.9.2の紹介。1.9.2の変更点は以下のとおり。 IPv6対応を改善したsocket 2038問題に対応したtime random 携帯用エンコーディング Array/Enumerableにメソッドを追加 fiddleを追加 dlの…

ruby1.9のopen-uriでproxy認証

:proxy_http_basic_authenticationで明示的に指定可能なんだけども、http_proxy環境変数から指定したかったのでopen-uri.rbを以下のようにしておいた。 186c186 < find_proxy = lambda {|u| pxy = u.find_proxy; pxy ? [pxy, nil, nil] : nil} --- > find_pr…

Rubyで作る奇妙なプログラミング言語 〜Esoteric Language〜

Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~作者: 原悠出版社/メーカー: 毎日コミュニケーションズ発売日: 2008/12/20メディア: 単行本(ソフトカバー)購入: 8人 クリック: 148回この商品を含むブログ (70件) を見るBrainf*ckのような奇妙なプ…

RubyとJavascript(の処理系)における文字列の連結

文字列を連結する時に言語処理系が何を行っているかという話.あんまりついていけていないのだがメモ.発端はここ. 現代のオブジェクト指向言語の処理系で、最もパフォーマンスに影響するのはインスタンスの生成です。そのため、言語仕様として、プリミティ…

Ruby declared TIOBE's Programming Language of 2006!

We are glad to announce that Ruby has become "Programming Language of the Year 2006". Ruby has the highest popularity increase in a year of all programming languages (+2.15%). Runner up this year is JavaScript with +1.31%. Both languages a…

Rubyの勉強 (5) - クラス

クラスの定義 クラスの定義はclass〜end class Hello def hello(str) puts "Hello, #{str}" end end if __FILE__ == $0 Hello.new.hello("Ruby") # Hello, Ruby endnewでオブジェクトを生成する.メソッドの呼び出しは.を用いる.__FILE__はそれが書かれてい…

multi.rb - Multiple Dispatch and Pattern Matching for Ruby

http://www.artima.com//rubycs/articles/patterns_sexp_dsls.htmlHaskellっぽいパターンマッチを行うモジュール.おもしろいんだがあまり使い勝手は良くなかった. require 'rubygems' require 'multi' multi(:fact, 0) { 1 } multi(:fact, Integer) { |n| …

Rubyの勉強 (4) - メソッド

メソッド メソッドはdef〜endで定義する.仮引数を指定できるのでPerlのように@_を用いる必要はない.戻り値は最後に実行した式の値になる. def fact(n) if n == 0 1 else n * fact(n-1) end end puts fact(5) # 120 引数 引数は以下のようなものを扱える.…

Rubyの勉強 (3) - 演算子

Rubyで用いられる演算子 高い :: [] +(単項) ! ~ ** -(単項) * / % + - << >> & | ^ > >= < <= <=> == === != =~ !~ && || .. ... ?:(条件演算子) =(+=, -= ... ) not 低い and orほとんどはメソッドの特殊な表記である.例えば irb> 1 + 1 => 2 irb> 1.+(1)…

Rubyの勉強 (2) - 文法

変数 Perlみたいに変数に接頭辞はつけない.というかつけると特殊な意味を持つ n = 42 foo = "bar" 数値 数値は整数と浮動小数点数がある. irb> 42 => 42 irb> -42 => -42 irb> 3.14 => 3.14 irb> 6.62e-34 => 6.62e-34読みやすいようにアンダースコアを付…

Rubyの勉強

Rubyの勉強をはじめた.