カテゴリ: FLASH (AS3)
投稿者: terada
プロジェクターやディスプレイなど、サブディスプレイをつないでFlashコンテンツをフルスクリーンにしつつ、本体のディスプレイで別の操作をしたいような場合に気をつけなければならないことをメモしておきます。

<問題>
サブディスプレイでブラウザでFlashのフルスクリーンモードモードにし、メインの方で別のウィンドウをアクティブにすると(つまりFlashのフォーカスが外れると)、フルスクリーンモードが解除されてしまいます。サブとメインを入れ替えても同じでした。

これだと、別のディスプレイでコンテンツの入替えなどの操作ができないので、以外に不便ですし、この仕様は結構気づきにくいのではないかと思います。僕も、以前イベント当日の設営の段階までこのことに気づいておらず苦労した経験があります・・・。

<解決方法>
・Flash付属のスタンドアローンのFlashPlayerを使う
・Chromeの「表示>プレゼンテーションモードを開始」でフルスクリーンにする

要はプラグインのFlashPlayerには制限があるので、それ以外の方法でやりましょう。ということですね。
カテゴリ: Terminal
投稿者: terada
Tigというのをいれると、ターミナルからGtiのコミット情報をきれいに閲覧できるようになって便利なのでメモです。

■ インストール方法(Macportsから)
sudo port install tig


■ 使い方
gitのリポジトリがある場所でこれだけ。
tig

こんな感じで色分けして閲覧できます。
Tig
カテゴリ: Ruby on Rails
投稿者: terada
Railsのルート設定をなんとかして、下記のようにアクセスできるようにするためのメモです。

http://app.com/hoge/someone@mail.com

GETパラメータにメールアドレスを含ませたかったのですが、この例のように末尾のパラメータがドットを含む場合、何もしないとデフォルトで(.:format)が設定されているために「net」の部分がformatだと勘違いされたり、そもそもパラメーター内にドット「.」が許可されていなかったりしたので、そこら辺をなんとかするためのノウハウです。

まず、

:format=>false

で、デフォルトで設定されるオプションパラメータを無効にします。
次に、

:mail => /.*/

で、ドット「.」を許可します。
最終的にこんな感じでOKでした。

match 'hoge/:mail' => 'hoge#myaction', :via => 'get', :as => 'my_action', :format=>false, :mail => /.*/

参考
カテゴリ: Ruby on Rails
投稿者: terada
Heroku(Cedar)でRails3で作成したアプリケーションを動作させる時、ローカル環境ではOKなのに下記のようなエラーが出ることがあります。

Application Error

An error occurred in the application and your page could not be served. Please try again in a few moments.
If you are the application owner, check your logs for details.


Application Error

おそらくソースコード内に日本語が入っている場合だと思うのですが、コントローラーの1行目に下記を追加しないと上記エラーではまることがあります。ログを見て、変なところでSyntaxErrorが発生している場合は、これが原因の可能性あります。

# -*- encoding: utf-8 -*-
カテゴリ: Ruby on Rails
投稿者: terada
RailsのRakeタスクからコントローラー・アクションを呼び出す例です。
Controllerってシングルトンなのかな?とか、ちと理解不足ですが、とりあえずHeroku Schedulerからこのタスクを呼び出して、任意のコントローラーのアクションが呼び出されることを確認しました。

desc "This task is call controller's action."
task :hoge => :environment do
_controller = MyController.new
_controller.fuge
end
カテゴリ: Server
投稿者: terada
現在地の絶対パスを出力
今いるディレクトリのパスを出力したい時。
pwd


環境変数の一覧を出力
.bashrcなどを編集してその結果を見たい場合は、一旦シェルからのログアウトが必要かも。
printenv


パーミッション情報などを出力
ls -l


どこにインストールされているかを調べる
例:GEMの場所を調べたい場合
which gem

例:GEMでインストールされたRailsの場所を調べたい場合
gem which rails


mysqlのソケットの位置を確認
mysql_config --socket


再帰的にカレントディレクトリ内のファイル(条件:*.rb)の権限変更
find ./ -name *.rb -type f -print | xargs chmod 755

