2014年11月30日日曜日

Android5.0のSmart Lockへ「信頼できる場所」が追加されたので試してみる

SYSTEM_KDです。

先日、Smart Lockのことについて記事を書きましたが、Google Play開発者サービスのバージョンが「6.5」へアップされたことにより、Smart Lockの設定へ新たに「信頼できる場所」が追加されましたので、試してみました。

Screenshot_2014-11-29-12-13-18

アップデートされるまでは、「信頼できる端末」「トラステッドフェイス(フェイスアンロック)」だったため、前回の記事にも書きましたが、スマートウォッチ等がないと、思ったような使い方ができませんでしたが、この「信頼できる場所」が追加されたことにより、かなり良い感じ(個人的にですが)になりました。

まず、何ができるようになったかと言いますと、端末がある「場所」によってロックを解除した状態にできるようになりました。

要するに、「基本的には端末をロックしておきたいけど、家にいるときは、一々ロックを解除するのが面倒だ」といった場合に、信頼できる場所へ家の位置を追加しておくことにより、家にいる場合は端末のロックを解除した状態にできます。

場所を指定するのも簡単に行うことができ、「Google Now」へプレイスを設定している人は、「信頼できる場所の設定」で、自宅・会社の設定をONにするだけで、利用可能になります。

上記以外の場所を追加するのも簡単に行え、検索も行える地図上から設定することができます。

place_set

精度としましては、指定した位置の100m以内(画像の青い点線内)であればロックが解除された状態になります。

以上、Smart Lockの「信頼できる場所」を試してみたでした。

2014年11月29日土曜日

SPFの設定はしたけど、EC-CUBEから送信されるメールが迷惑メールになる場合の対処法

SYSTEM_KDです。

久々にEC-CUBEネタです。(タイトル長いw)
SPFの設定は行ったが、EC-CUBEから送信されるメールが迷惑メール扱いになってしまう場合があるかと思いますが、その対処方法について書いてみます。

早速ですが、対処方法は以下の3ステップになるかと思います。

1.SPFの設定が正しいか確認

2.EC-CUBEからの送信メールのSPFの確認

3.EC-CUBEの修正

まず、「1.」ですが、設定が正しいか確認することのできるツールがありますので、そちらで確認します。
こちらで、結果として「PASS」が表示されればOKです。

ダメな場合は設定の見直しを行って下さい。

次に「2.」ですが、EC-CUBEから送信されたメールのSPFの状態を確認します。
この設定がどこで見れるかといいますと、受信メール(対象のECサイトから送信されたメール)の「メッセージのソース」から確認ができます。
(詳しい場所はメーラーにより異なるので、割愛します)

このメッセージソース内で「SPF」という文字を検索すると、EC-CUBEから送信されたメールがどの様な状態(認証結果)となっているかが確認できます。

この状態が「PASS」であれば、迷惑メールに割り振られなくなるのですが、おそらくPASSになっていないのではないかと思います。

PASSになっていないことが確認されたら、上記のメッセージソース内で、今度は「Return-Path」となっている部分のメールアドレスを確認します。
このアドレスが「1.」で設定したドメインのものになっていないのではないかと思います。

このReturn-Pathのアドレスが認証に利用されるので、ここへSPFで設定したドメインのものが設定される必要があります。

では、EC-CUBE上のどこで設定したアドレスが、ここに設定されるかといいますと、管理画面の「SHOPマスター」へ「メール送信元メールアドレス」といったそれらしい値があるかと思います。ですが、残念ながらこのアドレスがReturn-Pathとして、上手く設定されていない様です。

ということで、「3.EC-CUBEの修正」になります。

修正を行うファイルは「data/class/SC_SendMail.php」になります。
このファイルの310行目あたりを以下のように変更します。
※EC-CUBE2.12以降での場所になります。

case 'mail':
$arrParams = array(‘-f’ . ‘Return-Pathとして設定するアドレス’);
break;

