Life is Really Short, Have Your Life!!

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

PythonでJSONを任意の型にデコードしたい

How to convert JSON data into a Python object? - Stack Overflow 一番簡単なコードがこれ。 import json j = json.loads(your_json) u = User(**j) こういうモデルを定義して、以下のようなコードを書いてFastAPIに食わせたら、普通に動いた。 from typin…

Next.js のgetStaticPropsのチュートリアルをTypeScriptで

nextjs.org 以下の所をTypeScriptで書くとこうなったので、共有。 function Blog({ posts }) { return ( <ul> {posts.map((post) => ( <li>{post.title}</li> ))} </ul> ) } // This function gets called at build time export async function getStaticProps() { // Call an …

Visual Studio 2022 17.2系 on ARM Windowsで、IDE固有のバグを2つ踏んだ模様

IDE起因のバグが2つもある。 Unrecoverable build error - 0x800700C1 インストーラープロジェクトでインストーラーが作成不可になった。 テストが実行されない 1週間前動いていたものが、テストが検出されなくなった。 Intel CPUのWindowsでは、最新版(17.2…

.NET Framework 4.8 → .NET 6 へ移行作業にトライ

死ぬほど重い腰を上げて、こちらにトライしてみた。そうはいっても、やることは単純だった。下記のUpgrade Assistantに沿って、Enterを叩きまくる簡単なお仕事。Enterを押す回数が多く、20回ぐらい押した。 dotnet.microsoft.com やってみた所、あっさり.net…

数値をバインドしてるTextBoxの入力値が空になるとエラーになる

WPF

現象の説明はこちらに詳しい。 Decimal? とかでnull許容型にしているデータをTextBoxへバインドすると、入力値を消して空にしたときに、赤枠でエラーが出る。何か入力したあとにバックスペースで空文字にすると、空文字として扱われてしまうため、NULLに変換…

PlanetScale、大変興味があります

qiita.com HerokuのMySQL AddonはRDSを$10から使えるのでその意味でコスパが良いけど、1時間に投げられるクエリの数に制限があり、一番安いプランはHDDで海外リージョン。今の所これが最もコスパが良い選択肢ではあった。ホストOSを管理しないで、LB/App/DB…

React x TypeScript、フィーリングッド

oukayuka.booth.pm こちらのReact3部作を全部買ったんですが、読み終わったらメインにも書くけど、このシリーズは最高です。 近年はPythonをメインにすることが多く、TypeHintも真面目に使ってこなかった。Flutterやり始めてDartを使うようになり、Dartの癖…

HerokuのJawsDBでmax_questions error

Herokuで借りているMySQL(JawsDB)で、2万件弱のSQLを発行する処理(データの一括登録)を投げてしまったら、以下のエラーが出た。 "User 'hogehogehoge' has exceeded the 'max_questions' resource (current value: 18000)") devcenter.heroku.com sharedプラ…

2022年はフロントエンドの年になる(個人的に)

あけおめあけおめ。 2021年からFlutterマンになった。フロントエンドは、技術以外の課題にも向き合えるのが自分に向いている。サービスフローであったり、UXのあり方であったり。 Flutterは中級駆け出しにはなれたので、次はFlutterのマザーにあたるReactを…

FlutterのWidgetTest攻略メモ(随時更新)

WidgetTestを書いていて、Riverpodでビューの操作を行うクラスを全部DIして、ProviderのOverrideでMockに差し替えることをやっている。Mockにはmocktailを使っていて、このテスト戦略はシンプルでよい。サクサクテストが書ける。 riverpod.dev どうせ忘れる…

DockerのSelenium-HQで「cannot create temp dir for user data dir in chrome driver」

DockerのSeleniumで、こんなエラーが出ました。 Unknown error: cannot create temp dir for user data dir in chrome driver MacのDockerのディスクが32GBで、30GB使っていた。2GBあったらええんちゃうかと思ってたけど、足りないようで... MacのDockerのデ…

FlutterのWidgetテストをちゃんとできるような設計にするお勉強

FlutterのテストにはUnit / Widget / Integrationの3つの段階があるが、外部データソースのアクセスを利用しないでDartのオブジェクト上だけでテストを行うのが、UnitとWidgetのテスト。 とはいっても、昨今で外部リソースを一切使わないケースはない。 HTTP…

FutureProviderを持つ親画面を、子画面から更新する

Riverpodネタは続く。 カート一覧→タップで数量更新→画面が戻った時にカートが更新・・・されない!データは書き換わっているが、UIが更新されていなかった。 一覧画面のデータFutureProvider.autoDisposeを使って、画面下部のタブに表示している。iPhoneは…

RiverpodのProviderが管理するStateに引数を与えて初期化したい

画面遷移とかでよくあるよね。一覧から行タップで詳細に遷移する系のやつ。商品一覧→商品詳細みたいなやつです。 Riverpodが提供するProviderにはfamilyという関数があり、Providerを初期化する際に任意の型の引数を与えることができる。今回は、StateNotifi…

RiverpodでinitStateを使わず、autoDisposeでUIを再構築する

FlutterのRiverpodの話。 10月に入って、作りかけのアプリのProvider -> Riverpodへのリプレイスを行っています。zennで公開されているRiverpod解説には大変お世話になりました。 ひとつわからなかったのが、「タブを切り替えた時に自動でそのページの中身を…

Android StudioでUnable to find bundled Java version

