bugspotsのインストール

普通はrbenv使うがとりあえず動けばよいので。 RubyGemsのアップデート(多分いらない場合多し) $ sudo gem rubygems-update $ sudo update_rubygems BugSpotsのインストール(cmakeが必要) $ brew install cmake $ sudo gem install bugspots

LinearLayoutやRecyclerViewの、もともと用意されている区切り線について

LinearLayout android:divider="?android:dividerHorizontal" android:showDividers="beginning|middle|end" RecyclerView final DividerItemDecoration decoration = new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL); recyclerVi…

Androidで、v7.Toolbarに高さ指定するときについて

ActionBarをMaterial対応させると、Heightは 56dp (デフォルト) 48dp (横向き) 64dp (タブレット、sw600dp) になると思うが、実際に直指定するのはださい。 ICSからNougatまでに対応し、なおかつ直指定しない方法として、

appcompat-v7 を使って、カスタマイズ可能な、 Dialog のような画面を超楽にめちゃ綺麗につくる

Androidで、カスタマイズ可能なDialogのような画面を楽につくる方法について考える。 Android でカスタマイズダイアログをつくるのは、AlertDialogよりはDialogFragmentのほうが楽にはなっているが、相変わらず骨が折れる。 今回は、DialogはAlertDialogやDi…

Androidで今開いているアクティブなActivityを調べるコマンド

adb shell dumpsys activity activities | grep mResumed

Nexus 6Pでfastboot oem unlockする

開発者向けオプションでOEMロックを解除して、 ``` $ fastboot oem unlock ``` してもFailする。 正しくは ``` $ fastboot flashing unlock ``` だった。

FragmentLifecycleCallbacksってのがあるらしいが…

https://developer.android.com/reference/android/support/v4/app/FragmentManager.FragmentLifecycleCallbacks.html 使えそうだなーと思い。 が、ドキュメントではstaticでメンバークラスぽいけど、実際のコードではインナークラスだった… なのでこんな感…

FirebaseCrashクラスにあるlogとlogcatメソッドの違い

# 致命的クラッシュや、FirebaseCrash.report()した場合に送られる際に、直近のログを同時に送信するため保存しておく。保存する内容はlogcatには出力しない。 FirebaseCrash.log(message); # 致命的クラッシュや、FirebaseCrash.report()した場合に送られる…

macOS Sierraで、Homebrew経由でMySQLをインストール&使用開始できる状態にする

