2013年9月26日木曜日

tmux起動時にsshで自動でログインしログイン後にコマンドを実行する方法

■コマンド
touch start_tmux.sh
vim start_tmux.sh
#!/bin/sh
name="mywindow"
tmux new-window -n ${name}

tmux split-window -v
tmux split-window -v -t ${name}.0
tmux split-window -v -t ${name}.1
tmux split-window -v -t ${name}.1

tmux select-layout even-vertical

tmux send-keys -t ${name}.0 'ssh host1' C-m
tmux send-keys -t ${name}.1 'ssh host2' C-m
tmux send-keys -t ${name}.2 'ssh host3' C-m
tmux send-keys -t ${name}.3 'ssh host4' C-m
tmux send-keys -t ${name}.4 'ssh host5' C-m

sleep 5

tmux send-keys -t ${name}.0 'password1' C-m
tmux send-keys -t ${name}.1 'password2' C-m
tmux send-keys -t ${name}.2 'password3' C-m
tmux send-keys -t ${name}.3 'password4' C-m
tmux send-keys -t ${name}.4 'password5' C-m

sleep 2

tmux send-keys -t ${name}.0 'hostname' C-m
tmux send-keys -t ${name}.1 'hostname' C-m
tmux send-keys -t ${name}.2 'hostname' C-m
tmux send-keys -t ${name}.3 'hostname' C-m
tmux send-keys -t ${name}.4 'hostname' C-m
tmux
Ctrl+b, d で一回デタッチする
sh start_tmux.sh

■説明
  • send-keysを使ってtmuxで作成したタブとペインに対してコマンドを送ります
  • 一回tmuxのセッションを作成してその後にtmuxのsend-keysを実行するシェルスクリプトを実行します
  • sshのコマンドを実行したあとに5秒スリープしてますが、すぐにsend-keysでパスワードを送ってしまうとうまく動作しないのでスリープを入れます
  • 他のコマンドを続けて実行する場合も時間がかかるコマンドを実行する場合はsleepを入れないとうまく動作しない時があります
  • サンプルのスクリプトはsshでログインしたあとにhostnameコマンドでホスト名を表示するだけですが、続けてsend-keysすることもできます
  • タブは1つ作成してその中で5つのペインに分割します
  • 横に分割ペインはそのあとに等間隔に整えます
  • C-mはEnterと同じ意味です

2013年9月24日火曜日

Zabbixで日付付きのログファイルを監視する場合のちょっとしたコツ

例えば

/var/log/app/sample_app.YYYY-MM-DD.log

みたいな感じのログで日付でローテートしているログがあった場合に
Zabbixでログ監視をするアイテムを登録するときにアイテムキーの登録で正規表現を使ったりするとうまく監視ができない
(自分がやった限りでは正規表現を使ったキーだとうまく監視できませんでした)

そんな場合にちょっと工夫してやることで日付ローテートするログでも監視できるようになる

対処としてはログが存在しているサーバ側で以下のようなコマンドを実行してあげる

ln -nfs /var/log/app/sample_app.`date "+%Y-%m-%d"`.log /var/log/app/sample_app.log

要するに監視するログファイル名を固定するためにシンボリックリンクを使う
これでZabbixサーバ側のアイテムの設定では「sample_app.log」を監視するだけでよくなる

シンボリックリンクを張っている正規表現のコマンドもあくまでもサンプルなので、あとは必要に応じて正規表現の部分を変更すれば、大抵のファイル名には対応できると思う

P.S 20130925
リンクの切替は毎日実行しないとダメなのでcronを仕込んでおくといいと思います
1 0 * * * ln -nfs /var/log/app/sample_app.`date "+%Y-%m-%d"`.log /var/log/app/sample_app.log

参考にしてみてください

2013年9月23日月曜日

postfixでLISTENしているIPをlocalhostから0.0.0.0に変更する方法

netstat -an | grep 25

で以下のような設定にしたい場合
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN
↓
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN

vim /etc/postfix/main.cf
inet_interfaces = localhost
↓
inet_interfaces = all

service postfix restart

2013年9月22日日曜日

serverspecをインストールして試してみた

■環境
CentOS 5.9
serverspec (0.8.1)

■インストールおよび初期設定
gem install --no-rdoc --no-ri serverspec
serverspec-init
Select a backend type:

1) SSH
2) Exec (local)

Select number: 1

Vagrant instance y/n: n
Input target host name: testserver
+ spec/
+ spec/testserver/
+ spec/testserver/httpd_spec.rb
+ spec/spec_helper.rb
+ Rakefile

