🏠️Top Page

🖊️おもしろき こともなき世をおもしろく 住みなすものは 心なりけり.

⏩️凄腕CGクリエイターだけど学生さん.好きこそ物の上手なれだな.#努力と才能.

おはようございます.ひさびさにこの人凄いなと思った方が現れました.まだ学生さんだと言うのが驚きです、CGなのにここまで自然な動きができるとは驚きです.

Kei Kanamoriさんは日本ではなくアメリカで何年か働いて日本に戻ってきた方が良い.日本はどうしても出る杭は打たれる社会なので中々難しいだと感じます.もしくは白組で何か作っていただきたいですね.

おそらくお話は来ているとは思いますが...(もう作成されているかもですが)

本当に才能と努力がかけ合わさると凄いことになるのだなぁ.ちなみにAIにはこういうの作れないと自分は思います.どんなにAIが高性能になっても自分の表現したいものを自然言語の指示だけでは不可能だと思います.やはり手を動かしたもの勝ちですね、本当に.

明日へ続く

⏩️文字の背景に色を付ける.ハイライトを追加してみました.#即興コード.

おはようございます.文字の背景に色を付ける=ハイライトを追加してみました.付けた結果、ちょっとごちゃごちゃしている感はありますが、文章の目を引くことになるのかなと思っています、ちなみにハイライトをつけようと思ったきっかけはこのサイトを見て思いました.

思ってから実行に移すのは「思い立ったが吉日」タイプなので直ぐに手を動かすして書きました.

それほど対したコードではないものの.WordPressの記事の文章内にタグを基にして今回のようにハイライトを付けたり太文字にと思っている人は一定数いると思ったので何かの参考にしてみてください.

ソースコードはバニラJS(javascript)とCSSになります.

if (maincontent = document.querySelectorAll('#main_content > p')) {
    let words = [...document.querySelectorAll('.zip358tag > a')].map((elm) => {
        return elm.textContent;
    });
    if (words.length) {
        [...maincontent].forEach((maincontentElm) => {
            words.forEach((word) => {
                const regexp = new RegExp(word, 'g');
                if (maincontentElm.querySelectorAll('a').length === 0 && maincontentElm.querySelectorAll('img').length === 0) {
                    maincontentElm.innerHTML = maincontentElm.innerHTML.replace(regexp, '<strong class="highlight">' + word + '</strong>');
                } else {
                    nodeReplace(maincontentElm, regexp, words, word);
                }
            });
        });
    }
}

function nodeReplace(elm, regexp, words, word) {
    let key = [];
    if (elm.querySelectorAll('a').length) {
        [...elm.querySelectorAll('a')].forEach((e) => {
            key.push(e.outerHTML);
        });
    }
    if (elm.querySelectorAll('img').length) {
        [...elm.querySelectorAll('img')].forEach((e) => {
            key.push(e.outerHTML);
        });
    }

    if (nodeElmJudge(word, key) === true) {
        elm.innerHTML = elm.innerHTML.replace(regexp, '<strong class="highlight">' + word + '</strong>');
    }
}

