メモ

usbipd-winをインストールしてWSL(Debian)とUSBデバイスを接続できるようにした

2023年12月時点でのやりかたをメモしとく。 Windows 10 Pro 22H2 Windowsバージョン 10.0.19045.3803 WSLバージョン 2.0.9.0 カーネルバージョン 5.15.133.1-1 Debian GNU/Linux 12 (bookworm) debian_version 12.4 usbipd-win 4.0.0+182.Branch.master.Sha.…

はてなスターを記事ごとではなくて日ごとに付けてもらえるようにした

はてなブログのはてなスターは記事ごとに貯まる。記事ごとではなくて、ブログの全体に対してスターを付けられて、次の日にはリセットされているようにしたかった。 はてなブログによって出力されるHTMLをJavaScriptで書き換えることで、はてなスターのウィジ…

Raspberry Pi PicoのMicroPythonをJupyter Notebookで書けるようにした

WindowsのパソコンとUSBで接続したPicoのMicroPtyhonをJupyter Notebookで書いて実行したかった。 MicroPythonのJupyterカーネルをインストールした。カーネルの候補は2つあった。 jupyter_micropython_kernel Jupyteの公式のCommunity maintained kernelsに…

DiscordのBotをGoogle Cloud Compute Engineに移した

github.com 自分のDiscord Botがある、何の機能も実装していないただ常時オンラインでいるだけのボット。 Herokuの無料プランで稼動させていたが、Herokuは無料で使えなくなってしまった。 ボットを常時オンラインにしておくにはWebSocketの接続をずっと維持…

Jupyter NotebookでGMail APIにアクセスするためのOAuth 2.0 アクセストークンをAuthorization Code Flowで取得する

Get OAuth 2.0 Refresh Tokens · GitHub Jupyter Notebookで、一回きりのTCP接続の待ち受けをしてOAuth 2.0 のアクセストークンを取得する。 GMail APIに使用できるアクセストークンはデバイスフローでは取得できない。gmail関連のscopeを受け付けない。 Aut…

Cloudflare WorkersでHMAC付きCookieを使ったステートレスセッションを実装した

github.com Cloudflare WorkersのランタイムはNodejsではない。Web Standards API (Crypto, atob, btoa, ... )で実装する必要がある。 有効期限を持ち、MACで改ざんされたら分かるようにしたトークンを発行する。このトークンをクッキーに設定して、ブラウザ…

Pythonのurllib.requestでリダイレクトをさせない

urllib.request.urlopenメソッドはレスポンスが300番台だった場合、リダイレクトを実行してそのレスポンスを結果とする。 HTTPのステータスコード302のレスポンスを返すAPIを作ってるときに、リダイレクトを実行せずに、最初に返ってきた302レスポンスを取得…

壊れたブルーレイレコーダーを何とかしようとしてできなかった

家族が使っていたSharpのAQUOS ブルーレイディスクレコーダー BD-T1300 が壊れた、と伝えられた。HDDが壊れたっぽいメッセージがずっと表示されて、本体のHDDランプがとても強く光り続けていた。 これ、テレビチューナーが3つもついているのでこのまま捨てて…

WSL2でrustup docしたらWindowsのChromeが開くようにした

WSL2でディストリビューションはDebian。 rustup docしてドキュメント(documentation)を読みたいがエラーメッセージが表示されるだけ。 ドキュメントをブラウザで開く rustup docでは openerによって環境変数BROWSERに設定されたコマンドがHTMLファイルパス…

Ruby:slimにdiscordrbをインストールできた

Rubyの公式dockerイメージの一つruby:slimにDiscord botライブラリのdiscordrbをインストールしたかった。 解決 makeとg++パッケージをインストールする C++のライブラリが足りてないっぽい たぶんc++の標準ライブラリ g++パッケージはGNU C++ コンパイラ ma…

Azure SignalR Service の REST API では URL区切り文字を含んだユーザーIDがあて先のメッセージを送れない

Azure SignalR Service は serverless モードにして Azure Functions と使うことができる。その場合には Azure Functions から REST API1 で Azure SignalR Service へ メッセージを発行する。 現時点(2019/12/29)の Azure SignalR Service では URL区切り文…

OBS Studio の browser source に スマホのカメラ映像を出す

OBSのブラウザソースは、Chromium Embedded Framework (CEF)で出来ているそうだ。ローカルファイルのHTMLをロードすることもできる。それを使ってAndroidスマホのカメラからの映像を表示しようと思った。WebRTCだ。 OBSのブラウザソースで表示したHTMLは、ボ…

Pythonでwindows apiを呼ぶ

呼ぶ = call ウィンドウサイズをどうかしたかった。 Jupyter と Python でwindows api 触れたら楽だね。pywin32と足りない分は自分でctypes使えばできる。 miniconda をインストールしたらもうpywin32も入ってた。 ウィンドウのサイズはスナップしたときとそ…

ウィンドウにしるしをつけようと思ったけどできなかった

OBS Studioのウィンドウキャプチャがウィンドウを見つける方法は、 タイトル 実行ファイル名 なるべく一致 (??) ということで、複数のChromeウィンドウがあったときに配信用と定めたものにキャプチャを限定できないか考えてみた。 タイトルは、ウィンドウタ…

twitchでスクリーンキャストストリーミングをはじめた

