AndroidでKotlinのCoroutineを使うときの注意です。CoroutineDispatcherの選択を誤ると意図しない結果になります。 環境はkotlinx-coroutines-android:0.16になります。 非同期処理をCoroutineで実現する場合、以下のようなCommonPoolを使ったサンプルが多いと思いますが、これではジョブをキャンセルした場合にasync内の処理がキャンセルされません。 では、違う方法にします。先程CommpnPoolを渡してた場所をcontextを渡すようにします。contextを指定し場合は親のジョブの子のような扱いになり、ジョブをキャンセルしたときに子もキャンセルされます。
Kotlin — A deeper look – Hacker Noon より この図分かり易いと思ってディスプレイに貼ってる。 この図↓も貼ることにした。(2017/10/05追記) データクラスの話/スコープ関数の話 #rkt - Speaker Deck より とてもわかりやすい! この図↓も追加(2018/7/25追記) Kotlin Demystified: What are 'scope functions' and why are they special? より 以下は自分用の調べたり人から聞いたりしたことのだらだらめも let run apply with also let public inline fun <T, R> T.let(block: (T) -> R): R = block(this) 最後の値が戻り値になる 自身がクロージャの引数になる nullable
Android Architecture Components にある ProcessLifecycleOwner というのを使うとアプリのバックグラウンド移行とフォアグラウンド復帰を簡単に検知することができます。 環境Android Studio 3.0 RCbuild.gradle必要なものを入れておきます。 implementation “android.arch.lifecycle:extensions:1.0.0-beta2”LifecycleObserver各イベントを受け取るための LifecycleObserver の実装クラスを作ります。 ApplicationApplicationを継承したクラスで、 ProcessLifecycleOwnerに先程作ったクラスをaddObserverで追加してあげるだけです。(AndroidManifestは省略) 実行あとは実行する
マイクロソフトが発表した「Visual Studio Live Share」は、無料のVSCodeを含むVisual Studioファミリー製品のあいだで、リアルタイムにコードの編集やデバッグなどを共有できる新機能だ。 マイクロソフトは11月16日(現地時間)、ニューヨークでオンラインイベント「Microsoft Connect(); 2017」を開催しました。 基調講演で同社は、統合開発環境のVisual StudioやコードエディタのVisual Studio Code(以下、VSCode)などで、リアルタイムにコードの編集作業やブレークポイントの設定、ステップ動作などのデバッグ作業などを共有し、共同で作業できる新機能「Visual Studio Live Share」を発表しました。 デモ:Visual StudioからVSCodeへ接続 以下は「Visual Studio Live
最初にいっておく。これは負け惜しみだ。 SPAとPWAの現状 自分は日本でReactの勝手エヴァンジェリストみたいなことをやっていて、SPAの重めのコンテンツをよく作ってるからか、「お前らフロントエンドを物事をややこしくして、重いページを量産してウェブを劣化させてるじゃないか!」みたいな批判を、名指しでよく受ける。なんで僕にいうかわからないけど、React = SPA みたいなイメージでスケープゴートにされてるんだろう。それはまあいい。 自分の仕事でSPA技術を使うところは、ちゃんと必要性もあるし理由も説明できる。ただ、やはり近年の複雑化/重量化について思うところはあるので、逆に振って AMP/PWA という選択肢を持っておきたくて、正直言うと依頼されたR&Dの仕事でもあったんだけど、一通り覚えた。なんだけど、今のところ仕事で使うタイミングがない。 PWA技術を仕事で使えなかった理由として
PRPL パターンを使用して即時読み込みを適用する コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。 PRPL は、ウェブページの読み込みとインタラクティブ化を高速化するために使用されるパターンを記述する頭字語です。 遅れて検出されたリソースをプリロードします。 できるだけ早く初期ルートをレンダリングします。 残りのアセットを事前キャッシュに保存します。 他のルートやクリティカルでないアセットを遅延読み込みします。 このガイドでは、これらの手法がどのように連携し、独立して使用してパフォーマンスを向上させるかについて説明します。 Lighthouse でページを監査する Lighthouse を実行して、PRPL 手法に沿った改善の機会を特定します。 Ctrl+Shift+J(Mac の場合は Command+Option+J)キーを押して DevTools
Service Workerとは ブラウザが Web ページとは別にバックグラウンドで実行するスクリプト オフラインのアプリを実現・サポートするために作られたものです ちなみに、ブラウザの対応状況はこんな感じ http://caniuse.com/#search=service%20workers 特徴 DOM にアクセスできない DOM を操作したい場合は、Service Worker がコントロールしているページ(js)と postMessage でメッセージのやり取りをして行う リクエストをプロキシすることが可能 Service Worker はブラウザが必要に応じて起動・終了するので、変数の値を保持しておけない Cache、IndexedDB 等で値を保存して、必要になった時に取り出すようにする Promise を多用する https か localhost 上でしか動作しない ラ
onMessageReceived()が呼び出されない問題 FireBaseコンソールのNotificationsからメッセージを送信すると、アプリがバックグランドの場合、FirebaseMessagingServiceを継承したクラスのonMessageReceived()が呼び出されずに、自動的にステータスバーに通知が表示されます。 この仕様はFCMのドキュメントにも記載されています。 アプリがバックグラウンドで動作しているとき、Android ではシステムトレイに通知メッセージが送られます。ユーザーが通知をタップすると、デフォルトでアプリ ランチャーが開きます。 通知とデータ ペイロードの両方を含むメッセージ(および Notifications コンソールから送信されたすべてのメッセージ)がここに含まれます。通知は端末の通知領域(システムトレイ)に配信され、データ ペイロードはランチ
絵文字を扱う上で知っておくと良いかもしれないことをまとめてみました。 Ruiさんの記事を見て、「EmojiはSurrogate Pair以外にも、色々とおもしろい技術があるんですよ〜」思って書いてみました。 なお、書いた人はAndroidの人間なので、特に表記していない場合は主にAndroid上での動作のことを書いてます。 またQiita初めてなので読みにくい部分等がありましてもご容赦ください。 サロゲートペア(Surrogate Pairs) このエントリーを書くきっかけにもなったサロゲートペア。なぜこれが導入されたかの経緯は、Ruiさんのブログエントリーに譲るとして、技術的な解説をします。 サロゲートペアは、U+0000..U+FFFFに収まりきらなかった範囲のUnicodeコードポイント(U+10000..U+10FFFF)を、なんとか16bitでエンコードしようとして導入されました
Introduction SNSの情報発信源として強い影響力を持つ人をインフルエンサー(influencer)と呼ぶ。日本でツイッター投稿が盛り上がった10月の衆院選を分析すると、選挙のインフルエンサーの意外な姿が浮かび上がった。 データ出所:NTTデータ。リツイート含む。年代はNTTデータが推定した もっとも注目されたTweetは トランプ氏の4倍衆院選期間中の「選挙」にかかわるつぶやきをリツイート数の多い順にランク付けしたところ、トップ5はすべて4万を超え、最も多いもので9万近くに上った(10月下旬)。頻繁なツイッター発信で知られるアメリカのトランプ大統領でも、11月の来日時のつぶやきでみればリツイート数は多くて2万台。ランキング上位のつぶやきはトランプ氏の倍以上の影響力があったことになる。上位に並んだのは、投票を呼びかける前向きなつぶやきだ。 RANK Tweet DATE RT 1
本日、偶然、京王線の新5000系の車両の特急に乗る機会がありました。夜間は有料指定席の特急になるというものです。 ところで、車内を見回したところ、わかりにくい所に防犯カメラが設置されていることに気が付きました。車両中央部分の天井に二つあるモニター画面の中間です。 ところで、防犯カメラはあるものの、その周囲に「防犯カメラ作動中」という趣旨の表示がないことが疑問でした。(なお、京王電鉄のサイトによると、1車両に4か所防犯カメラがあり、その表示ステッカーがあるとされています。) この点、防犯カメラについては、個人情報保護法18条4条4項によるところですが、個人情報保護委員会の個人情報保護法ガイドラインQ&Aは、A1‐11でつぎのように規定しています。 『(略)防犯カメラが作動中であることを店舗の入口に掲示する等、本人に対して自身の個人情報が取得されていることを認識させるための措置を講ずることが望
ニュースサイト「Mogura VR」は11月13日、スパイシーソフトが保有していた「MoguraVR」の商標について、特許庁に無効審判請求を行い、受理されたと発表しました。スパイシーソフトは「VR Inside」というVRニュースサイトを運営しており「MoguraVR」とは競合関係にあったことから、「いくらなんでもいろんな意味でダメだろう」「どんな判断でこんなバカなことやってしまったんだろう」など批判の声があがっています。 スパイシーソフトが取得していた「MoguraVR」の商標 「Mogura VR」はVR関連情報を専門に扱うニュースサイトで、Mogura社が運営。スタートは2015年2月と、国内のVRニュースサイトとしてはかなり早い段階からオープンしていました(国内初は「PANORA VR」の2014年11月)。一方「VR Inside」は2016年3月オープンと、VR情報サイトとして
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く