diaryこの広告は、90日以上更新していないブログに表示しています。2013-02-06WordPressに移行しましたhttp://kanonji.info/blog/ちょっとずつ準備していたWordPressだけど、最低限の環境は整ったので移転することにしました。どちらかというと、はてなダイアリーに不満があるからっていうより、WordPressでやりたい事が増えてきたからというのが理由です。はてなダイアリーは2008年11月からなので、書き続けて4年強。266エントリー程度書いたみたいです。1年平均で66.5エントリーなので、思ったほど書いてないですね。はてなダイアリーは、はてな記法やシンタックスハイライトなど、プログラマーフレンドリーでいいサービスなんですが、WordPressの自由度が欲しくなりました。移転しても別に書く内容は変わらず、淡々と書き続けると思います。WordPressにするので、WordPressのエントリーは増やしていきたいです。15:35WordPressに移行しましたTweet広告を非表示にするもっと読むコメントを書く2013-01-15coreserverでphp5.3.8用のAPCをビルドしてみたけどうまくいかなかったphpcoreserverのPHPは5.2.5がデフォルトだけど、CGIモードにすると5.3.8か5.4.7が使えます。CakePHP2系は5.2.8以上が必要なので、coreserverでCakePHP2系を使うならCGIモードで5.3.8以上のどちらかにしないとです。kanonjiの日記で調べたapc.soが動かない事に気がつきました。レスポンスが悪く、APCを使いたいなと思っていたところなので、なんとかしようと、APCをソースからビルドしようと色々やってみました。結果は行き詰まってしまって、お手上げ状態なんだけど、やってみた事をまとめておきます。file.見慣れないエラー、多分phpじゃなくApacheのエラーだと思う。5.4.7用のapc.soが無いか探したり、その流れでビルドを試しました。試す中、CGIモードphpのバージョンを5.3.8と5.4.7とで、何度も切り替えてたので、コマンドとかが5.3だったり5.4だったりします。解決しない事は一緒だし恐らく問題点も一緒だと思います。installここで、なぜか--prefix指定を無視して/usr/localにinstallする動きをします。共用サーバーなので当然パーミッションは無く書き込めないけど、なぜ--prefixが無視されるんだろうか。/virtual/myuser/myhome/local/lib/php54/extensions仕方ないのでmakeで生成されたファイルをcpでコピー。"/virtual/myuser/myhome/local/lib/php54/extensions/"extension=apc.soこの内容でphp.iniを作ってこれでAPCが使えるかと思いきや、前述と同じエラーが出ました。Errorをよく読んでみると、デバッグ手段が書いてある事に気がつきました。拡張子を.phpdに変える*1か、MimeTypeをapplication/x-httpd-phpcgi-debugにすると、デバッグ出来るらしい。#5.4.7coreserverはこれでphpのバージョンを使い分けます。.php試しにやってみたら、デバッグ出来ました。この辺はちゃんとそれぞれ用意してあるみたいです。今書いてる最中に気がついたけど、AddHandlerじゃなくてAddTypeを使っちゃってました。指定したバージョンでのデバッグになってたので、このサーバーではどっちで設定しても良い様にしてあるんだと思います。API=20100525デバッグでは、phpの普段意識しない低レイヤー部の動きを表すデバッグ出力が、ブラウザに出てました。その中に、APCモジュールの初期化に失敗しているメッセージがあり、理由としてはphpとAPCモジュールで、コンパイル時に使ったAPI*2のバージョンが違うといったもの。coreserverに元々あったAPCでも、自分でビルドしたAPCでも、同じ理由で初期化に失敗しているようです。220060519phpizeした時に似たようなものが出ていたので、次はphpizeを調べることに。No」が「20100525」になれば解決出来そうな感じ。${prefix}/include`/php"builddir="`pwd`"SED="/usr/bin/sed"[snip]phpize、ここでは5.4系用のphp54izeだけど、の中身は単にシェルスクリプトみたいなので、中を見てみました。configureのprefixと同じものか分からないけど、prefix='/usr/local'と決めうちになってたりします。この辺が怪しい様な感じです。./php54ize_exec_prefix=/usr/localphpdir=/usr/local/lib/php/buildincludedir=/usr/local/include/phpphp54izeをコピーして、変数をechoしてみました。phpdir、includedirとか、異なるバージョンのphpが入ってる環境で、どうなるのか、気になります。scan_makefile_in.awk試しにphpdirの中を確認してみると、どうもビルドに必要そうなファイルが入ってました。filesを探してる的なメッセージもあります。この辺りから、異なるバージョンのphpを同居させるにあたってphpizeは単に別名で保存しておくだけじゃなく、中で序盤に定義してある変数の書き換えや、phpdirに有るべきビルドファイルも、バージョン毎に残しておく必要が有るんじゃないかと思いました。この仮定が合っている場合、ビルドに必要なファイルが無いってことになるので、ここで行き詰まりです。1.3.37*1:エラーメッセージだと.phpdextensionとなってるけど、多分スペース抜け落ちだと思う。15:09coreserverでphp5.3.8用のAPCをビルドしてみたけどうまくいかなかったTweet広告を非表示にするもっと読むコメントを書く2013-01-10Accept-Languageを見て言語別に分けるApacheの多言語化をやってみたのでメモindex.html.jaとかindex.html.enとかでApacheだけで多言語化出来る事は一応知ってたけど、phpとか使わないサイトだけど多言語化はするなんて、今までやった事無かった。使えそうな機会があったので、やってみました。headerを見て、言語別に振り分けるんですが、複数の言語を優先度付きで設定できたりen-USといったロケールのサブセットも指定できるので、ちょっと予想しにくい動きをします。この辺も、色々設定してcurlで確認してみたので書いておきます。いうか、こっちを書きたい。ディレクティブを使った多言語化いまいち、この方法の名前みたいなのが分からないけど、mod_negotiationが主となる方法っぽい。他のmod_mimeやディレクティブは無くてもやる方法もあるみたい*1だけど、今回は全部セットで使います。今回は、基本的に日本語のロケールが指定してあれば日本語を、それ以外は英語になる様に設定しました。2.2この機能については、Apacheドキュメントではこのページが詳しい様子。すると、コンテンツネゴシエーションが、この方法の名前ってことになるのかな?なんかしっくりこないけど。Options=MultiViews今回は.htaccessに設定を出したので、httpd.confのAllowOverrideに設定します。Optionsディレクティブを使う為に。AllだとMultiViewsは上書き可能にならないらしい。+MultiViewsAddLanguageの3行は無くても、大抵はhttpd.confに基本的な設定があるので振り分けはされるけど、あった方が多分意図した振り分けになると思う。本当はen-USやen-GBとかも書いておいた方が良いのかもしれないけど、あまり深追いしたくなかったので、今回は無しにしました。用意したファイルindex.html.jaindex.html.enindex.htmlは置いてません。確認してないけどindex.htmlも置いてあると、多言語化よりもindex.htmlが優先されているようでした。http://example.com基本的にcurlコマンドを使って挙動を確認しました。Accept-Languageに複数のロケールがあり、優先度が不明な場合、LanguagePriorityによって決まる。enもっと下に、httpd.confのこれに関連する部分を抜粋してあります。そのhttpd.confと前述の.htaccessが設定してある状態で考えます。jaとenが指定されているけど優先度が不明。LanguagePriorityではenが最優先なので、index.html.enが出力される。ja-JPとは合致しないとても不便ですが、ロケール*2のサブセットはサブセット無しのものには合致しないようです。書いても、かなり分かりにくいと思うので具体例を書きます。en;q=0.8この例では、AddLanguageがこの2つだけの場合で考えます。.jpという設定が無いので、優先度が0.8のenが選択されて、index.html.enが出力されます。前述のやり方でja-JPやja-JP-macを設定してるのは、この為です。ja-JPこの例でも、AddLanguageがこの2つだけの場合で考えます。.jpという設定が無くLanguagePriorityではenが最優先なのでenが選択されると思いきや、jaが選択されます。ja-Barこんな、あり得ないロケールであっても、ロケールがja系のみしか指定されてないなら、LanguagePriorityに関わらずjaが選択されるみたい。FallbackこれはPreferとFallbackの、2つの場合でLanguagePriorityを使うかどうかを設定します。Fallbackの場合は、どちらの場合でもLanguagePriorityを使います。Prefer優先度の同じロケールが指定されている場合にLanguagePriorityを見て、優先されるロケールを選択する様になる。Choicesが返されます。Fallbackサーバー側で用意してないロケールを指定した場合にLanguagePriorityを見て、優先されるロケールを選択する様になる。Acceptableが返されます。2.2かなり難しい表現だけど、どういうアルゴリズムでロケール*3が選択されるか、解説してあります。Fallbackhttpd.confはこんな感じで、たぶんCentOSでyumで入れたApacheのままになっていると思います。今気がついたけどDefaultLanguageがコメントアウトされたままで、これをちゃんと設定したら、また挙動変わるのかも。16:30Accept-Languageを見て言語別に分けるApacheの多言語化をやってみたのでメモTweet広告を非表示にするもっと読むコメントを書く2012-12-18ドコモのAndroid端末にプリインストールされてるらしい邪魔なアプリAndroidスマートフォンは、それほど真剣に追いかけてないので、たまに見聞きする情報*1からの印象ですが、国産のAndroid端末は大抵地雷だと思っています。それとあわせて、微妙に思わせる情報として入ってくるのが、ドコモのプリインストールアプリが、また電池を食ったり、バグだらけという話。国産端末を持ってないので、今まであまり気にしてなかったけど、ちょっとだけ知っておこうかなと思いました。これは国産じゃなくてもドコモからなら入ってるわけですが。ドコモ電話帳サービスちょっと検索した感じ、Androidの電話帳とは別にドコモが用意した電話帳がプリインストールされていて、それの事っぽい。アプリ名にサービスってついてるのが紛らわしい感じ。これはかなり電池を無駄食いするらしく、更にドコモのプリインストールアプリを消したり無効化しようとしてる人達からみても、なかなかそれが出来ないゾンビのようなアプリになっているらしい。電話帳サービスとの再戦・その2http://blog.livedoor.jp/sumahoreview/archives/21332888.html無効化やアンインストールではないけど、ある程度、ドコモ電話帳サービスの暴走を軽減する方法がある様です。ドコモバックアップちょっと検索しただけだと、具体的なところが良く分からなかった。「電話帳バックアップ」という名前で機能が変わらないアプリもドコモから出ているらしく、ドコモバックアップとは電話帳のバックアップを提供するものらしい。ドコモバックアップが電池をすごい消費しているという口コミがそこそこあるので、これもバッテリー食いっぽい。iコンシェルちょっと良く分からないんだけど、どうやらiコンシェルというのはサービス名らしい。そのサービスに対応した端末というのがあるらしく、対応端末にiコンシェルに必要なアプリがプリインストールされているみたい。iコンシェルはドコモの有料オプションサービスドコモ発売のiコンシェル対応端末には、iコンシェルに必要なアプリがプリインストールされていて、アンインストールが許可されていないらしい。iコンシェル関連アプリはバッテリーを食う。問題点はこんなところ。検索しただけだと確認できなかったけど、iコンシェルに未契約なのにプリインストールされた関連アプリが無駄に起動してバッテリーを食うなら、かなりマイナス点だなぁ。あと、はっきり書いてなかったけどiコンシェル関連アプリって書いてるとこがあったから、恐らく複数のアプリからなるサービスなんだろう。探して一覧にしようかとも思ったけど、こういうネガティブ方面ではがんばりたくない。自分の端末には入ってないし・・・。ドコモあんしんスキャンこの手のものは、どうしたってリソースを使うしバッテリーも使うから、しょうがない気はする。Playでの評価も悪くない。プリインストールかどうかはわかんなかった。https://play.google.com/store/apps/details?id=com.mcafee.vsm_android_dcmspモードメールここで挙げた中で唯一、自分の端末にプリインストールされてたアプリ。Playでもどこでも評判が悪い。これが出る前は、個人の開発者が作ったIMoNiが使われていたと思う*2けど、ドコモ公式から出たspモードメールがあまりにひど過ぎて、それまで使ってた個人開発のアプリがすごい評価されていた記憶があります。最近のspモードメールが改善してるのかどうかは分からないけど。あと、アプリ名に半角カタカナを使ってるってだけで、なんか嫌。内部でMiniDcmWapPushHelperという別のアプリ(?)を使っているらしい。spモードメールは無効化出来たけど、MiniDcmWapPushHelperは出来ないのは何でだろう。以下のプリインストールアプリは無効化できません。Application)Disableを選択すると、PackegeManager#setApplicationEnabledSetting()がよばれ無効化されます。無効化されたアプリは、アプリ一覧に表示されなくなります。Playには存在してないし、ランチャーでもない。するとやっぱりシステムアプリという位置づけなのかなぁ。それはそうと、プリインストールアプリをアップデートすると無効化できなくなるって、なんか理不尽な感じがするけど、なんでだろう。*1:バッテリーがすぐなくなる。通話中じゃなくても再起動する。プリインストールで本体メモリがすでいっぱい。当時Android使ってなかったから良く覚えてない。bash-completionしたら、bash-completionのバージョンが2系になってました。kanonjiの日記でセットしたGItのブランチ名をプロンプトに表示するやつが動かなかったので、調べてみました。thenというif文が常にfalseになってました。/opt/local/share/bash-completion/completions/$BASH_COMPLETION_DIRに代入されていたファイルパスも、基本的には無くなっています。代わりに/opt/local/share/bash-completion/completions/に、各コマンドのcompletionsファイル*1が配置されています。/opt/local/share/bash-completion/completions/このファイルパスが代入されたシェル変数は、どうやら無いみたい。BASH_COMPLETION_COMPAT_DIRBASH_COMPLETION_COMPAT_DIR=/opt/local/etc/bash_completion.d$BASH_COMPLETION_DIRに代入されていたファイルパスは、互換用のシェル変数っぽい名前の$BASH_COMPLETION_COMPAT_DIRに代入されています。今回の環境では1系のbash-completionが元々入って無かったので/opt/local/etc/bash_completion.dは存在しませんでした。details.https://github.com/git/git/blob/v1.8.0/contrib/completion/git-completion.bashhttps://github.com/git/git/blob/v1.8.0/contrib/completion/git-prompt.sh1.8.0からなのか、もう少し前からなのか分からないけど、PS1環境変数を使ってプロンプトにgitのブランチ名を出すのに必要なコードは、別ファイルに切り出されている様子。'fiこんな感じで取り急ぎ動く様にしました。MacPortsMacPortsのWikiにセットアップ手順が解説されています。4.1以上を設定したり、.bash_profileに書く設定が載ってます。/opt/local/etc/macports/variants.conf+bash_completionこのファイルに、常に使いたいvariantsを設定出来るみたいです。/opt/local/etc/profile.d/bash_completion.shこの様にシンボリックリンクが貼ってあります。/opt/local/etc/bash_completion内から/opt/local/share/bash-completion/bash_completionが呼ばれています。この中で、前述の$BASH_COMPLETION_COMPAT_DIRが定義されてたりします。@2.0_1書いた日2012-11-21ちょっとほっといたけどそんなに日は経ってない。13:45bash-completion2だと$BASH_COMPLETION_DIRというシェル変数が無い件Tweet広告を非表示にするもっと読むコメントを書く2012-12-05Thunderbirdのkeyconfig拡張を入れて暴発するアーカイブなどのショートカットキーを無効にしたメーラーにはそんなにこだわりもないので、無難にThunderbirdを使ってるんですが、どうしても変えたい設定がありました。迷惑メール扱いにするこの3つだけじゃないですが、CtrlやAlt無しの単体で使えるショートカットキーが10個くらいあります。これフォーカスがThunderbirdに向いてる事に気がつかずに、何か入力しようとして、意図せずこのショートカットを使ってしまうことがあってちょっと危ない。メールを大量に捌く人は便利に使っているかもしれないけど、使わない自分にとっては不意に動いてしまう危険なショートカットでしかない。いう事で、また意図せずアーカイブ送りにしてしまったので、いい加減対策しました。キーボードショートカットのカスタマイズ...出てきたダイアログで、CtrlやAlt無しのショートカットを探してキーを削除していけば、危険なショートカットを無効にできます。補足どういうわけかこのkeyconfig拡張はThunderbird向けアドオンに置いてありません。よるサポートや保証がありません)。https://support.mozillamessaging.com/ja/kb/keyboard-shortcuts#w_agckcuckcoaicdckcnaecccnagaeaialczacajじゃあ、なにか非公式なものかというと、Mozillaのヘルプでも紹介されているものです。いうユーザーが作成したアドオンのようです。0.6.xはLeopardでもビルド出来てたんだけど、次の安定版0.8.xになってからビルド出来ずに困ってました。kanonjiの日記でインストーラーを使ってみると、インストールディレクトリが固定であまり好みじゃなく、タイトル通り消してしまった。v0.8.7これでビルド出来ました。4.2を使う必要があるとの事。nvmで入れてるけど、nvmでも上記の通りビルド出来ました。732.ビルド出来たのは良いけど、対話モードで起動しようとするとエラーになりました。GitHubのissueで直したり直ってないってコメントが来たりで、対応中の様子。web.jsちょうど書いてるコードは、動かしてみたら動くみたいなので、対話モードだけ使えないのなら、まぁそんなに不都合は無いかな。2こんなエラーになりました。なんどかビルドは試していて、上記にsnapshot.logに色々書いてあったケースもあったような気がするんだけど、今回は空っぽでした。GitHubpythonもLeopardのデフォルトが2.5系なので、もう1個新しいバージョンを入れる必要があります。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。