- 0.1. Electron Tips ~便利なモジュールや小技~
- 0.2. [Vulnhub]SHURIKEN: NODEの脆弱性診断
- 0.3. webpack×Babelでコード変換(トランスパイル)しているNode.jsのstack traceを読みやすくする
- 0.4. [aws-sdk S3] 署名付きURLの発行
- 0.5. 環境変数にアクセスする方法(Node.js)[メモ用]
- 0.6. Node.js が無理やり終了した時も処理したいときのメモ
- 0.7. ‘useFindAndModify’ が有効なオプションでない時のエラー (mongoose を使ってmongoDBに接続する)
- 0.8. Web Apps (Node.js) と MongoDB を連携させる
- 0.9. Webの勉強はじめてみた その26 〜Basic認証とCookie〜
- 1. Basic認証
- 1.1. http-auth
- 1.2. Node.js: 接種状況ダッシュボードのデータを使ってワクチン接種済者をカウントする
- 1.3. [Stripe Updates] NoCodeでオンライン決済を受け付ける”Payment Links(支払いリンク)”に、管理用APIが登場しました!
- 1.4. CentOS系へのNodeJSインストール手順
- 1.5. yarnのインストール(Windows)
- 1.6. Pythonスクレイピング【GCP – cloud functions – サンプルコード付】
- 1.7. localサーバー(localhost)を立ち上げる
- 1.8. Notion API + LINE + AWS Lambda他でメモ内容をLINEにしゃべらせる
- 1.9. VSCode+Textlintで文章校正をする
- 1.10. CORS(オリジン間リソース共有)とは?
- 1.11. Webの勉強はじめてみた その25 〜Heroku編〜
- 2. Herokuとは
- 3. サーバーの作成
Electron Tips ~便利なモジュールや小技~
Electronを使用した開発を最近行ったので、個人的に便利だったモジュールや小技などをまとめていこうと思います。
使用した**Electronのバージョンは15系**です。
## Electronのメインプロセス側の基本コード
基本のメインプロセスの構成はだいたい誰が書いてもこのようになると思いますので、こちらをベースに紹介していこうと思います。すべてのプラットフォームで動作する結合絶対パスを作成するためにnode.jsの標準モジュールである`path`を使用しています。
“`jsx:main.js
//だいたいこんな感じ
import path from “path”;let mainWindow;
const createMainWindow = () => {
mainWindow = new BrowserWindow({
width: 1200,
height: 800,
webPreferences: {
preload: path.resolve(__dirname, ‘
[Vulnhub]SHURIKEN: NODEの脆弱性診断
# はじめに
以下よりダウンロードできます。
https://www.vulnhub.com/entry/shuriken-node,628/
## 免責事項
:::note alert
本記事で紹介する内容は、教育目的または脆弱性について仕組みを理解し周知、啓発を行うためだけに作成しております。
記載されているコードを実行した場合の損害は一切責任を負いません。
また、ハッキング行為をいかなる稼働環境・サービスに対しても行わないでください。成功しなくても試みること自体が違法行為にあたる場合があります。
上記の内容を十分理解された方のみ本記事をお読みください。
:::また、本記事の記載内容で、法的または倫理的に問題があると思われる箇所、その他お気づきの点などがございましたら、お手数ですがコメント欄までお知らせください。
## SHURIKEN: NODEについて
> 難易度:易/中
前回の侵入事件後、Shuriken Companyはインフラを移転し再構築することを決定した。今回は異なる技術を使用し、安全性を確保することを保証している。果たしてそうだろうか?そうでないこと
webpack×Babelでコード変換(トランスパイル)しているNode.jsのstack traceを読みやすくする
## 以下の記事を参照して頂ければと思います
https://note.com/shift_tech/n/n3983a73de8a7
**※Qiitaの記事は全て個人的な記載であり、所属する組織団体とは無関係です**
## 補足
ソースコード全体は以下を参照。https://github.com/yuta-katayama-23/node-express/tree/114afff10ba36c33e1d85641e774245b740d1bae
[aws-sdk S3] 署名付きURLの発行
業務でS3の署名付きURL(GetObject)を発行を行いました。
備忘録として残しておきます。## 環境
Docker node:16-alpine
“typescript”: “^4.5.4”
“@aws-sdk/client-s3”: “^3.46.0”,
“@aws-sdk/s3-request-presigner”: “^3.47.0”,## 結論
“`typescript:s3.ts
import {
GetObjectCommand,
S3Client,
} from ‘@aws-sdk/client-s3’;
import { getSignedUrl } from ‘@aws-sdk/s3-request-presigner’;const client = new S3Client({
region: ‘ap-northeast-1’,
});/**
* 署名付きURLを発行する
*
* @param bucket
* @param key
* @param expiresIn
* @returns 署名付きURL
*/
環境変数にアクセスする方法(Node.js)[メモ用]
##手順
* npm i dotenv でインストール
* rootディレクトリに.envファイルと.gitignoreを作成
* require(‘dotenv’).config(); を記入
* .envファイルに他の人に知られたくない情報を書く (APYKEYなど)
* GitHub等にコードを公開する場合は .gitignoreファイルに.envを記載
* .envファイルの情報にアクセスする場合は process.env.につなげる##コードで解説
外部に公開したくない情報を記載
“`php:.env
MONGODB_URL=mongodb+srv://…..cluster0.ysnsu.mongodb.net/myFirstDatabase?retryWrites=true&w=majority
“`
GitHub等にコードを公開する場合は .gitignoreファイルに.envを記載
“`php:.gitignore
.env
“`“`php:index.js
import express from ‘express’;
im
Node.js が無理やり終了した時も処理したいときのメモ
Socketio を個人的に触っていて、
Node.js の終了時に処理を入れようと調べていて、
こちらの方の記事を参考にしていました。https://qiita.com/Hiroki_Kawakami/items/f95b0cdbd201557b18cd
上記記事の情報に加え、
Terminalが強制終了されてしまったときなど、
雑に終了される時に処理をする方法をメモ。## テストコード
各イベントが発火しているのかをテストするために、
発火したイベントとタイムスタンプを JSONにメモるような処理にした。
※console.logを出しても、Terminalが閉じてしまったら読めないため“`js:server.js
// サーバー構築
const http = require(‘http’);
const fs = require(‘fs’);
const server = http.createServer(requestListener);/* —————————————————
終了
‘useFindAndModify’ が有効なオプションでない時のエラー (mongoose を使ってmongoDBに接続する)
##エラー
Node.jsにおいてmongooseでmongoDBに接続するコードで下記のように書くと“`
エラーコードmongoose.set(‘useFindAndModify’, false);
await mongoose.connect(‘connectionURL’, {
useNewUrlParser: true,
useUnifiedTopology: true
});
“`“`
Error: `useFindAndModify` is an invalid option
“`上記のようなエラーが起こる。
##原因
原因としては、不要なコードがあることが考えられます。“`
mongoose.set(‘useFindAndModify’, false);
“`##解決法
なので、上記のコードを次のように書き換えます。“`
mongoose.set(‘useFindAndModify’, false); //いらない
mongoose
.connect(‘connectionURL’, {
u
Web Apps (Node.js) と MongoDB を連携させる
# はじめに
Azure 公式ドキュメントのチュートリアル「[チュートリアル:Azure で Node.js と MongoDB のアプリを構築する](https://docs.microsoft.com/ja-jp/azure/app-service/tutorial-nodejs-mongodb-app?pivots=platform-linux)」を試してみたので、注意点とか、詰まった箇所について補足メモしておきます。# 目次
– 開発環境
– 手順
1. ローカル Node.js アプリ を作成する
2. Mongo DB 環境を準備する
3. node アプリを Azure にデプロイする
4. Azure Web Apps への
Webの勉強はじめてみた その26 〜Basic認証とCookie〜
N予備校「プログラミング入門Webアプリ」を受講しています。
今回は第3章18,19節です。Basic認証
:::note
Authorization というヘッダの値に、エンコードされた ID とパスワードを含めて通信することで認証する方式
:::暗号化されていない方式でエンコード(Base64)されているので、盗聴や改竄のリスクがある。
`atob`を使うと元の情報が見えてしまう。http-auth
`http-auth` パッケージを利用する。
`yarn add http-auth@4.1.9`“`javascript
//Basic認証のモジュール
const auth = require(‘http-auth’);
//basic関数
//realmプロパティに、Basic認証に保護する領域を規定する文字列 => 説明書き(認証が必要な範囲を書く)
//コールバックにユーザー名とパスワードのチェック => 認証するパターンを書く
const basic = auth.basic(
{ realm: ‘Enquet
Node.js: 接種状況ダッシュボードのデータを使ってワクチン接種済者をカウントする
こちらで行ったのと同じ計算を Node.js で行いました。
[Python3: 接種状況ダッシュボードのデータを使ってワクチン接種済者をカウントする](https://qiita.com/ekzemplaro/items/e892ab821eef343d4860)必要なライブラリーのインストール
“`bash
npm install csv
npm install date-utils
“`“`js:count_vaccination.js
#! /usr/bin/node
// —————————————————————
// count_vaccination.js
//
// Jan/26/2022
//
// —————————————————————
‘use strict’var fs = require(“fs”)
var csv = require(‘csv’)
requir
[Stripe Updates] NoCodeでオンライン決済を受け付ける”Payment Links(支払いリンク)”に、管理用APIが登場しました!
「コードを一切書かずに、クレジットカードをはじめとするオンライン決済を処理するリンクを作成する仕組み」として、Payment Links(支払いリンク)は2021年に登場しました。
https://stripe.com/jp/payments/payment-links
1度商品・料金を登録し[支払いリンク]を作成すれば、後はそのリンクを顧客に踏んでもらうだけで、商品の販売や定期会員の決済を行うことができます。
# これまでの[支払いリンク]でできなかったこと
これまでは、このリンクを作成するためにDashboardにアクセスする必要がありました。
そのため、以下のようなユースケースに対応することができませんでした。– WordPressやHubSpotといった外部サービス側で、リンク作成・埋め込み・表示を一元化したい
– アドホックに料金・商品を生成し、ユーザーに応じた支払いリンクを発行したい
– バッチ処理を利用した、「一定期間または特定時間のみ有効なリンク」を作成したい
– [Connect] 出店者が、顧客向けに支払いリンクを作成できるようにしたいhttps:/
CentOS系へのNodeJSインストール手順
# CentOS系へのNodeJSインストール手順
## nodejsインストール### repo追加
“`bash
curl -fsSL https://rpm.nodesource.com/setup_17.x | sudo bash –
“`### repo確認
“`bash
ls -1 /etc/yum.repos.d
nodesource-el8.repo <- 追加されている ``` ### nodejs インストール ```bash sudo yum install nodejs -y ``` ### インストール確認 ```bash node -v v17.4.0 <- バージョンが表示される ```
yarnのインストール(Windows)
# はじめに
以前、自分が使っている古い方のPCで、Reactを使おうと思ってyarnをインストールしたのですが、パスが通っていないのかコマンドが認識されず、yarnが実行できない。
思い切って新しいPC(Surface Pro8)の方でもう一度インストールしてみようと思って、再度挑戦しました。
ちなみにyarnとは、Facebook社(現メタ社)によって開発された、npmよりも処理が早いJavaScriptのパッケージ管理システムです。よくnpmの上位互換として紹介されているので、流行に乗って使えたほうが良いかなと奮闘中です。ReactもFacebookによる開発ですよね。Facebookはこの辺りの事情に精通しているのでしょうか。# 作業環境
PC: SurfacePro8
OS: Windows11
使用ターミナル: コマンドプロンプト
その他必要環境: node.js、npm# 手順
何はともあれ、まずは公式ドキュメント!ということで、yarnpkg.comのGETTING STARTED → Installationの手順を試してみることに。
最初に、「ya
Pythonスクレイピング【GCP – cloud functions – サンプルコード付】
##はじめに
普段は、firebase cloud functionsで
サーバー側の処理を記述しています。今回も、node環境のサーバーでスクレイピングを行なっていたのですが
処理に時間がかかる・メモリが多く必要になるという理由で
スクレイピングに関しては、python3で記述することにしました。ちなみに、nodeでのスクレイピングは下記のnpmを使用していました。
“`
npm i puppeteer
“`下記システムは、こちらのサイトでも使用しています。
https://yapoyapo.com/
#Pythonの記述・ディレクトリ構造
今回は、GCPのcloud functionsの方に
pythonのファイルをデプロイしたので、ディレクトリ構造の説明もしていきたいと思います。
#ディレクトリ構造
“`:ディレクトリ構造
pythonFunctions
├ main.py
├ getMetaFromSoup.py
├ requirements.txt
├ .gcloudignore
└ README.md
“`
localサーバー(localhost)を立ち上げる
以下のQiita記事の再現をするため、localサーバーを立ち上げようとしたが苦戦したため、手順について記載する。
https://qiita.com/engabesi/items/e08752d1341b7b2c6010
# Node.jsから起動
## ローカルサーバーを立ち上げる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2122226/b4f3dede-8f24-b462-716b-67e281bc16b3.png)
Node.js上で、`serve`と叩き緑の文字で`Serving!`と表示されたら成功。
`Local: http://localhost:~` をコピーして、エクスプローラーに張り付けて画面が表示(場合によっては白画面)になればOK。## ローカルサーバーを終了する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2122226/e53342c9-29
Notion API + LINE + AWS Lambda他でメモ内容をLINEにしゃべらせる
# 野望
相も変わらずNotionをDBに用いたLINE Bot的なものが作りたいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455207/7acc353d-96ab-d5a0-8a5d-289b8e41e0c0.png)# 前回のあらすじ
Notion APIの前にまずはLINE Messaging APIの検証から始めました。
どうやら用意したLINE公式アカウントで受信したテキストをもとに応答をすることができるようになったっぽいです。
https://qiita.com/DJROU/items/900e3c32b87b5d43d8ed# 今回やったこと
いきなりNotionを繋げて読み込みと書き込みをできるようにするのは荷が重いので、LINE公式アカウントに対してユーザが送ったテキストをNotionで検索した結果を返せるようにしました。
指定したDBのキーに対する値がゲットできるところまでのお試しです。![image.png](https://qiita-im
VSCode+Textlintで文章校正をする
# はじめに
Visual Studio Code(VSCode)+textlintで文章校正をするための導入手順です。## 環境
* Windows11 64bit
* Visual Studio Code version 1.63
* Node.js v16.13.2
* npm 8.1.2
* textlint v12.1.0# textlintとは
文章を書く時に表記揺れや誤字脱字、読みにくい表現などを校正してくれるツールです。公式サイト
[textlint · The pluggable linting tool for text and markdown](https://textlint.github.io)Qiitaの記事の下書きを、VSCodeを使ってMarkdownで書くことが多いのですが、textlintを使用すれば自動で文章校正ができます。
![textlint_demo](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230850/7a6e4494-21af-4fa1-7
CORS(オリジン間リソース共有)とは?
# エラー発生
フロントエンドとバックエンドを通信させた時、このようなエラーが発生したことはありませんか?
![スクリーンショット 2022-01-24 15.56.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1801469/6114e564-627f-d8ca-cb20-6fdbc7168d06.png)
なんだかコードは間違ってなさそうだな、なんのエラーだろう、CORSって書いてある、、、と初見の人は思うと思います。# CORSって?
**CORS(Cross-Origin-Resource-Sharing)オリジン間リソース共有**
追加の HTTPヘッダーを使用して、あるオリジンで動作しているウェブアプリケーションに、異なるオリジンにある選択されたリソースへのアクセス権を与えるようブラウザーに指示するための仕組みです。ふむふむ、、、
オリジンとは?
何かしないとアクセス権がないのか?# オリジン
URLの「スキーム」「ホスト」「ポート」の3つの組み合わせたものです。
![ス
Webの勉強はじめてみた その25 〜Heroku編〜
N予備校「プログラミング入門Webアプリ」を受講しています。
今回は第3章17節です。Herokuとは
:::note
Heroku(ヘロク)とは、Web サービスを動かすことのできるプラットフォームを提供しているサービスのこと
:::Heroku CLI をインストールすると、`heroku`コマンドが使える。
サーバーの作成
下準備
Heroku へのログイン
`heroku login`
Dockerを利用するために Heroku Container Registory へログインする
`heroku container:login`Dockerfileに以下を追記。
今回は以前作ったhubotを登録してみる。“`Dockerfile
COPY . /home/praise-bot
CMD [“sh”, “run.sh”]
“``docker-compose`をしてマウントされていた処理を、herokuでは`Dockerfile`自体に記述。
`run.sh`に起動時の処理を書く。
“`she
pm2のインストールではまってしまった人へ
# 結論
お使いのyarn.lockやらpackage-lock.jsonを削除してみよう。
# どうしてこうなったか
インストール時にyarnがダメだったからnpmとかまたはその逆とかでインストールしていたなあ。という記憶が蘇ってきたので多分それ。