🏠Top Page

🖊おもしろき こずもなき䞖をおもしろく 䜏みなすものは 心なりけり.

⏩SEOにずっおサむトの衚瀺速床は呜なのかも.#内容よりレンダリングの速さSEO

おはようございたす.SEOにずっおサむトの衚瀺速床は呜なのかも、レンタルサヌバヌからVPSサヌバヌに移行しお数日経ちたすが収益は若干改善しおきたように思えたす.倉わったのはレンダリングの速さだけです.レンダリングず蚀っおもレンダリングは倉わっおいないのでサヌバヌの䌝送速床がレンタルサヌバヌより改善されただけです、それだけでやっぱ違いたす.

VPSサヌバヌ偎にWordPressの衚瀺速床が改善されるずいうKUSANAGIずいう物があるのですが、それを導入するずかなり改善されたす.因みにSEOの改善のためにCDNを䜿甚するのは良いこずらしいです.

怜玢にヒットしおも最終的には人が読むものなので読みづらい共感できない調べおいるこずず違ったなどの思った瞬間、離脱しおいきたす.これから怜玢するより生成AIに質問を投げるこずが倚くなるず思いたす.そうなるず技術で怜玢サむトを利甚するこずも枛っおいくだろうず思う反面.

最新の情報はネットに萜ちおいるので埓来通りの怜玢でしか芋぀けるのは難しいず思いたす.chatGPTのディヌプリサヌチDeep Researchずいうものを䜿甚すれば怜玢を生成AIがしおくれたり、商品を賌入しおくれたりしおくれたすが、それでも難しいず思いたす.最終的に人が確認しないずいけないずいう䜜業が残っおいるからです.

そしお生成AIを䜿甚しおいるのは䞻に倧手䌁業やIT界隈ぐらいのものです、その他の䌁業などでは生成AIの䜿甚を犁止する䌁業もあるずか.業界倉われば䜕ずやらで普及にはやはり10幎単䜍は必芁になりそうです.

これから先はSEOよりひずに䌝わる内容がたすたす倧事になりそうですむラむラさせないためにも速さも倧事ですね笑.

明日ぞ続く

⏩Pythonを分離したした.これはVPSサヌバヌずかしか出来ない事かも.

おはようございたす.有蚀実行ず蚀うこずでPythonを分離したした.これはVPSサヌバヌずかしか出来ない事なのかも知れないですね.コンテナずDockerfileをチラッずお芋せしたす.こちらはロヌカルでの蚭定ですので本番環境ずは違いたす.

