Hatena::ブログ(Diary)

家族サービスの合間をぬって書く技術系のブログ

Clicky Web Analytics Clicky

2011-10-24 Galaxy S mac OSX10.6 で EasyTetherを有効にする このエントリーを含むブックマーク このエントリーのブックマークコメント

MacOSX(10.6)側でEasyTetherがなぜか自動で有効にならなかったので

sudo kextunload /System/Library/Extensions/EasyTetherUSBEthernet.kext

してから

sudo kextload /System/Library/Extensions/EasyTetherUSBEthernet.kext

とやった後に[システム環境設定] - [ネットワーク]とやった後に[+]ボタンを押してEasyTetherを選択したらようやくテザリングができるようになった。

2011-08-26 s3のbucket名のリネームできないのでコピーする

s3を画像サーバーとして使う場合の画像URLを独自ドメインでアクセスする 11:56  s3を画像サーバーとして使う場合の画像URLを独自ドメインでアクセスするを含むブックマーク  s3を画像サーバーとして使う場合の画像URLを独自ドメインでアクセスするのブックマークコメント

現在、S3を画像サーバーとしてつかっているのだけど

https://s3-ap-northeast-1.amazonaws.com/BUCKET_NAME/XXXX.jpg

のようなURLでamazonのURLがでてしまう。

これを

https://static.DOMAINNAME/XXXX.jpg

のようにアクセスできるように対応してみた。

DNS設定

※お名前.comを使用した場合の説明

レンタルDNSレコード設定から、以下レコードを登録。

static.DOMAINNAME CNAME static.DOMAINNAME.s3-ap-northeast-1.amazonaws.com

s3のbucket作成

https://console.aws.amazon.com/s3/home

s3管理画面より「static.DOMAINNAME」の名前でbucket名作成

その後、XXXX.jpgをこのbucket直下におくと、

https://static.DOMAINNAME/XXXX.jpg

アクセスできるようになるはず。

以下のようなXMLがでたら、権限がたりていないので Properties - Permission から読み取り権限を与えてやる

<Error>
AccessDenied
<Message>Access Denied</Message>
<RequestId>112CE0ACD5346798</RequestId>
<HostId>
pfcBwjuoc5HCkQ3DJHrkcGqQ6O2sN5r9bQvPGetngKVYrik3oN6Z0IJmEBhNicJ/
</HostId>
</Error>

s3のbucket名のリネームできないらしいのでコピーする 11:56  s3のbucket名のリネームできないらしいのでコピーするを含むブックマーク  s3のbucket名のリネームできないらしいのでコピーするのブックマークコメント

どうもs3のbucket名はリネームできないらしい。

https://forums.aws.amazon.com/thread.jspa?threadID=73503

なので、s3で画像サーバーを運用していてURLを独自ドメインに変えたい場合は、

新たにbucketを作成して、元のbucketからファイルをコピーする必要がある。

このため

http://pastebin.com/PVYmfBGy

のあたりのソースを使って、bucketごとコピーしたり、copy_keyにprefixつけて

一部ディレクトリのみコピーしたりしてみた。

その際に、botoのソースacl(アクセス権限)がコピーされない不具合?があるようで

https://github.com/boto/boto/commit/be6549a2539f763b2b89dc7b548594fad135a813

パッチをあてると、コピーしたファイルの権限もコピーできるようになった。

※最新のソースだとこのパッチはあたってる?

ちなみにファイル数が少ない場合はAWSGUI からcopy & pasteするのが一番早そうなんだけど

(PUT COPYを内部でやってくれているらしい。PUT COPYが一番早いようだ。参考URL)

途中でErrorになったりするので必要最低限のファイルのみコピーする方法を考えた方がよい場合もある。

2011-08-24 Ubuntu上でNagiosでグラフ化、リモートホスト監視設定

Ubuntu上でNagiosでグラフ化、リモートホスト監視設定 09:50  Ubuntu上でNagiosでグラフ化、リモートホスト監視設定を含むブックマーク  Ubuntu上でNagiosでグラフ化、リモートホスト監視設定のブックマークコメント

これは自分用のメモです。

監視する側のサーバーにはnagios3.Xが入っているものとする。

リモートホスト監視設定

参考URL