注意点として、-f と Return-Pathとして設定するメールアドレスの間にスペースを入れないようにします。

Return-Pathに設定したメールアドレスが、「eccube@mail.co.jp」と仮定した場合
-feccube@mail.co.jp
となります。

これで、EC-CUBEから送信されたメールのReturn-Pathへ指定のアドレスが設定されSPFで設定が上手く行えていれば、SPF=PASSになり迷惑メール扱いから開放されるかと思います。

環境により一概に全てにおいて解決するとは言えませんが、お困りの方がいらっしゃいましたら、試してみる価値はあるのではないかと思います。

2014年11月27日木曜日

AndroidでJSOUPを使う。その2(ベーシック認証へのアクセス)

SYSTEM_KDです。

AndroidでJSOUPを使う。その1(基本的な使い方 GET, POST, クッキーについて)の続きになります。

その1の最後で宣言したとおり、ベーシック認証がかかっている状態での、GETとPOSTについてまとめます。

ベーシック認証を通したいので、行うこととしては、HTTPヘッダーへ認証情報を設定してやります。

こんな感じです。

// ベーシック認証のIDとパスワードを設定
String basicID = "ベーシック認証のID";
String basicPass = "ベーシック認証のパスワード";
// IDとパスワードを送信用に結合
String basicIdPass = basicID + ":" + basicPass;
// IDとパスワードをベーシック認証用にbase64でエンコード
String basicIdPass64 = Base64.encodeToString(basicIdPass.getBytes(), Base64.DEFAULT));

// ヘッダへ設定する情報を用意
String headKey = "Authorization";
String headValue = "Basic " + basicIdPass64;

// HTTPヘッダへの設定とConnection作成
Connection conn = Jsoup.connect("URLを指定").header(headKey, headValue);

以上です!

あとは、ベーシック認証を設定したConnectionを利用して前回紹介したようにGET, POSTを行うだけです。

もちろんCookieを設定する場合も、同様にこのConnectionに設定してやるだけです。

もったいぶって、Basic認証へのアクセスを「その2」にしてはみましたが、全然大した内容になりませんでしたねw

2014年11月26日水曜日

AndroidでJSOUPを使う。その1.5(POST後のCookieを取得する)

SYSTEM_KDです。

AndroidでJSOUPを使う。その1(基本的な使い方 GET, POST, クッキーについて)の続きです。

前回書き漏らしたけど、その2に入れるには大したこと無いネタなのでその1.5として書きたいと思います。

内容としてはタイトル通りなのですが、POSTでの送信とCookieの取得については個別に書いたのですが、POSTを受けたWEB側の処理でCookieが変更された場合、前回記載した方法では取得することができません。

POSTした結果と共にCookieを取得するには下記の様に行います。

// Connectionを作成
Connection conn = Jsoup.connect("URLを指定");
// POSTするパラメータを設定
HashMap<String, String> param = new HashMap<String, String>();

// POSTを行いレスポンスを取得
Connection.Response res = conn.data(param).method(Method.POST).execute();

// レスポンスからCookieを取得
Map<String, String> cookies = res.cookies();

// レスポンスからDocumentを取得
Document doc = res.parse();

やってること自体は大したことないですが、
最初は方法を見つけるのにかなり時間がかかりました ^^;

重要な部分は見ての通り7行目以降の部分になります。

結果を受け取る際に、「Document」を取得するのではなく「Response」を取得しそこから必要な情報を取り出す様な流れとなります。

2014年11月25日火曜日

AndroidでJSOUPを使う。その1(基本的な使い方 GET, POST, クッキーについて)

SYSTEM_KDです。

AndroidでHTMLをパースしたり、http通信時に便利なライブラリ「JSOUP(JSONじゃないよ)についての使い方を自分の備忘録をかねてまとめたいと思います。

ネット上に記事があるようで、やりたいこについてのってなかったのでまとめ。

