- 1. Amazon SQS→Lambdaトリガー後の非同期処理
- 2. husky+lint-stagedでコミットする前に自動整形を行ってくれるようにする
- 3. 【環境構築】TypeScript, Node.js
- 4. eslintをv7からv8にアップデート
- 5. Docker Imageどれを選んだらいいのかわからない
- 6. Node.js の環境構築をする際によく出てくるマネージャーたち
- 7. npmってなんなのさ
- 8. 【Node.js】ts-nodeの実行で躓いた話
- 9. VSCodeを使ったGoogle Apps Script開発の環境構築
- 10. 仮想通貨APIで発注してみる
- 11. 仮想通貨APIをお触りしてみる
- 12. Access-Control-Allow-Credentials: trueにしないとsessionをCookieに保存できない
- 13. Salesforceしか開発経験のない自分が、Node.js(+LWR)でWebアプリを開発してつまずいたところ
- 14. ブックマーク集(LIFF, Messaging API, Next.js, Node.js, xserver, nginxなど)
- 15. LINE Bot ハンズオン
- 16. LINE Notify ハンズオン
- 17. Node16 + Nuxt2で@nuxtjs/i18nをインストールするとエラーが発生した
- 18. TurborepoのESLint及びPrettierをBiomeに移行した手順
- 19. Mac Node.js 1万件の情報が入ったcsvを出力するスクリプトを作ってみる
- 20. #プログラミング #Javascript #nodejs #chrome ビット演算・算術演算、領域管理の速度差
Amazon SQS→Lambdaトリガー後の非同期処理
# 前回と前々回
https://qiita.com/remonga/items/b865126b580aa79607e2https://qiita.com/remonga/items/0b0ac02c5e88441039c0
#### EC2 → Amazon EventBridge → Amazon SQS → Lambda
という処理の流れをこれまで構築してきました。
これで時間差で実行したい処理を疎結合気味に実行することができます。問題はこのLambda以降の流れになります。
## Lambdaについて
SQS → Lambda
のようなAWSサービスをトリガーにしてLambda関数が実行される仕組みのことをイベントソースマッピングといいます。https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-concurrency.html
そしてこのイベントソースマッピングによるLambda関数の同時実行数が1000と記述があります。
それ以上のLambdaイベントが失われてしまいますので結構
husky+lint-stagedでコミットする前に自動整形を行ってくれるようにする
# はじめに
よくメンターの人から「コードフォーマット効いていない!!」と言われていました。
毎回「ごめんなさい ごめんなさい」と思いながら再度pushする日々でした。
自動でGitにPushする際にフォーマッターが動けばいいと思い調べてみたら、huskyとlint-stagedで自動整形を行うようにできるらしい。今回は、huskyとlint-stagedの実装の仕方やつまずいたところを紹介します!
# そもそもhuskyとlint-stagedとは?
huskyとはnpm パッケージの1つで、commitやpushなどのGitの操作を行う際に自動でコマンドを実行できるもの。
lint-stagedとは、変更したファイルに対してフォーマットをかけることができるもの。
今回は、フォーマッターを実行しコードの整形を行ってからGitにPushを行うようにしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3464628/31c1cabe-223b-2eeb-5c56-7b656d
【環境構築】TypeScript, Node.js
## 環境
以下の環境で構築していきました。
・macos Sonoma
・MacBook Air M1## 前置き
今回 TypeScriptの学習をする機会があったのでその備忘。
これから環境構築をしようと考えている方々に、方法を共有しようと思い書きました。### はじめに
#### Homebrew
まず、Homebrewのインストールを行いましょう。
以下のリンクからインストールが行えます。https://brew.sh/
パスワードやエンターを求められるので、都度入力しましょう。
インストールが完了したか、以下のコマンドで確認してください。バージョンが表示されれば完了しています。
“`
brew –version
“`### Node環境の構築
TypeScriptを使用するためにはNode.js環境が必要です。Node.jsはTypeScriptコンパイラを実行するために必要となってきます。
以下の手順で環境を構築しましょう。[構築済みの方は次へ進んでください](#TypeScriptの環境構築)まず、 .zshrcファイルがあるか確認し
eslintをv7からv8にアップデート
## やったこと
“`diff:diff
– “@typescript-eslint/eslint-plugin”: “^6.21.0”,
– “@typescript-eslint/parser”: “^6.21.0”,
– “eslint”: “^7.29.0”,
– “eslint-plugin-jest”: “^27.2.3”,
+ “@typescript-eslint/eslint-plugin”: “^7.9.0”,
+ “@typescript-eslint/parser”: “^7.9.0”,
+ “eslint”: “^8.57.0”,
+ “eslint-plugin-jest”: “^28.5.0”,
“`– nodeを18.18.0以上に変更
– @typescript-eslint/eslint-pluginと@typescript-eslint/parserをtypescript-eslintに変更## @typescript-eslint v7の要件
– node v18.18.0以上
– ESLint の最小バージョンが v8.56.
Docker Imageどれを選んだらいいのかわからない
## 困ったこと
いざアップデートしようとしてtagsを見ていてもいっぱいあり過ぎてわからない…
slim?buster?alpine?何が違うんだ…
となったので調べてみましたnodeを導入する前提として進めていきますが、node以外でも参考になるはず
https://hub.docker.com/_/node/tags
よければこちらもみてください↓
https://qiita.com/mayobimu/items/c1eb88882dec2fa132ed
## node
`22.x`は2024-10-29からLTSになるのでそれまでは依存関係次第ですが`20.x`を選択しておけばOK
https://nodejs.org/en/about/previous-releases
https://github.com/nodejs/release?tab=readme-ov-file#release-schedule
## ベースイメージ
v20.10で絞り込んでみるとこれだけあリました“`
20.10.0
20.10-slim
20.10
Node.js の環境構築をする際によく出てくるマネージャーたち
会社は Windows プライベートでは Mac な環境。
Node.js 周りの環境構築でパッケージマネージャーやらバージョンマネージャーやら混乱してきたので整理。# Mac
## ターミナル
デフォルトのターミナルか好みで iTerm2 とか## パッケージマネージャー
### Homebrew
[https://brew.sh/ja/](https://brew.sh/ja/)
macOS または Linux 用パッケージマネージャーMac の場合はとりあえずこれでいいんじゃないかな
## Node.js バージョンマネージャー
Node.js の バージョンを管理するツール
いくつかピックアップ### nodebrew
[https://github.com/hokaccha/nodebrew](https://github.com/hokaccha/nodebrew)
プロジェクト単位で Node.js のバージョンを指定できる### nodenv
[https://github.com/nodenv/nodenv](https://github.c
npmってなんなのさ
## はじめに
Node.jsを使って開発をしていると避けて通れないのが`npm`コマンドです。
この`npm`が何であるかを調べると
「Node Package Manage」の略で、Node.jsのパッケージの管理をする
という説明が多く見られます。
しかし、私にはこれではピンとこないので、自分なりに調べた結果をまとめます。## npmとは
以下の公式サイトを確認します。
[About npm | npm Docs](https://docs.npmjs.com/about-npm)npmとひとくちに言っても、その実態は大きく3つのことを指すようです。
* Webサイトとしてのnpm
* CLIとしてのnpm
* レジストリとしてのnpmよく目にするのは「CLIとしてのnpm」です。要はコマンドとして使うnpmです。
しかし、この3つの中でも個人的に重要なのは「レジストリとしてのnpm」だと考えます。
公式ドキュメントのはじめの文章にはnpmが世界最大級のレジストリであると書かれています。つまり、npmの本質は巨大なJavaScriptのデータベースであると言えそう
【Node.js】ts-nodeの実行で躓いた話
社内でNode.jsを使用した以下の勉強課題をいただきました。
+ [Nodeビギナーズブック](https://www.nodebeginner.org/index-jp.html)この記事はJavaScriptで記載されていますが、TypeScriptに直して実行することが今回の課題です。
実行の条件として以下をもらいました。
+ TypeScriptで記載すること
+ 「require」ではなく、「import」を用いること
+ TypeScriptでは「node」コマンドは動かないので、「ts-node」で実行すること上記条件にて、順にコードを記載していったところ、今回タイトルとして記載している「ts-node」の実行という、だいぶ初歩的なところで躓いたので備忘として整理しておきます。
環境はMac端末にて以下で実行しています。(多分現時点で最新の状態のハズ、、、)
“`
% nodebrew -v
nodebrew 1.2.0% node -v
v20.5.0npm -v
9.8.0
“`## 概要
コードを記載し、下記コマンドにて「ts-node
VSCodeを使ったGoogle Apps Script開発の環境構築
## はじめに
この記事では、VSCodeでGoogle Apps Script(以下`GAS`)開発の環境を構築する方法を紹介します。GASを開発するためにはGoogleアカウントが必要になるので、もしお持ちでない方は先に作成してください。また、ローカルからGoogleアカウントにアクセスするために`clasp`というNode.jsパッケージを使うので、Node.jsも必要になります。詳細は以下のドキュメントをご覧ください。https://developers.google.com/apps-script?hl=ja
https://github.com/google/clasp
### 最終的なディレクトリ構成
“`
myApp/
├── .clasp.json
├── .claspignore
├── appsscript.json
└── main.js
“`### Google Apps Script APIを有効にする
まずはGAS APIを有効にしましょう。使いたいアカウントにログインした上で設定してください。以下からアクセスできま
仮想通貨APIで発注してみる
# 前回
https://qiita.com/noritama08/items/11605e024d01e2cc1d9a前回に続き、GMOコインのAPI(Node.js)で遊びます。
前回: APIで情報を参照
今回: APIで注文を入れてみる
# 注文を入れる
### 方針
private APIの「注文」を参考にするhttps://api.coin.z.com/docs/?javascript#order
– レバレッジをかけず
= 現物取引
– 金額を指定
= 指値
を満たす様サンプルを書き換える
### 実装
“`order.js
const axios = require(‘axios’);
const crypto = require(‘crypto’);const apiKey = ‘YOUR_API_KEY’;
const secretKey = ‘YOUR_SECRET_KEY’;const timestamp = Date.now().toString();
const method = ‘POST’;
const endPoint
仮想通貨APIをお触りしてみる
# 背景
一昔前まで週刊SPAとか胡散臭い雑誌(主観)くらいでしか聞かなかった仮想通貨。
BitCoinの価値が100万円まで上がって以降あまり情報見てなかったが、最近は1,000万円を越えたらしい。いきなりまとまった金額を投資するのも怖い、、、ので
GMOコインで原資1万円で遊んでみる(本当に遊ぶわけではなく)## APIとは何か
・アプリケーション・プログラミング・インターフェース(Application Programming Interface)の略
・自作アプリに組み込み、提供元のサービスにアクセスする事ができる
### 例
・LINE、Slack などに自動投稿するbotを作成
・Google Mapをサイト内に表示
## 何故GMOコインなのか
・入出金で手数料がかからない
・APIを提供していてその利用手数料が無料
・国内でも信頼度が高い
### 対応言語
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214861/bdb34cdc-8ff1-410e-2252-
Access-Control-Allow-Credentials: trueにしないとsessionをCookieに保存できない
卒研でWebアプリを開発しており、ログインセッションの実現をしようとしていたところ思いのほか躓いたので記事書くことにしました。
:::note warn
ここではExpressでのsession構築、Redis構築の話は一切行いません。予めご了承ください。
説明は致しませんが、この記事の最下部にて私が参考にしたURLを貼っております。
:::## Cookieがセットされない…
[express-session](https://www.npmjs.com/package/express-session)というライブラリを使って、Redisにセッション情報を保存しつつログインセッションを実現しようと思い環境構築を行っていました。
いろんな方のブログや公式リファレンスを参考にして、いざやってみるとなぜかブラウザにCookieがセットされない。
ブラウザの検証ツールで確認してみると、**通信は正常**に行われており、**Set-Cookieもレスポンスヘッダーに存在**し、ますます路頭に迷う羽目となっておりました。## ざっくり環境
– **Front**: SvelteKit
Salesforceしか開発経験のない自分が、Node.js(+LWR)でWebアプリを開発してつまずいたところ
## はじめに
今までSalesforce Platform上でしかほぼ開発経験がなかったのですが、それなりに大きな案件となると、Salesforceだけで完結せずに外部のシステムと連携するパターンが多いと思うので、Node.js + Lightning Web Runtime(LWR)でWebアプリを開発してみました。一般的なWebアプリ開発知識が不足しているせいか、めちゃくちゃ初歩的な部分でいくつか躓いたので、それらをまとめたいと思います。## 目次
[1. 想定する読者](#想定する読者)
[2. 執筆者のバックグラウンド](#執筆者のバックグラウンド)
[3. 使用したテクノロジー](#使用したテクノロジー)
[4. 作成したアプリのデモ動画](#作成したアプリのデモ動画)
[5. npmが分からない](#npmが分からない)
[6. サーバーを起動するという概念が分からない](#サーバーを起動するという概念が分からない)
[7. アプリケーションという単位が分からない](#アプリケーションという単位が分からない)
[8. JSforceはとても簡単だった!](#js
ブックマーク集(LIFF, Messaging API, Next.js, Node.js, xserver, nginxなど)
# ブックマーク集
LIFF & MessagingAPIで、LINEミニアプリを作成した時に参考にした
Webサイトをここにまとめる。※編集中
***
### JavaScript* [JavaScriptで小数点以下の桁数を指定する方法 #JavaScript – Qiita](https://qiita.com/KenRoda/items/b6f57ec37d032bb054ba “JavaScriptで小数点以下の桁数を指定する方法 #JavaScript – Qiita”)
* [JavaScriptのNumberオブジェクト toFixed(x) メソッドの使い方 – 0xBrokers ブログ](https://0xbrokers.com/javascript-number-tofixed-method/ “JavaScriptのNumberオブジェクト toFixed(x) メソッドの使い方 – 0xBrokers ブログ”)
* [Number.prototype.toFixed() – JavaScript | MDN](https://developer.
LINE Bot ハンズオン
# はじめに
Messaging APIを使ってLINE Botを作成するハンズオン記事です。
ユーザーが送ったメッセージをそのままオウム返しで返すLINE Botを作成します。# 前提条件
* LINEアカウントを持っていること
* VS Codeがインストールされていること
* VS CodeへGitHub or Microsoftアカウントでサインインしていること
* Node.js v18以上がインストールされていること# ハンズオン
## LINE Developersコンソールへログイン
[Messaging APIページ](https://developers.line.biz/ja/services/messaging-api/)へアクセスし画面右上の「コンソールにログイン」ボタンをクリックし、ログインします。https://developers.line.biz/ja/services/messaging-api/
![image](https://gist.github.com/assets/22117028/948e5423-85a3-4c
LINE Notify ハンズオン
# はじめに
手軽にLINEへPush通知を行えるLINE Notifyのハンズオン記事です。
APIの実行方法はcurl、Node.js、Arduinoの3通りの方法を紹介します。# ハンズオン
**トークン発行**と**API実行**の2つのステップで進めていきます。
## トークン発行
[LINE Notifyページ](https://notify-bot.line.me/ja/)へアクセスし画面右上の「ログイン」をクリックし、ログインします。
(QRコードログインが楽です)https://notify-bot.line.me/ja/
![image](https://gist.github.com/assets/22117028/c8076aee-5b53-4624-8db2-e47b93b9b41e)
ログイン後にアカウント名をクリックし、表示されるメニューより「マイページ」を選択します。
![image](https://gist.github.com/assets/22117028/8c26d0c6-8964-4598-bbb0-8
Node16 + Nuxt2で@nuxtjs/i18nをインストールするとエラーが発生した
# 前提
* Node:16.13.2
* Nuxt.js:2.15.8
* Vue.js:2.7.10
* yarn:1.22.15# エラーについて
下記のようにインストールしようとしたところエラーが発生しました。
“`sh
$ yarn add @nuxtjs/i18n
yarn add v1.22.15
[1/4] Resolving packages…
[2/4] Fetching packages…
error globby@14.0.1: The engine “node” is incompatible with this module. Expected version “>=18”. Got “16.13.2”
error Found incompatible module.
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.
“`
`globby@14.0.1`というパッケージがNode18以上でないといけないようです。ちなみに何回
TurborepoのESLint及びPrettierをBiomeに移行した手順
## はじめに
– Turborepoに標準インストールされていたESLintとPrettierを辞め、Biomeに移行する必要が生じたので、移行に要した手順を公開する
– パッケージ構成は以下の通り
“`
(root)
|—-apps
| |—-web ← ワークスペース
|
|—-packages
| |—-ui ← ワークスペース
| |—-eslint-config ← ワークスペース
“`## Turborepoの前提知識
### `turbo lint`を実行すると、なぜwebやuiのlintが実行されるのか?
– Turborepoのルートディレクトリに存在する`turbo.json`を見てみる
“`turbo.json
{
“$schema”: “https://turbo.build/schema.json”,
“globalDependencies”: [“**/.env.*local”],
“pipeline”: {
“build”: {
“dependsOn”: [“^build”]
Mac Node.js 1万件の情報が入ったcsvを出力するスクリプトを作ってみる
## 概要
Macのローカルでjsのスクリプトを動かして1万件の情報が入ったcsvを出力してみる。
## 方法
1. MacのローカルにNode.jsを導入(筆者はVoltaを使ってNode.jsを管理している。Node.jsのバージョンは20.11.1を使用)
1. 任意のディレクトリを作成
1. 下記コマンドを実行して初期化“`shell
npm init
“`1. 下記コマンドを実行してcsv-writerパッケージをインストール
“`shell
npm install csv-writer
“`1. 下記コマンドを実行してスクリプトファイルを作成
“`shell
touch generate_csv.js
“`1. 作成したスクリプトファイルに下記の記載を実施
“`generate_csv.js
const createCsvWriter = require(‘csv-writer’).createObjectCsvWriter;
const
#プログラミング #Javascript #nodejs #chrome ビット演算・算術演算、領域管理の速度差
**本内容を利用した場合の一切の責任を私は負いません。**
いつもコーディングする時に、コンバイル言語の名残で、書き方で違いがでるか迷うので実験してみた。
実験結果から、ソースが違うだろうから、node.jsとChromeではやはり挙動に違いがありそう。
書き方は意識した方がいいのかも。
最適化もありそうな気がする。# バージョン
– OS
OS 名: Microsoft Windows 10 Home
OS バージョン: 10.0.19045 N/A ビルド 19045
システムの種類: x64-based PC
– node.js
node-v20.9.0-win-x64.zip
– Chrome
バージョン: 125.0.6422.114(Official Build) (64 ビット)#ソース
“`javascript:a.js
function aa() {
let total;console.time(“elap3”);
total = 0;for