testserverをテストします
testserverへはsshにて接続してテストする設定となります

テストするサーバへsshのノンパスできるように設定します
http://kakakikikeke.blogspot.jp/2012/03/10ssh.html

パスワード認証を使ってSSHする場合には以下を参考にしてみてください
http://qiita.com/ingtk@github/items/e1bd500a7d6d95968d3c

■実行
rake spec

とするとサンプルのhttpdのインストールや設定の確認をするサンプルが動作します
標準出力にはテスト結果が出力されます
失敗したテストに関してはその詳細が表示されます

■サンプルレシピ作成
とりあえずサンプルを動作させただけなので独自でレシピを作成します

vim spec/testserver/bash_spec.rb
require 'spec_helper'

describe package('bash') do
  it { should be_installed   }
end

rake spec

bash がインストールされているか確認するサンプルレシピです
絶対成功すると思います
spec/[host_name]/配下にhogehoge_spec.rbという名前でレシピを作成すれば勝手にincludeしてテストしてくれます

書き方としては「describe hogehoge」でどんなテストをするか記述します
「it」どうなっているかを定義します
packageは引数で指定したパッケージがインストールされているか確認します
他にもserviceで指定したサービスが起動しているか調べたりやportで指定したポートがLISTENになっているかを確認できます
ファイルの有無やネットワークの通信などサーバの設定確認に必要なコマンドは一通り用意されているようです
詳細は以下で確認できます
http://serverspec.org/resource_types.html

■参考サイト

2013年9月21日土曜日

Invalid gemspec in [/usr/local/lib/ruby/gems/1.9.1/specifications/ZenTest-4.9.3.gemspec]: Illformed requirement ["< 2.1, >= 1.8"]

とりあえずgemコマンドを打つと必ずタイトルのエラーが出力されるようになったので対処してみた

gem uninstall ZenTest
mv /usr/local/lib/ruby/gems/1.9.1/specifications/ZenTest-4.9.3.gemspec /var/tmp

でとりあえず出なくなった
これでいいのかだろうか。。。

2013年9月17日火曜日

tmuxのインストール方法

■環境
CentOS 5.9
libevent 1.4.14
tmux 1.8

■インストール
1. libevent インストール
libevent の1.4.14が必要です
CentOS のbaseのyumレポには1.4.13しかないようです
しかたないので1.4.14の安定版ソースからインストールします
2系もあるのでそちらでも大丈夫かと思います
また、yum版を削除する作業を忘れずにやってください
yum版が残っているとtmuxのコンパイルとビルドでこけます
yum remove libevent-devel
cd /var/tmp
wget https://github.com/downloads/libevent/libevent/libevent-1.4.14b-stable.tar.gz
tar zvxf libevent-1.4.14b-stable.tar.gz
cd libevent-1.4.14b-stable
./configure
make
make install

2. tmuxインストール
cd /var/tmp/
wget http://downloads.sourceforge.net/project/tmux/tmux/tmux-1.8/tmux-1.8.tar.gz?r=http%3A%2F%2Ftmux.sourceforge.net%2F&ts=1379053410&use_mirror=jaist
tar zxvf tmux-1.8.tar.gz
cd tmux-1.8
./configure
make
make install

■操作
・tmux
   tmuxの起動
・tmux a
   既存のtmuxプロセスへのアタッチ
・tmux a -t [target_name]
   ターゲットを指定して既存のtmuxプロセスへのアタッチ
・tmux a -d
   既存のtmuxプロセスへの強制的にアタッチ
・Ctrl+b, c
   新規タブの作成
・Ctrl+b, n
   次のタブへ移動
・Ctrl+b, [num]
   指定した番号のタブへ移動
・Ctrl+b, %
   横にタブを分割(ペイン)
・Ctrl+b, "
   縦にタブを分割(ペイン)
・Ctrl+b, o
   次のペインへ移動
・ Ctrl+b, ;
   分割した最後のペインへ移動
・Ctrl+b, x
   タブ(ペイン)を削除
・Ctrl+d
   ログアウト
・Ctrl+b, ,
   タブ名の変更
・Ctrl+b, d
   tmuxのデタッチ
・Ctrl+b, ?
   使用できるキーバインドを表示
・Ctrl+b, w
   タブの一覧表示
・Ctrl+space
   分割したペインを均等にすることができる、1回で縦分割を均等に2回で横分割を均等にする
