ここ数日続いていたHerokuとの戦いがひとまず決着したので、ここに記す。 〜あらすじ〜 紆余曲折の3日間。 ■Windows 最初の戦場はWindows。 heroku create までは何の問題もなかったが、 git push heroku 時に、秘密鍵のパーミッションが600でないと責めら…
単体テストを書くとき、よく問題となるのがPrivateメソッドの扱いです。PublicメソッドだけでなくPrivateメソッドまでテストする場合、大まかに分けて2つのやり方があります。 プロダクトコードを書き換えてテストする プロダクトコードは書き換えずにテス…
ソフトウェアのプロダクトキーのような文字列を自動生成するスクリプトを書いたのでメモ。 とりあえず動くレベルのコードですが。 # 使用する文字のリスト list = [] # リストに数値を追加 0.upto(9) do |i| list << i.to_s end # リストにアルファベット(…
フォルダを削除しようとしたら、中身のファイルは消せたのに空のフォルダが残ってしまった。なんとも中途半端で、これなら消さない方がよかった・・。そんな経験ありませんか? この現象は、そのフォルダがなんらかの形で使用されている場合に起こります。い…
前回、コンストラクタの代わりにCreation Methodを使用したインスタンス生成を行いました。しかし、new以外のインスタンス化は全体の統一性を損なうとのご意見が出されたため、別の方法を考えることにします。 共通部分をくくるという発想はよかったとのこと…
(V)o\o(V): ホッホッホ。 (o|o): 出たな、バル(以下略)! (V)o\o(V): 分身の術。 (o|o): ふっ、かかったな! (V)o\o(V): ホ? (o|o): 先日、オマエのソースコードを手に入れたのだ! (V)o\o(V): ホッホー。 (o|o): どれが本物かなんて一目瞭然!ど…
今日の札幌は猛暑まっさかさまだったようですが、クーラーの効いた部屋にリアル囚われていた私は気づきませんでしたすいません。 今回はWebサービスの概要について学習します。 単にWebサービスといわれても、Webがサービスしてくれるなんて当たり前ジャンっ…
巷では、リモートやらクラウドやらとWebまっさかさまですねこんばんは。 Web開発と聞くと逃げ出したくなる私ですが、いよいよ必要に迫られてしまったので、受けて立つことにしました。 まずは、差し当たり必要なWebサービスの学習を始めたいと思います。今ま…
一般に、条件式の書き方は2通りあります。 (条件式とは、if (この部分!)then です) 比較演算子や論理演算子を使う(true か false) 変数や定数を単項で使う(値) Rubyでは、Boolean型に加え、どんな値でも条件式にできます。 (言語によっては、Bool…
複数のディレクトリから同じ名前のファイルを一つのディレクトリに集めるスクリプトです。同じ名前だと上書きされてしまうので、ファイル名はディレクトリ名にしています。当然ながら拡張子はそのままです。 require 'fileutils' include FileUtils CURRENT_…
スはスペックのス〜RSpecによるテスト駆動開発の実演〜 http://www.nicovideo.jp/watch/sm2370458 を見ながらやってみた。 ■Windowsで初心者(Like Me)がやるときのポイント 色はあきらめる;; game.rbとgame_spec.rbは同じフォルダに置く game_spec.rbでreq…
Webページのテキストの単語部分をダブルクリックすることで、自動で小窓に翻訳結果を表示させることができるFirefoxアドオン「Dictionary Tooltip」のご紹介です。 https://addons.mozilla.org/ja/firefox/addon/1171/ ※執筆時の最新バージョンは1.6.1です ■…
Webページやプレゼンなど、液晶画面への表示に適したフォント「メイリオ」のご紹介です。 【※注意 プレゼンファイルに使うと別PCで見たときレイアウト崩れるかもです。公開の際はPDF化推奨】 日本語フォント・メイリオView more presentations from myokoym.…
PDF変換とプレゼン資料作成にはまりました。 バージョン管理入門View more presentations from myokoym. ■参考 高橋メソッドhttp://www.rubycolor.org/takahashi/ ja: OpenOffice.org 日本語プロジェクトhttp://ja.openoffice.org/ XLsoft エクセルソフト : …
オープンソースカンファレンス2010北海道 http://www.ospn.jp/osc2010-do/ に行ってきたので、自分なりにまとめてみます。 まずは朝一のセッション。 【企画セミナー】「僕たちは札幌で/僕たちは札幌から - We Think, We Act」 担当:一般社団法人LOCAL 講師…
Live HTTP headers https://addons.mozilla.org/ja/firefox/addon/3829/ 言わずと知れたHTTPヘッダ閲覧ツール。次々と流れていくヘッダの波に対抗できる動体視力の持ち主が使うと、真の力を発揮する。逆に言うと、上級者向け。 HttpFox GOOD! https://addons…
以下のスクリプトをコマンドラインで走らせるだけ。 ruby -Ks -e "require 'rubygems';require 'win32/clipboard';Win32::Clipboard.set_data(Time.now.strftime('%Y%m%d%H%M%S'))"ただし準備が必要。 ※以降は ActiveScriptRuby 1.8.7 の使用を前提とします…
MISSION: リリース間近の大規模プログラムに作為的バグが混入しているとの報告があった。わたしは、30分以内に何百万というファイル群から「@^-^@」という文字列が含まれたXMLファイルを探し出さなれけばならない。しかも、途中で改行されて @^ -^@いたり…
プログラマにとって、ソースコードのバックアップやバージョン管理は重要です。しかし、個人の小さなプロジェクトなど、CVS・Subversion・Gitといった大掛かりなソフトを使うほどでもない、でも手作業は面堂・・。そんな私のために、バックアップおよびバー…
http://d.hatena.ne.jp/myokoym/20100425/1272202028の Dir.glob バージョン。 def dir_size(path) expath = File.expand_path(path) sum = 0 Dir.glob("#{expath}/**/*") do |fn| # next if File.directory?(fn) sum += File.stat(fn).size end sum end か…
Firefoxのアドオン話。 「Tab Mix Plus」と「ツリー型タブ」を組み合わせると、ツリーな上にロケーションバーと検索バーの挙動を変えれたりして便利なのですが、先週のアップデートで具合が悪くなってしまいました。 TabMixPlusのバージョンを0.3.8.2から0.3…
Railsをはじめたので、eRuby(ERB)のおべんきょう。今回は、if修飾子の使い方について。 ふつうに こんばんは! と書くと、 「シンタックスエラー 終わりがない」 となってしまう。どうも普通のif文として解釈されている様子。 そこで仕方なく と書くとうま…
文字列が数字のみで構成されているかのチェックは簡単ですが、数値として正しいかどうかのチェックは複雑です。専用の関数が用意されている言語もありますが、細かい動作(空文字の場合どうなるかなど)が不明確だったりするので、自前で用意するのが確実だ…
こんばんは。irb、使ってますか? irbでは複数行に渡るメソッド定義が可能です。しかし、部分的に修正する場合でも、全て書き直して再定義しなければなりません(たぶん)。 そこで、今回のtipsです。メソッドを定義する際、無理やり一行で記述します。あと…
レシーバに変更がなかった場合の動きが異なります。 reject! : nilを返す delete_if : レシーバを返す破壊的メソッド全てが、破壊されなかった場合にnilを返すわけではないようです。間違えて覚えていたのが、リファレンスマニュアルを眺めていて発覚。バ…
エクスプローラがディレクトリサイズの一覧を表示してくれないので、Rubyで書きました。 まずは、ひとつのディレクトリのサイズを求めるメソッドです。 def dir_size(dir_path) dir_size = 0 Dir.entries(dir_path).reject{|x|/^\.+$/=~x}.each do |file_nam…
配列は、最も基本的なデータ構造です。Rubyの配列は、「可変長」「イテレータが簡単」などの理由で、利便性が高くなっています。 配列のプログラム内での使い方ですが、まずは配列を作成しなければなりません。一般的には、 [1, 2, 3] と記述します。角括弧…
今回は、いわゆるワンライナーに挑戦してみます。お題は、前々回の、ファイルをリネームするプログラムです。 Dir.entries('./').reject{|x|/\.$/=~x}.sort_by{|fname|File.stat('./'+fname).mtime}.each_with_index{|fname,index|File.rename('./'+fname,'.…
一般的なプログラミングの世界では、DRY(Don't repeat yourself)の原則やらOAOO(Once and Only Once)の原則やらで言われているように、コードの重複は避けるべきという考え方が主流です。 例えば、変数「a」と変数「b」の内容を出力したいとしましょう。その…
li{ margin-bottom: 10px; } #!ruby -Kspath = ARGV[0] #末尾に"\"を付加することfnames = Dir.entries(path) fnames.delete_if { |x| /.*\.$/ =~ x }fnames.sort! do |a, b| File.stat(path + a).mtime.strftime("%Y%m%d%H%M%S") File.stat(path + b).mtime…