2020年の記事
Fedora CoreOSのIgnitionでOSと一緒にdocker-composeのインストールもやる
ちょっとしたサービスを動かすにはdocker-composeが手軽で便利。コンテナを動かすだけのサーバを立てるにはFedora CoreOSが手軽で便利。でも、CoreOSはデフォルトではDockerが無効だしdocker-composeも入ってないし…という問題を解決するためのIgnitionファイルの書き方です。
RTMPとffmpegでスマホをLinuxの無線ウェブカメラにしてみる
RTMPで遊んでみたくなったので、スマホで撮った映像をRTMPでLinux PCに送信して無線ウェブカメラ的なものを作ってみました。アプリやDockerイメージが揃っているので、結構手軽に試せる感じです。
PowerShellでGenericなクラスとかメソッドを呼び出す
PowerShellではC#の(正確には.NETの)機能を使えるのですが、ところどころ制約があったりします。Generic回りなどもそうで、動的型なPowerShellから使うためには少し型に気を使う必要があります。というわけで、PowerShellでGenericなクラスを扱う方法です。
PowerShellで配列内のユニークな値の数を数える
値の重複がある配列があるとき、重複を省いた状態でのユニークな値の数をPowerShellで調べる方法です。いくつか方法があるので、それぞれ試してベンチマークしてみました。
CSSのfilterを使って、背景色に合わせた文字色を自動的に設定する
背景色が動的に変わる状況で、文字色が見えなくならないように良い感じに設定したい時があります。JavaScriptで書いても良いのですが面倒なので、CSSのfilterを使って上手いことやってもらう方法をご紹介します。
Linux/Windowsのデュアルブート環境でBluetoothやBLEのデバイスを共有する方法
デュアルブート環境で同じBluetoothやBLEのデバイスを使おうとすると、OSを変えて起動する度にペアリングしなおさないといけなくて面倒です。少し作業をすることでこれを回避出来るようだったので、試してみました。
ELECOM LBT-UAN05C2のGentoo Linuxでの動作報告
新しいBluetoothドングルを書いました。ELECOMのLBT-UAN05C2ってやつ。Gentoo Linuxでもちゃんと動いたので、細かいスペックなどを含めた動作報告記事です。
PowerShellでスクリプトとして呼ばれた時だけ何かする
普通に実行すると便利なスクリプト、ドットソース演算子で実行するとモジュール的に使える。というようなスクリプトをPowerShellで作る方法です。Pythonで言う`if __name__ == "__main__"`みたいな感じのやつ。
Gentooへのinkscapeのインストールがundefined referenceで失敗する
うちのGentoo、結構前からInkscapeのインストールに失敗していたのですが、重い腰を上げて原因の調査をしてみました。ずいぶん前のgccの更新が原因だったみたいで、依存関係の再コンパイルで無事にコンパイル出来るようになりました。
Python/OpenCVでGStreamerを使って仮想のWebカメラを作る
Python/OpenCVとGStreamerを使って、Pythonで作った映像を仮想のWebカメラ映像として出力してみました。これでOBSやFaceRigのようなソフトを作れるはずです、たぶん。
Python/OpenCVでLinuxの画面をキャプチャしてみる
Python/OpenCVのバックエンドをGStreamerに変えて、ximagesrcというプラグインを使ってLinuxの画面をキャプチャしてみました。(コンパイルさえやってしまえば)すごく簡単に出来て、かつ色々やれそうな感じがあります。たのしい。
GitHubのdependabotの挙動をカスタマイズする
GitHubに組み込みの依存関係更新ツール(?)であるdependabotがPRを作るタイミングやラベルなどをカスタマイズする方法です。結構細かいところまで設定出来るっぽい。
PowerShellでgrep -oみたく正規表現にマッチしたところだけ抜き出す
Linuxで使える「grep -o」コマンドを使うと、正規表現にマッチした部分だけ取り出せて非常に便利です。WindowsのPowerShellの場合はそんな感じのオプションは無いらしく…組み合わせで同じ挙動を実現する方法を調べてみました。
curlでBASIC認証の動作確認をする
HTTPのBASIC認証を使ったアカウントが10個くらいあるWebサイトを作ったのですが、一個一個動作確認するのは面倒臭くて…。それ、curlコマンドで自動化出来ます。
Sphinxで書いたドキュメントをGitHub ActionsでPDFやHTMLに自動ビルド
GitHub上で管理しているSphinxのドキュメントを、タグを打つだけでGitHub Actionsがビルドしてリリースに保存するようにしてみました。ビルドの手間もファイル共有の手間も無くなるので、かなり便利です。
Python/Pipenvでインストールしようとした時に出るAssertionErrorやFileNotFoundErrorの直し方
Pipenvを使ってPythonのパッケージをインストールしようとしていたところ、やたら長いトレースバックと共にAssertionErrorが出るようになってしまいました。このエラーを解決する方法についてのメモです。
gitの「src refspec refs/heads/master matches more than one」ってエラーの直し方
GitHub Actionsで色々試行錯誤していたところ、突然「src refspec refs/heads/master matches more than one」というエラーが出て`git push`出来なくなってしまいました。この原因と、対処方法についての記事です。
RAID5なbtrfsのHDDをreplaceした話
btrfsで作ったRAIDディスクアレイのHDDが怪しい挙動をしていたので、新しいHDDに交換しました。まだマウント出来る状態のHDDを新しいものに置き換えて、ついでに容量を大きくする方法のメモです。
Node.jsでMarkdownをplain textに変換する
Node.jsを使って、Markdownのマークアップを削除してプレーンテキストに変換する方法です。依存関係は無いようなので、ブラウザでも動くはずです。
linuxのシェルコマンドでWebページのタイトルを取得する
多くのLinuxに標準で入っているcurlコマンドとgrepコマンドを組み合わせて、Webサイトのタイトルを取得する方法です。
Reactでステートの値が反映されない時に試すこととその理由
ReactのコールバックやuseEffectで、更新したはずのステートの値をちゃんと取得出来ないことがあります。これを回避する方法と、そもそも何故そんなことになるのかという解説です。
Next.jsでWeb VitalsをGoogle Analyticsに記録する
Next.js 9.4から追加されたIntegrated Web Vitals Reportingという機能を使って、LCPやらFIDやらのWeb VitalsをGoogle Analyticsのカスタム速度に記録する方法です。Google Analyticsへの記録にはReact-GAを使っています。
Google AnalyticsでVercel NowのDevelopmentとProductionを区別する
このサイトはGitHubにプッシュするとVercel Nowにデプロイされるようになっています。なので、デバッグ用のデプロイとプロダクションデプロイの二種類があります。この記事は、そんな感じの2種類のサイトから得られるデータを区別する方法です。
Next.js + MDXでブログを作る 〜 Blanktarの場合
このブログはNext.jsとMDXを使って作られています。Next.jsはブログ用というわけではないので、少し工夫が必要な箇所がありました。この記事は、その工夫をまとめたものです。
GitHub ActionsでLighthouseを実行する(treosh/lighthouse-ci-actions@v2使用)
GitHub Actionsを使ってプッシュの度にLighthouseを実行して、WebサイトのSEO対策の状況を自動的にテストしてもらう方法です。テスト結果はActionsのログから見れる他、Artifactとしても保存されます。
Blanktarをリニューアルしました!
2012年に作ったCMSモドキで運用してきたBlanktarですが、いい加減古臭さが目立ってきたので全面リニューアルを行ないました! モダンな技術を色々取り込んでいます。
Vercel Now(旧ZEIT Now)上でnode-canvasを動かす
Vercel NowにデプロイしたNode.jsのプロジェクトでnode-canvasを使う方法です。node-canvasはpure-jsではないので、依存関係を手動で解決してあげる必要があります。
Gandi.netにクレジットカードを登録しようとしたら「na.gcsip.com」に飛ばされた
ドメインを管理してもらっているGandi.netにクレジットカードを登録しようとしたところ、「na.gcsip.com」というドメインに転送されました。運営者の表記が無くて怪しかったので、少し調べてみました。どうやら、大丈夫なサイトみたいです。
Node.jsで画像に文字を書く
node-canvasというライブラリを使って、Node.jsで画像に日本語の文字を書く方法です。ブラウザのcanvasと同じAPIが実装されてるので、canvasを使ったことがあるなら簡単に使えると思います。
JavaScriptでコールバックな関数をPromise化する
Promiseに対応していなくてコールバック関数を渡さないといけないJavaScriptの関数を、async/awaitで呼び出せるようにPromise化する方法です。
Instagram graph API v6で投稿した画像を取得する
仕事でInstagramの投稿をホームページに取り込みたいという案件があったので、Instagram graph APIというのを使ってFacebookのAPIを使ってみました。結構ややこしいです。
あけましておめでとうございます