クライアント
インストール
apt-get install nagios-plugins nagios-nrpe-server nagios-nrpe-plugin
・メモリ監視がないためインスコ
cd /usr/lib/nagios/plugins/wget http://www.sysadminsjourney.com/sites/sysadminsjourney.com/files/code/check_mem.pl.txt
mv check_mem.pl.txt check_mem.pl
chmod 755 check_mem.pl
./check_mem.pl -w 10 -c 5 -f -COK - 66.6% (419448 kB) free.|TOTAL=629976KB;;;; USED=210528KB;;;; FREE=419448KB;;;; CACHES=406196KB;;;;
・設定ファイル
# vi /etc/nagios/nrpe_local.cfg
-----
allowed_hosts=XXX.XXX.XXX.XXX,127.0.0.1
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10
command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20
command[check_all_disks]=/usr/lib/nagios/plugins/check_disk -w 20 -c 10
command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200
command[check_swap]=/usr/lib/nagios/plugins/check_swap -w 20 -c 10
command[check_mem]=/usr/lib/nagios/plugins/check_mem.pl -w 10 -c 5 -f -C
-----
# /etc/init.d/nagios-nrpe-server restart
# /usr/lib/nagios/plugins/check_nrpe -H localhost
NRPE v2.12
注) 監視側のポート5666を空けておく
サーバー側 (ngios設定済みとする)
# apt-get install nagios-nrpe-plugin
# /usr/lib/nagios/plugins/check_nrpe -H REMOTE.SERVER.IP
NRPE v2.12
CHECK_NRPE: Error - Could not complete SSL handshake.
がでた場合は、
/etc/nagios/nrpe_local.cfg
で監視サーバーIPが指定されているか確認

nagiosグラフ化

参考URL

インストール
apt-get install perl rrdtool librrds-perl php5-gd
git clone git://pnp4nagios.git.sourceforge.net/gitroot/pnp4nagios/pnp4nagios
cd pnp4nagios
./configure
make allmake install
make install-webconf
make install-config
nagios.cfg設定

まずは、nagiosからperfdata.plを呼び出せるように設定ファイルを編集する。

vi /usr/local/nagios/etc/nagios.cfg
-----
※ 以下のディレクティブを以下の通りにする。
process_performance_data=1
enable_environment_macros=1
service_perfdata_command=process-service-perfdata
host_perfdata_command=process-host-perfdata
-----

以下Basic認証のファイルは適宜作成しておく

vi /etc/apache2/conf.d/pnp4nagios.conf
-----
     AuthType Basic
     AuthUserFile /etc/nagios3/htpasswd.users
-----
/etc/init.d/nagios3 restart
/etc/init.d/apache2 restart
テスト確認

ページ表示の確認

http://[SERVER DOMAIN]/pnp4nagios/

細かい設定

mv /usr/local/pnp4nagios/share/install.php /usr/local/pnp4nagios/share/install.php.org
vi /usr/local/pnp4nagios/etc/process_perfdata.cfg
-----
 :
LOG_LEVEL=2
 :
-----
vi /etc/nagios3/conf.d/hoge.cfg
-----
host, service を参考URLをもとに修正する
-----
/etc/init.d/nagios3 restart

2011-02-10 Django + nose + selenium in ubuntu で自動テスト環境を整える

Django + nose + selenium in ubuntu で自動テスト環境を整える 22:47  Django + nose + selenium in ubuntu で自動テスト環境を整えるを含むブックマーク  Django + nose + selenium in ubuntu で自動テスト環境を整えるのブックマークコメント

環境

Python2.6 + Django1.2 + Ubuntu10

など

使うもの

nose

Pythonのunittestをもっと簡単にできるように拡張したもの。プラグインなど簡単に作成する事ができ拡張性も高い

http://somethingaboutorange.com/mrl/projects/nose/1.0.0/

django-nose-selenium

djangoとnoseとseleniumでテストやるためのもの。documentに書かれていない罠が結構ある

https://github.com/weluse/django-nose-selenium

cherrypy

Pythonプログラミング言語を用いたオブジェクト指向のWebアプリケーションフレームワーク

http://www.cherrypy.org/

Xvfb

仮想的な X を立ち上げることで、実際に X を起動しておかなくても X を使用した処理を行うことが出来るようにするためのライブラリ

http://en.wikipedia.org/wiki/Xvfb

環境構築

$ sudo pip install nose
$ sudo pip install django-nose-selenium
$ sudo pip install cherrypy
使うsettingsを指定しておく
$ export DJANGO_SETTINGS_MODULE=shohu_settings
$ export PYTHONPATH=/PROJECT_ROOT/:$PYTHONPATH
Firefoxインスコ
$ sudo apt-get install firefox
Xvfbインスコ
$ sudo apt-get install xvfb
FirefoxをX上で動かすための設定
$ export DISPLAY=1.0
$ Xvfb :1 -screen 0 1024x768x24 > /dev/null &
※Firefox起動確認を参考URLを元にしておく

ここまででUbuntu Server上でFirefoxが起動できるようになっているはず。

次にSeleniumサーバーを動かしておく

wget http://selenium.googlecode.com/files/selenium-server-standalone-2.0b1.jar
java -jar selenium-server-standalone-2.0b1.jar > /tmp/selenium.log 2>&1 & 

ここまででDjango+nose+seleniumを使う環境は整ったはず。

ソースと実行

テストクラス
vi tests.py
-----
# -*- coding: utf-8 -*-
import unittest

class TestSelenium(unittest.TestCase):

    selenium_test = True
    start_live_server = True
    
    def test_start(self):
        """Tests the start page."""
        self.selenium.open("/")
        self.failUnless(self.selenium.is_text_present(u"ようこそテストサイトへ!"))
