ビッグになります。Re:born

ビッグになるよー

Vagrant と VirtualBoxを使うメモ

参考

VagrantとDockerについて名前しか知らなかったので試した - Qiita

Vagrant + VirtualBoxでWindows上に開発環境をサクッと構築する - Qiita

初心者がVagrantを使ってみる。 - Qiita

やってみる

それぞれダウンロード

VirtualBoxVagrant をそれぞれインストール

VMの構成設定ファイルを作成

(作成するdirを準備し、移動してから)
vagrant init --minimal ubuntu/trusty64
Vagrantfileが生成されている


中身はこんなの

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/trusty64"
end

Rubyで記述されている模様

VMを起動

vagrant up
Vagrantfileと同じ場所で
※初回は時間かかるみたい

SSHログイン

vagrant up
vagrant ssh

ログインできなかった

`ssh` executable not found in any directories in the %PATH% variable. Is an
SSH client installed?

SSHコマンドを利用するためのクライアントがなかったらしい
なので
Windowsでsshコマンドを使う方法 - Qiita

を参考しにして準備する

vagrant ssh

うまく行った




まだ端末間でのデータ移行で消耗してるん?

データ移行の闇にとらわれているあなたへ

Android端末からiPhoneiPhoneからPC、といった端末間でのデータ移行(バックアップ含め)の方法に悩まされている人が未だにいることに驚きが隠せません。

この大インターネット時代に変なケーブルを使って時間を浪費しデータ移行とかするなんて不毛です。端末が壊れてデータが取り出せない?原始時代でしょうか?

インターネット環境とGoogleアカウントを使って、原始的なデータ移行への依存から解き放たれましょう。

データ移行なんてしなくても、勝手にバックアップが取れている状態になります。

今から説明する設定を行えば、わざわざデータ移行する時間をとって準備をせずとも、半自動的にデータがバックアップできるようになります。自動的じゃなく「半自動的」と書いたのは理由がありますが、あとで説明します。

今回取り扱うデータ

  • 画像データ
  • 動画データ
  • アドレス帳データ

アプリデータのバックアップについては対象にしません。

Googleアカウント取得,端末との紐付け,Googleフォトのダウンロード

タイトルの通りなのですが、下記の手順で設定をどうぞ。

  1. Googleアカウント取得
  2. 各種端末にアカウントの紐付けを行う(アドレス帳の紐付け)
  3. Googleフォトをダウンロードする(画像と動画のバックアップ)

1. Googleアカウント取得

下記リンクよりアカウントを作成
Create your Google Account

f:id:ksyunnnn:20160922181408p:plain:w300

2. 各種端末にアカウントの紐付けを行う

iPhoneの場合

メール/連絡先/カレンダーを選択
f:id:ksyunnnn:20160922192347p:plain:w300
アカウントを追加を選択
f:id:ksyunnnn:20160922192732p:plain:w300
Googleを選択
f:id:ksyunnnn:20160922192806p:plain:w300
必要情報入力
f:id:ksyunnnn:20160922193503p:plain:w300
連絡先チェック
f:id:ksyunnnn:20160922193520p:plain:w300
ここに追加されてればOK
f:id:ksyunnnn:20160922200601p:plain:w300

3. Googleフォトをダウンロードする

iPhoneの端末にダウンロード

GoogleフォトをiPhoneで! アプリの初期設定と写真のアップロード方法 | できるネット

※最初の一回はバックアップに時間がかかります。


f:id:ksyunnnn:20160922213848p:plain:w300

アドレス帳は自動でバックアップ、画像と動画は半自動でバックアップ

アドレス帳は、Googleアカウントのサーバー上に自動で保存されるようになります。 iPhoneで作成したアドレスデータは自動で保存されるので、端末を変えても上記と同様の設定を行えばデータは取り戻せます。
画像と動画は、初回バックアップ以降はアプリを起動しておけば確実にバックアップされているようです。
※バッググラウンドでもバックアップされるようですが、執筆時点では起動しないとバックアップされてなかったりしますね。。

ZipArchive::openのエラー内容を検知する

f:id:ksyunnnn:20160909104535p:plain

前提

PHPだけでzipファイルこねくり回すと、 ZipArchiveクラスを使うことになるわけやけど

ZipArchive::open

ここでとてもつまるし、返り値もわかりづらいし、エラーの意味を吐き出すだけのコード作った。

とてもシンプル。

コード

switch ($response){
            case 0 : echo 'ER_OK'; break;
            case 1 : echo 'ER_MULTIDISK'; break;
            case 2 : echo 'ER_RENAME'; break;
            case 3 : echo 'ER_CLOSE'; break;
            case 4 : echo 'ER_SEEK'; break;
            case 5 : echo 'ER_READ'; break;
            case 6 : echo 'ER_WRITE'; break;
            case 7 : echo 'ER_CRC'; break;
            case 8 : echo 'ER_ZIPCLOSED'; break;
            case 9 : echo 'ER_NOENT'; break;
            case 10 : echo 'ER_EXISTS'; break;
            case 11 : echo 'ER_OPEN'; break;
            case 12 : echo 'ER_TMPOPEN'; break;
            case 13 : echo 'ER_ZLIB'; break;
            case 14 : echo 'ER_MEMORY'; break;
            case 15 : echo 'ER_CHANGED'; break;
            case 16 : echo 'ER_COMPNOTSUPP'; break;
            case 17 : echo 'ER_EOF'; break;
            case 18 : echo 'ER_INVAL'; break;
            case 19 : echo 'ER_NOZIP'; break;
            case 20 : echo 'ER_INTERNAL'; break;
            case 21 : echo 'ER_INCONS'; break;
            case 22 : echo 'ER_REMOVE'; break;
            case 23 : echo 'ER_DELETED'; break;
        }

