タグ

ブックマーク / medium.com (1,287)

  • Flutter/Dartにおけるimmutableの実践的な扱い方

    以下の記事でも触れている StateNotifier は状態値をimmutableで扱うことが実質必須ですが、そのimmutableプログラミングがあまり理解できていない様子が散見されたり質問を受けることが多いのでそれについて記事にしてみました。 immutableについての良い解説記事なども色々ありますが、Flutter/Dartにおいての実践的な扱い方に対して飛躍がある気がしていて、それを埋められることを意識して順を追って説明してきます。 以下で示したコードは https://github.com/mono0926/riverpod_example/blob/main/test/test.dart に大体含まれています。 mutableなクラスの挙動まず、mutableなクラスの挙動は以下のようになります。 class Mutable { Mutable(this.value); in

    Flutter/Dartにおけるimmutableの実践的な扱い方
  • Cloud Run の Always on CPU で Cloud Pub/Sub から Pull する worker を試してみた

    TL; DRCloud Run の Always on CPU を使うと、Cloud Pub/Sub から Pull する Worker を Cloud Run で実行出来ます。ただし、スケーリング等にいくつか諸注意があります。 はじめにCloud Run の Always on CPU が Preview でリリースされて、バックグラウンド タスクや非同期処理で使えると Twitter で宣伝したところ、私の tweet 史上、一番の反響を頂きました。ありがとうございます。また同僚の Shingo-san が素敵な解説記事を書いてくれたり、同じく同僚の Pottava-san も素敵なサンプルコードを書いてくれてたり。「tweet してるだけでいいのかい?当に?」という私のエンジニアとしての良心の呵責があったため、私もこうして記事を書いています。 試したこと以前、お客様から Cloud

    Cloud Run の Always on CPU で Cloud Pub/Sub から Pull する worker を試してみた
  • Why I Support the Haskell Foundation

    Last November at the Haskell eXchange conference, Simon Peyton Jones announced the Haskell Foundation. This can be understood as many things: an organization dedicated to the hard work of making Haskell more successful and useful, a touchpoint for different parts of the Haskell community to come together and cooperate, and a focus knob to direct general support (financial and otherwise) for the Ha

    Why I Support the Haskell Foundation
  • A Short History of Objective-C

    To date, users have downloaded over 140 billion apps to their iPhones.¹ The iPhone’s success is tied to its ecosystem of third-party apps. When the App Store debuted in 2008, all apps were written in a programming language that few outside the Apple community had ever used: Objective-C. Since then, Objective-C’s usage has exploded in a gold rush of developers making apps. Although Apple introduced

    A Short History of Objective-C
  • Why we decided to rewrite our iOS & Android apps from scratch — in React Native

    Our project name for the RN app rewrite, DenaliBackgroundHi, I am Naoya, a Senior Engineering Manager at Mercari. Along with my small but mighty team of frontend developers, I am responsible for delivering the Mercari app experience to our customers. Today, I’m here to explain why we’ve made the ambitious decision to completely rewrite our apps using React Native. Growth drives changeCurrently, we

    Why we decided to rewrite our iOS & Android apps from scratch — in React Native
  • Create an application CoroutineScope using Hilt

    Following coroutine’s best practices, you might need to inject an application-scoped CoroutineScope in some classes to launch new coroutines that follow the app lifecycle or to make certain work outlive the caller’s scope. In this article, you’ll learn how to create an application-scoped CoroutineScope using Hilt, and how to inject it as a dependency. To further improve the way we work with Corout

    Create an application CoroutineScope using Hilt
  • <Lazy> rendering in Vue to improve performance

    Last year, a lot has been in happening on the web in terms of performance. Unsurprisingly, everyone agrees the web should be fast. Google introduced its Web Vitals metrics to stress that the web applications should load fast even on slower devices and slow networks. Svelte showed that web apps can be significantly smaller in their bundle size. React introduced the Fiber algorithm that allows pausi

    <Lazy> rendering in Vue to improve performance
  • Cloud Deploy 実践編: CI との連携

    前回『デプロイに全集中!新サービス Cloud Deploy』では、Cloud Deploy (現在プレビュー段階です)の背景にある思想 & 基的な使い方をご紹介しました。今回は少し視野を広げ CI との関係を知り、連携して動かすことをゴールに、その過程で考慮すべきポイントも併せてご紹介します。 TL;DRCI と CD の管理主体が分かれます、改めて理想を検討しましょうgit リポジトリでテスト・ビルド・デプロイ “方法” を管理CI でテストし、ビルドし、成果物をまとめるCD で成果物とデプロイ先の管理 & ロールアウト / ロールバックこの 3 つを繋ぐのは Skaffold ローカルから実行環境までの様々な環境差異視野を広げつつも、今回も Google はどんなことを課題と捉え、何を解決しようとしているのかを一緒に考えてみたいと思います。 CI / CD パイプラインパイプライン

    Cloud Deploy 実践編: CI との連携
  • これから始める Cloud Functions 入門

    はじめに記事は Google Cloud が提供するサーバーレスコンピューティングサービスである「Cloud Functions」の入門記事です。Cloud Functions の詳細な使い方はドキュメントに網羅されていますが、記事では Cloud Functions の概要をざっくりと知り、使い始めてみる ところに重点を置いて解説したいと思います。Cloud Functions を使い始める上での入り口としてご覧いただきながら、各機能のより詳細な内容はドキュメントを見ながら掘り下げていただければと思います。 Cloud Functions の特長サーバーレス、FaaSCloud Functions はいわゆるサーバーレス、あるいは FaaS (Function-as-a-Service) と呼ばれるサービスです。 サーバーレスとはサーバーの管理を必要としないようなアーキテクチャの総称

    これから始める Cloud Functions 入門
  • Cloud Deploy

    お待たせいたしました、お待たせし過ぎたかもしれません。みんなー!やっと Google Cloud でデプロイのためのマネージド サービスがでてきたよー!!! Cloud Deploy という謎サービスがリリースされました。現在 Preview ながら、実際にみなさんの環境で体験いただけます。以下はその解説ですが、そんなことより早く使いたい!という方はこちらからどうぞ。 Cloud Deploy とはアプリケーションを実行環境へ継続的デリバリー (CD) するためのもの任意の継続的インテグレーション (CI) システムと連携できるCD に関する重要な指標、データが容易に可視化できる現在サポートするデプロイ対象サービスは GKE のみ使い方は 事前に “パイプライン” としてデプロイ先や順序、方法を決めておいてソフトウェアが書けたら成果物を “リリース” としてまとめ最初のデプロイ先( “ター

    Cloud Deploy
  • 踏み台EC2を廃止してSession Manager接続に置き換えました

    こんにちは、エウレカ SRE チームの原田です。 今年 (2021年) エウレカでは、公開鍵認証で接続するEC2の踏み台サーバを廃止し、代わりに各サーバへの接続をIAMで認証できるSSM Session Managerへのリプレースを行いました。記事ではそのモチベーションや、実装のポイントを紹介していきたいと思います。 旧来の踏み台サーバ 旧来の踏み台サーバエウレカで長く運用されていた踏み台サーバ (Gateway) は以下のようなものでした。 各開発者は、自分の秘密鍵を使って踏み台サーバへSSHを行う ( 踏み台サーバ上には各開発者の個別ユーザーおよび公開鍵が登録されている )踏み台上では、接続が許可されているSSH対象のサーバの秘密鍵がユーザー毎に配置されており、その鍵で各サーバにSSHするMySQL / Elasticsearch / Redis など、Private Subnet

    踏み台EC2を廃止してSession Manager接続に置き換えました
  • Cheat Sheets for Machine Learning Interview Topics

    Updates: Dec 25, 2021: Added Auto Encoder and variational Encoder Dec 25, 2020: Added Ensemble Methods Download the updated version of the cheat sheets from http://cheatsheets.aqeel-anwar.com/ A couple of years ago I started applying for internships in the area of Machine Learning and ML system design. I had been studying and actively researching in the area of ML for a few years then. I was famil

    Cheat Sheets for Machine Learning Interview Topics
  • containerd & Lima: Open source alternative to Docker for Mac

    Today, the community was shocked by the sudden news that Docker Desktop for Mac/Win is no longer free [-as-in-beer] for “professional use in larger businesses”. But we have a free, libre, and open source alternative of Docker for Mac: containerd & Lima. $ brew install lima $ limactl start $ lima nerdctl run -it --rm alpine(NOTE: ARM Mac requires installing a patched version of QEMU, see Lima docum

    containerd & Lima: Open source alternative to Docker for Mac
  • インフラエンジニアなら気になるQUICのロードバランサ (方式編)

    図1: QUICコネクションを振り分けるロードバランサはじめに記事では、バックエンドのWebサーバへリクエストを振り分ける装置の意味でのロードバランサ(図1)について、QUIC対応の議論状況を紹介します。方式編と実装編にわけて二編を予定しており、稿は方式についての解説です。 IETFでは、F5 Networksとマイクロソフトから提案されたロードバランシング方式が議論されています。稿では下記のインターネットドラフトをQUIC-LBと表記します。 QUIC-LB: Generating Routable QUIC Connection IDs https://datatracker.ietf.org/doc/html/draft-ietf-quic-load-balancers 執筆時点の -07 をベースとしますが、ドラフトですので今後の議論次第で改版が続きます。あらかじめご承知おき

    インフラエンジニアなら気になるQUICのロードバランサ (方式編)
  • え! QUIC無効化するの? HTTP over QUIC or TCPの接続選択を考える

    図1: QUICの無効化は待ってくださいQUICを無効化?!“Googleが遅く感じるので、QUICを無効化する” そのようなTIPSが散見されます。数年前から見ていましたが、QUICがトレンドになったのと同時に、再び目立ち始めたと感じています。IPv6が普及し始めた時期もそうでしたが、新しいプロトコルの出現時には、決まって現れる文言です。 問題に直面する利用者にとっては切実であり、無効化は間違った解決手段とは言いません。しかしエンジニアならば無効化する前に、原因を探求しなければなりません。 HTTP3/QUIC と HTTP2/TCP どちらが優先?QUICの無効化とは、TCPだけを利用する選択と言えます。はじめにQUIC, TCPの両者が使えるとき、どのように使い分けるのか見ていきます。 ある、HTTPSスキームのURL https://www.example.com/ があったとき、

    え! QUIC無効化するの? HTTP over QUIC or TCPの接続選択を考える
  • NginxでのeBPFとSO_REUSEPORTを使ったQUICコネクション受信処理

    はじめに2021年7月12日にNgnixブログに掲載された記事 “Our Roadmap for QUIC and HTTP/3 Support in NGINX” では、QUICとHTTP/3機能を2021年末にはメインラインへマージする計画が言及されています。現在のHTTP3/QUIC対応Nginxは、専用の開発ブランチ (nginx-quic)で開発が進められていますが、常に最新のリリース (7月26日時点で1.21.1)を取り込んでおり、HTTP3/QUIC以外の最新機能も利用可能です。筆者も、昨年から開発ブランチの動作を試しており、HTTP3/QUICでの大きな負荷をかけても良好なパフォーマンスを示しています。 さて、Nginxブログで言及されたHTTP3/QUICに関する機能の一つとして、“eBPFを使ったマルチプロセスアーキテクチャ” という項目がありました。QUIC特有の仕

    NginxでのeBPFとSO_REUSEPORTを使ったQUICコネクション受信処理
  • 機械学習を意思決定に役立てる方法を探る: The Recon Approach: A New Direction for Machine Learning in Criminal Law

    「犯罪をした者等の特性に応じた効果的な指導の実施等のための取組」より興味がある方は、法務省から文書が出ているので読んでみてください。一点注意頂きたいのは、これが「犯罪の未然防止」を目的に使われているわけではないことです。犯罪の未然防止とは、あいつは犯罪を犯しそうだから早めに取り締まろう、という行動のことです。PSYCHO-PASSというアニメで「犯罪係数」という数値が登場しましたが、犯罪係数は犯罪の未然防止に使用されています。これに対し、リスクアセスメントツールは対象者にあった再犯防止プログラムを客観的・定量的に行うことを目的として開発されています。 予測ツールに対しては、精度、人種のバイアス、予測の透明性の欠如などに対し批判があります。一方で、そもそも人間はアルゴリズムほど公平ではないという論調もあります。人間より、アルゴリズムの方が公平な判断ができるということですね。公平性という観点で

    機械学習を意思決定に役立てる方法を探る: The Recon Approach: A New Direction for Machine Learning in Criminal Law
  • Writing unit tests in Golang Part 1: Introducing Testify

    Unit testing is a way of writing tests for the individual components (aka, the smallest part) of a program. The purpose of it is to validate that any piece of code is always working as expected. Moreover, unit testing has a lot of advantages such as improving the quality of code, providing documentation, also the code can be tested individually and doesn’t require another module in order for it to

    Writing unit tests in Golang Part 1: Introducing Testify
  • RustでLinuxカーネルの機能を拡張しよう!

    Linuxカーネルの機能を安全に拡張できるeBPFのコードはC言語で実装する必要があると知り、がっかりしているクラウドネイティブ 世代の皆様に朗報です。実は、Rustで、eBPFのコードを実装することができます。今更、C言語(クラウドネイティブ ではない感じ)を学ぶ必要はありません! eBPFとプログラミング言語eBPFを活用するソフトウェアは、カーネルスペースで動作するeBPFバイトコードと、eBPFバイトコードを制御するユーザスペースのアプリケーションから構成されます。後者は、GoPythonRustなど様々なプログラミング言語で実装することができますが、前者は、制限のあるC言語で実装する必要があります。 eBPFの構成Rust用eBPFライブラリRustでeBPFを扱う一般的な方法は、libbpf-rsライブラリです。これは、C言語でユーザスペースのアプリケーションを実装するため

    RustでLinuxカーネルの機能を拡張しよう!
  • 二次創作公認プログラム 概要

    重要なポイント原著作者さまへお支払いするお金は、運営会社が徴収するサービス手数料の中に含まれているため、ファンアートか否かによってユーザーのみなさんがお支払いする手数料が変わることはありません。どのファンアートから原著作者さまが売上を受け取っているかは、原著作者さま以外分かりません。 描いたクリエイターの方も知ることはできません。 つまり、Skebには「公認のファンアート」と「原著作者さまが売上の受け取りを拒否した公認されていないファンアート」が、原著作者さま以外区別できない状態で投稿されることになります。売上の受取を拒否されたファンアートが自動的に削除されることはありません。どのような属性のファンアートから売上を受け取るかは、各原著作者さまの設定によって異なります。 今までもこれからも、公認作品・非公認作品に関わらず、各原著作者さまの二次創作ガイドラインを厳守し従ってください。売上を受け

    二次創作公認プログラム 概要