プログラミングHTMLを用意してターミナルで2コマンド打つだけで無料ホームページを公開できるpico.shを紹介します。 https://pico.sh/ 事前にHTMLファイルを用意しておきます。 https://pico.sh/getting-started pico.shにsshの公開鍵を登録します。 ※ sshというコマンドを今まで一度も使ったことがない人の場合鍵を用意する必要があります。ssh-keygenなどで別途調べて見てください。 ssh pico.sh こんな感じの表示が出たら登録完了です。 用意したHTMLをアップロードします。 ターミナルで下記のようなコマンドを実行します。 rsync index.html pgs.sh:/example/ 1階層目のディレクトリがプロジェクト名として使用されるので、何らかの名前を入れる必要があります。 上のコマンドではexampleがプロジェクト名。 このような感じでWebページを公開することができました。 https://corkborg-example.pgs.sh/ たった2コマンドでアカウント登録からWebページの公開までできてしまいました。 月2ドルのPICO+という有料プランがあります。 Webページのアクセス解析が行えるようになるのと、ストレージの上限が10GBになるようです。 https://pico.sh/plus とてもお手軽にWebページを公開することができてしまいました。 これ以上に早い手順で公開できる方法はこの世に存在しないと思います。…
プログラミング最近(2024年5月)、Googleから検索に関連する内部APIのソースコードや内部文章がリークされたと話題ですね。 Google検索の検索順位はサイト運営する人には重要で、SEOなど検索アルゴリズムを逆手に取って検索順位をあげようと試みたりする場合があります。 その為、注目が集まっているのだと思います。 今回の流出を調べてみてわかったことは、Google検索の内部の重要なソースコードを何者かがリークしたと言うよりは、社内で使われているAPIの定義を誤って外部に見えるようしてしまった感じのようです。 Google側の温度感はそこまで高く無いように見えていて、流出した情報は未だに正式な手段で入手できる状況です。 そして、流出したものはあくまでもAPIについての文章であって、Google検索内部の仕組みについては依然不明なので、分かる事としてはGoogle内部のシステムの構造や、Googleの組織構造などくらいです。 Googleでは顧客向けにAPIを公開していて、APIを使うことで顧客のシステムにGoogleの機能を利用する事ができるようになっています。 Googleはこの考え方を社内向けにも応用していて、Google内部の人も社内の機能を使いたいと考えたら、Google内部の向けのAPIを使用してその機能を利用するような仕組みになっているようです(こういう形態はマイクロサービスと言う概念と関係があります)。 つまり、Googleでは社外向けのAPIも社内向けのAPIも同一の仕組みで取り扱っていて、社外向けのAPIを抜粋して外部に公開する仕組みがあるようで、それらのフローで問題が起きたようです。 https://github.com/googleapis/elixir-google-api 今回誤って公開されてしまったものは、ContentWarehouseと呼ばれるものです。 Warehouseは直訳すると倉庫ですが、IT業界では一般的に大規模なデータを処理することに特化したデータベースの事を指します。 これらはコンテンツ情報(Webサイトなど)を処理する大規模なデータベースにアクセスするためのAPIのように見えます。 ただし、今回公開されてしまったものはContentWarehouse API内部のソースコード…ではなく、APIで取り扱うことが可能なデータの構造(モデル)の定義です。 こちらが、Googleが誤って公開してしまったGitHubのPRです。 https://github.com/googleapis/elixir-google-api/pull/11021 こちらが、誤って公開した物を削除するPRです。 https://github.com/googleapis/elixir-google-api/pull/11378 GitHubでは一度誤って公開した情報を完全に消すにはファイルの削除だけでなく、Gitの履歴から削除するとともにリポジトリを作り直したりする必要があります。これらの対応をGoogleは行っていません。 削除する直前のコミットidは e6a95f9335bf2fcb3cef77d99eecf3e0ca8d65c7です。 Gitに詳しい方であれば上記IDをチェックアウトしてもらえば該当の定義を見ることができると思います。 モデルというものはAPI間や機能間でデータをやり取りするために、転送する予定のデータの内容を事前に取り決めをしておくためのものです。 つまり、このAPIのモデルの定義を見るとGoogle検索がContentWarehouseにアクセスする際に送っている情報が推測できる可能性があります。…
日本語周り日本語文章を解析しているときに地味に困る物の一つに漢字等の日本語で書かれた年月日があります。 今回は、日本語で書かれた日付のデータをPythonのdatetime、timedeltaに変換するライブラリを作成したので紹介します。 ※ datetimeは日時、timedeltaは時間(時間差)を取り扱うPython標準オブジェクトです kanji_to_timeという名前のライブラリです。 https://github.com/corkborg/kanji_to_time https://pypi.org/project/kanji-to-time/ こんな感じでインストールできます。 pip install kanji_to_time こんな変換ができます 半角、漢字混じり、漢数字、全角数字などを変換できます。 >>> import kanji_to_time as ktt >>> text = "2024年4月5日22時30分4秒" >>> ktt.to_datetime(text) datetime.datetime(2024,…
プログラミング最近はVercel、Netlify、Github Pageなどを活用してHTML、CSSだけをホスティングするシンプルなWebサイトが流行っていますよね。 これらの利点は運用料金の安さです。一般的なWebサイトのようにサーバやデータベースなどを用意すると個人にしては運用費がかかりますが、静的サイトだと月額無料から数百円で運用できます。 かく言うこのサイト(塩の惑星)もGithub Pageというホスティングサービスを使っていて全くお金がかかっていません。 BloggerやGoogle Pageなどの無料のWebサイトサービスでは決まった形のWebサイトしか作れません。 静的サイトジェネレータはHTMLやCSSの知識があればカスタマイズの幅は無限大です。たとえばデザインにこだわる人は静的サイトジェネレータがおすすめです。 私はJavaScriptを使ったサイトを作りたかったので静的サイトジェネレータを検討し始めました。 Wordpressのような動的サイトジェネレータもカスタマイズの幅が広いです。ただ、これらは維持費が高い上にメンテナンスのコストがかかります。 特にメンテナンスをサボるとセキュリティの穴を突かれサーバが犯罪に使用されたりする可能性があります。 その点、静的サイトジェネレータはメンテナンスのコストが非常に低く、セキュリティも堅牢です。 著名な静的サイトジェネレータといえば、NextJSやHUGOなどですがこれらはプログラミングしたい人には良いですが、文章をたくさん書く場合には辛いです。 Markdown、HTML…嫌いじゃないですがこれらでたくさんの記事を書きたくないです。 PubliiはMacやWindowsにインストールして使うアプリ形式になっています。 Publiiのアプリ上でページを書くとPubliiが静的サイト生成を行いアップロードしてくれます。 文章編集機能は非常に充実していて、大文字、斜線、リンク、見出し、リスト、画像。なにもかの操作が非常にスムーズです。 もちろんHTMLを直書きしたりすることもできます。 PubliiにはSEO関連の機能が充実しています。 画像の圧縮、JSON-LDはもちろんのこと、noindex設定、Slugなど細かく設定できます。 このサイト(塩の惑星)は内容が雑多な感じでSEO的にはあまり良くない感じですが、記事を書いた時のGoogle検索の平均掲載順位は15位くらいのようで問題なさそうです。 ブログサービスといえば豊富なテーマが重要です。Publiiもテーマ機能があるのですが、テーマ数が多くないです(有料の物を入れても少ない)。 Publii Themes 数少ないテーマもアメリカで流行っているサイト風で、日本向けでは使いづらい気がします。…
プログラミングtimmとはPyTorch向けのライブラリで、画像認識系の深層学習の実装を用意してくれている感じのライブラリになっています。 対応している手法を見てみると2024年現在ではvit, resnet, swin, convnextなどをサポートしているようです。 主にtimmは新たにモデルをトレーニングして作成する際に使うと思うのですが、すでにトレーニング済みのモデルが用意されていて試しにそれを使うこともできます。 個人的にtimmの学習済みモデルをfine-tuning(微調整)して見たいと思ったので、とりあえずモデルを動かしてみることにしました。 今回使っているConvNeXT V2という手法は、昔から存在するCNNという画像認識手法を活用した2022年に提案された新しい手法です。画像認識の分野では先端のTransformer系よりも精度が優れるようです(2022年くらいでは)。 ConvNeXtはCNN系なので精度比でモデルサイズが小さくて済みます。そのためメモリにも優しいと思われます。 手法の技術的な詳細はこれらのサイトに書いてありますが私はあまり理解していません。 https://arxiv.org/abs/2301.00808 https://arxiv.org/abs/2201.03545 まずPythonに必要なものをインストールします。 pip install torch timm pillow torchvision 学習済みモデルはImageNet-1kというデータセットを使っているようなので、ラベルの情報が必要です。こちらにImageNet-1kのラベルをまとめてくれている人がいるのでダウンロードしてlabels.pyという名前に変更します。 https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a 適当なPythonソースコードを作成します。 import sys…
プログラミングstable-diffusion-webui-wd14-taggerはStable DiffusionでLoraを作成する際の定番プラグインで、イラストの中に書かれた要素を分析してタグとして出力することができます。 このプラグインはStable Diffusion webui向けのものなので使用するにはwebuiを起動する必要があります。 ただ、タグをつける作業ではwebuiがなくても問題ない場合も多いので単体で動かすコマンドを用意しました。 作ったコードは下記です。Python3があれば動きます。 https://github.com/corkborg/wd14-tagger-standalone webui-wd14-taggerの方から動作に必要なコードだけを抜き出して作りました。 Windowsでの動かし方を紹介します。(Macで開発しているのでそっちでも動きます) Python3やgitなどがWindowsに事前にインストールされている必要があります。 まず、WindowsにgitとPython3をインストールします。 gitのインストール方法は下記が参考になります。 https://qiita.com/T-H9703EnAc/items/4fbe6593d42f9a844b1c Pythonのインストールは下記のMicrosoft公式ストアからダウンロードしたファイルを実行することで行えます。 https://apps.microsoft.com/detail/9ncvdn91xzqp 適当にディレクトリを作成します。そのなかでshiftキーを押しながら右クリックを押します。 コンテキストメニューの中に「PowerShell ウィンドウをここで開く」というメニューがあるのでそれを押します。 PowerShell上では下記のようなコマンドを1行づつ入力します。 # コードの展開 git clone https://github.com/corkborg/wd14-tagger-standalone.git…