- 1. Nodejsでマイナンバーカードを使ったログインと認証をやってみる(PKCS11js,X509,OpenSC,crypto)
- 2. 雀魂の画面から画像認識で対戦情報を持ってくる(Vol. 1)
- 3. VS Codeでnpm script をタスク登録しておくと便利だよ (ターミナルから実行している人へ送るTips)
- 4. githubのスター数の一覧を取得するスクリプト
- 5. Node.jsの基本操作
- 6. 私のNodeJS+TypeScriptプロジェクト初期設定手順
- 7. 実験的なJavascriptの仕様であるECMAScript throw expressionsを利用してみた ESLintの設定も
- 8. nodemailerとGmailと2段階認証
- 9. Twitter Api 登録から使用まで node.js win10
- 10. パスワードを保存する時に最低限やるべき事 不可逆暗号(ハッシュ)化
- 11. Twitter APIを使ってツイートしてみた
- 12. 国際信州学院大学をSeleniumで、スクレイピングする【TypeScript】
- 13. 【Express】ESM方式でimportするときにルーターを使う方法
- 14. npm WARN config global `–global`, `–local` are deprecated. Use `–location=global` instead.が出た時の解決策
- 15. Docker-compose3でnode.js&express&mongodb&nginxの環境を整える[完全版]
- 16. AWS IoT Coreにブラウザから様々な認証方法で接続してみる
- 17. Node(npm)でWebpackコマンドでエラーになる
- 18. 地震情報を簡単に扱いたい!
- 19. 【対応メモ】npm WARN config global `–global`, `–local` are deprecated. Use `–location=global` instead.
- 20. arraybuffer 画像を FormData で Node.js サーバにアップロード
Nodejsでマイナンバーカードを使ったログインと認証をやってみる(PKCS11js,X509,OpenSC,crypto)
# はじめに
電子証明書には署名用と利用者証明書用の2種類があり、pkcs11jsを使えばマイナンバーカードから利用者証明書用電子証明書が取得することができます。利用者証明書は「ログインした者が、利用者本人であること」を証明し、インターネットサイトなどにログインする際のセキュリティをより強固なものにできます。
今回はコマンドライン上のみの実行ですが、マイナンバーカードを使った認証サーバーを開発することをイメージしながらコーディングしています。
# 目次
1. [PKCS11jsの読み込み](#pkcs11js)
1. [認証のチャレンジデータを生成する](#Chapter1)
1. [カード内の秘密鍵でチャレンジデータに署名](#Chapter2)
1. [カードから利用者証明書を取得](#Chapter3)
1. [利用者証明書を検証する](#Chapter4)
1. [利用者証明書の公開鍵で署名を検証する](#Chapter5)
1. [利用者証明書の属性を印字する](#Chapter6)
1
雀魂の画面から画像認識で対戦情報を持ってくる(Vol. 1)
[前回の記事](https://qiita.com/xenepic_takku/items/f25a97735a90546d1451)
# 前回までのあらすじ
> 1. 雀魂の画面のスクリーンショットを持ってくる
> 1. OpenCVのテンプレートマッチングでスクショから牌姿情報を持ってくるという方針を決めたのはいいものの、いきなり1. でつまづく。
雀魂のスクショを取ってこれないのである。
[参考にした記事](https://qiita.com/hiro0156/items/51ab267f4f47f2f8fe76)だとスクショなんてスッと取ってきてるんだけど、node.jsになると途端に難しいらしい。# スクショ難民
さて、色々調べた時に巡回したページを挙げる。> C#での画面キャプチャの取得方法を徹底解説!
https://www.fenet.jp/dotnet/column/language/4633/> Pythonでスクリーンショットを取得して指定フォルダに保存する
[URL長いので省略](https://office54.net/python/app/p
VS Codeでnpm script をタスク登録しておくと便利だよ (ターミナルから実行している人へ送るTips)
# 概要
* みなさんnpm scriptの実行どうやってますか〜?
* 僕は普段は、VS Codeのターミナルからコマンドを直接打って実行しています。
* ただ、npm scriptが増えてくるとあれ、、あのコマンドなんだっけってなることあると思うんですよね、あとはプロジェクトごとにnpm scriptも変わってきますし、
* 今回はそんな人へ送るVS Code活用術について記事にしてみました。(織田さん、このTips教えていただきありがとうございますw)# VS Codeでnpm script をタスク登録
* npm scriptってやりたいことが増えると、下記のようにめっちゃ増えていきますよね、
* そうすると実行時に、あれ。。なんだっけってなりがちです。“`json
{
“scripts”: {
“start”: “hogehoge”,
“build”: “hogehoge”,
“prebuild”: “hogehoge”,
“postbuild”: “hogehoge”,
githubのスター数の一覧を取得するスクリプト
# 背景
githubのリポジトリのスター数を色々比較して見たかったので出力できるスクリプトを作ってみた。# 実行方法
## 事前準備
– inファイルを用意しておく
– 対象リポジトリ名一覧を記述
– .envファイルを用意しておく
– GITHUB_TOKENを定義
## 実行
“`console
$ yarn add ygor @octokit/core fs readline dotenv
$ node task.js output_star
“`# コード
https://gist.github.com/tashua314/3ecdfb83b5aa4a924c1209471c00ef42
“`javascript:task.js
/**
* `https://github.com/{owner}/{repo}` のownerとrepoの情報をまとめたファイルを読み込み、
* スター数一覧を追記したファイルを出力する。
*
* # 実行例
* node task.js output_star
*
* # inファイル例
* “`
Node.jsの基本操作
Macで動作確認済み
### Node install 確認
node -v
v18.2.0
私のNodeJS+TypeScriptプロジェクト初期設定手順
# この記事について
NodeJS環境で実行するサーバサイドアプリケーション開発において
新規プロジェクト(リポジトリ)に TypeScript、フォーマッタ(Prettier)、リンタ(ESLint)、単体テストツール(Jest)を導入する手順のメモ
※適宜加筆修正を行っていく予定# 手順
## package.json の生成
“`sh
npm init -y
“`## TypeScript の導入
TypeScript本体とNodeJS組み込み機能の型定義パッケージをインストール
“`sh
npm install –save-dev typescript @types/node
“`### tsconfig.json を設定
以下のコマンドで、コメント付きの tsconfig.json ファイルが生成されるのでいくつか設定を変更する
“`sh
npx tsc –init
“`以下の設定例ではソースコードを src ディレクトリ、生成物を dist ディレクトリに配置する設定となっている
“`json:tsconfig.json 設
実験的なJavascriptの仕様であるECMAScript throw expressionsを利用してみた ESLintの設定も
## 以下の記事を参照して頂ければと思います
https://note.com/shift_tech/n/n2a3b9bab4c50
## 補足
ソースコード全体は以下。https://github.com/yuta-katayama-23/node-express/commit/64bae9571175e44eaf3a63d7805d50e09cade55c
以前、[ところでwebapckでESLintが動くというけどタイミングは?](https://qiita.com/yuta-katayama-23/items/5d73bbe79c19301551df#%E3%81%A8%E3%81%93%E3%82%8D%E3%81%A7webapck%E3%81%A7eslint%E3%81%8C%E5%8B%95%E3%81%8F%E3%81%A8%E3%81%84%E3%81%86%E3%81%91%E3%81%A9%E3%82%BF%E3%82%A4%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AF)において、ESLintが実行されるコードがトランスパイ
nodemailerとGmailと2段階認証
2段階認証を使っているGmailのアカウントを使ってnodemailerでメールを送ろうとしたら詰まったので、自分用の備忘録メモ。
## nodemailerでGmailからメールを送りたい
nodemailerでGmailを使ってメールを送る場合はこんな感じのコードでできる。“` js
const nodemailer = require(‘nodemailer’);async function sendEmail() {
const transporter = nodemailer.createTransport({
service: ‘gmail’,
auth: {
user: process.env.EMAIL,
pass: process.env.EMAIL_PASS,
},
});const mailContents = {
from: process.env.EMAIL,
to: process.env.TO_EMAIL,
subject: ‘Test Mail’,
Twitter Api 登録から使用まで node.js win10
ツイッターアカウント持ってれば割とすぐ終わると思います。
お試しでAPIを打つだけなら、Twitterアカウントにアプリを連携するだけでブラウザからAPIを打てた。
https://oauth-playground.glitch.me/?id=createTweetAPI利用申請は0分で終わったので、緩くなったのかもしれないです。
登録作業は下記を参照
https://qiita.com/kzthrk/items/84acb969dc0b23aeae58
API申請(これは英文不要の作業)
https://toxublog.com/blog/twitter_api_apply/ブラウザのjavascriptからAPIは使用できないので node.js をインストール(windown10)
https://qiita.com/echolimitless/items/83f8658cf855de04b9cePowerShellからnodeが使用可能になったら最初の記事にあるnode.jsの部分を参照してサンプル作成する。
※必ずエラーが出るはずなので、err
パスワードを保存する時に最低限やるべき事 不可逆暗号(ハッシュ)化
## はじめに
仮に自前で認証機能を実装する場合、パスワードを保存する際には最低限すべき事があり、それについて少し理解を深めてみたので備忘録を残す。※勉強中の身のため、誤りや理解不足等あるかもしれません。もしあればご指摘いただけると幸いです。
## パスワード保存時には不可逆暗号(ハッシュ)化をする
パスワード保存時にはそのままDBに保存するのは絶対NGで、[sha256](https://wa3.i-3-i.info/word15997.html)などの暗号学的に優れたハッシュ関数でハッシュ化するのが鉄則になる。そして、単にハッシュ化すればいいのではなく、ソルト(Salt)と呼ばれるランダムな文字列をパスワードに追加してハッシュ化する必要がある。理由としてはハッシュ化の方法が分かれば https://hashtoolkit.com/ のようなサイトで簡単に逆引きができてしまうため。
実際にどのようにパスワードを保存すればいいのか?だが、例えば以下のようなコードになるだろう(以下はORMの[Sequelize](https://sequelize.org/)を利用している時
Twitter APIを使ってツイートしてみた
## 背景
Node.jsを学び始め、APIを学び始め、
TwitterやQiita等でもアウトプットし始めた。ということで、
これらを纏めて一緒に触ってみよう。と思った今日この頃。笑## 前提
* Node.js(v16.14.2)
* Twitter開発者アカウント取得
1)Twitter画面右下の「・・・」の中にある「開発者」をクリック

2)Developer Portalで、sign upをクリック
3)名前、国、目的等を入力
また事前に、ChromeDriverとGoogle Chromeのインストールが完了していることを前提に行います。
## 使用技術
– TypeScript
– Node.js
– Selenium
– WSL2(Ubuntu)
## 初期化処理
– Google Chromeの設定:`init`
– スクレイピング先のURLの設定:`setUrl`“`ts
import { Builder, By, Capabilities, WebDriver } from ‘selenium-webdriver’;let webDriver: WebDriver | null = null;
/**
* 初期化処理
*/
const init = async () => {
webDriver = await new Builder()
// Chrome起動時のオプションの設定
.withCapabilit
【Express】ESM方式でimportするときにルーターを使う方法
# なぜESM方式を使ってるのか
ESM Moduleを使おうとしてpackage.jsonに`”type”: “module”`とやっているとrequireが使えないので# やり方
まずは普通にimportでやる
“`javascript:index.js
import hoge from “./hoge.js”;app.use(“/hoge”, hoge);
“`お次に`hoge.js`を書いていく
“`javascript:hoge.js
import express from “express”;
var router = express.Router(); //ルーターを生成router.get(“/puyo”, function(req, res){
//なんかの処理
})export default router;
“`完成
npm WARN config global `–global`, `–local` are deprecated. Use `–location=global` instead.が出た時の解決策
数日前に突然“`npm WARN config global `–global`, `–local` are deprecated. Use `–location=global` instead.“`なるエラーが出るようになった。
どうやらnpmをグローバルインストールしていると“`–location=global“`推奨のメッセージが出てしまうらしい。
npm8.12.1ではすでに修正されているので、“`npm -g update“`でアップデートすれば直るとのこと。(エラー時点では、8.11.0を使っていた)代替策としては、program Files > nodejsインストールフォルダ内のnpmファイルとnpm.cmdファイルを以下のように変更する。
“`diff_batchfile:cmd 23行目
– NPM_PREFIX=`”$NODE_EXE” “$NPM_CLI_JS” prefix -g`
+ NPM_PREFIX=`”$NODE_EXE” “$NPM_CLI_JS” prefix –location=global`
“`“`di
Docker-compose3でnode.js&express&mongodb&nginxの環境を整える[完全版]
# はじめに
これはある記事を参考にnode.jsとmongodbとnginxのDocker環境をcomposeでめっちゃお手軽に作ったろ、とか思ったらエラーしたため案外悪戦苦闘してしまった人の後日談です。
記事を書くとしたら、以下のURLをモロパクな感じになっちゃうと思って遠慮していた(というかダメ)なんですが、久しぶりに環境を整えようとしてみたら思ったよりもメンドクサかったので、備忘録という免罪符を元にモロパクしようと思います。
モロパクしようと思ったのですが、ついでにexpress-generatorを使用してテンプレートを利用してみようと思って、少し本家様の流れから改変しています。また、この記事はCentOS7をインストールした直後を想定していたりいなかったりしています。[引用]
https://zenn.dev/cizneeh/articles/nginx-node-mongo-docker-example#docker-compose.yml
# 環境
**2022/06/17**
・CentOS7
・Docker 1.13.1
・Docker-compose
AWS IoT Coreにブラウザから様々な認証方法で接続してみる
AWS IoT Coreとして、MQTT ブローカが実装されており、自身でブローカを立てる必要がないですし、ブラウザ向けのクライアントライブラリもあるので、楽です。
AWS IoT Coreの認証方法にはいくつかの種類がありますので、それらを実際に試してみます。状況に合わせて使い分けてみてください。
ちなみに、今回扱うのは認証方法であって、MQTT/WebSocket/Httpといったプロトコルの種類ではないです。プロトコルは、AWS IoT Core側は特に違いは意識する必要はないですし、クライアントライブラリも違いを最低限にしてくれています。
以下の認証方法を扱います。
① (まずはNode.jsから)AWS IoT証明書を使って認証する。
② IAM認証
③ IAM+AssumeRole認証
④ Cognito認証
⑤ カスタムオーソライザ<やること>
・AWS IoT Coreに認証して接続後、トピック名「test_sub」に対して、Subscribeします。
・いずれかのクライアントから、トピック名「test_sub」に対してPublishします。ソースコード
Node(npm)でWebpackコマンドでエラーになる
# はじめに
「TypeScriptハンズオン」という書籍を勉強するにあたって、書籍の環境構築手順をDocker環境で構築しようと考えました。
試行錯誤して1度できたのですが、なぜか2回目にやったときにコマンド実行でエラーが発生しました。そこで発生した事象が調べたところどこにもなかったのでまとめます。
# 問題
以下のようなエラーが発生しました。
“`
$ npx webpack-cli init
=> [webpack-cli] No commands found to run$ npx webpack-dev-server
=> const maxPort = 65_535でシンタックスエラー
=> webpack-dev-server syntaxerror unexpected token =のエラーもでた
“`前に1度作成したときにはできたのになぜか同じ手順を踏んでもできなくなっていました。
# 解決方法
原因はDockerで利用している`Nodeイメージ`が**古い**ことでした
`node:10`を古い記事をみて利用していました。これを`node
地震情報を簡単に扱いたい!
:::note warn
読みにくい記事に注意してください….。
:::## tl;dr
地震情報を簡単に扱えるようにするやつ## はじめに…
まずは皆さんに、P2PのAPIのすばらしさをば
・[WebScoketAPI](https://www.p2pquake.net/json_api_v2/#/)から送られてくるやつはJSONなので扱いやすい(最高)
・情報伝達がすごいほど早い
・すごい## 今回作った奴
https://github.com/akikaki-bot/p2pws_getter
今回はTypeScriptで大部分を書きました。TSは簡単なやつでしか書いてないので結構難しかった….。
## しくみ
## 感想
たのちかった。TypeScriptだいちゅき。
## Link
APIの本
ht
【対応メモ】npm WARN config global `–global`, `–local` are deprecated. Use `–location=global` instead.
Reactを使おうと思ったら
“`
npm WARN config global `–global`, `–local` are deprecated. Use `–location=global` instead.
“`
– npm 警告 グローバル設定 `–global`, `–local` は非推奨です。代わりに `–location=global` を使ってください。みたいな警告が。
## 調べてみる
調べてみると、こちらのstackoverflowの記事がヒット。
https://stackoverflow.com/questions/72401421/npm-warn-config-global-global-local-are-deprecated-use-location-glo
Windowsで起こる現象みたいですね…?
## 対応策
どうやら…**node.js**がインストールされているディレクトリ(**Program Files/nodejs**のはず)の中にある
– npm
– npm.cmd
– npx
– npx.cm
arraybuffer 画像を FormData で Node.js サーバにアップロード
LINE WORKS のトーク Bot を使って送信した画像をLINE WORKSのストレージからダウンロードして、 Node.js サーバーにアップロードするサンプルです。
LINE WORKSのストレージからダウンロードした画像はarraybufferの形です。
axiosを利用します。#### ダメなコード
“`
import Axios from ‘axios’;
const FormData = require(‘form-data’);……
try {
const lwResponse = await Axios.get(
‘http://storage.worksmobile.com/openapi/message/download.api’,
{
headers: {
consumerKey: consumerKey,
authorization: ‘Bearer ‘ + accessToken,
‘x-works-apiid’: apiId,
‘x-w