標準ブラウザの罠?
クリスマスまであと1週間ですね。
誰かからプレゼントもらえないかなーって思ってたら、ドロイドくんから素敵なプレゼントいただきました。
PHP5.6でSMTP送れない件
お久しぶりの投稿です。
EC CUBEを扱ってる際、php5.6にしてからメールが届かなくなっている現象に遭遇しました。
一見エラーは何も発生してないが、data/logs/error.log には、
[/forgot/index.php] Warning(E_USER_WARNING): メール送信に失敗しました。[ authentication failure [SMTP: STARTTLS failed (code: 220, response: Ready to start TLS)]] on [/Applications/ MAMP/htdocs/honeybaked/data/class/SC_SendMail.php(310)] from ::1↲
今回ひっかかったのが、「PHP 5.6.x における OpenSSL 関連の変更」
php5.6からピア証明書が必須に。。orz
証明書作って設定すれば良いと思うが、今回は設定を変えて対応しました。
場所は、data/module/Net/Socket.php(646)
Before:
<?php ... function enableCrypto($enabled, $type) { if (version_compare(phpversion(), "5.1.0", ">=")) { if (!is_resource($this->fp)) { return $this->raiseError('not connected'); } stream_context_set_option($this->fp, 'ssl', 'verify_peer_name', false); return @stream_socket_enable_crypto($this->fp, $enabled, $type);// 問題の場所 } else { $msg = 'Net_Socket::enableCrypto() requires php version >= 5.1.0'; return $this->raiseError($msg); } }
After:
<?php ... function enableCrypto($enabled, $type) { if (version_compare(phpversion(), "5.1.0", ">=")) { if (!is_resource($this->fp)) { return $this->raiseError('not connected'); } stream_context_set_option($this->fp, 'ssl', 'verify_peer_name', false);// ←ここで書き換え!! return @stream_socket_enable_crypto($this->fp, $enabled, $type);// 問題の場所 } else { $msg = 'Net_Socket::enableCrypto() requires php version >= 5.1.0'; return $this->raiseError($msg); } }
別に、上記の場所でなくてもどっかしらでやってあげれば問題ないと思います。
以上でーす。
wordpress環境構築でやったこと(初級編)
パッケージ
$ yum install httpd $ yum install php55 $ yum install php55-mysql $ yum install php55-mysqlnd
あと、httpd.confで
ServerName localhost
追加(これ書かないと、restartかけるたび、警告でるです。)
次にRDS。
最近VPCが必須になっていて、
RDSはEC2とは違うサブネット(DB Subnet)で管理されるっぽく、これがないとRDSがたてられない。
以上。
[追記]
パーミッション追加
chmod -R 777 wp-content/uploads/ chmod -R 777 wp-content/plugins/ chmod -R 777 wp-content/upgrade/ chmod -R 777 wp-content/themes/
また、wp-config.phpで書いとくと便利なやつ
define('FS_METHOD', 'direct');
ActiveAndroidでハマった件
ActiveAndroidって便利すぎるんですが、どつぼハマることもしばしば。。
今回、デフォルトコンストラクタでハマりました。
使用するmodelのデフォルトコンストラクタでちゃんとsuper();しないと機能しないのは知っていたのですが、今回はこんなケース。
public class Sample extends Model { private String value; public Sample() { this(null); } public Sample(String value) { super(); this.value = value; } }
テレスコーピングコンストラクタで、初期化できてると信じきっていたいただけに、
activeandroidではうまくいかなかった。。。
まじでなぜや。。。
勉強不足があだになりますた。。。orz
ImageViewのサイズについて云々
android では、画面幅にあわせてレイアウトくむことがしばしばあるとおもうのですが、
今回、画像を画面幅にあわせて数個均等配置したimageviewでつんでました。
おそらく、Linearlayoutでweightかければ、なにも問題なかったかもしれないのですが、今回tablelayoutで似たようなレイアウトを組んだ際に事件が発生しました。
<TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TableRow> <ImageView android:id="@+id/test1" android:src="@drawable/aaaaaaaaa" android:layout_width="wrap_content" android:layout_height="wrap_content" android:adjustViewBounds="true" android:clickable="true" /> <ImageView android:id="@+id/test2" android:src="@drawable/aaaaaaaaa" android:layout_width="wrap_content" android:layout_height="wrap_content" android:adjustViewBounds="true" android:clickable="true" /> <ImageView android:id="@+id/test3" android:src="@drawable/aaaaaaaaa" android:layout_width="wrap_content" android:layout_height="wrap_content" android:adjustViewBounds="true" android:clickable="true" /> </TableRow> </TableLayout >
的なやつ。
このときに、動的に画像を差し込むとき、画像自体のサイズが強くて、imageview自体の幅がかわる現象に遭遇。
(weightがなかったためか?なんて勝手な想像をしたり... orz)
そこで、各imageviewにmaxwidthを適当な数値いれると解消されることを発見いたしました!
(0dpとかでもok)
時間あるときに、詳細しらべてみやんす。
以上!
s3へのコピーを一瞬で終わらせる方法
ローカルからS3
$ aws s3 sync <LocalPath> <S3Path>
s3からローカル
$ aws s3 sync <S3Path> <LocalPath>
s3からs3
$ aws s3 sync <S3Path> <S3Path>
今回3番目をやったんですが、約3500件が1分以内に完了しました。
鼻血ぶーーーーーーー
twitterサイズでごめんなさい
参考
http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html