世界的日曜WEBプログラマー日記 -8ページ目

世界的日曜WEBプログラマー日記

一年後に世界的なWEBサービスを運営するにはどうすればいいのか書いていく(予定)

弁当職人のマイ食サポートセンターです。
さて、私達のブログではWordpressを使っていますが3.9にアップデート後に全ての記事が表示されなくなりました。
具体的には次のようなエラーが出ます。

PHP Catchable fatal error: Object of class WP_Post could not be converted to string in **** on line 455

解決方法は
sudo emacs qtranslate_core.php

と直接ファイルを編集するしかいまのところありません。(2014/4/17)
ファイルを開いた後、関数名qtrans_strftimeをみつけて、すぐ直下でreturn $default;を入れて下さい。(414行目付近 )

// don't do anything if format is not given
+ return $default;


これで全て動きます。
皆困っていますねw
では、本日はこの辺で。

株式会社OctOpt
コンピューターサイエンス会社OctOptの技術公式ブログ
等々力 康弘
@rocky_house

Pythonの英語翻訳スクリプトを作りたい。


と思ったのだが、色々と大変であることを悟った。

英単語を日本語に翻訳するPythonツールが必要だったので、Google翻訳APIを使おうと思ったんだけど有料だったので断念。
結局jmdictを使うことにする。英語の辞書はJMDictを用いる。

jmdict(コマンド)はオープンソースで、これをインストールするとコマンドラインから日本語と英語変換を行うことが可能となる。なお、JMDict(辞書)はフリーの日本語データベースである。
名前はが同じなので混同しないように。
jmdictをインストール後はPythonでラッパーを書けばいい。

Step1
jmdict(コマンド)をダウンロードする
http://sourceforge.net/project/showfiles.php?group_id=228973

ダウンロードしたら、適当な場所に展開して
$ make
でコンパイル完了。お手軽。

※注意
getoptのエラーが出た場合は、
jmdict.cppに#include <getopt.h > を追加してmakeすれば良い。


Step2
辞書をダウンロード
http://ftp.monash.edu.au/pub/nihongo/JMdict_e.gz
ダウンロード後、
$ gunzip JMdict_e.gz
で、解凍する。

Step3
jmdict_importを使って辞書をインポートする。
$ sudo mkdir /usr/share/jmdict
$ sudo ./jmdict_import JMdict_e


でおわり。

あとは
日本語から英語
$ ./jmdict -j お弁当
英語から日本語
$ ./jmdict -J lunch


後はPythonでラッパーを書けば全ては終わる。
ラッパーではos.systemを使うなどすればいい。今度書く。


株式会社OctOpt
コンピューターサイエンス会社OctOptの技術公式ブログ
等々力 康弘
@rocky_house

MyISAMからInnoDBへ全てのテーブルを変更



調べていくとMyISAMより殆どのケースでInnoDBの方が有効なようだ。
mysqldumpをとるときもMyISAMでは仕様上テーブルロックがかかってしまう問題もある
InnoDBであれば--single-transactionをつけることでロックかからずに出力できるとのこと。

事情は人それぞれとして、早速変更する。

最初はDjangoでやろうと思ったがスタックオーバーフローを読んでいくと、これはDjangoでなくMySQLの仕事だと書かれていた。なのでSQLで実行する。

手順



1. まず、データベース名をセット
SET @DATABASE_NAME = 'name_of_your_db';

2. 続いて次のコマンドを実行する。(このコマンドでは何も変更されないのでご安心を)
SELECT CONCAT('ALTER TABLE ', table_name, ' ENGINE=InnoDB;') AS sql_statements
FROM information_schema.tables AS tb
WHERE table_schema = @DATABASE_NAME
AND `ENGINE` = 'MyISAM'
AND `TABLE_TYPE` = 'BASE TABLE'
ORDER BY table_name DESC;

3. 吐き出されたSQLを実行する
上のSQL文を実行するとSQL文が吐き出される。
吐き出されたSQL文を実行すれば、全てのテーブルはInnoDBとなる。

株式会社OctOpt
コンピューターサイエンス会社OctOptの技術公式ブログ
等々力 康弘
@rocky_house