・Ctrl+t, [
   コピーモードの起動、ターミナル内を検索できるようになる(emacs操作で検索、コピペできる)、Ctrl+cでコピーモードを終了できる
・Ctrl+b, :
   tmux用のコマンドを受け付ける
・source-file ~/.tmux.conf
   起動中に再度設定ファイルを読み込む
・swap-window -t 0
   現在のタブと-tで指定したタブの位置を入れ替える
・move-window -t 1
   現在のタブを-tで指定タブに移動する、すでにタブがある場合は移動できない
・set-window-option synchronize-panes on
   分割したペイン間でキー入力を同期させる、タブ間では同期しない
・tmux rename-session -t 0 mySession
   セッション名を変更する
・tmux new-session -s test
   testという名前をsessionを作成する

■Tips
「tmux: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory」
が出た場合は
touch /etc/ld.so.conf.d/libevent.conf
vim /etc/ld.so.conf.d/libevent.conf
/usr/local/lib/ を記載する

ldconfig
を実行したあとに再度tmuxをインストールする作業を実行してください

gccのインストールも必須です
yum -y install gcc

cursesのインストールも必須です
yum -y install ncurses-devel

■参考サイト

2013年9月16日月曜日

logrotateのルール追加する方法

■環境
CentOS 6.3 64bit
logrotate 3.7.8

■設定
grep "include" /etc/logrotate.conf
/etc/logrotate.d をincludeしていることを確認する
cd /etc/logrotate.d

touch test
vim test
/var/log/test.log {
  compress
  missingok
  notifempty
  daily
  create 0600 root root
}

上記でtest.logというログファイルが日時でローテートされます
簡単にパラメータを説明すると
  • compressはローテートgzip圧縮
  • missingokはtest.logという名前のログファイルが存在しなくてもエラーにしない設定
  • nitifemptyはファイルが0バイトならローテートしない設定
  • dailyは日時でローテートする設定
  • createはファイルを生成する際に所有者と権限を指定

■実行
logrotate -f /etc/logrotate.conf

test.logが新たに作成され古いログが実行した日付が付与されたgzip形式で出力されることを確認する
ちなみにgzipで圧縮されたファイルは「zcat」コマンドで中身を確認することができる

また常に起動しているプロセスの場合にはpostrotate~endscriptを使用してHUPシグナルを送る等をしないと
ローテートしてもローテート前のファイルに対してプロセスはログを履き続けてしまうのでちょっとした工夫が必要です
その辺の設定はsyslog用のlogrotateファイルの設定を見るとちょっとイメージが湧くかもしれません

■参考サイト

2013年9月15日日曜日

mongoでlogrotateする方法

crontab -e
0 0 * * * /usr/bin/killall -SIGUSR1 mongod


公式にも書いてあるのでたぶんこれでいいのかなと
cronに登録しているのは独自仕様

http://docs.mongodb.org/manual/tutorial/rotate-log-files/

2013年9月14日土曜日

s3cmdをインストールする方法

P.S 20150202
--configure時の入力の詳細と1.5.0を試して動作しなかった旨を追記しました

■環境
CentOS 5.9
Python 2.4
s3cmd 1.5.0-alpha1

■インストール
cd /var/tmp
wget http://sourceforge.net/projects/s3tools/files/s3cmd/1.5.0-alpha1/s3cmd-1.5.0-alpha1.tar.gz
tar zxvf s3cmd-1.5.0-alpha1.tar.gz
cd s3cmd-1.5.0-alpha1
python setup.py install

s3cmd --configure
AccessKeyとSecretKeyはマネージメントコンソールからあらかじめ取得しておきます
それ以外にもプロキシやgpgコマンドへのパス、接続テストができますが基本は何も設定しなくて大丈夫です

Test access with supplied credentials?
の回答には「n」を指定して
Save settings?
の回答には「y」を指定すればOKです

Test access with supplied credentials? は接続テストをしていてここで失敗すると.s3cfgという設定ファイルが作成されないのでテストはスルーします
Enter new values or accept defaults in brackets with Enter.
Refer to user manual for detailed description of all options.

Access key and Secret key are your identifiers for Amazon S3
Access Key [xxxxxxxxxxxxxxxx]:
Secret Key [xxxxxxxxxxxxxxxx]:

Encryption password is used to protect your files from reading
by unauthorized persons while in transfer to S3
Encryption password:
Path to GPG program [/usr/bin/gpg]:

When using secure HTTPS protocol all communication with Amazon S3
servers is protected from 3rd party eavesdropping. This method is
slower than plain HTTP and can't be used if you're behind a proxy
Use HTTPS protocol [No]: No

On some networks all internet access must go through a HTTP proxy.
Try setting it here if you can't conect to S3 directly
HTTP Proxy server name:

New settings:
  Access Key: xxxxxxxxxxxxxxxx
  Secret Key: xxxxxxxxxxxxxxxx
  Encryption password:
  Path to GPG program: /usr/bin/gpg
  Use HTTPS protocol: False
  HTTP Proxy server name:
  HTTP Proxy server port: 0

Test access with supplied credentials? [Y/n] n

Save settings? [y/N] y
Configuration saved to '/root/.s3cfg'

vim /root/.s3cfg
が存在することを確認する
また、ニフティクラウドで使用する場合にはURLのパラメータの部分を以下のように変更する
host_base = ncss.nifty.com
host_bucket = %(bucket)s.ncss.nifty.com

■動作確認
s3cmd ls
バケットの一覧が表示されることを確認する

s3cmd ls s3://[bucket_name]
指定したバケット配下のオブジェクト一覧が表示される

s3cmd du s3://[bucket_name]
指定したバケットのデータ容量を取得することができる(単位はバイト)

あとは--helpで実際にできるコマンドを確認できます

■注意事項
pythonは2.6以上じゃないとうまくインストールできない可能性があります(2.4でinstallしたらインストール時にエラーメッセージが出ました、がインストール自体は成功していました))
yumリポジトリも用意されているのでyumインストールもできますが、バージョンが1.0.0と古いバージョンがインストールされます
設定ファイルの.s3cfgは実行しているユーザのホームディレクトリ配下を見に行くのroot以外でもs3cfgを実行したい場合には、該当のユーザにsuして再度--configureする必要があります
もしくはrootで作成した.s3cfgファイルを他のユーザのホームディレクトリ配下にコピーして権限を変更しても大丈夫です

