msksgm’s blog

msksgm’s blog

Webエンジニアです.日々の勉強,読書,映画観賞,美術観賞の記録を載せます.

技術メモ

anyenv、phpenvでphpのインストール方法と、発生したエラー一覧

概要 anyenv と phpenv を使用して php 7.3.29 をインストールしたときにいくつかエラーが発生したので、インストール方法と解決方法をメモします。 インストール方法について 先に anyenv, phpenv を用いたインストール方法についてです。 インストール方法…

OAuthについてまとめてみる3 OAuthのトークン(JWT、JOSE、Token Introspection、TokenRevocation)について編

OAuth の勉強会のために「OAuth 徹底入門 セキュアな認可システムを適用するための原則と実践」 を読んでいます。 OAuth徹底入門 セキュアな認可システムを適用するための原則と実践作者:Justin Riche,Antonio Sanso翔泳社Amazon まとめた資料を記事にしまし…

composer test を実行時に"Code coverage needs to be enabled in php.ini by setting 'xdebug.mode' to 'coverage'"(php, xdebug)

概要 anyenv でインストールした php で composer test を実行すると、以下のようなエラーがでてきました。 Code coverage needs to be enabled in php.ini by setting 'xdebug.mode' to 'coverage' 解決方法についてメモします 解決方法 php.ini の確認 確…

OAuthについてまとめてみる2 OAuthの脆弱性について編

OAuth の勉強会のために「OAuth 徹底入門 セキュアな認可システムを適用するための原則と実践」 を読んでいます。 OAuth徹底入門 セキュアな認可システムを適用するための原則と実践作者:Justin Riche,Antonio Sanso翔泳社Amazon まとめた資料を記事にしまし…

mysqlとmysql-promiseの違いについて

概要 node.js のパッケージにmysqlとpromise-mysqlがあります。 何が違うのかがわからないので調べてみました。 以下promise-mysqlのnpmのページから引用 原文 Promise-mysql is a wrapper for mysqljs/mysql that wraps function calls with Bluebird promi…

OAuthについてまとめてみる1 OAuthとは編

OAuth の勉強会のために「OAuth 徹底入門 セキュアな認可システムを適用するための原則と実践」 を読んでいます。 OAuth徹底入門 セキュアな認可システムを適用するための原則と実践作者:Justin Riche,Antonio Sanso翔泳社Amazon まとめた資料を公開します。…

git で大文字子文字を区別する方法

概要 git を使っていたときに、ファイル名がa.txtで管理していたものを、A.txtに変更してもファイル名が変更されたことが検知されない問題があったので調査 解決策 公式ドキュメントにもあるとおり、core.ignorecaseが true だと大文字と小文字が区別されな…

関数コンポーネントとFormikを使用して画像をブラウザにアップロードする

