毎回忘れててググっているのでメモ
# 環境
MacOS 12.5.1
Volta 1.0.8
# 事象
`node`コマンドが通らない
“`terminal
% node -v
zsh: command not found: node
“`
# 解決策
PATHを通す
“`~/.zshrc
︙
export VOLTA_HOME=”$HOME/.volta”
export PATH=”$VOLTA_HOME/bin:$PATH”
“`
# 参考
https://zenn.dev/taichifukumoto/articles/how-to-use-volta#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%95%E3%82%8C%E3%81%9F%E3%81%93%E3%81%A8%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B
# プロローグ
きっかけは[こちら](https://qiita.com/XBRLJapan/items/27e623b8ca871740f352)のEDINET APIに関する記事を読んだこと。内容としては、EDINET APIを活用して任意の期間にEDINETに提出された有価証券報告書をローカルに一括ダウンロードするというもので、他で読んだ記事の内容と合わせると、応用すれば特定の業種とか特定の企業の提出書類とかに絞ってダウンロードする、とかも出来そうだなといった感じだった。
けどワイ、pythonはちょっと触ったことあるだけで、全然詳しくない。イチから勉強する時間もないしめんどくさくもあるので、自分が使い慣れているNode.jsを使って、まずは記事で紹介されていることと同じことを実現してみることにした。元ネタの記事だと有価証券報告書のzipファイルをダウンロードしてくるとこまでだったんだけど、今回はそれを解凍してフォルダに配置して、zipファイルのほうは削除するというとこまで実装してみたンゴ。
# ソースコード
先に今回のソースコードをお見せするンゴね。今回は2019年1
Python
Node.js
api
promise
EDINET
# はじめに
Webアプリケーションではsessionを用いることが多いと思いますが、前回の記事で触れたように`express-session`のデフォルトの実装を用いる場合はメモリにsessionの情報を保持するため、アプリケーションの再起動等で情報は失われてしまいますし、アプリケーションのインスタンスが複数ある場合などに問題が起きるため、プロダクションでは外部のデータストアを用いることになると思います。この用途にはRedisが使われることが多いようですが、IBM Cloudでは(2022年1月現在)RedisにLiteプランがないため、最小構成でもそこそこのコストがかかることになり、実験には向かないようです。そこで今回はIBM Cloudantをsessionのストアとして用いることを検討してみます。
# IBM Cloudant
[IBM Cloudant](https://cloud.ibm.com/catalog/services/cloudant)はJSON document databaseです。IBM Cloudのコンソールから検索するなどしてトップページを開き、L
Node.js
Cloudant
ibmcloud
## Result型って何ですか
RustやSwiftだと馴染み深い`Result`型とは、その名の通り**結果**を表すものです。
TypeScriptだとその実装例として以下のものを私は使用しています。
“`tsx
export type Result =
| { ok: true; value: T }
| { ok: false; error: E }
export const Ok = (value: T): Result => ({
ok: true,
value,
})
export const Err = (error: E): Result => ({ ok: false, error })
“`
## どう活用できるんですか?
エラーの種類に応じて処理を変えたい場合に相性良く活用できます。
例えば、Sign in処理を行う際に、ユーザーのリクエストが不正である場合と、それ以外のネットワーク起因の場合とで処理を使い分けたいときを想定してみます。
# オーバーレイを押してモーダルを非表示にする
VuetiflyでOverlayを押した時にモーダルを削除する方法
## 発生したエラー
dialogをtrueにしてモーダルを表示してオーバーレイを押すとエラーが発生する
![スクリーンショット 2021-11-14 19.16.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2230428/6187684e-a1cd-ff5b-c759-7d854e1fffd6.png)
## 解決策
リファレンスに書いてある
https://vuetifyjs.com/ja/api/v-dialog/#events-click:outside
**click:outside : **アクティブなダイアログの外側をクリックしたときに発生するイベント
### 使い方
“`
子
~~~~~~~~~~~~~~
[ニフクラ mobile backend](https://mbaas.nifcloud.com/)では認証やデータストア(クラウドデータベース)、ファイルストア(ファイルストレージ)、プッシュ通知など様々な機能があります。そして、サーバーレスで拡張できるスクリプト機能もあります。
しかし、実際のアプリ要件は多彩で、場合によっては他にも様々な機能が望まれます。すべての需要を満たすのは困難な場合もあります。そこで、NCMBのフロントとして動作するプロキシソフトウェアを開発中です。
このプロキシを使うことによって、小さなニーズはプロキシ側で実装できるようになります。今回は個人的に欲しかった「署名なしでのスクリプト実行」について解説します。
## 追加する機能(予定)
現状は透過的なプロキシでしかありませんが、以下のような機能を実装する予定です。
– 認証をJSON Web Tokenに
– GitHub認証
– ソーシャル認証(標準ではサーバー認証が必要ですが、プロキシだけで認証できるように)
– WebSocket(リアルタイム通信)
– Webhooks
– 署名なしでデータ
現在編集中
# 開発環境
– Windows11
– Azure Functions Core Tools (記事中で解説・インストール)
– VSCode +拡張機能
– Azure Functions
– Node.js +npmパッケージ
– Playwright-chromium
– Ubuntu (WSL2 (Windows Subsystem for Linux))
# AzureFunctionsの作成
## 関数アプリの作成
Azure Portalから、関数アプリを作成する。
主要な設定項目:
– 基本
– ランタイムスタック:Node.js
– バージョン:16 LTS
– 地域:Japan East (Westだとうまくいかない?)
– __オペレーティングシステム__ : __Linux__
– (プランの種類:消費量/サーバーレス)
– ホスティング
– ストレージアカウント:(新規作成)
– 監視
– Application Insights:(新規作成)
以上の通り設定して、作成
Node.js
VSCode
AzureFunctions
Playwright
## 目次
1. [目次](#目次)
1. [前書き](#前書き)
1. [本題](#本題)
1. [GraphQLサーバとスキーマ定義を分離する](#graphqlサーバとスキーマ定義を分離する)
1. [スキーマ定義用のGitHubリポジトリを作成する](#スキーマ定義用のgithubリポジトリを作成する)
1. [GraphQLサーバでGitHubからスキーマ定義を読み込む](#graphqlサーバでgithubからスキーマ定義を読み込む)
1. [まとめ](#まとめ)
## 前書き
### 経緯
GraphQLを使ってアプリケーション開発を試していたところ、
GraphQLサーバとスキーマ定義が一体化していると開発しづらいと感じたため、
分離する方法を調査して試してみました
### 対象読者
– GraphQLサーバとスキーマ定義を分離したい人
– Node.jsを使用してGraphQLサーバを構築したい人
– graphql-toolsを使用している/使用を検討している人
– GitHubを使用してリポジトリを管理して
## 初めに
Expressのエラーハンドラは存在しないパスにアクセスした時のエラー(404)はハンドリングしてくれません。
じゃあどうしたらいいか? を調べたのでここにまとめます。
## サンプルファイル
ここにExpressを使ったserver.tsファイルを用意します。
ポート3000でサーバを起動し、/usersというルータのみ用意しています。
“`js
import express from “express”
const app: express.Express = express()
// サーバ起動
app.listen(3000, () => {
console.log(“Start on port 3000.”)
})
// ユーザ一覧
app.get(“/user”, (req: express.Request, res: express.Response) => {
res.send(“OK”)
})
“`
## エラーハンドラを定義してみる
Expressでデフォルトのエラーハンドラをミドルウェアに用意するなら一番下に以下を追記
Node.js
TypeScript
Express.js
InversifyJS
Vuepressのプロジェクトをリポジトリから取得し、“npm install“したときに標題のエラーが出たので、その対処をメモしておきます。
以下は実際のエラーです。
“`
$ npm install
npm ERR! code ERR_SSL_DECRYPTION_FAILED_OR_BAD_RECORD_MAC
npm ERR! 5228:error:1408F119:SSL routines:ssl3_get_record:decryption failed or bad record mac:c:\ws\deps\openssl\openssl\ssl\record\ssl3_record.c:677:
:
npm ERR! A complete log of this run can be found in:
npm ERR! 【..local npm log dir..】\2022-09-29T02_57_10_549Z-debug-0.log
“`
エラーが出た環境は以下になります。
|名称|バージョン|備考|
|:-|:-|:-|
|OS|Windo
## はじめに
現在Expressのエラーハンドリングについて勉強しており、その為に公式ドキュメントを閲覧していました。
https://expressjs.com/ja/guide/error-handling.html#%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E5%87%A6%E7%90%86
「デフォルトのエラー処理ミドルウェア関数は、ミドルウェア関数スタックの最後に追加されます。」という記述があり、この「ミドルウェア関数スタック」が原因で頭を悩ませることになりました。
概要だけご説明すると「スタック」 の意味が分からないという話です。
## Expressのミドルウェアについて
※本題からずれるのでExpressのミドルウェアとは何かなどの説明は省略します。
app.jsが読み込まれたときにuseメソッドやmethod(get,post,put,delete)メソッドによりミドルウェア関数がスタックに追加されます。そ
## Node.jsとは
JavaScriptを**PC上**で動かすための実行環境です。
**ブラウザ上**で動くことが有名なJavaScriptですが、Node.jsをPC上にインストールすることで、PC上でもJavaScriptが動作します。
詳しく知りたい人は[公式サイト](https://nodejs.org/ja/about/)をご確認ください。
## nodebrewとは
Node.jsのバージョン管理ツールです。
複数のバージョンを管理することができます。
## インストール方法
2種類のインストール方法があります。
1. 公式サイトからのインストール
2. nodebrewを利用する(今回の方法)
今回は、2の方法でNode.jsをローカル上にインストールします。
1の方法は↓をご確認ください。
https://qiita.com/s_yamaoka927/items/4fd8dacffa73bd64de1b
## 手順
以下の手順でNode.jsをインストールします。
1. nodebrewをインストールする
2. Node.jsをインストールする
#
JavaScript
Mac
Node.js
インストール
nodebrew
## Node.jsとは
JavaScriptを**PC上**で動かすための実行環境です。
**ブラウザ上**で動くことが有名なJavaScriptですが、Node.jsをPC上にインストールすることで、PC上でもJavaScriptが動作します。
詳しく知りたい人は[公式サイト](https://nodejs.org/ja/about/)をご確認ください。
## インストール方法
2種類のインストール方法があります。
1. 公式サイトからのインストール(今回の方法)
2. nodebrewを利用する
:warning:
今回は、1の方法を行いますが、本格的な開発にはオススメしません。
Node.jsのバージョンが変わると、予期せぬバグを引き起こす可能性があるためです。
本格的な開発では、バージョン管理ができる、2の方法をおすすめします。
2の方法は↓をご確認ください。
https://qiita.com/s_yamaoka927/items/cf1bbd755c5636c3ce35
## 手順1
以下の公式サイトに行き、『ダウンロード macOS (x64)』の**推奨版*
JavaScript
Mac
Node.js
インストール
初心者向け
大きく分けて3つある
Module
@Moduleデコレータのプロパティ
・providers: @Injectableデコレータが付いたクラスを記述
・controllers @Controllerデコレータが付いたクラスを記述
・imports: モジュール内部で必要な外部モジュールを記述
・exports: 外部のモジュールにエクスポートしたいもの
以下はサンプル
・ユーザー機能を作成したとする
“`app.module.ts
import { Module } from “@nestjs/common”;
import { AppController } from “./app.controller”;
import { AppService } from “./app.service”;
import { UsersModule } from “./users/users.module”;
@Module({
imports: [UsersModule], // 作成したUsersMo
# ■はじめに
郵便受けを実際に見に行かなくても投函物の有無を確認できるIoT装置を初心者が奮闘しながら作成してみました。
IoT初心者の方でも読みやすくなるような執筆に努めていますが、なにぶん初心者の文書になりますので、温かい目で読んでいただければ嬉しく思います。
# ■こんなもの作りました
郵便受けの底に重量センサー(ロードセル)を置き、プログラムを実行しておくことで、LINE BOTから投函確認されたときに投函有無を返答するものを作りました。
0gより軽いときに投函確認すると「投函物はありません」と返答してくれ、
0g以上のときに投函確認すると「投函物があります」と返答してくれました。
https://youtube.com/shorts/XT1WT0I6q4o?feature=share
動画は以下の順で確認し
Node.js
初心者
IoT
LINEmessagingAPI
obniz
# 始める前に
[この記事中](https://qiita.com/riversun/items/7f1679509f38b1ae8adb)の「マニュアル(手動)で修復する」が発生したらこの記事を進めてください.
# 脆弱性の確認
npm auditで脆弱性(vulnerability)のあるパッケージをリストする.
~~~bash
$ npm audit
~~~
実行結果(例)
~~~
=== npm audit security report ===
┌──────────────────────────────────────────────────────────────────────────────┐
│
Herokuがサービス終了するけど、類似サービス多すぎじゃね?
と思ったので、まとめさせていただきます。
GithubからそのままあげられるPaasです。
胡散臭いサービスが多すぎる
Qiitaでも、類似の記事を書いている方はいますが、サービスの数が多く判断しきれません。
また、リンクを踏んでみると、チープなサイトが多く、データを預けるには怖いっす。
結果選んだサービス
・[cyclic.sh](https://www.cyclic.sh/)
・[render](https://render.com/)
・digitaloceanで[dokku](https://dokku.com/docs/getting-started/installation/)
cyclic.sh
1番おすすめだけど、難点も
◇メリット
性能が高い
デプロイが早い
常時起動
無料でもドメイン名を変更できるらしい?
Node.js
Heroku
Paas
SPA
デプロイ
# はじめに
勉強がてら家計簿アプリを作成していた際に詰まった事柄のメモです。
アプリが持つ機能として”毎月のクレジットカード明細を画面上からアップロードできる”機能を持たせようとしていて、
クレジットカード明細は毎月大体100件前後のデータだったので、
画面でポチッとアップロードボタンを押すとすぐ登録処理が完了してほしいと考えていました。
# いざ実装しようとしてみると・・・
ググってみるとDynamoDBで複数件まとめてデータ登録するには”BatchWriteItem”を利用すればよいと分かったので、
100件ほどのデータをBatchWriteItemでputすると下記エラーにぶち当たりました。
“`
at ‘requestItems’ failed to satisfy constraint: Map value must satisfy constraint: [Member must have length less than or equal to 25, Member must have length greater than or equal to 1]”
“`
# どうしてPythonとC言語を戦わせる必要があるのか?
>まず最初に言っておかなければなりません。
>この戦いは、完全に私の勝手な想いによって始まりました。
>だから、PythonもC言語も悪くはありません。
#### 皆さん、Pythonって聞くとどんなことを想像しますか?
– 機械学習ができる
– Webサイトのスクレイピングができる
– 初心者が入りやすい
– **なんかかっこいい**
#### はい、ではC言語は?
– 初心者殺しの異名を持っている
– セミコロンを殺したくなる
– 意味わからないエラーが〇キブリみたいに出てくる
– **なんか嫌い**
– ~~臭い、汚い、きつい~~
これが __現実__ です。
簡単に言うとみんな __Pythonが大好きで、C言語は大嫌い__ 、、、
扱いづらいと思われているC言語ですが、実はあらゆる場所で使われているんです。
例えばみんな大好きPythonだって、C言語を元に作られているんですよーってね:sparkling_heart:
私は業務でC言語を扱っているため、C言語とは相棒みたいなものです!(~
Python
C
Node.js
api
LINEmessagingAPI
## いちいちコード書くのは面倒くさいと思った
### 経緯
個人の趣味のブログサイトでイラスト公開のページを作成した際、**Next.js**の``で画像を表示していました。
ただ`
`のレイアウトをコンポーネント化したのに、画像が増える都度に**Props**でパスを渡しながらコンポーネントを増やしていくのは、**まだ運用していないにも関わらずちょっと面倒だなと思った次第**です。
というかせっかく記事はNotionをCMSとして更新できるので、**画像の更新もコードいじりたくない**と。
### 案1:NotionAPIで取得
**記事内の画像は普通にNotionAPIで取得している**ので、ここの画像もNotionAPIで取得するということも考えました。
ただ、APIで取得した画像の仕様として1時間でリンク切れになってしまうのを画像置場で使うのは。。。
また``と違って自動最適化に対応しないので却下。
### 案2:S3などに置く
そもそも趣味でちょっとブログ書きたかっただけで、メインは画像ではないのでそこまでのコ
JavaScript
Node.js
glob
React
next.js