プログラミング

vimでブラウザ無しでのMarkdownのプレビュー表示をする

はじめに 先日、Mac Studioを買いました。 せっかくの機会なので、VS Codeはインストールせずvimだけを使って生きていく挑戦を始めてみました。 vimはほとんど使ったことがなかったので、一回ぐらいはちゃんと使っておこうという気持ちです。 VS Codeではデ…

PlaywrightのCopy promptでAIによるデバッグを効率化する

はじめに 2025/03/07にリリースされたPlaywright v1.51.0には、「Copy prompt」という機能が追加されています。 これは、Playwrightによるテストが失敗した場合に、LLM向けにまとめた情報をコピーできる機能です。 Copy promptを利用することで、エラーに関…

PostmanのCapture HTTP traffic機能を使うとCLIツールのデバッグが楽になる

この記事は、Postman Advent Calendar 2024 23日目の記事です。 はじめに 先日、GoでCLIツールを作ってみました。 詳細は以下の記事で書いているので、もしよかったら読んでみてください。 engineers.ntt.com 今回は、CLIツールを作る過程でPostmanのCapture…

MastodonのOpenTelemetry対応をちょっとだけ改善してみた

この記事は、Fediverse (2) Advent Calendar 2024の23日目の記事です。 はじめに 皆さんこんにちは。 @sublimer です。 あすてろいどんという汎用のMastodonサーバーの鯖缶をしています。 本業は、インフラからプログラミングまでなんでもやるソフトウェアエ…

Cobra & Viperで設定値がうまく読み込まれなかった原因と対処

はじめに GoでCLIツールを作ろうと思い、Cobraというライブラリを採用することにしました。 Cobraの作者の方はViperという設定値をいい感じに管理するためのライブラリも作っており、これらを組み合わせて使う方法が公式ドキュメントで紹介されています。 今…

TypeScriptのコードをそのままデプロイできてOpenAIのAPIもSQLiteもCronもメール送受信も使える高機能なPaaSの「Val Town」

はじめに 先日MastodonのTLを眺めていたところ、Val TownというPaaSを紹介している投稿*1を見かけました。 調べてみたところ、TypeScriptのコードをそのままデプロイでき、HTTPリクエストに加えてCronやメールによるトリガー実行、OpenAIのAPIやSQLite、Blob…

PlaywrightでWebSocketの通信をモックする

はじめに Playwrightでは、v1.48.0からWebSocket routingという機能を使ってWebSocket通信をモックしたり通信内容の一部を改変できるようになりました。 動作を試すために実際にサンプルを作ってみたので、サンプルを元にWebSocket routingの機能を紹介しま…

Node.jsで実行中の処理の行番号や関数名を取得する方法 令和最新版(Node.js v22.9.0以降のgetCallSite)

はじめに これまでNode.jsで行番号や関数名を取得する際は、わざと例外を発生させてスタックトレースから値を拾ってくる方法がよく使われていました。 Node.js v22.9.0からは getCallSite() というAPIが使えるようになったので、今後はこっちを使う方が良さ…

Captured Surface Control APIを使ってWebRTC経由で画面共有の遠隔操作をする

はじめに Captured Surface Control APIを利用すると、共有中の画面に対するスクロールやズームの操作をJavaScriptで行うことができます。 この機能の何が嬉しいのかと言うと、オンラインでプレゼンをしているときに発表者以外の参加者がスライド送りを担当…

Drizzle ORMでオプショナルな値を元に検索条件を指定する方法

はじめに DBのレコードを取得する際、基本的には全件を取得するが、オプショナルな引数が指定されている場合はその値を条件として検索したい。というケースがあるかと思います。 ORMとしてDrizzle ORMを使っている場合にそのような処理を書く良い感じの方法…

Dependabotがpath_dependencies_not_reachableのエラーでPull Request作成に失敗した時の解決方法

はじめに Dependabotの設定をしているにもかかわらず、セキュリティアップデートのPull Requestを作ってくれなかった時の原因と解決方法です。

自作のOSSにちょっと凝った名前を付けるようにしている話

はじめに 個人開発でいろいろなツールを作ってOSSとして公開するときに、名前をどんな感じで決めているのかを紹介します。 何かツールを作りたいとなった時は、コードを書き始める前に脳内でざっくり以下の観点について考えるようにしています。 最低限実装…

OpenTelemetryを使って初めてその便利さに気づいた話

この記事は「OpenTelemetry Advent Calendar 2023」の20日目の記事です。 はじめに 先日、ローカル環境でではありますがOpenTelemetryを実際にアプリケーションに組み込んで使ってみました。 OpenTelemetry自体は前から知っていたのですが、実際にアプリケー…

Mbed TLSを使うようにしたlibdatachannelで、Mbed TLSのデバッグログを出力させる方法

はじめに OBSとaiortcを使ったWHIPサーバーの間で通信をさせていたところ、途中でエラーになってしまう問題が発生しました。 その過程で色々と知見が得られたので、ブログ記事として記録しておこうと思います。最終的に動いたコードはこちらです。github.com

WebRTCを使ったアプリケーション開発時に使えるReactコンポーネントライブラリを作った

