- 1. rm -rf node_modules 時に Directory not empty が返る
- 2. パスワードを保存する時に最低限やるべき事 不可逆暗号(ハッシュ)化
- 3. Twitter APIを使ってツイートしてみた
- 4. 国際信州学院大学をSeleniumで、スクレイピングする【TypeScript】
- 5. 【Express】ESM方式でimportするときにルーターを使う方法
- 6. npm WARN config global `–global`, `–local` are deprecated. Use `–location=global` instead.が出た時の解決策
- 7. Docker-compose3でnode.js&express&mongodb&nginxの環境を整える[完全版]
- 8. AWS IoT Coreにブラウザから様々な認証方法で接続してみる
- 9. Node(npm)でWebpackコマンドでエラーになる
- 10. 地震情報を簡単に扱いたい!
- 11. npm WARN config global `–global`, `–local` are deprecated. Use `–location=global` instead.への対応メモ
- 12. arraybuffer 画像を FormData で Node.js サーバにアップロード
- 13. 型定義リポジトリをGitHub Packagesで社内限定公開する(yarnでもnpmでも)
- 14. Next.js学習まとめ
- 15. node.jsのモジュールについてまとめ
- 16. WindowsでbuildするとError: EPERM: operation not permittedが発生する問題への対応
- 17. ESLintでParsing error…となった時の対応 parserOptionsを設定する
- 18. Node.jsに初めて触れてみた
- 19. asdfでPHPやNode.jsをインストールしたかった
- 20. GitHub ActionsでmainとdevelopブランチへのPull Requestに対して自動テストを設定する
rm -rf node_modules 時に Directory not empty が返る
“`sh
$ rm -rf node_modules
rm: node_modules: Directory not empty
“`rm -r を使うと消せる
“`
$ rm -r node_modules
“`
パスワードを保存する時に最低限やるべき事 不可逆暗号(ハッシュ)化
## はじめに
仮に自前で認証機能を実装する場合、パスワードを保存する際には最低限すべき事があり、それについて少し理解を深めてみたので備忘録を残す。## パスワード保存時には不可逆暗号(ハッシュ)化をする
パスワード保存時にはそのままDBに保存するのは絶対NGで、[sha256](https://wa3.i-3-i.info/word15997.html)などの暗号学的に優れたハッシュ関数でハッシュ化するのが鉄則になる。そして、単にハッシュ化すればいいのではなく、ソルト(Salt)と呼ばれるランダムな文字列をパスワードに追加してハッシュ化する必要がある。理由としてはハッシュ化の方法が分かれば https://hashtoolkit.com/ のようなサイトで簡単に逆引きができてしまうため。
実際にどのようにパスワードを保存すればいいのか?だが、例えば以下のようなコードになるだろう(以下はORMの[Sequelize](https://sequelize.org/)を利用している時の実装例で、[create(Simple INSERT queries)](https://seq
Twitter APIを使ってツイートしてみた
## 背景
Node.jsを学び始め、APIを学び始め、
TwitterやQiita等でもアウトプットし始めた。ということで、
これらを纏めて一緒に触ってみよう。と思った今日この頃。笑## 前提
* Node.js(v16.14.2)
* Twitter開発者アカウント取得
1)Twitter画面右下の「・・・」の中にある「開発者」をクリック

2)Developer Portalで、sign upをクリック
3)名前、国、目的等を入力
また事前に、ChromeDriverとGoogle Chromeのインストールが完了していることを前提に行います。
## 使用技術
– TypeScript
– Node.js
– Selenium
– WSL2(Ubuntu)
## 初期化処理
– Google Chromeの設定:`init`
– スクレイピング先のURLの設定:`setUrl`“`ts
import { Builder, By, Capabilities, WebDriver } from ‘selenium-webdriver’;let webDriver: WebDriver | null = null;
/**
* 初期化処理
*/
const init = async () => {
webDriver = await new Builder()
// Chrome起動時のオプションの設定
.withCapabilit
【Express】ESM方式でimportするときにルーターを使う方法
# なぜESM方式を使ってるのか
ESM Moduleを使おうとしてpackage.jsonに`”type”: “module”`とやっているとrequireが使えないので# やり方
まずは普通にimportでやる
“`javascript:index.js
import hoge from “./hoge.js”;app.use(“/hoge”, hoge);
“`お次に`hoge.js`を書いていく
“`javascript:hoge.js
import express from “express”;
var router = express.Router(); //ルーターを生成router.get(“/puyo”, function(req, res){
//なんかの処理
})export default router;
“`完成
npm WARN config global `–global`, `–local` are deprecated. Use `–location=global` instead.が出た時の解決策
数日前に突然“`npm WARN config global `–global`, `–local` are deprecated. Use `–location=global` instead.“`なるエラーが出るようになった。
どうやらnpmをグローバルインストールしていると“`–location=global“`推奨のメッセージが出てしまうらしい。
npm8.12.1ではすでに修正されているので、“`npm -g update“`でアップデートすれば直るとのこと。(エラー時点では、8.11.0を使っていた)代替策としては、program Files > nodejsインストールフォルダ内のnpmファイルとnpm.cmdファイルを以下のように変更する。
“`diff_batchfile:cmd 23行目
– NPM_PREFIX=`”$NODE_EXE” “$NPM_CLI_JS” prefix -g`
+ NPM_PREFIX=`”$NODE_EXE” “$NPM_CLI_JS” prefix –location=global`
“`“`di
Docker-compose3でnode.js&express&mongodb&nginxの環境を整える[完全版]
# はじめに
これはある記事を参考にnode.jsとmongodbとnginxのDocker環境をcomposeでめっちゃお手軽に作ったろ、とか思ったらエラーしたため案外悪戦苦闘してしまった人の後日談です。
記事を書くとしたら、以下のURLをモロパクな感じになっちゃうと思って遠慮していた(というかダメ)なんですが、久しぶりに環境を整えようとしてみたら思ったよりもメンドクサかったので、備忘録という免罪符を元にモロパクしようと思います。
モロパクしようと思ったのですが、ついでにexpress-generatorを使用してテンプレートを利用してみようと思って、少し本家様の流れから改変しています。また、この記事はCentOS7をインストールした直後を想定していたりいなかったりしています。[引用]
https://zenn.dev/cizneeh/articles/nginx-node-mongo-docker-example#docker-compose.yml
# 環境
**2022/06/17**
・CentOS7
・Docker 1.13.1
・Docker-compose
AWS IoT Coreにブラウザから様々な認証方法で接続してみる
AWS IoT Coreとして、MQTT ブローカが実装されており、自身でブローカを立てる必要がないですし、ブラウザ向けのクライアントライブラリもあるので、楽です。
AWS IoT Coreの認証方法にはいくつかの種類がありますので、それらを実際に試してみます。状況に合わせて使い分けてみてください。
ちなみに、今回扱うのは認証方法であって、MQTT/WebSocket/Httpといったプロトコルの種類ではないです。プロトコルは、AWS IoT Core側は特に違いは意識する必要はないですし、クライアントライブラリも違いを最低限にしてくれています。
以下の認証方法を扱います。
① (まずはNode.jsから)AWS IoT証明書を使って認証する。
② IAM認証
③ IAM+AssumeRole認証
④ Cognito認証
⑤ カスタムオーソライザ<やること>
・AWS IoT Coreに認証して接続後、トピック名「test_sub」に対して、Subscribeします。
・いずれかのクライアントから、トピック名「test_sub」に対してPublishします。ソースコード
Node(npm)でWebpackコマンドでエラーになる
# はじめに
「TypeScriptハンズオン」という書籍を勉強するにあたって、書籍の環境構築手順をDocker環境で構築しようと考えました。
試行錯誤して1度できたのですが、なぜか2回目にやったときにコマンド実行でエラーが発生しました。そこで発生した事象が調べたところどこにもなかったのでまとめます。
# 問題
以下のようなエラーが発生しました。
“`
$ npx webpack-cli init
=> [webpack-cli] No commands found to run$ npx webpack-dev-server
=> const maxPort = 65_535でシンタックスエラー
=> webpack-dev-server syntaxerror unexpected token =のエラーもでた
“`前に1度作成したときにはできたのになぜか同じ手順を踏んでもできなくなっていました。
# 解決方法
原因はDockerで利用している`Nodeイメージ`が**古い**ことでした
`node:10`を古い記事をみて利用していました。これを`node
地震情報を簡単に扱いたい!
:::note warn
読みにくい記事に注意してください….。
:::## tl;dr
地震情報を簡単に扱えるようにするやつ## はじめに…
まずは皆さんに、P2PのAPIのすばらしさをば
・[WebScoketAPI](https://www.p2pquake.net/json_api_v2/#/)から送られてくるやつはJSONなので扱いやすい(最高)
・情報伝達がすごいほど早い
・すごい## 今回作った奴
https://github.com/akikaki-bot/p2pws_getter
今回はTypeScriptで大部分を書きました。TSは簡単なやつでしか書いてないので結構難しかった….。
## しくみ
## 感想
たのちかった。TypeScriptだいちゅき。
## Link
APIの本
ht
npm WARN config global `–global`, `–local` are deprecated. Use `–location=global` instead.への対応メモ
Reactを使おうと思ったら
“`
npm WARN config global `–global`, `–local` are deprecated. Use `–location=global` instead.
“`
(npm 警告グローバル設定 `–global`, `–local` は非推奨です。代わりに `–location=global` を使ってください。)みたいな警告が。
## 調べてみる
調べてみると、こちらのstackoverflowの記事がヒット。
https://stackoverflow.com/questions/72401421/npm-warn-config-global-global-local-are-deprecated-use-location-glo
Windowsで起こる現象みたいですね…?
## 対応策
どうやら…**node.js**がインストールされているディレクトリ(**Program Files/nodejs**あたり)の中にある
– npm
– npm.cmd
– npx
– npx.cmd
arraybuffer 画像を FormData で Node.js サーバにアップロード
LINE WORKS のトーク Bot を使って送信した画像をLINE WORKSのストレージからダウンロードして、 Node.js サーバーにアップロードするサンプルです。
LINE WORKSのストレージからダウンロードした画像はarraybufferの形です。
axiosを利用します。#### ダメなコード
“`
import Axios from ‘axios’;
const FormData = require(‘form-data’);……
try {
const lwResponse = await Axios.get(
‘http://storage.worksmobile.com/openapi/message/download.api’,
{
headers: {
consumerKey: consumerKey,
authorization: ‘Bearer ‘ + accessToken,
‘x-works-apiid’: apiId,
‘x-w
型定義リポジトリをGitHub Packagesで社内限定公開する(yarnでもnpmでも)
サーバーサイドと、クライアントサイドで共通して利用する型定義リポジトリを作ります。
型定義を社内のリポジトリで共通して使用します。`DefinitelyTyped`的な使い方が理想です。
では作っていきましょう。
なお先人がいらっしゃったので参考にしています。
https://zenn.dev/odiak/articles/950f05a34e9c84
# 手順
初期化
“`
npm init
“`TypeScriptとPrettierを追加
“`
yarn add -D typescript prettier
“`tsconfig.jsonはこんな感じにしてます(ほぼ参考記事コピペ)
“`json
{
“compilerOptions”: {
“target”: “ES2017”,
“module”: “CommonJS”,
“declaration”: true,
“strict”: true,
“outDir”: “./dist”
},
“include”: [“./src/**/*”],
“ex
Next.js学習まとめ
# Next.jsの学習まとめ
### Create Next App
“`zsh
npx create-next-app nextjs-sample
“`### ルート管理
ReactRouterではそれぞれのコンポーネントでルートを管理していたが、
Pages内のフォルダディレクトリで管理できるようになるメリットがある。
PagesフォルダはNextCreateApp時に追加されるので、これを使用する。
また、ルーティング管理のために特別な名称があり、
index.** というファイル名は”/”を表しており、
_**.**というようにアンダーバーから始まる場合はルーティングされず
ルーティング不要なファイルに使用されている。(_app.jsなど)
[**].**とした場合はパラメータを表し、
[…**].**とした場合は複数のパラメータを受け取る。|階層1|階層2|階層3|
|—-|—-|—-|
|Pages|_app.js|
||index.js|
||main|index.js|
|||content.js|
|||[articleId].js|
node.jsのモジュールについてまとめ
# node.jsのモジュールについて
この記事ではnode.jsのモジュールについてまとめてみた。
## httpモジュールについてまずはhttpモジュールを使う。
“`node.js
const http = require(“http”);
“`webサーバーを立てる。
“`node.js
const server = http.createServer();
“`リクエストイベントを登録して、クラインアント側のリクエストを監視する。
“`node.js
server.on(“request”,(req, res) => {
console.log(“誰かこのサーバーにアクセスしてきました。”)
})
“`ここで少し補足を加えると、クライアント側からサーバーに対してリクエストがあった場合、server.on()の第二引数のコールバック関数が呼び出されます。
コールバック関数の引数である(req,res) => {} のreqについて説明すると、引数reqにはサーバーにアクセスしてきたクライアント側のデータや属性が格納されています。
– r
WindowsでbuildするとError: EPERM: operation not permittedが発生する問題への対応
## 何が起きていますか?
Windowsでフロントのビルドを行うと頻繁に下記エラーが発生する
“`bash
$ yarn clean && npm-run-all build-prod:* && yarn rev-update
$ npm-run-all -p clean:*
$ node ./tasks/javascripts/clean
$ rimraf ./xxx ../xxx/
2 js files deleted
$ cross-env NODE_ENV=production webpack -p –config ./webpack.config.production.js# 問題のエラー
Error: EPERM: operation not permitted, open ‘C:\xxx’error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
ERROR: “bu
ESLintでParsing error…となった時の対応 parserOptionsを設定する
## 以下の記事を参照して頂ければと思います
https://note.com/shift_tech/n/n550ac679fbfa
**※Qiitaの記事は全て個人的な記載であり、所属する組織団体とは無関係です。**
## 補足
ソースコード全体は以下。https://github.com/yuta-katayama-23/node-express/commit/7d68ac256e4ece0ce980bf40628f0e5d7a860b0c
Node.jsに初めて触れてみた
## 背景
今までバックエンドの言語に触れたことがなかった。(そもそも駆け出しエンジニア。笑)
自分で以前作ったアプリでは、
MBaaSのFirebaseでバックエンドの処理を代行してもらってた程度。そんな状態ではいかんぜよ。。
ということで、Node.jsの基本を学んだので、
復習もかねて、アウトプットしてみる。## 前提
* Node.js(v16.14.2)
* VSCode
→適当なディレクトリでtest.jsを作成しておく## Node.jsを学ぼう
それでは、いってみよう~!
### 【1】簡単な計算をしてみよう
以下のように、aに10を、bに5という数値を入れて、
console.logにてa+bの結果を表示させてみる。
“`test.js
let a = 10;
let b = 5;
console.log(a+b);
“`
VSCodeでターミナルを開き、`node test.js`を実行。
そうすると、以下のように結果を表示してくれる。
“`ターミナル
C:\example\example> node test.js
15
“`
#### 重要
asdfでPHPやNode.jsをインストールしたかった
# はじめに
複数言語のバージョン管理ができる[asdf](https://asdf-vm.com)でPHPやNode.jsをインストールしたかったというお話。
結論、 PHPプラグインのAppleシリコン対応がまだ不十分なのでHomebrewでPHPをインストールしつつ、Dockerでマルチバージョン環境を作るのが良さそう。## 環境
Mac mini m1
# asdf
https://asdf-vm.com
“`bash
brew install asdf
echo -e “\n. $(brew –prefix asdf)/libexec/asdf.sh” >> ${ZDOTDIR:-~}/.zshrc
“`# Node.js
“`bash
brew install gpg gawk
asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.gitasdf list all nodejs lts
asdf global nodejs lts
“`で現時点で最新のLTS(16.x
GitHub ActionsでmainとdevelopブランチへのPull Requestに対して自動テストを設定する
# 概要
Github Actions (以降、「Actions」と略記)を用いてNode.jsでCI(Unit Testを自動実行してPassしている状態を保つ、を意図)する方法を記載する。
次を目的とする。
* masterとdevelopブランチに対するPull Requestが作成された際に、**Request元のブランチ**に対して「`npm run test`」が実行されるようにする
なお、本記事の記載内容は、次の公式ドキュメントに記載の内容とほぼ同じである。本記事は「実際にやってみると、こういう手順になる」を示すことを目的とする。
* Building and testing Node.js – GitHub Docs
* https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejsまた、先のドキュメント「`Building and testing Node.js`」は、Node.jsでのCIに特化したサンプルを提供してくれている