ワシはワシが育てる

週刊少年ジャンプと任天堂のゲームが三度のメシより好きです。

iOSでページバック時にアニメーションがカクつくときの対処法

View構造が複雑なページでBackボタンや「popViewControllerAnimated」を呼び出した時にアニメーションがカクつく事があります。 対処法は簡単でviewWillDisappearに以下の二行を追加するだけです。 - (void)viewWillDisappear:(BOOL)animated { [super viewW…

普通のCSSボタンとinputボタンのサイズを揃える方法

input type="submit" value="hoge"のようなinputボタンと普通にCSSでスタイリングしたボタンのサイズが合わなかった時のメモ。 inputにはデフォルトで値が設定されているので、それらを解除します。 解除が必要なプロパティは以下のものがあります。 border …

iOSでアプリの許可情報をリセットする方法

iOS

連絡先などの許可状態に合わせて画面を切り替えたいような場合、一度許可・不許可を設定してしまうと、「まだ設定されていない状態」に戻す方法がないかと調べたのでメモ。 アプリをアンインストールするだけだと、設定されていない状態に戻すことが出来ませ…

EventBusを使ってAndroidでNSNotification的なものを実装する

iOS開発を2ヶ月ほど行った後、再びAndroidに戻ったのですが、NSNotification(クラスをまたいだ通知)をAndroidで実装するのがデフォルトのままだと面倒だなーと感じていました。 そこでライブラリを探したところ、EventBusが非常に便利だったので紹介します。…

GridViewにfooterViewをつけてローディングを表示する

Androidで無限スクロールする場合、追加読み込み発生時にProgressBarをfooterViewに付与するのが通常ですが、通常のGridViewにはfooterViewをつけることができません。 そこでfooterViewをつけられるカスタムのGridViewがオープンソースとしていくつか出てい…

AndroidでViewの移動アニメーションを行う

AndroidのAnimationにはいくつかの種類があり、Viewの座標を移動するためのものとしてTranslateAnimationが存在します。 しかしこのアニメーションにはバグがあるようで、アニメーションの終了後に初期状態の座標に戻されてしまいます。 そのため個人的には…

Railsで静的ファイルをS3に置くならasset_syncがオススメ

RailsのアプリケーションでprecompileしたassetファイルをAmazon S3から読み込みたい、という時にはasset_syncというgemがオススメです。 asset_syncの設定後、precompileをすると対象のS3バケットにCSSや画像などの静的ファイルが自動でアップロードされ、…

AppCodeでlinker command failedが出た場合の対処法

iOS開発でのコーディングにはXcodeではなくAppCodeを使用しておりますが、しばしば「linker command failed」のエラーに悩まされています。 cocoapodsの依存ライブラリが存在しないよというエラーなのですが、ほとんどの場合キャッシュやプロジェクトファイ…

Rails4.2にあげるとローカルIPでアクセスできない問題

Rails4.2にバージョンアップ後、いつも通り起動しローカルIPを通じてスマホからアクセスしようとしたところつながらない状況に。 Railsのバージョンアップが原因だとほぼ特定していたのでRelease Noteを見ると、Rackの変更によって、デフォルトではlocalhost…

Unicorn+NginxでリバースプロキシしたときにFacebookのOAuthでつまづいた

RailsアプリをUnicornで動かし、Nginxをリバースプロキシとして前面に置く構成。 その際にFacebookのOAuthを利用すると「指定されたURLは、アプリケーションの設定で許可されていません。」というエラーメッセージが表示されてしまいました。 原因はリバース…

UIActionSheetのキャンセルボタンが効かなくなる問題の対処法

iOS8 SDKを使用しているとiOS7でキャンセルボタンが効かなくなることがあるようで、開発中のアプリで実際に何度か遭遇しました。ちなみに毎回発生するわけではありません。 対処法はUIActionSheetのshowInViewの対象をviewからview.windowに変更するだけです…

iOSをほぼ1ヶ月毎日やりつづけた感想(AndroidやJSとの比較とか)

先月からiOSを始めてほぼ1ヶ月毎日続けた感想です。 まだ不慣れなところも多く未熟な意見なので参考程度に捉えてください。 Objective-Cは割りとすぐ慣れた 初めは妙な型名とかメソッドの書き方とか、iOSの長ったらしい構文に強い先入観がありましたが、案外…

RubyMineが最強すぎて感動する

最近Qiita界隈でRubyMine特集がされていたこともあって、RubyMine使ってみたら最強すぎて感動しました。 理由は色々ありますが書くのが面倒なので箇条書きにします。 補完が想像以上に強力 gemでも、環境依存ファイルの定数でも補完してくれます エディタが…

Railsのafter_commitでcreateやupdateなどを判別する

sidekiqで非同期に通知を送るときにハマったこととその対処法 - ワシはワシが育てる 上の記事でも触れていたことですが、after_commit時のレコードからcreate,update,destroyなどのアクションを判別する正規の方法を見つけたので書きます。 以前の記事を書い…

アクションバーのカスタムレイアウトで余白を付ける

アクションバーのアイテムにカスタムレイアウトを設定するには以下のようにします。 <item android:actionLayout="@layout/hoge" /> ところがカスタムレイアウトは、素の状態では他のアイコンと並べると余白がなく窮屈になってしまいます。 原因はアクションバーのアイテムは32dpまでしか描画範囲しかない</item>…

AndroidのGoogle AnalyticsでFragmentのトラッキングをする

FragmentManagerを用いてFragmentの再利用時にも適用できるように、onStartをオーバーライドするのが通例なようです。 @Override public void onStart() { super.onStart(); tracker.set(Fields.SCREEN_NAME, "フラグメント名"); tracker.send(MapBuilder.cr…

初めてDrawerLayoutを使った時のメモ(メニューの動的切り替えなど)

巷でハンバーガーアイコンと呼ばれるDrawerLayoutを初めて使った際に生じた問題の解決法についてまとめてみました。 Fragmentによるページの挿入 FragmentTransactionを利用します。 例えばidがhogeのViewに対してFugaFragmentのFragmentを挿入する場合は以…

PagerSlidingTabStripをカスタマイズする

AndroidアプリでタブのインジケータとViewPagerのスワイプを同期できるPagerSlidingTabStripをカスタマイズした時のメモ。 Githubのスター数や使用実績を見ても完成されたライブラリかと思いましたが、いくつかこちらの要件に沿わない箇所がありました。 ま…

Android実機のSharedPreferencesを編集する

ターミナルで「adb shell」を入力し、「run-as パッケージ名」から「shared_pref」フォルダに入り、対象のファイルをコマンドで操作する。

Android StudioのBuild Variantsで別のアプリをインストールする

build.gradeのandroid→buildTypesにてビルド環境を定義します。 デバッグ時とプロダクション時で別のアプリを保持する場合には以下のようにパッケージ名のsuffixを追加します。 android { buildTypes { debug { applicationIdSuffix ".debug" } } またアプリ…

Google I/O2014のAndroidアプリで学習する

Android系のプロジェクトはこれまでやってきたRubyやJavaScriptと比較するとオープンソースが活発ではなく、規模感とクオリティの高いプロジェクトを見られる機会が少なく感じます。 実装の作法は自分で一から構築するよりも高度なプロジェクトを真似したほ…

Androidの新UI・Recyclerviewを使う

Android Lのdeveloper previewで公開されているRecyclerViewですが、ライブラリを追加すれば既存のバージョンでも使用できます。 名前の通りViewのリサイクルができることが売りで、ViewHolderをデフォルトでサポートしたりとよりパフォーマンスを意識した作…

いつの間にかはてブのホットトピックとgunosyに載ったらしい

アクセス解析見ると局所的に妙に伸びていて、どうやらはてブのホットトピックとgunosyに載ったみたいです。 いずれのサービスもユーザーとして傍観していると掲載されているサイトは羨ましいなーと思っていたのですが、いざ自分がそうなってみると一時的にア…

AndroidでアクションバーのSearchViewを画面一杯に表示する

アクションバーのSearchViewを横幅一杯に表示したい場合、itemにカスタムレイアウトを設定する必要があります。 スマホで見た場合は単にレイアウトでlayout_width=match_parentを指定すれば問題ありませんが、タブレットで見ると横幅一杯になりません。 どう…

Android Studioショートカットメモ

最近Android開発を業務で行うようになり、Android Studioとにらめっこする毎日なので便利なショートカットを備忘録がてらメモ。 ファイル名で検索&移動…Command + Shift + o クラス名で検索&移動…Command+o コマンドを検索&実行…Command + Shift + a 単語補…

sidekiqで非同期に通知を送るときにハマったこととその対処法

Railsの非同期処理で最も人気のあるライブラリの一つであるSidekiqでハマったこととその対処法について。 とあるテーブルのレコードが保存されたタイミング(after_createなど)でobserverがそれを拾い、sidekiqに通知タスクを投げた際、sidekiqがそんなレコー…

middlemanの画像URLの参照に盛大にハマる

静的サイト生成に大いに貢献してくれるmiddlemanですが、CSSのimage-urlで盛大にハマったのでメモ。 buildする際、assetファイルにhashをつけるとCSSのimage-urlがおかしな場所を参照するという事態に。 // middlemanでの記述 .hoge { background: image-url…

マリオカート8購入した

誰に対して需要があるのか全く不明ですが、マリオカート8を早速ダウンロードしてプレイしています。 秒間60fpsのヌルヌル操作に美麗なグラフィック、ネットワーク環境も良しとあって非常に楽しいです。 やはり任天堂の大作タイトルは安定した面白さがありま…

Railsのbefore_saveで値にfalseを設定する時の注意

モデルのbefore_saveで特定のカラムの状況に応じて、booleanの値を設定したい場合、値にfalseを設定してメソッドを終了すると、save自体がエラーなってしまいます。 before_save :hoge def hoge if self.value == 1 self.boolean_data = false end end 上の…

marvericksにすぐメモリを持っていかれる

起動した時点でメモリを6GBほどもっていかれることもままある、メモリバカ食いのmarvericksですが、ある日メモリがみるみる減り、アプリケーションを軒並み閉じてもあまりメモリが開放されず、アクティビティモニタを見るとこんな具合に。 どうもmarvericks…