- 0.1. はじめてのVSCode拡張開発 ~公式手順は茨の道なのか?~
- 0.2. node.js v16 で nexeのコンパイルがこけてしまった時の対処法
- 0.3. 【Node.js】過去のバージョンへダウングレードする方法
- 0.4. 【メモ】Node.jsでAPI通信するサンプル実装
- 0.5. 【AWS】CodeBuildでNodeのバージョンを指定する方法
- 0.6. [npmとpackgejson]npm とpackage.jsonについての備忘録
- 0.7. [nuxt.js] Amazon Linux2 への Nuxt.js の導入と systemd でのデーモン化
- 0.8. vagrantでNode.js 環境の作成
- 0.9. Webの勉強はじめてみた その29 〜Webフレームワーク〜
- 1. Expressの導入
- 2. 脆弱性
はじめてのVSCode拡張開発 ~公式手順は茨の道なのか?~
[はじめてVScode拡張 plugin](https://marketplace.visualstudio.com/items?itemName=ryokat3.vscode-qiita-markdown-preview) を作成しました。公式の [公式のMarketplaceの公開手順](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) を見る限りでは、[PyPI](https://pypi.org) や [npm](https://www.npmjs.com) でパッケージを公開するぐらいに簡単そうです。
ですがこの通りに行っても**とんでもなく上手くいきません**でした。顛末記として記事を共有することで、これから VSCode 拡張を開発する方の参考になれば幸いです。
この記事の手順で公開した VSCode 拡張プラグインが [Qiita Markdown Preview](https://marketplace.visualstudio.com/items?ite
node.js v16 で nexeのコンパイルがこけてしまった時の対処法
# nexeとは
> 引用: Nexeは、Node.jsアプリケーションを単一の実行可能ファイルにコンパイルするコマンドラインユーティリティです。
https://github.com/nexe/nexe
# 使用環境
* macOS `11.5.1` (Intel)
* node `v16.13.2`
* nexe `4.0.0-beta.19`# 発生した事象
* `npx nexe {project.js}` してみる。
* エラーが出て `using the –build flag` と表示される。
* `npx nexe {project.js} –build ` してみる。
* `Error: python ./configure.py –dest-cpu=x64 exited with code: 1`
というエラーが出てコンパイルが失敗してしまう# 解決策
下記のissue 参照。
https://github.com/nexe/nexe/issues/926`npx nexe src/index.js –build –
【Node.js】過去のバージョンへダウングレードする方法
# はじめに
新規のPJでNode.jsのv16をダウンロードしたら、別PJで使用していたv12が使えなくなったということがありました。その際にv12に戻すのに苦労したため、解決策を紹介していきます:point_up_tone1:# 前提
– 公式サイトからNode.jsのインストールを2回行い、2回目のバージョンでローカルのNode.jsのバージョンが上書きされた
– 1回目がv12で、2回目がv16です。
– nvm useコマンドによる切り替えができない
– 通常はこのコマンドを使用した場合にはバージョンの切り替えが可能ですが、切り替えができませんでした。nvm availableコマンドを実行した際に変更したいバージョン(v12)が表示されないことが原因かなと考えています。# 解決策(Windows)
1.PCの設定画面のアプリを開き、Node.jsをアンインストールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700107/d2b307b2-4429-35
【メモ】Node.jsでAPI通信するサンプル実装
下記の動画のメモです。
ゼロから半年でWeb系エンジニアになろう【完全まとめ版】
“`sh
# expressをインストール
npm i express
“`“`js:app.js
const express = require(‘express’)
const app = express()
const port = 3000 //通信の宛先を区別する どのアプリケーションと通信したいのか識別するもの
let booklog = {} //初期化するapp.use(express.json())
// 投稿POSTする
app.post(‘/booklog’, (req, res) => {
booklog = req.bodyif (!(booklog.name && booklog.text)) {
res.json({
“ok”: false,
“error”: “invalid parameter”
})
}
【AWS】CodeBuildでNodeのバージョンを指定する方法
ここ最近学業と就活が忙しく、全く記事が書けていないのですが、久しぶりに書きたい内容があったので書きます。
タイトルにも書いてあるとおり、今回はAWS CodeBuildでNodeのバージョンを指定します。
AWSはNodeのバージョンは10、12、14はサポートしているのですが、それ以上のバージョンはサポートされていません。
最近ではNodeの推奨バージョンが16になったので、なんともかゆいところに手は届きませんね。
そこで、2週間ほどネットサーフィンをしたところ解決に至りました。
# 結論
CodeBuildの環境イメージを以下に設定。
|ラベル|値|
|—|—|
|オペレーティングシステム|Ubuntu|
|イメージ|最新|
|イメージのバージョン|最新|
|環境タイプ|Linux|Buildspecの“install“フェーズで任意のバージョンを指定。
“`buildspec.yml
version 0.2phases:
install:
runtime-versions:
nodejs: 14 //ここはサポートされ
[npmとpackgejson]npm とpackage.jsonについての備忘録
##前書き
どうも!目先の利益を追って長期的な利益を失いがち、視野狭窄なグッピーです!
今回はまたまたnpmに関する理解がなくて仕事でミスをしたので、そのinputも兼ねて記事を書いていきたいと思います!##そもそもnpmとは??
npmの正式名称は**Node Packge Maneger**です。npmの正式名称からも分かるように、Node.jsのパッケージを管理するツールです。Node.jsのパッケージとはあらかじめ用意された便利な機能群のことですね。##Node.jsとは
ならNode.jsとはなんぞやって話なんですけど、Unix系のプラットフォーム上のサーバーサイドスクリプト環境のことですね。簡単に言うとサーバーサイドでもJavaScriptを動かせるようにする環境のことですね。※Unixとは・・・OSのこと。macやwindowsもUnixが使われているよ。
※osとは・・・・基本ソフトウェアのこと。ハードウェアやアプリなどの応用ソフトウェアを繋ぐ役割を果たしている。##Node.jsのメリットデメリット
###メリット
軽量であるために、リアルタイムで
[nuxt.js] Amazon Linux2 への Nuxt.js の導入と systemd でのデーモン化
# インストール
## Node.js のインストール
“`bash
$ curl –silent –location https://rpm.nodesource.com/setup_14.x | sudo bash –
$ sudo yum install nodejs
$ node –version
v14.19.0
$ npm –version
6.14.16
“`## vue-cli のインストール
“`bash
$ sudo npm install -g @vue/cli
$ vue –version
@vue/cli 4.5.15
“`## Nuxt.js アプリケーションの作成
“`bash
$ pwd
/home/ec2-user
$ npx create-nuxt-app my-project
“`## Nuxt.js アプリケーションの build と動作確認
“`bash
$ pwd
/home/ec2-user/my-project
$ npm run build
$ npm run start> my-pro
vagrantでNode.js 環境の作成
# 前提条件
vagrantが既に準備してあること# 作業directoryの作成
“`shell:ディレクトリの作成と移動
mkdir my_vagrant_sample
cd my_vagrant_sample
“`
my_vagrant_sampleのところはなんでもいい# 新しいボックスの作成、起動とログイン
“`shell:起動と作成
vagrant init centos/7
vagrant up
vagrant ssh
“`# もしディレクトリの共有をしたい場合
まず共有機能を使うためにはゲスト側にGuest addtionというものをインストールしないといけない。
そのために必要な準備が2つある。1つ目はvbguestというvagrant用のプラグインのインストール
“`shell:vagrant-vbguestのインストール
vagrant plugin install vagrant-vbguest
“`2つ目はゲスト0S側でguest addtionをインストールするためパッケージのインストール。
“`shell:ログイン
Webの勉強はじめてみた その29 〜Webフレームワーク〜
N予備校「プログラミング入門Webアプリ」を受講しています。
今回から第4章になります。Expressの導入
Webフレームワークとして、`Express`を使います。
雛形を作るための`express-generator`をインストール“`
yarn global add express-generator@4.16.0
“`テンプレートエンジンを`pug`に設定して、カレントディレクトリに雛形を作成する
“`
express –view=pug .
“``package.json`の中を見ると、`yarn start`で起動できることがわかる。
“`json:package.json
“scripts”: {
“start”: “node ./bin/www”
}
“`Portの設定
“`javascript:www
/**
* Get port from environment and store in Express.
*/var port = normalizePort(process.env.P
Node.jsインストール
“`
curl –silent –location https://rpm.nodesource.com/setup_16.x | sudo bash –
yum install nodejs
““【備考】以前のやり方
“`
yum install nodejs npm –enablerepo=epel
“`#Expressの導入
“`
npm install -g express
“`#Expressの利用
画面にejsを利用“`
express -e ディレクトリ名 -t ejs
cd ディレクトリ名 && npm install
npm install
“`
企業のテックブログの更新をまとめたRSSフィードを作りました!(GitHub Actions)
1つ1つフィードリーダーで管理するのが面倒なので、まとめたRSSフィードを作りました!
[](https://yamadashy.github.io/tech-blog-rss-feed/)
フィードのURLはこちら
“`text:Atomフィード
https://yamadashy.github.io/tech-blog-rss-feed/feeds/atom.xml
“`“`text:RSSフィード
https://yamadashy.github.io/tech-blog-rss-feed/feeds/rss.xml
“`横断的なテックブログのウォッチや、転職先探しなどにご活用ください。
サイトからもフィードURLをコピーでき、直近更新された記事も閲覧できます。
[企業テックブログRSS](https://yamadashy
TypeScriptでfs, pathモジュールがインポートできなかった (Next.js Tutorial)
# はじめに
Next.jsのチュートリアルをTypeScriptでやっていた際に、モジュールが見つからないとVSCodeに言われました。
悲しい。# 問題
**モジュールfsとpathがインポートできません。**
公式チュートリアルのプリレンダリング(SSG vs SSR)の部分で、`posts.js`なるものを作るのですが、自分はTypeScriptでやりたかったため、`posts.ts`としました。
しかし、JSファイルだとインポートできていたモジュールが、TSファイルにするとできなくなってしまいました。困った。“`posts.js:
// 公式のチュートリアルコード
import fs from ‘fs’
import path from ‘path’
“`# 解決策
**`@types/node`をインストールすればよいらしい。**
TS用のモジュールパッケージが入っていない感じなのかな?
理屈はわかりませんが、とりあえず参考ページにあったコマンドを叩く。“`
npm install –save-dev @types/node# 自分はDocke
MongoDBにNode.jsで接続するときの認証について
# やりたいこと
DockerでNodeのコンテナを作成し、MongoDBのコンテナにアクセスしたい。しかし、接続ができない(認証が失敗する)ときがあるので、方法として3種類紹介したいと思います。
Node.js初心者なので書き方がよくなかったり、こんな方法使わんだろと思うかもしれません。ぜひ教えていただきたいです。# 実装について
node: Node.jsのコンテナでMongoDBのコンテナにアクセスしていろいろしたい
mongodb: mongoのコンテナでデータベースサーバ一応、docker-composeファイルを載せておきます。
“`yml:docker-compose.yml
version: “3.8”services:
mongodb:
container_name: “mongodb”
hostname: “mongodb”
image: mongo:5.0.5
restart: always
ports:
– 27017:27017
volumes:
– ./mong
Twitter Spaceの音声をダウンロードする方法
# 環境
デバイス: MacBook Retina 2017
OS: macOS Big Sur バージョン 11.6.1# 必要なソフト
- FFmpeg
- Node.js
- space-dl
# 必要なソフトのインストール
## Homebrewをインストールする
[Homebrew](https://brew.sh/index_ja)のサイトにあるインストールコマンドをターミナルに貼り付け実行する。
インストールスクリプト
“`shell
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`## FFmpegをインストールする
Homebrewを使うことで以下のコマンドで簡単にインストールすることができます。
“`shell
brew install ffmpeg
“`## Node.jsをインストールする
[Node.jsダ
HerokuでMySQLを利用した際に接続が勝手に切れる仕様の修正方法
#HerokuでMySQLを利用した際に接続が勝手に切れる仕様の修正方法
HerokuにNode.js用のアプリをデプロイした際に詰まったので備忘録として投稿します。
※おそらく自分のやり方は結構ごり押しなのでしっかり記事を読んでから使うことをお勧めします。“`Node.js
function intervalFunc() {
connection.query(
‘INSERT INTO users(name) VALUES (“Connection”)’,
(error,results) => {
})
connection.query(
‘select name from users order by id desc limit 1’,
(error,results) => {
if(results[0].name=”Connection”)
connection.query(
‘DELETE FROM users order by id desc limit 1 ‘,
(error,results) => {
req.bodyに変数を用いる方法
#req.bodyに変数を用いる方法
`req.body.○○`の○○の部分に変数を用いようとした際に少し詰まったので、備忘録として投稿します。“`Node.js
//req.bodyの後に入れたい変数を宣言
var bangou
for (let i = 1; i < 10; i++) { //自分の場合はreq.body.bangou_1~10の中身がyesの時だけに処理を通しています。 bangou = "bangou_"+i; //req.body[変数]("."は記述しない)と記述することでreq.bodyの後に変数を用いることが出来ます。 if(req.body[bangou] === "yes"){ console.log("通過"); }else{ continue; } } ``` #結論 以上のコードの7行目のように記述することでreq.bodyの後に変数を用いることが可能でした。
Webの勉強はじめてみた その28 〜脆弱性の対策〜
N予備校「プログラミング入門Webアプリ」を受講しています。
今回は第3章27〜34節です。脆弱性
OS コマンド・インジェクション
– 任意の OS のコマンドを実行できてしまう
SQL インジェクション
– 任意の SQL というデータベースを操作するコマンドを実行できてしまう
ディレクトリ・トラバーサル
– 任意のファイルを閲覧、操作できてしまう
セッションハイジャック
– 利用者のセッションが乗っ取られてしまう
クロスサイト・スクリプティング (XSS)
– スクリプトにより Web サイトの改ざんができてしまう
クロスサイト・リクエストフォージェリ (CSRF)
– 利用者の意図しない操作がされてしまう
HTTP ヘッダインジェクション
– 偽ページの表示などができてしまう
クリックジャッキング
– 利用者の意図しないクリックをしてしまうこれを見ただけでもフレームワークの必要性がわかる。
OSコマンドインジェクション
:::note warn
当人ではなく、Webサービスが実行者になってしまう。
ク
XXS攻撃対策についてNode.js Expressでアプリを構築して実例で理解する
## はじめに
Node.jsのExpressでテンプレートエンジンejsを使って実装するWebアプリを実例に、XXS攻撃を受ける脆弱性がある状態と対策を講じた場合の実装を見ていく事で、XXS攻撃について理解を深めてみようと思う。## XXS(クロスサイト・スクリプティング)攻撃とは?
Webアプリケーションにスクリプト等を埋め込むことが可能な状態になっている=脆弱性がある時に、これを利用されて利用者のブラウザ上で不正なスクリプトが実行されてしまう可能性がある。
そのスクリプト等を埋め込むような攻撃をXXS(クロスサイト・スクリプティング)攻撃という。詳細は以下のサイトを参照。
https://www.ipa.go.jp/security/vuln/websecurity-HTML-1_5.html
以下ではNode.jsのExpressでテンプレートエンジンejsを使った実装を例に、実際に脆弱性がある実装をやってみて、脆弱性がある時どのような事が起きるのか?またそれを防ぐためにどうするのか?をみていく。
見ていく内容としては、IPAのサイトに書かれている対策の一覧に書か
Node.jsでTCP/UDPソケットのIPv4・IPv6両対応は簡単に実装できる
初投稿です。
# 経緯
Node.jsでUDP双方向通信プログラムを書いている上で何故だか急にIPv6対応したくなってきました。しかし、IPv4の方が未だ多く使用されているため、IPv4を捨てることもできず、IPv6と両方対応できるソケットはないか探してみました。
# TL; DR
## UDP
まずソケットをudp4からudp6にします。
“`js
const socket = dgram.createSocket(“udp4”);
“`
“`js
const socket = dgram.createSocket(“udp6”);
“`そして、待受アドレスを`0.0.0.0`から`::`に変更します。
“`js
socket.bind(PORT, “0.0.0.0”);
“`
“`js
socket.bind(PORT, “::”);
“`これだけです。
こうすることでIPv4・IPv6両対応のソケットを立てることができます。## TCP
プログラムの書き換えは必要ありません。
接続先アドレスをIPv6に指定するだけで勝手にIPv6で接
Expressを使ったWebサーバーにTLSの設定を追加してみる。
Node.js Expressを使って開発していたWebサーバーにSSLの設定を追加できたのでその方法について投稿いたします。
### 流れ
1. OpenSSLのインストール
2. 秘密鍵とSSL証明書ファイルの作成
3. サーバー設定ファイルにTLS有効化の設定を追加### OpenSSLのバージョンについて
OpenSSLのバージョンは、LibreSSL 2.8.3 で設定いたしました。ソースコードとプルリクエストについては、下記の通りです。
ソースコード
プルリクエスト### 1. OpenSSLのインストール
まずは、OpenSSLをインストールします。
Mac OSなら下記コマンドでインストールします。
brew install openssl
### 2. 秘密鍵とSSL証