1.5.0という正式版がリリースされていたのでこれを使ってみたらうまく動きませんでした
ERROR: S3 error: The provided security credentials are not valid.
というエラーが出たうまく動作しません
ニフティクラウドに対して実施していたのでS3に対しては普通に動作すると思います

■参考サイト

2013年9月13日金曜日

【Java】jmeterのインストール方法

■環境
CentOS 6.3 64bit
Java 1.7(openjdk)
jmeter 2.9

■インストールおよびサンプル動作確認
yum clean all
yum -y install java-1.7.0-openjdk

cd /var/tmp
wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//jmeter/binaries/apache-jmeter-2.9.tgz
  ※404になる場合はhttp://ftp.meisei-u.ac.jp/mirror/apache/dist//jmeter/binaries/にアクセスして最新のjmeterのバージョンのtgzを指定して下さい
tar xvzf apache-jmeter-2.9.tgz
mv apache-jmeter-2.9 /usr/local/bin/jmeter
sh /usr/local/bin/jmeter/bin/jmeter -n -t /usr/local/bin/jmeter/bin/examples/CSVSample.jmx

./examples/CSVSample.jtl という結果ファイルが出力されていれば動作確認完了
jmeterの2.9はJava1.6以上が必要です
基本は解凍したフォルダのどこかに配置するだけインストール完了となります
GUI環境がない場合は「-n」オプションを付けて実行してください
今回はサンプルで付属していたjmxファイルを実行して動作確認をしました
次は実際にテスト用のjmxファイルを生成して負荷テストする方法でも紹介できればと思います

■Tips(20131202追記)
Windows版でやる場合もzipファイルをダウンロード後、解凍して配置するだけでインストール終了なのですが
Lhaplusで解凍するとファイルサイズが大きすぎるせいかエラーが表示されうまく解凍できません
jmeter.batを実行すると「有効なWin32アプリケーションではありません」と表示されjmeterがうまく起動しません
自分はWinRARで解凍することでうまく起動できたので、上記エラーが出る場合は他の解凍ソフトを使って解凍後、jmeter.batを起動してください

2013年9月12日木曜日

【spket】eclipseでfirefoxのプラグインを開発するための設定

■環境
Windows7 64bit
eclipse Version: 4.2.1(Juno)

■設定
1. spketプラグインインストール
Help→Install New Software→Add
Name:spket
Location:http://www.agpad.com/update/
※http://www.spket.com/update/ ではないので注意
チェックボックスをすべてONにし利用規約に同意しインストール
インストール後はeclipseを再起動する

2. gitからプロジェクトのclone
git clone https://github.com/kakakikikeke/js-shorten-the-url.git

