SUMMER_WARSの日記

趣味や、仕事のこと、日々のことを徒然なるままに書き残すブログ

iPhoneアプリをインストールする際に、「確認コード送ります」って全然送ってこない件の対処法

こんにちわ。
2017年のM-1とろサーモンが勝ったそうで。
MAN WITH A MISSION のライブに行ってたので見れず。。。とろサーモン昔好きだったのでちょっとうれしいです。

さて、本題。
最近、というかだいぶ前にキャリアから格安SIMに変えて利用料金ダダ下げしていました。

が、新規アプリをインストールする際に、以下のような事象が発生してしまい、
確認コードが全然やってこずインストールができない事象に陥ってしまいました。。。

【iPhone】「確認が必要です。購入の前に、アカウント情報を確認する必要があります」表示と無料アプリダウンロードについて

原因が分かったので載せときます。

対象の人

  • キャリアから格安SIMに乗り換えた人(自分はau⇒mineoです)
  • iPhone6 iOS11.1.2 (おそらく機種、OSは関係ないと思うけど一応)

原因

アプリ購入時の決済設定が「キャリア」のままになってしまっていたこと。

以下の手順で、自分の設定を確認してください。

1.App Store アプリを開き、右上の人影をタップする

f:id:SUMMER_WARS:20171204111618p:plain

2.自分の名前の項目をタップする(黒く塗りつぶしている箇所

f:id:SUMMER_WARS:20171204111742p:plain

3.AppleIDの項目をタップする(黒く塗りつぶしている箇所)

f:id:SUMMER_WARS:20171204112026p:plain

4.お支払い方法が、「キャリア」になっている場合は、以下に示す対処法で解決できる可能性大です!※修正済みのため「なし」にチェックされています。

f:id:SUMMER_WARS:20171204112112p:plain

対処法

原因の4.でお分かりかと思いますが、「キャリア」になっているところを「なし」または「クレジットカード」にすれば多分OK。
※「クレジットカード」にした場合の動作は確認していません。

ひとこと

キャリア解約したから、キャリア通じて送信できないよ的な何かなのかよくわからん。。。笑
ちなみに、この設定を変えたらSMSの確認無くなって指紋認証でOKになりました。

※結果、確認コードは送られてきません。

いろいろ、ネットワークの設定リセットとか、国内事業者のブロック解除的なやつとか試したけどダメで、設定見てたらココを見つけました。あまり情報が無かったので、何かのお役にたてれば幸いです。

WebAPI-RESTful-を作るうえで考えておく設計思想とか

最近、忙しくて疎かになっていました。
業務でAPIを作ることになったのでその話が出来ればなと思っています。

RESTfulAPIとは何か?

いろんなところにいろんな情報がありますが、個人的にはこんな受け止め方しています。

1.「マスター、いつものくれよ」はナシ

よく、「マスター、いつもの」と言って注文をするようなドラマがあったりします。
※私の知り合いにもそんな人がリアルにいます笑

これって、マスターが「この人は誰で、この人がいつも頼むものはxxxだ」という情報を持っているから成り立つんですよね。

HTTPっていうのは状態(ステート)を持たない(レス)ので、Webアプリケーション作るときはセッションを使ってログイン状態を管理したり、ユーザーの入力情報を保持しておいて、必要な時にそこから値をとってきてDBに登録したり、画面に表示したりする。。。

たとえば、サーバー(マスター)が変わったときに「マスター、いつもの」っていっても「お前誰だよ」ってなるのを防ぐために、
RESTfulっていうのは、リクエストするときには必要な情報をURIやリクエストボディに付与してあげればいいよね。ということを考えています。

※「マスター、おれはxxxxで、xxxxが欲しい」っていうのをやっておけば、マスター(サーバー)が変わっても問題ない。(この例であれば自分のこと教える必要もないですが)

2.HTTPメソッドで動詞を表現する

リクエスURIが必要な情報を指し示すとすれば、HTTPメソッドはその必要な情報をどうしたいのかを表現するもの。

  • GET  欲しい、くれよ
  • POST  登録してくれよ
  • PUT  更新してくれよ
  • DELETE 削除してくれよ

英語っぽい考え方をすればいいと思います。

主語 + 動詞(HTTPメソッド)+ 目的語(URL)

目的語の中に動詞が入らないように設計するのがポイントだと思っています。

3.レスポンスコードは適切に

リクエストがあれば、レスポンスがある、これHTTP。
レスポンスコードというのがあるので、適切なものを返してあげなきゃだめ。

すごいまとまっているので以下を参考にすればよいと思う。
www.agilegroup.co.jp


その他何かあれば追記していきます。

EclEmma Java コード・カバレッジのレポートを出力する

JUnit単体テストを自動化するのはいいんだけど、書いたソースって書いた分だけ全部通っているよな....という不安があると思う。
「通ってない=動いていない」なので、そのまま運用されるのは不安でしかないよね!そうだねプ○テインだね!

ということで、Eclipseプラグインをインストールして不安を解消するのじゃ。


[目次]

1)EclEmmaのインストー

 以下の記事が分かり易いので、記事通りにインストールします。

