[JavaScript]ブラウザバック判定
isBrowserBack(){ const perfEntries = performance.getEntriesByType("navigation"); let result = false; perfEntries.forEach((perfEntry) => { if(perfEntry.type == 'back_forward'){ result = true; } }); return result; }
isBrowserBack(){ const perfEntries = performance.getEntriesByType("navigation"); let result = false; perfEntries.forEach((perfEntry) => { if(perfEntry.type == 'back_forward'){ result = true; } }); return result; }
ページネーション関連ファイルコピー
sail artisan vendor:publish --tag=laravel-pagination
下記ファイルの該当箇所を編集する
resources\views\vendor\pagination\tailwind.blade.php
/** 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');
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)=>{ });
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-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
loop: for(i=0;i<10;i++){ for(key in item.properties){ if(key === 'break'){ break loop; } } }
文字列から漢字抽出
const str = 'ひらがな小林カタカナ漢字'; const pattern = /(\p{scx=Han}+)/ug; const matches = str.match(pattern); console.log(matches);
出力
(2) ['小林', '漢字']