eclipseのegitプラグインを使って上記のプロジェクトをeclipseに読み込ませる
Import projectからgeneral projectとしてインポートする
プロジェクトを右クリックしファセットフォームの変換からプロジェクトをJavaScriptプロジェクトへ変更する
また、パースペクティブを「Spket IDE 」に変更する
※eclipseへのインポート方法の詳細はhttp://kakakikikeke.blogspot.jp/2012/05/githubpubliceclipse.htmlを参照

3. プロジェクトのbuild
build.xmlをantでビルドする
プロジェクトのdistディレクトリ配下にjarファイルとxpiファイルが作成されることを確認する
※ソースコードを修正したら基本は毎回ビルドを行い上記ファイルを生成する
※ソースコード自体はcontentディレクトリ配下にある「.xul」ファイルや「.js」ファイルを編集する

4. firefoxでテスト
プラグインを開発するためのfirefoxのプロファイルを別途作成します
http://support.mozilla.org/ja/kb/profile-manager-create-and-remove-firefox-profiles
ビルドにて作成された.xpiファイルをfirefoxへドラッグandドロップすると開発中のプラグインをfirefoxにインストールできます
基本は3. 4.を繰り返しトライandエラーを繰り返しプラグインを作成、修正していく

5. プラグインの登録
https://addons.mozilla.org/ja/firefox/
にアカウントを作成しプラグインを登録します
登録したプラグインは以下で管理されておりレビュー結果やアップロードも以下から辿れます
https://addons.mozilla.org/ja/developers/addons

リリース時の注意点については以下に簡単にメモしています
http://kakakikikeke.blogspot.com/2012/06/firefoxshorten-url.html


■注意事項
どうやらeclipseのJuno(4.2.1)ではSpketプラグインはうまく動作しないようでインストールもできない模様
⇒直接プラグインファイルをディレクトリに配置することでインストールすることでできるみたい
http://forums.spket.com/viewtopic.php?f=3&t=3678

OSのアーキテクチャが64bitでも動作しない模様(この辺は不確定なので参考までに)

2013年9月11日水曜日

OpenJDKをyumインストールした場合のJAVA_HOMEの設定の仕方

■概要
CentOS系(今回は6系)のJavaインストールでyumを使用するとopen-jdkがインストールされます
その場合にjava自体は実行できるようになるのですが、環境変数のJAVA_HOMEが設定されていません
今回はそんな場合のJAVA_HOMEの設定方法を紹介します

■設定方法
readlinkコマンドを使用して現在のjavaがどこにあるか確認します
readlink $(readlink $(which java))
/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java

上記で確認できたjavaのパスを.bashrcに追記しJAVA_HOMEがログイン時に有効になるように設定します
echo "export JAVA_HOME=/usr/lib/jvm/jre-1.6.0-openjdk.x86_64" >> /root/.bashrc
source もしくは 再度ログインをする
echo $JAVA_HOME で環境変数が設定されていることを確認する


ポイントはreadlinkで現在のjavaコマンドの実態がどこに存在するのか確かめているところになります

■P.S 20140526
yumでインストールした場合 which で確認できる java コマンドは jre 用の Java になっているようです
開発等でJDK用の java を使いたい場合には 「/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.55.x86_64/」のように
「/usr/lib/jvm/java-hogehoge...」ではじまるディレクトリをJAVA_HOMEとして設定してください

2013年9月10日火曜日

ApacheでVirtualHostを追加して複数ポートでListenする方法

■既存ファイルの修正
vim /etc/httpd/conf/httpd.conf
Listen 80
Listen 1080 ← 追加

■新規ファイルの追加
vim /etc/httpd/conf.d/yoshi.conf
<VirtualHost *:1080>
    DocumentRoot "/var/www/"
    ServerName 192.168.10.11
    <Directory "/">
        Options FollowSymLinks
        AllowOverride All
        Order Deny,Allow
        Deny  from All
    </Directory>
</VirtualHost>

service httpd restart
netstat -an | grep 1080

http://192.168.10.11:1080/
に問い合わせてDocumentRootの情報が表示されることを確認する
VirtualHostの設定は最低限の設定なので必要に応じて設定を追加してください

2013年9月9日月曜日

sshで複数のポートを立ち上げる方法

vim /etc/ssh/sshd_config

Port 22
Port 22022

とすることで22番と22022番でLISTENするようになります

デフォルトでは「Port 22」もコメントとなっていますのでコメントを外して「Port 22022」を追加しましょう
「Port 22022」だけ記載すると単純にsshのポートが22022になるので22番が使えなくなってしまうので注意しましょう

2013年9月8日日曜日

【HTML5】Construct2をインストールしてサンプルを動作させてみた

■環境
PC : lenovo Edge 13
OS : Windows7 64bit

