koturnの日記

普通の人です.ブログ上のコードはコピペ自由です.

2021-01-01から1年間の記事一覧

PostgreSQLで外部テーブルに無理矢理UPSERTする

SQL

背景 PostgreSQLには外部のPostgreSQLサーバに格納されたデータをアクセスするためのpostgres_fdwモジュールがある. これにより,外部のテーブルを自身のサーバにあるかのように扱うことが可能となるが様々な落とし穴がある. そのひとつは,UPSERT(INSERT…

PNGファイル再圧縮ツールを改良した

TL;DR 2020-12-07にも記事を書いたツールだが,当時より機能追加を行ったため,再度記事を書くことにした. 大きくは下記4点が追加となった. VRMファイルを処理可能になった 元のPNGファイルの画像フォーマットをそのままにしておくオプションの追加 IDATの…

clusterの写真リネームツールを作った

TL;DR clusterで撮影した画像ファイルの一括ダウンロードで得られるzipファイル内のPNGファイル名を cluster_yyyy-MM-dd_HH-mm-ss_XXX.png という形式にリネームするツールを作った(yyyyMMddHHmmss は撮影日時の年月日時分秒,撮影日時=ファイル作成日時=…

zipファイルの再圧縮ツールを作った

TL;DR zopfliを用いて,zipファイルを再圧縮し,よりよい圧縮結果を得るCLIツールを作成した. リポジトリ 実行バイナリ 元ネタはkomiya-atsushi/zipzopであり,これをC# で再実装したものとなるが, ファイル単位での並列処理が可能 zopfli.dll の関数に渡…

Unityのシェーダで原点・XZコンパスを実装した

TL;DR 常に原点を指す,またX軸,Z軸を指す針も含むシェーダを作った. VRChatのアバターに付けるとベンリかもしれない 原点・X軸コンパスシェーダーできた.黄緑矢印が原点方向,赤矢印がX軸方向でアバターの向きに関係なく必ずその方向を指す.青矢印はX軸…

カスタムレンダーテクスチャでライフゲームを実装した

TL;DR カスタムレンダーテクスチャでライフゲームを実装してVRChatのアバターに付けた. ライフゲーム 背景 オタクはすぐにシェーダでライフゲームを実装するもの,らしい. N番煎じではあるが,VRChatのアバターにライフゲーム付けるのはすぐにできるなと思…

previm + MathJax 3.X

Vim

TL;DR previmでMathJax3.Xを使用できるようにする. 背景 previm/previmはMarkdownのプレビューを可能にするプラグインでとてもベンリである. これにMathJaxを組み合わせると,数式が書けるようになり,ものすごくベンリになる. このMathJaxであるが,2019…

C言語でダブルクオートで囲まれたカラムを含むCSVファイルのパースを行う

TL;DR タイトル通り,C言語でダブルクオートで囲まれたカラムを含むCSVファイル(RFC 4180 2.6章,2.7章参照)のパースを実装した. 背景 2021年にもなってC言語を書かなければならないことがあり,その中でCSVファイルのパースを行う必要があった. 既存の…