-----

start_live_server = True にしていないと

    • with-djangoliveserver(テスト時のみのDjangoサーバー立ち上げる)
    • with-cherrypyliveserve(Cherrpyを使用してテスト時のみのサーバー立ち上げる)

を指定してもテスト実行時にサーバーがたちあがらないので必ず指定する事。

ただ--with-djangoliveserverはうまく動かなかったのでcherrypyの方で実行した。

実行
$ nosetests --with-selenium --with-cherrypyliveserver tests.py
ok
----------------------------------------------------------------------
Ran 1 test in 9.140s
OK
Finished: SUCCESS

nosetestsを実行すると

1.テスト中にDjangoアプリケーションがサーバーとしてたちあがる
2.仮想X上でFirefoxが起動して"/"(ルート)にアクセスする
3.”ようこそテストサイトへ!”の文字が表示されているかチェックする

という事を行ってくれる。

以上でDjango+nose+seleniumで自動テスト環境が整った。

これにHudsonを使う事によって統合テストの自動化環境が整う。

参考URL

http://www.lovebug.jp/index.php?Web%A5%DA%A1%BC%A5%B8%A4%CE%A5%B9%A5%AF%A5%EA%A1%BC%A5%F3%A5%B7%A5%E7%A5%C3%A5%C8%A4%F2%BB%A3%A4%EB%CA%FD%CB%A1(Xvfb%20%2B%20Firefox%20%2B%20ImageMagick)

http://oshyn.com/_blog/Software_Development/post/Selenium-Test-Suite-Ubuntu/

ポートを使用しているプロセス調べる in ubuntu 22:47  ポートを使用しているプロセス調べる in ubuntuを含むブックマーク  ポートを使用しているプロセス調べる in ubuntuのブックマークコメント

!!! root で実行しないとプロセス名が表示されないので気をつける
# netstat -A inet -npl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      3182/master     
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      9434/apache2  
  :
  :

Hudson in ubuntu10 22:47  Hudson in ubuntu10を含むブックマーク  Hudson in ubuntu10のブックマークコメント

インスコ

wget -O - http://hudson-ci.org/debian/hudson-ci.org.key | sudo apt-key add -
vi /etc/apt/sources.list
-----
  :
  :
deb http://hudson-ci.org/debian binary/
-----
sudo apt-get update
sudo apt-get install hudson
→ デーモン起動してくれる

動作確認

http://localhost:8080

実行ユーザー変更

vi /etc/sysconfig/hudson
-----
:
HUDSON_USER=hudson
:
-----

時刻のタイムゾーンが日本時間にならない

javaで以下のように時刻を取得して時刻を表示すると

Calendar cal1 = Calendar.getInstance();

US時刻で表示されてしまう。

# ll /etc/localtime 
lrwxrwxrwx 1 root root 30 2010-09-29 10:11 /etc/localtime -> /usr/share/zoneinfo/Asia/Tokyo

にも関わらずだ。

Calendar cal1 = Calendar.getInstance(TimeZone.getTimeZone("Asia/Tokyo"));

ような書き方をしないとタイムゾーンがづれてしまうよう。

上記のためHudsonでも時刻がUS時刻になってしまう。

Hudoson内では上記のような時刻の取得をしているらしくづれる。

これを解決するために以下対応を行った。

vi /etc/init.d/hudson
-----
:
JAVA_ARGS="-Duser.timezone=Asia/Tokyo"
:
-----
/etc/init.d/hudson start

kkawakkawa 2011/02/11 02:07 Jenkinsのubuntuへのインストールの仕方もほとんど同じです。 http://pkg.jenkins-ci.org/debian/

hogehoge 2011/06/23 15:45 PNUM=$(pidof -x $0)
だと、絶対パスで実行した場合に$0の値が変わってしまうので、
PNUM=$(pidof -x ${0##*/})
のようにファイル名だけ渡した方が良いと思います。

hogehoge 2011/06/23 15:50 ↑すみません。別記事に投稿しようとしてミスしました。
全く関係ないですが、FireFox5(Linux 64bit版)だと、投稿時の画像認証が正常に動作しないようです。

2011-01-24 Satchmoで通貨単位を¥にする

Satchmoで通貨単位を¥にする 19:31  Satchmoで通貨単位を¥にするを含むブックマーク  Satchmoで通貨単位を¥にするのブックマークコメント

参考URL

http://www.satchmoproject.com/docs/dev/configuration.html?highlight=currency#changing-the-l10n-settings

ソース

settings.py
-----
  :
L10N_SETTINGS = { 
  'currency_formats' : { 
     'JPN' : {'symbol': u'¥', 'positive' : u"¥%(val)d", 'negative': u"¥(%(val)d)",
               'decimal' : ','},
  },  
  'default_currency' : 'JPN',
  'show_admin_translations': False,
  'allow_translation_choice': False,
}
  :
-----