何なんこのサイト

何なんこれ? 子供のお絵かきみたいなもんよ?
ただのブログです。
インフラとウェブアプリ開発の勉強のために作りました。
やってること
基盤は家にあった元ゲーミングPCです。
Windows10がサポート終了となった折に、こいつがWindows11に対応していなかったため[1]、せっかくなのでProxmoxをOSとしてインストールして、仮想化基盤にしてみました。
インターネットの回線はいわゆるマンションタイプの回線で、当然グローバルアドレスなんて贅沢なものはついてません。Cloudflare Tunnelを使って公開しています。

こんな感じの構成?
これを使えばプライベートアドレスしかない環境でも、Webサーバを公開することができます。
すごいすごいよすごすぎる。
Cloudflare Zero Trustの主要サービスの一つ、CloudFlare Accessを用いることで、特定のアカウントだけがリソースにアクセスできるようにもできるため、僕はProxmoxのWebコンソールをCloudflare Tunnelで外に見せて、自分のgithubアカウントだけがアクセス可能とすることで、外からも基盤を触れるようにしています。こりゃあ便利。
これがなんと無料です。
これが無料でレジ袋が有料な世の中はどう考えてもおかしいです。

外からでも仮想マシンが触れちまうんだ!
できること
とりあえず、普通のブログサービスでできることは一通り実装したつもりです。
記事・画像の投稿
当然、記事の投稿ができます。
記事は、Markdown形式のファイルとしてサーバに保存されています。

よく整理された記事ファイル
それをパースして、htmlにして表示してるわけです。
Zennのパクリですね。
というか、Zennのパッケージを利用させていただいております。
おかげさまで生きております。
検索
できて当たり前ですね。
当たり前のことにこそ感謝しましょう。
ログイン
現状GithubとTwitter(現称:X)アカウントでのOAuthが可能です。
このサイトにアカウント情報を持っているわけではないので、これがログイン機能かというと微妙なところですが、とりあえずメールアドレスの情報とかを持ってきて、それが特定の値だったら記事の投稿権限を与える、ということをしています。
将来的には、ログインしてたら記事にコメントできる、みたいなことをしたいですね。
いいね
いいねができます。
簡単そうに見えて、これが結構実装が面倒くさいです。
面倒くさいので、いくらでも連打可能にしました。皆さん気に入った記事があったら連打して下さい。
関連記事の表示
記事の最後に、その記事と関連した記事を提案します。
Embeddingという技術を利用しています。
これが何かと言うと、文章をベクトルに変換するということです。どういうこと。
とても簡略化した喩えになりますが、たとえば、ある単語のポジティブさを計算することができるとしましょう。
「希望」は100ポジティブ、「夢」は50ポジティブ、「現実」は-100ポジティブ、みたいな感じです。
こう考えたとき、「夢」は「現実」よりも「希望」に近い単語であると言えますよね。
つまり、単語を数値化することで、ある単語とある単語の近さを計算することができます。
この例えでは軸をポジティブさのみで考えましたが、この軸をもっと多くすることで、様々な単語の近さを計算できることになりますよね。

https://aws.amazon.com/jp/what-is/embeddings-in-machine-learning/
これをやるのがEmbeddingです。 たぶん。
それを文章レベルでやってます。おそらく。
Embedding用のサーバをdockerでホストして、そこに都度WebサーバからAPIを叩いて聞きに行くような実装をしています。
俺のRTX 3070が火を吹くぜ。
おわりに
$ ./calc.sh "謙虚になれよ!!!" "何なんこれ?子供のお絵かきみたいなもんよ?"
---------------------------------------
テキスト1: 謙虚になれよ!!!
テキスト2: 何なんこれ? 子供のお絵かきみたいなもんよ?
▼ 似ている度合い(高いほど近い)
コサイン類似度: 0.886570943141122
▼ 離れている度合い(小さいほど近い)
ユークリッド距離: 0.47629649145756503
---------------------------------------
結果: 非常に似ています!
マザーボード(ASUS H270-PLUS)が第6/7世代のCPUにのみ対応らしく、Windows11に対応したプロセッサに換装できなかった。 ↩︎