まず、JSOUPを利用するために必要なライブラリを用意します。
必要ならライブラリは、「JSOUPのjar」と「HttpClient」になります。
それぞれ、下記からダウンロードします。

HttpClient
※Binaryのzipかtar.gzあたりをダウンロード
※2014/11/24時点の最新バージョンは 4.3.6 でした

JSOUPのjar
※2014/11/24時点の最新バージョンは 1.8.1 でした。

ライブラリをダウンロードしたら、必要なjarだけとりだします。
AndroidでJSOUPを利用するために必要なライブラリは次になります。

・jsoup-1.8.1.jar
・httpcore-4.3.3.jar
・httpmime-4.3.6.jar

あとは、上記のjarを利用するAndroidプロジェクトの「libs」にコピーすれば準備OK.

では、早速利用してみたいと思いますが、全体的なソースは省きます。
(大まかな部分はネット上にまとめられておりますので、JSOUPの使い方だけに絞ります)

まず、GETから

// Connectionを作成
Connection conn = Jsoup.connect("URLを指定");
Document doc = conn.get();

これだけです。これでHTTPへリクエスト飛ばせます。
あとは、DocumentからJQueryライクにHTMLを扱えます!

次に、POST

// Connectionを作成
Connection conn = Jsoup.connect("URLを指定");
// POSTするパラメータを設定
HashMap<String, String> param = new HashMap<String, String>();
// nameとageをPOSTする
param.put("name", "SYSTEM_KD");
param.put("age", "30");
// post
Document doc = conn.post();

以上です。これで、POSTができます。
あとは、GETと同様にDocumentからHTMLを扱います。

と、ここまでは、探せばネット上にあるかと思います。
まぁ、これだけあれば色々できるのですが、もう一歩踏み込もうとすると、とたんに情報が少なくなる気がします。

と言うことで、ちょっと踏み込んで、Cookieを利用する場合について記載したいと思います。
POSTを使う場合等は、色々やっていくうちにCookieを利用したくなるかと思います。

では、Cookieの取得から

// Connectionを作成
Connection conn = Jsoup.connect("URLを指定");
// Cookieを取得
Map<String, String> cookies = conn.execute().cookies();

もったいぶりましたが、あっさり取れます。

反対に、Cookieを設定する場合
(上記で取得した値を設定すると想定)

// Connectionを作成
Connection conn = Jsoup.connect("URLを指定");
// Cookieを設定
for (Map.Entry<String, String> cookie : cookies.entrySet()) {
conn.cookie(cookie.getKey(), cookie.getValue());
}

設定の方も簡単におこなえます。
これで、基礎的な部分は網羅できるかと思います。

次回は、その2 ベーシック認証がかかっている状態での、GETとPOSTについて書きたいと思います。

2014年11月23日日曜日

Android5.0のSmart Lockを試してみる(鍵にはAndroid4.1のXperiaVLを利用してみた)

SYSTEM_KDです。

Nexus端末へのAndroid5.0へのアップデート配信が開始されてから1週間以上経過しましたが、うちのNexus7(2013)へはまだ落ちてこなかったので、結局手動でOTAアップデートしました。
(こんなことならさっさとアップデートするべきだった。。)

まぁ、それは置いておいてw

Nexus7(2013)(※以下Nexus7)がAndroid5.0に上がったということで、新機能である「Smart Lock」を試してみました。

Smart Lockとは
Android5.0で追加された新機能で、Bluetooth機器や、NFCタグでロック画面の認証を無効化できる機能になります。

それでは早速NFCから試して見たいと思います。

手順としましては、「設定」>「セキュリティ」>「Smart Lock」を選択し、「信頼できる端末」で「信頼できるデバイスの追加」から「NFC」を選択します。

すると、下記のように信頼できるデバイスを登録する画面が表示されますので、NFCを読み込ませ、登録を行います。

Screenshot_2014-11-22-22-02-42

これで、準備は完了です。

では、実際にロックを解除してみます。

