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

woshidan's blog

そんなことよりコードにダイブ。

rubyとAndroidを触っている人がObjective-Cを一年以上ぶりに見たときの感想

こちらを参考にしながら、Objective-Cを一年以上ぶりに見たら結構面白かったので少しでも覚えられるようにメモをします。 オブジェクトの生成 NSObject *obj = [[NSObject alloc] init]; 往時は、くらくらするだけだったんですが、 rubyやJavaをある程度いじ…

CocoaPodsをつかってみてRealm入れてビルドしようとしたら「~.h」ファイルがないと言われてつまづいた

有線LANのアダプターを購入した結果無事、pod setupに成功いたしました。めでたい。 gitのネットワークの設定より、物理的にネットワーク環境を変えられるのであれば変えたほうが早いですね。 CocoaPodをセットアップする前にはLANのアダプタを無線wifiから…

XCodeでStoryBoardのPreviewをする

とりあえず、CocoaPodsを触ってみた、というブログ記事を書こうと思ったところ、自宅の回線 + 無線LANの組み合わせでは 5時間格闘してもセットアップに成功する気配が一向に見られず、諦めて有線のアダプタをぽちったところです。 有線のアダプタでもだめな…

AndroidのWidgetで時計を作ってみる

Androidを立ち上げたらホーム画面にいくつか時計や天気予報などが表示されていると思うのですが、AppWidgetクラスを利用してそういったホーム画面に表示されるウィジェットを作成することができます。 今回は時計もどきを作成してみたのでそのときのメモです…

Subscriber.onErrorが呼び出されると、それ以降のonNextメソッドは

いまさらなんですが、RxJavaでは一度Subscriber.onErrorが呼び出されると、それ以降のonNextメソッドや onCompleteメソッドは呼び出されないということを確認いたしましたので、そういう感じで。 // Gradle compile 'io.reactivex:rxjava:1.1.6' // RxAndroi…

No such property: main for class: org.gradle.api.internal.file.DefaultSourceDirectorySet

stackoverflow.com Android Studioのバージョンアップをしたら上記のページにあるような No such property: main for class: org.gradle.api.internal.file.DefaultSourceDirectorySet Possible solutions: name というエラーが出ました。 やったこと Androi…

転送と委譲の定義について

自分で書いてて、あれ、どっちがどっちだっけ、と少し混乱したので手持ちの本をぱらぱらと見て整理してました。 Effective Javaに書いてある転送と委譲の定義みたいなもの 以下は、Effective Javaに書いてある説明をざっとまとめたものになります。 転送 転…

前回のビルドのプロセスがキャッシュファイルのロックを取っていてAndroid Studioのビルドができないとき

Android Studioでビルドをしていると、なかなかビルドが終わらずに途中でキャンセルしたり、ついAndroid Studioごと強制終了できないかなと考えて実行してしまったりします。 そうしてビルドを終了させても前回のビルドが正常に終了せず、前回のビルドのプロ…

crontabの内容を管理するgem whenever の使い方を復習した

DSLっぽいrubyを使ってcrontabの内容を管理するgem whenever の使い方を復習しました。 本家GitHub https://github.com/javan/whenever # Gemfile gem 'whenever', '= 0.9.4', :require => false $ wheneverize . # [add] writing `./config/schedule.rb' [d…

potatotips #29で「メモリリークに関するウワサの今昔」という題で発表しました

speakerdeck.com 現在上がっているバージョンは発表後、懇親会やブログ記事などで教えていただいたことを元に、まとめの部分のApplicationContextをActivityContextに訂正させていただいております。 ytrino.hatenablog.com Yukiの枝折: Android:引数はthis…

SketchのPageを使ってみる

ちょっと画像を使ってメモしていたら長くなったので、4つに分割してお送りします。 Sketchの表示モード Sketchで画面に挿入できる要素について カスタムアートボードを作る Pageを使ってみる 今日はPageの使い方について。 Pagesについて SketchではPageとい…

Sketchでカスタムアートボードを作る

せっかくSketchを買ったので少し勉強しました。 ちょっと画像を使ってメモしていたら長くなったので、4つに分割してお送りします。 Sketchの表示モード Sketchで画面に挿入できる要素について カスタムアートボードを作る Pageを使ってみる 今日は自分でアー…

Sketchで画面に挿入できる要素について

