- 1. AWS Lambdaでnode_modulesを使う時のメモ
- 2. Node.jsでAzure Key Vaultに格納されたシークレットを取得してみる(超簡単)
- 3. PipedreamとAirtableで緩く作るQRコード受付(の基盤サイド)
- 4. 日報作業でちょっと楽するCUIツールの作り方
- 5. CSSのLiveReloadする!開発環境でのCSSのビルドをViteに任せてバックエンドとViteの開発サーバーを連携させる
- 6. Node.js(Express)でミドルウェアを簡単に実装してみる(ローカルサーバー立ち上げまで)
- 7. プログラミングを始めてみたい方へ
- 8. Node.jsで、数字をID(可逆部+チェックサム)に変換して、APIのIFに使えるIDを生成する
- 9. Node.jsでミニブログを作りました
- 10. 【完走賞ゲット-10】gamecontroller.js を使って DualShock 4 を JavaScript で扱う
- 11. ゼロから Node.js + Express + MongoDB で爆速で REST API を作る
- 12. 今話題のChatGPTをPythonでいい感じに使ってみよう!
- 13. node js で JWT をエンコード・デコードしてみる
- 14. 【完走賞ゲット-9】Awesome WebHID というページを見かけて気になった話
- 15. movie page
- 16. 【2022年版】playwrightでデバッグ実行する方法
- 17. LambdaのランタイムVerUp(Node.js 16.x → Node.js 18.x)の課題と移行アプローチについて
- 18. WSL2のubuntuをgatsbyの開発環境にする(他のフレームワークでも使える)
- 19. Node.jsから乗り換え?JavaScriptランタイム「Bun」触ってみた
- 20. npm run devの実行時にthrow er; // Unhandled ‘error’ eventのエラーが出る時の対応
AWS Lambdaでnode_modulesを使う時のメモ
AWS LambdaでNode.jsを使っていた時にnode_modulesにあるライブラリを使おうとした時にちょっと詰まったので、備忘録として残そうと思います。
あとは、アドベントカレンダーに沿ってアウトプットの大切さを書きます。
# node_modulesの導入
## 前提条件
– npm コマンドが使える環境があること
– ローカルマシンでも問題ありません## 簡単な流れ
1. ディレクトリの用意
1. 必要なライブラリをインストール
1. ディレクトリのzip化
1. レイヤー登録
1. Lambda関数でレイヤー追加
1. Lambda関数のコードでライブラリを読み込む## ディレクトリの用意
初っ端から一番大事です。作成する場所はどこでも良い(ローカルマシンでも可)ですが、ディレクトリの名前が重要です。
「nodejs」という名前のディレクトリを生成します。“`
$ mkdir nodejs
“`これについては[ドキュメント](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/conf
Node.jsでAzure Key Vaultに格納されたシークレットを取得してみる(超簡単)
# はじめに
従来のソフトウェア開発において、本番環境でのパスワードや暗号鍵、デジタル証明書、APIキーなどといったシークレットは環境変数に保管してアプリケーションからアクセスします。しかしクラウドサービスを利用したモダンなソフトウェア開発においては、アプリケーションは様々な実行環境に分散していて、それぞれ個別に設定ファイルを用意し、環境変数を設定する必要があります。Azure Key Vaultを利用すると、そのようなシークレットをクラウド上で一元管理することができ、それらの情報に対するアクセスをAzure ADによる認証で保護することができます。今回の記事では、Node.jsを用いて、Azure Key Vault上に保存されているシークレットにアクセスする方法をまとめていきたいと思います。# Azure Key Vault リソースを作成する
Azure Key Vault リソースをAzure CLI を使用して作成していきます。
Azure Portal を使用したAzure Key Vault リソースの作成方法は以下の公式の記事を参考にしてください。
https
PipedreamとAirtableで緩く作るQRコード受付(の基盤サイド)
前回[「Pipedreamの紹介」と「ワークフローの作成例」](https://qiita.com/attakei/items/1455e56634db57e479b9)を書きました。
今回は、これを使って社内向けに作ったちょっとしたサービスの話をします。## 何を作ったの?
社内のオフライン交流会向けに「QRコードによる受付」を作ってみました。
大まかには次のコンポーネントに分かれるのですが、今回話題の対象となるのは1.と2.です。1. **Airtable上での、出席者・出席記録管理**
1. **Pipereamを使った、出席者用QRコード表示画面**
1. QRコード表示画面を案内するための、メール送信用ツール
1. QRコードをかざして出席記録を取るための、受付アプリ![html-with-qrcode.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6805/57c2345a-cd54-c64c-5172-1709be7cfc23.png)
## Airtableって何?
ま
日報作業でちょっと楽するCUIツールの作り方
# はじめに
アドカレに乗っかって初Qiitaを書きます。
私の所属先ではSlackに勤怠チャンネルがあり、業務終了時にその日の業務内容について投稿するようにしています。(ミニ日報みたいな感じです。)
投稿する内容はこんな感じです。
“`
【勤務時間】10:00 ~ 19:00
【稼働時間の合計】8時間00分(休憩:1時間00分)
【本日の作業】○○○_初回リリース, △△△_コンテンツ追加
【明日の作業】△△△_コンテンツ追加, □□□_リファクタリング
【共有・相談事項】
“`
特に大変というわけではないのですが、毎日「よし!業務終了だ!」と思ってから、このミニ日報を書くのは少し面倒でした。
そこで、その少し面倒くさい作業で楽するためにCUI上で簡単に日報を書いて投稿できるツールを作成したので、今回はそのツールの作成に使った技術について共有します。(以降作成したツールを退勤ツールと呼びます。)面倒くさい作業で楽するために退勤ツールで実装したいと思ったことは以下の4つです。
1\. 時間を記入するときに対話型で入力する
2\. 作業内容はチケット管理ツールからデータを取得して
CSSのLiveReloadする!開発環境でのCSSのビルドをViteに任せてバックエンドとViteの開発サーバーを連携させる
この記事は「[はてなエンジニア Advent Calendar 2022](https://qiita.com/advent-calendar/2022/hatena)」の10日目の記事です。9日目は[@dekokun](https://qiita.com/dekokun)さんの「[みんなで会議をよくしていこう!と思ってやってるTips](https://dekotech.dekokun.info/entry/2022/12/09/143600)」でした。
—-
# はじめに
Webページはさまざまなファイルから成り立っており、それぞれのファイルはソースファイルをビルドすることで作られています。従って、ソースファイルの更新をブラウザから確認するためには、単純に考えればソースファイルをビルドしてファイルを配置してからWebページをブラウザから更新する必要があるように思えます。しかし、開発中これらの作業を都度するのは大変なので、開発サーバーを立ち上げてビルドの工程を自動化します。すなわち、ソースファイルの更新に応じてブラウザのリロードなしにWebページの表示にその変更を反映させる
Node.js(Express)でミドルウェアを簡単に実装してみる(ローカルサーバー立ち上げまで)
## 前提
この記事ではExpressで必要となるミドルウェアの実装を行う。そのため簡単に記事を読むことでミドルウェアの概要に触れることで、流れなどをインプットしたい人に向けて発信します。:fire:## 大まかな流れ
Node.jsの紹介
↓
ミドルウェアについて
↓
実装:Node.jsのプロジェクトの作り方とローカルサーバー立ち上げ(この記事はここまで)
↓
調べてみた(モジュールの形式よって読み込み方の違いについて)## ゴール
Node.jsにおけるミドルウェアの理解を深め、ミドルウェアとはどのようなことを示すのかまで落とし込み、ここをゴールとする。(この記事はローカルサーバーの立ち上げまでとする。)## Node.jsとは
>Node.js はスケーラブルなネットワークアプリケーションを構築するために設計された非同期型のイベント駆動の JavaScript 環境です。 以下の「Hello World」の例では、たくさんの接続を同時に処理することができます。 各接続ごとにコールバックは発火され、何もすることがない場合、Node.js はスリープします。こち
プログラミングを始めてみたい方へ
こんにちは、Ftpsです。
最近身近な人とかにプログラミングを教える機会があったりしたので、なんとなく書き綴ってみます。
一応いくつかのプログラミングの大会で優勝させてもらっています(実名でるので何かは言えない)…高校生のくせにみたいな文章があるかもしれませんが、ご了承ください
()中は心の声です(え?):::note warn
警告
途中で雑になっているので、また書き直すかもです…
:::# 大事なこと
まず最初に自分がプログラミングで何をしたいかできるだけ具体的に考えてみてください!
* Discordの入退出管理botを作ってみたい→(Python, Javascript…)
* タイマーを作ってみたい→(C#-WPF)
* ArduinoとかSpresenseとかを使ってミュージックプレイヤーを作ってみたい→Arduino言語(C/C++)何か思いつきましたか?
それによって学ぶ言語が変わってきます# 具体的に何するか
どの言語を学ぼうか決めて、やることは大きく分けて3つだと思います
* 言語の構文を学ぶ
* 標準ライブラリをある程度マスタ
Node.jsで、数字をID(可逆部+チェックサム)に変換して、APIのIFに使えるIDを生成する
## はじめに
開発をしていると何らかの数字を利用しているが、フロントエンドではその数字をそのまま露出させたくない場面はままある。具体的には[primary keyをオートインクリメントしている場合に、そのidを外に露出させない実装をしてみた?!](https://qiita.com/yuta-katayama-23/items/51f6a560cca755e08509)で見たような、オートインクリメントしている数字を露出させたくないが、APIではそれを何らかの形で可逆のIDに変換し、それをキーにしたIFを設計したい、というような場面。
今回はそんな時に使えそうな実装をやってみたので、備忘録を残す。
ソースコード全体は以下(テストも含めて)。
https://github.com/yuta-katayama-23/node-express/commit/1b678b47b2a7165e645c0ee618100322dc4b6192
※上記のコードのconfigに`destinationAlphabet`や`separetors`などセキュアな情報が載っているが、本来的にはこ
Node.jsでミニブログを作りました
こんにちはりちゃ丸です
この前はブラックジャックを作りましたが
今回はしっかり使えそうな物を作りました
ミニブログをつくりましたメイン画面です
![キャプチャ_main.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2879865/160dc1e6-7bb2-5b8a-b387-3b4c106e2292.png)クリックすると
詳細画面に行けます
![キャプチャ_detail.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2879865/a6c3e3c6-f549-f4a2-007f-66eff1c0cae3.png)次にjavascriptです
“`app.js
‘use strict’
const fs = require(‘fs’);
var http = require(‘http’)
const ejs = require(‘ejs’);
const url = require(‘url’);
v
【完走賞ゲット-10】gamecontroller.js を使って DualShock 4 を JavaScript で扱う
## はじめに
こちらは、[完走賞ゲットのため小ネタを毎日投稿しようとチャレンジする Advent Calendar 2022](https://qiita.com/advent-calendar/2022/youtoy) の 10日目の記事です。12月に試していくつか記事を書いてみたりもした「[WebHID](https://developer.mozilla.org/ja/docs/Web/API/WebHID_API)」関連の調べものをしていて、そこからたどり着いた [Gamepad API](https://developer.mozilla.org/ja/docs/Web/API/Gamepad_API/Using_the_Gamepad_API)関連のライブラリ「[gamecontroller.js](https://github.com/alvaromontoro/gamecontroller.js/)」に関する話です。
これを、以下の記事でも扱っていた「DualShock 4」で試します。
●【完走賞ゲット-6】「WebHID DualShock 4 Demo」
ゼロから Node.js + Express + MongoDB で爆速で REST API を作る
# 概要
Node.js + Express + MongoDB で REST API を作ってみます。
細かい説明は各リンク先を読んでもらうとして、**とにかく動くものを爆速で作る**というのが今回の目的です。これらを組み合わせれば、例えば `/users/:id` というAPIでユーザ情報をDB取得からするというコードがこんなに簡単に書けます。
“`typescript
app.get(“/users/:id”, async (req, res) => {
const id = req.params.id
const users = await usersResource.find({ _id: id });
res.status(200).json(users);
});
“`是非、一緒に手を動かしてやってみましょう。
なお、サンプルコードはこちらに置いてあります。
https://github.com/Nyanchu/sample-express-mongoose
# 前提
### 環境
* MacOS
* Homebrew
今話題のChatGPTをPythonでいい感じに使ってみよう!
# 今話題の ChatGPT を Python でいい感じに使ってみよう!
すでにご存知の方も多いと思いますが、ChatGPT は一世を風靡している強力な自然言語処理(NLP)ツールです。人間のようなテキストの生成から、チャットボットやバーチャルアシスタントの構築まで、幅広い用途で利用されています。
ChatGPT の人気の理由の 1 つは、大量のテキストデータで学習させた強力なオープンソースの GPT-3 言語モデルの上に構築されていることです。これにより、ChatGPT は非常に現実的で一貫性のあるテキストを生成することができ、NLP に携わる人にとって貴重なツールとなっています。
しかし、ChatGPT が本当に特別なのは、世界で最も人気のあるプログラミング言語の 1 つである Python で使用するように設計されていることです。Python の基本的な知識があれば、誰でも簡単に ChatGPT をプロジェクトに組み込んで、その強力な機能を使い始めることができるのです。
この記事では、ChatGPT の詳細と、Python でどのように使用できるかを見ていきます。また、
node js で JWT をエンコード・デコードしてみる
# コード例
“`js
const jwt = require(‘jsonwebtoken’)const payload = {
id: 333,
name: “Alice”,
email: “example@example.com”
}const token = jwt.sign(payload,’secret_signature’)
console.log(token)var decoded = jwt.verify(token, ‘secret_signature’);
console.log(decoded)
“`# 結果例
実行するたびにトークンは変わる(ドットで区切られた最後のゾーンが変わる)がデコード内容は同一になる。
ただしiatの値も毎回違う。“`
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MzMzLCJuYW1lIjoiQWxpY2UiLCJlbWFpbCI6ImV4YW1wbGVAZXhhbXBsZS5jb20iLCJpYXQiOjE2NzA1OTk2NjB9.uC438ol
【完走賞ゲット-9】Awesome WebHID というページを見かけて気になった話
## はじめに
こちらは、[完走賞ゲットのため小ネタを毎日投稿しようとチャレンジする Advent Calendar 2022](https://qiita.com/advent-calendar/2022/youtoy) の 9日目の記事です。この 12月のアドベントカレンダー用に公開した記事でも何度か登場している HID に関する話です。その中でも、ブラウザで HID を扱う「WebHID」が絡む話になります。
## 今回の内容
WebHID周りの調べものをしていたところ、以下の「Awesome WebHID」というページを見かけました。●robatwilliams/awesome-webhid: Curated list of resources relating to the WebHID (Human Interface Device) API
https://github.com/robatwilliams/awesome-webhid
![Awesome WebHID](https://qiita-image-store.s3.ap-northeast-1.a
movie page
## evironment and etc..
– front end: react + apollo (not inclueded in this part)
– back end: graphql + express js + mongodb
– OS: macos big sur
– Others:
– nodejs
– npm
– nodemon: server gonna update with source automatically
– repo:
– [server-side](https://github.com/devbohan/movie_page)
## backend part### server setup
– `mkdir workspace`
– `cd workspace; mkdir server; cd server`
– `npm install express`
– `npm install nodemon` (not required optional package but if not will became r
【2022年版】playwrightでデバッグ実行する方法
## 経緯
playwright でブラウザ(Webアプリ)のE2Eテストを作成していましたその際に、
「あれ、うまくデバッグ実行できない・・・」
という状況におちいりました・・・なお、
playwright を使っているということで、
Node.js、JavaScript(TypeScript)でE2Eテストを作成するときの話です・・・
最近のWebアプリであればE2Eテストを作って毎日回したりするので
該当する人は割と多いんじゃないかなと思いますで、
playwright によるE2Eテストの実装時、
### デバッグ実行したいですよね!!
「ここでテストがコケるんだけど何が原因なのか調査したい」
「実際、ブラウザがどういう画面、状態なのか見たい」
・・・
こういうことあるある・・・
playwrightをnode_modules に追加して
コンソール上から実行しているだけではデバッグ実行はうまくできないですエディタ(VisualStudioCode)からテストケースを選択してデバッグ実行、ブレークポイントを立ててステップ実行する方
LambdaのランタイムVerUp(Node.js 16.x → Node.js 18.x)の課題と移行アプローチについて
# はじめに
本来はNode.js 16はLTSで2024/4までサポート期間がありましたが、OpenSSL 1.1.1のサポート終了に合わせて7ヶ月繰り上げられています。
https://nodejs.org/ar/blog/announcements/nodejs16-eol/
Lambdaを利用したサービスを相当数開発しており、2024年までは安定稼働させられると考えていた矢先に、早々(2023/09)にNode.jsのバージョンアップを検討しないといけないようです。
https://aws.amazon.com/jp/blogs/compute/node-js-18-x-runtime-now-available-in-aws-lambda/
幸い、Node.js 18のサポートは開始されいる。
移行に当たって、どれ位、コード修正なしで動作するか検証した所、多大な修正が必要だったので、バージョンアップは計画的に!という注意喚起と、誰かの参考になればという事でメモ書きします。
# バージョンアップ検証において分かった課題
+ バンドルされる「AWS SDK」のバー
WSL2のubuntuをgatsbyの開発環境にする(他のフレームワークでも使える)
## ubuntu on wsl2を準備
1. WSL2を有効化してubuntuをインストールする(参照:[WSL2+ubuntu20.04: GUI化して使う方法](https://qiita.com/atomyah/items/887a5185ec9a8206c7c4))※ 特にGUI化する必要はないので「ubuntuにXRDPをインストール」以降の作業は必要ない。
1. すでにubuntu on WSL2があって、それを初期化したい場合は、Windowsの設定→アプリ→アプリと機能→***ubuntu 20.04 on Windows***の詳細オプションをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307441/5691804a-2fff-6d9f-f2d7-7e9ab382ab1b.png)
3.そしてリセットボタンをクリックすればあっという間に初期化される。
![image.png](https://qiita-image-store.s3.ap-northe
Node.jsから乗り換え?JavaScriptランタイム「Bun」触ってみた
この記事は [ハンズラボ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/handslab) 9日目の記事です。
# Bunとは
JavascriptランタイムにはNode.jsやDenoがある中、最近[Bun](https://bun.sh/)が注目を浴びている…?!ということで気になったので触ってみます。
元々Jarred Sumnerさんがほぼ個人で開発されていたようですが(すごい)、2022年8月に[Oven社](https://oven.sh/)として起業しました。
Bunとはざっくりいうと、高速でJavascript開発に必要なものが全て揃っているオールインワンなJavascriptランタイムです。
## Node.jsにないもの、あります
Node.jsでは必要だったものがBunにははじめから備わっています。
– TypeScript & JSXからJavaScriptへトランスパイル
– tscやBabelがいらない
– JavaScript & CSSのバンドル化
npm run devの実行時にthrow er; // Unhandled ‘error’ eventのエラーが出る時の対応
## 実際のエラー
“`bash
events.js:183
throw er; // Unhandled ‘error’ event
^Error: listen EADDRNOTAVAIL 10.102.158.22:3000
at Object._errnoException (util.js:992:11)
at _exceptionWithHostPort (util.js:1014:20)
at Server.setupListenHandle [as _listen2] (net.js:1338:19)
at listenInCluster (net.js:1396:12)
at GetAddrInfoReqWrap.doListen [as callback] (net.js:1505:7)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:97:10)
error Command failed with exit code 1.
i