Open8

雑多メモ

shimiharushimiharu

目的

  • 雑多なメモ

<メモフォーマット>
viteとは

  • フロントエンドビルドツール
  • 速い,安い(タダ),上手い(HMR)

<トラブルシューティングフォーマット>
問題

  • dockerでviteプロジェクトをpnpm devで起動しようとしたところ,localhost:port_numにアクセスしても立ち上がらなかった.

原因

  • 調査中

解決方法- coming soon

shimiharushimiharu

フロントにおけるdebounceとは

debounceは、高頻度で発火するイベント(例: ウィンドウのリサイズ、キー入力など)を制御するためのテクニックの一つです。このテクニックを使うと、特定の時間間隔内に再度イベントが発火しなかった場合にのみ関数を実行することができます。

JavaScriptのユーティリティライブラリであるlodashなどを使って簡単に実現できる。

参考
https://qiita.com/itinerant_programmer/items/5900b3ea0e6823223ee7#41

shimiharushimiharu

UTMパラメータとは
urchin tracking moduleの略(urchinとは,google analyticsの前身サービス名らしい)
google Analyticsに自サービスへ流入経路を分析させるために使用される.

(技術的にというよりは,マーケティング文脈での情報が豊富な印象)

例)ChatGPTの参考サイトのURLにはutm_source=chatgpt.comがついている
→参考サイト側では,GAを使用して,utm_soucre=chatgpt.comのURLアクセス数を計測することで,自サイトに対するアクセスの何%がChatGPT経由なのかを知ることができるなどのメリットがある.

参考
https://editors-tbr.hatenablog.com/entry/2019/01/18/110250
https://support.google.com/urchin/answer/28307?hl=en
https://www.data-be.at/magazine/utm-parameters/

shimiharushimiharu

PHPのuseとFQCN
(ChatGPT回答)

PHPでは、use 文を書かずにクラスを直接使いたい場合、完全修飾クラス名(FQCN: Fully Qualified Class Name) を使えば可能です。

つまり、

$instance = new \App\Services\MyService();

のように、クラスの名前空間を先頭に \ を付けて書くことで、その場でクラスを指定できます。


補足

  • use 文は 名前空間のエイリアス(ショートカット) を作るためのものです。
  • 省略したい場合は use App\Services\MyService; として new MyService() のように書けます。
  • \ をつけた場合、そのクラスを グローバル名前空間からの絶対パス として解決します。

例:

namespace App\Http\Controllers;

class TestController
{
    public function index()
    {
        // 完全修飾クラス名を使う場合
        $now = new \Carbon\Carbon(); 
        
        // use 文がある場合
        // use Carbon\Carbon;
        // $now = new Carbon();
    }
}
shimiharushimiharu

Slack API User Auth Token vs Bot User OAuth Token
両者の違いをあまり把握していなかったので、参考までに。

  • User Auth Tokenを使う→tokenの発行者=slack Appの作成者のslackアカウントからのアクションになる
  • Bot User OAuth Tokenを使う→チャンネルに追加したアプリのBotのアクションになる
shimiharushimiharu

メモリのはなし

ガベージコレクション

  • 不要となったメモリ領域を自動的に解放する機能

スタックとヒープ
メモリ領域

  • テキスト領域:コンパイルされたプログラムそのものを格納。
  • 静的領域:グローバル変数などの静的変数を置く。
  • ヒープ領域:データを置く
  • スタック領域:関数呼び出しに使われる。

細かいところはさておいて,スタックはヒープより高速だよねという認識

  • スタック
    • スタックは上に積んでいくだけ
    • スタック領域は連続して使うので,キャッシュ効率も良い(連続して使えない用途はヒープを使う必要がある)
    • スタックのメモリ解放は,ただ1つのスタックポインタを移動するだけ
  • ヒープ
    • 実行時に空き領域を探索する必要あり
    • メモリが分断されるためアクセス効率が悪化,キャッシュ効率も悪い
    • メモリのフラグメンテーションを防ぐためのGCがオーバーヘッドになることも
操作 スタック ヒープ
メモリ確保 O(1) O(log n)〜O(n) 程度
メモリ解放 O(1) O(log n)〜O(n) 程度
キャッシュ効率 高い 低い
(by GPT)

参考

shimiharushimiharu

DRM(Degital Rights Management/デジタル著作権管理)

この記事読む中で気になったので
https://blog.cybozu.io/entry/w3c-interview-part1

デジタル著作権管理(デジタルちょさくけんかんり、英: digital rights management、DRM)とは、電子機器上のコンテンツ(映画や音楽、小説など)の無制限な利用を防ぐために、オリジナルのデータを特定のソフトウェアあるいはハードウェアでしか再生できないようにすることで、第三者による複製や再利用を難しくする技術・管理方法のこと。

DRMは,コンテンツの一部を暗号化することで,特定の再生ソフトウェア以外での再生を不可能にしている.
商用DVDにはCSS(Contents Scrambling System),ブルーレイディスクにはAACS(Advanced Access Content System)などのDRM(コピーガード)があるが,インターネット上に暗号化キーが流出していて,そのキーを使うことでコピー可能

https://ja.wikipedia.org/wiki/デジタル著作権管理

例えばEMEってやつはW3C使用のDRMらしい
https://ja.wikipedia.org/wiki/Encrypted_Media_Extensions