メモ
ここで触れられてた話がおもしろいかったのでざっくり紹介 discourse.elm-lang.org 文字列比較はcase文のほうが早い(ことがある) これは遅い ensureNonBreakingSpace : Char -> Char ensureNonBreakingSpace char = if char == ' ' then nonBreakingSpace …
社内で以下のScalaコードがコンパイルエラーにならないというのが盛り上がっていた。 println(1 == "a") // コンパイル通るし結果はfalseになる 普段ElmとGoばっかり書いている&Scalaのことをとりあえず型に厳しい言語だと思いこんでいたこともあり若干意外…
J:COMから現時点で正式なアナウンスはなにもないが、どうやら千葉県船橋市内一帯で2/17から2/20にかけて通信障害が発生していたらしい。 この障害の影響で、上り速度が1Mbps以下しかでない日が3日間ほど続いた。症状としては上り回線の輻輳状態のような感じ…
現代では官僚制というとなんだか政治的でネガティブな面ばかりが取り沙汰されている面があるが、実際には業務の効率化という観点では、近代的な合理性を追求する優れたモデルである。 官僚制にはネガティブな面はあるものの、組織としてスケーラビリティを維…
先日PRを出していたものがマージされた。 github.com GCP DatastoreのDistinctOnは履歴系テーブルを触るときに便利で、例えばチームごとのログイン履歴を保持するLoginHistoryというカインドに対して「全チームの最新のログイン履歴を取得する」というクエリ…
以下をやるだけ # インストール&初期セットアップ $ brew install rustup rust-analyzer $ rustup-init $ rustup update # プロジェクト作成 $ mkdir your_own_rust_project $ cd your_own_rust_project $ cargo init --vcs git --bin # rust-analyzerを使…
Elm Packagesで公開されているモジュールの中にはTEAでいうところのviewやmodelしか提供されていないものがあったりする。 これがコレクション系モジュールだとか関数単位での機能提供が目的のモジュールであればまだ問題ないが、UIを提供するタイプのモジュ…
先日2019年モデルのiMac 21inchをメルカリで売った。 下取りとか買取で調べると6-7万くらいで買い叩かれる&一度発送しての査定なのでかなり不安(送ったら1000円とかにされたりするかもしれないし)だが、メルカリであれば先に値段が決まるので嬉しい。 手数…
インターネットで調べたところ、どうやらUbuntuがサポートするrtl8192cuというチップとして認識させれば動くとのこと。 エレコム Wi-Fi 無線LAN 子機 300Mbps 11n/g/b 2.4GHz専用 USB2.0 コンパクトモデル ブラック WDC-300SU2SBK発売日: 2014/05/11メディア…
よく分からんところがあるので整理した。 SELECT date("2020-7-1T23:59:59+0900", "Asia/Tokyo") as tzDateWithTzString, date("2020-7-1T23:59:59", "Asia/Tokyo") as dateWithTzString, date("2020-7-1T23:59:59+0900") as tzDate, date("2020-7-1T23:59:5…
ElmCast/elm-vimをやめてvim-lspとasyncompleteを使ってelm-language-serverに対応したVim環境を整えたのでメモ。 github.com プラグイン導入 vim-plugでvim-lspとasyncomplete系のプラグインを一気に導入する。すでに導入していれば不要。 Plug 'prabirshre…
考えることがあったので雑にメモ。 1. 毎週末(木曜日or金曜日) 最も一般的なパターン。木曜日ないし金曜日にその1週間を振り返る。 1スプリントを1weekと置いていれば毎週何らかの成果物があるはずなので、それに対する振り返りがこの時間にあたる。 毎週3…
elm/core などのカーネルモジュールにバグがあるとき、公式のバグ修正を待っていられないことがある。物によってはアプリケーションの動作に大きな影響があったりして早急な修正が必要になる場合もある。 そのような場合にはshelmを使うことで、自分たちで野…
Fitbit Charge 4を買った Fitbit Charge4 GPS搭載フィットネストラッカー Black/Black L/Sサイズ [日本正規品] FB417BKBK-FRCJK発売日: 2020/04/14メディア: エレクトロニクス Spotify連携が利用できない Charge 4には、Bluetoothで接続している端末と連携し…
nodeとかrubyとか特定のコマンドを使うときまでバージョンマネージャのローディングが遅延できたらなー思って調べてみたら、alias/unaliasを用いて遅延ロードっぽいことをやるテクニックを知った。 例えばnvmは以下のようにnodeやnpmなどのようなコマンドが…
去年末にお金をケチって買ったiMac 2019(Core i3 3.6 GHz, 8GB)でIntellij IDEAとVSCodeを起動していると、文字の入力もできないくらいレインボークルクルが頻発して仕事どころじゃないことがここの所よくあった。 数年前に買ったThinkCentreで動かしているU…
gcloud app deploy コマンドを使ってGAEアプリケーションをデプロイする際には--versionというオプションを使うことでバージョン名を自分で指定できるので、ブランチ名とかIDとかをバージョンとして出したくなる。 しかし、試しにブランチ名を含めてバージョ…
Elmアプリケーションにおいてモジュールを作る際に、モジュールへ機能をどう凝集させるかに関して。 機能による区分 かつてElmにおいて一般的だった分割方針。グレーの部分がひとつのモジュールを表している。 ModelとUpdate, Viewなどをすべて別のモジュー…
過去に書いたこの記事を思い出したので、久しぶりに同じような記事を書くことにした。 izumisy.work 前提として自分はそんなにガチなトレーニーでもなんでもなく、どちらかといえば自分の健康増進のために筋力トレーニングをしたりサプリメントを摂取したり…
公式のドキュメントや他の人の書いたブログ記事を読みつつ書いてみたのでメモ。 zio.dev import zio.{IO, RIO, Runtime, Task, UIO, URIO, ZIO} // Userリポジトリのインタフェース case class User(name: String) object UserRepo { trait Service { def lo…
前回の記事の続きです izumisy.work 前の記事だと継続渡しのスタイルで処理を表現していたが、継続渡しだとシンプルにインデントがどんどん深くなっていくという微妙な点がある。 Scalaにはfor文というのが用意されているので、継続渡しスタイルよりもfor文…
ほぼZIOのbackgroundセクションにあるサンプルそのものだが、備忘録的に残しておく zio.dev いわゆるfor-comprehensionを使わずに、Applicationをミクスインした各ADTがそれぞれrestという名前で次の処理をコールバックとして取る実装(継続渡しスタイル)に…
会社でScalaを使っているので、できれば自分もモナモナしていきたいという気持ちがある。最近見つけた参考になりそうな記事を集めてみる。 Readerモナド Readerモナドと関数表現の比較、そして最後にFreeモナドに至る。 qiita.com Freeモナド medium.com sof…
分散モノリス モノリスからマイクロサービスに至る過程でよくある分散モノリスをどのように分割していくか。 いくつかアプローチを考えたので整理してみた。 1. 内部通信 内部通信を用いた分割 たぶん一番よくあるやつ。RPCやHTTPリクエストなどでアプリケー…
「Railsやってる人たちってドメイン層にvirtusとかinteractorとかサードパーティのライブラリが現れるのってどう思ってんの」という雑なツイートに対してROM.rbやdry-rbシリーズの作者であるPiotr Solnicaが優しくリプをくれた。 One rule of thumb is to re…
github.com 背景 JavaScriptだと「起動時にサーバーへA, B, Cのデータの取得を問い合わせて全てデータがそろったら次の処理へ移る」というような実装をPromise.allで作ることがよくある。 これをElmで雑にやろうとすると以下のようなMaybeまみれのコードが生…
こんなコードを書いた。 val App = new { def say = println("hello") } App.say コレ自体実行はできるが、以下の警告がでる。 reflective access of structural type member method say should be enabled by making the implicit value scala.language.ref…
こんなコードを書いた object App { type Value[A] = Seq[(A, A)] sealed trait Status { def map[A](f: Value[A] => Value[A]) = this match { case Valid(value) => Valid(f(value)) case Invalid() => Invalid() } } case class Valid[A](value: Value[A]…
普段見ているものをなんとなく書き出してみた。 インターフェイス あえてやってないとか、レイヤ的にやる必要がないというケースもある。しかし、ある程度の規模のソフトウェアには大抵インターフェイスが現れる。インターフェイスがないコードはユニットテ…
一般的にElmでルーティングを行うSPAを作る場合にはBrowser.applicationを使って、組み込みのルーティングの機構を使うことになる*1。しかし、一方でルーティングの仕組みを持たないBrower.elementやBrowser.documentでも、ルーティングをJavaScriptサイドで…