■インストール
1. ダウンロード
https://www.scirra.com/construct2/releases/r139/download
から最新版のConstruct2をダウンロードします
今回ダウンロードできたインストーラはconstruct2-r139-setup_16873096.exeでした
インストーラを実行してインストールしていきます
自動アップデートをしますかという設定を聞かれるところがありますが基本はONでいいと思います
グラフィックドライバとかが最新になっているかもチェックしてくれます
最新でない場合はドライバのダウンロードサイトに移動してくれます
2. サンプル作成
新しプロジェクトを作成します
左上のメニューから作成できます


プロジェクトのタイプを選択できます
プラットフォームごとにいろいろと選択できますが今回はモバイル用のプロジェクトを作成します
※マウスやキーボードを使う場合に「New retro style project」を選択する必要があります、モバイルのプロジェクトの場合はタッチ系の操作しか扱えません


以下の背景用画像をダウンロードします
https://www.scirra.com/images/articles/bg.png
右ペインのレイヤー上で右クリックから「Insert new object」をクリックします


表示されたダイアログから「Tiled Backgroud」を選択してInsertをクリックします


レイヤー上のどこかに配置するとEdit imageのダイアログが表示され背景を設定することができます
今回は先ほどダウンロードした背景を設定します
先ほどダウンロードした背景画像を選択するとEdit image上に背景が表示されるのでダイアログを閉じます




レイヤー上に背景が追加されるので大きさを調整します
レイヤー上に薄く点線が記載されていると思いますのでそれに大きさを合わせます
これで背景の設定は完了です


次にプレイヤー用のオブジェクトを一つ追加します
以下の画像をダウンロードしておきます。
https://www.scirra.com/images/articles/player.png
背景を追加したときと同様に同様にレイヤー上で右クリックしInsert new objectを選択します
今度はSpriteを選択してInsertをクリックします


レイヤー上に追加すると再度Edit imageのダイアログが表示されるので再度「Load an image from a file」から先ほどダウンロードしたプレイヤー用の画像を選択してレイヤー上に追加します
以下のようになればプレイヤーの追加は完了です


次にこのプライヤーを動かして見ます
単純に右にずっと移動させてみたいと思います
タブをEvent sheetに切り替えます
Add eventをクリックするとダイアログが表示されますのでSpriteのプレイヤーを選択します


イベントを選択ダイアログで「Is betweet angles」を選択します
First angleとSecond angleを入力するダイアログが次に表示されるのでデフォルトの値のままDoneをクリックします


イベントを追加できたら次にアクションを追加します
「Add action」をクリックします


アクション追加のダイアログが表示されたら「Move forward」を選択してNextをクリックします
次のダイアログでDistanceを選択できます
Distanceは移動速度を調整できます、ここでは「10」くらいでいいと思います


アクションの追加が完了したら実際に動作するところを確認してみましょう
左上のメニューから実行ボタンを押下するとブラウザが立ち上がりサンプルが動作し始めます
今回はプレイヤーが右に動くだけですが、とりあえず動作することは確認できると思います

とりあえず今回は以上ですが、公式サイトのドキュメントが非常に充実しているので簡単なゲームでしたらすぐに作れると思います

Construct2は有料版があり、有料版は機能が変わってきます
http://www.scirra.com/store/construct-2

■参考サイト

2013年9月7日土曜日

auで7GBの制限に引っかかったのに翌月になっても128kbpsしかでていなかった

auのサポートに問い合わせたら
「設定→一般→リセット→すべての設定をリセット」
しなさいと言われました orz

まじかよ。。。と思ってい実際にやったら本当に制限解除されてLTEが使えるようになりました。
使えるようにはなったけど全リセットは結構つらいだろ。。。
今後またやることを踏まえて設定項目をメモしておくようにしました。
とりあえずよかった。

2013年9月6日金曜日

mongoのデータをWebUIで確認できる「mongo-vision」をインストールしてみた

■概要
過去に「mViewer」をインストールする記事を記載しましたがmongoのコレクションが2万あたりを超えた段階で
mViewerのレスポンスが著しく低下しWebUIで見れないレベルになってしまいました

今回は別のWebUIがないかと思い探したところ「mongo-vision」というWebUIがありましたので
そのインストール方法を紹介したいと思います
またJavaの5以上を使いますので事前にインストールが必要です

■インストール
1. モジュールのダウンロード
http://code.google.com/p/mongo-vision/downloads/list
今回ダウンロードしたバージョンは「1.1-dev3」という執筆時の最新版をダウンロードしました
ダウンロードできたファイル名はmongovision-1.1-dev3.zipとなります
今回はCentOSにインストールするので必要であればwget等でzipをダウンロードしてください
cd /var/tmp
wget http://mongo-vision.googlecode.com/files/mongovision-1.1-dev3.zip

