スキップしてメイン コンテンツに移動

投稿

firestoreでAuto Incrementフィールドを作成

FirestoreでAuto Increment Fieldを作成 Firestoreで連番となるフィールドの作成方法を紹介します。 肝はFirestoreのtransactionを使って原子性(Atomicity)、一貫性(Consistency)、独立性(Isolation)を保証することです。 汎用的に使えるgenerateSequenceNumber関数を作成してみました。 manage_collection: 連番を生成するターゲットcollectionを管理するcollection名 target_collection: 連番を生成するターゲットとなるcollection名 numberField: 連番を生成したいフィールド名 を渡して使います。 function generateSequenceNumber ( db , manage_collection , target_collection , numberField ) { const docRef = db . collection ( manage_collection ) . doc ( target_collection ) ; return db . runTransaction ( ( transaction ) => { return transaction . get ( docRef ) . then ( ( doc ) => { if ( ! doc . exists ) { transaction . set ( docRef , { [ numberField ] : 1 } ) ; return 1 ; } const newNumber = typeof doc . data ( ) [ numberField ] === 'undefined' ? 1 : doc . data ( ) [ numberField ] + 1 ; await transaction . update ( docRef , { [ numberField

Google Cloud Storageでクラウド上にあるファイルをローカルにあるファイルと同期させる方法

Linuxのrsyncコマンドのようにクラウド上にあるファイルをローカルにあるファイルと同期させるには、下記のコマンドを実行すればOKです。 gsutil -m rsync -r source gs://bucket/dest rsync: Linuxコマンドのrsyncのようにファイルを同期させるためのコマンド -m: multi-threaded/multi-processingの意味で並列で複数のファイルを同期させるためのオプション -r: recursiveの意味で再帰的にディレクトリ内のファイルを同期させるためのオプション

Spring Bootでwarファイルを作成する方法

Google App Engine JavaでSpring Boot + Gradleを使ってアプリケーションをデプロイする方法を調べた。 まずは、下記のオフィシャルを参考に、Gradle App Engine Pluginを導入 Using Gradle and the App Engine Plugin | App Engine standard environment for Java docs | Google Cloud MavenでSpring Bootアプリケーションを作成する方法 https://cloud.google.com/appengine/docs/standard/java11/building-app/writing-web-service Spring Bootアプリケーションを作成→Gradle App Engine Pluginを導入 下記の記事の方が参考になりました。 https://blog.uoneweb.net/2021/09/04/695/ https://zenn.dev/donchan922/articles/ea76614f72b15e

PHPのエラーレベル定数からエラー文字列を返すコード

PHPで定義されているエラー定数(int値)からエラー定数の文字列を返すコードです。 PHPのライブラリで定義されている情報だけで、キーが「エラー定数のint値 」値が「エラー文字列」となる連想配列を生成しています。 // 定義済みの定数を取得 $allConstants = get_defined_constants ( true ) ; // "Core"カテゴリに入っていて"E_"から始まる定数のみ取得 $errorConstants = array_filter ( $allConstants [ "Core" ] , fn ( $key ) = > strncmp ( $key , "E_" , 2 ) === 0 , ARRAY_FILTER_USE_KEY ) ; // エラー定数のint値 -> エラー文字列になるように連想配列を逆転 $errorCodeToString = array_flip ( $errorConstants ) ; // 使い方の例 echo $errorCodeToString [ E_COMPILE_ERROR ] ;

Node.jsでローカルにインストールしたpackageからプログラムを実行する方法

Node.jsでローカルにインストールしたパッケージのプログラムを実行する方法の紹介です。 方法1: 直接パス指定 モジュールがインストールされたディレクトリ ./node_modules/.bin/ から直接指定。下記はeslintのバージョンを取得したい場合の例。 ./node_modules/.bin/eslint -v 方法2: package.jsonのscriptsセクションに設定して実行 下記はeslintのバージョンを取得したい場合の設定例。 { "name" : "Sample" , "description" : "Sample Project" , "scripts" : { "eslint-version" : "eslint -v" , } , 実行時はプロンプトで npm run {設定したscript名} と入力すればコマンドを実行することができます。上記の例の場合は下記のように入力すればOKです。 $ npm run eslint-version ちなみにデフォルトで設定されているscriptsは下記に記載されています。 https://docs.npmjs.com/cli/v7/using-npm/scripts

Windowsで特定のポートを使っているプロセスを強制終了

Windows上である特定のポートを使って立ち上げたサーバープロセスを強制終了する方法の紹介です。 ■ 方法 1) Windows PowerShellやCommand Promptを立ち上げます。必須ではありませんが、プロセスのKILLを実行するので、管理者権限で立ち上げるのが無難で す。 2) ポートで使用しているポート番号(<PORT>)のプロセスIDを検索します。 netstat -ano | findstr :<PORT> 3) 得られたプロセスIDを指定(<PID>の部分)して、そのプロセスをKILLします。 taskkill /PID <PID> /F ■ 実際の例 例えば49668ポートで検索した場合、下記のような結果が出力されます。 PS C:\Windows\system32> netstat -ano | findstr :49668 TCP 0.0.0.0:49668 0.0.0.0:0 LISTENING 3932 TCP [::]:49668 [::]:0 LISTENING 3932 上記の例の場合のプロセスIDは「3932」になるので、下記のようにコマンドを実行すれば、当該のプロセスがKILLされます。 taskkill /PID 3932 /F ちなみに複数のプロセスIDを指定してKILLすることもできます。 taskkill /PID 14328 /PID 8156 /PID 6864 /F