はじめに GWの成果物として、Reactのコンポーネントライブラリを作って公開しました。github.com私はWebRTCを使ったWebアプリケーションを時々作るのですが、デバイス選択機能を毎回自作しており、コンポーネントとしてまとめておけば、いつでも手軽に使えて…

SkyWay Beta用の認証JWT(SkyWay Auth Token)を生成するサーバーをGoogle Apps Scriptで動かす

はじめに 2月21日に、新しいSkyWayのβ版であるSkyWay Betaがリリースされました。 SkyWay Betaでは、JWT形式のトークン、SkyWay Auth Tokenを使用して、細かい権限管理ができるようになっています。 一方で、ドキュメントには SkyWay Auth Tokenを利用するた…

C# ( .NET Core)で作る自作TURNサーバー 〜開発のTipsとプロトコルの説明を添えて〜 #nttcom_ac2021

はじめに この記事は、 NTT Communications Advent Calendar 2021 12日目の記事です。皆様こんにちは。NTTコミュニケーションズ イノベーションセンターの@sublimerです。今年の4月にNTTコミュニケーションズに入社し、SkyWayの開発・運用の業務を行っていま…

HTTPリクエストを雑に投げ込めるCLIツールを作った

はじめに 皆さんは外部のAPIを叩くようなアプリケーションを開発するときに,動作確認をどのように行っているでしょうか? 叩くAPIが副作用のないものであれば,動作確認時も気にせず叩けますが,副作用があるAPI(PUTやPOSTリクエスト)の動作確認はテストデー…

LaTeXの文字数をカウントしてブラウザで表示するアプリケーションを作った

はじめに この時期,卒業論文をLaTeXで書いている人も多いのではないでしょうか? (好むと好まざるとにかかわらず) 先日,私もLaTeXで卒論を書き,無事に提出しました. 卒論の進捗を可視化する指標の一つとして,「文字数」があります. なので,LaTeXの文字…

Rの開発環境を構築してみた(RStudio,RStudio Server)

はじめに 最近,データの分析をやる必要が出てきたので,Rを触ってみました. 開発環境構築の流れを記録しておこうと思います.

DockerとNginxについてちょっとした知見が得られたのでメモしておく

はじめに DockerとNginxを使って色々していたら知見が得られたので,メモしておこうと思います. 知っている人は知っているような事なので,特にすごい知見ではないです.

Fitbitの水摂取量を記録するツールを作った

はじめに Fitbitでは,水の摂取量を記録することができます. しかし,記録するためにはFitbitやアプリで摂取量を入力する必要があります. これを簡単にしたかったので,FitbitのAPIを使って水の摂取量を記録するアプリケーションを作りました.

Dockerのマルチステージビルドが便利だった話

はじめに 最近,バックエンドにGo,フロントエンドにTypeScriptを採用したWebアプリケーションを作っているのですが,これをDockerコンテナ化するときに,どのようなDockerfileを書けばいいのか,少し迷ってしまいました. どういう方法でDockerコンテナ化し…

Goの勉強を始めてみた

はじめに ちょっと作ってみたいと思ったものがあり、使用するライブラリの関係でGoを触ってみることにしました。 Goはほとんど書いたことがないので、最初の1歩がどんな感じだったのか書いておこうと思います。

GitHub Actionsで最新のlibwebrtcのバイナリを使ってビルドをする

はじめに 自作のlibwebrtcを使ったプログラムがあるのですが、これのGitHub Actionsを使ったDaily Buildをやってみました。 Windows、macOS、Ubuntuのいずれの環境でもビルドできたので、知見を記録しておこうと思います。

Bulmaをwebpackで使うときにModule parse failed: Unexpected character '@' (1:0)というエラーが出た

はじめに CSSフレームワークのBulmaをwebpackでバンドルしようとしたところ、Module parse failed: Unexpected character '@' (1:0)というエラーが出たので、その解決方法を記録しておこうと思います。

OSSにプルリクを送ったらマージしていただいたので嬉しかった話

はじめに ここ数日、OSSに関する議論が活発に行われていますね。 OSSと聞いて、「貢献してみたいけど技術力が…」と思ってしまう方も多いかもしれません。 この記事には、以前私がOSSにプルリクを送った時に非常に丁寧に対応していただいたときの思い出を記録…

WebRTCでループバックの通信をしたときにChromeで音声が再生されない不具合のワークアラウンド

はじめに Google ChromeでWebRTCのループバック通信をしたところ、音声が再生されない不具合があったので、原因調査の流れとワークアラウンドを記録しておこうと思います。

ejsで環境ごとに読み込むファイルを変える

はじめに テンプレートエンジンのejsで環境ごとに読み込むファイルを変えるということをやったので、方法を記録しておきます。

GitHub Actionsを使ってASP.NET CoreのアプリをAzure WebAppsにデプロイする

はじめに 現在、コーディングの様子をリアルタイムで配信・共有できるオンラインエディタ、「Live Share Editor」をASP.NET Core + SignalR + Reactで書き直す作業をしています。アプリケーションはAzure App Service Web Appsにデプロイしているのですが、…