2. デプロイ
ダウンロードしたzipファイルを展開します
mkdir mongovision
mv mongovision-1.1-dev3.zip mongovision
cd mongovision
unzip mongovision-1.1-dev3.zip

3. 起動
cd mongovision
./sincerity start restlet
以下のようなログが出力されれば起動完了
バックグランドではないのでプロセス確認は他のターミナルを立ちあげて確認する

Prudence 2.0-dev3 (Restlet 2.1.2 JSE)
Setting up application: "MongoVision"
Setting up application: "Prudence Administration"
Executing 58 startup tasks...
Finished all startup tasks in 0.789 seconds.

起動時に
Could not read source code for execution: /programs/restlet
というエラーが表示されて起動できない場合には再度unzipで再展開してみてください

4. 確認
http://hostname:8080/mongovision
にアクセスして画面が表示されることを確認する

5. DBコネクト
左下の「Connect」を押下してAddressの欄に「ホスト名:ポート番号」の形式でConnectを押下する
ユーザ名、パスワードが合わせて必要な場合はそちらも入力する
接続に成功したら左ペインにコレクションのあとはコレクションを選択すればオブジェクトの中が確認できます

■所感・Tips
mViewerよりかは快適に使えそうです
3万コレクションくらいでもブラウザ上で閲覧できました(若干クライアントがタイムアウトする場合がありますが。。)
コレクションをタブで開けるので複数のコレクションをタブで切替られます
JSONバリデートも自動で行ってくれます
コレクション名も省略せずすべて表示してくれます
検索するときは「{}(中括弧)」は不要で Query の欄に "Id":null な感じで入力するだけで検索できます
あとはテーマとかも変えられるので結構楽しいです
が、非常に残念なことに更新、削除、追加等ができず本当に閲覧するだけです
(すいません、こちらできました。選択したオブジェクトを編集して下の方に「Save」と「Delete」がありました。これで更新、削除ができます)
うまくリクエストが届かない場合はブラウザ自体をリロードしてください
リクエストの送信がうまくいくと右上に更新情報がポップアップのように表示されます
あとはmongoのstatus情報は閲覧できないので現在のコレクション数やデータサイズを見ることはできません
実装がJSメインなので基本的には快適に使えます、mViewerよりかはいいような気がしています。。。

■参考サイト

2013年9月5日木曜日

【Centos6.3】ulimitのopen filesの値を変更する方法

■環境
CentOS release 6.3 (Final)
2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

■設定方法
echo "ulimit -n 64000" >> /etc/sysconfig/init

上記を実施後
サーバ自体の再起動
もしくは
変更したopen filesのカーネルパラメータ自体を有効にしたいプロセスを再起動する

■確認方法
cat /proc/[プロセス番号]/limits
でMax open filesの欄を確認して設定したopen filesの値になっていることを確認する

ulimit -a
でopen filesの欄を確認して設定したopen filesの値になっていることを確認する



カーネルパラメータを変更する方法は他にも

  • vim /etc/security/limits.conf
  • vim /etc/sysctl.conf
  • ulimitコマンドの実行

を等を変更、使用することで変更できるが
どれもサーバの再起動後や再ログインをすると上書きされてしまうためあまり有効な方法ではないと思われる


■Tips
独自のシェルスクリプトで記載された起動スクリプトの場合、/etc/sysconfig/initが有効にならない場合がある
有効にならない場合は独自のシェルスクリプトの一番はじめに「ulimit -n 64000」を記載することで
シェルスクリプト内で起動する子プロセスに対してカーネルパラメータを有効にすることができる

またプロセスのみの再起動手法の場合OS自体のulimitの値を確認するとデフォルトの1024のままとなっているが
プロセス自体のulimitの設定さえ変更されていれば問題ない

2013年9月4日水曜日

【Apache】(98)Address already in use: make_sock: could not bind to address [::]:443

■環境
CentOS release 6.3 (Final)
Server version: Apache/2.2.15 (Unix)

■原因
/etc/httpd/conf.d/ssl.conf

/etc/httpd/ports.conf
の両方で443ポートの設定を記述しているため

■対処方法
rm /etc/httpd/conf.d/ssl.conf

/etc/httpd/conf.d/ssl.confを削除するとssl_moduleが無効になる場合がある
その場合ため削除後にssl_moduleを有効にする設定を行う