まず、Nexus7をロック画面にします。
もちろんこの状態ではまだロックされております。

LOCK1

この状態で、登録したNFCタグをかざすと、

LOCK2

見づらいですが、ロックマークが解除状態にかわりました。
後は、上にスワイプすると認証を入力することなく利用することができます。
機能自体はすごいですが、NFCかざすぐらいならPINなり、パスワードなりを入力した方が早いきがします。。
(まぁ長いパスワードの場合はこっちの方が楽ですね)

ではもう1パターンの方のBluetoothによるロック解除を試したいと思います。
こっちは、Bluetooth機器が近くにあればロックを解除できるので、実用性が高いかと思います。
主な利用シーンとしては、最近登場し始めたスマートウォッチと連携させるかたちを想定されたものだと思います。

ということで、普段はロックをかけておきたいけど、スマホを所持した状態でNexus7を利用した場合は、ロックフリーにできれば便利だな~と思いつつNFCの時と同様の手順で、今度はBluetoothでペアリングした端末を「信頼できるデバイス」として登録していきます。

今回は手持ちのXperiaVLを信頼できるデバイスとして、Nexus7のロックを外すための鍵に使ってみます。

XperiaVLとNexus7はBluetoothでペアリングさせているので、信頼できるデバイスとして、登録するだけですぐにできそうです。
(ちなみにBluetoothでペアリングさせるには、ペアリングさせる端末のBluetoothを両方ともONにして、検出させてやれば簡単に行うことができます。)

スマホを信頼できるデバイスとして、Nexus7側へ登録したので、早速ロックを解除してみたいと思います。

まず、ロック状態から

LOCK1

・・・・

あれ?

スマホ既に近くにあるのにロック状態になってる・・・。

 

そんな気はしていましたが、Bluetoothが接続状態でないとこの機能は有効になりません。
確認してみたところ、未接続の判定になっておりました。

LOCK3

ぱっと思いつく解決策としては、

1.スマホ側でBluetoothの設定を開き、手動で接続し接続が活きている間はロックが解除される。

2.Bluetoothでテザリングを行えば、接続有効になるので、その状態であればロックが解除される。

あたりかと思います。

「1.」はNFCの時と同じで手動で接続するぐらいなら、普通にロックを解除したほうが楽です。

「2.」は外出先で利用する場合に、スマホのテザリングを利用している方は、割りと有りな選択しではないかと思います。

と言うことで、とりあえず「信頼できるデバイス」として、スマホを登録しておけばテザリング時にはSmart Lockの恩恵を受けることができるかと思います。

いやーこれは、スマートウォッチほしいなー。

Smart Lockの機能に信頼できる場所が追加されたので続き書きました

2014年11月15日土曜日

Android5.0より前のバージョンでMaterialDesignを使う方法(簡易版)

SYSTEM_KDです。

Android5.0 Lollipopで、MaterialDesign(マテリアルデザイン)が採用され、Google製のアプリはどんどん採用されております。

Android5.0専用のアプリなら、スタイルの設定でMaterialDesignを利用するように設定すれば、MaterialDesignなアプリを作成できますが、そうではなく5.0より前のバージョンで動作して、さらにMaterialDesignを採用したアプリ(いま更新されているGoogle製のアプリはだいたいそうですね)を作るにはどうすれば良いのだろうということで、ちょっと調べてみました。

ちなみに、Android Studioではなく、Eclipseでの手順になります。

とりあえず、簡単にできるのが良いなということで、目指すところはActionBarをAndroid5.0っぽくできたらゴールというノリで行いたいと思います。

まぁようするに

def

これを

md

こうする方法です。

では早速。

まず、新規にプロジェクトを作ったら、サポートライブラリをインポートします。
インポートするサポートライブラリは「appcompat」になります。

ソースの場所はAndroid SDKを入れているディレクトリの中の
/extras/android/support/v7/appcompat
になります。

