NestJS 製のプロジェクトのテストを@swc/jest で高速化する

NestJS は Node.js 向けのウェブフレームワークです。その特徴として Decorator を用いてクラスやメソッドにアノテーションをする仕組みを提供しています。 例えば API のエンドポイントを定義する場合は次のようなコードを実装します。 import { Controller , Get } from '@nestjs/common' ; @Controller ( 'cats' ) export class CatsController { @Get () findAll () : string { return 'This action returns all cats' ; } } 高速

CloudFront + API Gatewayの構成でCloudFront-Is-Mobile-Viewerなどのヘッダーを参照する時の注意点

はじめに CloudFrontからオリジンへのリクエスト時に特定のHTTPヘッダーを含めるには、オリジンリクエストポリシーの設定が必要です。 docs.aws.amazon.com CloudFrontを使用すると一部HTTPヘッダーが書き換えられ、特に User-Agentヘッダー は Amazon CloudFront になってしまい、オリジンサーバーでUser-Agentを利用してデバイスの判定ができなくなります。 ただし、オリジンリクエストポリ

Mapbox GL JS で大量のデータを可視化する

はじめに 駅メモ!チームでエンジニアをしている id:wgg00sh です. 駅メモ!では2021年11月に「未取得の駅を地図で確認できる機能」をリリースしました. 今回はこの機能を実現するにあたって発生した問題の一例と,その問題をどのように解決したかについて,使用した地図ライブラリである Mapbox GL JS の使い方と合わせて紹介していきます 地図上に全ての駅を表示する

VS Code + Code Runner でPerlテストをボタン一つでprove実行

普段Perlのテストはターミナル上で prove t/hoge.t で実行しています。 これを楽するために、VS Codeの拡張機能 Code Runner - Visual Studio Marketplace を使い、編集中のファイルを開いたまま、ボタン一つで実行できます。 拡張機能 Code Runner をインストールします settings.json を開いて以下の設定を追記します { " code-runner.executorMapByGlob ": { " *.t ": " prove " } , VS Codeウ

miroをもっと使いたい!miroアプリ 3分クッキング

miro アプリ 弊社は モバワーク を導入していて、チームメンバーも普段はフルリモートワークをしています。 チームでは オンラインホワイトボード として miro を導入していて、例えばこんな事に使ってます。 ボード上でタスクチケットの管理 残りタスクと進捗の可視化 タスクの見積もりと作業可能時間の集計と比較 特に最後はmiro SDKを使ったmiroアプリを開発して実現

hyperfineを使ったCLIツールのベンチマーク

CLIツールのパフォーマンス気になりますね 皆さん普段様々なCLIツールをご利用かとは思いますが、そのCLIツールのパフォーマンスが気になったことはありませんか?私はまれによくあります。今回はそういうときに役に立つ hyperfine をご紹介です。 github.com 基本的な使い方は以下のとおりです。 $ hyperfine ' ここに測定したいコマンドを書く ' sleep 0.3 を測定すると以下のよ

MySQL 5.7 でクエリだけでランキングを実現する方法

ここ半年、競プロをこつこつ頑張っているエンジニアの id:dorapon2000 です。好きなアルゴリズムは累積和です。 解決したい課題 「MySQL 5.7 内で完結できるように、クエリだけでランキングを取得したい」 データベースのデータを使って調査をする際、ランキングを出したいこと、あるいはランキングを基にした処理をしたいことがあります 1 。アプリケーション側で集計・

外からやってくる値から TypeScript の型を守るライブラリ・ツールまとめ

こんにちは、新卒エンジニアの id:d-kimuson です 先日 type-predicates-generator という型定義からユーザー定義型ガード・アサーション関数を自動生成するツールをリリースして 紹介記事 を書いたのですが、感想とかを眺めていたら同じく外部から来た値に安全な型付けをするためのライブラリやツールの情報をいくつも観測しました この辺りのランタイムチェックライブラリ

プロダクトバックログが複雑すぎる!

はじめに はじめましての方ははじめまして、ブロックチェーンチームの id:Nanamachi です。夏頃まではエンジニアとして関わっていましたが、故あって現在はプロダクトマネージャとしての道を進んでいます。今日はそんな新米プロダクトマネージャが、膨れ上がるプロダクトバックログ、特にその中で発生するチケットの依存関係を可視化するために、ホワイトボードツ

Vue.jsでoffsetWidth, offsetHeightが取得できない時は

はじめに offsetWidth や offsetHeight などの幅や高さを取得する関数たちは、 display: none になっている場合、0を返します。 Vue.jsで要素の表示非表示に v-show を用いている場合、 v-show はその要素に display: none を付与して制御を行うので、非表示中の offsetWidth は0として返ってくることになります。 < template > < div > < p v-show= "false" > ここのoffsetWidthは0pxです! &lt

行動を妨げる指標の罠

チーム開発で、指標をうまく使えると便利ですが、この「うまく使う」というのはなかなか難しく、罠はあると思っています。 今回は、この罠を、信号機に例えて、説明してみたいと思います。他にも、罠があればぜひ教えてください! 壊れた信号 壊れた信号 データが壊れていて、信用できない そのまま放置されている 信号無視 信号無視 人によって、良し悪しの判断

コミットメッセージにブランチ名を自動挿入する

こんにちは、新卒エンジニアの id:kaoru-k_0106 です 何をしたか 私のチームでは、コミットメッセージの先頭にチケット番号を入れるルールがあります。 例えば、 PROJECTNAME-123 〇〇の処理を変更した だと、 PROJECTNAME-123 の部分がチケット番号です。 最初はこれを手動で入力していたのですが、時々入力を忘れることがあり自動挿入しようと思いました。 ちょうど、トピック
Git

Perlのコンテキストクイズにツールで答えてみた

はてなさんのコンテキストクイズに拙作の Contextual-Diag で答えてみました。これでコンテキストマスターですね!? github.com use Test2::V0; use CDD; like( warnings { length ( cdd ) }, [ qr/wanted SCALAR context/ , qr/evaluated as STR/ ], 'length <ここ> ... STR in SCALAR' ); like( warnings { if ( cdd ) {} }, [ qr/wanted SCALAR context/ , qr/evaluated as BOOL/ ], 'if (<ここ>) ... BOOL in SCALAR' ); like( warnings { for my $i ( cdd ) {} }, [

特定のディレクトリだけパーミッションを確認したい

TSの型迷宮に迷い込んだエンジニアの id:dorapon2000 です。 ディレクトリのパーミッションを調べるとき、皆さんどうしていますか。例えば /etc のパーミッションを確認したいとき、以前の僕はこうです。 ❯ ls -l / total 104 drwxr-xr-x 2 root root 4096 6 月 28 18:34 bin drwxr-xr-x 3 root root 4096 6 月 28 18:35 boot drwxr-xr-x 15 root root 3640 11 月 16 10:02 dev drwxr-xr-x 128 root root 12288 11 月 2 10:55 etc drwxr-xr-x 4

DBIのcanは、関数が生えているかでなく、実装されているかどうかを判定する

 次のコードの通り、 DBIx::Sunny を利用した際、 $dbh->select_one を呼び出せるにも関わらず、 $dbh->can('select_one') が false となります。   can の挙動が、デフォルトと異なり、一見すると困惑します。 use Test2::V0; use DBIx::Sunny; use Types::Standard qw(HasMethods) ; my $dsn = "dbi:SQLite:dbname=test.db" ; my $dbh = DBIx::Sunny-> connect ( $dsn , 'root' , '' ); ok ! $dbh->can ( 'select_one' ), '不思議な挙