素肌にサスペンダー

個人的な備忘と日記

JavaScript

【JavaScript】??(Null合体演算子)と||(論理OR演算子)

どちらも動く場合などプロジェクトで若干適当に使ってしまった感があったので、確認した。 ??(Null合体演算子) 左側のオペランドが null または undefined の場合にのみ右側のオペランドを返します。 左側のオペランドが null や undefined 以外の値(たと…

【firebase】JavaScriptでfirestoreのダミーのtimestampデータを作りたい時

jestでテストしたいときなど、firebaseには繋がず、ダミーデータが必要な場合、以下のようにtimestampデータを作成できた。 import firebase from "firebase/app"; import "firebase/firestore"; ... // 現在の日時から5分前のDateオブジェクトを作成 const …

【JavaScript】イベント伝播を停止するevent.stopPropagation()

tableのtrをクリックでイベントを実行するようにしていて、trの中のtdのspanをクリックで別のイベントを実行したかったが、trのクリックイベントも実行してしまう。 その場合、親要素のtrのイベント伝播を停止する処理についてメモ。 event.stopPropagation(…

【BootStrap】今表示しているURLをコピーさせてツールチップを表示させる

BootStrapと、Clipboard.js を使ったサンプル ボタンをクリックしたら、「URL copied!」にツールチップの表示が変わる。 <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> </meta></meta></head></html>

【npm】ローカルの開発サーバーを起動し、ポート指定しプロジェクトをブラウザで確認する方法

WEB開発のプロジェクトで、任意のポートでローカル環境で確認したい場合、プロジェクトのルートに移動し、以下を実行する。 例)localhost:3000で確認したい場合 npx http-server -p 3000 ※node.jsのインストールは事前に必要

【JavaScript】JSONの一部の値を書き換えたい時の関数

ネストされたJSONオブジェクトの一部の値を書き換えたい場合、以下のような関数でできた。 第二引数のkeysに、objectの上から順に指定すればOK。 function updateJson(obj, keys, value) { let currentObj = obj; for (let i = 0; i < keys.length - 1; i++)…

【JavaScript】objectをdeep copyする方法

もとのobjectは変更せずコピーして利用したい場合、JSON.parse(JSON.stringify())でうまくいった。 const obj = { a: 0 } const newObj = JSON.parse(JSON.stringify(obj)) newObj.a = 1; console.log(newObj) // {a: 1} console.log(obj) // {a: 0} ←もとの…

【JavaScript】テンプレートリテラル (テンプレート文字列)

バッククォートで囲って複数行に渡って変数に代入できる。 テンプレートリテラル内にも変数入れられる。 const a = 1 const b = ` aは ${a} です ` console.log(b) なぜかいつも呼び方忘れるので、メモしておく。

【JavaScript】Tinder自動右スワイプ

Google chromeで、Tinderにログインして、スワイプで操作できる画面に遷移する command + option + iを押して、デベロッパーツールを開く consoleを選択し、以下のソースをコピペし、Enter setInterval(() => { const link = document.getElementsByClassNam…

【Jest】Visual studio codeでテストの自動実行を無効にする

settings.jsonに、以下を追記すればテストの自動実行が無効になる "jest.autoRun": "off",

【Visual Studio Code】TypeScriptファイルが色分け(ハイライト)表示されなかった時の対応

拡張機能の、JavaScript and TypeScript Nightlyのバージョンがv5.0.20221116だと、うまくいかないらしいので、v5.0.20221115にダウングレードしたらなおった。 方法 設定 > 拡張機能から検索し、アンインストールの選択メニューから、別のバージョンをイン…

【JavaScript】配列操作【ES6】

map, forEach, filter, find, reduceあたりを使って、配列操作をすることが多く、都度ググることが多いけど、個人的によく使うのをメモしていく。 filter 指定した値に一致するものを削除 const arr = ['a', 'b'] const deleteValue = 'a' const result = ar…

【fabric.js】スマホのピンチ操作を有効にする方法

npmで、普通のfabric.jsを利用していた。 www.npmjs.com その場合、ピンチイン・ピンチアウトで、選択したオブジェクトの拡大・縮小ができなかった。 fabric-with-gesturesをインストールすれば、使えた。 www.npmjs.com TypeScriptの場合、npm install --sa…

【fabric.js】オブジェクトの縦横比(アスペクト比)が変わってしまうハンドルを非表示にする方法

デフォルトだと4つの角に加えて、回転用の突出したやつと、4辺の真ん中にハンドルがあり、大きさを変えたり回転したりできる。 オブジェクトとして配置したものが写真だったりした場合は縦横比変えたくない。 その場合、setControlVisibleを操作すれば、意…

【fabric.js】canvasがw300px * h150pxになってしまう場合の対応

以下のように単純な四角形を設置した場合、canvas要素にインラインスタイル(width: 300px; height: 150px;)が適用される。 <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> </html>

【opencv.js】wasm streaming compile failedが出た時の対応

さくらサーバーのスタンダードプラン(https://rs.sakura.ad.jp/standard.html)で、opencv.jsを使おうとしたら、以下のエラーが出た。 opencv.js:20 wasm streaming compile failed: TypeError: Failed to execute 'compile' on 'WebAssembly': Incorrect r…

【Google Maps API】Webサイトに埋め込んだ地図をモノクロにしてsvgのオリジナルマーカーを適用する方法

Webサイトに埋め込んだGoogleMapをデフォルトのデザインじゃなくて、そのサイト用にカスタマイズしたい場合がある。 Google Maps APIを使ってできるけど、オプションやらたくさんあって出来ることが多い。 developers.google.com 今回は、以下の簡単なカスタ…

【Firebase】FireStoreのTimestampをJavaScriptのDateに変換

FireStoreのTimestampはそのままだと、以下のような形式で取得できる。 Timestamp(seconds=1634252400, nanoseconds=0) Date型に変換するには、以下の2通りが考えられる。 ※timestampという変数に取得したTimestampが入っている想定 toDate()を使う console.…

【node.js】certificate has expiredが出た時の対応

以下の証明書エラーで、tesseract.jsの言語ファイルが読み込めなかった。 Uncaught (in promise) FetchError: request to https://tessdata.projectnaptha.com/4.0.0/{言語コード}.traineddata.gz failed, reason:certificate has expired tesseract.jsを使…

【JavaScript】特定のDOM内のgetElementsByNameは取得出来ない

getElementsByNameを使うと、name属性から要素を指定出来る。 document.getElementsByName('input-name')とすると、ページ内の全てのinput-nameというname属性を持つ要素全て取得できる。 例えばformが複数ある中で、特定のformのinput-nameというname属性を…

Pure JSでREST APIの取得方法

webアプリでREST API操作する場合、大体のプロジェクトでaxiosがインストールされていて、webサイト制作だとjQueryがインストールされていて、$.ajax〜で書いていた。 Pure JS(フレームワークなし)での書き方はいつもググっていたので、メモしておく。 var…

Google Chromeの拡張機能(アドオン)を作成・公開する手順

最近、ちょっとしたGoogle Chromeのアドオンを作成・公開してみたので、その手順をメモしておく。 1.作成 manifest.jsonを作成する。 content_scriptsに、使用するcss/jsを指定する。 matchesは、特定のURLで動作させたい場合に指定する。 iconsは、16,48,12…

【JavaScript】レイアウトの中で文字サイズを画面幅に応じて可変にする

cssのfont-sizeの指定の仕方で、vwがある。 100vwで今の画面の横幅いっぱいのサイズを指定できて、10文字で横幅いっぱいにしたければ、font-size: 10vwを指定すれば大丈夫。 ただこれだと、「画面幅」に対して計算されるので、divの中のdivとか、「レイアウ…

JavaScriptのobjectをvalueで並べ替えたい場合

JavaScriptのobjectは、順番は保障されないとのこと。 teratail.com なので、配列に変換してsortしたので、メモ。 // 並べ替えたいオブジェクト const obj = { "a": 0, "b": 3, "c": 1, "d": 2, }; const arr = []; const keys = Object.keys(obj); const va…

未使用なnpm packageを調べる

開発時に入れたものの、結局使わなかったpackageは、なるべく削除したい。 depcheckというコマンドで、不要なパッケージを調べてくれる。 www.npmjs.com インストールして実行の場合 インストール npm install depcheck -g 実行 depcheck インストールせずに…

JavaScriptで、文字列の中からURLを検知してリンクにする

フロントエンドで、文字列の中からURLの部分を検知して、自動的にaタグのリンクを生成する方法をメモ。 こちらの記事の内容で出来た。 ginpei.hatenablog.com サンプル テキストエリアに、URLを含んだ文字列を入力して送信すると、aタグに変換されたhtmlがdi…

JavaScriptでcanvasタグで円グラフを描画する

canvasタグをJavaScriptで制御して、グラフを描画することがあるので、メモ フォームに何パーセントかを入力し、送信したらcanvasタグでそのパーセンテージを描画するサンプル <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Canvasで円グラフ…</meta></meta></meta></head></html>

Cognito Identity PoolsとJavaScriptで、AWSのS3にファイルアップする方法

1.AWSコンソール上で、CORSの設定をする。 以下を参考に実施。設定をしないと、クロスドメインリクエスト許可されていないのでエラーになる。 https://docs.aws.amazon.com/ja_jp/sdk-for-javascript/v2/developer-guide/s3-example-photo-album.html#s3-exa…

JavaScriptで、AWSのS3にファイルアップする方法

1.AWSコンソール上で、CORSの設定をする。 以下を参考に実施。設定をしないと、クロスドメインリクエスト許可されていないのでエラーになる。 https://docs.aws.amazon.com/ja_jp/sdk-for-javascript/v2/developer-guide/s3-example-photo-album.html#s3-exa…

Vue.jsで、特定の要素が画面に表示されたら実行したい時に便利なvue-intersect

vue-intersectがシンプルで便利だったので、使い方をメモ。 こちらを参考にインストール github.com NPM npm install vue-intersect --save Yarn yarn add vue-intersect 使い方 使いたいVueファイルに、importして、@enter=で表示した時に実行したいmethods…