インポート方法はEclipseのパッケージエクスプローラで右クリック→インポートを選択し、「Android/Existing Android Code Into Workspace」を選択し、ルート・ディレクトリへ上記のソースのパスを指定します。
(インポートする際、プロジェクトをワークスペースにコピーへチェックを入れておいた方が良いかも)

インポートできたら、インポートしたプロジェクトの「プロジェクト・ビルドターゲット」をAndroid5.0に設定します。
(プロジェクトのプロパティからAndroidを選択すれば設定画面が開きます)

次に、新規に作っておいたプロジェクトへ先ほどインポートしたプロジェクトをライブラリとして追加します。

これで、準備完了です。

あとは、スタイルへ「Theme.AppCompat.Light」を設定し、Activityに対して「ActionBarActivity」を継承してやると、ActionBarがMaterialDesign仕様になります。

こんな感じです


javaの方

public class MainActivity extends ActionBarActivity {
// 処理
}

ということで、わりと簡単にAnroid5.0より前のバージョンでもMaterialDesignを取り込めそうです!!

2014年11月13日木曜日

EC-CUBE2.13.3にてパスワードへ ****** を設定した際の不具合の対応方法について

SYSTEM_KDです。

タイトル長くなりましたが、先日の投稿で少しふれました、EC-CUBE2.13.3の不具合についての対処法についてです。

問題をおさらいしておきますと、EC-CUBE2.13.3において、パスワードの設定で記号を利用できるように改善されたのですが、その部分に不具合があり、会員登録時にパスワードを設定する際、マスクされた状態と同じ文字「******」をパスワードに設定すると、ログインができなくなるという問題です。

ソースを修正しなくても、パスワードリマインダーからパスワード再発行すればログインできるようになるのですが、簡単な修正で対応できますので、対応方法をのせてみます。

いきなりですが、修正するソースは

data/class/helper/SC_Helper_Customer.php になります。

修正方法ですが、上記ファイルの63行目を以下のように書き換えます。