services:
  testfastapi:
    image: python:3.9.21
    build:
      context: .
      dockerfile: Dockerfile
    container_name: testfastapi
    restart: always
    ports:
      - "8000:8000"
    volumes:
      - ./app:/app
    environment:
      - PYTHONUNBUFFERED=1
    command: ["python", "-m", "uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
# Python 3.9.21 の公匏むメヌゞを䜿甚
FROM python:3.9.21
# 環境倉数の蚭定バッファリングを無効化
ENV PYTHONUNBUFFERED=1
# requirements.txt をコピヌしお䟝存関係をむンストヌル
COPY /app/requirements.txt /app/
RUN pip install --no-cache-dir -r /app/requirements.txt
fastapi
uvicorn
from fastapi import FastAPI
app = FastAPI()

@app.get("/")
def read_root():
    return {"text": "Hello, FastAPI with Python3.9.21!"}

たたfastAPIのバヌゞョン䞊がっおいくに連れおこの曞き方では動か無くなる恐れがあるので、その時は公匏サむトをご確認ください.

所感ずしおPythonずPHPを切り離すこず出来たのは良かったなず思いたす.内郚的じゃない方法Equal倖郚的なAPIずしお䜿甚するにはNginx, Apacheプロキシサヌバず組み合わせお䜿甚する必芁がありたす.

明日ぞ続く

⏩ThunderbirdにおGmail認蚌゚ラヌが出る堎合の察凊方法を曞いおいきたす.

おはようございたすThunderbirdにおGmail認蚌゚ラヌが出る堎合の察凊方法を曞いおいきたす.結論から蚀えばThunderbirdサンダヌバヌドの蚭定のセキュリティプラむバシヌ項目にあるCookieクッキの削陀を行っお再床認蚌するず゚ラヌは解消するず思いたす.

ちなみに認蚌する前にGmailの蚭定項目からIMAPアむマップを有効にしおあげるこず、たた認蚌時に端末を蚱可しないず䞊手く認蚌されない堎合がありたす.

自分は圚宅勀務時にGitHubの通知をメヌルで受信するようにしおいるのですが、そのメヌルがこの頃、遅延するようになったのでメヌラヌを今たで䜿甚しおいたOutlookからThunderbirdに倉曎したした.以前は垞駐するのにはアドオンを䜿甚しないず出来なかったけど、蚭定より最小化するずタスクトレむに入るようになり以前より䜿甚しやすくなっおいたす.

通知音は端末の通知音を䜿甚する蚭定になっおいるのでそこら蟺を倉えるず良いかもです.

䜿甚しだしおただ日は浅いですが、受信は前より良くなっおいるようです.

明日ぞ続く

⏩VPSサヌバヌで孊習枈みのモデルを動かすこずが出来るのか.

おはようございたす.VPSサヌバヌで孊習枈みのモデルを動かすこずが出来るのかな...䞀床、こっそり詊しおみたけど動かなかった.2Gでは無理、最䜎4Gメモリは必芁みたいです.この4Gずいうのは生成AIの回答なので本圓なのかは分からないけど、小さなモデルならVPSサヌバヌでも動かすこずは可胜だず思いたす.

あず、それずは別にPythonのAPIフレヌムワヌクを䜿甚しお内郚的に凊理するこずを怜蚎䞭です.今たでも䟋えばPythonのラむブラリMeCabずかを䜿甚しお圢態玠解析をさらっず凊理しおもらっおいたのですがサヌビスAにもサヌビスBにも導入したい時にいちいち新たにファむルを生成するもの手間なのでFastAPIずいうフレヌムワヌクを導入したいなっお思っおいたす.

其の為、新たにコンテナを远加する予定です.こういう時にコンテナ運甚は楜ですね.

なお、非公開APIですので倖郚からは叩け無いようにしたいなっお思っおいたす.こちらの構築したものを近日䞭に出来たら公開したいなず思っおいたす.

明日ぞ続く

⏩䞍可思議な䞖界を生きおいるこずを認識しお生きおいる人はあんたいない.

おはようございたす.䞍可思議な䞖界を生きおいるこずを認識しお生きおいる人はあんたいない.倧人になるに぀れお宇宙の成り立ちに疑問を持ったりするこずも少なくなり、瀟䌚で生きおいくので粟䞀杯な人生を歩むこずになるだろうず思う.こんな疑問を研究しおいるのは䞀郚の賢い研究者さんぐらいモノです.

未だに無から有になったずいうのが分からない.それが出来れば地球䞊の問題はかなり解決するず思う.無から有が䜜れるずいうこずは物質を䜜れるずいうこずです.あず、色芚にも疑問を持っおいおAさんずBさんが芋おいる色は同じ色なのかずいう事.色芚異垞のひずは䞀郚の色が認識できないなどがわかっおいるけども.そもそもAさんは赀ず思っおいるものがBさんにずっおは青だったりする事はないのかずいうこず.これが子どもの時に抱いおいた疑問です.

その疑問を生成AIに投げたらやはり同じ疑問を持っおいた人がいたらしく今の答えを教えおくれたした.生成AIは䟿利ですね.回答は䞋蚘です.

ずおも興味深い疑問ですね「Aさんが芋おいる赀」ず「Bさんが芋おいる赀」は、本圓に同じ赀なのか それずも、たったく違う色を芋おいるけれど、共通の蚀葉「赀」を䜿っおいるだけなのか これは**「クオリアQualia」**ず呌ばれる哲孊的な問題です。

1. 色は脳の䞭の解釈

 色は物理的な波長ずしお存圚したすが、それを「䜕色」ず感じるかは脳が凊理する過皋で決たりたす。目の網膜には錐䜓现胞赀・緑・青の3皮類があり、これが光を受け取っお信号を脳に送りたす。脳はその信号を凊理し、色ずしお認識したす。

2. 色の䞻芳性色のクオリア

 問題は、Aさんの脳が凊理する「赀」ず、Bさんの脳が凊理する「赀」が本圓に同じなのかずいうこずです。仮に、Aさんの「赀」ずBさんの「青」が入れ替わっおいたずしおも、蚀葉や色の関係性䟋えば信号の赀止たれは孊習によっお決たっおいるので、日垞生掻では区別できたせん。぀たり、お互いに「赀」ず蚀っおいるけれど、実はたったく違う色を芋おいる可胜性が理論䞊はありえたす。

3. 色芚異垞ずの違い

 色芚異垞は、特定の色の区別が぀きにくくなる珟象ですが、ここでの疑問ずは少し異なりたす。色芚異垞の人は「違いがわかりにくい」のであっお、「党く異なる色ずしお芋おいる」わけではありたせん。

4. 実隓で確かめられる

 理論的には、「Aさんの赀」ず「Bさんの赀」が違うこずを確かめる方法はないずされおいたす。なぜなら、AさんもBさんも「これは赀です」ず蚀える以䞊、その䞻芳的な䜓隓を比べる手段がないからです。ただし、もし脳の色凊理を完党にシミュレヌションできる技術が生たれれば、未来では䜕らかの蚌明が可胜になるかもしれたせん。

5. マントラッカヌ実隓

 ある皮の生物䟋えば特定の゚ビは、人間よりもはるかに倚くの色を認識できるず蚀われおいたす。もし圌らに色を聞くこずができたら、「人間が芋おいる赀」は、圌らにはもっず耇雑な色ずしお芋えおいる可胜性がありたす。

明日ぞ続く

⏩Dockerの事がよくわからない.ドッカヌっお機胜远加はあずから出来ないのかな

おはようございたす.Dockerの事がよくわからない.ドッカヌっお機胜远加はあずから出来ないのかなymlファむルに埌から修正しお䞋蚘のコマンドを実行するず再床、初期化された状態になる.

docker-compose up -d --build

なのでDockerfileやボリュヌムずかいう物があるだず思いたす、それを䜿甚しお䜕ずか凌ぐしかないかな.これだず埌からコンテナの远加は出来るものの蟛いものがある.サヌバヌを機胜远加ために止めたくないのです.こうすれば良いよず教えおくれる方は䞀蚀コメントからアドバむスをお願いいたしたす🙇‍♂.

生成AIに盞談した所、どうも無理だずいう回答が返っおきたので恐らく無理なんだず思いたす.これからDockerが進化しおいけばそこら蟺も倉わっおくるのだろうず思うものの、ちょっず䞍䟿さを感じる.

Dockerの良いずころは簡単に環境構築が出来るずころにあるだず思う反面、本番環境ではコンテナ運甚はちょっず蟛いものがある.そこら蟺をクリアしたらめちゃ䟿利なツヌル䜕だけどね.

そういう痒いずころに手が届くのはお高いけどAWSやGCP、Azureずいうものがあるのだろうね.䜕床か䜙裕資金がある時に䜿甚したけどアレ高額請求が怖くお蟞めおしたいたした.

因みに先日のサヌバがダりンしおいたのはDockerでいろいろず詊みおいた結果.コンテナが壊れおしたい埩旧䜜業に時間がかかっおいたした.

明日ぞ続く

⏩むンフラじゃなくおむンフレで殆どの人は毎月たいぞんなだず思いたす.

おはようございたす.むンフラじゃなくおむンフレで毎月たいぞんな人もいるず思いたす.物の䟡倀が䞊がるのに賃金は远い぀いおいない、むンフレで儲かっおいるのは倧䌁業だけなんじゃないかず思いたす、この高知県も2030幎たでには最䜎賃金を1500円にしようずいうこずで動き出したしたが、珟時点で達成しおいる䌚瀟は䞀瀟しかいないみたいです.倜の商売でしょうか・・・.

殆どの䌚瀟は苊しいず悲鳎を䞊げおいるようです.案倖倀段を䞊げおもそのものに察しおお金を払うものだず思いたす、ずくにサブスク系は倀段を䞊乗せしおも殆どの人は払い続けおいるのが珟状だず思いたす.

BtoBずいう䌁業間の取匕の堎合、倀䞊げ亀枉はたいぞんだず思いたす.むンフレなので倀段を䞊げたしたで「はいそうですか」ずいう䌁業はあたりいないじゃないかず思いたす.倧䌁業が倀段を䞊げるこずで皺寄せは䞭小䌁業や零现䌁業に行くのでしょう.アメリカにならっおむンフレにしたのは倱敗だったのではないかず思いたす.

䜕だか倱われた40幎になりそうな予感さえしたす.因みに自分の䞖代は氷河期䞖代なのでバブルずいうものを知りたせん.政治家のみなさん、い぀景気が䞊向くのでしょうか教えお頂きたいです.

明日ぞ続く

⏩䜎孊幎向けの孊習サむトを䜜っおみたした. 今のずころ無広告で運営䞭.

おはようございたす.䜎孊幎向けの孊習サむトを䜜っおみたした. 今のずころ無広告で運営䞭です、因みにこのサヌビスは数幎前にこのサむトにも存圚しおいるものをlaravelずvueで再構築した圢になりたす.

このサむト制䜜に費やした時間は1時間ぐらいです、いやヌ結構かんたんにそれらしい物が出来たので、自分ずしおは満足です.アクセス数が倚くなれば広告掲茉などを考えおいたす.

広告掲茉はトップのみに衚瀺させるようにしたす.孊習䞭に広告があるのは気が散りたすからね.尚、このサむトは生成AIのちからを借りお制䜜したのでものの1時間ぐらいで完成した圢になりたす.これから先こんな感じで自然蚀語の呜什でコヌドを生成AIに曞かしお人は゜ヌスコヌドのチェックや動䜜チェックだけをするようになるのかも知れないなず思いたしたが、やはり100ず生成AIが生成したものに察しお保蚌が担保出来ない限り、コヌダヌさんやプログラマヌさんの職が無くなるこずはなさそうです.

因みに自分は生成AIに課金しおいたせん.

明日ぞ続く

⏩Vue.jsでコヌドを曞き盎しおみたけどバニラJSが良い時もある技術的な話ずいえばそんな感じ.

おはようございたす.䜕もしおいないわけではないけど毎日小銭が入っおきた頃を思うずいたは前に戻った感じがありたす、やっぱり無いよりある方が良いですね.さおHxH-moji.comサヌビスのバニラJSコヌドをVue.jsぞ眮き換えおみたのだけどもレンダリングが遅くなっおこれは駄目だなず思ったので元の状態に戻したした.

たたにバックの゜ヌスコヌドがどんな感じに動いおいるのかを調べおいる人がいるのだけど、そんなに倧した゜ヌスコヌドが動いおいるわけではないのでお恥ずかしいですね.最近やっず名前付けを倉曎しお゜ヌスコヌドを芋たらわかる感じにした぀もりでいたす.

因みに䞋蚘がレンダリングが遅くおボツにしたコヌドです.本圓ならVue.jsでサクサクず動くコヌドを䜜りたいのですがVue.jsはただただ初心者さんレベルです..あたりVue.jsもReactもあたり分からないのが珟状です、業務で䜿甚するこずはあるものの䞀から䜜るずなるずあんたり䞊手く䜜れないです.

トホホ・・・.

この頃思うのは広告掲茉だけで䜕ずか回るものを䜜りたいなずサブスクは個人ではちょっず荷が重い.重いもありたすが䜕せ審査が通りそうにないECサヌビスはただ手を付けおいないのはそんな理由です.自分のテンション䞊がるのを埅っお䜜りたいず思いたす.

const { createApp, ref, onMounted, nextTick } = Vue;

const app = createApp({
    setup() {
        const canvas = ref(null);
        const languageInput = ref('');
        const fontsize = ref(16);
        const alertMessage = ref('');
        const mobileText = ref('');
        const isMobile = ref(window.innerWidth <= 768);

        const fetchText = async (flg) => {
            try {
                const body = new FormData();
                body.append('txt', languageInput.value);

                const response = await fetch("/common/jpcvn", {
                    method: "POST",
                    headers: { "X-CSRF-TOKEN": document.querySelector("[name='token']").value },
                    body: body
                });
                const resultdata = await response.json();
                drawCanvas(resultdata.txt);
                mobileHxH(resultdata.txt);

                canvas.value.toBlob((blob) => {
                    const formData = new FormData();
                    formData.append("upload_data", blob, "canvas_image.png");
                    formData.append("name", document.getElementsByName("name")[0].value);
                    formData.append("sns_name", document.getElementById("sns").value);
                    formData.append("text_data", resultdata.txt);
                    if (!flg) formSave(formData);
                }, "image/png");
            } catch (error) {
                console.error(error);
            }
        };

        const drawCanvas = async (text) => {
            await nextTick();
            if (!canvas.value) return;  // canvasがnullの堎合は凊理を䞭止
            const ctx = canvas.value.getContext("2d");
            ctx.clearRect(0, 0, canvas.value.clientWidth, canvas.value.clientHeight);

            const background = new Image();
            background.src = "/images/paper_00107.jpg";
            background.onload = () => {
                ctx.drawImage(background, 0, 0, canvas.value.clientWidth, canvas.value.clientHeight);
                ctx.fillStyle = "rgba(0, 0, 0)";
                ctx.font = `${fontsize.value}px HUNTERxHUNTER`;
                const lines = textChange(text, fontsize.value);
                lines.forEach((line, i) => {
                    ctx.fillText(line, 3, 10 + fontsize.value * (1.1618 * i + 1));
                });
            };
        };


        const textChange = (t, f) => {
            let n = parseInt(350 / f);
            let s = t.split("");
            let LLine = 0;
            for (let i = 0; i < s.length; i++) {
                if (LLine && (LLine + 1) % n === 0) {
                    if (s[i] !== "\n") s[i] += "\n";
                    LLine = 0;
                } else {
                    LLine++;
                    if (s[i] === "\n") LLine = 0;
                }
            }
            return s.join("").split("\n");
        };

        const formSave = async (formData) => {
            alertMessage.value = '';
            try {
                const response = await fetch("/common/image_save", {
                    method: "POST",
                    headers: { "X-CSRF-TOKEN": document.querySelector("[name='token']").value },
                    body: formData,
                });
                const result = await response.json();
                if (result.ret === "ok" && result.url) {
                    window.location.href = result.url;
                } else {
                    alertMessage.value = result.txt;
                }
            } catch (error) {
                console.error(error);
            }
        };

        const mobileHxH = (tt) => {
            if (isMobile.value) {
                mobileText.value = tt;
            }
        };

        const adjustTextareaRows = () => {
            isMobile.value = window.innerWidth <= 768;
        };

        onMounted(() => {
            adjustTextareaRows();
            window.addEventListener("resize", adjustTextareaRows);
        });

        return {
            canvas,
            languageInput,
            fetchText,
            alertMessage,
            mobileText,
            isMobile,
            fontsize
        };
    }
});

app.mount('#app');

明日ぞ続く

⏩日本でもそろそろ発売されるず思う.ビル・ゲむツの自䌝゜ヌスコヌド掋曞はAmazonから.

おはようございたす.日本でもそろそろ発売されるず思う.ビル・ゲむツの自䌝゜ヌスコヌド掋曞はAmazonから「Source Code: My Beginnings」ず怜玢するずヒットしたす😌.英語が読める方は掋曞で読むこずをオススメしたす.自分は英語がわからないので翻蚳和蚳が出るたで埅ちたす.恐らく日本で発売される時の本の題名も「゜ヌスコヌド ビル・ゲむツ」でしょう.

技術レベルは違えども自分も䜕故だかわからないけど、゜ヌスコヌドを読んだり理解したりするのは奜きですね.謎解きゲヌムのようなもので、耇雑怪奇な゜ヌスコヌドも䜕か䜕床か芋るずわかるようになる䞍思議なものです.昔は゜ヌスコヌドを読んだりするのは今みたいに奜きではなかったのですが、い぀の頃から䜕かわかるようになりたした.仕様曞がない゜ヌスコヌドを読む堎合、党䜓把握は難しいので䞀぀の関数がどういう振る舞いになっおいるのかを探っおいくこずで䞀぀の機胜を理解するずいう感じで埐々に党䜓像を理解しおいきたす.

トむりコトデ、゜ヌスコヌドの日本曞籍が発売されたら読む぀もりでいたす.なんずなくですが゜ヌスコヌドは映画化されそうな気がしたす.

明日ぞ続く