OBS Studio を使ってる。 配信用に設定したChromeを用意した。「ハードウェアアクセラレーションが使用可能な場合は使用する」がONになっているとOBSでウィンドウキャプチャができなかった。ユーザーディレクトリごと別に分けてしまって、"設定"画面で、ハー…

Vue.js v-for template の v-bind:key

virtual dom の nodeには一意のキーが必要 componentはnamespaceを作るけど、templateは作らない。 なので、例えば一つの.vueファイルの中で、

JavaScriptの時刻

moment.jsを使っとけばいいのだけれど、JavaScriptのDateがどういうものか調べた。 Dateオブジェクトは、UNIX epochからのミリ秒をデータとして持つ。 UNIX epoch = 1970 1/1 00:00:00 (UTC) 引数なしコンストラクタcallのときは現在時(UTC)。 ホストシステ…

JavaScript の Jupyter Notebook を Google Cloud Shell の Docker で 動かす

いつも通り、Google Cloud Shell での作業。 JavaScript で Firestore を使うのにあれこれ書いて試したかった。 Google Cloud Shell で Jupyter Notebook を Dockerコンテナとして動かす Jupyter プロジェクト公式のイメージが Docker Hub に置いてある。 ju…

Firestore local emulator に Firebase JavaScript SDK (Web) で接続する

admin SDK ではなくて、Webブラウザで使う firebase-js-sdk で firestore ローカルエミュレーターに接続する方法。 const db = firebase.firestore(); db.settings({ host: "172.18.0.1:18080", ssl: false }); Connect your app and start prototyping | Fi…

Firestore local emulator に Docker コンテナから接続する

$ firebase setup:emulators:firestore firebase.json { "firestore": {} "emulators": { "firestore": { "host": "0.0.0.0", "port": "18080" } } } "0.0.0.0"で全てのIPで待ち受けをして、リクエストのホスト名チェックも無効になる。 今回はgoogle cloud …

文字起こしと発声時刻で動画に文字を表示してみた

音声のフリー素材から静止画動画を作って、文字を発声のタイミングに合わせて画面に表示するやつ。ざっくりやってみた、オンラインでもないし全自動でもないけど。ffmpegとクラウドの音声認識サービスを使った。ポッドキャストやってる人はこんな感じで動画…

Google Cloud Shellのカスタム環境をGoogle Cloud Shellでcloudshell envコマンドを使って用意する

Google Cloud Shell は Cloud Registory に登録した Dockerイメージ をシェルとして利用できる。これをカスタム環境 [en]と呼ぶ。 カスタム環境の開発には Google Cloud Shell に予めインストールされているcloudshell envコマンドが便利。 cloudshell env …

monoランタイムとPaketを実行できるだけのdllをインストールしたGoogle Cloud ShellのDockerイメージを作った

Google Cloud Shell で F# スクリプトを書きたかった。Google Cloud Shellには .NET Core SDK がインストールされているのでdotnet fsiコマンドで F# の REPL が使える。 nuget パッケージを使うときに Paket があると便利だが、Paket の実行には mono が必…

vue-language-serverをvim-lspから使う設定をした

Vue Language Server Vue Language Serverはnpmのパッケージvue-language-serverとして公開されている vlsコマンドとして提供される Vue Language ServerはLanguage Server Protocolのサーバー実装 vim-lspをクライアントとしてvimから利用することができる …

Google Cloud ShellでClangのビルドをしようとしたけど時間がかかりそうだからやめた

2019年4月29日の時点で、google cloud shellにはclang-8がインストール済みだった。 知らずにソースコードからビルドしようとしたけどものすごく時間がかかりそうだったから断念した。 インストール済みだけどパスは通ってない。 export PATH=/usr/lib/llvm-…

JavaScriptのフォーマッターPrettierのVimプラグインをインストールした

vim-prettierは、デフォルトの設定ではprettierのデフォルトルールとは違う整形ルールを持つ。 vim-prettierは、デフォルトの設定では.prettierrcがあればその設定を優先する。 prettier prettier.io prettierのインストール プロジェクトローカルにprettier…

WSLのDebianでまず最初にnvmをインストールしようとしたらwgetでエラーになる

WSL(Windows Subsystem for Linux)のDebianをインストールした。まず最初にnvmをインストールしようとして、wgetをしたらtrusted host じゃないとエラーになった。wgetがどういう仕組みで信頼済みの認証局を知るのかわからないけど、そういうのはosとかが便…

4月7日土曜日にNagoya.cloud.first #2へ参加した

来栖川電算さんにピザとスシを食わせてもらった、ごちそうさまでした。 "見に来てみる枠"という成果発表が必須ではない参加者として行ってきた。 本当に皆さんもくもくとやっていた。 クラウド縛りの指すものがよくわからずに参加した。どうもawsとかgcpとか…

windows スリープ させない

Google Play Music に全部アップロードした Windowsがスリープしてしまう PowerShellでスリープ抑止(Win32APIの利用) SetThreadExecutionState function (Windows) $SystemRequired = [uint32]1 $Continuous = [uint32]"0x80000000" $signature = @" [DllI…

Amazon EC2インスタンスのログをCloudWatch Logsに送る方法が2017年12月から新しくなってた

いままではSSMエージェントのCloudWatchプラグインで送信していた。2017年末にSystems Manager がEC2から独立したのを機にCloudWatchエージェントというのが登場したようだ。 新発表 – Amazon CloudWatch AgentとAWS Systems Managerとの連携 – 統一されたメ…