Macにインストール $ brew install mysql MySQLの初期設定 $ mysqld --initialize --explicit_defaults_for_timestamp で初期設定。 --initialize specified but the data directory has files in it. Aborting というエラーメッセージが出た場合は、${Homeb…

Androidで表示されているViewをファイル保存する

View view = findViewById(R.id.preview); Bitmap bitmap = null; OutputStream stream = null; boolean result = false; try { final String filename = "saved.jpg"; final File saved = new File(Environment.getExternalStorageDirectory().getAbsoluteP…

Ubuntu の Unity ランチャーに任意のアプリケーションを登録する

$ cd /usr/local/applications $ vim 任意.desktop 以下は内容 Desktop Entry] Version=1.0 Type=Application Name=任意 Exec="コマンドの場所" %f Icon=アイコン画像の場所 Categories=Development;IDE; Terminal=false StartupNotify=true StartupWMClass=…

Facebook SDK for Android (4.5.0) がAndroid 6.0でクラッシュする

stackoverflow.comらしい。

Robolectric 3.0でApplicationクラスやConstantsクラスをrobolectric.propertiesに書き出す時の注意点

src/test/resources/robolectric.properties(正しい例) application=com.sample.MyApplication constants=com.sample.BuildConfig sdk=21 packageName=com.sample src/test/java/com/sample/test/MyTest.java(端折っています) import com.sample.MyAppli…

Android Studio, IntelliJ, Pycharmなどでプロジェクト全体から検索

Search EveryWhere。 IntelliJ系共通。 Shift2回。

Google App Engine for Pythonでdev_appserver.pyした際エラーが出たら

ImportError: cannot import name docker などと出るだろう。 以下の方法で対処可能。 $ pip install docker-py $ vim ~/google-cloud-sdk/platform/google_appengine/google/appengine/tools/docker/containers.py - from docker import docker + import do…

AndroidでLayoutの高さが変わった際アニメーションをつけたい

XMLから <LinearLayout android:id="@+id/container" android:animateLayoutChanges="true" /> Javaから LinearLayout mLinearLayout = (LinearLayout) findViewById(R.id.container); mLinearLayout.setLayoutTransition(new LayoutTransition()); 注意 Linearでなければ動かないわけでない。 課題 ViewGroup上部でAnimationするのだが、下部</linearlayout>…

Mac OS X YosemiteにGIMPをインストール

$ brew install Caskroom/cask/gimp

Macターミナル上でスマホアプリのHttpリクエストをとりあえず確認する

Mac標準にインストールされているApacheでProxyを立てて、スマホのネットワーク設定でProxyを経由するようにする。 Apache側の設定 $ sudo vim /private/etc/apache2/other/sample-proxy.conf <IfModule mod_proxy.c> ProxyRequests On ProxyVia On <Proxy *> Order deny,allow Deny from al</proxy></ifmodule>…

Facebook SDKのTokenから、現在許可されているパーミッションを確認する

Tokenにパーミッション情報などが含まれるので、Facebook側で用意しているDebuggerで確認することができる。 https://developers.facebook.com/tools/debug/accesstoken APIの挙動や、試験的にパーミッション等を付与しどういった情報を取得できるかを気軽に…

Android Studioで使用していないImportを自動削除する

Settingを開き、Editor > General > Auto Importで、Javaカテゴリの「Optimize imports on the fly」チェックボックスをつける。

PyCharm Community EditionでGoogle App Engineアプリ作成したい

本当はライセンス購入したいが、何分お金がないので…スマソ PyCharmでPure Python Projectとして開発していると、appengine系のパッケージが参照されないので結構つらい。そこで、virtualenvwrapperを使って、参照させるようにする。 環境 Ubuntu 14.04 PyCharm…

IntellijやPyCharm、Android Studioなどでクラスやメソッドの宣言元にジャンプする

SettingsまたはPreferenceで、Keymapの項目から「jump to source」で検索。 Main Menu -> View -> Jump to Sourceで、設定されたショートカットを確認。 あとはクラスやメソッド上でショートカットキー入れればOk。ググると、定義元にジャンプ、宣言元にジャ…

MacにMeldをインストール

まずはXQuartzをインストール XQuartz Macを再起動 再起動はよく忘れるポイントなので注意。 Meldをインストール $ brew install homebrew/x11/meld

Androidのadbコマンドからアプリを起動する

Android Studioのログを見ていればわかるが、一応メモ。 $ adb shell am -n start com.package.name/com.package.name.ActivityName

Androidのadbコマンドからタップイベントを起こす

エミュレータ・実機関係なく操作可能。 # adb shell input tap x y $ adb shell input tap 150 300 他の動作(文字列入力など)は、下記方法で調べられる。 $ adb shell shell@android:/ $ input

GitのSubmoduleを最新に同期する

$ git submodule foreach git pull origin master

TextViewのAutoLinkのURL起動先を、デフォルトブラウザでなく独自のActivityにする

基本的にはLinkMovementMethodの一部ソースをコピったあと、ブラウザに飛ばすであろう箇所のコードを削除し、自分でIntentを書けばOK。あまりいい解決法とも思えないが・・・MainActivity.java . . . @Override public void onCreate(Bundle savedInstanceSt…

Android StudioのGetter Setter生成機能の際PrefixやSuffixを取り除く

Setting -> Code Style -> Java -> Code Generation -> Name suffix にmを入れる。

AndroidのCompat版ToolBarにActionBarとして使いつつアイコンを表示したい

@Override public void onCreate(Bundle bundle) { super.onCreate(bundle); setContentView(R.layout.main_activity); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); toolbar.setNavigationIcon(R.drawable.ic_l…

Webサービスを退会する

Webサービスの中には、なかなか退会できないものがある。 そうした場合に、簡単に退会方法を探す方法があった。Just Delete Me | A directory of direct links to delete your account from web services. Just Delete Me | A directory of direct links to …

ToolBarにStyleを設定する

<style name="MyToolbarStyle" parent="Widget.AppCompat.Toolbar"> <item name="android:background">@android:color/black</item> <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item> <item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item> </style> あとはToolBarの属性内に適応する。

KitKatから採用された透明ステータスバーとナビゲーションバー

<style name="AppTheme" parent="Theme.AppCompat.Light"> <item name="android:windowTranslucentNavigation">true</item> <item name="android:windowTranslucentStatus">true</item> </style> ナビゲーションバーは戻るボタンの部分。ステータスバーは上の通知部分。 ステータスバーを透明にすると、ステータスバー分のス…

DialogのsetCancelableの微妙な罠

Dialogクラス内(onCreateDialogなど)で設定するときちんと設定されない。 Dialogインスタンスから呼び出せばきちんと設定される。

Uriを改めて復習

例:content://image/favorite?id=4&referer=from_okschemeはcontent authorityはimage pathは/favorite query1はid = 4 query2はreferer = from_okスキームとは、「://」までの、すべての文字列を指す。 オーソリティーは、「://」から、次の「/」「?」「#…

ButterKnife(Androidライブラリ)を使う

昨今流行のView Injection Library。 findViewByIdの嵐を防ぐことができる。 インストール自体は、Android Studioであればappの方のbuild.gradleに追加するだけなので簡素。詳細は公式ページを参照。 http://jakewharton.github.io/butterknife/Activityで使…

Viewの中身をLogで確認できるViewDebugのdumpCapturedViewが便利

使用例MainActivity.java . . . @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button b = (Button) findViewById(R.id.button1); // こいつ ViewDebug.du…

JavaでPHPのimplode的なことをしたい

なさそうなので、仕方なく作った。 public String implode(List<String> values, String glue) { StringBuilder sb = new StringBuilder(); int index = 0; int size = values.size(); for (String value : values) { sb.append(value); if (index <= size - 2) { sb</string>…

Activityから特定のViewを削除する(GONEではないよ)

ViewGroup p = (ViewGroup) view.getParent(); p.removeView(view);

AndroidでTimerを実装してみる

俺のTimerTaskクラス public class MyTimer extends TimerTask { public Context context; public Handler handler = new Handler(); public MyTimer(Context context) { this.context = context; } @Override public void run() { handler.post(new Runnabl…

Javaで日付文字列からタイムスタンプを取る

SimpleDateFormat sdf = new SimpleDateFormat(); sdf.applyPattern("yyyy/MM/dd HH:mm:ss); Date d = sdf.parse("2014/01/01 11:00:22"); long timeStamp = d.getTime() / 1000;

AndroidのTextUtils.isEmptyを使う

# echo true Log.d("TextUtilsSample", String.valueOf(TextUtils.isEmpty(null))); # echo false Log.d("TextUtilsSample", String.valueOf(TextUtils.isEmpty("hello")));

Android Studioで右下にIDEのメモリ使用量を出す

Preferenceを開き、Appearanceのshow memory indicatorにチェックをつける。

Nexus 7(2013)にUbuntuから「L」を入れてみた

Google I/Oを見ていたら、入れたくなってしまった。必要なもの ・Android SDK(fastbootへのPathを通す) ・ファクトリーイメージ(Google Developerからダウンロードする) $ tar xvzf razor-lpv79-preview-d0ddf8ce.tgz $ cd razor-lpv79 $ unzip image-ra…

UbuntuのGUIが固まってしまったら

Ctrl + Alt + F6でターミナル起動。(ちなみにCtrl + Alt + F7でGUIに戻る) ユーザ名でログインしたら $ sudo service lightdm restart で再起動。

LinuxでコマンドからHDDなどをマウント・アンマウント

デバイスと種類を把握する $ sudo fdisk -l 実行 $ sudo mkdir /mnt/mountedhdd $ sudo mount -t exfat /dev/sdb1 /mnt/mountedhdd $ sudo ln -s /mnt/mountedhdd ~/hdd アンマウント $ sudo umount /mnt/mountedhdd

Gitでリモートブランチをローカルに取得

$ git checkout -b new-local-name origin/remote-branch

HashMapのIterator

HashMap<String, MyObject> maps = new HashMap<String, MyObject>(); Set<String> keys = maps.keySet(); Iterator<String> iterator = keys.iterator(); while (iterator.hasNext()) { String key = iterator.next(); MyObject object = maps.get(key); }</string></string></string,></string,>

JavaScriptで画面域サイズ・表示域サイズの取得

# 表示域サイズ document.documentClientElement.clientWidth document.documentClientElement.clientHeight # 画面域サイズ screen.width wcreen.height

Gitでブランチ名変更

$ git branch -m NEW_NAME

Gitでコミットからブランチを生成

$ git checkout -b NEW_NAME_BRANCH COMMIT_ID(ex:sdlf32523sdfjl3jl24lsjg4l)