何時の間にやらMacでのSnes9xが動くようになってるらしく、無線コントローラーのLogicool Cordless Rumblepad 2と合わせるととても快適。
俺のようなどうせ最新ハードでもレトロゲームやその復刻版か続編しか食手が伸びないおっさんにとってはこういう方が楽しいかも。
Snes9xはC++だそうですが、MacのIntel化の恩恵は少なくなさそうです。
|
何時の間にやらMacでのSnes9xが動くようになってるらしく、無線コントローラーのLogicool Cordless Rumblepad 2と合わせるととても快適。
俺のようなどうせ最新ハードでもレトロゲームやその復刻版か続編しか食手が伸びないおっさんにとってはこういう方が楽しいかも。
Snes9xはC++だそうですが、MacのIntel化の恩恵は少なくなさそうです。
|
職場はsvnで個人的にgitを使うときなど、全部持ってくると死ぬほど時間がかかるので最新のtrunkだけ持ってくる。
% git svn clone -rHEAD https://svn.example.com/unk/trunk unk
% git svn rebase
% git svn dcommit
% git svn dcommit --rmdir
-sは--stdlayoutでtrunk/, branches/, tags/構成を想定してブランチに変換してくれるそうです。
% git svn clone -s http://foo.com/repos/project
% git branch
% git branch michel-jackson
% git checkout michel-jackson
% git checkout -b michel-jackson
% git checkout master
% git merge michel-jackson
% git reset HEAD^
% git rebase -i 695b1eb
(修正)
% git commit --amend
% git rebase --continue
% git tag v0.0.1
% git push --tags
% git pull --tags
% git reset --soft HEAD^
% git ci -a -m 'やりなおし'
% git push origin master --force
% git push origin win32
localにphp5.3.1とwordpress2.8.6をインストールしてみるが、DBに繋がらないとのエラー。詳細が知りたいのでphp.iniのerror_logを設定してエラーログを見てみるが何も出力されてない。
<?php trigger_error('error raising!'); ?>
上記の様なスクリプトを実行してみると確かにエラーログに残るのだが・・・。
% grep -r @mysql .
./wp-includes/wp-db.php: $this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword, true);
./wp-includes/wp-db.php: if (!@mysql_select_db($db, $this->dbh)) {
./wp-includes/wp-db.php: $this->result = @mysql_query($query, $this->dbh);
./wp-includes/wp-db.php: while ($i < @mysql_num_fields($this->result)) {
./wp-includes/wp-db.php: $this->col_info[$i] = @mysql_fetch_field($this->result);
./wp-includes/wp-db.php: while ( $row = @mysql_fetch_object($this->result) ) {
./wp-includes/wp-db.php: @mysql_free_result($this->result);
なるほど・・・。
これだと原因究明が難しいのでmysql_connectの@を取って実行してみた。
% diff wp-includes/wp-db.php{,.org}
341c341
< $this->dbh = mysql_connect($dbhost, $dbuser, $dbpassword, true); # FIXED by komagata
---
> $this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword, true);
php_errors.log:
[14-Dec-2009 02:49:02] PHP Warning: mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: [2002] No such file or directory (trying to connect via unix:///tmp/mysql.sock) in /users/komagata/Sites/wordpress/wp-includes/wp-db.php on line 341
[14-Dec-2009 02:49:02] PHP Warning: mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: No such file or directory in /users/komagata/Sites/wordpress/wp-includes/wp-db.php on line 341
なるほど、/tmp/mysql.sockにソケットファイルがあると思っているために接続できないらしい。
PHP: 実行時設定 - Manualmysql.default_socket string
他にソケット名が指定されない場合、ローカルなデータベースサーバに 接続する時のデフォルトのソケット名。
php.iniにデフォルトのMySQLのsocketの場所を設定できる項目があることがわかった。ちなみに接続時のhostにもlocalhost:/path_to/mysql.sockといった指定が可能らしい。
PHPのマニュアルは非常に詳細な内容も記載されていて、日本語訳も充実しているので巷で問題になってたりすることの殆は公式マニュアルで解決することが多い。
macportsで入れた場合のmysqlのデフォルトのsocketの場所である/opt/local/var/run/mysql5/mysqld.sockを指定したら動いた。
問題解決のためにはコード内でエラー抑制はせず、各個人の環境でdisplay_errorsやerror_logを設定すべきだと思うが、php.iniが弄れない共有レンタルサーバーで使われることが多い事や、エラーがズラズラでてもパニックに陥るだけといった理由でこういう作りになっているのかなと思った。
本番環境ではすべきでないが、大抵の共有レンタルサーバーと同じ様にdisplay_errosをOnにした場合、エラー抑制子を外すと、データベースに接続できない場合はこんな感じになる。
たしかにちょっと怖い感じがするかも。初めてのインストールでこれが出たら諦めちゃう人も多いかも。
% sudo port install php5 +apache2 +pear
% sudo port install php5-mysql php5-mbstring
% cd /opt/local/etc/php5
% sudo cp php.ini-development php.ini
% sudo /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so
[activating module `php5' in /opt/local/apache2/conf/httpd.conf]
% sudo vi /opt/local/apache2/conf/httpd.conf
# mode_php5
Include conf/extras-conf/mod_php.conf
/opt/local/etc/php5/php.ini
[Date]
date.timezone = Asia/Tokyo
/opt/local/etc/php5/php.ini
[MySQL]
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
portsで入れたphpとmysqlそれぞれの見に行くsockの場所のdefaultが違う。
PythonでCSVのFixtureをYAMLに変換(添削希望・・・)などと書いていたんですが、なんとid:perezvonさんが添削してくださいました!
あざーっす!
元のコード:
import sys
import csv
if (len(sys.argv) < 2):
print 'Usage: %s ' % sys.argv[0]
quit()
csv_file = sys.argv[1]
filename, suffix = csv_file.split('.')
reader = csv.reader(file(csv_file, 'r'))
i = -1
res = []
for row in reader:
i += 1
if i == 0:
column = row
continue
s = filename + str(i) + ":\n"
for j in range(len(column)):
s += " " + column[j] + ": " + row[j] + "\n"
res.append(s)
f = open(filename + ".yml", 'w')
f.write("\n".join(res))
f.close()
添削していただいたコード:
import sys
import csv
import yaml
def main(src, dest):
reader = csv.reader(file(src))
data = list(reader)
result = []
cols = data[0]
rows = data[1:]
for row in rows:
result.append(dict([(k, v) for k, v in zip(cols, row)]))
yaml.safe_dump(result, file(dest, 'wb'),
default_flow_style=False,
encoding='utf-8',
allow_unicode=True)
if __name__ == '__main__':
if len(sys.argv) < 2:
print 'Usage: %s [filename]' % sys.argv[0]
sys.exit(1)
src = sys.argv[1]
dest = src.replace('.csv', '.yml', src.rindex('.'))
main(src, dest)
ジーザス・・・スマート!
こちらを参考に復習していきたいと思います。
まずこの部分。
if __name__ == '__main__'
なるほど〜Rubyでもやりますね。この辺は無意識にできるようになりたい。
rows = data[1:]
csvの1行目以降を簡単に取っている。どうも簡単なデータ構造を基本的な処理の組み合わせでシンプルに扱うというところを疎かにしがちで冗長になったり、安易にクラスにしたりするので反省していきたい。
そしてこのコードの処理の大半が次の一行に凝縮されている。
result.append(dict([(k, v) for k, v in zip(cols, row)])
zip関数を使うと複数のシーケンスを簡単に回せるんですね!これ、Rubyだとちょっと面倒な処理だと思います。(俺のRubyスキルの低さ含めて)
これはモテる!
yaml.safe_dump
そしてyaml.safe_dump。まさに元エントリーで書かれているように、普通にyaml.dumpして(´・ω・`)となっていました・・・。
dest = src.replace('.csv', '.yml', src.rindex('.'))
ここも素敵。元のコードだとピリオドが一つ以上あるファイル名でおかしなことになりますね。
同じ問題をうまい人にも解いてもらってそれを見るのはとても勉強になりますね。プログラマの教育の話でも目の前で解いて見せるという話がありましたが、とても効率的な気がしました。
日々ブログに恥を垂れ流してますが時々こういう良い事があるので嬉しいですね。ありがとうございます!
Mr.Tブログを復活させるべくWordPress2.8.6を実家サーバーに入れてみる。
$ sudo apt-get install libapache2-mod-php5 php5-mysql
$ mysqladmin -uroot -p create mrt
$ mysql -uroot -p -e "grant all on mrt.* to mrt@localhost identified by 'unk';"$ wget http://ja.wordpress.org/wordpress-2.8.6-ja.zip
$ unzip wordpress-2.8.6-ja.zip
$ mv wordpress mrt
$ cd mrt
$ cp wp-config-sample.php wp-config.php
$ sudo chown deployer:www-data wp-content
$ chmod g+w wp-content
できた。
192.168.0.1
255.255.255.0
219.117.237.232 - 219.117.237.239
255.255.255.248 / 29
192.168.0.? - 192.168.0.?
Hostname | Reading | Private IP | Global IP | Memory | Swap | HDD | OS | Description |
---|---|---|---|---|---|---|---|---|
rooter | 192.168.1.1 | 202.61.22.113 | ルーター | |||||
komagata | コマガタ | 192.168.1.100 | 無線LANアクセスポイント | |||||
arial | アリアル | 192.168.1.101 | 219.117.237.234 | 8GB | 512MB | 8GB | Debian Lenny | Domain0 |
lucida, storage | ルーシダ | 192.168.1.102 | 219.117.237.235 | 512MB | 256MB | 1TB | Debian Lenny | ファイルサーバー、リポジトリ |
courier | クーリエ | 192.168.1.103 | 219.117.237.236 | 6GB | 3GB | 500GB | Debian Lenny | ステージング、開発 |
verdana | ベルダナ | 192.168.1.104 | 219.117.237.237 | 512MB | 256MB | 100GB | Debian Lenny | BTS、ツール |
helvetica | ヘルベティカ | 192.168.1.105 | 219.117.237.238 |
実家のサーバー(Debian lenny)にRemedie入れたら、動いたんだけどOPMLインポートしてアクセスすると落ちる。
動いてるヤツのremedie.db持ってこようかな?
$ perl bin/remedie-server.pl
"unicode" attribute will be deprecated. Use "sqlite_unicode" instead. at /usr/local/lib/perl/5.10.0/DBI.pm line 708.
"unicode" attribute will be deprecated. Use "sqlite_unicode" instead. at /usr/local/lib/perl/5.10.0/DBI.pm line 708.
"unicode" attribute will be deprecated. Use "sqlite_unicode" instead. at /usr/local/lib/perl/5.10.0/DBI.pm line 708.
"unicode" attribute will be deprecated. Use "sqlite_unicode" instead. at /usr/local/lib/perl/5.10.0/DBI.pm line 708.
"unicode" attribute will be deprecated. Use "sqlite_unicode" instead. at /usr/local/lib/perl/5.10.0/DBI.pm line 708.
"unicode" attribute will be deprecated. Use "sqlite_unicode" instead. at /usr/local/lib/perl/5.10.0/DBI.pm line 708.
HTTP::Engine::Interface::AnyEvent : You can connect to your server at http://0.0.0.0:10010/
We won't be doing any rendezvous publishing, please install a Net::Rendezvous::Publish::Backend:: module
We won't be doing any rendezvous publishing, please install a Net::Rendezvous::Publish::Backend:: module
"unicode" attribute will be deprecated. Use "sqlite_unicode" instead. at /usr/local/lib/perl/5.10.0/DBI.pm line 708.
"unicode" attribute will be deprecated. Use "sqlite_unicode" instead. at /usr/local/lib/perl/5.10.0/DBI.pm line 708.
"unicode" attribute will be deprecated. Use "sqlite_unicode" instead. at /usr/local/lib/perl/5.10.0/DBI.pm line 708.
"unicode" attribute will be deprecated. Use "sqlite_unicode" instead. at /usr/local/lib/perl/5.10.0/DBI.pm line 708.
"unicode" attribute will be deprecated. Use "sqlite_unicode" instead. at /usr/local/lib/perl/5.10.0/DBI.pm line 708.
"unicode" attribute will be deprecated. Use "sqlite_unicode" instead. at /usr/local/lib/perl/5.10.0/DBI.pm line 708.
"unicode" attribute will be deprecated. Use "sqlite_unicode" instead. at /usr/local/lib/perl/5.10.0/DBI.pm line 708.
"unicode" attribute will be deprecated. Use "sqlite_unicode" instead. at /usr/local/lib/perl/5.10.0/DBI.pm line 708.
"unicode" attribute will be deprecated. Use "sqlite_unicode" instead. at /usr/local/lib/perl/5.10.0/DBI.pm line 708.
"unicode" attribute will be deprecated. Use "sqlite_unicode" instead. at /usr/local/lib/perl/5.10.0/DBI.pm line 708.
"unicode" attribute will be deprecated. Use "sqlite_unicode" instead. at /usr/local/lib/perl/5.10.0/DBI.pm line 708.
"unicode" attribute will be deprecated. Use "sqlite_unicode" instead. at /usr/local/lib/perl/5.10.0/DBI.pm line 708.
"unicode" attribute will be deprecated. Use "sqlite_unicode" instead. at /usr/local/lib/perl/5.10.0/DBI.pm line 708.
"unicode" attribute will be deprecated. Use "sqlite_unicode" instead. at /usr/local/lib/perl/5.10.0/DBI.pm line 708.
"unicode" attribute will be deprecated. Use "sqlite_unicode" instead. at /usr/local/lib/perl/5.10.0/DBI.pm line 708.
"unicode" attribute will be deprecated. Use "sqlite_unicode" instead. at /usr/local/lib/perl/5.10.0/DBI.pm line 708.
Malformed UTF-8 character (fatal) at /usr/local/lib/perl/5.10.0/XML/LibXML/Error.pm line 217. at /usr/local/share/perl/5.10.0/HTML/TreeBuilder/LibXML.pm line 59