javaworld.helpfulness.jp

2)テストを実行後、ガバレッジビューからレポートを出力する。

ここから右クリックでレポート出力ができるらしいんだけど、できない!

f:id:SUMMER_WARS:20170627130217p:plain


・プ○テインが足りないようなので、しかたない。
 対象のプロジェクトを右クリック→セッションのエクスポート

f:id:SUMMER_WARS:20170627130457p:plain


・ガバレッジレポートを選択→次へ
f:id:SUMMER_WARS:20170627130544p:plain


・書式、ファイルの出力先を選択して完了でOK!!!
f:id:SUMMER_WARS:20170627130655p:plain

環境

 Eclipse:Neon.3 Release (4.6.3)

MySQLで対象のデータベースをバックアップ!そしてリストアの行く末密かに暗示する人Honey!!

MySQLのdump(ダンプ)が出来ないぃぃ!

厳密にいうと、バックアップはできてるけどリストアが出来ない状態!!!!
(俺のいく末密かに暗示する人Honey!!状態)←DxxUMP


先に答えを言うと単なるコマンド間違いでした。。。。泣

手順をメモ。

1)mysqldumpコマンドを使って対象のデータベースのバックアップを取得する。

 sampledbが対象のデータベース名、.sqlファイルがバックアップしたファイルになります。適当な名前を付ける。

C:\>mysqldump -u root -p sampledb > C:\\sampledb.sql
  • u:ユーザー名を指定するオプション(rootを指定している)
  • p:パスワードを指定するオプション(セキュリティ的に明示的な指定をしない。コマンド実行後にパスワードを聞かれるのでそこで入力する)


mysqlのbinのパスを通していない場合は通しておかないとMySQLのbinディレクトリ上でコマンドを打つはめになるので以下のコマンドを叩いておく。(料理で言うと下準備)

C:\>set PATH=%PATH%;C:\Program Files\MySQL\MySQL Server 5.7\bin

「~%PATH%;hogehogeにはMySQLをインストールしたディレクトリ(mysqldump.exeが格納されているディレクトリ)を指定する。

ちなみに↑のコマンドの場合は一時的なもので、コマンドプロンプトを閉じると次回も同じように下準備が必要になる。。。


特別な理由がない場合(男子ごはんに下準備は要らねぇ!という男気溢れる方以外)は素直にこっちを叩きましょう。

C:\>setx /M PATH "%PATH%;C:\Program Files\MySQL\MySQL Server 5.7\bin"

↑で「エラー: レジストリ パスへのアクセスが拒否されました。」が出た人!!(安心してください。私も出ました笑)

コマンドプロンプト管理者権限で起動するとさっきのコマンドでエラーでなくなります。

2)取得したバックアップをリストアする(バックアップしたデータに戻す※バックアップした時の状態に戻す)

