読者です 読者をやめる 読者になる 読者になる

Learn to Live and Live to Learn

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

データベースの中身を見る(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,山口博 …

非エンジニアの方にSQLを伝える

非エンジニアの方もほしいデータをサクッと出せる環境を作りたい (社内でHiveQLを簡単に使えるツールができたので、それを利用できたらいいな) と思っていたところにこんな記事が。 営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1の…

「女子エンジニアのためのDesignワークショップ」に初参加

女子エンジニアのためのDesignワークショップに行ってきました。女子エンジニアのためのPhotoshopデザイン講座♥開催recruit-tech.co.jp普段、開発をしているエンジニア(あるいは未来のエンジニア)が この日はコードから離れてデザインの勉強をしましょう、…

データ可視化を学ぶ Part1

データ可視化。 自分の考えを伝えるための手段。 ただ、手段だからと侮ると痛い目を見るというのを最近つくづく感じます(笑)。 「同じことを言っていてもデータの見せ方で相手の理解度が違う」 「可視化が上手いとできる人っぽく見える」 そこでデータ可視…

標準エラー出力を上手く使う。

今までおざなりにしてきた標準出力や標準エラー出力を教えてもらったのでまとめときます。 コマンド > ファイル名 2>&1 表記 意味 > リダイレクト。1>=標準出力を意味する。 &1 ファイル名 2> 標準エラー出力を意味する。 cronで使うときは、crontabに 0 0 …

Rで作ったチャートを保存

R

histとかplotとかで作ったチャートを画像として保存したい というとき、キャプチャを撮ってもいいのですが 以下の方法で指定の場所に、指定の名前で、保存しちゃえます。① jpeg("ファイルのパス+ファイル名") ※ png形式ならpng()という感じです。 ② 保存し…

vimでずれずにペースト

vimにコピーしたものを貼り付けるとき 普通に iで入力できる状態にしてペーストすると、インデントがずれる という初歩中の初歩な問題を今更解決できたのでその方法です。ペーストする前に :set pasteするだけです\(^^)/

Hadoop Conference Japan 2014

行ってきました。黄色いゾウと会える会。講演の動画や資料は Hadoop Conference Japan 2014 Tickets - Eventbrite からご覧いただけます。全体の印象としては、YARNやHadoopを活用した事例の紹介が多かったです。 Hadoop Summitに行った先輩方が YARNとTezの…

REST入門

Web

yohei-y:weblog: REST 入門 を紹介してもらい、読んでみたまとめです。 (あくまで自分の理解です) RESTとはREpresentation State Transferの略で、アーキテクチャスタイルのひとつである。 RESTはアーキテクチャスタイルの中のクライアントサーバから派生…

rtrimで最後のカンマを削除。

PHP

$str = 'hoge,piyo,fuga,'; $str = rtrim( $str, ',' ); echo $str; hoge,piyo,fuga 最後のカンマが消えます!配列の値をforeachで読み込んで foreach ( $ary as $item ) { $str .= $item; $str .= ','; } こんな感じに作った後に最後のカンマを外したりする…

Pigのインストール

最近、仕事でよくPigを使います。 ただ、先輩の真似をしているだけなので 勉強していきたいと思います。PigはPig Latinという言語を使って、簡単にjoin・group・filter・sortをしたり sumやcountをしたりできるものです。まずはPigのダウンロード。http://pi…

git grep

Git

Git grepを便利に使う-eオプションについて - Qiita を参考にgit grepを使ってみました。 git grepとは、gitで管理しているリポジトリ内「だけ」をgrepするコマンド です。 -eオプション -eの後にgrepしたい条件を書くことで、正規表現による絞り込みができ…

スマホが振られたのを検知してみる。

一ヶ月振りの更新。 加速度センサーを利用して、スマホを振ったのを検知してみました! ネットで拝借したソースコードにコメントアウトで解釈(間違いがありましたらご指摘ください)を加えたものを以下に記述させていただきます。 ざっくり言うと、ある程度…

スプラッシュ画像の表示方法

アプリを立ち上げたときに出てくるスプラッシュ画像。 設定してみました。① 最初に表示したい面を用意します。 splash.xml

Unable to execute dex…

Androidプロジェクトを起動しようとするとこんなエラーが出ました。 [2014-02-10 00:58:34 - Dex Loader] Unable to execute dex: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServic…

途中でAPIレベルを変更する方法

androidアプリを作っていて、途中で使いたいと思ったデザインが あるAPIレベル以上じゃないと利用できない、でも最初に設定した ミニマムSDKバージョンはそれに達していない…!ということ、ありませんか。そんなときはManifestファイルです。use-sdkタグの変…

NetworkOnMainThreadExceptionの解決方法

APIを叩くAndroidアプリ作ってたらこんなエラーが出ました。 android.os.NetworkOnMainThreadExceptionAndroid 開発Tips: FTPファイル送信 によるとAndroid3.1からStrictModeがデフォルトでオンになっていて 解除する必要があるそうです。解除は StrictMode.…

SPARQLを使ってみる。

SPARQL(スパークル)はRDBで言うSQL言語=クエリ言語です。 それを利用して、RDF(Resource Description Framework。web上にあるリソースを記述するための枠組み) から必要な情報を取り出したいと思います。以下は SPARQL で RDF データを検索する に書かれ…

Eclipseで実行時に引数を渡す方法

public static void main(String[] args) {←このargsを受け取りたいってときの方法です。 Eclipseでコマンドライン引数を与えて実行する方法 | 学習B5デスノート にある通りなんですが、mainメソッドのあるファイルを右クリック →実行 →実行の構成 →(x)= 引…

TDDに挑戦【Java】

TDDとはTest Driven Development(テスト駆動開発)の略です。 テストコードを書いてから実装しましょう、という開発手法です。 今回は実際にどうやるのかバグがないプログラムのつくり方 JavaとEclipseで学ぶTDDテスト駆動開発 (Be agile!)作者: 川端光義,…

Perlでベンチマーク

Perlではその名もBenchmarkというモジュールを使うと 簡単にベンチマーク=性能比較を行えます。まずはやってみました。 #!/usr/bin/perl -w use strict; use Benchmark qw/timethese cmpthese/; my $result = timethese( 10000, { loop1 => sub{ my $i = 0;…

mapを使って配列からハッシュを作成

「バタバタしていて…」と心の中でできない社会人の典型な言い訳している内に ブログの最終更新日から10日も経っていました。反省します。今日、知ったこと map関数を使うと配列からハッシュを作れる。 例えば配列の要素をキーにして、バリューには1を入れた…

Hadoop StreamingでUNIXコマンドを実行

やってみました。 $ hadoop/bin/hadoop jar hadoop/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar \ -input '/input/attempt.tsv' \ -output '/output' \ -mapper "awk '{ num = split( $1, aryData, "," ); for ( i=1; i<=num; i++ ) { print aryData…

JavaでマルチスレッドプログラムーRunnableインターフェイス実装編ー

昨日に引き続き今日は、Runnableインターフェイスを実装する場合のマルチスレッドプログラムです。Q. Runnableインターファイスを実装するのはどんなとき? A. 他に継承する必要のあるクラスがあり、Threadクラスを継承できないとき。Q. どうやって実装する…

Javaでマルチスレッドプログラム

マルチスレッドってそれとなくわかった気になって、使っていたのですが 改めて調べ直してみました。マルチスレッドとは 複数の処理が一つのプログラム上で動いているように見せる方法。種類 Threadクラスを継承 Runnableインターフェイスを実装 shynchronize…