function nodeElmJudge(word, key) {

    let result = [];
    result.push(...key.map(element => {
        const regex = new RegExp(word, 'g');
        return regex.test(element);
    }));
    return result.every(e => e === false);
}
strong.highlight{
    background: linear-gradient(transparent 40%, #2ff6da 40%);
}

明日へ続く.

⏩️ネトフリでインフォーマを観ました.続編(INFORMA2)はABEMAではじまる?

おはようございます.ネトフリでインフォーマを観ました.自分が観たのはシーズン1だと思います、このドラマ一話、一話が30分以下で観れるので観やすいですね.なのでサクサクとドラマが観えました.

ドラマを観た感想は案外楽しめました.地面師に通づるなにかがこのドラマにあるなって思います.こういうドラマに疑問を持つとおそらく楽しめないので何も考えないで観ました.あと暴力シーンがあるので嫌いな人は観ないほうが良いかなと思います.

ドラマですが、結構リアリティーがあるので痛そうな感じがなんともです.

このドラマの続編があるらしいので、ネトフリで観れるようになればみたいと思います.因みに続編はABEMAで観れるようになるそうです(インフォーマ -闇を生きる獣たち).

明日へ続く.

⏩️映画、FALL/フォールをネトフリで観ました.予算が足りなかったのか

おはようございます.映画、FALL/フォールをネトフリで観ました.

予算が足りなかったのか、救出までこの映画が描かれていなく.救出した後の映像にいきなり飛んでいるから何とも助かった感が無いですよね.いやもしかしてこれってあの延長線で全部がってことも有り得るのかもとか、考えてしまった自分がいる.あの延長線は映画見ないと分からないと思うしそんな事を考える人はあまりいないと思う.

恐らくあの延長線があることによって、この映画はただ恐いだけの映画ではなくなっていると思うし生とかタヒのことを考えてしまうし「人生短し」なので大切に生きようと思える内容になっている.

あの場面がなければ唯のパニック映画で終わっていたのは確かです、ですけどこのフォールという映画はあの場面があるから、それで終わらなかった.

まとめ
唯のパニック映画ではないから意外に楽しめた(高所恐怖症の方は観えないかもしれない).

明日へ続く.

⏩️npushを試験運用します.誰でも使用できるように急遽対応しました.

おはようございます.npushを試験運用します.作り出してから一二週間ぐらい経過したと思いますが、一応、運用できる状態になったのでご報告です.まだユーザーさんは通知機能を使用することは出来ません.毎日のアクセス数が100ぐらいになったら会員登録を開放しようと思っています、そして会員数が100人ぐらいになれば通知機能をユーザーさんに使ってもらおうと思っていますが、そんなに甘くはないので、ずっと停止中のままなのかもしれないです.

余談として技術的なことを少し話すとフレームワークはLaravelを使用しています.フロント側はReactを使用しています.viteというものでビルドしているのでさくらレンタルサーバーでも動いています.

データベースはさくらレンタルなのでご想像どおりです.特に難しい技術は使用していません.人により難しいと思う人もいるかも知れませんが苦労した点は無いです.アピールポイントはロゴですねー.このロゴ、イラレを使用して作ったのですが保存し忘れてpng画像とかしか無いのです、なので一点物になります.同じようなものは作れますが同じものは作れないです.そこだけが後悔していますがロゴは良いのが出来たと思っています.

最後にリンクを貼っときます.
https://npush.start-line-system.com/

明日へ続く.

⏩️昔、何故9時投稿だったのか?なぜ、いま6時投稿なのか?

おはようございます.いつも6時に投稿されているブログは何故6時なのか?分かる人は少ないと思います.因みに昔は9時投稿でした.では何故、9時投稿だったのかは仕事が大きく関係しています、むかし自分が勤務していた会社は9時からの勤務でしたので9時に投稿していたのです.理由は同僚や上司に記事を読まれたくないからそれだけの理由です.勤務中に記事を読む人はいないだろうという事で9時に投稿していました.

このブログ、もう10年ぐらい蓄積があるので結構検索にもヒットします.じゃいまの会社は6時投稿なのか、その会社を辞めたときに9を反転させて6時という事で6時にしました.また余談ですが19という数字は好きです、いっきゅう(19:一休や1級)とかちょっと賢いイメージもありますからね.男女関係なく賢い人は好きです.

6という数字は逆のイメージを持つ人も多いかもです、自分の場合は初心忘れずべからずという意味を持っています.あんま天狗になるなよ的な.

因みに今、働いている会社にはSNSやブログなどの活動をしていることは一応知っています(質問されたので).本名で活動しているので見つかりやすいです.

そのような事から、いまの6時投稿になっています.あとこのブログやWEB開発したサービスで微々たるものですが稼いでいます.ある程度の決済を相殺していますので今後も辞めることはないと思います.

明日へ続く.

⏩️映画、渇水をネットフリックスで観ました.

おはようございます.映画、渇水をネットフリックスで観ました.この映画、ちょっと落ちが微妙だけど現実的な着地地点かなって思います.実際、こういう環境下で生活している人々がいる、そういう環境下でいるひとの処遇を変えるって難しいことだと思います.

普通に生活していたら、そんな環境下でいるひとの事を知り得ることがないと.そういう意味ではこの映画を観ることで少し世界が広がるのではないかな.

https://youtube.com/watch?v=qcSQM_cIHj4

映画っていろいろな側面があるものの、大体の映画は人々に希望をもたらす物だと思います、それはこの映画のように世界が少し変わる作用を持っている気がするのです.何かを変えようとするとき、自分としては最大限のことをしても変わるのはほんの少しです.でも、それが大事なことだとも思います.

まとめ.
世の中を大きく変えるのは難しいけど、少しの変化の蓄積が大きな変化をもたらす可能性を秘めていると思えるようなそんな思いになる映画でした.

明日へ続く.

⏩️facebookの過去を見て思うこと.2009年のあの頃は.

おはようございます.facebookの過去を見て思うこと.2009年のあの頃と比べても、あんまり性格的なものは変わらないモノがあると思うものの.あの頃は馬鹿だなって思えるな、何と言うか馬鹿というか痛い人なのかも.今以上に痛い人なのかもと思う.

過去のFacebookの文面に「先の自分を見てみたい、もし、もし、悲惨な人生なら修正したい.幸福な人生を送っているとしたらOKですけどね」という言葉があるのですけど.人生折り返し地点に来ているのにも未だに青いなって思います.自分の人生設計とは全然違う人生を送っている気がします.他人から見たら悲惨な人生なのかもしれないけれども、自分はそれほど悪くないと今は思っています.

要は気分の持ちようだと思います.でもこの気分の持ちようが未来を決めているような気がします、悲観的に生きていたらやっぱ人生が悲観的になる.逆にどうにかなるものだと思えばなんとかなっていく.辛い辛いと思うのではなくなんとかなっていくと肯定することが、未来を開く鍵なんだと.

苦しい思いの時は楽観的になれないと思うけど心の片隅にその思いを持っていたら、良い方向に進んでいくと思います.

明日へ続く.

⏩️寝不足は仕事の敵.ショートスリーパーなんて人は稀ですので.

おはようございます.寝不足は仕事の敵.ショートスリーパーなんて人は稀です.大人になっても7時間の睡眠時間は確保した方が良いそう、そうすることで老化もかなりストップ出来るとかアルツハイマーにならないとか、いろいろと良いことだらけです.

自分は20代後半ぐらいから睡眠を大事にしようと思って心がけています.東京で働いていた時でも5時間は確保.あの頃は終電で帰ってきて夜食を食べて即寝て起きてシャワー浴びたら出勤という過酷な感じでしたが、そんな中でも睡眠を確保していました.思い出は美化されると言いますが今でも美化出来ない感じです.

今はフルリモートで18時には仕事は終わり、次の日まで余裕で睡眠時間を確保出来ています.ただこの頃は就寝時間を変えようとしています.

因みに毎日ではないものの、朝のウォーキングに1時間半取られるので朝起きてから結構忙しい.ウォーキング後、お風呂して朝食してたりすると直ぐに勤務時間になるのです.時間を止めれるものなら止めたいですよね.時間と老化を止めることが出来たらどんなに良いことなのかと.

トイウコトデ、睡眠は大事ですって話でした.

明日へ続く.

⏩️評価するボタンを改修して以前より直感的な操作になりました.#vue3

おはようございます.評価するボタンを改修して以前より直感的な操作になりました.以前のUIはこんな感じでセレクトメニューを選択し評価ボタンを押すという形でしたが、改修したUIは★を触れることで評価の値が変わります.

自分としては改修した方が操作しやすいと思っています.

因みにVue3.jsを使用しています.今までVue3.jsやReactの良さがあまり分かっていませんでしたが、なるほどこういう再レタリングする時に便利だよなって気づきました.バニラJSでコードを書くよりも比較的に簡単に書く事ができ再利用性があるそこが利点だと.

最後にVue3.jsのコードを貼っときます.

import { createApp } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js';
const Evaluation = {
    props: {
      defaultActive: {
        type: Number,
        required: true
      },
      totalItems: {
        type: Number,
        required: true
      },
      avgVal:{
        type:Number,
        required:true
      }
    },
    data() {
      return {
        defaultActived: null,
        items: []
      };
    },
    created() {
      // HTMLから渡された値を基に、初期の状態を設定
      this.items = Array.from({ length: this.totalItems }, (v, i) =>{
        return (i + 1) <= this.defaultActive ? '★' : '☆';
      }
      );
    },
    methods: {
      // マウスが触れた時に☆を★に変える
      hover(index) {
        this.items = Array.from({ length: this.totalItems }, (v, i) =>
            i <= index ? '★' : '☆'
        );
        document.getElementById('evaluationVal').setAttribute('data-val',index);
      },
      // マウスが離れた時に元の値に戻す
      onclick() {       
        let i = Math.floor(document.getElementById('evaluationVal').getAttribute('data-val')) + 1;
         (async (i) =>{
            let frm = new FormData();
            frm.append('id',document.querySelector('#evaluation_id').getAttribute('data-id'));
            frm.append('val',i);
            let res = await fetch('/evaluation/index.php',{
                method:'post',
                body:frm
            }).then(result=>result.json());
            alert(res.msg);
            if(Math.floor(res.flg) === 1){
              const roundToDecimal = (number, decimalPlaces) =>{
                const multiplier = Math.pow(10, decimalPlaces);
                return Math.round(number * multiplier) / multiplier;
              } 
              document.getElementById('evaluationAvgVal').textContent = roundToDecimal(res.avgVal,2);
              this.defaultActived = res.avgVal;
              this.reRender();
            }
            
        })(i);
      }, 
      reRender() {
        // HTMLから渡された値を基に、初期の状態を設定
        this.items = Array.from({ length: this.totalItems }, (v, i) =>{
            return (i + 1) <= this.defaultActived ? '★' : '☆';
          }
        );
      }    
    },
    template: `
      <div>
        <span v-for="(item, index) in items" :key="index">
          <span
            @mouseover="hover(index)"
          >
            {{ item }}
          </span>
        </span>
        [<span  id='evaluationAvgVal'>{{this.avgVal}}</span>]
        <button @click="onclick()"
         id='evaluationVal'
         data-val='5'
         class='bbtn'
         title="★に触れることで評価の変更が出来ます."
         >評価する</button>
      </div>
    `
  };
  const app = createApp({});
  app.component('evaluation', Evaluation);
  app.mount('#evaluation');

明日へ続く.