概要 関数コンポーネントと Formik を使用して画像をブラウザにアップロードする方法が見当たらなかったので作成しました。 ソースコードは以下 github.com codesandboxは以下 codesandbox.io 実装 全体像 実装の全体は以下のようになります(./src/App.tsx…

formikとyupでReactのFormを作成

概要 formik を使って、React の form を作成方法についてまとめます。 formik は React で Form を作成するときに便利なライブラリです。 初期値やバリデーションを React らしく作成することが可能です。 また Yup というバリデーションを簡潔に記述できる…

typeormで多対多(@ManyToMany)を実装する

概要 過去に typeorm の交差(中間)テーブルを手動で実装する方法について記事にまとめました。 今回は、typeorm で交差(中間)テーブルを自動生成する方法についてまとめます。 Cascade を指定しないとうまく動作しなかったりするので、そちらについても…

typeormでMySQLを使用時の文字化け(?が表示される)を解決する

概要 typeorm で MySQL の DB を作成すると、日本語が文字化け(?が表示される)するので解決するためにおこなった方法をまとめます。 解決方法 主な原因は2つあると考えられます。 それぞれに対して解決策を記述していきます。 原因1 MySQL 自体の文字コ…

typeormに中間テーブルを挿入する方法(ManyToManyを使わない)

概要 typeorm で中間テーブルを手動で作成する方法についてまとめます。 ManyToMany で自動生成されるので、あまり意味がなかったりしますが、気になったので調べました。 ソースコードはこちら。 実装方法 typeorm、docker-compose を使います。 若干異なり…

jwt-decodeでunknownの解決方法

問題概要 jwtDecode を使って、jwt を複合すると、以下のように、従来のオブジェクトに加えてiatとexpが追加されています。 typescript で型を指定して取得しようとすると、unkownのエラーが発生してしまいます。 ちなみにiatとexpは両方とも unix 時間を示…

routing-controllersにpassportを適用させる方法

概要 routing-controllers に passport を適用させる方法がわからなかったのでメモしました. 方法 @UseBeforeを使います. passport の設定方法はこちら import { JsonController, UseBefore } from "routing-controllers"; import passport from "../lib/s…

"Error: invalid expiresIn option for string payload" の解決方法 (Node.js, passport.js, jwt)

問題概要 jwt を用いた認証認可処理を実装していると以下のようなエラーに遭遇しました. Error: invalid expiresIn option for string payload 解決方法について記述します. 解決方法 こちらの記事が参考になりました. jwt.sign()の第一引数はオブジェク…

Firebase.「モジュール '"firebase/app"' にはエクスポートされたメンバー 'User' がありません。'import User from "firebase/app"' を使用するつもりでしたか?」「Module '"firebase/app"' has no exported member 'User'. Did you mean to use 'import User from "firebase/app"' instead?」 のエラー

問題概要 Firebase Authentication を使って,react に認証処理を追加しようとしたら,以下のようなエラーが発生しました. User クラスを import できていないようです. English Module '"firebase/app"' has no exported member 'User'. Did you mean to …

typeormの設定をormconfig.tsから読み込む

typeorm の設定ファイルはデフォルトで,ormcofig.json ですが,このままだと以下の問題点があると考えます. 環境変数を埋め込みづらい プロジェクトのルートディレクトリにファイルが増える 自動で読み込まれるのでデバックしづらい 環境変数を読み込むに…

コピペでanyenv,nodenvからReact(TypeScript)環境構築

n番煎じですが,自分用にanyenv,nodenvからReact(TypeScript)環境を作るコマンドのまとめです. 新しいPCとかEC2とかで,Dockerすら入っていない状態のときに使う使うことが多いので記事を書きました. MacOS,Linux向けに,記事を読まなくても上からコピペす…

「簡単にtypescript + express + mysql で簡易 webAPI サーバー作成」

MySQL + express + TypeScript で作成する記事がなかったので,備忘録がてらに記事を作成します. 一旦,エラーハンドリングは考えません. promise-mysql を使用しましたが,mysql でも問題ないと思います. ソースコードはこちら. 全体構成 ディレクトリ…

Stream APIを使ってArray配列の合計を計算する(Java)

Java で for 文を使わずに Array 配列の合計を求める方法がわからなかったのでメモ. for 文の場合 まずは普通パターン List<Integer> integerList = Arrays.asList(1, 2, 3, 4, 5); int sum = 0; for (int i = 0; i<integerList.size(); i++){ sum += integerList.get(i); } System.out.println(sum); Stream API の場合 reduce を使う場合 非メソッド参照 List<Integer> integerList =…</integerlist.size();></integer>

gitのremote branchがlocalでゾンビ化したとき

githubでremote branchを削除すると,localでgit remote -r を入力すると表示されてしまう. 以下のコマンドで削除できる. git remote prune origin

git rm --cached ファイルをリモートリポジトリのみ削除する

ローカルリポジトリのファイルは残してリモートリポジトリのファイルのみを消したいときがある. サンプルコード git rm --cached filename.ext この後,.gitignore に追加することでリモート追跡を除外することができる 補足 rm と git rm の違い rm 通常の…