せっかくSketchを買ったので少し勉強しました。 ちょっと画像を使ってメモしていたら長くなったので、4つに分割してお送りします。 Sketchの表示モード Sketchで画面に挿入できる要素について カスタムアートボードを作る Pageを使ってみる 今日は、Sketchで…

Sketchの表示モードについて

せっかくSketchを買ったので少し勉強しました。 ちょっと画像を使ってメモしていたら長くなったので、4つに分割してお送りします。 Sketchの表示モード Sketchで画面に挿入できる要素について カスタムアートボードを作る Pageを使ってみる 今日はSketchの表…

Activityの各ライフサイクルメソッドの役割について

Activityのライフサイクルメソッドをなんとなくしか理解していなかったので、 onCreate onStart onResume onPause onStop onDestroy の順番に呼ばれて、なんとなく、 onCreate、あるいはそこから呼び出すメソッドでレイアウトファイルに書いたViewの初期化を…

ライフサイクルコールバックのsuperについて、自分の実装の先に呼ぶか、後に呼ぶか

ライフサイクルコールバックのsuperについて、自分の実装の先に呼ぶか、後に呼ぶかというのが気になっていて、 java - What is the correct order of calling superclass methods in onPause, onStop and onDestroy methods? and Why? - Stack Overflow とい…

Java言語で学ぶデザインパターン入門[マルチスレッド編]を読みました

世の中には、RxJavaやIntentServiceといった初心者でも一応非同期処理を書けるライブラリはあるのですが、それでも隠しきれない理解不足を痛感したため、Java言語で学ぶデザインパターン入門[マルチスレッド編]を読みました。 実を言うと、以前に一度は目を…

バージョン指定をしない時、Railsのrake db:migrateでchangeメソッドを実行するMigrationのインスタンスの配列をどうやって取得しているのか

migrationで厄介な対応が必要な場合、SchemaMigrationをいじって整合性を取る必要性がある、と先輩が言っていたのを聞いて、ふむふむと追いかけてみました。 なお、この記事に出てくるコードのRailsのバージョンは、5.0.0.alphaです。 まとめ バージョン指定…

LayoutInfalter#inflateの引数について

RecyclerView.Adapter の onCreateViewHolder メソッドの中で、 @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_in_list, pare…

JavaのCollections.sortは何ソートなのか