touch /etc/httpd/mods-available/ssl.conf
vim /etc/httpd/mods-available/ssl.conf
<IfModule mod_ssl.c>
#
# Pseudo Random Number Generator (PRNG):
# Configure one or more sources to seed the PRNG of the SSL library.
# The seed data should be of good random quality.
# WARNING! On some platforms /dev/random blocks if not enough entropy
# is available. This means you then cannot use the /dev/random device
# because it would lead to very long connection times (as long as
# it requires to make more entropy available). But usually those
# platforms additionally provide a /dev/urandom device which doesn't
# block. So, if available, use this one instead. Read the mod_ssl User
# Manual for more details.
#
SSLRandomSeed startup builtin
SSLRandomSeed startup file:/dev/urandom 512
SSLRandomSeed connect builtin
SSLRandomSeed connect file:/dev/urandom 512

##
##  SSL Global Context
##
##  All SSL configuration in this context applies both to
##  the main server and all SSL-enabled virtual hosts.
##

#
#   Some MIME-types for downloading Certificates and CRLs
#
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl

#   Pass Phrase Dialog:
#   Configure the pass phrase gathering process.
#   The filtering dialog program (`builtin' is a internal
#   terminal dialog) has to provide the pass phrase on stdout.
SSLPassPhraseDialog  builtin

#   Inter-Process Session Cache:
#   Configure the SSL Session Cache: First the mechanism
#   to use and second the expiring timeout (in seconds).
#SSLSessionCache         dbm:/var/run/apache2/ssl_scache
SSLSessionCache        shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout  300

#   Semaphore:
#   Configure the path to the mutual exclusion semaphore the
#   SSL engine uses internally for inter-process synchronization.
SSLMutex  default

SSLHonorCipherOrder On
#   SSL Cipher Suite:
#   List the ciphers that the client is permitted to negotiate.
#   See the mod_ssl documentation for a complete list.
#   enable only secure ciphers:
SSLCipherSuite RC4-SHA:HIGH:!ADH
#   Use this instead if you want to allow cipher upgrades via SGC facility.
#   In this case you also have to use something like
#        SSLRequire %{SSL_CIPHER_USEKEYSIZE} >= 128
#   see http://httpd.apache.org/docs/2.2/ssl/ssl_howto.html.en#upgradeenc
#SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

# enable only secure protocols: SSLv3 and TLSv1, but not SSLv2
SSLProtocol all -SSLv2

</IfModule>

touch /etc/httpd/mods-available/ssl.load
vim /etc/httpd/mods-available/ssl.load
LoadModule ssl_module /usr/lib64/httpd/modules/mod_ssl.so

cd /etc/httpd/mods-enabled
ln -s /etc/httpd/mods-available/ssl.conf ssl.conf
ln -s /etc/httpd/mods-available/ssl.load ssl.load

service httpd restart

再起動時に該当のエラーが出ないことを確認する
まだ、エラーが出るという場合は今回削除したファイル以外にも443ポートの設定を記述している箇所があると思われるので
そのファイルを削除または443ポートの設定を記載している箇所を削除する

今回はmods-available内に設定ファイルを設置しシンボリックリンクを貼ることでssl_moduleを有効にしたが
これはchefでApacheをインストールした場合の設定であり
自動でmods-available配下の設定ファイルをincludeする設定を事前に行っている

2013年9月2日月曜日

【Windows7】アイコンが表示されない場合の対処方法

C:\Users\kakakikikeke\AppData\Local\IconCache.db

を削除して空ファイルで再生成しWindowsを再起動する
kakakikikekeの部分はWindowsに登録しているユーザ名なので適宜変更してください

2013年9月1日日曜日

【Windows7】ショートカットファイル(.lnk)にプログラムを関連付けてしまった場合の対処方法

1. ファイル名を指定して実行からregedit.exeを実行してレジストリエディタを起動

2. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.lnk\UserCoiceキーを削除
UserCoiceキーには値が2つほど入っています(キーを選択すると右ペインに2つ値が表示される)が値を消すわけではなく
左のキーの一覧からUserCoiceキーを右クリックして削除を選択しキー自体を削除します

3. ログオフしてログインし直す
ログイン後ショートカットアイコンを確認すると正しいアイコンに変わっていることが確認できると思います

基本はlnkファイルがプログラムと紐付いていないという現象は起きないのですが、DropBox上のファイルに対してショートカットを作成していると起きる可能性があるようです
上記に限ってではありませんが、ショートカットアイコンが全部同じプログラムのアイコンになってしまった場合は試してみて下さい