以下のコマンドを叩いて、1)と同じくパスワードを聞かれるので入力してあげる。

C:\>mysql -u root -p sampledb < C:\\sampledb.sql

※この「mysql」をずーーーーーーと「mysqldump」って打っていた。。。。アホや。。。

本当にリストアできたか気になる人は2)をやる前に、データベースを削除してからリストアするとOK。
(元に戻せなくなってしまった!とか削除に関しては責任持ちませんのであしからず。しっかりとバックアップが出来ていて、リストアも出来るのを確かめてから、攻めに行きましょう。)

ただし、このバックアップの取り方は、「create database sample」でデータベースの器を作成しておく必要があるので注意。

※データベースの名前バックアップしたものと同じにする必要がある。

3)環境

 Windows7
 MySQL 5.7.17

Selenium WebDriver(ChromeDriver) で「org.openqa.selenium.remote.UnreachableBrowserException」が発生する

単純にダウンロードしたChromeDriverが古かった。。。

以下のサイトから最新のバージョンを取得して使用したら無事に解決。(chromedriver_win32.zipを解凍して.exeを配置する)
(※ちなみに2.9のディレクトリがあってそれを使用していた。。。日付見ると2014年だった。。。2.9が最新と思ってしまった。。。64bitOSでも32bitを使うというかそれしかない)


sites.google.com

動的Webプロジェクトでサーバー実行すると「サーバー ローカル・ホスト の Tomcat v8.0 サーバー は始動に失敗しました。」が発生する

Servletを作っていて結構発生する人が多い。このエラーが来たらこれやろ!っていうやつ。まずはここ確認しよう。


目次

1)現象

 Servletを実行するとエラーが発生してしまう。↓こんな感じ。※詳細を見ると、「サーバー ローカル・ホスト の Tomcat v8.0 サーバー は始動に失敗しました。」ってでます。

f:id:SUMMER_WARS:20170621091126p:plain

2)環境

 Java8(動的Webプロジェクトを作成)

 Apach Tomcat 8.0.44

 MySQL 5.7.17

3)原因

 サーブレットアノテーションを使って、リクエストのURLでどのサーブレットが動くかを設定できる(※web.xml設定ファイルが不要)んやけど、そのアノテーションの文字列が被っちゃってるよ!Hey!you!っていう話。

package jp.sample;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * Servlet implementation class LoginServlet
 */
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;


この @WebServlet("/login") を他のサーブレットでも設定してたりすると発生する。
※1つサーブレット作って、他のサーブレットもこれをコピペして作ってたりすると発生する可能性大だよ~

4)対策

 アノテーションの文字列が被っているかサーブレットを確認し、別の名前に修正する。基本的にServletのクラス名から取ろう。

【追記】

2017/06/28 そもそもコンパイルが通っていない場合も同様のエラーが発生。

Servlet使っているんだがセッションからgetAttributeした値がnullになってしまうのなんでなん

目次


1)現象

 ローカル環境でsession.setAttribute("hoge", "hogehoge")で値を設定後、別サーブレットにforwardし、forward先のサーブレットでgetAttribute("hoge")するとキーがなくてnullになってしまう。(setもgetもしっかりしてるしなんで???)
 
 ※サーブレットではなくJSPにforwardし、getAttribute("hoge")すると正常に取得できるという謎現象に遭遇。これはどぎゃんかせんといかんばい。ということで備忘録。こういうのってだいたい環境の問題なんだよね。。。

2)環境

 Java8(動的Webプロジェクトを作成)

 Apach Tomcat 8.0.44

 MySQL 5.7.17

3)原因

 どうやら、Tomcatサーバーに複数のリソースを追加していたためらしい。。。
 ※スクショ自体はリソース追加していないけど、この現象が発生する条件は、リソースを2つ以上追加しているとき。

f:id:SUMMER_WARS:20170620142121p:plain

4)対策

 サーバー1つにつき1個のリソースにすることで解決。