最近、本の中身をがっつりそのまんま、みたいなブログに書きにくい勉強のやり方をしているので、なかなかネタがないですね。 なので、ちょっと気になったことをメモしておきます。 Javaはコレクションクラスに対して、 Collections.sort(someList, new SomeC…

MacをEl Captainにして家に帰ってきたらSublimeTextが死んでた

このあいだの日曜日に、Sketchを使ってみたいという理由で、MacをOS X 10.9.5から10.11.4(El Captaion)にしたのですが、今日仕事から帰って来たら、SublimeTextが下記のメッセージを吐いてお亡くなりになっていました。 github.com 上記のissueにある通り、E…

ToolbarのMenuItemを一度表示した後に切り替えたい

ToolbarのMenuItemを、その後のActivityの状況が変化するなりして切り替えたい*1といったことが稀に良くあります。 そう言う場合、ActivityにToolbarを置いている場合は下記のようなコードでとりあえず対応可能です。 // Activity内 private int mMenuResour…

FragmentでToolbarのMenuを使う

とある事情によりFragmentからToolbarのMenuを使いたくなりました。 Fragmentを使ってMenuを動的に作成する « Tech Booster Android。フラグメントでアクションバーを使う。 - そごうソフトウェア研究所 上記の記事を参考にして試してみたのですが、現在では…

Realmのインスタンスを取得する前にmigrationを常に行うかどうか判定させたい

RealmはAPIが動作が軽量でシンプルで気軽に使えるといわれるAndroid用のDBの一種ですが、 まだまだMigration周りはめんどくさいようです。 Realmを使用したアプリの場合、一度インストールされたアプリ内のスキーマを変更するにはMigrationが必要になりまし…

AndroidのIntentFilterのdata要素のpathPatternの挙動について

http://developer.android.com/intl/ja/guide/topics/manifest/data-element.html data要素のURIでpathPatternの指定が出来るのですが、Patternと言いつつ、 そのパスが一致するか、*のワイルドカードを使ってその階層が入るか、くらいしか指定できず、 andr…

Androidで外部サーバからファイルをダウンロードする

通信周りでRetrofitを使っているとレスポンスがJSONばかりを想定していて、ファイルのダウンロードする場合はどうしたらいいのか、そもそも私はファイル入出力をまともに扱ったことがあったのかと、少し途方にくれてしまったのでメモ。 内容 処理の流れとク…

DIパターンとストラテジーパターンの違い

potatotipsで紹介されたKotlinのアプリのリポジトリを読んでいたら使ったことの無いlateinitというAPIが出てきて、@Injectというアノテーションがあるから、おそらくこれはDIだな、と思ったのですが、よくわからず。 いつの間にかKotlinでなくDIの勉強をして…

potatotips #26でKotlinを使っていて思っていたことについて発表してきました

potatotips #26でKotlinを使っていて思っていたことについて発表してきました。 connpass.com speakerdeck.com 発表内容について まず、自分はKotlinを選定していないし、Javaでの経験がしっかりあるわけでもないので、選定理由らしいものをそれらしく言うの…

BottomSheetを作るためのライブラリについてメモ

stackoverflow.com 現在、公式のサポートライブラリに無いマテリアルデザインのコンポーネントで、BottomSheetというものがあります。 下からすっと選択肢が出てくるシートですね。 DIalog用のActivityやFragmentをいじってごにょごにょとね...とか、時間が…

Android開発に入る前に知っておきたかったこといくつか

ぐぐっても出てき難かったし、聞くまでもないでしょ的なことなのか一通り書いてみるまで分からないことにすら気づけなくて後からひえーってなったことの覚え書き。 端っこの要素のmarginの扱いについて 時々古いAPIバージョンでダイアローグ等のレイアウトを…

AndroidのFacebook SDKでInvalid key hash

FacebookSDKを使ったアプリをリリースしたら下記のようなメッセージが出ました。 Invalid key hash. The key hash xxxxxxxxxxxxxxxxxxxxxx does not match any stored key hashes. Configure your app key hashes at http://developers.facebook.com/apps/ A…

PicassoでMediaStoreを通してローカルの画像を読み込むとサムネがおかしい

昨日のつらぽよを書き出しておきます。 コンテンツプロバイダでローカルの画像を取得してPicasso使ってギャラリーみたいなことやりたいなぁ、と思っていたら、なんとこのギャラリー、タップするたびに同じ位置に入る画像が変わるので困りました。 最初は、 s…

Android Internalsを読みました

techbooster.booth.pm こないだのコミケのテックブースターの本を3冊買っていたのですが、ようやく少し余裕が出てきたので一冊読んでました。 自分は初心者なので全体の半分でも興味があればいいかな、という感じで買っていまして、それで、自分が特に関心を…

ActionBarのUpナビゲーションとLaunchModeについて

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); 上記のようなコードで設定するActionBarのUpナビゲーションは基本的に、 <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar"> </activity>

周囲をタッチしたらEditTextのフォーカスを奪う

EditTextにフォーカス当たってても戻るキーを押したら、キーボード閉じるんですけど、ちょっと不便だわという感じなので、何も無いところというかEditText以外をタップしたらEditTextのフォーカスを奪うようにします。 ActivityでView.OnTouchListenerを実装…

launchModeをsingleTopにしておくと何が起こるか

二重Activity起動、嫌、絶対。 というとき、自分の場合は以下の二つのような場合があります。 フォームを連打したところ、その結果のActivityが何個も起動される 2つ行き来したいActivityがあって、Intentを送り合ったりしているうちに両方がずんずんどこど…

ProgressDialogの色を変えたかったのでカスタムレイアウトをDialogにぶっこむ

ProgressDialogのProgressBarの色を変えようと思ったんだけど色いじるAPI見あたらなかったので、Dailogにカスタムレイアウトを突っ込んでみた。 とりあえずDialogで書いてから、DiaogFragmentでも書いてみた。 Dialogの方 public class MainActivity extends…

java.lang.VerifyErrorで検討したこと

今日作業してたらいきなり、java.lang.VerifyErrorという聞き慣れないエラーが出てきてびびった。 眺めていたのはこの辺。 blog.livedoor.jp Android Studio 0.5.4 update causes Java.Lang.VerifyError - Stack Overflow ライブラリのバージョンが実行時と…