flutter doctorでこの警告が出る場合。一定の手順に沿って行うだけ。JetBrain Toolboxを使っている人の対応策も書いてあった。 Macのユーザー名とAndroidStudioのバージョンは、その時の最新に差し替えれば良さそう。 stackoverflow.com cd /Users/<USER_NAME>/Library/</user_name>…

FileSystemObjectがネットワークドライブ上のファイル探索でクソ遅い件

VBA

ネットワークドライブ上の35個のExcelファイルのOPEN→転記に30分近く要していた。 おせえええええええ、死ねええええええ。 理由はわからないけど、FileSystemObjectを使ってネットワークドライブ上のファイル走査すると、クソ遅い。なので、Dir関数を使う方…

Prism8のContainerLocatorへの対応

日本でWPFのPrismやってるの100人いるかどうかじゃないかな。なんでWindowsのデスクトップアプリなんか作ったんだろう。 Prism8が2020年の10月頃にリリースされ、破壊的変更が入った。ServiceLocatorがなくなってContainerLocatorに変わりました。それだけ言…

Pycharmで"Couldn't refresh skeletons for remote interpreter"が出る

MacのDockerの設定の問題だった。 ここにUser Docker Compose v2とある。このチェックを外したらエラーが出なくなった。 $ docker --version Docker version 20.10.7, build f0df350 $ docker-compose --version Docker Compose version v2.0.0-beta.6 # suc…

HerokuでRoute53で独自ドメイン(サブドメイン)運用

秒で終わったのでメモ。 ドメインを追加する。hoge.goza.comとする。 追加後、goza53.herokudns.comみたいなドメインが 発行される。 hoge.goza.com のCNAMEに上記のドメインをあてるだけ。 あとはHeroku側のACMで色々やってくれて、SSLも作ってくれる。 1分…

heroku.ymlでDockerイメージをデプロイするメモ

Heroku簡単じゃん。ビビるわ。 AWSのALB+Fargate+Auroraでちょーモダンな環境作るぜって息巻いていた。ただ、やっぱりAWSはインフラ構築の手順が色々あって(VPCだるい)、AWS力が低い私には一抹の不安があった。 Herokuだと「Dyno+JAWSDB」で、ALB+Fargate+Au…

PC-FAXで初期値に宛先を与えたい

C#

この質問と全く同じ。 detail.chiebukuro.yahoo.co.jp 富士ゼロックスの複合機はパソコンからダイレクトにFAXを送信する機能がありますが、当然ながらFAX番号を指定しなければなりません。 現在つくっている業務アプリでは、FAX送付先をデータとして保有して…

AppStore Reviewガイドラインで、アカウント削除機能がマストになった件

qiita.com If your app supports account creation, you must also offer account deletion within the app. 今後新規に作るアプリが対象になるのかなぁ。5年前に作ったアプリはログイン前提でアカウント登録の動線すらないけど、昨年アップデート申請したら…

ChromeDriverでtype="date"の扱いに注意が必要だった

これはちょっとハマった。 thinkami.hatenablog.com input type="date" を指定したHTMLは、Chromeの場合、以下のように年、月、日で各々別々のフォーカスを持ってしまうため、clear()とかやっても、全然消えない。 上記のエントリはC#だったが、PythonのSele…

Terraformをやってみた

AWSを触るのは2年ぶりぐらいかな… インフラはVPSに逃げがちでしたが、VPSで頑張ってもなんの成長にもならんので、AWSでインフラをコード化することにトライした。CloudFormationは、色々とググったYAMLを見た時にこれをちまちま書くのは無理!と思ったのでス…

Flutterのテストは、ウィジェットレベルだけでよくね

Flutterには3段階のテストパターンが存在する。 Unit Test Widget Test Integration Test アプリケーションの性質にもよるだろうけど、ローカル or HTTPでデータをフェッチして表示するというロジックが多くを占める場合、Unit Testでテストすることがかなり…

Flutter(iOS)でアプリがアンインストールされたかを知る

キーチェーンに書き込んだ情報はアプリがアンインストールされても残ってしまうので、ユーザーがアプリを再インストールした時にそのtokenが残ってちょっとやだ、みたいなケース。 結論から言うと、NSUserDefaultsに書き込んで逃げるしか無いっぽい。アプリ…

Flutterで任意の画面までPopUntilしたい

商品検索 商品詳細 会員登録 or ログイン ログインページ こういうページ遷移の時、ログインページでログインが完了したら、2番の商品詳細に戻したい場合のTipsです。 2の商品詳細は、1の親画面でタップされたデータを元に画面を初期化するので、予めroutes:…

大量のライブラリの面倒を見てくれるFlutterのありがたみ

Flutterを簡単に言えば、Dartでアプリを作るとiOS/Androidのネイティブアプリのプロジェクトに翻訳して、ネイティブアプリをワンソースで出来る仕組みです。 その中で、Flutterが提供してくれる多くのウィジェットや通信・DBのライブラリなどがあったりする…

Friendlyで「出来たらいいな」2つ

C#

WPFアプリのE2Eテストを書く必要があり、Friendlyを触ってみた。 ishikawa-tatsuya.hatenablog.com 2つほど出来たらいいな、があった。 1. ViewModelのオブジェクトを取りたい //WindowControl w var vm = w.AppVar.Dynamic().DataContext(); if(vm is Hoge…