2020-01-01から1年間の記事一覧

オブジェクトの認識 javascript & PHP

js: typeof Object.keys().length // Object が空かを判別 Object.values() ref: infoteck-life.com www.deep-rain.com developer.mozilla.org developer.mozilla.org PHP: gettype ref: www.javadrive.jp PHPとMySQLのツボとコツがゼッタイにわかる本 作者:…

Laravel + MongoDB + jensseger/laravel-mongodb: update deeply nested mongodb documents

updated: 2022/3/29 環境: laravel@7.28.4 mongodb-php-driver@1.7 jensseger/laravel-mongodb@3.7.0 編集したいprofielDetail model のstructureは下記とする。 Userモデルは一つのProfileDetailモデル(hasOne)を持つ。 hasOneModel では protected $filla…

Vuetifyを使って電話番号フォームのvalidation

updated: 2021/4/27 環境) vue@2.6.12 vuetify@2.3.18 vuex@3.5.1 vuetifyのv-textfieldを使って電話番号のフォームvalidationを実装する フォームのフィールドは電話番号全体で一つとするのではなく、ハイフンで区切って3つのフィールドを持つものとする。…

VueJS: componentのdataを初期化する reset component datas

componentを初期化する方法に関して solution1) v-ifを使って初期化 solution2) マニュアルでdataに初期値を割り当てる ref) qiita.com プロフェッショナルWebプログラミング Vue.js 作者:山田 典明,長澤 賢,関口 勇樹 発売日: 2020/11/11 メディア: Kindle版

temlate syntax内で条件分岐

三項演算子とテンプレート文字列を使う <div :to="/foo?param=" + `${this.$store.state.something.status === "profile" ? "profile" : "home"}`> ref: developer.mozilla.org stackoverflow.com 確かな力が身につくJavaScript「超」入門 第2版 作者:狩野 祐東 発売日: 2019/09/21 メディア: Kindle版</div>

Laravel-Cashier Chashierをインストールしてからphp artisan migrate をしたら SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'stripe_id' …

Cashier に関するテーブルのcustomer, subscription, subscription_item はphp artisan migrate:reset してもテーブルがdropしないのでそのままphp artisan migrate:refreshすると上記タイトルのエラーが出る。 laravel.comと公式にあるので上記を加筆したが…

Laravel Best Practice

良ページ www.laravelbestpractices.com LaravelとNuxtではじめるSNSシェアアプリ開発 (技術の泉シリーズ(NextPublishing)) 作者:寺田 晃大,峯岸 海 発売日: 2020/05/01 メディア: Kindle版

jensseger/laravel-mongodb 日付の取り扱い

環境: jensseger/laravel-mongodb@3.7.0 Moloquentを使用したmodelは、DB上にはデフォルトの設定ではMongoDB\BSON\UTCDatetimeで保管されている。 しかしキーにアクセスすると… ↑ timezoneがAsia/Tokyoで返るのはlaravelのconfig/app.phpでtimezone, locale…

canvas element を通常のイメージ扱いし、モバイル端末でタッチスクロールできるようにする

canvas で画像を composite し、生成された canvas を通常の img のように表示上をタッチスクロール可能にするためには… 環境: vue@2.6.12 konva@7.1.3 canvas を dataURL に変換してcanvas と置換 ⇒ キャンバスを一度画面にレンダリングした後でないと変換…

VueJS + canvas でレスポンシブなcanvasの生成でつまずいた時

環境: vue@2.6.12 konva@7.1.1 dialog内でcanvas生成時、width, height を指定するのでその値をリアクティブに取得したいがdialogのtoggle等でDOM生成前に値を0で取得してしまい、うまくcanvas が描画できない場合 mounted() { this.resizeStage() this.$ne…

vue-router のナビゲーションガードによる昔の twitter like な modal の実装

updated: 2020/10/16 環境: vue@2.6.12 vuex@3.5.1 vue-router@3.4.6 Goal: あるユーザーのポストにダイレクトにアクセス時、 modal を閉じると当該ユーザーのプロフィールページに移行。 また、タイムラインからあるユーザーのポストにアクセス時、 modal …

Laravel 6.x から 7.x へアップグレード with jenssegers / laravel-mongodb

環境: php@7.2 laravel@6.18.35 mongodb@4.0.1 ext-mongodb@1.6 jenssegers / laravel-mongodb が laravel7.x に対応するようになったのでそれへの対応について。 composer.json のlaravel の dependency だけ書き換えて composer update するとエラー が出…

AWS Cloud9 の PHP のバージョンを切り替える

環境: ec2: ubuntu@18.04.06 インストール済みのPHPのバージョンを確認 php -v インストールされているPHPのリストを見る sudo update-alternatives --lsit php 標準で仕様するphpの切り替え sudo update-alternatives --set php /usr/bin/php7.2 ref: labo…

Laravel : Canvas Data を Laravel Storage にアップロードする

環境: Laravel@6.18.35 HTMLCanvasElement.toDataURL()でフロントから送られたデータのサーバー側の処理に関して。 //ヘッダに「data:image/png;base64,」が付いているので、それは外す if (preg_match('/data:image\/(gif|jpeg|png);base64,(.*)/i', $prod…

Laravel error: file_put_contents() failed to open stream: Permission denied

updated: 2021/10/4 環境: Laravel@8.62.0 ubuntu@20.0.4 事象: ファイルアップロードコードを書いている途中、laravel/storage のパーミッションを sudo chown -R ubuntu:web-content storage にしたあたり? solution: ディレクトリのパーミッションを変…

Laravel Cashier: StripeのダッシュボードからデフォルトのpaymentMethodを設定すると返値が変わる

環境: laravel@6.18.35 laravel-cashier@12.3.1 LaravelからデフォルトのpaymentMethodを設定した場合 Stripeのダッシュボードからデフォルトを別のpaymentMethodに設定すると… PaymentMethod object ではなく、 Card object を返すようになってしまうので…

Laravel Cashier: paymentMethods()が空のobjectしか返さない

環境: laravel@6.18.35 laravel-cashier@12.3.1 $paymentMethods = Auth::user()->paymentMethods() solution) dd($paymentMethods[0])で返る以下の項目がアクセス可能なプロパティなので $paymentMethods[0]->card等 もしくは、 $paymentMethods[0]->asStr…