//-- パスワードの更新がある場合は暗号化
if ($arrData['password'] == DEFAULT_PASSWORD or $arrData['password'] == '') {
//更新しない
unset($arrData['password']);
} else {
//-- パスワードの更新がある場合は暗号化
if (($arrData['password'] == DEFAULT_PASSWORD or $arrData['password'] == '') && is_numeric($customer_id)) {
//更新しない
unset($arrData['password']);
} else {

以上です。

変更内容としましては、新規の会員登録時は、パスワードの入力値が「******」の場合でも、パスワード値の登録処理をスキップせず処理するようにしただけです。

これで、パスワードに「******」を設定した場合も、ログインできるようになるかと思います。

まぁそもそも会員情報の変更では、上記の値にすることができないので、会員登録時限定の問題という大したこと無い話ではあります。

2014年11月11日火曜日

BloggerでAdSenseに登録ボタンが有効なのにボタンを押しても先に進めない場合

SYSTEM_KDです。

需要が少なそうな小ネタですが、タイトルの通りのことが起こりちょっと困ったので、解決方法をのせてみます。

BloggerでAdSenseを有効化するには、管理画面より「収益」>「AdSense」を選択し、「AdSense に登録」ボタンを押す必要があります。

Blogを始めてすぐは、「現在、あなたのブログにはAdSense に認証されていません。」といった形で、まだ利用する資格がないと表示されます。

その後、更新を続けていき承認がOKになると、上記のメッセージは消え、「AdSense に登録」ボタンが押せるようになります。

このブログも最近まではボタンが押せない状態でしたが、ようやく承認されてボタンが押せるようになりました。
(承認の条件がどういうものか不明(いちおう条件はこれかな))

ここから本題ですが、ようやくボタンが押せるようになったので、さっそく押してみたところ、読込中と一瞬表示されますが、その後の反応はなし。

ブラウザの問題か?と思い、ChromeからFirefoxに変えてみましたが、現象は同じです。(ちなみにIEは論外でした)

キャッシュを消してみたり、クッキーをクリアしたりしましたが、変わらず。

一時的なものかなと思い、少し時間を開けて試してみましたが、変わらず。。

「お前には AdSense を使う資格はないのだ」というお達しかと思いつつ、色々設定を見てみたところ、ある項目のチェックボックすをONにすると見事に「読込中」から先へ進むことができました!

その項目は、Blogger管理画面の右上にあるメニュー【歯車マーク】をクリックすると表示される、「ユーザー設定を編集」のページの「Blogger Draft を使用する」のチェックになります!

確認にこれで先に進めるという確証はないのですが、同様の現象で困っている方がいらっしゃいましたら、試してみると良いのではないかと思います。

(まぁ、ほとんど居ないでしょうけど ^^;

2014年11月10日月曜日

EC-CUBE2.13.3 がリリースされたようです。

SYSTEM_KDです。
久々のブログ更新です。

タイトルの通り、EC-CUBEのバージョン2.13.3 正式版がリリースされたようです。

と、言ってもマイナーバージョンアップになりますので、主な変更はバグフィックスといったところのようです。

とは言え、とりあえず、インストールして試してみました。

バグフィックスがメインですので、大きな変更はないのですが、2点だけ変更点を発見しましたので、上げてみます。

まず、管理画面側。

管理画面でメニューを選択する際、今まではマウスオーバーでメニューが開いていましたが、これがクリックしないと開かない仕組みに変わっていました。
(タッチできるデバイスで表示した際の改善の様です)

次に、フロント側。

会員情報のパスワード入力で、記号が使えるようになっていました。
(って今まで使えなかった方が不思議かもしれませんが)

以上、EC-CUBE 2.13.3 でした!!

 

余談:
会員登録時のパスワードで、記号が使えるようになっていたので、ちょっと意地悪をしてみましたw

どんな意地悪かと言いますと、パスワードへ「******」を設定してみるというものです。
会員情報変更画面等で自分が入力したパスワードはマスクされて「******」で表示されますが、これを入力してみたらどうなるか?といったところです。

結果としましては、会員登録を問題なく行えますが、一度ログアウトすると、ログインが不可能になるという結果になりました!!
(見事に意地悪が的中 ^^;

データを見てみたところ、パスワードが空になっておりました。
おそらく原因としては、入力文字列が「******」の場合はパスワードを変更してないものと認識するのですが、その判定が会員登録時も行われているため、新規登録だけどパスワードは更新しないみたいな判定で、パスワード自体が設定されない様になっているためだと思われます。

せっかくなので、修正方法をのせようかと思いますが、時間がないのでまた次回にでも。

以上余談でした。
(余談の方が長いかも。。)

2014年11月3日月曜日

今更ながら、Windows7 から Windows8.1 へアップグレード

SYSTEM_KDです。

今更ながら、OSをWIndows7からWindows8というか、8.1へアップしました。

Windows8自体はキャンペーン価格で購入し、ずっとアップせずディスクを放置していたのですが、ストアアプリでも作ろうかと思いアップしてみました。

基本的には、ディスクを入れてアップグレードするだけで、Windows7の情報を引き継げて、特に悩むことはなかったのですが、Windows8にアップしてからが大変でした。

まず、アップした後すぐにWindows Updateを行おうと思ったのですが、なんと更新の個数が120オーバあり衝撃を受けていたのですが、いざインストールして、適用のためPCを再起動すると、「更新プログラムの構成に失敗しました」と出たのち、復帰を始めて、どうしようもない状態になってしいました。。

とりあえず、一晩放置しておくとなんとか失敗から復帰してくれていたので、5個とか10個とかずつ、適用を行っていくはめになりました。。

その後は、失敗と成功を繰り返しつつようやく適用を終え、さらにWindows8.1へアップしてなんとか使える状態に復帰しました。

ほとんどいらっしゃらないと思いますが、Windows7からWindows8→8.1へアップグレードする際は、Windows Updateへお気をつけください。