Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

ユーザー独自属性をどう作るかみたいな話

例えばお問い合わせフォームとかで、名前とメアドは必須とする。ただ、あるユーザーはドロップダウンで予算種別や流入経路を出したい、とあるユーザーはFAX番号も出したい、みたいなやつ。 スキーマレスのFirebaseの場合ユーザーごとにスキーマ作れば終わる…

組織が抱える過剰な忖度文化というパワーワードに感銘を受けた件

この会社さんが仰ってること、非常によく分かる。 cgo-gal.com 過剰な忖度文化というフレーズがいいし、上司にそうですねと言わないといけないとか、全く同感。もちろん相槌を打つのはあると思うけど、それしか言わなかったお前は何も表現してねぇだろって話…

TypeScriptで好みのORMが見つからない問題

TypeScriptでバックエンドを書いちゃう皆様、ORMは何をお使いですか? 私はシェアが大きい Prismaを使ってみたんですが、どうも肌に合いません。その理由は以下のようなものです。 1. 独自スキーマ定義はいらない ORMの特徴として、テーブルのスキーマに合わ…

IOバウンドがメインなら言語の差は誤差じゃね

クライアント⇔BFF⇔他言語APサーバやるぐらいなら、クライアント⇔APPサーバ on TS(ランタイムはbunでもnodeでも)でFullStackで良くねに思える。ほとんどがIOバウンド主体だし。でも、個人開発じゃ大規模なリクエストでも問題ないっすわ!とも言えず、モニョモ…

RemixでVertical Sliceをやろうぜ

自分がNext.jsに拘りNext.jsを使う主な理由は、SSGとかSSRとかというよりはサーバーサイドの処理をNext.jsの中に書きたいからんで、End to Endの型安全とVertical Sliceを徹底したいからこれに限る— けい©︎:プログラマーアイドル (@k1_c_) 2024年5月16日 UI…

Remixはこれから間違いなく伸びていくので、2025年頃が楽しみ

気が変わった。T3 Stackそのものは推して行くが、Theoさんの推す構成ではない。 aroundthedistance.hatenadiary.jp フルスタックはReact前提に RailsでフルスタックWebフレームワークの扉が開いた。Rails,Cake.Django等は、MVCのMCがメイン。Vが弱い。Vにテ…

npx prisma generate したのにPrismaClientがanyになったら

VSCodeの Reload Windowで解決した。。。ようです。。。60分返して...

Pythonで小数点の計算をする時、strでキャストすべし...

まじかよ... dev.classmethod.jp decimalモジュールに記載がある通り、float型ではなくstr型にすることで回避できます。 ですので、実装時にはstr型にキャストしたほうが良いと思います。 >>> from decimal import Decimal, ROUND_HALF_UP >>> (Decimal(1750…

Jotai めっちゃ良いじゃん...

nulab.com WeakMapを使っておりコンポーネントツリーがdisposeされるタイミングでGCが走る Mockを作るのが簡単 非同期処理に対応している atomの中でatomを参照でき、リスナーが作れる WeakMapの話はこの辺に詳しい。フロントエンドあるあるだね。ARCを採用…

WordPressの検索機能のカスタマイズ

post_typeを追加したいという要件だった。これで瞬殺。 is_search) { $query->set('s', $query->get('s')); $query->set('post_type', ["post", "page", "YOUR_POST_TYPE"]); } } add_filter('pre_get_posts', 'custom_search_query'); WP_Queryで指定できる…

FlutterのFirebase MessaingにおけるonTokenRefreshがよくわからない

このAPIすげー微妙な気がする。使い所がわからない。毎回 getToken でデバイストークンをぶん投げてええんちゃうって思う。 端末が変わる、アプリの再インストールでは自動的に新しいデバイストークンが採択されるから、onTokenRefreshが呼び出されることが…

FlaskのBluePrintで404を指定することは出来ない

Flaskの仕様で、404のエラーハンドラーを blueprint 毎に定義することが出来ず、ちょっとハマった。 以下の公式にあるように、Flaskのアプリケーションそのものが、404になるURLがリクエストされた時にどのblueprintのエラーハンドラーを呼び出していいかわ…

Flutterだけやってるのが怖くなってきた話

2年半ぐらいFlutterをやっているし、今後もやっていくのですけれど、初学の頃に比べると刺激がなくなってきた。 「やらなければできない」ことが減っていることが怖い。 UIの実装ができれば、悩みどころは状態管理・Widgetの初期化と後処理・デザインシステ…

ビジネスロジックのAPIをオーケストレーションするDSLをどう作るのか

早くこれになりたい。本当にそう思う。 SaaSは最終的には業界特有のビジネスロジック満載のAPI群とそれを駆動するDSLを駆使したプラグインの塊みたいになって、全体アーキテクチャが破綻しないかだけ注意深く日々パトロールしつつ、あとはBiz側の要望に合わ…

令和のフルスタックWebフレームワークは、T3 Stackじゃないかな〜

qiita.com ここに書いてあるBeforeのコードに強い危機感を覚えている。あそこまでこんがらがってはいないけど、jQueryとテンプレートエンジンでお茶を濁してバックエンドとフロントエンドの境界が曖昧になり、つらみがある点は自分も同じなので。 Railsでフ…

