Facebookにポストできるかのテスト

XB13icRqE48WordPressにFacebook Auto Publishプラグインなるものをインストールしてみた。投稿したものがFacebookに自動的にポストされるそうだ。

設定自体は簡単だが、各項目の意味がなかなかわからなかった。うまく設定できているのだろうか。

—-
ああ、できてるできてる。ということで、設定手順のメモ。

1. WordPressのPluginで、Facebook Auto Publishプラグインをインストール
  このときphp5-curlパッケージが必要になった

2. WordPressのダッシュボードに「Facebook Auto Publish」のメニューが追加されるので、「Settings」を開く

3. 「Application ID」とか「Application Secret」を要求してくるが、そんなものは持っていないので、Facebookにログインして、デベロッパ登録を行う。携帯電話のメールアドレスでアクティベーションを行うようだ。

4. 「アプリを管理」→「新しいアプリを作成」する。

5. 「アプリ名」「アプリの名前空間」に任意の名称を指定するわけだが、他の人がすでに使っている名前は使えない。ユニークな名前を指定しなければならない。「アプリのカテゴリ」は適当に「ページ用アプリ」を選んだ。WebページのURLはもちろん自分のお家だ。

6. Facebook Auto Publisプラグインに戻り、新規作成したアプリの「App ID」と「App Secret」を入力する。

7. アクティベーションのためにプラグインからFacebookにアクセスし、アクセス許可を行う。

というようなステップで設定ができた。ページを「公開」した後で編集したらどうなるのかな。

気持ち悪いiOS7

Screenshot 2013.10.02 15.05.00嫌な予感はあったが、なんとなくあいぽんをiOS7にしてしまった。アップデートは何も問題は無かったのだが、見た目が気持ち悪い。最近流行のフラットデザインというのだろうが、Windowsのmoreicons.dll(だったっけ?)の中に入っている、Windows3.0以来の時代遅れなアイコンのようにお見える。

そりゃぁ、3Dバリバリ、透過光ギラギラのアイコンを作るのは面倒くさいし、確かにみんな飽きてきた。だからといって、20年前のデザインに一気に戻すことはなかろうに。
win98

テーマを変えてみるテスト

logo-v-rgb今やっているお仕事が、WordPressで作られたサイトを日本語にローカライズするということなので、どこをいじればどうなるのかが分かってきた。ということで、テーマをちょっとだけ変更してみた。

今回は、標準で付いてくるTwentyThirteenというテーマを選んだ。ヘッダのロゴを変えるために、inc/custom-header.phpに以下の変更を施した。

/*
 * Default custom headers packaged with the theme.
 * %s is a placeholder for the theme template directory URI.
 */
register_default_headers( array(
    'circle' => array(
        'url'           => '%s/images/headers/circle.png',
        'thumbnail_url' => '%s/images/headers/circle-thumbnail.png',
        'description'   => _x( 'Circle', 'header image description', 'twentythirteen' )
    ),
    'diamond' => array(
        'url'           => '%s/images/headers/diamond.png',
        'thumbnail_url' => '%s/images/headers/diamond-thumbnail.png',
        'description'   => _x( 'Diamond', 'header image description', 'twentythirteen' )
    ),
    'star' => array(
        'url'           => '%s/images/headers/star.png',
        'thumbnail_url' => '%s/images/headers/star-thumbnail.png',
        'description'   => _x( 'Star', 'header image description', 'twentythirteen' )
    ),
    'usagi' => array(
        'url'           => '%s/images/headers/usagi-goten_logo.png',
        'thumbnail_url' => '%s/images/headers/usagi-goten_logo-thumbnail.png',
        'description'   => _x( 'usagi-goten', 'header image description', 'usagi-goten' ),
    ),
) );

rbenvにハマる

logo私事であるが、転職した。そこで提供されたマシンが、もっとも入手しやすいBSDベースのマシン、すなわち林檎だ。ということでさっそく環境の構築を行った。

必要なものの中に静的Webページ生成ツールnanocがある。これ自体はrubyで作られている。

