- 1. GPTのストリーム機能を使いたい方へ(その1)
- 2. BunでESM、CJS両対応のTypeScriptプロジェクトを公開する!
- 3. FetchでPostするときの、headers部分を共用化する方法
- 4. 初心者がnode.js expressでwebAPIを実装してみた。(簡易版)
- 5. 【Volta】node.jsバージョン管理ツールをVoltaに乗り換える【設定手順】
- 6. HuaweiのSiteKit APIでリバースジオコーディングして知り合いの病院の住所を覗いてみる
- 7. 動画ストリーミングをnode.jsで読み込む方法
- 8. 誰か勝手に投げてくれ
- 9. Next.js で作ったサイトを GitHub Pages で公開する方法を爆速で丁寧に説明する
- 10. Node.js(Express)×PostgressSQLを使ったチャットアプリ 3
- 11. DacraneでAzure App ServiceにAPIサーバを立ててみる
- 12. Bunで生成したバイナリがdistrolessコンテナ上で動かない【解決】
- 13. [20日目] Node.jsとpm2をインストールする最強スクリプト
- 14. scoopでnvmからNode.jsをダウンロードしようとしてはまった話
- 15. 同時接続環境の負荷試験であったこと
- 16. OpenAPI+Fastifyでスキーマファースト開発
- 17. Node.js(Express)×PostgressSQLを使ったチャットアプリ 2
- 18. Node.js(Express)×PostgressSQLを使ったチャットアプリ1
- 19. npmパッケージをScope付きで公開してみよう!
- 20. 同一アドレスに複数の同一メール送ろうとしてませんか?
GPTのストリーム機能を使いたい方へ(その1)
# Outline
– [前書き](#前書き)
– [本編](#本編)
– [まず動作イメージから](#まず動作イメージから)
– [先に結論を](#先に結論を)
– [ストリームって何が嬉しいの?](#ストリームって何が嬉しいの)# 前書き
本記事はOpenAIの各モデルで利用できるストリーミングを以下の構成で実現する方法について記載しています。
以下のようなニーズにお応えできると嬉しいです!– OpenAIのストリーム機能について
– ストリームによるメリットを知りたい
– Node.jsからじゃなく、Python([openai](https://pypi.org/project/openai/))からストリームを実現したい
– そもそもストリームって何?
– FetchとEventSourceの違いを知りたい# 本編
– **GPTのストリーム機能を使いたい方へ(その1)**
ストリーミングの動作イメージや、メリットについて解説していきます。(**いまココ!**)
– **GPTのストリーム機能を使いたい方へ(そ
BunでESM、CJS両対応のTypeScriptプロジェクトを公開する!
# Bunを使ってESMとCJS両対応(あとDenoも)のTypeScriptプロジェクトを公開する!
ESM、CJS、ブラウザ(Deno)のどこでも使えるライブラリを公開するためのテンプレートを作成しました!
思ったよりも苦戦したので、その記録兼解説として残して置きます。## 先に完成品の紹介
– [解説するテンプレートリポジトリ](https://github.com/totto2727-org/esm-package)
– 実際に公開したResult型ライブラリ(https://github.com/totto2727-org/result)
– こちらは別途紹介する記事を書く予定です## 背景
JavaScript(Node.js)には数多のパッケージが存在するため、自身でパッケージを作らなくても大抵はなんとかなります。しかし、中々理想と言えるものに巡り会えることはありません。あと一歩…!と感じることも多いでしょう。
大抵の場合はOSSで開発されているため、コントリビュートのチャンスとも捉えることが出来ますが、小規模だったり特定の機能のみであれば、自作し
FetchでPostするときの、headers部分を共用化する方法
指定を繰り返すことなく、共通のオプションを利用する方法として、カスタムのHTTPクライアントやユーティリティ関数を作成して再利用することができます。以下にその一例を示します。
“`typescript
// utils/httpClient.tsconst BASE_URL = ‘https://api.example.com’;
export const postRequest = async (endpoint: string, data: any) => {
const url = `${BASE_URL}/${endpoint}`;try {
const response = await fetch(url, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
// 他に必要なヘッダーがあればここで指定
},
body: JSON.stringify(data),
});i
初心者がnode.js expressでwebAPIを実装してみた。(簡易版)
## 前置
私はプログラミングを始めて半年の初心者である。名前はまだない
モバイルアプリの勉強をずっとしてきたが、ハッカソンでwebAPIを作ることに
なったので作ってみた。多分間違っている部分があると思う。※これは時間がない人向けに簡単にまとめたものです。
詳しく書いた物も随時投稿していきますので、お待ちください。## APIとは
そもそもAPIとはなんでしょうか?
API(Application Programming Interface)とは、プログラムの機能の一部を別のプログラム上で利用できるように共有する仕組み。簡単に言うとweb上で動かすプログラム関数みたいなことだと思う。#### webAPI
その中でもhttpやhttpsなどWeb技術を用いて実現されるAPIの一種。
今回はこれを実装していく。
イメージしにくいので画像を置いておく。画像のようにサーバーとwebブラウザで通信を行い、画面の切り替えをしたり、データを保存,呼び出しをしたりする。
![webAPI画像.jpg](https://qiita-image-store.s3.ap-northea
【Volta】node.jsバージョン管理ツールをVoltaに乗り換える【設定手順】
## はじめに
いままで`nodist`でnodejsのバージョン管理をしていましたが、どこか使いづらさを感じていました。
`nodist`の最終バージョンはここ2年間の更新がされておらず2019年です。
このまま使い続けるには一抹の不安があるので、この際、`Volta`に乗り換えるために手順をこちらにまとめておこうと思います。## Nodistのアンインストール
いままで使っていたNodistを削除します。意外としつこく残り続けるのでここでしっかり削除しましょう。
Nodist以外のツールを使用している方もここでしっかり削除します。### 1. コントロールパネルからアンインストール
コントロールパネルから`Nodist`を探しアンインストールします。
OSの再起動を求められた場合は再起動を行います。### 2. Nodistフォルダを削除
コントロールパネルから`Nodist`を削除してもNodistのインストール先のフォルダは残ってままになっています。
グローバルインストールしたものなどはここに残ったままなのでフォルダごと削除します。### 3. npm-cach
HuaweiのSiteKit APIでリバースジオコーディングして知り合いの病院の住所を覗いてみる
Huawei Bandを入手してみたので、HuaweiのAPIを試してみたく…… 調べていましたがHealth系のデータ以外にも色々ありそう、、だったのでSite Kitというものを使ってみました。
https://developer.huawei.com/consumer/en/doc/HMSCore-References/webapi-reverse-geo-0000001050161968
## 事前準備など
スクショがないですが、個人情報入れたりしながら申請して、翌日くらいに許可がおりました。
## 35.7642868,139.8043692
[ヘルスケアIoTLT](https://iotlt.connpass.com/event/300104/)の会場にもなる足立慶友整形外科のスポットをGoogleで調べると`35.7642868,139.8043692`という座標がでました。
> https://www.google.com/maps/place/%E8%B6%B3%E7%AB%8B%E6%85%B6%E5%8F%8B%E6%95%B4%E5%B
動画ストリーミングをnode.jsで読み込む方法
この記事は[ZOZO Advent Calendar 2023](https://qiita.com/advent-calendar/2023/zozo) #1 21日目の記事になります。
# TL;DR
HLSなどの動画ストリーミングをnode.jsで読み込むための方法です。# 結論
これだけです。“`typescript
import ffmpeg from ‘fluent-ffmpeg’
import fs from ‘fs’…
const url = ‘https://example.com/video.m3u8’
const stream = fs.createWriteStream(‘filename.mp4’)ffmpeg(url, { logger: console })
.addOutputOptions(
‘-movflags +frag_keyframe+separate_moof+omit_tfhd_offset+empty_moov’
)
.format(‘mp4’)
.on(‘error’, (error)
誰か勝手に投げてくれ
# アグリゲートボンデッド,正直使いづらくないですか
Symbolを利用されている人であれば主にマルチシグでアグリゲートボンデット(以下アグボン)を利用されている方は少なくないと思います。アグボンを投げるためには以下の手順を踏む必要があります。1. ハッシュロック,アナウンス
2. ハッシュロックの承認を待つ
3. ハッシュロックが承認されたらアグボンをアナウンスする
4. アグボンの承認を待つ
5. 連署する
6. 連署を全部集めれば完了更にこれをデスクトップウォレットでアグボンを発行する場合,1-3の手順を行っている間に次のことが要求されます。条件を満たさなかった場合。アグボンのアナウンスに失敗してハッシュロック分の10XYMを失います。
– 1-3が完了するまでアプリを閉じないこと
– 1-3が完了するまでネットの接続を切らないこと
– トランザクションが正しく伝搬するノードに接続すること10XYMを失う可能性があることはなんとなくわかっていただけた思います。少なくとも私は今までにアグボンのアナウンスを1-2回失敗し,ハッシュロック分を持っていかれた経験があります,
Next.js で作ったサイトを GitHub Pages で公開する方法を爆速で丁寧に説明する
この記事は
1. create-next-app で Next.js アプリを作成
2. GitHub にプッシュ
3. GitHub Actions でビルド& GitHub Pages にデプロイまでの工程をバカみたいに丁寧に書き起こしたものです。
情報が不足しているかもしれませんが、勉強中なので温かくご指摘いただけると助かります。
# はじめに
授業の一環でサイトを作成する必要が出ました。
普通に Adobe Express や STUDIO を使っても良かったのですが、ちょっと拘ってみたかったので Next.js にトライしてみます。
サイトを作っていく上で Three.js というライブラリを使用する予定だったので、そのための Node.js を使うのであれば、ついでに Next.js も使っちゃおう、というものです。
## 専門用語わからんちん🤷
| これは |こういうこと|
|:————–:|——–|
| VSCode |ファイルの中身を読み書きするためのもの。とても優秀。|
| Nod
Node.js(Express)×PostgressSQLを使ったチャットアプリ 3
## ユーザー機能の実装
### postgressにユーザー情報を保存するテーブルを作成
“`sql
CREATE TABLE users (
user_id SERIAL NOT NULL,
user_name VARCHAR(255) NOT NULL,
user_email VARCHAR(255) NOT NULL,
user_password VARCHAR(255) NOT NULL,
created_at TIMESTAMP NOT NULL,
PRIMARY KEY (user_id)
);
“`
誰がchannelを投稿したのか見られるように、“channel“と“message“のテーブルに“user_id“のカラムを追加します。“`sql
/*channelテーブル*/
ALTER TABLE channel ADD COLUMN user_id INTEGER;/*messagesテーブル*/
ALTER TABLE messages ADD COLUMN user_id INTEGER;
“`## ユーザー登録
DacraneでAzure App ServiceにAPIサーバを立ててみる
# はじめに
開発中のクラウドインフラとアプリのプロビジョニングツールであるDacraneを利用して、APIサーバをAzure App Serviceにデプロイする例をご紹介したいと思います。
https://github.com/SIOS-Technology-Inc/dacrane
# Dacraneとは
サイオステクノロジーで開発しているクラウドインフラとアプリまでをデプロイするプロビジョニングツールです。現在の最新バージョンは0.0.7の開発初期段階のOSSです。IaCツール(特にTerraform)の影響を受けており、宣言的なコードでデプロイメント扱うことができます。
特徴としては、1. YAMLによる宣言的なデプロイ定義
1. デプロイプロセスをコンテナ上で動かすことによる可搬性の高さ
1. インフラからアプリまで一式がデプロイできるという点があげられます。
今回はDacraneで簡単なAPIをデプロイする方法をご紹介したいと思います。# 環境
* macOS Ventura
* Go 1.21
* Docker Desktop 4.25.0
* GN
Bunで生成したバイナリがdistrolessコンテナ上で動かない【解決】
# 結論
`gcr.io/distroless/static-debian12`ではなく`gcr.io/distroless/base-debian12`を使え!
# はじめに
Bun、速くて身軽で快適ですよね。
もはやyarnやpnpmなどのパッケージマネージャは不要だし、ランタイム同梱のバイナリまで生成してくれるのでDockerfile職人にも優しいです。
しかし今回、一部のdistrolessイメージではBunが生成するバイナリを動かせないという事象に遭遇したため、解決方法と共にこちらに残しておきます。
# 使用したDockerfile
“`Dockerfile
FROM oven/bun:1 as install
WORKDIR /temp/build
COPY package.json bun.lockb /temp/build/
RUN bun install –frozen-lockfileFROM install as build
COPY . .
RUN bun run compileFROM gcr.io/distroless/static
[20日目] Node.jsとpm2をインストールする最強スクリプト
こんにちは、なりかくんと申します。
この記事はなりかくん Advent Calender 2023の20日目の記事です。今回は、私が普段VPSにNode.jsとpm2をインストールする際に利用している秘伝のコマンドを教えていこうと思います。
Ubuntuが実行できる環境です。# コマンド
“`
curl -sSL https://gist.githubusercontent.com/narikakun/d50ba6efd739a1fb3d08e46fa0b0077b/raw/d94cff02e57523839b78a1cff760044d077200db/install-node-lts-pm2.sh | sh
“`このコマンドを実行するだけで、Node.js v20とpm2をインストールすることが出来ます。
# 内容
まず、読み込んでいるシェルスクリプトはこのようになっています。
“`shell
#!/bin/sh
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo
scoopでnvmからNode.jsをダウンロードしようとしてはまった話
## はじめに
vimに興味を持ち、neovimをインストールしようと[この記事](https://devil-code.com/blogs/vim/neovim-setup/)を参考に環境構築していたところ、node.jsのインストールではまってしまいました。
備忘録として、記事にしようと思います。## 使用環境
– windows11
– powershell
– scoop v0.3.1
上記サイトを参考にscoopのインストール、そして必要なパッケージをインストールしていたところ、nvmを使ってのnodeのインストールでエラーが出ました。
エラーが出たコマンドと排出されたエラーはこちら“`
nvm install latest>> C:\Users\?? ??\scoop\persist\nvm\nodejs could not be found or does not exist. Exiting.
21.4.0
Downloading node.js version 21.4.0 (64-bit)…
Error while creati
同時接続環境の負荷試験であったこと
本記事は [オルトプラス Advent Calendar 2023](https://qiita.com/advent-calendar/2023/altplus2023) の12/20の記事です。
# :christmas_tree:はじめに
はじめましての方は初めまして。
初めてじゃない方はおはようこんにちわこんばんわ。
オルトプラスの自称賑やかし担当兼サーバーサイドエンジニアすがやです。
今回は同時接続の負荷試験を実施した時の体験談に関しての記事になります。# :christmas_tree:仕様や構成等
今回のゴール地点は最大8000人が同時接続できる汎用的なロビー機能になります。
この8000人はランダムに移動を繰り返したりアクションを起こしたりします。
仕様ツールは下記の通りです。
|内容|採用しているもの|
|:-:|:-:|
|環境と言語|Node.js + TypeScript|
|負荷試験ツール|k6|
|インフラ|AWS環境|上記を用いて、nodejsのインスタンスを複数作成し、ALBで接続先をある程度分散させ、Redisのpub/subの仕組みを用いて
OpenAPI+Fastifyでスキーマファースト開発
この記事は [mediba Advent カレンダー2023](https://qiita.com/advent-calendar/2023/mediba) の20日目の記事です。
※記事の内容はあくまで個人の発信であり、会社を代表する意見や見解ではありません。
※記事内のコードは実際のプロダクトのものではなく記事用に作成したものです。この記事ではNode.jsのHTTPサーバフレームワークであるFastifyでのAPI開発で、OpenAPIを使ったスキーマファースト開発を実現した話を書きたいと思います。
## はじめに
あるプロダクトを短期間で開発する必要があり、FE/BEの開発を並行してスタートできるようにスキーマファーストで開発することにしました。
FE/BEメンバーが集まって、APIのIF定義を[OpenAPI Specification v3.0](https://spec.openapis.org/oas/v3.0.0)形式のYAML(以下、OpenAPI)で記述しながら決めました。
APIの開発において、フレームワークには前プロダクトを踏襲して[Fastif
Node.js(Express)×PostgressSQLを使ったチャットアプリ 2
## データベースからデータを取得する
“routes/index.js“を書き換えます。
“`js
// 中略router.get(‘/’, async (req, res, next) => {
try {
const getQuery = ‘SELECT *, TO_CHAR(created_at, \’YYYY年MM月DD日 HH24時MI分SS秒\’) AS created_at FROM channel’;
const queryResult = await pool.query(getQuery)console.log(queryResult.rows)
} catch (error) {
console.error(error);
// エラーハンドリング: サーバーエラーが発生した場合は500をクライアントに返す
res.status(500).send(‘サーバーエラー’);
}
});// 中略
“`
“http://localhost:3000/“にアクセスしてターミナルに
Node.js(Express)×PostgressSQLを使ったチャットアプリ1
## チャットアプリについて
### トップページ
![スクリーンショット 2023-12-20 0.00.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262417/daf3c9c1-55ac-873d-ca2d-18a2ca52e201.png)### トークページ
![スクリーンショット 2023-12-20 0.02.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262417/38702eb3-bbf1-7f32-7d9e-dd3af7814251.png)## node.jsをインストールする
### MacOS
nodebrewを使ってインストールしてください### Windows
公式サイトからインストールしてくださいhttps://nodejs.org/en
## 開発環境の構築
### Expressのインストール
“`console
$ cd Desktop
$
npmパッケージをScope付きで公開してみよう!
## 内容
以下の仕様のCLIプログラムを`NPM`に公開してみます。
## GitHub Repository
本記事で作成するPackageは[GitHub](https://github.com/HIppei/test-pair-checker)で公開しています。
## 仕様
プログラム名は、`test-pair-checker`とします。
**テスト対象ファイル**に対応する**テストファイル**を検索し、存在有無をチェックします。これにより、ファイルの存在有無レベルですが、簡単にテスト不足を検知できます。
以下の構成の場合、`src/components/custom-button.tsx`は対応するテストファイルが**存在する**、`src/components/custom-input.tsx`は対応するテストファイルが**存在しない**と検知できればOKとなります。
“`bash:Exapmle
.
├── src
│ ├── components
│ ├── custom-button.tsx
│ ├── custom-i
同一アドレスに複数の同一メール送ろうとしてませんか?
# いきさつ
Aさん「katahiroさんに作ってもらったツール、設定されてるメールアドレスにメールが飛ぶはずだけど、今日のは届かないです」
katahiro「??確認してみますね」こちらの記事の流れに近いですが、また別の話です。
https://qiita.com/katahiro/items/881bd52163d1f4c7c43c
# 原因調査
組織に提供しているツールは`Slack`でBotとして機能しますが、以下のような流れで動きます
1. Slackの[ワークフロー](https://slack.com/intl/ja-jp/features/workflow-automation)が起票されて、特定の情報がチャンネルに書き込まれる
1. ワークフローの書込みをBotが検知して、書き込まれた内容を取得
1. 書き込まれた情報に対して採番を行い、以降の書込みを管理
1. 採番が完了した後に、設定されているメールアドレスに対して起票された内容を `Sendgrid`のメール配信にて周知
1. 以後書き込まれたメッセージでCloseの指示があれば、起票内容がCloseした