Life is Really Short, Have Your Life!!

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

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のウィジェットツリーの再構築が同期さ…

WPFでコンボボックスの選択値が共有できない

WPF

印刷プリンタのコンボボックスを作っていて、その選択値を様々な画面で使い回したいのだが、非常にハマった。今も解決できない。 ViewModelBaseというクラスを作り、そのプロパティを継承したら行けるかと思ったが、ダメだった。ViewModelBaseのコンストラク…

SQLAlchemy2.0スタイルメモ〜scalars〜

FastAPIならasyncで全部行きたいねってことで、プロダクトのコードをFlask→FastAPIに書き直している。 で、簡単なクエリの動作確認で、こんなコードを書く。 async def get_posts(db: AsyncSession) -> List[Post]: result: Result = await db.execute(selec…

EPSON VP-4300で「EJL 1284.4@EJL」という文字列が常に印字される

USBでドットインパクトプリンタとWindowsマシンがつながっている状態で、プリンタの共有をかけた。この共有プリンタをインストールしたクライアント側で、必ず EJL1284〜 とかいう文字列が出るようになってしまった。 ぐぐってみたら先駆者がいた。 okwave.j…

FlutterでUnixTimeをDateTimeに変換する

Firebaseのライブラリが国際化対応しているため、日時をUnixtimeで持っていた。 それをDartでDateTimeに変換するときのコードで、癖があったのでメモ。 www.kindacode.com final timestamp1 = 1627510285; // timestamp in seconds final DateTime date1 = D…

'Timestamp isn't a type' により、flutter buildが通らない

Firestoreのタイムスタンプ型をDartのDateTimeに変換する時に、1時間ほどハマってしまったので。 freezedを使っている人は多いと思いますが、DateTime⇔Timestampを変換するには、以下のようなコンバーターを噛ます必要があります。 class TimestampConverter…