生活

Wordpress with sqlite その4

Mohmongar
このサイトはwordpressをsqliteで運用しているが、前々からサーバーのエラーログにエラーメッセージが出るのが気になっていた。まあ動いてる からいいかと思っていたが、たまにトップページのリクエストに1回目だけ失敗しているのがこれのせいではないかと最近気が付いた(遅い)その4つめ エラーログはこんな感じ。 Error message was: Problem preparing the PDO SQL Statement. Error was near "7": syntax error ”7”の付近でsyntax errorといわれている。該当行は/wp/wp-includes/post.php内で $old_posts = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_status = 'auto-draft' AND DATE_SUB( NOW(), INTERVAL 7 DAY ) > post_date" ); でDATE_SUBとINTERVALをつかっているが、これはsqliteにないので data(..)をつかう。 $old_posts = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_status = 'auto-draft' AND DATE('now', '+ 7days' ) > post_date" ); これで様子をみる。

WordPress with sqlite その3

Mohmongar
こ のサイトはwordpressをsqliteで運用しているが、前々からサーバーのエラーログにエラーメッセージが出るのが気になっていた。まあ動いてる からいいかと思っていたが、たまにトップページのリクエストに1回目だけ失敗しているのがこれのせいではないかと最近気が付いた(遅い)その3つめ エラーログはこんな感じ。 Error message was: Problem preparing the PDO SQL Statement. Error was no such column: false sqliteにはboolean型がないので、"false"なんてカラムがないよ!といわれている。該当行は/wp/includes/user.php内で $select_count[] = $wpdb->prepare( "COUNT(NULLIF(meta_value LIKE %s, false))", '%' . $wpdb->esc_like( '"' . $this_role . '"' ) . '%'); でfalseをつかっている。これを0に変える。 $select_count[] = $wpdb->prepare( "COUNT(NULLIF(meta_value LIKE %s, 0))", '%' . $wpdb->esc_like( '"' . $this_role . '"' ) . '%'); これで様子をみる。

uplayアバター画像のカスタム

Mohmongar
uplayのアバター変更がこの前からJPGとか画像ファイルがアップできるような仕組みになってたのに、なぜかうまくアップロードできなかったのが、今回うまくできた。んでいつものこのキャラにした。

Wordpress with sqliteのエラー その2

Mohmongar
こ のサイトはwordpressをsqliteで運用しているが、前々からサーバーのエラーログにエラーメッセージが出るのが気になっていた。まあ動いてる からいいかと思っていたが、たまにトップページのリクエストに1回目だけ失敗しているのがこれのせいではないかと最近気が付いた(遅い)その2つめ エラーログはこんな感じ。 Error message was: Problem preparing the PDO SQL Statement. Error was a GROUP BY clause is required before HAVING どうもsql構文で"HAVINGの前にはGROUP BYがいるで"と出ているようだ。該当行は/wp-admin/includes/template.php内で $sql = "SELECT DISTINCT meta_key FROM $wpdb->postmeta WHERE meta_key NOT BETWEEN '_' AND '_z' HAVING meta_key NOT LIKE %s ORDER BY meta_key LIMIT %d"; ってな感じ。たしかにGROUPがないのにHAVINGは意味ないと思い、WHEREで統合。 $sql = "SELECT DISTINCT meta_key FROM $wpdb->postmeta WHERE (meta_key NOT BETWEEN '_' AND '_z') AND (meta_key NOT LIKE %s) ORDER BY meta_key LIMIT %d"; これで様子をみる。

撥水スプレー

Mohmongar
ここのところ雨が多いため、車のフロントガラスに撥水処理をしてみた。雨の日にフロントガラスに数秒吹き付けて、ワイパーをかけるだけ。けっこういいかげんにスプレーしたはずだが、全面しっかり撥水している。最初ちょっと曇った感じになるが、ワイパーをかけていると徐々に気にならなくなってくる。ただそうすると今度はワイパー部分とそうでない部分で水のはじき方が違ってきた。ワイパーで撥水被膜が剥げてくるのかな。とはいえその日じゅうは十分保ちました。次の雨の日までコーティングが残っているかな。

GnuPGのディレクトリ

Mohmongar
Windows版GnuPGの鍵束ファイルの設定場所は環境変数GPGHOMEではなく、GNUPGHOMEだったのでメモ。

[Windows 10]BD/DVDドライブが認識しない

Mohmongar
Windows 10化したら、内蔵BD/DVDドライブ(SATA接続)が認識してなかった。いろいろググったがレジストリやらを変える前に、SATAの接続位置を変えたら認識した、というのがあったので試したらドンピシャ。具体的に何が悪いのか(Master/Slave?チャンネル)までは不明だけどいいっか。

Android USB接続時のモード切替

Mohmongar
Nexus5で撮った写真をコピーしようとUSBでWindowsにつなぐとなにも見えない・・・いつまにかAndroidをUSB接続したときのモード(MTP/PTP)切り替えがメニューからなくなっていた。調べると開発者向けオプションでしか切り替えできないらしい。前からそうだったっけ?ビルド番号連続タップで開発者モードにすれば設定画面に開発者向けオプションが現れる。あぁいろいろモードがあるね。MIDIってなにすんだ?楽器になるんか?

c++のeofは事後確認

Mohmongar
C++でfstreamを使ってファイルアクセスをしたとき、eofの動きがCのFileライブラリとかの動きと違うことに気がついた。Cの場合は「読む前にもうデータがないことがわかる」が、C++のstreamの場合は「読んでみて初めてデータがないことがわかる」である。 #include <iostream> #include <string> #include <fstream> using namespace std; int main(void) { ifstream ifs("test.txt"); char c; while (!ifs.eof()) { c = ifs.get(); cout << hex << (int)c << endl; } return 0; } を動かすと、 $ cat test.txt abc $ ./test 61 62 63 a ffffffff $ とよけいなfffffff(元はcharの0xff)がつく。最後の改行(LF=0x0a)を読んだあとeof()はtrueにならないのである。データがない状態でgetやreadをして、ないことがわかるとやっとeof()がtrueになるのである。さきほどのプログラムを期待通りに動かすには、読む前にeofチェックではなく、読んだ後にチェックすべきである。 #include <iostream> #include <string> #include <fstream> using namespace std; int main(void) { ifstream ifs("test.txt"); char c; for(;;) { c = ifs.get(); if (ifs.