Kgtkr's Blog
Profile image
Web Developer.
RSS
2025/02/14
MinioとPresigned URL AWSのS3にはPresigned URLという署名付きURLを発行し、一時的なアクセス権を付与する仕組みがあります。これを使うと、例えばAPIサーバーが特定の画像へのアクセス権を発行し、クライアントはプロキシを経由せずに直接S3から画像を取得するといったことができます。 しかし、この機能をKubernetesでホストしているMinio(S3互換のオブジェクトストレージ)で使おうとすると問題が起きます。AWS SDKは AWS_ENDPOINTS で指定されたURLをベースに署名付きURLを発行します。そのため、 AWS_ENDPOINTS=http://minio.foo.svc.cluster.local:9000 と指定されていると署名付きURLはこのURLをベースに発行されるのでクライアントからアクセスできません。署名付きは特定のオブジェクトへのパスだけでなくプロトコルやホスト名も含めて行われるため、プロトコルを https に書き換えたり、ホスト名を minio.example.com に書き換
2025/01/30
注意 私はセキュリティに詳しいわけではないので、この記事で紹介する内容はあまり安全ではない方法かもしれません。そういうのがあれば教えて頂けると助かります。 はじめに WSLを使っていてsudo / ssh / gpgなどを使うときにパスフレーズをいちいち入力するのはめんどくさいです。しかしパスワードなしでsudoを使えるようにしたり、ssh/gpgキーにパスフレーズを設定しないのはさすがに抵抗があります。 sudoは WSL Hello sudo というsudoを使うときにパスワードを要求するのではなくWindows Helloの認証を要求してくるようになる便利なツールがあるので使っています。 sshは1Passwordユーザーであればかなり昔からssh-agent機能がついており、1Passwordのssh-agent機能をWSL2でも利用する のような方法でWSLから使うことができます。しかしBitwardenには最近までこの機能がなく困っていたのですが、最近実装され1Passwordと同じ方法でWSLから使うことができるようになり
2024/04/13
はじめに 3月に明治大学総合 数理学部を卒業し、電気通信大学情報 理工学研究科の修士課程に進学しました。 大学院の授業の初週が終わったので、大学生活を振り返ったりなどなど適当に書くだけの記事です。 大学入学〜2年生までの話 現役のとき推薦や一般入試などに全落ちし、浪人生のときに自己推薦入試で、作っているWebサービスの話をしたら運良く拾ってもらい入学することになりました。一般入試ではかなりレベルの低い大学も落ちていて、受かっていても多分やりたいことはできなかったので入学できたのはラッキーでしたね。 そんなこんなで始まった大学生活ですが、入学したのが2020年だったのでコロナの影響で授業開始が5月になり、夏休みまで一度も大学に行かずにオンライン授業を受けていました。ただ1年生の授業は教養科目やプログラミングの基礎、数学の授業などが多く、特に困ることはありませんでした(というか数学の授業は眠くなるので録画のほうが嬉しい)。 学科の授業は全体的に緩く、雑に取っても単位はもらえるので音響やCGなど自分1人では絶対に勉強しないような授業を取って
2023/08/01
はじめに 2022年度の大学のプロジェクトで(今更すぎる)手書き風の画像を生成するWebサービスを開発したのでそれについての話です。 リンク tegaki.fun サービスのURL nkmr-lab/average-character-cloud-backend バックエンドのリポジトリ nkmr-lab/average-character-cloud-frontend フロントエンドのリポジトリ nkmr-lab/average-figure-drawer 平均手書き文字(手書き文字の合成文字)を生成するライブラリのリポジトリ。研究室で数年前に作られた物をTypeScript化(不完全)するなどしただけで、上2つと違って1人で書いたわけではない。 サービスの概要 下の画像のように、上のテキスト欄に文字列を入力すると、その文字列に対応する手書き風の画像を生成してくれます。背景画像はユーザが用意してきて、それに合わせて文字サイズや書字方向、行間字間などを設定する仕様です。各文字は、ユーザが登録した手書き文字を複数組み合わせて平均手書き文字とい
2022/08/13
はじめに 8/8から8/12に行われたセキュリティキャンプ2022のデータベースゼミに参加してきました. このゼミでは, データベースの中でもトランザクションを中心に学び, 実装しました. 講師の星野さん(@starpoz), ありがとうございました. 講義資料 ゼミの講義資料がGitHubで公開されたので貼っておきます. Releaseページからpdfをダウンロードできます. https://github.com/starpos/develop-transaction-system 作ったもの Rust製のサーバクライアントモデルのkvsです. リポジトリ: https://github.com/kgtkr/tkvs公開サーバ: https://tkvs.kgtkr.net サーバはgrpcを使っているのでgrpcurlからも使えますが, セッションのTTL管理やbase64エンコードが大変なのでリポジトリに入っているcliクライアントを使った方が便利です. cliクライアントでの使用例 $ tkvs-client https
2022/04/04
実装したもの https://github.com/kgtkr/wjit $ cat ./sample.wjit func main() { var x = fib(10) in println(x); func_a(10); println(is_prime(3)); println(is_prime(4)); println(is_prime(5)); println(is_prime(6)); } func fib(n) { if (n < 2) { n; } else { fib(n - 1) + fib(n - 2); }; } func func_a(x) { println(x); if (x <= 0) { x; } else { func_b(x - 1); }; } func func_b(x) { println(x);
2022/03/27
ブログをNext.jsに移行した 今までGatsbyで作っていたブログをNext.jsに移行しました. 動機 Gatsbyの依存関係を久しぶりに更新しようと思ったら新しいメジャーリリースが出ていたり, 大量のプラグインを入れていたことが原因で移行が大変そうだったというのが動機です. Gatsbyはデータの処理にGraphQLを多用しているところなどあまり好きになれない部分があり使うのをやめたいと前から思っていました. またNext.jsはこれだけ有名なフレームワークなのに今まで一度も触ったことがなかったので使ってみることにしました. Reactやunified周りはそこそこ触ったことがあったので, 移行は比較的やりやすかったです. 大きな変更点 Gatsbyで動かしていた時はGitHubにpushしたらNetlifyでビルドが走りデプロイされるというよくあるお手軽構成でした. 今回は, 最近自宅k8sクラスタを立てて, argocdなどを導入したことでGitHubにpushしたらGitHubのWebUIをポチポチするだけでデプロイができ
2022/02/10
はじめに sqldefという目標とするスキーマを書くと, DBに接続して現在のスキーマと比較し, DBのスキーマが現在のスキーマに一致するように CREATE TABLE や ALTER TABLE などを実行してくれるGo製のcliツールがあります. 詳細はGitHubや作者のブログを見てください. これを使うことでスキーマファイルを1つリポジトリに置いておけばいいので, マイグレーションコードを手書きした時の, DBのスキーマの全体像が分かりにくいという問題が解決します. しかし個人的にはマイグレーションコードはリポジトリにコミットして, それを実行したいです. そこで今回はsqldefをマイグレーションコード生成ツールとして使ってみます. 簡単にいうとprisma.jsのmigrate機能のような使い方です(ドキュメント). prisma.jsは独自のDSLでDBのスキーマを定義し, それをDBのスキーマと比較し, マイグレーションコードを生成してくれます. しかし, 独自DSLを使う必要があり, ライブラリ依存です. 今回の方法は,
2021/11/06
実装したもの シンタックスハイライト、エラー報告、補完、フォーマットができるProcessingのLanguage ServerとVSCodeの拡張機能を実装しました。 リポジトリ https://github.com/kgtkr/processing-language-serverhttps://github.com/kgtkr/processing-language-server-vscode インストール 以下のリンクからインストールしてProcessing(現在4のbeta1とbeta2にしか対応していません)のパスを設定すれば使えます。設定した後に再起動すると自動でLanguage Serverがダウンロードされます。そのあともう一回くらい再起動が必要かもしれません(ここらへんは動作が不安定なので改善が必要ですね)。 https://marketplace.visualstudio.com/items?itemName=kgtkr.processing-language-server-vscode 作った動機 弊学科の授業で
2021/09/22
プログラミング言語の基礎概念を読んで実装したのでメモ。OCaml実装。間違っているところがあったら指摘して下さると助かります。 作ったもの コードを入力すると型推論結果を返すプログラムです。型チェック失敗時のエラーメッセージは未実装です。 例 関数合成する compose 関数を例にします。 let compose = fun f -> fun g -> fun x -> f (g x) in compose ↓ (let {3: {'2,'3,'4}(('3 -> '4) -> (('2 -> '3) -> ('2 -> '4)))} = (fun {0: {}('3 -> '4)} -> (fun {1: {}('2 -> '3)} -> (fun {2: {}'2} -> ({0}: ('3 -> '4) ({1}: ('2 -> '3) {2}: '2): '3): '4): ('2 -> '4)): (('2 -> '3) -> ('2 -> '4))): (('3 -> '4) -> (('2 -> '3) -> ('2 -