0.環境 [Android] 5.1.1 文中、【】内は読み替えて下さい。 1.問題 Androidホーム画面の起動アイコンのタイトルをアプリ名にしたくて、下記(3)を追記したのですが変わりません・・・ AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="【パッケージ名】" > <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="(1) App Name" android:theme="@style/AppTheme" > <activity android:name=".MyActivity" android:label="(2) My Activity's Title" > <intent-filter android:label="(3) App Name"> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> ネットで調べたところ、Android 5.1.1 だと(3)が無視され、下図のように起動アイコンにも(2)が表示されてしまうようです。 2. 対策 まず”AndroidManifest.xml”では、Activityのlabelを下記(3)に変更することで、起動アイコンはアプリ名になります。(intent-filterのlabel指定はやめる) そのままだと、Activityのタイトルもアプリ名になってしまうため、起動時にタイトルを書き換えることにしました。(下記 “MyActivity.java” 参照) AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas. ...

Read more

 更新日:2017年05月16日 0.環境 PC側 [OS] Windows7 (32bit 版) [Android Studio] 1.5.1 スマホ側 [OS] Android 5.1.1 [SQLite] 3.8.6.1 1. 前提 まずSQLiteのデータをファイル形式で保存するよう設定します。 例として、SQLiteを操作するライブラリにSQLiteOpenHelperを使用した場合について記載します。 コンストラクタの第二引数でDBファイル名を指定します。 (未指定の場合、データはメモリにのみ保持されます) class DatabaseHelper extends SQLiteOpenHelper { public DatabaseHelper(Context context) { //DBファイル名を指定。 super(context, "example.db", null, 1); } PCからAndroid端末にあるSQLiteのDBファイルを見る方法を調べました。 試行錯誤した内容を書いているため、結論だけ知りたい場合は、4まで読み飛ばして下さい。 2. ADB(Androidデバッグ用インターフェース) 利用 ネットを検索して結構あったのが、ADBを使ってSQLiteのDBファイルをAndroid端末からPCへコピーし、その後DBビューワーで参照するというものです。 PCでコマンドプロンプトから下記コマンドを実行すると、カレントディレクトリにtarget.db(任意)というファイルができます。 C:\Users\【ユーザー名】>adb -d shell "run-as 【アプリケーションID】 cat databases/【DBファイル名】">target.db 【】内は読み替えて下さい。 【アプリケーションID】: Android Studioの[File]-[Project Structure]-[Flavors]-[Application Id] ...

Read more

0. 前提 環境などの前提条件は前回の1から3と同じです。 今回は教科書の[1. Reduce number of HTTP requests]-[Use Browser Cache]をやってみました。 修正が少ない静的ファイルはブラウザキャッシュの期間を延ばし、2回目以降のアクセスはキャッシュから読み込むことで速度向上につなげます。 作業は下記の2点です。 (1) キャッシュ期間延長  Webサーバーの設定でjs、cssのブラウザ・キャッシュ期間を延ばします。 (2) ファイル名のユニーク化  上記1によって修正がすぐに反映されないという状況を避けるため、ファイル名に修正ごとのハッシュ値を付けてキャッシュが効かないようにします。(gulpの機能を利用) 1. キャッシュ期間延長 nginxの設定ファイルにjs、cssの設定とキャッシュ期間を追記しました。 記述が冗長なのは追って別の書き方を調べたいと思います。 server { listen 443 ssl; server_name [ドメイン名]; ssl_certificate [ファイルパス]; ssl_certificate_key [ファイルパス]; location / { proxy_pass http://[ホスト名]:[ポート番号]; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-Port 443; proxy_set_header Host $host; } # --- css/jsの指定を追加。 --- location ~* .(css|js)$ { proxy_pass http://[ホスト名]:[ポート番号]; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-Port 443; proxy_set_header Host $host; # キャッシュ期間を設定。 expires 365d; } # --- css/jsの指定を追加。 --- } ChromeのDeveloper Toolsで見て、Expiresヘッダーの追加とjs、cssがキャッシュから読み込まれていることを確認します。(下図オレンジの枠線) ...

Read more

0. 環境 [Mac] 10.11.6 [Hugo] 0.19 1.インストール ここ数年、ブログウェアはjekyllを使ってましたが、下記の点が不便だったので、評判の良いHugoを試してみました。まずはサンプルを動かすところまで。 初期構築やバージョンアップが大変だったので、他のPCに環境を作る気になれない。(今ならDockerという手もありますが…) 記事の生成に時間がかかるようになってきた。 記事の更新後、2~3回リロードしないとブラウザに反映されない。 インストール・マニュアルに従って進めました。 僕の場合、Homebrewは既に入っていたのでStep2からやりました。 $ brew update $ brew install hugo 「インストール後にバージョンを調べてね」と書いてあるので念のためチェックです。 $ ls -l $( which hugo ) lrwxr-xr-x 1 mx admin 28 3 19 03:08 /usr/local/bin/hugo -> ../Cellar/hugo/0.19/bin/hugo $ hugo version Hugo Static Site Generator v0.19 darwin/amd64 BuildDate: 2017-02-27T19:21:29+09:00 2行とも0.19なので問題なさそうです。 2.サンプル作成 こちらのページに沿ってサンプルを作成しました。 適当なディレクトリで下記を実行します。(僕の場合 /app/hugo-test/ なので読み替えて下さい) ...

Read more

 更新日:2017年03月07日 0. 環境 フロントエンドの話なのでサーバー環境はあまり関係ないのですが、参考まで。 サーバー [Nginx] 1.10.2 [Kitura] 1.1.2 [Swift] 3.0.1 ローカル [Mac] 10.11.6 [Node.js] 7.6.0 [gulp] 3.9.1 1.準備 仕事でやっているWebサイトのスピードアップを個人でもやってみたくて、適当なページを1つ作ってみました。 シンプルカレンダー そしてパフォーマンス改善の教科書に選んだのはこちらです。 Speed Up Your Website 2.現状 Apacheで運用しているWebアプリが他にあるため、下記のようなちょっと珍しい構成になっています。 Nginx(リバースプロキシとして使用) + ServerSide-Swift(Kitura) 僕のネット環境(下り57Mbps/上り18Mbps)(※1)だとシンプルカレンダーのロードタイムが約2.5秒(※2)でそこまでストレスは感じませんが、DBを使ってないわりにこの数字なので改善の余地ありです。 (※1) 回線速度はSPEEDTESTで計測。 (※2) Chrome Developer Tools で計測。 3.ブラウザからのリクエスト削減 Chrome Developer ToolsのNetworkタブで見るとCSS、JavaScript(以下JS)のダウンロードに時間がかかっているので、教科書の[1. Reduce number of HTTP requests]-[Combine files]から取り掛かってみました。 HTMLから静的ファイル(CSS、JSなど)を複数ダウンロードする際、ブラウザが並列でリクエストできる数が決まっているため、なるべくそれを減らしましょうという内容です。 複数の静的ファイルをまとめるためのツール(※3)を検討しましたが、一番簡単に実現できそうだったgulpを使いました。 (※3) webpack、gulp、Grunt 4. ...

Read more

0. 環境 [Mac] 10.11.6 [GNU bash] 3.2.57 1. 内容 test.shの先頭で第一引数をチェックして、無い場合は処理を中断します。 test.sh if [ "$1" = "" ] then echo "引数を指定して下さい。" # 処理を中断。 exit 1 fi echo "任意の処理" echo "引数は$1" exit 0 実行結果 $ sh test.sh 引数を指定して下さい。 $ sh test.sh hoge 任意の処理 引数はhoge ...

Read more

 更新日:2017年01月27日 0. 環境 [Swift] 3.0.2 1. 大文字・小文字処理 Swift3から大文字・小文字の処理は下記のようになります。 (明示的にするため入れていますが型宣言は省略可) 上記コードはIBM Swift Sandboxで動かせます。 下記リンク先の真ん中にある三角ボタンをクリックして下さい。 Swift3で大文字・小文字処理 (ChromeまたはFirefox推奨) 2. 参考ページ caseInsensitiveCompare localizedCaseInsensitiveCompare ...

Read more

 更新日:2017年02月09日 0. 環境 [Swift] 3.0.2 1. ループ Swift3からループ処理は下記のようになります。 上記コードはIBM Swift Sandboxで実際に動かすことができます。 下記リンク先の真ん中にある三角ボタンをクリックして下さい。 Swift3でのforループ (ChromeまたはFirefox推奨) ...

Read more

0. 環境 [CentOS] 6.8 (64bit版カーネル) [Apache] 2.2.15 1. 問題 ApacheのProxyPassディレクティブ(mod_proxy)を指定して、バックエンドから受け取ったコンテンツを表示しようとするとhtmlタグがそのまま表示されてしまいます。 Apache設定ファイルの抜粋 NameVirtualHost *:80 # 省略 <VirtualHost *:80> ServerAdmin test@local ServerName test.local ProxyPreserveHost On ProxyPass / http://127.0.0.1:8080/ ProxyPassReverse / http://127.0.0.1:8080/ ErrorLog logs/test.local-error_log CustomLog logs/test.local-access_log combined </VirtualHost> 2. 対策 ChromeのDeveloper Toolsなどで見ると、下記のようにHTTPレスポンスヘッダーで平文が指定されています。 Content-Type text/plain; charset=UTF-8 デフォルトのMIMEタイプ指定を無効にすることで解消しました。 Apache設定ファイルの抜粋 NameVirtualHost *:80 # 省略 <VirtualHost *:80> ServerAdmin test@local ServerName test.local # ----- この行を追加 ----- DefaultType None # ----- この行を追加 ----- ProxyPreserveHost On ProxyPass / http://127. ...

Read more