Tech
概要 自分は今まで事業会社スタートアップのエンジニアとして働くことが多かったので、その経験の中で得たアラート対応の心得を書きます。 サービス提供をする事業会社のエンジニアとして、システムを開発するだけでなく、普段のシステム運用を通してユーザ…
僕がソフトウェアを作る上で、目指したい理念は、self-adaption 、すなわち「自己適応」である。 つまり、システムが人の手を介さずに自ら環境に適応してくれれば、そんなにいいことはないよね、と。 僕が技術者として目指すものは、そんなself-adaptiveなシ…
「この人チーム引っ張ってくれそう」と思えるかどうかの基準は、「めっちゃスキルがあるか」より「チームを背負う覚悟があるか」「サービスを良くしようとする覚悟があるか」の方が大きいと感じる。 スキルは周りがカバーできる。分からないところは聞けばい…
データベースにやらせてるいろんなロジックを、アプリケーション側で実装すれば安くすむのではないかという仮説。 db.t4g.large RDSの料金はインスタンス料金+ IO料金 USD 0.225 / hour 2CPU + 8GB memory USD 0.24/100万リクエスト ECS + Fargateの料金はvC…
最近目にしたブログで「実行責任」と「説明責任」という言葉が出てきていて、自分的に納得感を持ったのでそれをもとに自分の現状を分析しつつ、チームに変化を起こすために必要なアクションを考えてみる。 konifar-zatsu.hatenadiary.jp ここ2年くらいはある…
Pythonは雰囲気で使う言語なのかもしれない。
ReactでUIライブラリに依存しないクリーンなアーキテクチャにするのを試してみようと思って、MaterialUI(以下、MUI)のコンポーネントをラップした自作コンポーネントの作成を試してみた。
Pythonの文法キャッチアップノート。クラス編。
テストの規模が大きくなってきたタイミングで、jest でメモリリークしてしまいなかなか回避できなかった。 FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory 以下のissueを見てる感じ、根が深く…
TypeScript ではEnum型が標準で用意されているが、使いづらい。 多くの場合、Enumで列挙したいような値は、as const で代用するのがいい。 例えば、自社で扱う果物を列挙する場合、 const FRUITS = { APPLE: 'apple', ORANGE: 'orange', BANANA: 'banana', }…
CONSTANT_CASE -> lowerCamcelCase コンスタントケースからロウアーキャメルケースに変換します。 function toLowerCamelCase(v: string) { const upperCamel = v.toLowerCase().split('_').map((str) => str.charAt(0).toUpperCase() + str.slice(1).toLowe…
トップラインとはいわゆる「売上」のことで、ボトムラインとは「営業利益」のこと。 トップラインを上げるためにとるべき開発手法と、ボトムラインを上げるためにとるべき開発手法は違うだろうとふと思った。 トップライン開発は、とにかく100万円払ってでも…
Prismaとリポジトリパターンのポエム。※結論や答えのようなものはこの記事には含まれていません。
どうやらUnionTypeはimplementsできないらしい。
CLIツールを作るときに引数の順番どうしようかなと迷ったので、その記録。
TL;DR An email address must not exceed 254 characters. メールアドレスの長さは254文字を超えてはならない 背景 RFC5321 メールの送信のプロトコルについてのRFC。これが定義のようなもの。 ローカル部(@より前)の最大長は64文字 ドメイン部(@より後)…
イントロ Rustの文法勉強のためにatCoderのA問題解いてみたのでその記録です。 ほんとうに最初の文法を少しかじったくらいなので、間違っていることはあると思います。ご容赦ください。 実装 Submission #28516468 - AtCoder Beginner Contest 187 use std::…
イントロ Rustの文法勉強のためにatCoderのA問題解いてみたのでその記録です。 ほんとうに最初の文法を少しかじったくらいなので、間違っていることはあると思います。ご容赦ください。 実装 https://atcoder.jp/contests/abc189/submissions/28515807 use s…
NestJSのLoggerをいい感じにしていきたいが、ドキュメント見ただけでは最終的にどう動作するのかよくわからない。 いくつか試してみた。 参考ドキュメント Logger | NestJS - A progressive Node.js framework 準備 とりあえず色付きのログが出るようにロガ…
TypeScriptを書き始めて一ヶ月くらい経ったのだけど、まだまだ型を上手く使えている感じがしない。TSを書き始める前はPHPメインで書いていて、その時もある程度タイプヒンティングは使っていた。しかし、PHPは名称的型付けでTSは構造的型付けだし、PHPは実行…
永続化処理の返り値が、値orFalseになるのはいい実装といえるか? 単純なUserモデルの値を永続化する処理を考える。 このメソッドで、どういった値を返すのが適切なのかいまいち答えが出ない。 たまに、成功したら保存したオブジェクト、失敗したらfalseが返…
PHP書いていて、整数キャストした時にちゃんとバグなく動くのか気になったのでちょっと調べてみた。 調べた時のコードは以下。 GitHub - AnDeriens/type_researcher at v.0.1 int value result NULL int(0) 0 int(0) 1 int(1) '' int(0) '0' int(0) '1' int(…
たくさん開発用のディレクトリを作ってると、たまにローカルのディレクトリとGithubで管理しているリポジトリ名が異なってしまっていたりして、どこで開発していたかわからなくなったりします。 そういうときに、Githubのリポジトリ名で検索できたらいいです…
用語 この記事が一番整理されている? 自然キー・ナチュラルキー 人工キー・アーティフィシャルキー 代替キー・サロゲートキー 代理キー・オルタネートキー 複合キー blog.zelkova.cc AUTO_INCREMENTなサロゲートキーで困ること 主キーに外部キーを貼ること…
Pythonでリストをつくるときは乗算をつかって作ることができる。 x = ['.'] * 3 print(x) x[1] = '*' print(x) code しかし、二次元にすると、ちょっとおかしなことになる。 (1,1)だけ変えたいのに、(0,1), (2,1)も変わってしまう。 def present(l): for i i…
抽象クラスで定義したタイプヒントは、その子クラスで厳密に守られなければならない。 通常のクラスのタイプヒントだと、タイプヒントで指定したクラスの子クラスまで許容されるが、抽象クラスでは許容されない。
MacでMySQL立ち上げるときに結構ハマる。Failed to find valid data directory. Failed to find valid data directory.
AtCoder ARC107でつまづいたので、復習note。 桁が大きい計算で除算を使うと浮動小数の誤差が現れる。 なので、桁が大きいときは、切り捨て除算を使う。 # 桁が大きい計算で除算をすると誤差が出る n = 987654321 # 987654321 print(n) # 487730529388812672…
シェルスクリプト難しい…。 結論 pattern=[ABC] if [[ "$i" == $pattern ]]; then echo "$i mathces pattern $pattern." else echo "$i does not mathces pattern $pattern." fi その他 #! /bin/bash for i in A B C ABC "[A]" do if [ "$i" = 'A' ]; then e…
Monoar Rahman RonyによるPixabayからの画像 概要 2038年問題というのがあるらしい。 多くのケースで、timestampが内部的には32ビットの符合付き整数で、2038年1月19日3時14分7秒(UTC)にその上限を迎える。 ja.wikipedia.org MySQLも例外ではなくtimestamp型…