- 1. あるWebサービスの開発メモ・Docker + Nextjs + TypeScript + mui + supabase-js + react-query + swiper の導入手順
- 2. 【Node.js】検証と実践:Streamの基本的な使い方
- 3. あるWebサービスの開発メモ
- 4. S3にあるPDFを取得してZIPにする
- 5. [チャット]SNSのテンプレートを作成してみた[解説編]
- 6. [認証]SNSのテンプレートを作成してみた[解説編]
- 7. SNSのテンプレートを作ってみた
- 8. Rollup.jsによってNode.js/TSプロジェクトをバンドルと圧縮
- 9. Docker-composeでnode.jsのUDP通信をテスト。
- 10. インストーラから入れたnode.jsを削除しnvmをインストールしてnode.jsとyarnも入れる
- 11. Error: You must provide the URL of lib/mappings.wasmエラーが出た場合の対応
- 12. 動画編集のジャンプカット(ジェットカット)をNode.jsで自動化する
- 13. npmコマンドが何も出力せずに終了する問題を解決した話
- 14. 【Express.js】リダイレクト時に未保存のセッションデータを確実に保存する
- 15. pm2 commands
- 16. Docker ComposeとGitHubを使用して、Node.js + Express + MySQLの環境構築を行う
- 17. Express + TypeScriptでexpress-sessionを利用する
- 18. sequelizeのモデルをTypeScript化して、ルーティングで使用する方法
- 19. express-generatorで作成したプロジェクトでTypeScriptを使用する
- 20. CloudFunctionsのデプロイエラー3つの対処方法/nodeとArtifact Registryとconfigの問題について
あるWebサービスの開発メモ・Docker + Nextjs + TypeScript + mui + supabase-js + react-query + swiper の導入手順
– [あるWebサービスの開発メモ・目次ページに戻る](https://qiita.com/ishi32/items/152a1ecf7eeee7a8fb57)
## Github
まずは Github に新規リポジトリをつくります。「Github なんか使わないよ」という方は、Vercel へのデプロイが git push をトリガーにしているのでぜひ導入を検討してみてください。
![スクリーンショット 2022-08-12 9.40.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539175/8afa5fee-d5f0-358d-8801-8886a414e2e6.png)
– [Create repository]
クライアントPCで clone します。
“`
$ git clone [url]
Cloning into ‘sirokuro-dev7’…
remote: Enumerating objects: 3, done.
remote: Counting obje
【Node.js】検証と実践:Streamの基本的な使い方
`fs.Readable`と`fs.Writable`を使って画像ファイルをコピーするプログラムを作り
ストリームの基本的な使い方を検証、理解していきます。
利用するNode.jsのバージョンはv16.xです。
## この記事は何?
次のような方向けになると思います。
– Node.jsのstream APIを一通り目を通した人。
– 具体的に`writable.write()`を使った最低限レベルでのストリームを使った実装方法を知りたい人。`fs.writeFile()`のような一旦ファイルの内容をすべてメモリを展開するメソッドを使わずに
メモリが節約できるストリームを使っていく方法を模索していきます。ストリームの基本的な使い方といいつつ、
`trasform`と`duplex`ストリームについてはこの記事で扱いません。
`Readable`と`Writable`のみ扱います。この記事の流れですが、
まず誤解したままでざっくり実装してみて、その後間違っている部分を公式の説明をみたりして解消していき、改善したコードに作り直していきます。なげーです。
##
あるWebサービスの開発メモ
この記事を書き始めたのは 2022年8月11日、山の日という祝日です。[弊社](https://unremoted.com)ではある [Webサービス](https://sirokuro.site)を開発しています。9月か10月にはサービス開始を目指しており、その道中で知り得た知見というか手順といったものをまとめています。
## [技術スタック](https://qiita.com/ishi32/items/12f722004e914e9119aa)
## 開発環境
– [Intel chip の macOS PC に、Webフロントエンドの開発に必要なツールをインストールする手順](https://github.com/unrcom/devenv_mac_intelcpu)
– [Docker + Nextjs + TypeScript + mui + supabase-js + react-query + swiper の導入手順(執筆中)](https://qiita.com/ishi32/items/c7baded80262cd1fe429)## 本番環境
– [Ver
S3にあるPDFを取得してZIPにする
# 要件 : S3にあるPDFを取得してZIPにする
利用するライブラリ
– フェッチ処理 : [Axios](https://axios-http.com/)
– ファイル圧縮 : [Archiver](https://www.archiverjs.com/)
– S3からPDFのオブジェクト取得 : [AWS-SDK for javascript](https://docs.aws.amazon.com/ja_jp/sdk-for-javascript/index.html)### アップロードのシーケンス(処理手順)
“`mermaid
sequenceDiagram
participant フロント
participant バックエンド(例 download.ts)
participant S3フロント->>バックエンド(例 download.ts): ①ZIPダウンロードのリクエスト
par ②PDF取得
バックエンド(例 download.ts)->>S3: S3.getObject()
[チャット]SNSのテンプレートを作成してみた[解説編]
# はじめに
SNSテンプレートの完成版はすでにGitHubのリポジトリに上げています。
この記事ではそのリポジトリを元に、node.jsとexpressとsocket.ioの紹介をします。なお、環境作成としてリポジトリに上げているmongodbとnginxの解説はほとんど行いませんので悪しからず。リポジトリのクローンなどを雑に解説したヤツ
https://qiita.com/king_dog_fun/items/fb833a71115199c02c39
# serverのディレクトリ構成
express-generatorで生成される雛型を元に構成しています。大きな変更点と言えばconfigディレクトリの追加とsocket.jsの作成でしょうか。
express-generatorのインストールと実行は次のコマンドで行うことが出来ます。試してみてね☆“`
npm install express-generator -g
express –view=pug directory_name
“`ちーなーテンプレートエンジンはpugです。
以下に書いてある
[認証]SNSのテンプレートを作成してみた[解説編]
# はじめに
SNSテンプレートの完成版はすでにGitHubのリポジトリに上げています。
この記事ではそのリポジトリを元に、node.jsとexpressとpassportを使用した認証機能付きのwebサイトの作り方を紹介します。なお、環境作成としてリポジトリに上げているmongodbとnginxの解説はほとんど行いませんので悪しからず。リポジトリのクローンなどを雑に解説したヤツ
https://qiita.com/king_dog_fun/items/fb833a71115199c02c39
# serverのディレクトリ構成
express-generatorで生成される雛型を元に構成しています。大きな変更点と言えばconfigディレクトリの追加とpassport.jsの作成でしょうか。
express-generatorのインストールと実行は次のコマンドで行うことが出来ます。試してみてね☆“`
npm install express-generator -g
express –view=pug directory_name
“`ちーなーテンプレー
SNSのテンプレートを作ってみた
# はじめに
最近のプログラマーはコードを打たないらしいです。そりゃ、プログラマーたるもの誰もが経験しているとは思いますが、サンプルコードの挙動をテストするためにタイピングをしていれば、どこかでミスが発火するものです。おまけに環境を自分で整えるとなれば作業時間はかなりのものとなります。
そこで今回はnode.jsでSNSを作るためのテンプレートとなりそうなものを作成してきたので、共有したいと思います。内容はexpress-generatorを基礎としたnode.jsでチャット機能、ログイン機能をつけたというものです。mongodbとnginxも使用しています。
なお、この記事では解説はせず、GitHubからクローンの方法を置いておくだけだ。解説は以下のURLで行っています。**passportについてのざつ~な解説**
https://qiita.com/king_dog_fun/items/d6b3565e624b96d6ea9c
**socket.io(chat)についてのざつ~な解説**
https://qiita.com/king_dog_fun/items/f
Rollup.jsによってNode.js/TSプロジェクトをバンドルと圧縮
## 0.初めに
+ 普段、 `tsc` を使って `TS` プロジェクトを `JS` に変換しますが、バンドルツールを使わないと、変換した後のサイズが大きくなってしまうことが多いです。この記事は`Rollup.js`を使って、バンドルと圧縮を実装します
+ この記事は`TS`による開発した`Node.js`プロジェクトに基づいて展開します## 1.インストール
まずは、`Rollup.js`をインストール
[公式サイト](https://rollupjs.org/guide/en/#installation)“`shell
yarn add -D rollup
“``Rollup.js`のプラグインをインストール
“`shell
yarn add -D @rollup/plugin-commonjs rollup-plugin-terser rollup-plugin-typescript2
“`プラグイン説明
+ `@rollup/plugin-commonjs`:プロジェクトが使用する依存関係を`rollup`に伝えます
+ `rollup
Docker-composeでnode.jsのUDP通信をテスト。
# はじめに
世の中には自分の良く使うプログラム言語をローカル環境に入れたくないという人がいるものです(自分)。そのくせしてサーバーの方で環境を整えるのもめんどうという人もまたいます。でもでも、それでも、プログラムの挙動がどうなるのか自分自身で確かめたい。そんな人のためのDocker-compose環境を共有します。
因みに…一番大事なことの気もしますが…テストするのはタイトル通りUDP通信です。Docker コンテナ同士を内部ネットワークで繋いでUDP通信しています。# GitHubからクローン
“`
git clone https://github.com/DogKingFun/AandB.git
“`予めGitHubに用意しておいたリポジトリからデータを持ってきます。中のAとBのディレクトリにあるnode.jsのプログラムを書き替えてもらえれば十分なテストが可能だと思います。
# Docker-compose
“`
docker-compose up
“`2022/08/09日のバージョンでは、以下のようなログが流れます。
“`
Recrea
インストーラから入れたnode.jsを削除しnvmをインストールしてnode.jsとyarnも入れる
# node.jsの削除(mac)
①フルパスを取得してどこにnodeがあるか調べる
“`
which node
/usr/local/bin/node
“`②削除コマンド
“`
sudo rm -rf /usr/local/bin/node/以降は which node で調べたパスを入力
“`③削除できたか確認
“`
node -v
bash: command not found: nodenode -v で上記が表示されれば削除完了
バージョンが表示された場合は①〜③を繰り返す
“`④npmの削除
“`
sudo rm -rf ~/.npm
“`⑤npmが削除できたか確認
“`
npm -v
bash: command not found: npm
“`[参考:ローカルからnode.jsを削除する](https://qiita.com/gaipoi/items/406d6c4b1ccd1733318a)
***
# nvmのインストール
①nvmをインストール
“`
curl -o- https://raw.githubu
Error: You must provide the URL of lib/mappings.wasmエラーが出た場合の対応
jestでテストを実行したら、下記のエラーが。
“`
Error: You must provide the URL of lib/mappings.wasm by calling SourceMapConsumer.initialize({ ‘lib/mappings.wasm’: … }) before using SourceMapConsumer
“`[You must provide the URL of lib/mappings.wasm by calling \`SourceMapConsumer.initialize\` · Issue #35607 · gatsbyjs/gatsby](https://github.com/gatsbyjs/gatsby/issues/35607)によればNode.jsのバージョンに起因する問題のようです。ちなみエラーが出た時にはv18.7.0を使っていました。
ということでv16にすると正常に終了します。
“`
% npm run test> blastengine@1.2.3 test
動画編集のジャンプカット(ジェットカット)をNode.jsで自動化する
![jumpcut-by-nodejs.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289248/74996ec8-97f1-379d-5da2-d9619826c575.png)
詳細は以下の記事にまとめています。
↓
https://tsuyopon.xyz/2022/08/09/jumpcut-by-nodejs/解説記事では、サンプルコードのどこを特に注目すると良いかなどもまとめているので、動画編集作業の自動化に興味がある方は、こちらのご確認いただけたらと思います^^
# この記事を読んでわかるようこと
今回の記事では主に以下の2つを話していきます。
1. 今回紹介するジャンプカットツールの効果
2. Node.jsを使った動画編集のジャンプカットツールの実装方法# ジャンプカットの比較動画
– 自動カット前 : https://youtu.be/UAtewkSgSJI
– 自動カット後 : https://youtu.be/gKwhcJgIZlM# サンプルコード
npmコマンドが何も出力せずに終了する問題を解決した話
Macbook Air M2をセットアップ中の出来事になります。備忘録としてメモを残しておきます。
# 結論
– .npmがシンボリックリンクだった
– 移行アシスタントはシンボリックリンクは解決してくれない(そのまま移行する)ので注意# 現象
`npm i` を実行すると、何も出力せずに終わる。
“`
% npm i yarn -g%
“`npmはある(ホームディレクトリは ~ に置き換えています)。
“`
% which npm
~/.nodenv/shims/npm
“`# 疑ったもの
## nodenv
nodebrewにするも現象は変わらず。
## M2
M1で普通に動いているけど。M2でまた何か特有の問題が起きているのかと思ったけれど、情報はなく。
# 調査
nodenvはコマンド実装が分かりづらかったので、結果的にnodebrewにしたのが解決につながったかも。`nodenv` の npm はこれ(ホームディレクトリは ~ に置き換えています)。
“`bash
#!/usr/bin/env bash
set -e
[ -n
【Express.js】リダイレクト時に未保存のセッションデータを確実に保存する
バグなのか仕様なのか分からないですが、`express-session`のデータ保存先(`sessionStore`)として、データベースやファイルなどI/Oに時間のかかるストアを選んだときに、リダイレクト後のリクエストで未保存のセッションデータを参照してしまうことがあったため解決策の備忘録です。
“`js
function beforeRedirect(req, res, next) {
// sessionデータを更新してからにリダイレクトするときにストア保存時の遅延により、
// リダイレクト後の画面で保存前のセッションデータを参照してしまう場合があるため、
// 確実にセッションを保存してからリダイレクトする
const redirect = res.redirect;
res.redirect = function () {
if (req.session) {
req.session.save(() => {
redirect.apply(this, arguments);
});
} els
pm2 commands
“`
pm2 list
pm2 start npm –name “react” — start
“`
Docker ComposeとGitHubを使用して、Node.js + Express + MySQLの環境構築を行う
# 初めに
Docker Composeを使用して、Node.jsとMySQLのコンテナを作成し、Sequelzieを使用してDBにアクセスするところまでを記載する。
また、Node.jsのコンテナ上でExpressのプロジェクトを1から作成する記事は多く見かけたが、既にあるGitHubのリポジトリ(ExpressとSequelizeを含む)をcloneしてそこから環境を構築していく記事はあまり見受けられなかったので、今回はそちらの手順で行う。(実際に現場で開発する際は、既にGitHubが作成されている場合もあると思われるため)#### 今回やりたいことの図
![SnapCrab_NoName_2022-4-1_10-29-57_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1229062/bb0c1684-1998-7692-c970-899ba13c904c.png)# 環境
■ 使用PC
MacOS Big Sur:バージョン11.6※既に使用PCにはgitを導入状態
Express + TypeScriptでexpress-sessionを利用する
### 初めに
Express + TypeScriptで開発を行う際に、sessionの設定方法がJavascriptと異なっていたため備忘録として投稿する。### 環境
■ Nodeのバージョン
14.14.0
■ 使用OS
MacOS Big Sur:バージョン11.6
■ expressのバージョン
4.16.1
■ @types/express-sessionのバージョン
1.17.4
■ express-sessionのバージョン
1.17.2### 設定方法
使用するパッケージをインストールする。
JavaScriptでは、express-sessionのみインストールしていたが、TypeScriptで使用するには@types/express-sessionが必要。“`shell
npm i express-session @types/express-session
“`app.tsに下記の記載を行う。
“`ts
var session = require(‘express-session’);
declare module ‘express
sequelizeのモデルをTypeScript化して、ルーティングで使用する方法
### 初めに
今回は、sequelizeで作成したモデルをTypescript化してルーティングから呼び出し、DBから値を取得する方法を記述します。### 環境
■ Nodeのバージョン
v14.14.0
■ 使用OS
MacOS Big Sur:バージョン11.6
■ 総合開発環境
Visual Studio Code
■ Sequelizeのバージョン
v5.22.4
■ MySQLのバージョン
v5.6.50### 使用するテーブル設計
“`SQL
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`pass` varchar(255) NOT NULL,
`status` int(11) NOT NULL,
`createdAt` datetime NOT NULL,
`updatedAt` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO
express-generatorで作成したプロジェクトでTypeScriptを使用する
今回は、express-generatorでプロジェクトを作成し、一部でTypeScriptを使用できるように環境構築を行います。
あらかじめ、npm、node、express-generatorをインストールしている前提で記載させていただきます。
## 環境
■ Nodeのバージョン
v14.14.0
■ 使用OS
MacOS Big Sur:バージョン11.6
■ 総合開発環境
Visual Studio Code## プロジェクト作成
“`
% express –view=ejs typescreate : types/
create : types/public/
create : types/public/javascripts/
create : types/public/images/
create : types/public/stylesheets/
create : types/public/stylesheets/style.css
create : types/routes/
create :
CloudFunctionsのデプロイエラー3つの対処方法/nodeとArtifact Registryとconfigの問題について
こんにちは。[virapture株式会社](https://virapture.com)でCEOしながら[ラグナロク株式会社](https://ragna-rock.com)でもCKOとして働いている[@mogmet](https://twitter.com/mogmet)です。
今回はcloud functionsのデプロイにまつわるトラブルシュートな内容を共有します。
## node versionの問題の解決法
下記のようなエラーが出たときの問題の対処法です。
> Build failed: Build error details not available.Please check the logs at https://console.cloud.google.com/cloud-build/builds;region=asia-northeast1/xxx-xxxx-xxx-xxx?project=xxx. Please visit https://cloud.google.com/functions/docs/troubleshooting#build for i