- 1. IoTプラットフォームの「obniz」が IoTブロックの「MESH」に対応したので軽く試してみる【MESH-100BU ボタンブロックでのお試し】
- 2. then-request モジュールを用いて、Lambdaで HTTPリクエスト を同期処理
- 3. 【Next.js】サブドメインに別のパスを割り当てる方法
- 4. pingで呼び出したらpongを返すAPIを作る
- 5. Macでwebpackがうまく走らなくなった際にした対処
- 6. SakuraサーバーにNode.jsをインストールする方法
- 7. CHIRIMEN から Node-REDにMQTTでデータを投げる
- 8. yarn での parse エラー解決方法
- 9. Nuxt.jsでfakerを使って日本語ダミー文章を生成する
- 10. React(Node js + MySQL)の構成でアプリを作成をしました【簡単なCRUDアプリケーション】
- 11. 睡眠不足が続いているので、永久の眠りにつかせてくれる世界を作った
- 12. 依存パッケージの脆弱性修正には、package.jsonのoverrides / resolutionsフィールドを使いましょう
- 13. RPi + CHIRIMEN + Node-REDの環境づくり
- 14. 【緊急】トイレの蓋を閉め忘れ彼女にブチギレられたので、obnizを使って解決しにいった話
- 15. node-configのlocal.json
- 16. VercelでLineボットを作って総理大臣の名前を暗記するゲームをやってみる
- 17. MySQLのテーブルのデータをJson形式で出力(エクスポート)する
- 18. Vue.jsで文字列をBase64に変換する方法
- 19. Volumio3(Raspberry Pi)でRadikoを再生する環境構築
- 20. クラスオブジェクトの@Expose()ってなに?
IoTプラットフォームの「obniz」が IoTブロックの「MESH」に対応したので軽く試してみる【MESH-100BU ボタンブロックでのお試し】
この記事の内容は、以下のプレスリリースにも出てきている、「obniz」の「MESH」対応に関するものです。
●IoTプラットフォーム「obniz」 IoTブロック「MESH(TM)」に対応を開始|株式会社obnizのプレスリリース
https://prtimes.jp/main/html/rd/p/000000054.000040376.htmlそれに関して、まずは以下のボタンブロックとの連携を軽く試してみた、という内容になります。
●MESH-100BU ボタン(Button)ブロック – シンプルなボタンに無限の可能性 ワイヤレスボタン | ソニー
https://meshprj.com/jp/products/blocks/MESH-100BU.html## できあがったもの
まず、お試しで作ったものを掲載します。以下のツイートの動画に出てきている内容です。
#obniz で @MESHprj_jp のブロックを利用するプログラム、
まずは、「MESH のボタンブロックのボタン押下で、obniz のディスプレイに文字表示」というシンプルなものから試した!「ボタンを 1回押す・2回押す・長押しする」のそれぞれで、表示する文字を少し変えてみてます。
開発は Node.js にて。 https://t.co/lcD0AJ9FgH pic.twitter.com/4NUS7PoJnd
— you (@youtoy) October 9, 2022
MESH側で、「ボタンの 1回押し」、「ボタンの 2回押し」、「ボタンの長押し」のそれぞれが
then-request モジュールを用いて、Lambdaで HTTPリクエスト を同期処理
# はじめに
Lambdaが同期処理でAPIを叩くために、モジュールを探すと、sync-requestがありましたが、商用では非推奨で、then-requesを推奨されておりました。`then-request`は、非同期処理ですが、`await`を使えば、同期処理できますので、Lambdaで`then-request`を使い、同期処理でAPIを叩き、結果を返す方法をまとめます。
同期的に WebページやAPIの取得をしたい場合に参考になるかと思います。
# then-requestモジュール
`then-request`モジュールを使用するため、ローカルで`then-request`モジュールをインストールします。
“`terminal
$ mkdir nodejs
$ cd nodejs
$ npm init -y
$ ls
package.json$ npm install then-request
$ touch index.js
$ tree
.nodejs
├── index.js
├── node_modules
├── package-lock.jso
【Next.js】サブドメインに別のパスを割り当てる方法
# やりたいこと
サブドメインは異なるパスを割り当てたいときってありますよね!
たとえば、`https://example.com`からのアクセスには`/`、
`https://dashboard.example.com`には`/dashboard`を割り当てるみたいに!# next.config.jsのRewritesを使う
こういうときにはNext.jsのRewritesという機能を使うようです。
https://nextjs.org/docs/api-reference/next.config.js/rewrites
“`JS
module.exports = {
async rewrites() {
return {
beforeFiles: [
{
source: ‘https://dashboard.example.com:path*’,
destination: ‘/dashboard:path*’,
},
],
};
},
}
“`
つまり、
pingで呼び出したらpongを返すAPIを作る
http://localhost:3000/ping で呼び出したらpongという文字列が返ってくるAPIを
Node.jsのWebアプリケーション・フレームワークであるExpressを使って作ってみました。
Hello, world!から一ミリくらい前に踏み出してみようという気持ちです。この記事はExpressのチュートリアルを参考にしています。
https://expressjs.com/ja/starter/hello-world.html# Node.jsのバージョン管理ツールをインストール
個人的には、anyenv + nodeenvで管理するのが好きです。https://github.com/anyenv/anyenv
https://github.com/ekalinin/nodeenv
# Node.jsのインストール
ここでは説明しません。# Yarnのインストール
以下のページを参考にyarnをインストールします。https://yarnpkg.com/getting-started/install
# Node.jsのプロジェクトを作成
Macでwebpackがうまく走らなくなった際にした対処
# Macでwebpackがうまく走らなくなった際にした対処
## 概要
ある日突然webpackがうまく走らなくなった。
正確には走らせた後に途中で停止してしまい、コマンドを受け付けなくなってしまった。結論から言えばNode.jsとnpmのバージョンのずれが問題であった。
最終的にはNode.jsをv12.22.12, npmを6.14.16をすることで解決した。しかしv12.22.12はlatestではないため、他案件の開発時に問題が生じる。
そこでNode.jsとnpmのバージョンを適切にあわせつつ、
バージョンを手軽にスイッチできるツールであるnodebrewを導入した。本稿ではインストール済のNode.jsとnpmのアンインストール手順と、
nodebrew導入〜その利用までの手順を解説する。## Node.jsとnpmのアンインストール
次のコマンド3つを実行。
“`.bash
sudo npm uninstall npm -g
lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom | whil
SakuraサーバーにNode.jsをインストールする方法
# 目的
* Node.js v16.17.1(2022/10/13時点の最新版)をSakuraサーバーにインストールする# 前提
* Python3がインストールされていること(Node.jsのコンパイルに必要)# 参考サイト
* https://blog.pinkumohikan.com/entry/how-to-install-nodejs-to-rental-server-of-sakura# 手順
## Sakuraサーバーにアクセス
“`
$ ssh@ .sakura.ne.jp
“`
## Open SSLのコンパイル
“`
$ curl -sSf https://www.openssl.org/source/openssl-1.1.1o.tar.gz -O
$ tar zxf openssl-1.1.1o.tar.gz
$ cd openssl-1.1.1o
$ ./config –prefix=/home//openssl –openssldir=/home/ /local/openssl
$ ma
CHIRIMEN から Node-REDにMQTTでデータを投げる
# はじめに
chirimen の Node.jsからNode-REDにMQTTでデータを投げるテストです。
chirimenとNode-REDは同じRaspberry Pi上に構築してあります。
MQTTブローカーはNode-RED上に立てます。
([Node-REDのインストールなどはこちらの記事](https://qiita.com/airpocket/items/d9b996238a14a800ecf4))# MQTTとは
MQTTとは端末間やプログラム間でデータを送受信するとても便利な通信方法です。送信側をPublisher、受信側をSubscriber、送受信を仲立ちする役目をBrokerと呼びます。あるプログラムから別のプログラムへとデータを送りたい場合、送る側(Publisher)はblockerに対してデータを送信します。出たにはTopicという情報を付加して送ります。
一方で、そのデータを受信したいプログラムは(Subscriber)は、どのTopicのデータを受け取りたいかを事前にBrokerに通知しておきます。
Brokerは届いたデータのTopicを確
yarn での parse エラー解決方法
yarn を使ってビルドしていたら、原因不明の parse エラーに悩まされました。
結論としては、ビルド時のキャッシュがおかしくなったっぽく、キャッシュや node_module ディレクトリを削除してビルドし直せば治ります。
キャッシュを削除するって初歩的なところでしたね?
## エラーの例
例えば [storybook](https://storybook.js.org/) を使ってプロジェクトを作っていて、いきなり以下のようなエラーに悩まされました。
ローカルでは全く問題なくビルドできていたのです。
“`
[ssh@example.com]$ NODE_OPTIONS=–max_old_space_size=4096 yarn build-storybook:coding
yarn run v1.22.19
$ BASE_PATH=/storybook build-storybook -o dist/storybook
info @storybook/vue3 v6.5.10
info
info => Cleaning outputDir: /var/ww
Nuxt.jsでfakerを使って日本語ダミー文章を生成する
公式サイト
https://fakerjs.devGithubはこちら
https://github.com/faker-js/fakerインスコ
“`
npm install –save-dev @faker-js/faker
“`メソッド一覧(公式Githubより)
“`
Module Example Output
Address faker.address.city() Lake Raoulfort
Animal faker.animal.cat() Norwegian Forest Cat
Color faker.color.rgb() #cdfcdc
Commerce faker.commerce.product() Polo t-shirt
Company faker.company.companyName() Zboncak and Sons
Database faker.database.engine() MyISAM
Datatype faker.datatype.uuid() 7b16dd12-935e-4acc-8381-b1e457bf0
React(Node js + MySQL)の構成でアプリを作成をしました【簡単なCRUDアプリケーション】
## 環境の準備
“`
mkdir <ファイル名>
cd <ファイル名>
npm init -y //package.jsonファイルを作成
npm i express mysql2 sequelize cors
npm i –save-dev nodemon
“`
“`
//新しいtarminalを作成する
npx create-react-app <ファイル名>
cd <ファイル名>
npm i react-router-dom axios bulma
“`## コンポーネント・ファイル構成
“`
backend
├─ config
└── Database.js
├─ controllers
└── UserController.js
└── models
└── UserModel.js
frontend
├─ src
├─ components
├── AddUser.jsx
├── EditList.jsx
睡眠不足が続いているので、永久の眠りにつかせてくれる世界を作った
## 永久の眠りにつきたい
睡眠不足が続くと、もう永遠に眠りたい衝動に駆られます。
そんなとき、こんなものを発見しました。これがあったらもう会社に行かないでも良いのではとさえ思える!笑
アラーム設定しているのに、それをあえて消す発想が面白い!睡眠大切これ絶対?#protoout #無駄づくりhttps://t.co/wRPnhVA139— Umemoto Ryota (@UmeUmeTanTanR) October 8, 2022
これ、アラームが鳴ったらスヌーズを押して、永久にスヌーズにする装置なんです。
衝撃的なのは、アラームをつけているのに、消すんです!!
私はこれをみた時に、 **これだ!** と思いました。
いわばこれは、己の意志とは関係なく、アラームが消されるわけですよね?つまり、誰が悪いわけではなく、ただそういう世界なだけなんです。これで起きなくても誰も責めることはできないはず!:heart_eyes:(それはない?)つまり、**「私自身は起きようとしている、だけど世界がそれを許してくれないならずっと寝ててもいいんじゃないか?」**
私はそんな世界を目指しました。
## やりたいこと
手元にあるものでできることを考えた結果、**自動照明OFF装置**を作ることにしました。
イメージとしては、朝起きて部屋の明かりをつけようとしたら、永遠に照明を
依存パッケージの脆弱性修正には、package.jsonのoverrides / resolutionsフィールドを使いましょう
## はじめに
この記事は、npmとyarnの依存関係ツリーを上書きする`overrides` / `resolutions`フィールドの使い方を共有するためのものです。
### 想定する環境
– node.js 16.17.1
– npm 8.15.0
– yarn v1.22.19:::note warn
overridesフィールドは、npm [v8.3.0](https://github.com/npm/cli/releases/tag/v8.3.0)で導入されました。それ以前のバージョンでは動作しません。
::::::note warn
この記事は[yarn v1](https://classic.yarnpkg.com/lang/en/)系統を対象としています。[yarn v2+](https://yarnpkg.com/)では挙動が変わるかもしれません。各自でご確認ください。
:::## 依存関係ツリーを上書きして脆弱性に対応する
依存パッケージが以下のような状態だと、セキュリティ更新に追従するのが難しくなります。
– 脆弱性を持ったパッケージに依存
RPi + CHIRIMEN + Node-REDの環境づくり
# はじめに
Web IoT MakersというIoTの演習+ハッカソンイベントでCHIRIMENというJavaScriptでRPiを動かせるフレームワークを学びました。
Web系のエンジニアの方はJavaScriptですいすいコーディングできるのだと思うのですが、すこしでも楽をしたいのでNode-RED環境も作って併用する環境を作ってみます。
少々回りくどいですが、CHIRIMENのコア部分はWeb I2C APIとWeb GPIO APIです。htmlでUIを使ってJSのAPIでセンサやGPIO制御してMQTTでデータをNode-REDに投げてごにょごにょするイメージです。# CHIRIMEN用のマイクロSDを作る
CHIRIMENの基本的な情報は次のサイトを参考にしてください。
https://chirimen.org/
https://tutorial.chirimen.org/pizero/#chirimen–1
https://chirimen.org/chirimen/gc/top/examples/起動用のmicro SDカードの作り方はこちらです。
ht
【緊急】トイレの蓋を閉め忘れ彼女にブチギレられたので、obnizを使って解決しにいった話
# やばい状態です
現在、彼女と半同棲しているのですが、人間が共に暮らすと様々な問題が発生します。
我々の場合、それはトイレで起こりました。
僕はとてもズボラな人間で、よくトイレの蓋を閉め忘れてしまいます。
僕自身、「だから何?」程度の話なのですが、彼女はそれを許すことができないようで、この世の終わりくらいキレ散らかします。いつもならば彼女に平謝りをして許して頂いているのですが、あまりに改善されないので、ついに彼女が僕に対して「制裁」を始めました。
**晩ご飯が豆腐とキムチだけになったのです、、、、**
さすがにいつか死んでしまう気がするので、緊急でなんとかしようと躍起になっております。# インスパイアを受ける
そんなとき、これを見つけました。https://twitter.com/togenkyoo/status/1413742448036126722?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1413742448036126722%7Ctwgr%5E1706c5c7d80f021a34cfa6953b83e
node-configのlocal.json
# はじめに
[node-config](https://github.com/node-config/node-config) が `NODE_ENV` の言うことを聞いてくれなくて困ったことがあったので記録しておく。# 起こったこと
`NODE_ENV` の値は `dev` になってるのに、どうしても`local.json`の値が読み込まれてしまう# 原因
仕様だった。local.jsonとかlocal-xxx.yamlとかそういうのを設定ファイルに含めると、`NODE_ENV`の値に関係なく必ずそいつを読み込むらしい → https://github.com/node-config/node-config/issues/685「この仕様のおかげで、ローカルではテスト通ってたのにプッシュしたらテスト通らない みたいなことがなくなるよ」などと言っている → https://github.com/node-config/node-config/wiki/Configuration-Files#local-files
# おわりに
https://github.com
VercelでLineボットを作って総理大臣の名前を暗記するゲームをやってみる
今までQiitaに3つ記事を書いたんですけど、そいつらが時代に取り残されている気がしてたんですよ。エラストテネスとか紀元前3世紀じゃねえか。だから今回はちょっと若くなろうと思って、Lineボットを作ってみました。内容はシンプルです。スクレイピングしてきた内閣総理大臣の一覧を使って、古今東西・内閣総理大臣の名前ゲームをしてくれるチャットボットです。
ボットが句読点打ってる時点で若くないかもしれん
MySQLのテーブルのデータをJson形式で出力(エクスポート)する
MySQLのテーブルのデータをJSONで出したくなり、その際に作ったスクリプトを紹介します。
Node.jsで書きます。
“`bash
root
|- docker-compose.yml
|- node-script/
|- package.json
|- export-mysql-data.js
|- db.js“`
まずは docker-compose ファイルを用意して、環境を整える。
“`yml:docker-compose.yml
version: “3”
services:
# #######################################
# # Script
# #######################################
script:
image: node:16
working_dir: /usr/src/app
volumes:
– ./node-script/:/usr/src/app
tty: true# #######
Vue.jsで文字列をBase64に変換する方法
## 概要
– Fitbitのアクセストークンを更新する際に `client_id:client secret` をBase64に変換する必要があったので、やり方を備忘録として残します。**Fitbitの公式ドキュメント**
[Fitbit Developer – Refresh Token](https://dev.fitbit.com/build/reference/web-api/authorization/refresh-token/)## 環境
Windows10
Vue.js 3## やり方
#### 1. ターミナルでnpm install ####
“`terminal:powershell
npm install buffer
“`#### 2. 変換コード ####
“`javascript:Sample.vue
import { Buffer } from ‘buffer’// base64にエンコード
const beforeText = “HogeTaro:example”
const afterText = Buffer.from(
Volumio3(Raspberry Pi)でRadikoを再生する環境構築
はじめまして、mOqOmです。
突然ですがVolumioでRadikoを再生したいですよね!
有志の方が作成したvolumio_jpradioだと私の知識が足りなく起動ができず困っていたのでNode.jsに移植してみました。
20221010時点ではダウンロード機能はないですが、サービスとして自動起動設定を行うことも可能となっています。早速ですが、volumio_jpradioをNode.jsに移植した私のvolumio_jpradioについてのインストール方法を記載したいと思います。
まずインストールする環境は以下の通りとなっています。
※npmは後述の手順でアップデートを行い、その他のバージョンについてはVolumio3(Ver:3.378)をインストールした環境のままのバージョンです。
以前のバージョンではインストールされていなかったffmpegがデフォルトでインストールされているので手順を飛ばしています。
### 動作環境
+ Raspberry Pi 4 Model B(Raspberry Pi Zeroも同じ手順で可能)
+ Volumio3(Ver:3.378)
+
クラスオブジェクトの@Expose()ってなに?
# はじめに
API開発を進めていく中で、クラスオブジェクトの定義の中になにやら`@Expose()`という呪文が書いていたので調べてみることにしました。また、過去にはclass-transformerの概要についても書いてみました。
https://qiita.com/enomoto11/items/aa9c9faa508b3aed6540
# plainToClass()関数
まず、(プレーンオブジェクトを要素とする)連想配列usersと独自に定義したUserクラスがあるとします。
“`index.ts
import { plainToClass } from “class-transformer”;const users = [
{
id: 1,
firstName: “Johny”,
lastName: “Cage”,
age: 27,
},
{
id: 2,
firstName: “Ismoil”,
lastName: “Somoni”,
age: 50,
},
{
id