Learn to Live and Live to Learn

IT(たまにビジネス)に関する記事を読んで、考えて、使ってみたことをまとめる場。

多段sshする際の秘密鍵配置やパスワード入力をなくす

ssh-agentを使って、サーバ間を楽々移動する ssh-agentとは 公開鍵認証方式による認証を行っているSSHサーバへ接続する際、秘密鍵に設定されているパスフレーズの入力を代わりにやってくれるアプリケーション server-memo.netより サーバをあちこち移動する…

影響力の武器 4.好意

影響力の武器 1. 返報性 - Learn to Live and Live to Learn 影響力の武器 2.コミットメントと一貫性 - Learn to Live and Live to Learn 影響力の武器 3.社会的証明 - Learn to Live and Live to Learn に続き、影響力の武器である好意をまとめます。 好意…

Android M パーミッション対応

Android 6 Marshmallowからパーミッションの取得タイミングが変わった これまでGoogle Playでのインストール時に全てのパーミッションを要求されていました。 皆さんの中にも「このパーミッションは何に使われてるの?」と疑問に思われたことのある方や、「…

影響力の武器 3.社会的証明

影響力の武器 1. 返報性 - Learn to Live and Live to Learn 影響力の武器 2.コミットメントと一貫性 - Learn to Live and Live to Learn に続き、影響力の武器である社会的証明をまとめます。 社会的証明とは、遂行する人の多いことを正しいと思う心理 例え…

データベースの中身を見る(Android)

データベースの中身を誰でも見られる場所に移動する run-asをつけるとアプリユーザ(アプリ自身)としてコマンドを実行できます。 しかし、データベースの中身を見たいのは一般ユーザなので、run-asした状態で一般ユーザの見られるSDCardにデータベースをコ…

APK署名スキームv2を使い、インストール速度を向上させる(Android N対応)

Android Nから導入された署名スキームv2ではAPKの検証速度が大幅に向上している Android 7.0 では、APK 署名スキーム v2 というアプリのインストール時間を高速化したり、APK ファイルに無許可の変更が行われないようにしたりする新しいアプリ署名スキームが…

影響力の武器 2.コミットメントと一貫性

影響力の武器 1. 返報性 - Learn to Live and Live to Learnの続きです。 一度コミットした立場を取り続けようとする一貫性の原理 私たちは言動を一貫したものにしたい心理を持っています。 なぜなら 一度コミットしたことで、自分はコミットしたような人間…

ManifestMergerのログを見てみる

ManifestMergerとは Android Gradle Pluginが提供するビルド時に自身のマニフェストファイルやライブラリプロジェクトのマニフェストファイルをマージしてくれる機能です。 だから、私たちはbuild.gradleに数行追加するだけで、ライブラリのダウンロードから…

影響力の武器 1. 返報性

ロバート・B・チャルディーニ博士の『影響力の武器』を読んでいるのですが、良書だと思うので内容をまとめたいと思います 人間は固定的動作パターンをとることが多々ある 固定的動作パターンとは、信号刺激に対してとる決まった行動パターンです。 例えば、…

アプリのOpenSSLバージョンを確認する

OpenSSLのバージョン確認は必要 脆弱性があるとお客様を危険に晒すことになるので大事なことです。 もちろんGoogle PlayのリリースではセキュリティスキャンとしてOpenSSLのバージョン確認も行われています。 アプリの OpenSSL の脆弱性への対処方法 - Googl…

aarをローカルから読み込む

概要 aarをローカルから読み込む方法を知った(教えていただいた)ので、メモしときます。 ちなみにaarとは Android ARchiveの略です。 Androidリソースやマニフェストファイルを含めることのできるAndroidライブラリです。 作り方としては、[File] > [New] …

Material Design 1.マテリアルデザインとは何か

同期のデザイナーの子にマテリアルデザインのことを聞かれた時、答えられなくて悔しかったのでw 公式ドキュメントを読みつつ、マテリアルデザインについてまとめていきたいと思います。(全10回くらいの予定) デザインの歴史 スキューモーフィズムからマテ…

AtomでMarkdown記法時に普通に改行する(Atom v1.14.1)

概要 最近メモとしてAtomを使っています。 Control + Shift + Mを押すと、左カラムに入力しつつ右カラムでリアルタイムプレビューできてとても便利です。 しかし半角スペース2つ打たないと改行できないのは不便。。他に改行を使う予定もないし、普通に改行さ…

fatal: Commit <コミットID> is a merge but no -m option was given.

git revert <コミットID>ができない こんなエラーが出ました。 $ git revert f780e4d fatal: Commit f780e4d is a merge but no -m option was given. # コミット「f780e4d」はマージされてるけど、`-m`オプションが付与されてないよ。 マージコミットをリバ…

Android オプションを付けてコンパイルする

概要 ビルド時にオプションを付けてコンパイルしてね,というエラーが出ました. 注意:一部の入力ファイルは非推奨のAPIを使用またはオーバーライドしています。 注意:詳細は、-Xlint:deprecationオプションを指定して再コンパイルしてください。 解決方法 b…

