ruby

Ruby1.9でCodeEvalのSum Of Primes

Ruby1.9でCodeEvalのPrime Palindrome

1000未満の、「素数かつ回文数」の最大値を出力する

Ruby1.9でCodeEvalのFizz Buzz

CodeEvalinput 3 5 10 2 7 15output 1 2 F 4 B F 7 8 F B 1 F 3 F 5 F B F 9 F 11 F 13 FB 15

sqlite3-rubyのインストールでエラー

3年くらい前にローカルで使うために作ったRailsアプリを動かそうとして、bundle installしたら、sqlite3-rubyだけインストールできない。見覚えがあるエラー。 gem install sqlite3-ruby Building native extensions. This could take a while... ERROR: Err…

ゲーム感覚でrubyを勉強できるRuby Warrior

RubyWarrior - Bloc英語だけどちょっと見れば何をするかはすぐわかると思う。前に進んだり、後ろに戻ったり、敵に攻撃したり、ダメージがあったら回復したりをプログラミングして、フロアの敵を倒していく。弓矢を使う敵がうざい。もともとはコマンドライン…

python、rubyで文字列を1文字ずつのリストにする

間違ってpythonでstr.split(//)とか書いてしまった。split(//)でできるのはrubyだった。ruby str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" str.split(//) => ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m"…

pythonとrubyでHMAC-SHA256

import hmac import hashlib secret_key = "secret_key" message = 'message' print hmac.new(secret_key, message, hashlib.sha256).hexdigest() # => ebb8d2ee5dcad6e9d6fc0b606811f9f03036bdd419a364d1a1ce1afa1bea61fd require 'openssl' secret_key = '…

古いバージョンのgemをインストールする

railsの2.3.8が必要になったのでインストールした。最近rubyを全然さわってないので忘れてしまっていたけど、-vでバージョン指定するんでした。 gem install rails -v 2.3.8 rdocとかriとかインストールされて遅い。--no-rdoc --no-riをつければ入らないんだ…

Python/RubyでSHA-2

python # coding=utf-8 import hashlib text = "任意の文字列" #print hashlib.sha224(text).hexdigest() print hashlib.sha256(text).hexdigest() print hashlib.sha384(text).hexdigest() print hashlib.sha512(text).hexdigest() ruby # -*- encoding: ut…

配列の各要素が全て条件を満たすかどうかを調べる

kickstrapのjsをなんとなく読んでたらこんなの見つけました。 // IE compatibility fallbacks, turned on when needed. // Thanks to http://stackoverflow.com/questions/2790001/fixing-javascript-array-functions-in-internet-explorer-indexof-foreach-…

pythonで10進数からn進数に基数変換

rubyではNumeric#to_sに基数nを渡すとn進数での文字列表現を返してくれます。1000000を2〜36進数で出力するコードruby (2 .. 36).each do |e| p 10000000.to_s(e) end # => "100110001001011010000000" # => "200211001102101" # => "212021122000" # => "10…

Python/Ruby/JavaでBase64エンコード

base64とは Base64は、データを64種類の印字可能な英数字のみを用いて、それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字やバイナリデータを扱うためのエンコード方式である。 http://ja.wikipedia.org/wiki/Base64 画像をエンコードした文…

Python/Ruby/Javaでuuidを生成

uuidとは UUID(Universally Unique Identifier)とは、Distributed Computing Environment (DCE)の一部としてOpen Software Foundation (OSF)が標準化した、一意に識別するための識別子である。UUIDは、分散システム上でどこかが統制を取らずとも、一意に特…

ゼロ埋め

python s = "1" print s.zfill(3) # => 001 ruby s = "1" p s.rjust(3, '0') # => 001 javascript sliceを使って var s = "1" ("000" + s).slice(-3) # => 001

Python/Rubyのzip関数

存在は知っていたけど、あまり使うことがなかった。 が、今日は使いたいと思うケースに遭遇したので、使い方をメモしておく複数のシーケンスに並行して同時にアクセスするforループを書くのに便利。 python # coding=utf-8 seq1 = [1,2,3,4,5] seq2 = ['a','…

Python/Ruby/JavaでSHA-1

SHA-1とは 認証やデジタル署名などに使われるハッシュ関数(要約関数)のひとつ。2の64乗ビット以下の原文から160ビットの「ハッシュ値」を生成し、通信経路の両端で比較することで、通信途中で原文が改ざんされていないかを検出することができる。計算方法に…

PythonとRubyで文字列をdateオブジェクトに変換する

python from datetime import datetime s = "2012-06-11 12:20:36" d = datetime.strptime(s, "%Y-%m-%d %H:%M:%S") print d # => 2012-06-11 12:20:36 ruby require 'date' s = "2012-06-11 12:20:36" d = DateTime.strptime(s, "%Y-%m-%d %H:%M:%S") print…

rackhubでrails+nginx+unicornを80ポートで動かしてみたメモ

便利スクリプトがgistに公開されてるんで、基本的に使ってみただけなんですが、いくつか気づいた点もあったのでメモしておきます。 https://gist.github.com/2129714 rackを作成したらsshでログインして、railsインストールしてrails newします gem install …

rackhubを触ってみたメモ

ちらほら記事を目にするrackhubをちょっと試してみました。http://rackhub.net/ トップページの「今すぐ始める!」ボタンを押して、ユーザー登録画面に遷移します ユーザー名、メールアドレス、パスワードを入力し、登録ボタンを押します。 ユーザー登録が完…

辞書/ハッシュのデフォルト値

pythonの辞書にはsetdefaultという便利なメソッドがあって、キーに対する値がないときのデフォルト値を渡すことができる data = [('japan', 'tokyo'), ('uk', 'london'), ('japan', 'osaka')] h = {} for country, city in data: h.setdefault(country, []).…

ユニコードと文字を相互変換する

rubyで文字の入力チェックとかゴニョゴニョやってたのでメモ # ruby # 文字をユニコードのコードポイントに 'あ'.unpack('U').first # => 12354 # 16進数 12354.to_s(16) # => "3042" # ユニコードのコードポイントを文字に [0x3042].pack('U') # => "あ" つ…

Rubyでhideshow.elのフォールディングが効かない件

普段fold-dwim.el経由でhideshow.elを使ってます。 で、先日ひさびさにrubyコードを読んでて気づいたんですが、ruby-modeでのフォールディングは対応していないので効きません。 ちょっと調べたところ、以下の情報を見つけましたElisp/hideshow.el http://ww…

Python、Rubyでディレクトリの存在確認をする

ruby FileTest.directory?('/Applications') # => true FileTest.directory?('/Application') # => false python import os os.path.isdir('/Applications') # => True os.path.isdir('/Application') # => False

Ruby,Pythonで動的プロキシ

メタプログラミングRubyで動的プロキシというものが紹介されていますどのメソッドにも当てはまらないメッセージを他のオブジェクトに委譲する、というものです下記はメタプログラミングRubyで紹介されているサンプルコードとほぼ同じものです class MyDynami…

Ruby、Pythonで動的ディスパッチ/動的メソッド定義

動的ディスパッチ 動的ディスパッチは、「実行時に呼び出すメソッドを決める」ことを指します。 rubyではsendによって動的ディスパッチができます method_to_call = :upcase obj = "abc" obj.send(method_to_call) # => "ABC" pythonではメソッドがオブジェ…

Ruby、Pythonでインスタンス変数を動的に取得/設定する

ちょっと前まではrubyで、最近はpythonで仕事をしているので、rubyでやっていたアレ、pythonだとどうやるんだろ?と思うことがたまにあります。 逆にpython書いてて、あれこれrubyで(ry とか で、インスタンス変数の操作ですが、 pythonではあらかじめ定義を…

Ruby、Pythonでクラスのインスタンスメソッドを追加する

ちょっと前まではrubyで、最近はpythonで仕事をしているので、rubyでやっていたアレ、pythonだとどうやるんだろ?と思うことがたまにあります。 で、クラスへのインスタンスメソッド追加ですが、 rubyではオープンクラスによって、インスタンスメソッドが追…

Python、Ruby、Node.jsで1分後、1時間後、1日後の日付を求める

python from datetime import datetime, timedelta today = datetime.today() today + timedelta(minutes=1) # => 1分後 today + timedelta(hours=1) # => 1時間後 today + timedelta(days=1) # => 1日後 ruby require 'date' today = DateTime.now() today …

ruby、pythonのハッシュ/辞書の値取得

rubyにばかり慣れていたので、pythonの辞書から値を取得しようとして、キーがない場合にErrorになることに、ちょっとだけとまどいました。 せっかくなのでハッシュ/辞書の扱い方のメモを残しておきます。 python my_dict = {"a": 1, "b": 2} # 値の取得 prin…

rubyでメソッドの前処理、後処理を行うメモ

module Foo module PreExtension def method p " pre " super end end module Base def method p " base " end end module PostExtension def method super p " post " end end include Base include PostExtension include PreExtension end class Bar incl…

ワンライナーで画像をbase64エンコード

rubyだと ruby -r base64 -e "print Base64.encode64(File.new('test.jpg').read)" もしくは ruby -e "print [File.new('test.jpg').read].pack('m')" pythonだと python -m base64 < test.jpg rubyだと60文字ごと、pythonだと76文字ごとに改行コードが入り…

python、rubyで辞書、ハッシュを走査する

keyとvalueを取得する pythonはiteritemsを使います myDict = {"a": 1, "b": 2, "c": 3} for key, value in myDict.iteritems(): print("%s %s" % (key, value)) # => a 1 # => c 3 # => b 2 rubyはeachを使います myHash = {"a" => 1, "b" => 2, "c" => 3} …

underscore.jsのbindとカリー化

underscore.jsのbindについてのメモです。 underscore.jsのbind 第1引数の関数を実行する「関数」を返す 第1引数の関数内の「this」は第2引数の値が使われる コメントにある通り、第3引数以降を渡すとカリー化ができます。 定義は以下の通りです。 // Create…

rubyでやってたアレ、pythonでどうやる? 〜 リストの複製

rubyで ary = [1,2,3] # => [1, 2, 3] ary.object_id # => 2168514860 # 代入しても ary2 = ary # => [1, 2, 3] # 参照先は同じ ary2.object_id # => 2168514860 # dupだと ary3 = ary.dup # => [1, 2, 3] # 新しいリストオブジェクトになる ary3.object_id …

rubyでやってたアレ、pythonでどうやる?

最近pythonでの仕事を初めて「rubyでやってたアレ、どうやるんだろう」と思う機会が何度かあったのでまとめておく select rubyで ary = [1,2,3,4,5,6] ary.select { |e| e % 2 == 0 } # => [2,4,6] pythonで ary = [1,2,3,4,5,6] # リスト内包表記で [e for …

rubyとpythonでURLエンコード

最近ちょっとpythonを触ってるので、覚えたことをメモしておく。rubyの場合 require 'uri' require 'kconv' URI.encode('あいうえお') #=> "%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A" URI.encode('あいうえお'.toeuc) #=> "%A4%A2%A4%A4%A4%A6%A4%A8%…

apnsのインストールメモ

gem install apnsで入れると、feedback serviceに対応したコミットが入ってなかったので ソースを落としてインスール。 wget --no-check-certificate -O apns.tar.gz https://github.com/jpoz/APNS/tarball/master tar zxvf apns.tar.gz cd jpoz-APNS-68be88…

sqlite3-rubyのインストール

以下のようなエラーが出た場合は example% sudo gem install sqlite3-ruby Building native extensions. This could take a while... ERROR: Error installing sqlite3-ruby: ERROR: Failed to build gem native extension./usr/local/bin/ruby extconf.rb c…

script/consoleでエラー

先日セットアップしたdebian lennyのrails環境でscript/consoleをたたくと以下のようなエラーが出た。 % ruby -v ruby 1.9.2dev (2010-01-05 trunk 26244) [i686-linux] % rails -v Rails 2.3.5% script/console Loading development environment (Rails 2.3…