Runner in the High

技術のことをかくこころみ

B2Bなソフトウェア開発における必読書3選

B2Bなソフトウェアの開発において業務知識なしにシステム設計をすることはほぼ不可能に近い。 これまで、業務支援系のシステム開発はSIer企業たちのお家芸であったが、近年ではWeb系のベンチャー企業やスタートアップであってもこれまでSIerが担っていたよう…

GPD PocketからOneMix3 Proに乗り換えた

かつてIndiegogoでバックしたGPD Pocket初代をときたま外出のとき持ち歩いたりしていたが、とうとうOneMix3 Proに乗り換えた。 性能も使いやすさも段違いになった。 izumisy.work ONE-NETBOOK OneMix3 Pro ミニパソコン 日本語配列キーボード搭載 ( Intel Co…

isucon10に出て予選敗退した

iguchi1124とhayashikunとisucon10に出た。一番伸びたスコアは1300くらい。 やったこと 覚えていることベースでやったことを書いてみる。 自分が覚えているのは基本アプリケーションサイドの変更ばっかり。 マシン構成の変更 hayashikunとiguchi1124がAP2台+…

「チェアdeスクっと」は名前はダサいが気軽にスタンディングデスクを導入できる最強の製品

いわゆるコロナ禍で自分も在宅ワークを余儀なくされているが、やはりなんといっても座りっぱなしで問題になるのは腰。腰がイカれてくる。 Fitbitで歩数を見ても腰が壊れるのは自明で、自分はかなり通勤経路が長めの人間だったということもありこれまでは余裕…

Elmアプリケーションにおける型と抽象化手法

Elmは機能を絞った言語であるためScalaやHaskellのような高度な抽象化は言語機能上できないが、使う使わないに関わらず知識として「やれること」「やれないこと」を知っておくと、コード表現に幅が出る。 Extensible Record ざっくり言うとレコードのプロパ…

メルカリでiMac 21inchを売るときのあれこれ(発送とか初期化とか)

先日2019年モデルのiMac 21inchをメルカリで売った。 下取りとか買取で調べると6-7万くらいで買い叩かれる&一度発送しての査定なのでかなり不安(送ったら1000円とかにされたりするかもしれないし)だが、メルカリであれば先に値段が決まるので嬉しい。 手数…

Ubuntu 20.04でUSBのWiFiアダプタ(WDC-300SU2SBK)を認識させる方法

インターネットで調べたところ、どうやらUbuntuがサポートするrtl8192cuというチップとして認識させれば動くとのこと。 エレコム Wi-Fi 無線LAN 子機 300Mbps 11n/g/b 2.4GHz専用 USB2.0 コンパクトモデル ブラック WDC-300SU2SBK発売日: 2014/05/11メディア…

BigQueryのDATE関数とタイムゾーン周りの挙動

よく分からんところがあるので整理した。 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…

Interpreter Pattern in Elm: 副作用をテスタブルにする

Elmは純粋関数型プログラミング言語なので基本的にはアプリケーションを構成するすべての関数はテスタブルであるが、唯一Cmd型だけはテストすることができない。 たとえば以下のようなupdate関数においてPersistToStorageのメッセージが渡された際に必ずスト…

elm-multi-waitableで非同期処理の完了待ちをModelに表現する

Elmアプリケーションにおいて非同期処理の完了待ち実装をいい感じにするelm-multi-waitableというモジュールを公開した github.com 内部的には状態遷移のタイミングでデータを受け取って保持するステートマシンのようなものだが、これを使うことでフロントエ…

vim-lspでElm用のVim環境を構築する

ElmCast/elm-vimをやめてvim-lspとasyncompleteを使ってelm-language-serverに対応したVim環境を整えたのでメモ。 github.com プラグイン導入 vim-plugでvim-lspとasyncomplete系のプラグインを一気に導入する。すでに導入していれば不要。 Plug 'prabirshre…

2020年6月のクラウドバンク

izumisy.work 今年もふと思い出したので書いてみる。以下が先月時点での収益レポート。 2020年6月の収益レポート ちょうど新型コロナウイルスが盛り上がってきたのが多分3-4月頃で、その直後しばらく新規の投資案件が出てこなくて非常に心配になった。だが今…

開発チームの振り返りタイミングのパターン

考えることがあったので雑にメモ。 1. 毎週末(木曜日or金曜日) 最も一般的なパターン。木曜日ないし金曜日にその1週間を振り返る。 1スプリントを1weekと置いていれば毎週何らかの成果物があるはずなので、それに対する振り返りがこの時間にあたる。 毎週3…

shelm: 脱法Elmパッケージマネージャー

elm/core などのカーネルモジュールにバグがあるとき、公式のバグ修正を待っていられないことがある。物によってはアプリケーションの動作に大きな影響があったりして早急な修正が必要になる場合もある。 そのような場合にはshelmを使うことで、自分たちで野…

Fitbit Charge 4でSpotifyアプリ連携がインストールできない場合の対処法

Fitbit Charge 4を買った Fitbit Charge4 GPS搭載フィットネストラッカー Black/Black L/Sサイズ [日本正規品] FB417BKBK-FRCJK発売日: 2020/04/14メディア: エレクトロニクス Spotify連携が利用できない Charge 4には、Bluetoothで接続している端末と連携し…

nvmやrbenvを遅延ロードさせる

nodeとかrubyとか特定のコマンドを使うときまでバージョンマネージャのローディングが遅延できたらなー思って調べてみたら、alias/unaliasを用いて遅延ロードっぽいことをやるテクニックを知った。 例えばnvmは以下のようにnodeやnpmなどのようなコマンドが…

Intellij IDEAのVMオプションとVSCodeの設定をイジってフリーズを減らす

去年末にお金をケチって買ったiMac 2019(Core i3 3.6 GHz, 8GB)でIntellij IDEAとVSCodeを起動していると、文字の入力もできないくらいレインボークルクルが頻発して仕事どころじゃないことがここの所よくあった。 数年前に買ったThinkCentreで動かしているU…

gcloudコマンドでGAEアプリケーションデプロイ時に指定できるバージョン名には使える文字種に制限がある。

gcloud app deploy コマンドを使ってGAEアプリケーションをデプロイする際には--versionというオプションを使うことでバージョン名を自分で指定できるので、ブランチ名とかIDとかをバージョンとして出したくなる。 しかし、試しにブランチ名を含めてバージョ…

Elmのモジュール分割における区分軸の観点

Elmアプリケーションにおいてモジュールを作る際に、モジュールへ機能をどう凝集させるかに関して。 機能による区分 かつてElmにおいて一般的だった分割方針。グレーの部分がひとつのモジュールを表している。 ModelとUpdate, Viewなどをすべて別のモジュー…

rbenvの初期化が遅いのをどうにかする

rbenvの初期化がすげー遅いときがある eval "$(rbenv init -)" 探してみると、ちょっと昔の記事だけどこんなのが出てきた。 mattgreensmith.net つまりrehashとかいうのが遅いらしいので、それをbackgroundで処理させるといい感じになるらしい。こんな感じで…

DEVでフォームにおけるOpaque Typeの設計に関するシリーズを書いた

DEVにシリーズ機能というものがあることを知って試してみた。全2作。 dev.to dev.to elmbitsでも取り上げられた Issue #14: This week ElmLove, PET stack, calculator project, webapp in func languages, opaque types, new podcast, and more. By @luca_m…

リモワに向けてAmazonで買ったものまとめ

コロナによるリモートワークが始まるタイミングで、ついでにデスクまわりを充実させようと思っていろいろ買った。 iiyamaの19.5インチモニタ iiyama モニター ディスプレイ E2083HSD-B2 (19.5インチ/HD+/TN/D-sub,DVI-D/3年保証)発売日: 2014/10/24メディア:…

iHerbでよく買うもの

過去に書いたこの記事を思い出したので、久しぶりに同じような記事を書くことにした。 izumisy.work 前提として自分はそんなにガチなトレーニーでもなんでもなく、どちらかといえば自分の健康増進のために筋力トレーニングをしたりサプリメントを摂取したり…

ZIOによるDIの最小サンプル

公式のドキュメントや他の人の書いたブログ記事を読みつつ書いてみたのでメモ。 zio.dev import zio.{IO, RIO, Runtime, Task, UIO, URIO, ZIO} // Userリポジトリのインタフェース case class User(name: String) object UserRepo { trait Service { def lo…

実装と処理の分離でfor-comprehensionを使う

前回の記事の続きです izumisy.work 前の記事だと継続渡しのスタイルで処理を表現していたが、継続渡しだとシンプルにインデントがどんどん深くなっていくという微妙な点がある。 Scalaにはfor文というのが用意されているので、継続渡しスタイルよりもfor文…

継続渡しスタイルを用いた実装と処理の分離

ほぼZIOのbackgroundセクションにあるサンプルそのものだが、備忘録的に残しておく zio.dev いわゆるfor-comprehensionを使わずに、Applicationをミクスインした各ADTがそれぞれrestという名前で次の処理をコールバックとして取る実装(継続渡しスタイル)に…

Scalaでモナドとかに入門できそうな記事まとめ(随時更新)

会社でScalaを使っているので、できれば自分もモナモナしていきたいという気持ちがある。最近見つけた参考になりそうな記事を集めてみる。いつか自分でも手を動かして触って見る予定。 Readerモナド Readerモナドと関数表現の比較、そして最後にFreeモナドに…

分散モノリスに対するアプローチ

分散モノリス モノリスからマイクロサービスに至る過程でよくある分散モノリスをどのように分割していくか。 いくつかアプローチを考えたので整理してみた。 1. 内部通信 内部通信を用いた分割 たぶん一番よくあるやつ。RPCやHTTPリクエストなどでアプリケー…

dry-rbの作者による「サードパーティのgemを安全に使う方法」

「Railsやってる人たちってドメイン層にvirtusとかinteractorとかサードパーティのライブラリが現れるのってどう思ってんの」という雑なツイートに対してROM.rbやdry-rbシリーズの作者であるPiotr Solnicaが優しくリプをくれた。 One rule of thumb is to re…

ElmでPromise.all的なことをしたいときに便利なelm-task-parallel

github.com 背景 JavaScriptだと「起動時にサーバーへA, B, Cのデータの取得を問い合わせて全てデータがそろったら次の処理へ移る」というような実装をPromise.allで作ることがよくある。 これをElmで雑にやろうとすると以下のようなMaybeまみれのコードが生…