TitaniumアプリでTwitpicにアップロードする際の注意点
Twipicに画像をアップロードする場合、1回目のアップロードは成功するが、
連続して2回目のアップロードをすると以下のエラーが発生します。
err code="1001" msg="Invalid twitter username or password"
解決方法はTitanium.Network.createHTTPClienのオプションを次のように
設定してあげるとうまくいきました。
function uploadToTwitPic(image) { var xhr = Titanium.Network.createHTTPClient({ enableKeepAlive:false // ここ追加 }); ... }
:Source
(旧) Cocoaの日々: Twitpicアップローダ開発(4) 2回目以降の認証失敗解決〜Keep-Aliveをオフにする
60秒以内に2回目のアップロードを行うとエラーになるようです。
Titaniumアプリを実機にインストールしようとしたらエラー
Titanium DeveloperでTitaniumアプリ(iPhone)を実機にインストールしようとしたところ、
以下のようなエラーが出てはまりました…
ERROR] Error: Traceback (most recent call last): File "/Library/Application Support/Titanium/mobilesdk/osx/1.6.2/iphone/builder.py", line 1238, in main execute_xcode("iphoneos%s" % iphone_version,args,False) File "/Library/Application Support/Titanium/mobilesdk/osx/1.6.2/iphone/builder.py", line 1012, in execute_xcode output = run.run(args,False,False,o) File "/Library/Application Support/Titanium/mobilesdk/osx/1.6.2/iphone/run.py", line 39, in run sys.exit(rc) SystemExit: 1
原因は「._app.js」にみたいなJSファイルがResourcesディレクトリにあるのが問題のようです。
※ちなみに「.DS_Store」は大丈夫でした。
$ ls -la total 84 drwxr-xr-x 4 takao takao 4096 2011-07-14 07:31 . drwxr-xr-x 4 takao takao 4096 2011-07-14 07:24 .. drwxr-xr-x 3 takao takao 4096 2011-07-14 07:20 android -rwxr--r-- 1 takao takao 4096 2011-07-14 07:31 ._app.js -rwxr--r-- 1 takao takao 1448 2011-07-14 07:31 app.js -rwxr--r-- 1 takao takao 4096 2011-07-14 07:24 ._configs.js -rwxr--r-- 1 takao takao 282 2011-07-14 06:29 configs.js -rwxr-xr-x 1 takao takao 1646 2011-07-14 06:29 dark_camera.png -rwxr-xr-x 1 takao takao 1466 2011-07-14 06:29 dark_list_add.png -rwxr-xr-x 1 takao takao 1324 2011-07-14 06:29 dark_list.png drwxr-xr-x 2 takao takao 4096 2011-05-22 02:31 iphone -rw-r--r-- 1 takao takao 1158 2011-07-14 07:20 KS_nav_ui.png -rw-r--r-- 1 takao takao 1074 2011-07-14 07:20 KS_nav_views.png -rwxr--r-- 1 takao takao 4096 2011-07-14 07:29 ._overlay.js -rwxr--r-- 1 takao takao 1104 2011-07-14 07:29 overlay.js -rwxr--r-- 1 takao takao 4096 2011-07-14 07:30 ._photo.js -rwxr--r-- 1 takao takao 3184 2011-07-14 07:30 photo.js -rw-r--r-- 1 takao takao 4096 2011-07-14 07:24 ._tab_item_photo.js -rw-r--r-- 1 takao takao 228 2011-07-14 06:29 tab_item_photo.js -rwxr--r-- 1 takao takao 4096 2011-07-14 07:30 ._win_item_photo.js -rwxr--r-- 1 takao takao 2377 2011-07-14 07:30 win_item_photo.js
TextMateで編集していたからかなー。不要なファイルを一括削除します。
$ rm ._* $ ls -la total 60 drwxr-xr-x 4 takao takao 4096 2011-07-14 07:57 . drwxr-xr-x 4 takao takao 4096 2011-07-14 07:24 .. drwxr-xr-x 3 takao takao 4096 2011-07-14 07:20 android -rwxr--r-- 1 takao takao 1448 2011-07-14 07:31 app.js -rwxr--r-- 1 takao takao 282 2011-07-14 06:29 configs.js -rwxr-xr-x 1 takao takao 1646 2011-07-14 06:29 dark_camera.png -rwxr-xr-x 1 takao takao 1466 2011-07-14 06:29 dark_list_add.png -rwxr-xr-x 1 takao takao 1324 2011-07-14 06:29 dark_list.png drwxr-xr-x 2 takao takao 4096 2011-05-22 02:31 iphone -rw-r--r-- 1 takao takao 1158 2011-07-14 07:20 KS_nav_ui.png -rw-r--r-- 1 takao takao 1074 2011-07-14 07:20 KS_nav_views.png -rwxr--r-- 1 takao takao 1104 2011-07-14 07:29 overlay.js -rwxr--r-- 1 takao takao 3184 2011-07-14 07:30 photo.js -rw-r--r-- 1 takao takao 228 2011-07-14 06:29 tab_item_photo.js -rwxr--r-- 1 takao takao 2377 2011-07-14 07:30 win_item_photo.js
改めて実行してみると、無事、Titaniumアプリをインストールすることができました。
※ 再実行する際にエラーがでる場合は、build/iphoneディレクトリのファイルを削除して
Titanium Developerを再起動してあげる必要がありました。
Google Chart Toolsを使ってグラフ表示する実装
Rails3.1でグラフ表示するgemを探しましたが、あまりメンテナンスされてなさそうだったので
Google Code PlaygroundのサンプルコードをHelperクラスに実装して、必要な部分だけ設定するような形にしてみました。
Source: 参考にしたサンプル
Google Code Playground
今回は、例として家計簿データを扱うモデル(Kakeibo)をカテゴリ毎(category_id)に集計して、
棒グラフを表示してみました。
app/views/layouts/application.html.erb
<script type="text/javascript" src="http://www.google.com/jsapi"></script> # 追加
app/views/xxx/xxx.html.haml
# viewの実装はシンプルに一行だけ、コントローラで設定した検索結果(モデルの配列)と # グラフのタイトルを引数で指定しています。 = bar_chart_by_category(@results, :title => 'カテゴリ別') # @resultsはコントローラで設定しています
app/helpers/xxx_helper.rb
def bar_chart_by_category(results, options={:title => 'bar chart'}) # 引数で渡されたモデルの配列をカテゴリでグルーピングして # 合計値を算出して、カテゴリ名を取得しています。 labels, data = [], [] results.group_by(&:category_id).each do |id, result| next if id.nil? data << result.sum(&:value) labels << "#{Category.find(id).name}" end # サンプルコードをコピペして、labels, data, titleを設定しているだけです。 html = javascript_tag <<"EOS" google.load('visualization', '1'); function drawVisualization() { var wrapper = new google.visualization.ChartWrapper({ chartType: 'ColumnChart', dataTable: [#{labels}, #{data}], options: { 'title': '#{options[:title]}' }, containerId: 'category' }); wrapper.draw(); } google.setOnLoadCallback(drawVisualization); EOS html << content_tag(:div, '', {:id => 'category', :style => "width: 600px; height: 400px;"}) end
Rails3.0.8で作成したアプリを3.1.0.RC4に移行しています
検索関連のgemでエラーになったので、修正方法をメモっておきます。
will_paginate, meta_searchでエラーになりました。エラー内容はそれぞれ以下の通り。
.will_paginate
/home/User/.rvm/gems/ruby-1.9.2-p180/gems/will_paginate-2.3.15/lib/will_paginate.rb:39:in `enable_activerecord': uninitialized constant ActiveRecord::Associations::AssociationCollection (NameError)
・meta_search
Completed 500 Internal Server Error in 8ms ArgumentError (ActiveRecord::Associations is not missing constant JoinDependency!):
修正方法はとりあえずgemが対応されるまでは、こんな感じでうまくいきました。
Gemfile
gem "meta_search", '1.1.0.pre' gem "will_paginate", :git => 'git://github.com/wantful/will_paginate.git'
3.1.0になったのを機にHamlを使っていこうってことで設定方法です。
Gemfile
gem "haml-rails"
hamlオプションを追加してあげるとviewをHamlで生成してくれます。
(オプション追加しなくても大丈夫っぽい。)
$ rails g scaffold dog name:string --haml invoke active_record create db/migrate/20110617222555_create_dogs.rb create app/models/dog.rb invoke test_unit create test/unit/dog_test.rb create test/fixtures/dogs.yml route resources :dogs invoke scaffold_controller create app/controllers/dogs_controller.rb invoke haml create app/views/dogs create app/views/dogs/index.html.haml create app/views/dogs/edit.html.haml create app/views/dogs/show.html.haml create app/views/dogs/new.html.haml create app/views/dogs/_form.html.haml invoke test_unit create test/functional/dogs_controller_test.rb invoke helper create app/helpers/dogs_helper.rb invoke test_unit create test/unit/helpers/dogs_helper_test.rb invoke assets create app/assets/javascripts/dogs.js.coffee invoke css create app/assets/stylesheets/dogs.css invoke css identical app/assets/stylesheets/scaffold.css
10分でSinatraアプリをHerokuにデプロイする
$ mkdir sandbox $ cd sandbox
以下、3つのファイルを作成します。
app.rb
require 'rubygems' require 'sinatra' get '/' do "Hello Sinatra" end
config.ru
# Ruby1.9.2ではロードパスにカレントディレクトリが含まれなくなったので、「'./app'」にする - require 'app' + require './app' run Sinatra::Application
.gems
sinatra
ローカルで動作確認
$ ruby app.rb
http://localhost:4567 にアクセスして、以下のように表示されればOK
herokuにデプロイ
$ git add. $ git commit -m 'initial commit'. $ herok create [app name] $ git push heroku master
VMWare Fusion3上のUbuntu11.04 ServerにRails開発環境をつくる
Server | Ubuntu から、
ubuntu-11.04-server-amd64.iso (CDイメージ)をダウンロードして、ディスクイメージからOSインストール
ssh
$ sudo apt-get install openssh-server
pkg install
$ sudo apt-get install build-essential bison openssl libreadline5 libreadline-dev curlgit zlib1g zlib1g-dev libssl-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev
samba
$ sudo apt-get install samba $ sudo smbpasswd -a [username] $ sudo mkdir /home/samba $ sudo chmod 777 /home/samba $ sudo nano /etc/samba/smb.conf
/etc/samba/smb.conf
workgroup = WORKGROUP hosts allow = 192.168.1. 127. [homes] browseable = no writable = yes create mask = 0744 directory mask = 0755 path = /home/samba guest ok = yes share modes = no
$ sudo /etc/init.d/smbd restart
rvm
$ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm) $ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile $ source .bash_profile $ type rvm | head -1 $ rvm install 1.9.2 $ rvm use 1.9.2 --default
$ gem install rails
:Source
まっさらな Ubuntu 11.04 の環境で Rails3 の動作環境を最低限整える - SmallStyle(2011-05-01)
GoogleにホスティングされているJSライブラリを使う
以下のページでHTMLタグを簡単にコピーできるようです。便利!
jQuery google api and other google hosted javascript libraries. - ScriptSrc.net
:Source
GoogleにホスティングされているjQuery等の便利JSタグを一瞬でコピーできる便利サイト「ScriptSrc.net」:phpspot開発日誌
:その他、参考サイト
ASCII.jp:40分で覚える!jQuery速習講座