2012-04-26
Ruby1.9でcsvファイルをダウンロード(エンコード問題にも対応)
Ruby1.9系 Rails3でcsvファイルをダウンロードする(エンコード問題にも対応)
Rails 3.2.3
ruby 1.9.3
下記ソースでひとまず動いている
require 'kconv' require 'csv' columns = Person.all file_name = Kconv.kconv("sample.csv", Kconv::SJIS) header = ["名前1", "名前2", "登録日"] #※1 csv_data = CSV.generate("", {:encoding => 'sjis', :row_sep => "\r\n", :headers => header, :write_headers => true}) do |csv| columns.each do |line| column = [] column << line[:name].encode('UTF-8','Shift_JIS') #※2 column << line[:name].force_encoding('UTF-8') #※3 column << line[:created_at].strftime("%Y年%m月%d日") csv << column end end #※4 csv_data = csv_data.tosjis #※5 send_data(csv_data, :type => 'text/csv; charset=shift_jis; header=present', :filename => file_name)
※1 :encoding ・・・ここで指定してもsjisでファイル生成されなかった。なんで?なので※4で対応
:row_sep ・・・改行コードの指定。上はCR+LFの場合。
:headers ・・・配列でヘッダを指定。
:write_headers ・・・ヘッダの有無を指定。
※2 下記のようなエラーが出た場合
invalid byte sequence in UTF-8
※3 下記のようなエラーが出た場合
http://blog.livedoor.jp/yakisobakintoki/archives/51075070.html
incompatible character encodings: UTF-8 and ASCII-8BIT C:/Ruby193/lib/ruby/1.9.1/csv.rb:1729:in `join' C:/Ruby193/lib/ruby/1.9.1/csv.rb:1729:in `<<'
2と3の違いはよくわからない...
2011-04-27
Colud Foundry を試してみた(Windows編)
Cloud Foundry上にアプリを構築をやってみた(Windows編)
VMwareが始めたPaaS "Cloud Foundry"を試しに使ってみる。
最初は英語のマニュアルしかなく、アカウントが発行されるまでのつなぎで
訳したりしてたら、日本語訳がコミュニティサイトに登場↓↓
でもWindows上の構築ではないので、Windows版として載せます。
(参考:日本人のツィート)http://togetter.com/li/123954
(追記4/26 日本語訳されたのが登場したので、そちらを見てください。)
(追記4/27 アカウントが届いた方々が続々と。参考に。)
http://june29.jp/2011/04/24/rails-sinatra-node-on-cloudfoundry/
■何するの?
Rubyを使ってCloud Foundryにアプリを乗せます。その手順が上記pdfに載っています。
英語だったり、コードがWin版でなかったりするので。
■その前に・・・
・前置きで重要なのは以下の箇所
To use the VMware hosted Cloud Foundry cloud, you must obtain an account from the Cloud Foundry website.
(「Cloud FoundryのWebサイトからアカウント取得して」とある。)
http://www.cloudfoundry.comからSignUpすると、メールが一先ず届く。
それとは別にアカウントが書いてあるメールが届くはず(申請からまる一週間でようやく来た)。
Windows:Download RubyInstaller from http://www.rubyinstaller.org/
■Installation:
※Cドライブ
�プロキシ設定をしている場合、
set http_proxy=http://プロキシ:ポート番号/
gem install vmc ※sudoは要らない
�環境変数パスの設定 ⇒ 方法 http://www.atmarkit.co.jp/fwin2k/win2ktips/189setenvv/setenv.html
C:\Ruby187\lib\ruby\gems\1.8\gems\bin
※実行するvmcファイルまでのパスを入力
�コマンドプロンプトを一回閉じて、また開く
環境変数を適用させる目的。
(※プロキシ設定をしている場合、もう一度�をする必要あり)
�[2]APIの何か
vmc target api.cloudfoundry.com
�[3]ログイン 下記のコマンドを打つとアカウントとパスの入力に移る
vmc login
英文 http://www.cloudfoundry.comに登録されたメールアドレスとパスワードを入力しろとある。
�[4]フォルダ作成
cd /
mkdir hello
cd hello
※英文 上述のコマンドでrootにディレクトリ作成する。任意の場所でもいいよ。
�[5]英文 コードまたはテキストエディタに次のように入力し、さっき(�)作成したフォルダの配下に"hello.rb"という名前で新規保存する。
require 'sinatra' get '/' do "Hello from Cloud Foundry" end
�[6]設定もろもろ
vmc push
※〜?[Yn]と聞かれている箇所は何も入力せず一先ずEnter押下
「Application Name:」アプリケーション名入力
Uploading Applicationは多少時間がかかる。
�[7]英文 ブラウザ起動して、先ほど(�)設定したURLに遷移
�[8]hello.rbを開いて、メッセージを編集して、上書き保存
�[9]変更をデプロイする
vmc update hello
英文はアプリ名とかhelloのままでというようなことが書いてあるので、手順通りしていれば気にしなくてよい。
�[10]英文 デプロイしたアプリのテストをするので、ブラウザの更新をする。変更した文字が表示されていたらOK。
�ヘルプコマンド
vmc‐h
アプリケーション名はユニークである必要があるため、helloにすると怒られる。
2011-03-13
2011-02-10
JavaScript : bind()
bindメソッド
var name = new Person('man'); setTimeout(name.sayMyName, 10);
name.sayMyNameをsetTimeoutに渡した場合、渡されるのは関数オブジェクトだけで、
nameオブジェクトとは切り離される。
この場合、thisを解決できず、this.nameはundefinedと表示されてしまう。
ここでbindメソッドを使う。bindメソッドを使うとthisを束縛する。
var name = new Person('man'); setTimeout(name.sayMyName.bind(name), 10);
2011-02-07
GoogleChromeの設定をバックアップ
GoogleChromeBackUp
GoogleChromeでFireFoxのMozBackupにあたるのがGoogleChromeBackUp。
DL元のサイトもウィザードも英語だが読まずともできる。
http://www.parhelia-tools.com/products/gcb/googlechrome.aspx