ビルド時にDuplicate files copied

概要 以下のエラーでビルドが失敗しました. Duplicate files copied in APK META-INF/LICENSE.txt 原因 依存ライブラリに指定した外部jarファイルを内部で展開した時に複数のjarファイルでリソースファイルなどのパスが競合してエラーになっているようです…

Android N データセーバ対応

データセーバとは Android Nで導入された機能です. ユーザーが [Settings] でデータセーバーを有効にし、端末が従量制課金ネットワークに接続されている場合、システムはバックグラウンドでのデータ使用をブロックし、フォアグラウンドでのデータ使用をなる…

Sources for 'Android API xx Platform' not found.

概要 Build.javaを開くとSources for 'Android API 22(1) Platform' not found.というエラーが出てきました. インストールしても直らない (インストールされているかは,Tools > Android > SDK Manager > Show Pachage Details > Sources for Android xxが…

Android Spinner#onItemSelectedが起動時にも実行されることへの対策

Spinner#onItemSelected 初回起動時もSelectされたとして反応してしまいます. 初回は処理を避けたい時の対応方法を紹介します. 実装 よくある方法にSpinnerがフォーカス可能かをフラグとして使うものがあります. falseが初回起動,trueがそれ以降です. …

Android Web to Appする(アプリ編)

App Indexing AndroidにはApp Indexingという仕組みがあります. AppIndexingとは、ウェブページURLやキーワードとアプリの特定画面へのディープリンクを紐付け、Google検索結果から直接アプリの特定画面を起動させるための仕組みです。 by Qiita ウェブもア…

Android Homeキーのタップを検知する

dispatchKeyEventでいけるかなと思っていましが,これはハードキー時代の栄光のようです. Homeキーのタップを検知する方法には 1). onUserLeaveHint 2). BroadcastReceiver の2つあります. 1). はIntentで他アプリに遷移するときも呼ばれるので注意が必要…

this version of Android Studio is incompatible with the Gradle Plugin used. Try disabling Instant Run

エラー内容 git cloneしてきたアプリをrunしようとしたら,こんなメッセージが出てヒーってなったんですが,あっさり解決できたんで方法を記したいと思います. this version of Android Studio is incompatible with the Gradle Plugin used. Try disabling…

App ShortcutsのStatic Shortcutsを実装してみる

App Shortcutsとは Android 7.1(SDK 25)で追加されたショートカットを作成する機能です. アプリを長押しすると,ショートカットの機能が出てきます. 吹き出しをタップすることで指定したintentを起動できます. 図1: ショートカット(左上) ショートカ…

EventBusを使って簡単にCallbackを実現する

EventBusとは あるClassでのイベントを検知して,別のClassで何かしたい時ありませんか? Androidには簡単にそんなCallbackを実現する仕組みがあります.それがEventBusです. 例えば,ショッピングアプリの商品ページでお気に入りボタンが押された時,未ロ…

Android N マルチウィンドウ非対応

Android O Developer Previewも出てきていますが,Android Nのマルチウィンドウを非対応にする方法を記したいと思います. マルチウィンドウとは Android 7.0 Nougatで提供されている機能です. 複数のアプリが画面を同時に共有できます。たとえば、ユーザー…

D3.jsでヒートマップっぽいものを作ってみた

概要 地域データを扱うことが多いので,可視化の方法としてD3.jsを勉強しました. (可視化は手段なんで,RでもTablueauでも状況に合わせて使い分ければいいと思います) D3.js(Data Driven Documents)は ウェブブラウザで動的コンテンツを描画するJavaScr…

PHPで実践する動的計画法

※Qiitaに”動的計画法とメモ化”を説明する記事を書きましたので,こちらにも記載したいと思います.内容は全く同じです(>_<) qiita.com 動的計画法とメモ化 動的計画法(Dynamic Programming)とメモ化(Memorization)は,競技プログラミングなんかでよく使…

いきなりRxAndroid

RxAndroidを使う機会があったので,調べたことをまとめました. ※理解が浅いので間違っている箇所はご指摘いただけると嬉しいです>< RxAndroidとは Reactive Extentions Androidの略で,RxJavaを内包しAndroidで利用するための機能を追加してあります.ソ…

[Android] 画像・動画ファイルをアルバムから削除する

サンプルコード import java.io.File; import android.content.Context; String outputPath = <ファイルのパス>; Context context = this; File file = new File(outputPath); if (file.exists()) { file.delete(); // ファイル自体の削除 context.getConten…

実験版『人を動かす』

デール・カーネギーさんの名著『人を動かす』を読みました. 名前は知っていたのですが,最近ハマっている漫画『ACMA:GAME』で 主人公が読んでいる本の中にこれを見つけて速攻買いました. 人を動かす 新装版 作者: デールカーネギー,Dale Carnegie,山口博 …