Generated by All in One SEO v5.0.0.1, this is an llms.txt file, used by LLMs to index the site. # These Walls Technolog, Music, Books ## Sitemaps - [XML Sitemap](https://kazchimo.com/sitemap.xml): Contains all public & indexable URLs for this website. ## Posts - [PythonとNewType](https://kazchimo.com/2021/06/19/python-newtype/) - 限りなくゼロコストで型による値の確からしさを保証するためのテクニックにNewTypeがある。 その紹介。 - [fp-tsとoption](https://kazchimo.com/2021/06/19/fp-ts-option/) - fp-tsには値が存在するかどうかをデータ型として表現したOptionというものが存在する。その紹介。 https://gcanti.github.io/fp-ts/modules/Option.ts.html - [PythonのEllipsis(...)とtype hints](https://kazchimo.com/2021/03/29/pythonのellipsis-とtype-hints/) - pythonでたまに見る...とかいうわけわからんもの - [PythonでPhantom Type(幽霊型)を使って静的にプログラムの欠陥を発見する](https://kazchimo.com/2021/04/04/pythonphantom-type/) - 幽霊型というちょっと高度なテクニックをpythonでも - [TypedDictでpythonのtype hintでdictのkeyとvalueに厳格に型をつける](https://kazchimo.com/2021/04/04/python-typed-dict/) - 型安全なpythonのDictを実現 - [Python typehintテクニック](https://kazchimo.com/2021/04/05/python-typehint/) - Pythonでtype hintつけるときのテクニック - [pyrightの使い方](https://kazchimo.com/2021/04/05/pyright-usage/) - Pythonのtype checkツールpyrightの使い方 - [ZStreamとFs2Streamを相互変換する](https://kazchimo.com/2021/03/28/ziostreamとfs2streamを相互変換する/) - ZIOを使ってサーバーを立てるときたまにwebsocketを使用したい時がある。 内部的にはZStreamを使用しているので、後はそれをhttp serverにつなぎこむだけなのだが、今の所ZIO×http serverのstableなライブラリはない。 そんなときによくhpp4sでサーバーを立て、ZStreamをfs2Streamに変換してwebsocketを実装している。 そのやり方。 - [爆速python-fire](https://kazchimo.com/2021/03/29/爆速python-fire/) - pythonでcliを超簡単に作ろう - [SSHの使い方](https://kazchimo.com/2021/03/29/sshの使い方/) - sshの使い方、意味、つまづきポイント - [技術書を読む技術](https://kazchimo.com/2021/03/29/技術書を読む技術/) - 楽しく勉強しよう - [タイミング攻撃の仕組み](https://kazchimo.com/2021/03/29/タイミング攻撃の仕組み/) - タイミング攻撃を調べていたところ、こんなサイトがあったので意訳っぽくまとめ。 - [Scalaのジェネリックライブラリshapelessの基本](https://kazchimo.com/2021/03/29/scalaのジェネリックライブラリshapelessの基本/) - Scalaにはジェネリックプログラミングとか言うものを行うshapelessというライブラリがある。 その基本。 - [ScalaのAuxパターン](https://kazchimo.com/2021/03/29/scalaのauxパターン/) - 型レベル計算の初歩の初歩 - [shapelessを使って同じ様なcase classを自動で変換する](https://kazchimo.com/2021/03/29/shapelessを使って同じ様なcase-classを自動で変換する/) - case classをぐにゃぐにゃしよう - [cats-effectv3.0.0がリリースされたらしい](https://kazchimo.com/2021/03/29/cats-effectv3-0-0/) - 詳しくは https://github.com/typelevel/cats-effect/releases/tag/v3.0.0 - [Rubyの型解析ライブラリSorbet事始め](https://kazchimo.com/2021/03/29/ruby_sorbet/) - ついに前々から今年の夏リリースされるとアナウンスされていたstripe製のRuby型解析ライブラリがリリースされました。個人的にRubyは型が加われば最強の言語なので、これは本当に嬉しい。導入方法として、公式のGetting Startedをまとめていく。 https://sorbet.org/ - [shapelessでフィールドの順番の違うcase classを自動で変換する](https://kazchimo.com/2021/03/29/shapeless-convert-with-field/) - case classをもっと柔軟に変換しまくろう - [Scala summoner pattern](https://kazchimo.com/2021/03/29/scala-summoner-pattern/) - 直に書くより少し楽になるよというお話。 - [Scalaのシングルトン型(~.type)について](https://kazchimo.com/2021/03/29/scala-singleton-type/) - ドを読んでいたりするとたまに~.typeというものが出てきてこれはなんだろうと思ったが、検索方法もよくわからんし何なのかも不明だったので調べてまとめ。 - [VPC内で動くGlue開発エンドポイントでPyCharmを使用する方法](https://kazchimo.com/2021/03/29/vpc-glue-pycharm/) - Glueの開発にPyCharmを使って気持ちよくなろう - [Scalaへの移行 -ウォルマート・カナダへの導入で学んだこと-](https://kazchimo.com/2021/03/29/scala-walmart/) - scalaの導入事例の一つ - [Goにproperty based testingを布教したい](https://kazchimo.com/2021/03/30/go-pbt-testing/) - goとproperty based testingで気持ちよくなろう - [0からScalaを本番導入して感じたこと・考えたこと](https://kazchimo.com/2021/03/31/scala-introduction/) - scalaの導入時に感じたことや躓いたこと、そして学び - [「意識」読んだ](https://kazchimo.com/2021/04/01/read-consciousness/) - 意識についての面白い本 - [pythonでdynamo dbをORM風に扱えるpynamodbの使い方](https://kazchimo.com/2021/04/04/pynamodb/) - pythonとdynamoでハッピー - [Scalaでcsvをexcelで開くときにUTF-8で解釈させ文字化けを防ぐ方法](https://kazchimo.com/2021/04/04/scalaでcsvをexcelで開くときにutf-8で解釈させ文字化けを防ぐ/) - エクセルをscalaで攻略 - [Pipenvの使い方](https://kazchimo.com/2021/04/05/pipenv-usage/) - pipenvのコマンド集 - [【初めてのGraphQL】解決できる課題とそのユースケースについて](https://kazchimo.com/2021/04/05/graphql-intro/) - graphqlとはなんぞや?という人に - [systemctlの使い方](https://kazchimo.com/2021/04/05/systemctl-usage/) - systemctlのコマンド例など - [PythonでJavascriptの様な分割代入](https://kazchimo.com/2021/04/05/python-distruction/) - Pythonでも分割代入がしたい - [styled components documentation日本語訳①ーBasicsー](https://kazchimo.com/2021/04/05/styled-components-documentationbasics/) - styled componentの基本 - [styled components documentation日本語訳②ーAdvancedー](https://kazchimo.com/2021/04/05/styled-components-documentationadvanced/) - styled componentの応用編 - [pytestでよく使うプラグイン](https://kazchimo.com/2021/04/05/pytest-plugin/) - pytestをプラグインでもっと便利に - [ramda.jsでよく使う関数](https://kazchimo.com/2021/04/05/ramda-js-heavyuse/) - javascriptの関数型ライブラリramda.jsのメモ - [Reactパフォーマンス・チューニングチートシート](https://kazchimo.com/2021/04/05/react-performance/) - Reactのパフォーマンスについてあれこれ - [monocle-tsでtraverse](https://kazchimo.com/2021/04/05/monocle-tsでtraverse/) - monocle-tsのtraverseで気持ちよくなろう - [Pythonのproperty based testingライブラリhypothesisの使い方](https://kazchimo.com/2021/04/05/pythonのproperty-based-testingライブラリhypothesisの使い方/) - pythonでproperty based testing - [ラズパイ向けにCGO_ENABLEDしながらGoをクロスコンパイルするDockerfile例](https://kazchimo.com/2021/04/05/ラズパイ向けにcgo_enabledしながらgoをクロスコンパイル/) - ラズパイ上でgoをc linkしながら動かしたいときの例 - [GOのテストフレームワークtestifyの使い方](https://kazchimo.com/2021/04/05/goのテストフレームワークtestifyの使い方/) - 便利なassertion EqualValues 中身の値が同じことを検証できる named typeでそのままで比較ができずに、キャストが必要なときに便利 否定版のNotEqualValuesもある type Name string // Equalを使うとキャストが必要 assert.Equal(t, "john", string(Name("john"))) // キャスト不要 assert.EqualValues(t, "john", Name("john")) 構造化されたテスト *testing.T.Run テストをネストさせて構造化したいときは*testing.T.Runメソッドが使える testifyというかgoのtestのデフォルト機能 func TestApiRes(t *testing.T) { t.Run("return ok status", func(t *testing.T) { ... }) t.Run("return correct res", func(t *testing.T) { t.Run("some expectations", func(t *testing.T) { ... } }) } channelが絡んだテスト channelに値が投げ込まれたことをテストする testifyはLenというアサーションメソッドが用意されており、これはchannelにも使用できる ただしchannelに何かが送信された場合はそのチャンネルのキャパシティを明示的に1以上に指定しなければならない channelはデフォルトでキャパシティは0 - [Amplify使い方色々](https://kazchimo.com/2021/04/05/amplify-usage/) - Amplifyの使い方メモあれこれ - [DynamoDB色々](https://kazchimo.com/2021/04/05/dynamodb/) - DynamoDBのメモあれこれ - [非同期概略](https://kazchimo.com/2021/04/05/非同期概略/) - 非同期周りの話題をざっとまとめ - [react digraph使い方](https://kazchimo.com/2021/04/05/react-digraph使い方/) - Reactの有効有向グラフライブラリreact-digraphの使い方 - [PySpark on AWS Glue](https://kazchimo.com/2021/04/05/pyspark-on-aws-glue/) - AWS GlueでのPySparの使い方メモあれこれ - [VPCエンドポイント](https://kazchimo.com/2021/04/05/vpc-endpoint/) - AWSのVPCエンドポイントの基礎的理解 - [AWS Glue色々](https://kazchimo.com/2021/04/05/aws-glue-some/) - AWS Glueを使っていたときのメモあれこれ - [PySpark DataFrameメモ](https://kazchimo.com/2021/04/05/pyspark-dataframeメモ/) - PySparkのメモあれこれ - [redux-sageまとめ](https://kazchimo.com/2021/04/05/redux-sage/) - redux-sagaを使っていたときのメモあれこれ - [pandasメモ](https://kazchimo.com/2021/04/05/pandas-memo/) - pandasを使っていたときのメモあれこれ - [[書評]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識](https://kazchimo.com/2021/04/05/linux-os-book/) - Linuxの中身をどこから学べばいいかわからないときに読む本 - [[書評]シェルスクリプト基本リファレンス](https://kazchimo.com/2021/04/05/shellscript-reference-review/) - shell scriptの基本のき - [Chrome × ReactでonMouseLeaveがうまく動かない問題](https://kazchimo.com/2021/04/17/chrome-x-reactでonmouseleaveがうまく動かない問題/) - React使っててonMouseLeaveが動かないときに読む記事 - [[初級-中級向け]Scala基本APIを完全に理解するシリーズ① -Option編-](https://kazchimo.com/2021/04/04/scalaapi-option/) - 値のある無しを保証してくれるデータ型Optionを学ぼう。 - [[書評]Docker/Kubernetes 実践コンテナ開発入門](https://kazchimo.com/2021/05/09/docker-kubernetes-intro-bookreview/) - dockerとkubernetesの本 - [今までに読んだ技術書まとめ(随時更新)](https://kazchimo.com/2021/05/13/tech-books/) - 随時更新です。 - [TypeScriptとHigher Kinded Type(高階型)](https://kazchimo.com/2021/06/10/typescript-higher-kinded-type/) - 関数型はデータ型というものを非常に重視する。データ型によって値をモデリングし、どういった性質のデータなのかを表現する。更に型システムと組み合わせることでデータ型はさらなる力を得る。 型システムによってデータ型を抽象化するときに利用する型の一つにHigher Kinded Type(高階型)がある。tsでは高階型は直接サポートされていないがそれをエンコードすることはできる。 この記事では高階型とはそもそも何なのか、それをTypeScriptでどの様に実現するかを説明する。 - [ZStream companion object API](https://kazchimo.com/2021/06/07/zstream-companion-object-api/) - zioの非同期streamコンポーネントであるZStreamのコンパニオンオブジェクトのAPI集。 - [TypeScriptと型クラス](https://kazchimo.com/2021/05/29/typescript-typeclass/) - HaskellやScalaなどの関数型言語の特徴として型クラスというものがある。これは関数型における強力な道具の一つであり、そして何もHaskellやScalaなどの特権機構ではない。サポートの大小はあれど他の言語でも実現できる。そして最近ではRustやGoが型クラスに似たような思想のセマンティクスを採用していることからもわかるように非常に便利である。 この記事では型クラスの概念を理解し、それをTypeScriptで(最低限)どの様に実現することができるか説明する。 - [fp-tsとMonoid](https://kazchimo.com/2021/06/01/fp-ts-monoid/) - 単位元付きの二項演算を司る型クラスMonoidを紹介。 https://gcanti.github.io/fp-ts/modules/Monoid.ts.html - [fp-tsとOrd](https://kazchimo.com/2021/05/31/fp-ts-ord/) - 順番を司る型クラスOrdの紹介。 https://gcanti.github.io/fp-ts/modules/Ord.ts.html - [fp-tsとEq](https://kazchimo.com/2021/05/31/fp-ts-eq/) - 値の等値性を司る型クラスEqの紹介。 https://gcanti.github.io/fp-ts/modules/Eq.ts.html - [Googleがinterfaceを好む理由](https://kazchimo.com/2021/04/29/google-typescript-interface/) - Googleはinterfaceが好き style guideにそう書いてある。 https://google.github.io/styleguide/tsguide.html#interfaces-vs-type-aliases 理由はinterfaceが好まれるテクニカルな理由があるとのこと。参照に挙げられていた記事を読んでみよう。 https://ncjamieson.com/prefer-interfaces/ - [fp-tsとSemigroup](https://kazchimo.com/2021/05/30/fp-ts-semigroup/) - TypeScriptの関数型ライブラリのfp-tsには型クラスとしてSemigroupがいる。その紹介。 https://gcanti.github.io/fp-ts/modules/Semigroup.ts.html - [リテラル型(literal type)](https://kazchimo.com/2021/05/16/dotty-literal-type/) - scala3にはリテラル型がある。 実はだいぶ前からすでに存在していたのだが、そのサポートがより一層厚くなった。 リテラル型はTypeScriptによって広く一般に知れ渡り、その有用性が実証された。 例えばリテラル型を使用することでTypeScriptではSQLの出力にクエリから型を自動で付けたりできる。 - [サルでもわかるカリー化とそのメリット](https://kazchimo.com/2021/03/29/monkey_curry/) - jsとか関数型やってるとよく聞くカリー化について - [ScalaのF[_]と高カインド型(Higher Kinded Type)を完全に理解していく](https://kazchimo.com/2021/03/29/scala-higher-kinded-type/) - Scalaはなんとなく書けるようになったけどライブラリコードとか読めないし、関数型はもっとわかない。特にF[_]みたいなやついっぱい出てくるけどなに?みたいな人に捧げる記事です。 このようなものは高カインド型などと呼ばれ、なかなか理解が難しいものです。型のさらなる抽象化の旅に出ましょう。 これはUnderstanding F[_] in Scalaの日本語訳です。 - [型レベル多項式の微分](https://kazchimo.com/2021/05/25/dotty-typelevel-derivative/) - 以前書いた型レベル多項式をベースに型レベルに多項式の微分を実装する。 https://kazchimo.com/2021/05/19/dotty-typelevel-polynomial/ - [Polyfunctionでpartially applied typeを改善する](https://kazchimo.com/2021/05/20/dotty-polyfunction-partially-applied-type/) - scala3で登場したpolyfunctionを用いてscala2系で実現されていたpartially applied typeを改善する。 - [型レベル多項式](https://kazchimo.com/2021/05/19/dotty-typelevel-polynomial/) - dottyの柔軟な型を利用して型レベルの多項式とその一般の足し算を定義する。 - [Match Type](https://kazchimo.com/2021/05/18/dotty-match-type/) - dottyの型システムに現れた強力な機能の一つにMatch Typeがある。 これによって2系のscalaだと信じられないくらい複雑なコードが必要だったものが簡潔になる。 - [コンパイル時オペレーション](https://kazchimo.com/2021/05/17/dotty-compiletime-ops/) - dottyでは型に対してコンパイル時に行える操作が色々増えている。 特にリテラル型に当たるものは値レベルの操作と遜色無いものが用意されている。 コンパイル時オペレーションの中でもscala.compiletime.ops以下に当たるパッケージを見ていこう。 - [[初級-中級向け]Scala基本APIを完全に理解するシリーズ② -Either編-](https://kazchimo.com/2021/04/04/scalaapi-either/) - EitherはScalaの中心的な役割を担うクラスです。 Optionなどの他のクラスと違って少し癖があるため最初は戸惑うかも知れません。 しかしマスターすれば強力なバグ抑制機構になってくれます。 - [Ordersky先生が説明してくれたdottyに入るかもしれないchecked exceptionのモチベ](https://kazchimo.com/2021/04/20/dotty-checked-exception-motivation/) - このドキュメントでordersky先生がscala3に入りそうなchecked exceptionのモチベを説明してくれていて、面白かったので紹介する。 該当のプルリク。 - [ZIOへの環境Rのprovide方法各種](https://kazchimo.com/2021/03/30/ziorprovide/) - ScalaのライブラリZIOにはDIを扱うための仕組みが組み込みで備わっている。 DIの実態をprovideする方法はいくつかあるので紹介する。 なおZIOの基本的な理解は所与とする。 DIを補助する仕組みとしてのZLayerやHasについてはこの記事がよくまとまっている。 - [ZIO小史](https://kazchimo.com/2021/03/31/zio-history/) - この記事はA Brief History of ZIOを執筆者のJohn A De Goesさんの許可を取って翻訳したものです。 Thanks a lot to John A De Goes for the great article and allowing me to introduce that in my blog! - [代数的データ型Deep Dive in Scala](https://kazchimo.com/2021/04/28/adb-scala/) - 関数型やってるとよく聞く代数的データ型(ADT)について。 Scalaやってるとよく使うがHaskellほどこの話題について掘った記事はあんまりないのでdigっていきたい。 - [ScalaでAuxパターンをするときにはimplicitの順番に気をつけよう](https://kazchimo.com/2021/05/05/scala-aux-implicit-order-error/) - shapelessとかを使って型レベルプログラミングしてるとAuxパターンを使ってメソッドの型シグネチャで計算を表現することになる。 しかしこれが結構曲者でscalaのコンパイラの残念さもあり結構大変である。 その際に起こるコンパイルエラーの一つにimplicitの順番が関わるものがあるので紹介したい。 - [Go tips](https://kazchimo.com/2021/04/05/go-tips/) - nullableな値を使用したいとき jsonやdbスキーマを扱うときにnullableな値を扱いたい しかしgoでは値型に対してデフォルト値が存在して何も指定しない場合はそれが用いられてしまう i.e. stringのデフォは"" null的な値を扱いたいときにはpointerを使う pointerのデフォ値はnilなので何も指定しないときはちゃんと何もないことが指定される コンパイルするときに値を埋め込みたい まず変数を用意する main.go package main var a string コンパイルするときにldflagsというオプションを使用すると値を埋め込める go build -ldflags "-X main.a=hoge" これでaはプログラム中でhogeという値になっている 埋め込みたい値がmain package以外にあるとき 基本的には上のやり方で行ける 変数までのパスがファイル名ではなくパッケージ名で有ることに注意 参考 pointer型のフィールドを持つstructを値ベースで等値性を検証したい 以下のようなstructがあるとする type A struct { B *string } これをそのまま比較するとpointerのアドレスで比較されるので同じ値のpointerを入れてても等値だとみなされない a := "a" b := "a" A{&a} == A{&b} // false 値ベースでの比較を行い時にはreflect.DeepEqualを使用する reflect.DeepEqual(A{&a}, A{&b}) // true - [amchartsとjestの併用](https://kazchimo.com/2021/04/05/amchartsとjestの併用/) - jestでamchartsの関数を使用したテストを書こうとするとなんか知らんがバグる probably not plain javascriptみたいなことを言ってくるが原因はよくわからん これに従うと治る これだけだとなんかreact自身がバグる事もあったが、yarn installかますとそれも治った ## Categories - [Uncategorized](https://kazchimo.com/category/uncategorized/) - [Scala](https://kazchimo.com/category/scala/) - Scalable Programming Language - [ZIO](https://kazchimo.com/category/scala/zio/) - [fs2](https://kazchimo.com/category/scala/fs2/) - [Python](https://kazchimo.com/category/python/) - [Linux](https://kazchimo.com/category/linux/) - [Security](https://kazchimo.com/category/security/) - [FP](https://kazchimo.com/category/fp/) - [cats](https://kazchimo.com/category/scala/cats/) - [Ruby](https://kazchimo.com/category/ruby/) - [JavaScript](https://kazchimo.com/category/javascript/) - [AWS](https://kazchimo.com/category/aws/) - [Go](https://kazchimo.com/category/go/) - [Book](https://kazchimo.com/category/book/) - [DynamoDB](https://kazchimo.com/category/aws/dynamodb/) - [React](https://kazchimo.com/category/javascript/react/) - [TypeScript](https://kazchimo.com/category/javascript/typescript/) - [Spark](https://kazchimo.com/category/spark/) - [VPC](https://kazchimo.com/category/aws/vpc/) - [Glue](https://kazchimo.com/category/aws/glue/) - [ShellScript](https://kazchimo.com/category/shellscript/) - [type level programming](https://kazchimo.com/category/type-level-programming/) - [Docker](https://kazchimo.com/category/docker/) - [dotty(Scala3)](https://kazchimo.com/category/scala/dottyscala3/) - [fp-ts](https://kazchimo.com/category/javascript/typescript/fp-ts/) ## Tags - [type level dotty](https://kazchimo.com/tag/type-level-dotty/) - dottyでは型レベル計算のための機能が大幅にアップデートされた。 dottyの型レベル計算機能を探索する。 - [functional-typescript](https://kazchimo.com/tag/functional-typescript/) - [typed python](https://kazchimo.com/tag/typed-python/)