AWS Cloud9 で private subnet を追加して private subnet 内に立てた instance に SSH 接続する 力技

背景: cloud9 で mongodb を利用するとき app server と同一の EC2 インスタンスにmongoDB をインストールして使用したが、より本番環境に近い private subnet 内に EC2 インスタンスを立て、そこに mongodb server を作ることを試みた。 流れ: cloud9 と同…

Vuetify - v-text-fieldの中身をマニュアルで空にする

vuetify@2.5.5 ケース: v-text-fieldの入力の先頭の文字にスペースを入力されたら弾きたい solution: text-fieldの入力を検知 入力の頭がスペースか判別 text-filedにrefを設定してv-text-field component内のdataにアクセス スペースなら中身を空に 1. <v-text-field v-model="hoge" @input=input ref="foo"> 2 </v-text-field>…

Vuetify で v-dialog を2重にネストして発生する infinite recursion エラー

v-dialogのダイアログ内でもう一つネストしてv-dialogを設置すると、 2段目のダイアログを2回開閉すると下記のエラー でタブがクラッシュする。 solution) ネストされたv-dialog に:retain-focus=false を設定 ref: github.com

Laravel と VueJs の連携

環境: Laravel@8.42.1 vue@2.6.12 vue-router@3.5.1 App Structure /welcome welcome component内でregister/login リクエスト 結果が成功なら ’’ にリダイレクトするが、laravel blade template を切り替える必要があるのならば vue-router の $router.go,…

solved) Laravelでphp artisan db:seed をしたらエラー Unable to locate factory for MODEL_NAME

環境: Laravel@8.42.1 laravelを7.xから8.xにアップグレードしたタイミングで php artisan db:seed をしたら Unable to locate factory for MODEL_NAME とエラー solution) 各モデルのnamespaceを正しく修正 それにともない、各seeder, factoryファイルも修…

Laravel error: laravelのバージョンを7.xから8.xにアップグレードしたらmodelのclassが見つからなくなった

環境:laravel@8.42.1 laravelを7.xから8.xにアップグレードしたタイミングで下記のエラー modelのクラスがうまく取得できなくなった composer dump-autoload でエラーが確認できる solution) namespaceを修正 laravel プロジェクトのappディレクトリ直下に…

Upgrade Laravel from 7.x to 8.x / Upgrade PHP7.2 to PHP8.0 / Upgrade jenssegers/laravel-mongodb on AWS Cloud9

PHPをUpgrade sudo add-apt-repository ppa:ondrej/php sudo apt-get update sudo apt-get install libapache2-mod-php8.0 sudo a2dismod php7.2 sudo a2enmod php8.0 sudo apt-get install php8.0-dom php8.0-mbstring php8.0-zip php8.0-mysql php8.0-comm…

Laravel + MongoDB + jensseger/laravel-mongodb: データベースからランダムにドキュメントを取得する方法

laravel@7.28.4 jensseger/laravel-mongodb@3.7.3 $result = myModel::raw(function($collection){ return $collection->aggregate([ ['$sample' => ['size' => 3]] ]); }) ref: github.com docs.mongodb.com stackoverflow.com

VueJs: component と slot の取り扱い

環境: vue@2.6.12 ある二つのモジュールについて、、、

Vuexでstateにあらかじめ設定していないプロパティを新たに挿入するときの注意事項

環境: vue@2.6.12 vuex@3.6.2 state = { test: {} } mutations = { 'addNewProp'(state, payload) { state.test[payload.key] = payload.content OR Object.assign(state.test, {[payload.key]: payload.content}) } } 上記でstateに新しいプロパティを付与…

konvajs で [Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>

コンソール上で下記エラーが表示 [Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make e page more responsive. See <URL> canvas 上でのイベントの取得に時間がかかり描画パフォー</url></some>…

VueJSでメモリマネジメントを加味した無限スクロールを実装

updated: 2021/7/18 無限スクロールは読み込むほどDOMが大きくなるので画面外のDOMは極力消して軽量化する必要がある。 より簡単な方法があったので加筆 vuetify の intersection-observer ディレクティブを使うと楽 環境: vue@2.6.12 vuetify@2.5.6 vue-in…

VueJS: Computed property "hoge" was assigned to but it has no setter

環境: vue@2.6.12 computed propertyをメソッドで直接定義し直したら Computed property "hoge" was assigned to but it has no setter とエラー computed property を再定義する場合、あらかじめ該当するproperty に setter, getter を設定しておく必要が…

fengyuanchen / compressorjs を使用して画像を圧縮してからnhn / tui.image-editorでキャンバスエディターを読み込む

背景: サイズの大きな画像をtui editor で読み込むとCPUスペックの低いモバイル端末でFilterの適用パフォーマンスが致命的に悪かったため、editor読み込み前に画像を圧縮する必要が生じた。 環境: compressorjs@1.0.7 tui.image-editor@3.11.0 onFileChang…

オブジェクトの認識 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 を返すようになってしまうので…