AnDeriensのブログ

個人的なブログです

Tech

Pythonの背骨はけっこうゆるい?

Pythonは雰囲気で使う言語なのかもしれない。

Reactでのクリーンアーキテクチャについての一考察 – MaterialUIコンポーネントをラップしたAtomレベルコンポーネント

ReactでUIライブラリに依存しないクリーンなアーキテクチャにするのを試してみようと思って、MaterialUI(以下、MUI)のコンポーネントをラップした自作コンポーネントの作成を試してみた。

Python文法学習 - クラス編

Pythonの文法キャッチアップノート。クラス編。

jestでメモリリークするのでテストを分割実行する

テストの規模が大きくなってきたタイミングで、jest でメモリリークしてしまいなかなか回避できなかった。 FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory 以下のissueを見てる感じ、根が深く…

TypeScriptでEnumの代わりにas constを使う

TypeScript ではEnum型が標準で用意されているが、使いづらい。 多くの場合、Enumで列挙したいような値は、as const で代用するのがいい。 例えば、自社で扱う果物を列挙する場合、 const FRUITS = { APPLE: 'apple', ORANGE: 'orange', BANANA: 'banana', }…

TypeScriptでCONSTANT_CASEからlowerCamelCaseに変換

CONSTANT_CASE -> lowerCamcelCase コンスタントケースからロウアーキャメルケースに変換します。 function toLowerCamelCase(v: string) { const upperCamel = v.toLowerCase().split('_').map((str) => str.charAt(0).toUpperCase() + str.slice(1).toLowe…

トップライン開発とボトムライン開発

トップラインとはいわゆる「売上」のことで、ボトムラインとは「営業利益」のこと。 トップラインを上げるためにとるべき開発手法と、ボトムラインを上げるためにとるべき開発手法は違うだろうとふと思った。 トップライン開発は、とにかく100万円払ってでも…

Prismaとリポジトリパターンの相性

Prismaとリポジトリパターンのポエム。※結論や答えのようなものはこの記事には含まれていません。

UnionTypeはclassのinterfaceとして使えない[TypeScript]

どうやらUnionTypeはimplementsできないらしい。

CLIツールのコマンドの引数の順番で迷った

CLIツールを作るときに引数の順番どうしようかなと迷ったので、その記録。

メールアドレスの長さ

TL;DR An email address must not exceed 254 characters. メールアドレスの長さは254文字を超えてはならない 背景 RFC5321 メールの送信のプロトコルについてのRFC。これが定義のようなもの。 ローカル部(@より前)の最大長は64文字 ドメイン部(@より後)…

初心者がRustで解くatCoder ABC187 A - Large Digits

イントロ Rustの文法勉強のためにatCoderのA問題解いてみたのでその記録です。 ほんとうに最初の文法を少しかじったくらいなので、間違っていることはあると思います。ご容赦ください。 実装 Submission #28516468 - AtCoder Beginner Contest 187 use std::…

初心者がRustで解くatCoder ABC189 A - Slot

イントロ Rustの文法勉強のためにatCoderのA問題解いてみたのでその記録です。 ほんとうに最初の文法を少しかじったくらいなので、間違っていることはあると思います。ご容赦ください。 実装 https://atcoder.jp/contests/abc189/submissions/28515807 use s…

NestJSのLoggerの挙動を調べてみた

NestJSのLoggerをいい感じにしていきたいが、ドキュメント見ただけでは最終的にどう動作するのかよくわからない。 いくつか試してみた。 参考ドキュメント Logger | NestJS - A progressive Node.js framework 準備 とりあえず色付きのログが出るようにロガ…

型ってよくわからない

TypeScriptを書き始めて一ヶ月くらい経ったのだけど、まだまだ型を上手く使えている感じがしない。TSを書き始める前はPHPメインで書いていて、その時もある程度タイプヒンティングは使っていた。しかし、PHPは名称的型付けでTSは構造的型付けだし、PHPは実行…

リポジトリ層のinsert/update処理の返り値

永続化処理の返り値が、値orFalseになるのはいい実装といえるか? 単純なUserモデルの値を永続化する処理を考える。 このメソッドで、どういった値を返すのが適切なのかいまいち答えが出ない。 たまに、成功したら保存したオブジェクト、失敗したらfalseが返…

PHPでキャストした時の挙動

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(…

ローカルにあるGitのリポジトリを検索

たくさん開発用のディレクトリを作ってると、たまにローカルのディレクトリとGithubで管理しているリポジトリ名が異なってしまっていたりして、どこで開発していたかわからなくなったりします。 そういうときに、Githubのリポジトリ名で検索できたらいいです…

DBの主キーに関するノート

用語 この記事が一番整理されている? 自然キー・ナチュラルキー 人工キー・アーティフィシャルキー 代替キー・サロゲートキー 代理キー・オルタネートキー 複合キー blog.zelkova.cc AUTO_INCREMENTなサロゲートキーで困ること 主キーに外部キーを貼ること…

Pythonの二次元リストを作る際に気をつけたいこと

Pythonでリストをつくるときは乗算をつかって作ることができる。 x = ['.'] * 3 print(x) x[1] = '*' print(x) code しかし、二次元にすると、ちょっとおかしなことになる。 (1,1)だけ変えたいのに、(0,1), (2,1)も変わってしまう。 def present(l): for i i…

PHPの抽象クラスで定義したタイプヒントは厳密

抽象クラスで定義したタイプヒントは、その子クラスで厳密に守られなければならない。 通常のクラスのタイプヒントだと、タイプヒントで指定したクラスの子クラスまで許容されるが、抽象クラスでは許容されない。

MacOSXでMySQL8.0が立ち上がらない問題にハマった

MacでMySQL立ち上げるときに結構ハマる。Failed to find valid data directory. Failed to find valid data directory.

Pythonの浮動小数点は誤差を含む

AtCoder ARC107でつまづいたので、復習note。 桁が大きい計算で除算を使うと浮動小数の誤差が現れる。 なので、桁が大きいときは、切り捨て除算を使う。 # 桁が大きい計算で除算をすると誤差が出る n = 987654321 # 987654321 print(n) # 487730529388812672…

bashで正規表現を使ってどれか一文字にマッチさせる

シェルスクリプト難しい…。 結論 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…

2038年問題とMySQLでの対策

Monoar Rahman RonyによるPixabayからの画像 概要 2038年問題というのがあるらしい。 多くのケースで、timestampが内部的には32ビットの符合付き整数で、2038年1月19日3時14分7秒(UTC)にその上限を迎える。 ja.wikipedia.org MySQLも例外ではなくtimestamp型…

zshの起動に失敗する

iTermを起動する際に、tmuxとzshも起動するようにしているのだが、突然zshの起動に失敗し、普段出している情報とかが表示されなくなった。 zshが動いているかを見ると、 $ echo $SHELL /bin/zsh となるので、一応起動しているよう。 次に、zshを再度起動して…

親クラス内から子クラスでオーバーライドしたメソッドを呼べるか

親クラスに定義したメソッドの中から、同じクラス内のメソッドを呼んだとき、 子クラスでオーバーライドしたメソッドが呼ばれるのか、親クラスのメソッドが呼ばれるのか? メソッドをprotectedにする name = $name; } // このメソッドを子クラスでオーバーラ…

システム開発計画書に必要なこと

計画書を作成する機会があったので、それに伴って何を書くべきかをまとめた。 今後の参考のために。 計画書に必要なこと PM初心者でも出来る?プロジェクト計画書の作り方~無料サンプル付き!~ | プロジェクト管理・工数管理「イノピーエム」 組み込みソフ…

RubyOnRailsを始めてみる

RubyOnRailsめちゃ多くないですか。 一回くらい触ってみなきゃなってことで、開発環境構築に着手。 参考ページ Dcokerの公式ページがこれ Quickstart: Compose and Rails https://docs.docker.com/compose/rails/ それをちょっと噛み砕いてくれているのがこ…

BoostnoteのノートをGitで管理

boostnote.io Boostnote、とても使いやすいMarkdownエディタで重宝しています。 ただ、基本的にはローカルで使うエディタで、複数端末間で同期しようとすると少し工夫がいるっぽいので、どうしたもんかと思ってました。 まあエンジニアらしくGit管理がいいか…