ブックマーク / qiita.com (423)

  • Android Architecture Components 初級 ( MVVM + LiveData + Coroutines 編 ) - Qiita

    Android Architecture Components 初級 ( MVVM + LiveData + Coroutines 編 )AndroidKotlinAndroidStudiocoroutinearchitecture-components MVVM + LiveData + Coroutines入門 最近の主流の流れに沿い、記事 + ソースをアップデート(Kotlin化、Android XやCoroutinesや古い部分のアップデート)しました!(2020/07/16) MVVM( Model-View-ViewModel )設計 まず、MVVM(Model-View-ViewModel)設計とはなんだ、と。 私みたいなMVC( Model-View-Controller )のWebフレームワークしか触ったことのなかった人間は、某カンファレンスでこの設計について熱弁する方々

    Android Architecture Components 初級 ( MVVM + LiveData + Coroutines 編 ) - Qiita
    bouzuya
    bouzuya 2019/07/20
    Retrofit / Repository / ViewModel / LiveData
  • AndroidのListViewやRecyclerViewの、ViewHolderやDataBindingを調べた記録 - Qiita

    AndroidのListViewやRecyclerViewの、ViewHolderやDataBindingを調べた記録AndroidKotlin AndroidのListViewやRecyclerViewで、ViewHolderやDataBindingを調べて一回混乱しつつも腑に落ちる所まで来たので、纏めておきます。 1週間前の自分に伝えたいこと ListViewのAdapterに出てくるViewHolderと、RecyclerViewのAdapterに出てくるViewHolderは、似てるけど違うもの ListViewの方は、こうやった方が高速だよというパターン RecyclerViewの方は、親クラスが用意されている実装 いきなりDataBindingをやろうとしてソースを検索すると混乱するから、順番を追っていこう 素のListView ↑+ViewHolder ↑+DataBindi

    AndroidのListViewやRecyclerViewの、ViewHolderやDataBindingを調べた記録 - Qiita
    bouzuya
    bouzuya 2019/07/19
  • Kotlin Coroutines Flow + LiveData + Two-way Data Binding - Qiita

    Kotlin Coroutines 1.2.0からFlowというCold Streamを実現する仕組みが導入されました。これまではChannelというHot Streamの仕組みがあったのでRxにだいぶ近づいてきた感じがあります。 この記事では、FlowとLiveData、双方向データバインディングを使っていい感じにUIのイベントを処理してみます。 LiveData as Flow まずは、LiveDataにセットされた値をFlowとして扱うための拡張関数を作ります。Channelを作るときはchannelやproduceといったChannel Builderで作っていましたが、FlowではflowやflowViaChannelというFlow Builderが用意されています。 flowではFlowに値を流す処理emitがsuspend関数になっており、ObserverのonChanged

    Kotlin Coroutines Flow + LiveData + Two-way Data Binding - Qiita
    bouzuya
    bouzuya 2019/07/15
  • 広告IDを使っている覚えがないのにGoogle Playからポリシー違反を通告されたけどFirebaseのせいだった

    近年のGoogle Play運営は、審査こそないものの怪しいアプリをストアから削除する運用が進んでいます。大昔に作ったアプリがいつの間にか公開停止になっていた、なんてことも増えてきました。 さて今回は、Google Playからポリシー違反の連絡が来たけれども、心当たりがなかったので調べてみたら面倒くさい対応を回避できた、というお話です。 3行で プライバシーポリシーを置かないままストアにリリースしたアプリでデフォルトのままFirebaseを使っていると運営に刺されます プライバシーポリシーを置くか、Firebaseが広告IDを取得するのをやめさせる必要があります AndroidManifest.xmlにオプションを指定すると広告IDの取得をやめさせられます(この記事で当に伝えたいこと) 事の発端 Google Playの運営から、こんなメールが届きました。 要約すると お前のアプリでは

    広告IDを使っている覚えがないのにGoogle Playからポリシー違反を通告されたけどFirebaseのせいだった
    bouzuya
    bouzuya 2019/07/08
  • 「998244353 で割ったあまり」の求め方を総特集! 〜 逆元から離散対数まで 〜 - Qiita

    1. なぜ 998244353 で割るのか? 最初はこのような設問を見るとぎょっとしてしまいますが、実はとても自然な問題設定です。 $998244353$ で割らないと、答えの桁数がとてつもなく大きくなってしまうことがあります。このとき以下のような問題が生じます: 多倍長整数がサポートされている言語とされていない言語とで有利不利が生じる 10000 桁にも及ぶような巨大な整数を扱うとなると計算時間が膨大にかかってしまう 1 番目の事情はプログラミングコンテストに特有のものと思えなくもないですが、2 番目の事情は切実です。整数の足し算や掛け算などを実施するとき、桁数があまりにも大きくなると桁数に応じた計算時間がかかってしまいます。実用的にもそのような巨大な整数を扱うときは、いくつかの素数で割ったあまりを計算しておいて、最後に中国剰余定理を適用して復元することも多いです。 なぜ 9982443

    「998244353 で割ったあまり」の求め方を総特集! 〜 逆元から離散対数まで 〜 - Qiita
    bouzuya
    bouzuya 2019/07/04
  • PureScriptでNodeのrl.questionを使う - Qiita

    前置き NodeAPIのドキュメント (https://nodejs.org/api/readline.html) を参考にしつつ、Readlineの一部の機能をPureScriptで動かしてみます。 PureScriptからNodeのAPIを使うためのラッパーは既に用意されています。 (レポジトリ: https://github.com/purescript-node) この中のpurescript-node-readlineというパッケージを使ってみます。 目標は以下の処理をPureScriptで書くことです。 (NodeAPIのドキュメントから引用しています。) const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: proces

    PureScriptでNodeのrl.questionを使う - Qiita
    bouzuya
    bouzuya 2019/04/26
  • PureScriptのTheseとネスト化Either - Qiita

    簡単にはa かつ bを表す。 レコードがあるので、パフォーマンス的な意味でもあまり使い道は無いはず。 敢えてTupleを使いたいという場面は限られてきそう。

    PureScriptのTheseとネスト化Either - Qiita
    bouzuya
    bouzuya 2019/04/25
  • ITP2.1対策 Safari 12.1 でCookieの有効期限を8日以上に延長する方法 - Qiita

    ※クライアントサイド = Javascriptのdocument.cookieで作成。 ※サーバーサイド = レスポンスヘッダーのSet-Cookieで作成。 ※いずれも、HttpOnlyフラグ無し、Secureフラグ無し。 この結果は、先の公式ブログで言及されていたとおりの挙動です。 クライアントサイド(Javascript)で作成したCookieのみ、有効期限が最大で7日に制限されています。 サーバーサイド(Set-Cookie)で作成されるCookieは制限を受けません。 参考画像: Safari 12.1 Beta3 でBingのCookieを表示。 Javascriptが作成したCookie "SRCHHPGUSR" の有効期限は、表示日時から7日後に制限されている。 その他のサーバーサイドCookieは有効期限の制限を受けない。 ITP2.1の影響 ITP2.1が来ターゲット

    ITP2.1対策 Safari 12.1 でCookieの有効期限を8日以上に延長する方法 - Qiita
    bouzuya
    bouzuya 2019/04/23
  • typelessというReact向け状態管理ライブラリがめっちゃいい - Qiita

    typelessというreactの状態管理ライブラリが非常に良いので紹介します 2019/10/24: 入門記事 書きました What is typeless? react+typescriptで使う前提のreduxラッパーライブラリ。reduxが抱える以下のような課題を解決する 異常に多いボイラープレートコード 重複した型注釈 大量の依存ライブラリ 欠如したコーディングガイドライン これらの課題を踏まえて以下のコンセプトでデザインしている TypeScriptフレンドリー 実用に耐えうる機能を全て内包する 容易なモジュール追加 多くのユースケースに対する解決策をデフォルトで提供 *参考: https://typeless.js.org/introduction/motivation reduxの抱える課題について ドキュメントのmotivationの項で書かれていることは多くの人が課題を

    typelessというReact向け状態管理ライブラリがめっちゃいい - Qiita
    bouzuya
    bouzuya 2019/04/05
  • TypeScript v3.4.0-rc 変更点 - Qiita

    こんにちはメルペイ社な@vvakameです。 TypeScript 3.4 RCがアナウンスされました。 What's new in TypeScriptは消滅したようです。 Roadmapはこちら。 v3.4.0での破壊的変更はこちら。 今回から進捗管理の方法に変化があるようですね。 外部から変更を後追いしやすくなった印象です。 TypeScript 3.4 Iteration Plan TypeScript Roadmap: January - June 2019 とかがあります。 かなりボリュームがあるので逐次追うのはかなりMPが必要そうですね…。 この辺に僕が試した時のコードを投げてあります。 変更点まとめ --incremental の追加 --incremental builds with .tsbuildinfo files --watch と違ってプロセスを跨いで(cold

    TypeScript v3.4.0-rc 変更点 - Qiita
    bouzuya
    bouzuya 2019/03/20
  • IPFS(The InterPlanetary File System)まとめ - Qiita

    公式サイトの動画を見るのが、わかりやすいです。 IPFSの概要 P2Pなファイルシステム P2P上にWebサイトを置いたりできる サーバがダウンしたり、消されたりしない 感想 大雑把な概要: P2P上に作るファイルシステムでP2PなWebが作れたりするもの 公式サイトのミラー、IPFSバージョンを見てみたが、数秒で表示される。思ったより早い 公式のIPFS上のミラーサイト: gateway.ipfs.io/ipfs/QmUwysxnfccA1mArjkzTxPRhMnJuLvA6CqgzAPJt9cwMsc/ 作者自体がクレイジーと言うとおり、結構クレイジーなプロジェクト Filecoinと相互互換的で、インセンティブのあるシステムを作れる? IPFSが利用されているサービス・プロダクト Web作成サイトのNeoCitiesが、IPFSを利用 公式サイト: Neocities: Creat

    IPFS(The InterPlanetary File System)まとめ - Qiita
    bouzuya
    bouzuya 2019/03/19
  • TypeScript でも Nominal Typing がしたい - Qiita

    RawPassword と HashedPassword 例えば Web アプリを作っているなかで、一言「パスワード」と言っても生のパスワードもあればハッシュ化されたものもある。 名前とかに気をつけて実装していれば、そこを取り違える危険はほとんど無いとはいえど、安易に password とか命名しちゃって「あれ?どっちだっけ?」って迷う事は良くあると思う。 そういった間違いをなくすために type alias 機能を使って RawPassword と HashedPassword を作ってみようと思う。 type RawPassword = string; type HashedPassword = string; type Password = RawPassword | HashedPassword; RawPassword も HashedPassword もどちらも string

    TypeScript でも Nominal Typing がしたい - Qiita
    bouzuya
    bouzuya 2019/03/12
  • JavaScriptの関数名の全て - Qiita

    JavaScriptに限った話ではありませんが、関数というのは名前を持っていたり持っていなかったりします。関数名は普通はプログラムの読みやすさくらいにしか影響しませんが、JavaScriptでは必ずしもそうではありません。 例えばReactで関数コンポーネントを使う場合は関数名がコンポーネント名となり、React用開発者ツールなどで見ることができデバッグに役立ちます。また、Gulp v4もエクスポートした関数名がタスク名となります。 関数名は、関数オブジェクトのnameプロパティで取得できます。 function foo() { console.log('foo!'); } console.log(foo.name); // "foo"

    JavaScriptの関数名の全て - Qiita
    bouzuya
    bouzuya 2019/03/11
  • トークンを利用した認証・認可 API を実装するとき Authorization: Bearer ヘッダを使っていいのか調べた - Qiita

    トークンを利用した認証・認可 API を実装するとき Authorization: Bearer ヘッダを使っていいのか調べたAPIOAuthWeb TL;DR HTTP でトークンを利用した認証・認可をする手法として RFC 6750 がある OAuth に限らず、トークンを利用して認証・認可する機構の一部として Authorization: Bearer ヘッダを使うことができる 使い方について詳しくはこの記事の下のほうに書いた 要求 トークンを利用した認証・認可機構を持つ API を作りたい クライアントがトークンを HTTP リクエストに含めて送信し、サーバはトークンを検証してリソースへのアクセスを許可したい Authorization: Bearer トークン ヘッダでトークンを送る API あるよね、ああいうやつ 疑問 Authorization: Bearer ヘッダは OA

    トークンを利用した認証・認可 API を実装するとき Authorization: Bearer ヘッダを使っていいのか調べた - Qiita
    bouzuya
    bouzuya 2019/02/15
  • CSSのスコープ - Qiita

    この記事の内容についてのほとんどが対応ブラウザの少ないものなので、現段階でそのまま実際に使えるものではない。Polymerで使用されているCSSを初見でわりと理解できなかったかつての自分用メモです。Polymerの解説ではなくて仕様の整理なので注意。 scoped属性 これは直感的でわかりやすくて、HTML内部に直接style要素を挿入してscoped属性をつけるだけ。scoped属性をもつ要素はフローコンテンツが許容される最初の子要素である必要があって、場合によってはそのstyle要素をラップする親要素が必要になることもある。 <p>この文章にはスタイルが適用されません。</p> <div> <style scoped> p { color: red; } </style> <p>この文章は文字が赤くなります。</p> </div> 嫌がらせ以外で誰が使うんだろうかとおもっていたんだけど

    CSSのスコープ - Qiita
    bouzuya
    bouzuya 2019/01/20
    MDN を見たら `style` の `scoped` 属性は廃止されたっぽい。 https://developer.mozilla.org/en-US/docs/Web/HTML/Element/style#Deprecated_attributes
  • Reactと一緒に使う時のCSS in JSのライブラリ選定とか所感とか - Qiita

    CSS in JSの基礎 原点はこちらのスライドがよく挙げられる。 いわゆる「CSSのあらゆる問題をJSで解決する」という感じのもの。 先行の記事としてはこのような感じ CSS in JS(Elm)したら想像以上に良かった Free-Style のススメ ~ CSS Modules は解決策ではない とりあえず今回はReactと一緒に使う前提のことを考える CSS in JS ライブラリの実装系統 CSS in JSライブラリもかなり色々あるが、だいたい下記の観点で分類できそうだった。 スタイルの再現に関する実装 <style>タグを生成して、<head>にinsertする実装パターン 昨今のスタンダードなライブラリの使っている手法 CSSの疑似要素や@media queryもだいたい使える InlineCSSを展開する実装パターン わりと絶滅危惧種っぽい(開発止まっていたり) そもそも

    Reactと一緒に使う時のCSS in JSのライブラリ選定とか所感とか - Qiita
    bouzuya
    bouzuya 2019/01/19
  • Reactのコンポーネントのスタイリングをどうやるか - Qiita

    この記事は KIT Developer Advent Calendar 2017 の 18 日目の記事です。 はじめに React で作成するコンポーネントにスタイルを適用する方法は大きく分けて以下の 4 つがありますが、どの方法にもメリットやデメリットがあり、一概にどれが優れているとは言えないのが正直なところです。記事ではそれぞれの手法を紹介し、比較します。 クラス名によるスタイリング インラインスタイル CSS Modules CSS in JS 扱う構文 記事では以下の仕様・構文を扱います。 ES2015, ES2016, JSX オブジェクトを受け付けるスプレッド演算子 (Stage 3, Proposal) クラスの public フィールド (Stage 2, Proposal) 現在は private フィールドの提案とマージされて class-fields(Stage

    Reactのコンポーネントのスタイリングをどうやるか - Qiita
    bouzuya
    bouzuya 2019/01/19
  • Rust初心者が参考になった記事 - Qiita

    はじめに ちょっと年末にかけて、Rustをガッツリ書く機会があったんですが、 Rustを触ったのが久々ということもあり、結構苦戦した部分もありました。 そこでまた忘れないように参考になった記事をここにまとめておこうかなと考えました。 僕のようにまだRust初心者である方にとっても参考になったら幸いです。 参考になった記事紹介 エラーについての記事 Rustでエラーを合成する この記事を書いたきっかけといってもいいかもしれない。 Result<T, E>とResult<T', E'>のEとE'を合成する方法について記述されている。 これについて知らないとJsonのデシリアライズなどで困ることになる。 記事の核となるfailureのリポジトリはここにあるのでよかったら見てね。 RustのOptionとResult Optionの便利メソッドとResultの便利メソッドというのが特にいい。 st

    Rust初心者が参考になった記事 - Qiita
    bouzuya
    bouzuya 2019/01/09
  • プログラミングスクールで習作を週2で2ヶ月間、作り続けて気づいたこと - Qiita

    私は2018年10月上旬にプログラミングスクール”G's ACADEMY”に通いはじめました。現在も学習中で、平日に授業を受けています。いわゆる、駆け出しエンジニアです! このコースでは、週に2回、課題が出されます。入学したからには気でプログラミングやろう!と躍起になり、死ぬ気で課題を取り組んでいたら、大量の習作ができました。 2ヶ月がたち、課題提出は終了。振り返ってみると、大量の習作たちを全力で作ってきてよかったなぁ…と思えることがたくさんあり、習作として Qiita に残すことにしました。個人的な1年間(2ヶ月半)の振り返りです! 背景 色んな凄腕プログラマーが色々作るの大事って言ってる アイデアがない?だったら、たくさん習作を作ろう! まず2ヶ月はコード書きまくろう!と言われまくる 習作の製造機になることを誓う。 習作達の紹介 1作目 LP +α(ビンゴ、クイズ、canvas) 2

    プログラミングスクールで習作を週2で2ヶ月間、作り続けて気づいたこと - Qiita
    bouzuya
    bouzuya 2018/12/30
  • C++標準化委員会、ついに文字とは何かを理解する: char8_t - Qiita

    C++ Advent Calendar 2018 この記事はC++ Advent Calendar 2018 15日目の記事です。 14日目: VTKライブラリ 16日目: C++のエラー処理との付き合い方 当初見積もりよりも大幅に長い記事となり、投稿したのは12/22で1週間遅刻です。すみません。 お知らせ cpprefjpにchar8_t型追加について解説を書きました。ぎゅぎゅっとコンパクトに、また査読を受けて中立的な表現で書いていますので、よければどうぞ。 UTF-8エンコーディングされた文字の型としてchar8_tを追加 - cpprefjp C++語リファレンス 追記 全ての開発者が知っておくべきUnicodeについての最低限の知識 - GIGAZINE Unicodeについて簡潔にまとまってるいい記事を見つけました。 Caution この文章には以下の要素が含まれます。苦手

    C++標準化委員会、ついに文字とは何かを理解する: char8_t - Qiita
    bouzuya
    bouzuya 2018/12/23