Kgtkr's Blog
Profile image
Web Developer.
RSS
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 -
2020/09/16
対象読者 明大FMSのEP演習という授業で発表した内容の補足資料なので、同大の同級生を対象読者に基本的なところから解説しています。言語実装をしたことある人にとっては知っている話が多いかと思います。 ソースコード https://github.com/kgtkr/BarrageLCL ドキュメントもここにあります。今回はd8d1412をベースに解説していきます。 BarrageLCLの概要 Processing製の3D弾幕生成ライブコーディング言語です。実行環境だけでなく、編集環境も用意されています。自作言語×自作エディタですね。 以下のコードを見てください。 このコードは毎秒15回、初速度を (100cos(0.2i), 100sin(0.2i), 200sin(0.1i)) に、色を赤に設定して弾を発射するというコードです。i は何回目の実行かを表す変数です。 すると以下のように弾が発射されます。 なぜこれを? EP演習第一回のオープニングパフォーマンスで見たライブコーディング言語が面白かったことと、夏休みのEP演習で3D空
2020/09/02
初めに TypeScriptの型システムはチューリング完全なので何でも計算できます。 例えば繰り返し。 type Repeat<T, N extends number, R extends any[] = []> = R["length"] extends N ? R : Repeat<T, N, [T, ...R]>; // type A = ["x", "x", "x", "x", "x", "x", "x", "x", "x", "x"] type A = Repeat<"x", 10>; わーい。ちょっと数増やすか… // error TS2589: Type instantiation is excessively deep and possibly infinite. type A = Repeat<"x", 100>; あれ?(つらい) 再帰制限解除したいですね。しましょう。 注意 当然ですがプロダクトで使うことは想定していません、やめましょう。 バージョンなど typescript@4.1.0-dev.