tmegos blog

Web developer

PHP4.4.9でopenssl1.0.0以上が入らない

PHP4系でしか動かないプロジェクトがあったので、PHP4.4.9をビルドしました。
SSLの動作検証も必要だったので、OpenSSLも追加しました。
しかし、makeした時に下のようなopenssl.cでエラーが大量に出てOpenSSLを有効にすることができません。

/usr/local/src/php-4.4.9/ext/openssl/openssl.c:1955: error: 'struct php_x509_request' has no member named 'priv_key_encrypt'
/usr/local/src/php-4.4.9/ext/openssl/openssl.c: In function 'zif_openssl_pkey_export':
/usr/local/src/php-4.4.9/ext/openssl/openssl.c:2006: error: 'struct php_x509_request' has no member named 'priv_key_encrypt'
make: *** [openssl.lo] Error


調べてみると、PHP4.4.9とOpenSSLが1.0.0以上だと、OpenSSLが入らないようです。

X Info Line - OpenSSL module for PHP 4.4.9 and OpenSSL version 1.0.0 and greater

親切なことにopenssl.cのパッチが作成されていたので、無事にビルドすることができました。

以下手順です。

続きを読む

Mountain Lion (というかJava7)で JSymphonicが文字化けする

導入

私は普段Macを利用していますが、音楽プレーヤーはWalkmanを使っています。
 最近発売されているWalkmanであれば、ドラッグアンドドロップで曲を転送できるのでMacでも問題ないのですが、私のWalkmanはNW-S605という機種で、転送ソフトが無ければ曲を送れません。

続きを読む

google検索をVim風に操作する

Vimいいですよね。はじめは操作に手間取ってしまいます、h(←)、j(↓)、k(↑)、l(→)でカーソル移動ができるようになればポームポジションから動くこと無くコーディングできます。
このように特徴のあるカーソル移動ですが、google検索の一覧でも同じように使えたので紹介します。

続きを読む

AdMobでリンクエラーが発生した時の対処法

環境

XCode 4.5.2
iOS 6.0
AdMob 6.2.1

症状

iPhoneでAdMobを組み込もうと思い、googleのドキュメントと同じように実装をしたところ、以下の様なエラーが発生。

ld: library not found for -lGoogleAdMobAds
clang: error: linker command failed with exit code 1 (use -v to see invocation)

f:id:tmegos:20160507094141p:plain

 

解決方法

AdMobのSDKをコピーしてきた時のファイルをリネームする必要があります。
下の図のように、「libGoogleAdMobAds.a」を「lGoogleAdMobAds.a」に変更します。

f:id:tmegos:20160507094157p:plain

このようにすることで、ライブラリを読み込めるようになり、コンパイルが通ります。

感想

AdMobはGoogleのドキュメントも充実していて、すぐに実装できると思っていたのに、これだけで3時間ほど格闘してしまいました。
ググっても同じような症状の方がいなかったので、参考になれば幸いです。

facebookのグループでメール通知が送られてしまう

facebookのグループ機能、公開範囲が限定されるのでよく使ってます。
ですが、メール通知を切っているのに新着情報がどんどん届いていました。

▼マーク>アカウント設定>お知らせ


おかしいと思い、もう一度よく見てみると、「各グループのメール設定を変更」という項目があるではありませんか!
 
しかし残念なことに、メール通知はグループごとにデフォルトでONになっていたのです!(私の環境では)


というわけで設定します。

「各グループのメール設定を変更」をクリックして、チェックを外してあげればOKです。

この設定をしてあげると、ようやくメールが鳴りやみました。
新しいグループが出来るたびに設定し直すのは面倒ですね。

Androidエミュレータでキーボードが効かなかった

久しぶりにAndroidエミュレータを立ち上げ、デバッグをしているとキーボードが効かない事に気づきました。

 いろいろ設定を見ていたらキーボードが有効になっていませんでした。
 以下、設定メモです。

  1. AVDマネージャーから編集をクリック
  2. ハードウェアの欄で新規をクリック
  3. プロパティでKeyboard Supportを選択
  4. 値をyesにして有効にする

私の場合、sdkのバージョンを最新(r20)にして新しいエミュレータを作成したらキーボードが効かなくなりました 。
 同じ症状が出た方はお気をつけください。

array_walk_recursiveで変更された値を取得する

だいぶ詰まってしまったのでメモ。

PHPでarray_walk_recursiveという関数があります。

これは指定した関数に、配列を再帰的に処理していくというものです。
配列の中身が多次元配列だととても重宝する関数ですが、戻り値はbooleanになっています。
 つまり、


$array = array_walk_recursive($array, 'ユーザ定義関数');

としてあげても、$arrayの中身はarray_walk_recursiveが正常に終了したかどうかのtrueかfalseが入ってしまうということです。

これを解決するためには、ユーザ定義関数の引数にアンパサンド(&)をつけてあげればいいです。
&をつけることによって、ユーザ定義関数で値が変更されると、もともとの値も変更されます。

例)arrayに入っている文字列の文字コードUTF-8に変更する


function changeCharCode(&$value, $key){ //$valueの頭にある&が重要!
$value = mb_convert_encoding($value, 'UTF-8');
}

$array = 文字列の多次元配列;

array_walk_recursive($array, 'changeCharCode'); //メソッド呼び出し