T3 Stackすげえ。2023年はこれを追いかけるわ。

create.t3.gg ちらっとTodoアプリを作ってみたけど、これが令和のフルスタックWebフレームワークなのかと驚いた。特に tRPC がすごい。どういう理屈なのかわからないけど、フロントとバックをシームレスにつなげてくれる。APIのエンドポイントを書かなくてい…

イミュータブルの次は何が来るのかな

ここ数年のソフトウェア開発の大きな傾向として「イミュータブル(不変)」というキーワードがあると思う。 インフラはIaCが当たり前になった。IaCは、インフラのイミュータブル化。ChefやAnsibleが10年ぐらい前に出てきてIaCのムーブメントがあって、インフラ…

WTFormsで GETで飛んできたパラメータを捕捉する

ちょっとハマった。結論から言うとこれで動いた。 @app.route("aaa") def user_summary(): form = UserForm(request.args) request.argsを引数に入れると、フィールドの変数と同じ名前のパラメータのデータを紐付けてくれる。 この引数が入っていないと、フ…

Cloud Runのアイドル時間課金がすごく大きくなってしまった話

GCP

今月の半ばから、VPS/Herokuを卒業して、全てGCPに移してCloudSQL x Cloud Runに切り替えた。 BtoB向けのシステムをやっている関係上、営業時間がすぎるとほとんどアクセスされない。CloudRunの最小インスタンスを1にしておくと、アイドル時間にもメモリとCP…

Tailwind CSSを学習しているメモ

MITなBootstrapテンプレートをゴニョゴニョして今ひとつな管理画面テンプレートを場当たり的なCSSとjQueryでカオスになる人生に終わりを告げたいので、Svelte/Reactでリスキリングしている。 というわけで、CSSの再学習にちょうどよいなと思ったのが、ユーテ…

Google Playにリリースする時だけ、Firebase Authenticationが動かない

Firebase Authenticationに限らないと思いますが、半日ハマったので備忘録。こちらにすべてが書いてあった。 minpro.net 「Google Play」を経由してAndroidアプリとしてリリースする場合は、Android Studioで取得した「SHA-1」「SHA-256」ではなく、「Google…

モダン・フロントエンドに慣れるとWPFクソだるい

WPF

2014〜2015年頃はWPFのMVVMを面白がっていたのだが、2022年の今となってはだるい。もっと言うとオワコン。 宣言的な書き方ができないし、バインディングの補完が効かない(できるのかな?) XAML側でバインディングを書く時に、脳内でこのパラメーターだよねっ…

StatefulWidgetを一切使わずRiverpodだけで頑張りたいお気持ち

2年近くFlutterをやっていて、データストアにRiverpodを使っている場合 StatefulWidgetはまじで要らない子なんじゃないかと思い始めている。disposeする対象の管理が面倒でメモリリークする可能性があり、良いことがない。コードも色々増える。 StatefulWidg…

Reactの学習を辞めてSvelteで開発しようかなというお気持ちが

lealog.hateblo.jp こちらの記述がピンズドだった。 原初の時代からReactな案件をそれなりにこなしてきたけど、今でもReact-wayですべてを考えるのはやっぱり小難しいな〜って思うし、このEasyではなくSimpleに極振りしたAPIセットを使いこなすのまじムズい…

ReactでUIコンポーネント作る粒度の温度差について

Checkboxのコンポーネントを作るになんでこれだけのコード量が必要になるのだろうか... Hooksもふんだんに使われている。 github.com import React, { useCallback, useEffect, useRef, useState } from "react"; import styled from "styled-components"; i…

CloudSQL にローカルから接続するメモ

GCP

GCP SDKのインストール(任意) $ brew install --cask google-cloud-sdk $ source /opt/homebrew/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc $ source /opt/homebrew/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.…

Google 認証のしょーもないエラー

Unhandled Exception: PlatformException(network_error, com.google.android.gms.common.api.ApiException: 7: このエラーが出て、なんだろうと思ったら、なんてことはない、検証機AndroidのWifiが切れていて、インターネットにつながっていなかった... ち…

SQLのINとEXISTSの違い

Sql

ユーザーテーブルと、そのユーザーが好きなプログラミング言語というテーブルがあるとします。 ユーザーテーブル(UserTable) id name 1 山田 2 村上 3 中村 好きなプログラミング言語テーブル(FavLangTable) id user_id lang 1 1 Python 2 1 PHP 3 2 TypeScr…

SQLAlchemyのEager Loadingをいい感じにやる

SQLAlchemy==1.4.37 N+1のlazy fetchをしたくない場合、eager loadというJOIN時に予めデータを持ってくる方式があります。SQLAlchemyでも、Railsでも、この辺は一緒。Alchemyの場合、孫のテーブルをJOINした時もそれらが出来る。 数時間苦戦したので、Eager …

Asynchronous Gap on BuildContext

Flutter2.x系からこの問題がフィーチャーされるようになった気がする。1.xの時はそこまで。 どんな問題? 非同期でサーバーにデータを送った後、ダイアログを閉じるようなケース。 非同期でawaitを入れた所で、Flutterのウィジェットツリーの再構築が同期さ…