標準ブラウザの罠?

クリスマスまであと1週間ですね。


誰かからプレゼントもらえないかなーって思ってたら、ドロイドくんから素敵なプレゼントいただきました。

標準ブラウザでURLスキームでアプリを呼ぶと、ブラウザのアプリ内で、呼び出し先のアプリが起動する


... orz プリッ

対策

AndroidManifect.xmlで、urlスキームを指定したactivityにlaunchMode="singleTask"で解決!


すると、アプリが立ち上がっていなかったら通常通り起動しますが、すでに立ち上がっていたら、onRestart からの onStartなので、 onCreateで全ての処理を記述してると、あれれ?肌荒れ?みたいな事態に陥るので注意です。


全部クロームになってしまえばいいのに。


以上です。


参考

Google グループ

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);
        }
    }


別に、上記の場所でなくてもどっかしらでやってあげれば問題ないと思います。


以上でーす。



参考:
PHP: PHP 5.5.x から PHP 5.6.x への移行 - Manual

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');

参考:
WordPress FTPなしでプラグインダウンロードできる設定 - Qiita

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



参考
http://hotchemi.hateblo.jp/entry/2013/12/06/030757

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