林檎にはもともとruby 1.8がプレインストールされているが、これはもう古すぎる。最新の安定版ruby 2.0.0p247を、rbenvを使ってインストールした。gemなども合わせてインストールし、続けてnanocもインストール。エラーもなくインストールできた。

ところが起動しようとすると


$ nanoc -v
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:777:in `report_activate_error': Could not find RubyGem nanoc (>= 0) (Gem::LoadError)
        from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:211:in `activate'
        from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:1056:in `gem'
        from /usr/bin/nanoc:22

いろいろググったが、さっぱりわからない。コレなんかはビンゴなのだが、解決には至らなかった。

/usr/bin/nanocが単なるスクリプトであることに気づいた。そうだ、先頭行の起動パスがいけない。

#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

古いruby 1.8を呼び出したが、rubygemとのバージョンが合わないということらしい。

結論、起動パスを以下のように書き換えればいい。

#!/usr/bin/env ruby

サーバがちうこくぢんになったゾ

2013-07-25T09-51-32_0オフィスに行ってみると、共有フォルダにアクセスできないと訴えられた。Windows 2008 R2マシンをみると、電源は入っているがエラーが出ていた。

そのメッセージがコレだ。漢字が一切(1文字以外)入っていないのは幼稚園生にでもわかるようにしているのだろうか。それは良いとして(良くない)、メッセージの意味が分からない。

コンピューターにされているデバイスとのにがしました。

けUSBドライブのようなリムーバブルがデバイスがにりされた
や、ハードディスクやCD-ROMドライブなどのハードウェアにがあるにこのエラー
はきるがあります。リムーバブルがしくされていることを認
して、コンピューターをしてください。

このメッセージがききされるは、ハードウェアのにいわせてくだ
さい。

   : 0xc00000e9

   :   しない I/O エラーがしました。

どんなに酷い翻訳エンジンでもこうはなるまい。いったいどうやったらこういう翻訳になるのだろう。

中の国の人の日本語にちょっと似ている。「デバイスがり(利)された」だとか、「このエラーはきる(切る)があります」なんてのは、いかにもやつらがいいそうだ。でも、ヤツらならばもっと漢字を使うだろう。漢字がわからないのならば鮮人か?

logを見てみると、どうやら深夜に行われたWindows Updateからの復帰に失敗したようだが、詳細はわからない。

どうやらこのメッセージを表示したかったようだ。

コンピューターに接続されているデバイスとの通信中問題が発生しました。
外付けUSBドライブのようなリムーバブル記憶装置がデバイス使用中された
や、ハードディスクやCD-ROMドライブなどのハードウェアに傷害があるにこのエラーは
きる可能性があります。リームバブル記憶装置しく接続されていることを認
して、コンピューターを再起動してください。

このメッセージが表示される場合は、ハードウェアの製造元わせてください。

状態:0x00000e9

情報予期しない I/O エラーが発生しました。

「認」が認められるということは、漢字フォントにアクセスできなかったというわけでもなさそうだが。スタックが壊れて、printf()の第2パラメータ以降がヌルポになったといった感じだろうか。

でもなぁ、USBドライブは一切つながってないんだけどな。HDDもDVDもSATA接続になっているのに。

rubyのインストールにハマる

なぜか今頃になってrubyにはまって・・・・いる。おもしろい言語だが、endの使い回しがどうも気に入らない。Pascalのようにbeginendのペアではなく、ifも、forも、whileも、classも、すべてがいきなりendなので、このendはどのend?と悩むことしきりだ。おかげでendの入れ子が違うというエラーがやたらと出てくる。ほとんどがclassClassとtypoしてしまうのが原因だったりする。

さて、リンゴなマシンのrubyが引退したruby 1.8.7であることに気がついた。すでに2.0系列がリリースされているというのに。ということで、ソースからビルドすることにした。

README.jaどおりに、zipを展開したディレクトリで、./configureを実行し、環境に合わせた Makefile を作らせる。次に make を実行してコンパイル、さらに make check で生成物のチェックを行う。途中でソース内で初期化されていない変数を使っているぞというような警告が出ていたが、ここまでは特に問題なく進んだ。

最後のステップ、make install を実行すると、

make: *** [do-install-all] Error 1

ツレナイお言葉だ。ぐぐってみたがイマイチわからない。カレントディレクトリに出来ている実行ファイルを動かしてみると

ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin11.4.2]

問題ない。make install というのは単純にファイルを適切な場所へコピーしているだけなのに……。

コピーしているだけ? そう、sudo make install しなければいけなかったのだ。なんだ馬鹿馬鹿しい。

さて、ruby -v で実行してみる。やれやれ、まだ 1.8.7 が動いている。which ruby の結果は、/usr/bin/ruby だ。2.0 はいずこに?と探すと、/usr/local/bin/ruby だった。path の順番でこうなるわけだ。
でも、/usr/bin/ruby はシンボリックリンクだから、リンクを貼り直してやればよさそうだ。gemなんかもそうしないといけないのだろう。面倒くさい。

追記:

/usr/binに作られていたrubyがらみのシンボリックリンクを、以下のように全て張り直した。

sudo ln -sf /usr/local/bin/erb /usr/bin/
sudo ln -sf /usr/local/bin/gem /usr/bin/
sudo ln -sf /usr/local/bin/irb /usr/bin/
sudo ln -sf /usr/local/bin/rake /usr/bin/
sudo ln -sf /usr/local/bin/rdoc /usr/bin/
sudo ln -sf /usr/local/bin/ri /usr/bin/
sudo ln -sf /usr/local/bin/ruby /usr/bin/
sudo ln -sf /usr/local/bin/testrb /usr/bin/

中華タブレットにハマる

lenovo_a1そもそもの発端は、デバイス非依存(除くガラケー)なWebページを作ってみようというものだった。iOSの場合は320×480を基準に設計すれば良いので話しは簡単だ。厄介なのはAndroidで、機種により画面サイズもアスペクトも異なっている。これに対応するためには、まず機種判定し、JavaScriptなどで画面サイズを取得して…ということになる。

機種判定はブラウザのUser Agentで判断するのが簡単だ。たとえばPHPでは、

echo $_SERVER['HTTP_USER_AGENT'];

で取得することができる。返ってきた値から、iPhoneとか、Androidという文字列を探し出せば良い。

ちなみに、コレがおたくが今使っているブラウザでの表示結果だ。

[insert_php]
echo $_SERVER[‘HTTP_USER_AGENT’];
[/insert_php]


ところがなぜか、愛用のlenovo A1 AndroidタブレットiPadだと判定されてしまう。User Agentを見て驚いた。確かに我是iPad了!と言い張っている。

lenovo A1:
Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10

ちなみにiPadならぬiPhoneでの実行結果は次のとおり。

iPhone 4S:
Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B329 Safari/8536.25

こちらはモノホンのiPad。

iPad:
Mozilla/5.0 (iPad; CPU OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B329 Safari/8536.25

そこで快獣使いの102Pで試してみた。確かにAndroidである。

Softbank 102P:
Mozilla/5.0 (Linux; U; Android 2.3.5; ja-jp; 102P Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

ひょっとしてUser Agentを欺いているのではないだろうか。ブラウザの設定を見ると、「Support HTML5 user agent / Support play some videos of HTML5 webpage」という項目にチェックが入っている。他の項目は日本語で表記されているのに、これだけ英語だ。試しにチェックを外してみた。

lenovo A1: Support HTML5 user agent OFF
Mozilla/5.0 (Linux; U; Android 2.3.4; ja-jp; A1_07 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

期待通りの結果だ。察するところ、iPad用に書かれたオンラインビデオサイトで、「わたしゃiPadだよ」と偽って表示しようとしたのではないだろうか。

最後に、Firefoxでの実行結果はこうなった。設定にヘンなオプションは見当たらない。

lenovo A1: FireFox
Mozilla/5.0 (Android; Mobile; rv:21.0) Gecko/21.0 Firefox/21.0

あ、そういえばデバイス非依存なWebページを作るのを忘れていた。


P.S. User Agent は以下のサイトに詳しく出ていた。
http://www.openspc2.org/userAgent/

Basic

中学校の技術家庭で、たった1時間だけだったがBasicを習うのだそうだ。

現代のBasicはVisual Basicが代表なのだろうが、いにしえのBasicとはまるで違う。付けようと思えば付けられるが、行番号はなく、IF文の終りにはEndifを付けないといけないなど、初心者入門用とは言いがたい。もちろん昔のBasicを手放しで誉めそやすわけではないが、始めて覚えるコンピュータ言語としては分かりやすかったのではないだろうか。

思い起こせば、最初に覚えた(ようとした)、Intelニモニックの8080機械語はさっぱりわからず、TK-80のBASICを知ったときには、そのわかりやすさに思わず「オレは今、猛烈に感動している!」とどこかで聞いたようなセリフを口走ったものだ。ちなみにその後、簡潔なZilogニモニックを覚え、機械語にリベンジを果たした。続いてCに手を染め、A・B・Cの王道を極めた(?)。その間Turbo Pascal〜Borland Pascal〜Delphiと苦楽を共にし、Prolog、Forth、Modula-2などもかじり、ちょっとした言語オタクだった。そうそう、GAME言語なんてのもあった。

閑話休題。

ということで、昔風のBasicインタプリタを探してみた。いくつも見つかったが、99 Basic Interpriter というのが良さそうだ。なんでも、PC-9801のN(86)-BASICに、MSXのスプライトやサウンド関連を付け加えた言語仕様となっているらしい。

99basic

特にインストールはなく、圧縮ファイルを展開して、EXEを実行するだけだ。0から10までの足し算をしてみた。それだけではつまらないので、答え分のスペースも出してみた。

三つ子の魂百までとか、雀百まで踊りを忘れずのたとえの通り、まったく違和感なく使える。これは良い。

2001年に開発が終了し、サポートもしていないそうだが、作者に経緯を表すると共に、手頃なBASICインタプリタをお探しの方にはこれを強く推薦する。

腐ったもずくにハマる

Screenshot_from_2013-02-02 13:02:48Google IME、別名 mozc をさまざまな環境で愛用している。特に思い入れがあるわけではないのだが、OSを問わずに利用できること、ローマ字テーブルを編集できることがその理由だ。特に後者は重要で、la、li、lu、le、loが正しく ら、り、る、れ、ろ にできないIMEは存在意義がないと断言して良い。

そのmozcだが、しばらく前から起動しようとすると次のように「変換エンジンプログラムの起動に失敗しました」というエラーが出るようになってしまった。

Screenshot_from_2013-02-02 11:53:44

Googleったが、解決策が見つからなかった。

設定情報はユーザの .mozc というディレクトリに保存されるらしい。そこで ~/.mozc/.session.ipc を削除またはリネームして再起動するという方法を試してみたが、状況は変わらなかった。

現在の ubuntu は、mozc のパッケージが提供されている。インストールは簡単なので、ubuntuソフトウェアセンターから、mozc関連のパッケージをアンインストール〜インストールしてみた。

scim-mozc
ibus-mozc
mozc-utils-gui
mozc-server

インストール前に古い .mozc ディレクトリを削除しておいたことは言うまでもない。

その結果、このように無事使用できるようになった。もちろん、さっそくローマ字テーブルの訂正を行った。

64bitなレジストリエントリにハマる

regedit64とあるプログラムの挙動がどうもおかしい。レジストリをうまく読み出せていないようだ。別のアプリをキックしていて、そいつはきちんとレジストリを作ってくれているようなのだが、メインのプログラムではそれが読めていないフシがある。

なんのことはない、x64 Windowsはシステムレジストリの位置が違っていた。久しくプログラマをしていないので、全然知らなかった。

みんな大好き regedit も、64bit 専用板があった。

  • 64bit %systemroot%syswow64regedit
  • 32bit %systemroot%regedit

ということらしい。

%systemroot% は通常、c:windows だ。

64 と 32 を同時に起動するには、あらかじめ 64 版を起動しておき、今度は -m スイッチを付けて 65 を起動する。見た目が変わらないので、要注意だ。