[JavaScript]ブラウザバック判定

isBrowserBack(){
    const perfEntries = performance.getEntriesByType("navigation");
    let result = false;
    perfEntries.forEach((perfEntry) => {
        if(perfEntry.type == 'back_forward'){
            result = true;
        }
    });
    return result;
}

[WordPress]不要なデフォルトmeta削除

/** meta name="generator" を非表示にする */
remove_action('wp_head', 'wp_generator');
/** EditURIを非表示にする */
remove_action('wp_head', 'rsd_link');
/** wlwmanifestを非表示にする */
remove_action('wp_head', 'wlwmanifest_link');
/** 短縮URLを非表示にする */
remove_action('wp_head', 'wp_shortlink_wp_head');
/** 絵文字用JS・CSSを非表示にする */
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action('admin_print_styles', 'print_emoji_styles');
/** 投稿の RSS フィードリンクを非表示にする */
remove_action('wp_head', 'feed_links', 2);
/** コメントフィードを非表示にする */
remove_action('wp_head', 'feed_links_extra', 3);
/** dns-prefetchを非表示にする */
add_filter('wp_resource_hints', 'remove_dns_prefetch', 10, 2);
/**
 * @param array $hints
 * @param string $relation_type
 * 
 * @return array
 */
function remove_dns_prefetch($hints, $relation_type)
{
    if($relation_type === 'dns-prefetch'){
        return array_diff(wp_dependencies_unique_hosts(), $hints);
    }
    return $hints;
}
/** wp versionを非表示にする */
remove_action('wp_head','rest_output_link_wp_head');
/** oEmbedを非表示にする */
remove_action('wp_head','wp_oembed_add_discovery_links');
/** rel="next" rel="prev" を非表示にする */
remove_action('wp_head','adjacent_posts_rel_link_wp_head');
/** <meta name='robots' content='max-image-preview:large' />を非表示にする */
remove_filter('wp_robots','wp_robots_max_image_preview_large');

[JavaScript]Promise

getCart(){
    return new Promise((resolve,reject) => {
        const url = 'url';
        fetch(url)
            .then((response)=>{
                if (!response.ok) {
                    throw new Error();
                }
                return response.json();
            })
            .then((json)=>{
                resolve(json);
            })
            .catch((error)=>{
                reject(error);
            });
    });
}

this.getCart()
.then((json)=>{
    
})
.catch((error)=>{

});

[Laravel]seeder備忘録

 
seeder作成

sail artisan make:seeder PostSeeder

 
PostSeeder.php追記

public function run(): void
{
    \App\Models\Post::create([
        'title'   => 'あいうえお',
        'body'    => 'かきくけこ',
        'user_id' => 1,
    ]);
}

 
PostSeeder実行

sail artisan db:seed --class=PostSeeder

 
factory作成

sail artisan make:factory PostFactory

 
PostFactory

public function definition(): array
{
    return [
        'title'   => fake()->text(20),
        'body'    => fake()->text(50),
        'user_id' => \App\Models\User::factory(),
    ];
}

 
必要なら.env修正

'faker_locale' => 'ja_JP'

 
DatabaseSeeder.php修正

use App\Models\Post;

runメソッドにある元ソースは削除

public function run(): void
{
    Post::factory(3)->create();
}

 
DatabaseSeeder実行

sail artisan db:seed

 
エラー「Call to undefined method App\Models\Post::factory()」の対処
Models\Post.phpに下記を追記

use Illuminate\Database\Eloquent\Factories\HasFactory;

class Post extends Model
{
    use HasFactory;
}

[Docker]WordPress用yml

docker-compose.yml

version: "3.7"
services:
 db:
  image: mysql:8.0
  container_name: mysql8
  restart: always
  environment:
    MYSQL_ROOT_PASSWORD: password # rootユーザのパスワード
    MYSQL_DATABASE: wp_local # WordPress用DB名
    MYSQL_USER: wp_user # WordPress用DB接続ユーザ名
    MYSQL_PASSWORD: wp_password # WordPress用DB接続パスワード
 WordPress:
  image: wordpress:latest
  container_name: wordpress
  restart: always
  depends_on:
     - db
  ports:
     - 10090:80
  environment:
    WORDPRESS_DB_HOST: db:3306 # DBサーバ名:ポート番号
    WORDPRESS_DB_USER: wp_user # WordPress用DB接続ユーザ名
    WORDPRESS_DB_PASSWORD: password # WordPress用データベース接続パスワード
    WORDPRESS_DB_NAME: wp_local # WordPress用データベース名
    WORDPRESS_DEBUG: 0 # デバッグモードOFF
  volumes:
     - ./html:/var/www/html
 phpmyadmin:
  image: phpmyadmin/phpmyadmin:latest
  container_name: phpmyadmin_ingrid
  restart: always
  depends_on:
     - db
  ports:
     - 10099:80

PHPMyAdmin
http://localhost:10099/
 
WordPress
http://localhost:10090/
 
 
container_nameを指定しない
docker起動時に自動起動しない

version: '3.8'

services:
  wordpress:
    image: wordpress:latest
    # container_name: wordpress_container
    restart: no
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: root
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - ./wordpress:/var/www/html
    depends_on:
      - db
  db:
    image: mysql:8.0
    # container_name: mysql_container
    restart: no
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: wordpress
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    ports:
      - "3306:3306"
    volumes:
      - db_data:/var/lib/mysql

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    # container_name: phpmyadmin_container
    restart: no
    ports:
      - "8081:80"
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: root
    depends_on:
      - db

volumes:
  db_data:

 

docker-compose up -d

 
ボリュームやキャッシュをクリアして完全に再作成

docker-compose down -v
docker-compose up -d --build

[JavaScript]文字列から漢字抽出

文字列から漢字抽出

const str = 'ひらがな小林カタカナ漢字';
const pattern = /(\p{scx=Han}+)/ug;
const matches = str.match(pattern);
console.log(matches);

出力

(2) ['小林', '漢字']