参考サイト

パッケージがインストールされているかの確認
rpm -qa httpd


シンボリックリンクの作成
ln -s (リンクを張られるファイル名) (リンク名)


ログ
# messages
vi /var/log/messages
# secure(アタックされた履歴などがわかる)
vi /var/log/secure


Apache操作(さくらVPS)
# インストール
yum install httpd -y
# 自動起動設定ON
chkconfig –level 345 httpd on
# 設定ファイル編集
vi /etc/httpd/conf/httpd.conf
# 起動
/etc/init.d/httpd start


vi操作
# 挿入モード
i
# 終了
:q
# 編集内容を保存して終了
:wq
# 編集内容を破棄して終了
:w!
# 行削除
dd
# 全削除
:%d
# 検索
/
# n行目に移動(nを省略すると最終行へ)
[n]G


カテゴリ: Server
投稿者: terada
※ 結局Rails3アプリケーションを動作させるところまではいけていません…。

-

前回までで、一応CORESERVERにRails3のインストールは完了しました。 rails new testapp などのようにしてアプリケーションの作成までは問題なくできたのですが、generateコマンドを実行しようとしたときにエラーが出てしまいました。

例えば、
rails generate model hoge title:string

としたときに、
'autodetect': Could not find a JavaScript runtime.

というエラーが出ます。

この記事などでは、Gemfileに下記のような記述をしてbundleをし直すことで回避できるとありました。エラー文の中に「See https://github.com/sstephenson/execjs for a list of available runtimes.」とあったので、こちらを参照すると、ExecJSにはランタイムJavascript(RubyからJavascriptを実行するエンジンのようなもの?)が必要で、READMEの中にいくつか候補があり、そのなかにtherubyracerがありました。

gem 'therubyracer'
gem 'execjs'

※ 私の環境ではexecjsは、はじめからバンドルされていたので、2行目は省略しました。
Gemfileを上書き保存したら、下記を実行します。
bundle install

が、私の環境ではbundle show で確認すると、きちんと2つともバンドルされているはずなのに同じエラーが出ました。「therubyracer」が、どうもうまく読み込めていないのかもしれません。他の記事を参考に、Node.jsを入れてみるとうまく行きました。

Node.jsのインストール
cd ~
mkdir lib/nodejs
cd tmp
git clone http://github.com/ry/node.git
cd node
export PREFIX=~/lib/nodejs
./configure
make
make install
echo "export PATH=~/lib/nodejs/bin:$PATH" >> ~/.bashrc


どうしてバンドルされているはずのtherubyracerが認識されていないのか、しっかり原因を突き止めてられておらずちょっと気持ち悪いのですが、とりあえずRails3はランタイムJavascriptが必要ということだけ頭に入れておいて、先に進みたいと思います。

参考:
"Could not find a JavaScript runtime" と Rails 3.1 起動に失敗する件


【追記】もしかしたら、※の部分で、2行目を省略しなかったらもしかしたらうまくいっていたのかも。依存関係を考えると実行順序が間違っていた可能性もあるかもしれない・・・。
カテゴリ: Server
投稿者: terada
※ 結局Rails3アプリケーションを動作させるところまではいけていません…。

-

CORESERVERにgemをインストールします。最新のバージョンはこちらで確認してください。今回は、v1.8.11をインストールしました。

3行目でパッケージの取得用に tmp という一時的なディレクトリを作成していますが、既にある場合は次の行に進んでください。
最後の行で ~/lib/gem というフォルダへインストールしています。

ssh 【ログイン名】@【ホスト名】
mkdir lib/gem
mkdir tmp
cd tmp
wget http://production.cf.rubygems.org/rubygems/rubygems-1.8.11.tgz
tar zxvf rubygems-1.8.11.tgz
cd rubygems-1.8.11
ruby setup.rb --prefix=$HOME/lib/gem/


これでインストール完了でした。
何故かパスを通さなくてもOKだったのが謎です・・・。もしかして、最初から入っていたのでしょうか。下記のコマンドでバージョンが確認できない場合は、こちらの記事に習って $HOME/lib/gem/ へのパスを通してみてください。

