- 0.0.1. connect ECONNREFUSED 127.0.0.1:3306 ってなんぞや
- 0.0.2. dyld[60703]: Library not loaded: ‘/opt/homebrew/opt/icu4c/lib/libicui18n.70.dylib’ でエラー
- 0.0.3. Rest改造
- 0.0.4. aws-sdkのタイムアウト設定はデフォルトから変更しよう
- 0.0.5. AWS Lambdaの関数URLとコールドスタートの付き合い方について
- 0.0.6. nodejs + express + mongoDB で複数のCollectionからまとめてデータを取り出す-lookup-
- 0.0.7. TypeScript環境構築
- 0.0.8. バックエンドのDB操作をSQLのように直感で書けるknex.js(Node.js向けのSQLクエリービルダー)とは
- 0.0.9. test.js: line 1: syntax error near unexpected token `(‘ の解決例
- 0.0.10. replit + Node.jsで簡易オンラインチャット
- 0.0.11. Vue3とExpress, Socket.ioで5段階評価サイトを作ってみた
- 0.0.12. nodemon :command not found への対応(macOS)
- 1. インストール
- 1.0.1. Liferay 7.4 theme(テーマ)作成
- 1.0.2. Renovateのようにnpmパッケージを更新するためのツールをつくった話
- 1.0.3. Node.js(TypeScript) で Azure Service Bus を使って、Queue(キュー)を用いたメッセージの送受信をしてみた。
- 1.0.4. KoyebでNode-REDを動かしてみた
- 1.0.5. UUID生成で入門するRustでWebAssembly
- 1.0.6. Discord.jsと@napi-rs/canvasでおみくじ画像を生成して投稿する
- 1.0.7. Node.js + ExpressでTwitterBot作成 #2 『実装』
- 1.0.8. Node.js + ExpressでTwitterBot作成 #1 『事前準備』
connect ECONNREFUSED 127.0.0.1:3306 ってなんぞや
ハマった内容
Node.jsで開発環境を構築中に・・・
“`
npm install –save mysql2
“`
上記のコマンドでmysql2をインストール。
その後にmigrateしようとした所こんなエラーが。“`
ERROR: connect ECONNREFUSED 127.0.0.1:3306
“`ふむ…?
まぁ接続エラーなんだろうけど、解決手順で若干ハマった。
調べてもピンとくる解決方法が出てこない。
dockerの〜、とか書いてあるけどdocker使ってないしなぁ。ふと我に返り、mysql自体起動してないじゃん!www
と思ったが
いや、起動の仕方・・・はて・・・?
Node.jsってnpmコマンドからMysql起動するんか?
いや普通に`mysql.server`コマンドか・・・?起動してないなら起動すれば良いじゃない、と思っていたが
`mysql.server start` コマンドを実行。
“`
ERROR! The server quit without updatin
dyld[60703]: Library not loaded: ‘/opt/homebrew/opt/icu4c/lib/libicui18n.70.dylib’ でエラー
# 概要
おそらくHomebrewをupdateのが原因で、npm install時に以下のエラー“`
$ npm install
dyld[60703]: Library not loaded: ‘/opt/homebrew/opt/icu4c/lib/libicui18n.70.dylib’
Referenced from: ‘/opt/homebrew/Cellar/node/18.7.0/bin/node’
Reason: tried: ‘/opt/homebrew/opt/icu4c/lib/libicui18n.70.dylib’ (no such file), ‘/usr/local/lib/libicui18n.70.dylib’ (no such file), ‘/usr/lib/libicui18n.70.dylib’ (no such file), ‘/opt/homebrew/Cellar/icu4c/71.1/lib/libicui18n.7
Rest改造
# RestはCatapultと分離している
Peerノード、APIノード、Dualノード、様々なノードの種類を聞いたことがあるのではないでしょうか。ではこれらのノードの違いは何なのかというと、Restがあるか無いかが主な違いになります
– Peer: Catapultのみ
– API: Catapult+Rest
– Dual: Catapult+Rest
– Voting: Catapult: Rest
細かく言えばCatapultとRestをつなぐbrokerが存在します(NodeとRestは生きてるのにbrokerが死んでるとかよくありますよね?)# Rest改造のすゝめ
CcatapultのRestはなんと“`Node.js“`で動作しており**普段Symbolで使用しているNode.jsの知識をそのまま利用できます**CatapultはC++で面倒そう…といったかたでも改造しやすいのではないのかなと思います。そして、**RestはCatapultのMongoDBと直接通信ができます**。つまり**超高速でデータの収集が行えてしまうわけです**。トランザクショ
aws-sdkのタイムアウト設定はデフォルトから変更しよう
本記事はハンズラボアドベントカレンダー2022の4日目の記事です。
## はじめに
下記のようなElasticBeanstalk上で動作するAPI(Node.js-Express)がありました。APIは主にDynamoDBやS3にアクセスします。
通常は問題なく動いてくれます。が、しばしばAPIの呼び出し元が504エラーを受け取ることがありました。
発生頻度は不定で規則性もなく、対応の優先度が低かったのですが、先日1日あたりのリクエスト総数の0.1%程度が504エラーで返ってしまうという事象が数日間続き、なんとかせねば、、、となりました。“`mermaid
flowchart LR
Client[Client]–>ALB
subgraph ElasticBeanstalk[ElasticBeanstalk]
ALB–>nginx
direction LRsubgraph EC2
direction LR
nginx–>node
endend
node–>DynamoDB[(Dy
AWS Lambdaの関数URLとコールドスタートの付き合い方について
この記事は、[Supershipグループ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/supership) の4日目の記事になります。
## はじめに
Supership株式会社の [@masahito-suzuki](https://github.com/masahito1977) です。
最近ではAWSやDatabricksに関する管理を中心にコストレポート・見える化などをAWS Lambdaを中心に作成しています。
今回Lambdaを久しぶりに利用していると見慣れない機能「関数URL」と言うものがあり、これについて調べてみると、なるほど「今までより簡単にWebアプリが作れる」ようで、更に深掘りして調べた結果を記載しまとめてみました。serverless関連に興味のある方は是非見ていただければと思います。
## 関数URLとは
2022/04/05 より AWS Lambdaアップデートで新機能 `関数URL` が登場しました。
これまで`API Gateway`を使って、Lamdaを実行する形で
nodejs + express + mongoDB で複数のCollectionからまとめてデータを取り出す-lookup-
# はじめに
下のデータのように、
`works`からデータを取り出し、`user_id`を基準して`users`のデータも一緒に取り出したい。
しかし、非同期処理によってデータを順番に取り出して結合するなど、
まとめてデータを取り出すとき、MongoDBはMySQLと比べて扱にくい感がある。
いろいろ調べたところ、mongoDBもMySQLの`left join`のような使い方があるようです。# Data
“`terminal:users
{
“user_name”: “king”,
“age”: 20,
“id”: “admin”,
“pw”: “1234”,
“role”: “admin”,
“department”: “A”
}
“`“`terminal:works
{
“title”: “to be hero”,
“due_date”: “2022-12-15”,
“create_datetime”: “2022-12-03 19:59:39”,
“user_id”: “admin”
}
“`# まずlookup
TypeScript環境構築
# Node.jsを入れる
公式サイト(https://nodejs.org) で推奨版を
ダウンロードするやり方もあるが、
node.jsはバージョンを切り替えることが割とあるので、
最初からバージョンマネージャーを入れてしまったほうが早い。Node.jsバージョンマネージャーは色々あるが、
ここでは、nvmを使う。公式サイト(https://github.com/nvm-sh/nvm) を見ると、
下記のコマンドでインストールできる模様。“`:terminal
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
“`インストールしただけだとPATHが通っていないので、
PATHも公式に従って通してみる“`:terminal
export NVM_DIR=”$([ -z “${XDG_CONFIG_HOME-}” ] && printf %s “${HOME}/.nvm” || printf %s “${XDG_CONFIG_HOME}/nvm”)
バックエンドのDB操作をSQLのように直感で書けるknex.js(Node.js向けのSQLクエリービルダー)とは
# はじめに
バックエンド開発でNode.js + express を使用する際に、DB操作をどのライブラリを使用したら良いかと思って、たどり着いたのがknex.jsというNode.js向けのSQL Query Builderでした。
本記事はknex.jsの検索、登録、更新、削除の文法をSQLと対比して説明する。## knex.jsとは
Node.js向けのSQLクエリービルダーである。以下のデータベースに対応している。
PostgreSQL, CockroachDB, MSSQL, MySQL, MariaDB, SQLite3, Better-SQLite3, Oracle, and Amazon Redshift※Knex.jsの[公式ページ](https://knexjs.org/)から引用
# SQLの文法とknex.jsの文法の対比
## 全件検索
### SQLの場合
“`sql
select * from users;
“`### knexの場合
“`
knex.select(‘*’)
.from(‘users’)
“`## 条件検
test.js: line 1: syntax error near unexpected token `(‘ の解決例
## 何が起きた?
ソースコード上(vscode上)ではエラーがないのに実行しようとするとエラーが発生した。## 原因
実行コマンドを間違えていた。(`sh node.js`と打っていた。)## 解決方法
`node test.js`で実行できた。
replit + Node.jsで簡易オンラインチャット
[replit](https://replit.com/)で簡易的なオンラインチャットを作成できたのでメモ。
[ここで実際の動作を見れます。](https://onlinechat.attomake.repl.co)
(replitの仕様で起動まで時間がかかる場合があるが、サーバーが落ちていなければ更新すればすぐ使えるはず。)[ruiwenge2氏のガイド](https://replit.com/talk/learn/SocketIO-Tutorial-What-its-for-and-how-to-use/143781)を参照して作成。より単純なオンラインの例が載ってある。
15:36追記:最新チャットが上になるように変更。
~~16:28追記:repl再起動後、それ以前にチャットに参加した人の名前が`undefined`になる不具合アリ。~~
再起動前に参加したか確認し、その場合は自動でリロードするよう修正。
~~19:36追記:開発者ツールを用いれば改行が使えるらしい。要修正~~
21:05追記
・改行を無効化。
・なぜか日本時間じゃなかったので修正。# index.
Vue3とExpress, Socket.ioで5段階評価サイトを作ってみた
# はじめに
今回はVuetifyがVue3に対応したという事で、Vueを書いてみようという気分になりましたのでそのお話について書いていきます。
Vue自体は1年前くらいにVuetifyが使えるという理由から、Vue2を個人的に少し書いてみたり、案件で一部Vueを書いていたしていました。
それ以降はReactにのめりこみReactばかりになっていたのですが、Vue3にVuetifyが対応したことやTypeScriptが使えること、Svelteの人気が上がってきたことから久しぶりにVueを今回書いてみました# アプリの構想
今回作成したのは「5段階評価サイト」というものです。
ユーザーが任意のルームに参加して、「AさんのVueの能力」などのテーマに対してみんなで5段階で評価を投稿して、一斉に公開、平均点が表示されるシステムを作りましたなぜこのサイトを作ったかというと、普段モブプログラミングで実装をしている私のチームでは人事評価などはチームのメンバーでやるのがふさわしいという話になりました。そこで、以下の「Hatjitsu」というサイトを利用して試しに各エンジニアスキルについて
nodemon :command not found への対応(macOS)
nodemonをインストールした後、ターミナルでnodemon app.js などと実行した時に、command not foundとなってしまったので、それを解決した方法をメモしておきます。
インストール
“`
sudo npm install -g nodemon
“`
nodemonをインストールします。または、nodemonを使うディレクトリで(cdで移動して)“`
npm i nodemon -D
“`
もしくは、
“`
npm i nodemon –save-dev
“`
とします。(-Dと–save-devは同じ意味ですから、どちらかを使ってください。)この後、jsonファイルにある以下の部分を見てください。
“`
“scripts”: {
…},
“`
この部分に、
“`
“scripts”: {
…
“start”: “nodemon app.js”
},
“`
と書き加えます。app.jsの部分は適宜変えてください。その後、ターミナルで、
“`
n
Liferay 7.4 theme(テーマ)作成
### Liferay theme generator を使ってtheme(テーマ)を作成する
参考したサイト)
https://help.liferay.com/hc/ja/articles/360018162071-Liferay-Theme-Generator# Liferay theme generator のインストール
手順(1)
node.jsをダウンロード&インストール
https://nodejs.org/en/
コマンドプロンプトでインストールしたnode.jsを確認
“`
$ node -v
“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2518095/e1eb7e3a-a469-0386-0d62-1e2656071a6e.png)手順(2)
npm環境をセットアップするために、「C:\Users\ユーザ\」配下に、「.npmrc」ファイルを作成
(↓「.npmrc」ファイルの中身)
“`
prefix=/Users/(ユーザ※書
Renovateのようにnpmパッケージを更新するためのツールをつくった話
Renovateのようにnpmパッケージを更新するためのツールを開発して使っています。
https://github.com/npm-update-package/npm-update-package
ここでは、開発に至った経緯、開発したツール、利用に関する工夫、今後の展望について記します。
## 開発に至った経緯
まず、私がRenovateのようなツールを開発するに至った経緯について説明しましょう。
### 依存ライブラリの更新に関する課題
2021年4月にヤフーに入社して以来、依存ライブラリの更新について課題を感じていました。
特にフロントエンド界隈は潮流が速く、アクティブにメンテナンスされているライブラリは、日々新たなバージョンがリリースされ続けています。
ライブラリのバージョンが古いことに起因する問題に遭遇したときや脆弱性が検知されたときなど、必要に迫られてから更新するのでは遅れをとってしまいます。
いざ更新するとなったときにはバージョンがいくつも上がっていて、影響調査やコードの修正に多くの時間を要するような事態になりかねません。
かといって、人間が手作業でせっせと
Node.js(TypeScript) で Azure Service Bus を使って、Queue(キュー)を用いたメッセージの送受信をしてみた。
# はじめに
マイクロサービス間のデータベースの一貫性を保持するために、メッセージブローカというものがよく採用されます。その例として、RabbitMQ, Apache Kafka, Redis(Cache DBだけどメッセージブローカとしての機能もあります)などがあります。これらと同じような機能を備えた、Azure Service BusというサービスがAzureにはあります。今回は、Azure Service BusをNode.jsのSDKを使って、メッセージをパブリッシュして、そのパブリッシュされたメッセージをNode.jsで受信してみたいと思います。# メッセージの種類
Azure Service Busでサービス間のメッセージの送受信の方法は大きく分けて、二種類あります。Queueを使ったやり方。TopicとSubscriptionを使用したやり方。今回はQueueを使って、メッセージの送受信を行って行きたいと思います。## Queue
キューはFirst in First out方式(先入れ先出し法)で、各メッセージが 1 つのコンシューマーによって処理されます。
KoyebでNode-REDを動かしてみた
# はじめに
無料で使えるNode-RED実行環境をいろいろ探しています。
https://qiita.com/kitazaki/items/970a10cbd1059c89aca5
新たにKoyebというサービスを見つけ、Node-REDを動かしてみました。
https://www.koyeb.com/
# 無料枠(Hobbyプラン)の仕様
|サービス|無料プラン|CPU|メモリ|Disk|時間|非アクティブまでの時間|その他|
|—|—|—|—|—|—|—|—|
|Koyeb|Hobby|1vCPU|512MB|5GB|5$|不明|1個のMICRO(1vCPU,512MB,5GB)、または、2個のNANO(1vCPU,256MB,2.4GB)|# 手順
## 1.アカウントを作成
アカウントを作成してログインするとダッシュボード画面が表示されます。
![koyeb_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/67f4cd8a-d
UUID生成で入門するRustでWebAssembly
# はじめに
本記事は[Progaku Advent Calendar 2022](https://qiita.com/advent-calendar/2022/progaku) 2日目担当です。
みなさん、WebAssembly(以下wasm)はご存知でしょうか? MDNの[WebAssembly](https://developer.mozilla.org/ja/docs/WebAssembly)に書かれている通り、簡単に言うとコンパイル済みのバイナリファイルをブラウザ上で実行できる技術です。
ますます高まるwebアプリケーションへの要求に対して、wasmの技術は必要なものになってくると推測できます。
そういうのもありアドベントカレンダーのいい機会でもありますので、アウトプットも兼ねて触れてみました。
よろしくお願いします。# 目的
タイトル通り。Rustで書かれたUUID生成処理をwasmでTypeScriptから動かします。
# 環境
– M1 Mac
– npm v8.5.0
– rustc v1.65.0# 環境構築
## Rustサイド
install
Discord.jsと@napi-rs/canvasでおみくじ画像を生成して投稿する
# まえがき
皆さんこんにちは、Fuseです。12月も始まり、年末年始が近づいてきましたね。
ところで、皆さんは年末年始といえば何を思い浮かべますか?私が思い浮かべるのは…
>![syougatsu2_omijikuji2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957248/d6db4653-05ea-2bf7-a9d2-8078f0a859ba.png)
>引用元:[いらすとや様](https://www.irasutoya.com/2012/04/blog-post_7236.html)**おみくじです。**
なかなか初詣に行けないこのご時世、おみくじの結果で友達とはしゃぎたくてもはしゃげない。
せめてオンラインでこの夢をかなえるべく、Discordのbotを作りました。
# 完成品https://github.com/Fuses-Garage/OmikujiMion
![image.png](https://qiita-image-store.s3.ap-northeast-1.
Node.js + ExpressでTwitterBot作成 #2 『実装』
## 仕様の検討
作成するBotの仕様を考えます。
サッカー関係で多数RTされているツイートを自動でRTしたいので、以下のようになりました。:::note warn
事前準備
– 事前にサッカー関係のインフルエンサーをBotのアカウントで複数フォローしておく
::::::note
以下を定期的に実行
– タイムライン上でRT数が一定以上のツイートをRT
– 特定のキーワード(ワールドカップなど)で検索し、一定以上のRT、かつ24時間以内に投稿されたツイートをRT
– トレンドのキーワードのうち、TLのツイートに含まれるものをサッカーネタとみなし、該当キーワードで検索。24時間以内、かつ一定以上のツイートをRT
:::この機能を満たすように実装していきたいと思います。
## フォルダ構成
現状では以下のような構成になっています。
Node.js + ExpressでTwitterBot作成 #1 『事前準備』# はじめに
Node.jsとExpressを使ってツイッターのbotを作ってみたので作成手順をメモしておきます。
仕様等は以下の通りです。### Botの仕様
– サッカーネタの100RT以上のツイートを自動でリツイートする
– 同一ソースで別ジャンル(野球、プログラミングなど)のBotも作成可能にする### 開発理由
– サッカーやプログラミングなど、興味のある分野でバズっているツイートを見逃さないため### BotのTwitterアカウント
https://twitter.com/foot_rt_bot (ジャンル:サッカー)### 環境
– 言語: Node.js (v18.12.1)
– フレームワーク: Express
– DB: SQLite
– ORM: Prisma
– Twitter操作用ライブラリ: node-twitter-api-v2
– IDE: VSCode### ソース
https://github.com/tsubame/FootRTBot-NodeJs
# Node.jsのインストールまずは公式サイトから