Androidの上とか下とかのバーについてのメモ

忘れがちなのでメモ。 http://developer.android.com/intl/ja/training/material/theme.html http://developer.android.com/intl/ja/about/versions/android-4.4.html StatusBarを半透明 -> v19から 指定を書く箇所 styles.xml -> true layout -> android:fi…

IntentServiceで動かしているバックグラウンドジョブの進捗や結果をLocalBroadCastReceiverで通知する

表題のことがやりたいぞ、というわけで下記あたりを参考に素振りしました。 Reporting Work Status | Android Developers AndroidのIntentServiceを使って非同期処理を行う方法 | TechBooster 手順 バックグラウンドジョブを実行するIntentServiceを作る Int…

build.gradleのdependenciesに追加されたライブラリのライセンス情報を出力する

どうすればいいんだーって感じで意外に詰まったのでメモ。 参考 github.com gradleでdependenciesのライセンス一覧を出力する - Olivinecafe - blog 手順 build.gradleの設定 buildscript { repositories { mavenCentral() maven { url 'https://plugins.gra…

AndroidStudioのショートカットetcを復習する

Android開発を担当するようになってから2ヶ月くらい経ちましたが、実はちょっとした検索や置換(特に検索)はAndroid Studioでなくて、Sublime Textを使用しています。 しかし、やっぱり表示されていないクラスの関数の補完やオーバーライドするメソッドの生成…

レイアウトファイルを利用してCustomViewを作る

いまさらですが、サポートライブラリの中の人から分かりやすいスライドも出ているし、CustomViewの作り方をあらためて勉強し直しました。 参考 サポート ライブラリのできるまで qiita.com qiita.com 目次 Viewを継承したクラスを作る values/attrs.xmlにカ…

応用情報受かってたとかあれこれ

応用情報受かってた。 woshidan.hatenablog.com 元々はこの辺で得た知識を確認するつもりで受けてました。 この手の資格試験には意味が無いって言いたがる人は多いけれど、知識の確認として問題集の形で答えついてまとまってるものほどお手軽なものはないの…

RxJavaのonSubscribeメソッドで指定したスレッドはどこで生成されて起動されているのか

この記事は、RxJava Advent Calendar 2015 の12月15日分の記事です。 非同期処理についてよくわからなかったため、下記の本を読んでみたところ、スレッドで処理が行われるには、 スレッドのインスタンスが生成されること そのインスタンスのstart()メソッド(…

RxJavaのmapのコードを眺めてみた

3行まとめ mapメソッドを呼び出すと新しいObservableが生成されて返ってくる*1 新しいObservableのOnSubscribe#callメソッドは、元のObservableのOnSubscribe#callメソッドに対して、新しく作ったsubscriberを与えて呼び出す、というもの 新しいsubscriberの…

FragmentPagerAdapterをおいたActivityから現在表示されているFragmentを取得したい

FragmentPagerAdapterを使って画面の一部だけを遷移させていくとき、その中の1つの画面から他のアプリ等にstartActivityForResultでIntentを飛ばして連携したい部分がありました。 FragmentにonActivityForResult()メソッドってあったかしら、というところか…

FragmentでFabricのTwitter SDKが動いていないような...

関連: Access Twitter’s REST API — Fabric Android documentation stackoverflow.com FragmentManager | Android Developers など。 もしかして、ActivityからFragmentを取得するとき、FragmentManagerにわたすリソースのidがFragmentの一番外側のレイアウ…

MavenのリポジトリやjarファイルをGradleで読み込むように指定する

参考: http://qiita.com/ryusukefuda/items/bbb25382d05cf9cb5057 感動したのでメモ。 Mavenリポジトリにある場合 なんだかgroupIdが見たことある形だし、構造が似てたので書いてみたらいけた。 <dependency> <groupId>com.facebook.android</groupId> <artifactId>facebook-android-sdk</artifactId> <version>4.8.1</version> </dependency> reposito…

RxJavaと1日悪戦苦闘したときのメモ

1日悪戦苦闘してなにかつかんだ気がしたのでメモした。12月の私にさえ読めればそれでよい...? RxAndroidはAndroidのViewのイベントに関するObservableを作ってくれる + Androidのスレッド指定に定数が便利、みたいな捉え方してる。