あとがき

完全に俺の備忘録

【Android Studio】Execution failed for task ':app:buildInfoDebugLoader'.

経緯

Android Studioで、アプリのデバッグ?に失敗した模様

Error:Execution failed for task ':app:buildInfoDebugLoader'. > Exception while doing past iteration backup :

でも直った

Build -> Rebuild Project

プロジェクトをリビルトして再度Runすると、直った模様

stackoverflow.com

ローカルPCにGitを導入する

f:id:ksyunnnn:20160823133333p:plain

経緯

Githubにコードを公開して、よくいるイケイケなエンジニアのように振る舞いたいので、まずローカルのPCにGitを導入する

GitをWindowsの画面で扱いやすくするためのツールも導入します。

GitとGithubの違いはググればわかるよん

Gitをインストール

git-for-windows.github.io

Gitを画面から操作できるGitクライアントをインストール

TortoiseGit – for Windows

  • Download TortoiseGit
  • Language Packs の両方ダウンロードしてインストールする

セットアップ

f:id:ksyunnnn:20160823132919p:plain

f:id:ksyunnnn:20160823132949p:plain

初期設定【チュートリアル1 Gitの基本】 | サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ

最後に

これで終わり。

ちらっと画像引用したサイトみれば一番わかりやすいのは内緒

AndroidでHTTP通信して自作APIから値を取得する

経緯

AndroidでHTTP通信して自作APIから値を取得してみたメモ

参考

qiita.com

コピペする

そのまま何も考えずコピペ。ただし、1ファイルずつ https://github.com/suzukaze/RxAndroidSample

1.MainActivity.java

赤文字がいっぱい。一旦無視する。

2.res

  • layout/activity_main.xml 問題なさ気
  • menu/menu_main.xml stringのresだけ赤字。スルー
  • values/.. 問題なさ気

3.AndroidManifest.xml

ユーザー認証追加。問題なさ気。

4.api,modelディレクトリ追加

  • api/ServiceGenerator.java 赤文字いっぱい。
  • api/EmpitomeBeamService.java 赤文字いっぱい。
  • model/EpitomeBeam.java 赤文字いっぱい。
  • model/EpitomeEntry.java 赤文字いっぱい。

# import部分を調整してみる

  • package名が入ってるとこは com.ksyunnnn.apitest に     全体的に赤文字は減った

5.build.gradle

  • app/build.gradle dependencies{}のみ追加してみる

一旦sync... 赤文字には関係ないのか…。

違った

ただのsyncじゃなく、 「sync with project gradle」を使わないとgradleの同期はしてなかった模様

同期したら赤文字なくなった!

動いた!

記事を理解する

通信部分をRxAndroidを使用して、リクエストし、レスポンスをパース後にUI操作の流れをわかりやすく記述する。リクエストについてはRetrofitによりRESTfulに記述し、Gsonによるレスポンスをパースした結果を定義することにより、面倒なパースを自動的にパースします。

出てきた単語 * RxAndroid => リクエスト,レスポンス * Gson => パース * Retrofit

RxAndroid

非同期通信をうまくなんやするライブラリ パース(構文解析)も行っている?

dependencies {
        compile 'io.reactivex:rxandroid:0.24.0'
        compile 'io.reactivex:rxjava:1.0.8'
        }

GSON

JSONデータとJavaオブジェクトを相互に変換するためのライブラリ

dependencies {
        ??? // compileなしでなぜかいけてる…
        }

Retrofit

インターフェースの定義のために必要そうなもの?

dependencies {
        compile 'com.squareup.retrofit:retrofit:1.9.0'
        }

OkHTTP

※文中にはないけど使ってる模様 HTTPクライアントのライブラリ。WebSocketに対応していて、同期/非同期のAPIを提供。

dependencies {
        compile 'com.squareup.okhttp:okhttp:2.3.0'
        }

脳みそ整理

構造を見ていく

RxAndroidによる通信

(1)リクエストしてレスポンスをパース(構文解析) subscribeOn(Schedulers.io())により、io用のスレッドで行う設定

(2)結果を受け取りUI操作 observeOn(AndroidSchedulers.mainThread())によりメインスレッドで行う設定

やんわりOKということにする

WebAPIを作ってみる

php

$resposnse = array(
        "user" => "俺",
        "id" => "hoge"
);
json_encode($response);

で簡単に解決 json形式で吐き出した。

アプリから取得する

できない

できない理由

teratail.com

オブジェクトでパースしようとしてるのに 配列で返してるのがダメな原因らしい

結果

配列では受け取れないが、単体のオブジェクトとしては受け取れたので一旦良しとする。

ソースは下記の質問ページに記載してるので、ご参考に teratail.com

ngrokでlocalhostに外部からアクセス【Win】

f:id:ksyunnnn:20160817144248p:plain

経緯

スマホアプリの動作確認・API連携の動作確認のために一時的にlocalhostにアクセスしたかった。

やること

1.ngrokをDL

※ローカルで動作しているサーバを一時的にオンライン公開するオープンソース

2.任意の場所に解凍

3.exeを起動し下記コマンド

ngrok http 80

4.Forwarding... に続くURLへアクセス

5.済んだらngrok終了

めっちゃ簡単