VueJs 条件付きでクリックイベントを listen する

Updated: 2020/9/2 APIを叩いてからボタンをクリックできるようにしたい等々 環境 Vue@2.6.12 <button @click="eventReady ? someFunc() : null"> computed: { eventReady() { if( // write condition ) { return true } else { return false } } } methods: { someFunc() { } } ----------------------------</button>…

Vuex: chrome の dev tool で mutation の検知ができなくなったら

環境: vuex@3.5.1 chrome-Vue.js devtools@5.3.3 mutation を検知できないので state の変遷も検知できなくなった。 firefox では検知可能だった。 solution) chrome 拡張機能から Vue.js devtools を再インストール

Laravel: .env ファイルをうまく読み込めなくなったら

env('APP_NAME') >>> null うまくenv関数が使用できない。この場合は php artisan config:clear

Vuetify - v-dialog の v-model に vuex state を指定する方法 --- v-dialog を別のコンポーネントから制御する

updated: 2021/6/16 通常 v-dialog は v-model で 該当コンポーネントが保持する data の値を指定する。 それによって dialog の外側をクリックしたときに表示を toggle することができる。 ここで vuex の state を指定すると外側クリック時にコンソール上…

raspberry pi: HDD mount erro / device size is reported zero invalid partition

sudo mkfs ext4 -n /dev/sda >>>device size is reported zero invalid partition 物理的にHDDのコネクタが緩んで電源不足で上記エラーが出ることがある。 ref: http://monteecristoo.hatenablog.com/entry/2018/04/20/115733 http://monteecristoo.haten…

raspberry pi で起動したらCannnot open access to console, the root account is locked.

raspberry pi で起動したらCannnot open access to console, the root account is locked. ディスクのマウント時にエラーが発生している可能性あり。 SDカードを外して別のPCで boot/cmdline.txtの末尾に半角スペースinit=/bin/shを追記。 raspberry pi を起…

Payment Request API が使用可能なブラウザか調べる方法

if(window.PaymentReqeust) { console.log("support") } else { console.log("not support") } ただし、payment Request API が使用可能でかつ、クレジット情報が既にブラウザに保存済みか調べるためにはpaymentRequestオブジェクトを生成したのち、canMakeP…

AWS Cloud9 で VFS Connection エラーでアプリケーションがうまく表示されない solved

updated: 2020/8/17 ブラウザのプラグインでAdBlockやscript block が必要なscriptをブロックしている場合があるのでそれらを停止させる。 --------------------------------------------------------------------------------------------- 環境: AWS Clou…

.babelrc error 集

余分な , があってはダメ 以下ダメな例 正解は

list rendering + v-model : v-model にdynamic な値を割り当てる/ Vuetify: v-dialog + list rendering

updated: 2020/2/15 vue@2.6.11 vuetify@2.2.12 vuetify の v-dialog を v-for 内で使用するとき個別の値を v-model に割り当てないとdialog に正しい list の値がパスされない。 https://github.com/vuetifyjs/vuetify/issues/5246 そこで v-for="(item, in…

Vuex: stateの値にpayloadを使う場合の注意事項

vuex@3.1.2 Goal: shopping cart の中身を商品のIDごとに管理し、かつ各IDごとの数量を vuex stateに保持したい。また数量が1つずつではなく複数 cart に追加できるものとする。 const state = { products: [] } const actions = { cart_addProduct({state,…

jenssegers/laravel-mongodb Basic Usage on cloud9 with php7 ⑪ difference between embedsMany relationship and hasMany relationship

embedsMany: 子供側の model は mongoDB 内に collection が作成されず親の collection 内にデータがネストされる。 _id は自動で付与される。 親: order 子: orderImage $order = App\Order::where("user_id", 42)->first() $order->orderImages()->create(…

Laravel: model を任意のディレクトリに移動させたい場合

laravel@6.3 model を任意のディレクトリに移動させたい場合 php artisan make:model MODEL_NAME 任意のディレクトリに移動 php artisan make:migration CreateModel_nameTable php artisan migrate **必ず migrate する前にディレクトリを移動させる。 **…