magcho's blog

ファイルアップロードをするUIとしてクリックするとOSのファイラーが開いて選択するタイプ、ドラッグ&ドロップでブラウザ外からファイルを持ってくるタイプ、クリップボードにファイルを保持した状態でCtrl-vで貼り付けるタイプなどさまざまなUIがあります。 それらについてE2EテストフレームワークであるCypressでどのようにユーザー行動を再現するかのメモです ドラッグ&ドロップでファイル選択 例えばこんなUIです↓ CypressにはClickやTypeなど、ユーザー行動をエミュレートするいくつかのActionが用意されていますが、ドラッグ&ドロップに相当するDropイベントは用意されていなため自分でActionを追加して対応します。 Actionを自分で追加するにはCostom Commandsという仕組みを利用します、似たようなことをされている方もいたので参考にしています https…

続きを読む

AWS Lamdaにデプロイをする場合は以下のようなファイルサイズ制限があります。 デプロイパッケージ (.zip ファイルアーカイブ) のサイズ50 MB (zip 圧縮済み、直接アップロード) 250 MB (解凍後) Serverless frameworkでデプロイする際もこの制限を受けます。この計算には関数実行に必要なものすべての合計になるのでアセットなどのプログラム以外も含みます。MLのモデルデータやsqliteファイルなどが原因で250MBをこえる場合に対応する話をします。 アセットデータをs3に別途保存しておきlamda起動時に毎回ダウンロードすることで回避はできるのですが、せっかくstart upが早いlamdaを利用しているのに関わらずs…

続きを読む

Jest でテストを実行すると といった表示とともに全てのテストが Pass になっているのに関わらず Jest のプロセスが数分間終了しない問題に遭遇することがあります。 エラー文で検索すると Puppeteer や DB コネクションの修了処理を忘れていてテスト時に起動した別プロセスが終了していないため、Jest がそれらの終了を待ってしまうことが多いみたいです。 このような場合はツールの修了処理を追加してあげれば改善することが多いのですが、このようなツールを利用していないプロジェクトで起きた場合は原因特定・修正をする必要が出てきます。 Jest のデバッグ実行 Jest には Chromium 系のブラウザに付いている Dev Tools を利用したトラブルシューティング機能があります。(Node.js の機能ですが Jest…

続きを読む

スタート当初はOpenAPIが存在せず、仕様を整理する目的で後からOpenAPIが追加されたプロジェクトがありました。OpenAPIの仕様を満たせているかは人力でレビューするのみでありスキーマを定義した旨味がないなーと思っていたので後からOpenAPIを追加した場合でも仕様を満たせていることを担保できる仕組みを整備しました。 SwaggerもといOpenAPIはAPIの定義ファイルから openapi-generator-cli などを利用して定義通りのリクエストであることを担保できます。しかしこの方法はプロジェクト立ち上げ時の既存コードがない状態ではいいですが、既存のコードがあるとこの自動生成コードに置き換える必要があり大変です。 既存コードではAxiosでリクエストを行いJestの単体テストを行う環境が整備されていたのでここに乗っかる形で自動テスト時にOpenAPI…

続きを読む

M5Paperの出荷時に書き込まれているファームウェアーをベースに機能を追加してみようと思い初期ファームウェアをvscode(platform.io)で開いたもののビルドできない&書き込めなくて困ったので解決方法をメモ 環境 MacOS Monterey ビルドエラー 初期ファームウェアのコード m5stack/M5Paper_FactoryTest をクローンし、vscodeで開いた後、ビルドをするとエラーで完了しない。 おそらくこのコードが書かれた以後、i2c…

続きを読む

先日VoxelabのAquilaという3Dプリンターを購入しました。以前から欲しいな〜と思っていた3D printerを一人暮らしを始めたしいい機会だと思って購入してみました。3Dプリンター自体は初めてではなく、今まではfab施設の方に3D CADのデータを送って出力作業はお任せしていたので実際に自分で印刷するのは初でした。 Aquilaシリーズの一番廉価モデルで2万円のものなのであまり期待していなかったのですが、届いて組み立ててみるとかなりちゃんとしています。無骨なアルミフレームのフォルムにガラスプレートがついています。かっこいい 試しにDEMOでついているデータを出力してみました。パラメーターの調整なしでもかなり綺麗に出力できています、2万円のプリンターすごい CAD ネット上にあるデータを印刷して遊んでいたのですが、そろそろ自分で作りたくなってきました。ちょうど3D printer…

続きを読む

先日Intel mac向けにemacs-ngをビルドする記事を書きました。しばらく使ってみましたが深刻な問題が起こることもなく常用できそうだったのでM1 mac向けにもビルドして普段使いしたいと思った次第です。 ビルド手順 ビルドに必要な依存関係をドキュメントに従ってインストールします。https://emacs-ng.github.io/emacs-ng/build/building/ 以下のコマンドでビルドします。 今回はとを有効化します。jsonの方はをbrewでインストールし、configure時にオプションを渡してあげればOKです。 native compilationの方は、現状コンパイラがlibgccjit…

続きを読む

EmacsにTabを追加するパッケージであるtabbar.elを使っています。このパッケージはBuffer名をエディタ上部に並べてくれる機能を提供します。 tabbar.elには標準でmajor modeごとにタブグループを作る機能があります、このグルーピングをproject名(.gitディレクトリが入っているディレクトリ名)ごとにまとめてVSCodeのマルチウィンドウのように扱いたかったので以下のようにして解決しました。 projectile.elに依存しているので別途設定が必要です。

続きを読む

初めに GitHub Actionsには2000分/月の無料枠がありますがビジュアルテストなど時間がかかりそうなテストをたくさん回そうとすると足りなくなることがあります。GitHubが提供しているSelf hosted runnerのエージェントを自前で用意したマシンに入れることで代わりの実行環境として利用できます。 VM Oracle cloudのARMマシンが余っていたのでこのマシンたちを利用して構築しました。セルフホストランナーをサポートするアーキテクチャとオペレーティングシステムに記載されているようにLinuxであればARMでも利用できます。 インストール Jenkinsのようにマシンにエージェントをインストールしてから設定するのかと思いきや、まず最初に設定するリポジトリ/Organizationの設定画面からnew self-hosted runner…

続きを読む

https://github.com/emacs-ng/emacs-ng 先日emacs-ngという通常のEmacsをforkしRustのWebrenderとDenoのランタイムを加えたプロジェクトを見つけました。READMEに記載されているように、完全な別プロジェクトというわけではなく定期的に本家のEmacsのmasterブランチの変更を取り込み、あくまでも現行のEmacsに新しいアイディアを付与するというプロジェクトらしいです。 現在のemacs-ngは本家の2021年8月24日時点のmasterを取り込んでいるためネイティブコンパイルも利用できます。 Ubuntu向けのバイナリであればGitHub Releaseで配布されていますが、MacOS向けのバイナリは配布されていないので自前でビルドする必要があります。ビルド方法はドキュメントページに記載されていますがPATH…

続きを読む

google analyticsを導入しています