タグ

programmingとProgrammingに関するlarkerのブックマーク (616)

  • Ruby のココがダメ - Qiita

    タイトルは釣りです。Ruby に盲目的に惚れている迂生には Ruby の痘痕(あばた)はエクボです。 それはともかく。 メソッド名の別名がありすぎ 「あなたは map 派? それとも collect 派?」っていう問いがまず嫌い。 いや,別名にも意義があるとは思うんだけど,記憶の負担が大きい。 自分では map しか使わなくても,他人のコード読むんだったら collect を知っていなくちゃならない。 しばらく前に reduce っていうメソッド見て,そんなのあったっけ?と思ったら inject の別名だった。 map/collect と inject/reduce の名前とその背景にある発想については,Rubyist Magazine に良い記事がある: そうかと思えば,Array#delete_if と Array#reject! みたいに,働きは基的に同じだけど,削除が行われなかっ

    Ruby のココがダメ - Qiita
    larker
    larker 2015/10/28
    「nil にそんなメソッドねえよ」は確かによく見るな
  • (旧) 猫好きモバイルアプリケーション開発者記録 Androidでstatic変数が勝手にクリアされる問題と対処法

    前回、Androidでは端末のメモリが不足するとstatic変数がクリアされたり、 Activityのメンバ変数がクリアされるという問題を紹介しました。 とはいえ、Object型変数であれば常に null になることを想定しなければならないとすると毎回 null チェックをしなければならないことになり、プログラムとしてもかなり可読性が悪いばかりか、不具合発生時に不具合を見逃す可能性も高くなります。 じゃあどうすればいい?ということになりますが、具体的な対処法の前に、まずはstatic変数がクリアされる理由について詳しく紹介します。 01. 端末がメモリ不足になってアプリを再アクティブにした場合、クラスロードから再度実行される 端末がメモリ不足になると、static変数やActivityのメンバ変数がクリアされると紹介しましたが、このとき、Javaとしてどのような動きをするかというと、クラス

  • Android の static 変数はヤバい

    今まで Windows アプリケーションしか作ったことのない人(私のような)が、Android アプリケーションをつくりはじめて戸惑うところの一つに、Activity のライフサイクルがあります。今回これ関連で、 見事に static 変数でハマりましたので、メモしておきます。 Android Developper では、Activity のライフサイクルは以下の図で説明されています。 この図の説明は、日Androidの会のページ などで解説されているので、ここでは割愛しますが、ポイントなのは、 アプリケーションを終了(onDestroy)しても、プロセスは死んでいない。 という事です。static 変数でハマったと書きましたが、static 変数はプロセス毎に保持されるものですが、Windows アプリケーションでは、アプリケーションを終了して再起動すれば、static 変数も初期化さ

  • [追記あり] Android 開発で気をつけたいこと 〜変数名と Context について〜

    2016年5月27日追記 こんにちは。共同開発部 開発担当の戸澤です。 2012年に書かれた以下の記事内容に関しては、ApplicationContextの使用を推奨する点で不適切であるとご指摘をいただいています。 詳しくは http://ytrino.hatenablog.com/entry/2016/05/26/033936 をご覧ください。 誤解を招かないよう、この追記分ではみなさんのご指摘を踏まえた Context の使い方について追記しています。オリジナル記事は後半に残しています。みなさまのご指摘に感謝します。 Contextの使い方 AndroidにおけるApplicationContextとActivityContextの使い分けについてですが、 Application全体のライフサイクルでcontextに依存する必要がある処理以外は、基的にActivityContextを

    [追記あり] Android 開発で気をつけたいこと 〜変数名と Context について〜
  • Android:引数はthisか?getApplicationContextか?ActivityとApplicationの違い

    Android:引数はthisか?getApplicationContextか?ActivityとApplicationの違い AndroidにはContextを引数にとるAPIが数多く存在しています。 例えばArrayAdapterのコンストラクタArrayAdapter<T>(Context, int)があります。 このコンストラクタ。Activityで使用する場合、第一引数へはthisとしてActivityContextを指定すべきでしょうか? それともthis.getApplicationContext()としてApplicationContextを指定すべきでしょうか? ContextはAndroidアプリを作成している場合によく使用されるクラスですが、その役割や 詳細は下記のような理由から不透明な部分が多いです。 Contextがアプリケーションに関する様々な情報へのインタフェ

    Android:引数はthisか?getApplicationContextか?ActivityとApplicationの違い
  • AndroidアプリにおけるDBファイルの正しい使い方

    はじめに Androidアプリケーションを作成する上でSQLiteを使用してデータベースを扱うことは多々あります。データの永続化や検索といった処理を容易に実装することができるので、多くのアプリケーションで使用されています。しかし、AndroidにはSQLiteを使用するための方法が以下のようにいくつか用意され、それぞれファイル作成時のパーミッションの挙動が異なっています。 SQLiteDatabase#openOrCreateDatabaseを使用して作成する Context#openOrCreateDatabaseを使用して作成する SQLiteOpenHelperクラスを使用して作成する もし、開発者がこれら方法の挙動を十分に理解していない場合、知らずのうちに脆弱性を作り込んでしまいます。 実際に、いくつかのアプリケーションではSQLiteDatabase#openOrCreateDa

    AndroidアプリにおけるDBファイルの正しい使い方
  • 画面をスリープ状態にさせないためには - 逆引きAndroid入門

    android.appパッケージ - Activityクラス、 android.viewパッケージ - Windowクラス、 android.viewパッケージ - WindowManager.LayoutParamsクラスを使用します。 Activity.getWindow()などで取得したWindowインスタンスに対して、 Window.addFlags(WindowManager.LayoutParams.FLAG_FLAG_KEEP_SCREEN_ON)を呼び出すと、 画面がスリープ状態になりません 上記を解除するには、Window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) を呼び出すだけです プレインストールされているCameraアプリでも、この機能が使用されています サンプルソースコード package

  • SDカードにファイルを保存する | TechBooster

    今回は、SDカードにファイルを保存する方法を説明したいと思います。 Android端末の多くは(micro)SDカードスロットを備えており、アプリケーションから利用することができます。内蔵ストレージが少ない端末もあるため、大きいファイルはSDカードに保存したいものです。 また、SDカードに保存することで、ユーザーがパソコンを繋いでデータをコピーすることも可能になります。 SD カードを利用することは難しくないのですが注意する点が二つあります。 それを続きで説明します。 SDカードのパス SD カードのパスは端末によってことなる場合があります。私の手元の端末では /sdcard /mnt/sdcard/ の2つのパターンがありました。 もしかすると端末によってはこれ以外のパスがSDカードに割り当てられているかもしれません。また、同じ端末でもOSのアップデートによってパスが変わらないとも限りま

  • 夏の技術職インターンシップ講義資料公開 - クックパッド開発者ブログ

    こんにちは!クックパッド編集室メディア開発グループ長の @yoshiori です。 このまえ夏の技術職インターンシップの前半の開発講義・課題部分が終わったのでさっそく公開しちゃいます! ちなみにこのインターンの対象者はプログラミングはわかるし自分で(授業とかではなく)コード書いている人なので超初心者向けでは無く、少なくともひとつ以上の言語でプログラミングが出来る人向けです。 一日目 TDD + git 編(@yoshiori) 講義初日なのでまずは簡単に肩慣らし & 開発の基礎の部分として TDD と git で始めました。 git については軽く説明し TDD は基のテストファーストで進めて行きました。 ちゃんと何かをするたびにテストを実行し、メッセージを見れば次にすることが分かるというのを体験してもらい、GREEN が良くて RED が悪いのではなく、GREEN を想定しているのに

    夏の技術職インターンシップ講義資料公開 - クックパッド開発者ブログ
  • アプリケーションの設定を保存する / Getting Started | TechBooster

    Androidではアプリケーションの設定値などを簡単に保存/読込を行うSharedPreferencesという仕組みがあります。 SharedPreferencesはデータを任意のキーと保存したい値の組み合わせで保存します。 例えば、Twitterアプリで自動更新時間を3分として保存したい場合には、保存するデータを「3」、保存するデータのキー(読み出し時に使用)を「UPDATE_TIME」とし値を保存します。 SharedPreferencesを利用する際に使うクラス、メソッドは以下の通りです。 [table “146” not found /] それでは続きへどうぞ。 値を保存する手順 SharedPreferencesを使って値を保存をする手順は以下の通りです getDefaultSharedPreferencesメソッドを使ってSharedPreferencesクラスのインスタンスを

    アプリケーションの設定を保存する / Getting Started | TechBooster
  • 基本的なSharedPreferencesの使い方 - Qiita

    SharedPreferenceの基 SharedPreferencesはアプリの設定データをデバイス内に保存するための仕組み。XML形式で保存されます。 (要するにAcitivityが破棄されてもCommitさえされていれば保存されている、ということ) キー・バリュー形式で保存され、主にテキストや数値の保存を得意とします。 (Gsonを使うことで無理やり(?)オブジェクトなどのデータの保存も可能にすることができます。後半に解説) 基的には String int long float boolean を保存します。 インスタンスの取得 まずはインスタンスを取得します。 取得には Context#getSharedPreferences()メソッドを用います。

    基本的なSharedPreferencesの使い方 - Qiita
  • FragmentとActivity - Qiita

    Fragmentの置き換えとか 基的なところ Activity内でFragmentを切り替えて画面遷移を表現するというのはよくある。Fragmentを差し替えるには次の2つのヘルパークラスを使用する。 FragmentManager FragmentTransaction FragmentManager先輩はいつでもあなたのそばに居てくれてるので、getFragmentManager()で呼び出して、beginTransaction()でおもむろにトランザクションを開始する。トランザクションと呼ぶくらいなので始まってからコミットするまでにやりたいことを書く。 import android.app.FragmentManager; import android.app.FragmentTransaction; ... FragmentManager fragmentManager = ge

    FragmentとActivity - Qiita
  • コードの品質を維持したまま開発スピードを上げる | POSTD

    高品質のコードベースは、反復作業やコラボレーション、メンテナンスを簡単にすることで、長期的な開発のスピードを上げてくれます。Quoraではベースコードの品質は重要だと考えます。 高品質のコードを維持することは利点がありますが、その反面かなりのオーバーヘッドが発生し、実際の開発のサイクルに時間が掛かってしまいます。このオーバーヘッドと利点の折り合いを付けるのは難しい問題です。この場合、2つの選択肢しかないように思えます。低品質でコードスピードが速いか、もしくは高品質でスピードが遅いか。スタートアップは素早い開発サイクルに最適化しているので、多くの人は低品質で進めたほうがいいと思っています。 このジレンマは解消できます。ツールやプロセスを工夫することで、コードベースの品質を維持したままスピードを速めることができるのです。この投稿では、コードの品質に関しての私たちの考えや、2つの世界を共存させる

    コードの品質を維持したまま開発スピードを上げる | POSTD
  • Rails で fat model を避けるための、あまり知られていない方法について - おもしろwebサービス開発日記

    このエントリで書いた内容は、ほぼ Growing Rails Applications in Practice の内容が元になっています。英語ですが、ここで挙げた内容以外にもコードを綺麗に保つテクニックが書かれており、かつページ数も少なく読みやすいです。コードを綺麗に保つのが好きな方は一読してみることをおすすめします。 はじめに Rails で fat model を避けるための方法は、7 Patterns to Refactor Fat ActiveRecord Models を始めとして、多くのやり方が存在します*1。 validation や callback は ActiveRecord(以下AR) を継承せずとも利用することができます。7 Patterns to Refactor Fat ActiveRecord Models の 「3. Extract Form Objects

    Rails で fat model を避けるための、あまり知られていない方法について - おもしろwebサービス開発日記
  • Android Wear に Notification で出来ること

    参考 Adding Wearable Features to Notifications Creating a Notification Receiving Voice Input in a Notification Adding Pages to a Notification Stacking Notifications 概要 スマホと Wear が接続されていると、Notification が Wear にも表示(同期)される。 Wear では通知はカードとして表示され、このカードが表示されるところを context stream という。 これまでの通知でももちろん Wear に表示されるが、Wear 用に Notification を拡張することができる。 Notification を作る Notification の作成には NotificationCompat.Builder

    Android Wear に Notification で出来ること
    larker
    larker 2015/08/18
    notificationからWearアプリの起動
  • Androidの非同期処理まとめ - うさがにっき

    概要 以下3種類のAndroidの非同期処理についてまとめる Handler AsyncTask AsyncTaskLoader 詳細 Handler Androidではメインスレッド以外からUIを書き換えようとしたら例外が発生する そのため、別スレッドからUI(メイン)スレッドを書き換えたいときの処理をLooperというQueueにためて、順番に処理していく機構をHandlerという 基的な使い方 public static class PlaceholderFragment extends Fragment { private Handler handler = new Handler(); public PlaceholderFragment() { } @Override public View onCreateView(LayoutInflater inflater, View

    Androidの非同期処理まとめ - うさがにっき
  • throw Life - AndroidのHandlerとは何か?

    AndroidでWeb APIを使う場合、マルチスレッドによるユーザビリティ向上を以前のエントリで説明しました。 AndroidアプリのUIはシングル・スレッド モデルです。 単純にマルチスレッドにしてUIの操作をしてしまうと、CalledFromWrongThreadExceptionでアプリがダウンしてしまいます。 これを回避する仕組みがHandlerです。 Handlerの仕組みを簡単に説明しようと思ったのですが、 またもや長くなってしまったので、先にまとめます。 AndroidUI操作はシングル・スレッド モデル ユーザビリティ向上の為にはマルチスレッドが必要 Handlerで実現 Handlerを使わない場合に起きる例外は実行スレッドのチェックで発生 Handlerを使うと、UI Threadの持つキューにジョブを登録できる キューはUI Threadにより実行される

  • スレッドから値を返すには

    @ITの スレッドの戻り値の取り方についてより。 スレッドでの処理は何かと面倒が多いのですが、結果を返すというのもかなり面倒な処理です。スレッドを扱う上で難しいのは、複数スレッドから操作されるデータの扱い、つまり同期の問題と、複数スレッドの協調動作の扱いです。 データの同期も、スレッドの協調動作も、同じsynchronized キーワードを利用するのですが、だからこそ逆に使い分けが混乱しがちなのではないでしょうか。 このあたりは詳しく掘り下げると分量が多くなるので、とりあえずスレッドからの結果取得のサンプルです。 public class ThreadTest extends Thread { /** 同期用オブジェクト */ private Object lock = new Object(); /** 処理完了フラグ */ private boolean flag; /** retur

  • 別スレッドで位置情報を取得する:Android GPS Looper

    package com.example.gpsintent2; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.app.Activity; import android.content.Context; import android.util.Log; import android.widget.TextView; public class MainActivity extends Activity { private M

  • 書籍転載:Ruby on Rails 4アプリケーションプログラミング

    コーナーは、技術評論社発行の書籍『Ruby on Rails 4アプリケーションプログラミング』の中から、特にBuild Insiderの読者に有用だと考えられる項目を編集部が選び、同社の許可を得て転載したものです。 『Ruby on Rails 4アプリケーションプログラミング』の詳細や購入は技術評論社のサイトをご覧ください。 MVCフレームワークとして人気のあるRuby on Railsは,Rubyを活用してREST原則に基づくWebアプリケーションを手軽に開発できる点が大きな特徴です。書では,最新のRuby on Rails 4を対象に,Ruby on Railsの基から,MVCモデルに則ったWebアプリ開発,ルーティングやテストの方法のほか,クライアントサイド開発としてAsset PipelineやCoffeeScript,SCSS,Ajaxなどの最新技術も網羅します。また,

    書籍転載:Ruby on Rails 4アプリケーションプログラミング