プログラミングと目的
「桐島、Rubyやめるってよ」ってプレゼンが有って、まぁ論理的じゃなくふんわりしててあんま好きじゃないんだけど、それはそれとして、職業プログラマなら目的なかったらアホだけど、自宅でやるならアリだよね。
- 計算が速い
- 決められた順番に間違いなく実行してくれる
- 繰り返しに強い
- 寝ないで働ける
- 大量の情報を扱っても疲れない
などなど。
これらの方面では成果を残せる可能性があるわけだ。インターネットとその先のデバイスを含めるとまぁ膨大なことができる。が、汎用ロボットは発達してないので物資界への関わりは限定的かな。そして人工知能はまだ居ないので創造性のあることはできない。あと、非プログラマの人々の力がないとできないことっていっぱいあるよね。
というわけで、成果がコンピュータに関わる範囲で収まるので満足できる人には、目的なしでプログラミングに打ち込むのもいいんじゃないでしょうか。
はてなダイアリーからはてなブログに移行した
記事だけでなくフィードのリダイレクトもしてくれるみたいなので助かる。
もうちょっとマメに書きます。
「ふーん、で、君はウェブサービスでどれが好きなの?」
「オウフwwwいわゆるストレートな質問キタコレですねwww
おっとっとwww拙者『キタコレ』などとついネット用語がwww
まあ拙者の場合ウェブサービス好きとは言っても、いわゆるビジネスとしてのウェブサービスでなく
メタSF作品として見ているちょっと変わり者ですのでwwwジェイン・マクゴニガルの影響がですねwwww
ドプフォwwwついマニアックな知識が出てしまいましたwwwいや失敬失敬www
まあソーシャルのメタファーとしてのFacebookは純粋によくできてるなと賞賛できますがwww
私みたいに一歩引いた見方をするとですねwwwポストTwitterのメタファーと
商業主義のキッチュさを引き継いだサービスとしてのですねwww
Instagramの文学性はですねwwww
フォカヌポウwww拙者これではまるでオタクみたいwww
拙者はオタクではござらんのでwwwコポォ」
Heroku に Rails 3.1 アプリを git push すると rake assets:precompile でエラーが出るときの対処法
Heroku で Rails 3.1 アプリを git push heroku master するとこんなエラーが出ることがあると思います。
-----> Preparing app for Rails asset pipeline Running: rake assets:precompile rake aborted! Failed to connect to a master node at localhost:27017 Tasks: TOP => environment (See full trace by running task with --trace) Precompiling assets failed, enabling runtime asset compilation Injecting rails31_enable_runtime_asset_compilation Please see this article for troubleshooting help: http://devcenter.heroku.com/articles/rails31_heroku_cedar#troubleshooting
で、その末尾に書いてある URL を読むと、どうもこのタスクが実行される時点では環境変数(heroku config で見れます)が存在してないらしい。なので、config/database.yml や config/mongoid.yml で、ENV["DATABASE_URL"] とか ENV["MONGOLAB_URI"] を使用してると、nil が返り空白になり、デフォルトアドレス・デフォルトポート(この場合は localhost:27017)を見に行ってコケるらしい。
んでもって、何もコミットせずに再度 git push heroku master とかしてみたら、"Everything up-to-date" とか出やがる。あー、git push 自体は受け入れられてるのね。
ってことで、
$ heroku run rake assets:precompile
と後付けでやったところ、うまく動きましたとさ、めでたしめでたし。
(staging 環境とか作ってる人は適当に --app つけたりして脳内で補って下さい)
Rails のモデル名・ファイル名・ディレクトリ名を一斉に変更するスクリプトを書いた(修正版)
Rails のモデル名変更スクリプトを、まだ名前を明かせぬ人と一緒にペアプロして作った。
全テスト、オールグリーンなので、多分大丈夫。まぁでも Git などの SCM は必須だねぇ。当然、無保証です。
あ、テーブル名・カラム名変更は誰か追加して完全版作ればいい。ウチは今 MongoDB なんで必要ないんすよー。
実行はこんな感じ。
$ rails runner ./script/rename Old New
肝心の内容は以下。
あー、変数名は before/after じゃなくて old/new の方が良かったなー。適当に直すがよろし。
script/rename:
#!/usr/bin/env ruby # coding: utf-8 old = ARGV[0] new = ARGV[1] if old.blank? || new.blank? STDERR.puts "Usage: rails runner ./script/rename old new" exit 1 end old = old.downcase new = new.downcase olds = old.pluralize news = new.pluralize def file_each(&block) Dir.glob('./**/*') do |file| next if file["script/"] next if file["Gemfile"] || file["Rakefile"] || file["Guardfile"] || file["config.ru"] next if file["vendor/"] next if file["config/"] && !file["routes.rb"] next if file["db/"] next if file["tmp/"] || file["log/"] || file["doc/"] next if file[".git/"] print "." yield file end puts end # ディレクトリ名を変更する puts "ディレクトリ名を変更しています" file_each do |file| next unless File.directory?(file) if file[olds] # 複数形を変更する File.rename(file, file.gsub(olds, news)) elsif file[old] # 単数形を変更する File.rename(file, file.gsub(old, new)) end end # ファイル名を変更する puts "ファイル名を変更しています" file_each do |file| next unless File.file?(file) if file[olds] # 複数形を変更する File.rename(file, file.gsub(olds, news)) elsif file[old] # 単数形を変更する File.rename(file, file.gsub(old, new)) end end # ファイルの中の文字列を変更する puts "ファイルを変更しています" file_each do |file| next unless (File.file?(file) && !File.extname(file).match(/\.(jpg|png|gif|ico)$/)) # 複数形を変更する system %Q|sed -i s/#{olds}/#{news}/g #{file}| system %Q|sed -i s/#{olds.capitalize}/#{news.capitalize}/g #{file}| # 単数形を変更する system %Q|sed -i s/#{old}/#{new}/g #{file}| system %Q|sed -i s/#{old.capitalize}/#{new.capitalize}/g #{file}| end
(11/29 修正:sed によるファイルの書き換えが sync する前に、ファイル名・ディレクトリ名の変更が走って中身が古いままだったので、sed の処理を後ろにまわした)
guard-spork なんか使ってる人は、再起動すれば、テスト通る。