gem -v




Railsをインストール。

gem install rails


これでCORESERVERにRails 3.1.1がインストールできました。


参考:
レンタルサーバでRuby on Railsをインストール
カテゴリ: Server
投稿者: terada
※ 結局Rails3アプリケーションを動作させるところまではいけていません…。

-

2011年11月現在、CORESERVERにはRuby1.8.5が標準でインストールされています。ただ、Rails3を動作させるためには1.8.7以上が必要なので、これをアップグレード(というか、別バージョンのRubyのインストールを)したいと思います。

手順としては、
1)SSHでリモートに接続
2)インストールしたいrubyのパッケージをダウンロード
3)インストール先を指定してインストール
4)パスを通す

です。

1)SSHでリモートに接続

ssh 【ログイン名】@【ホスト名】


2)インストールしたいrubyのパッケージをダウンロード

リモートのユーザのホームディレクトリにインストール先ディレクトリの作成し、パッケージを一時的に置くためのディレクトリ作成します。

mkdir lib
mkdir lib/ruby
mkdir tmp


tmpにrubyのパッケージを持って解凍します。
rubyの最新バージョンをこちらで確認して、バージョン名などは適宜変更してください。

cd tmp
wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.gz
tar zxvf ruby-1.8.7-p249.tar.gz



3)インストール先を指定してインストール

解凍したディレクトリに移動して、インストール先に2で作成したディレクトリ(~/lib/ruby)を指定します。

cd ruby-1.8.7-p249
./configure -prefix=/virtual/【ログイン名】/lib/ruby


インストールします。

make
make install

~/lib/ruby を確認すると、いくつかのディレクトリが作成されているはずです。もし作成されていなければ、手順を確認してください。

OKでしたら、次の手順のためにユーザのホームディレクトリに移動します。

cd ~



4)パスを通す

3でインストールした ~/lib/ruby/bin/ を環境変数として登録するために.bashrcに書き込みます。
FTPソフトでpublic_htmlディレクトリと同階層に .bashrc があるか確認してください。
なければ、そのままFTPソフトから新規ファイルを作成して「.bashrc」という名前にするか、
以下のコマンドでファイルを作成します。

touch .bashrc

次に、このファイルに内容を書き込みます。

echo "export PATH=$HOME/lib/ruby/bin/:$PATH" >> .bashrc

.bashrc を確認すると、$HOMEや$PATHの部分がそれぞれの環境に応じて置き換えられた文字列が出力されているはずです。

例↓
export PATH=/virtual/【ログイン名】/lib/ruby/bin/:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin:/usr/local/mysql/bin:/usr/local/mysql/libexec:/usr/local/pgsql/bin


これで、パスが通ったので、バージョンを確認してみましょう。

ruby -v


お目当てのバージョンが出力されていたら完了です。


参考:
CORESERVERでMechanize-0.9.3を動かす
CORESERVER に Ruby 1.8.7 をインストール
カテゴリ: MODx
投稿者: terada
modx revo用にGoogleMapsAPIを使って管理画面から簡単に緯度経度の入力ができるTVインプットを作ったので、公開します。

LatLngTV

地図上のマーカーをドラッグして任意の位置に移動すると、その場所の緯度経度がセットされます。GoogleMapsで使いやすいように、値は「緯度,軽度」のようにカンマ区切りの文字列でセットされます。また、住所やランドマーク名などを検索することができる検索機能もついています。

LatLngTV.zip[47clicks]

<インストール方法>
解凍後、以下の2つのファイルをそれぞれ指定のフォルダにアップロードするだけです。

latlng.php ↓

core/model/modx/processors/element/tv/renders/mgr/input/



latlng.tpl ↓

manager/templates/default/element/tv/renders/input/



管理画面のTVインプットのプルダウンメニューの中に「latlng」というのが追加されているはずなので選択してください。


そのうちにパッケージマネージャーからもインストールできるようにしようと思います。今、最初のデフォルトの位置がソースコードいじらないと変えられないので、管理画面からも設定できるようにしたいです。