- 1. Node single executable applicationsでnpmパッケージを使う
- 2. synology NASにコンテナを立ててみた
- 3. Node.js(Express)とRenderでLINEログイン機能を実装する
- 4. 2025 年 3 月での files.upload API 廃止と移行方法について
- 5. 【Hack The Box】Codify【Writeup】
- 6. 【解決】Node.js20系にホットリロード導入しようとしたらめちゃくちゃハマった
- 7. JavaScriptで長い配列を長さnの小さい配列に分割するワンライナー
- 8. Node.jsプロジェクトでの環境変数の扱い方
- 9. 旅した国・街をマップで表示できるサイトを作った。
- 10. [nodejs] 軽量でパワフル: Dayjsによる効率的な日付管理
- 11. HackTheBox Codify WriteUp
- 12. 【Go / Protobuf / Node.js】gRPC の双方向ストリーミングを利用してチャットを実装する
- 13. nodejsのAPIをGraphQLで実装してみた
- 14. WSL:Ubuntu環境でnodeのアップデートで詰まった
- 15. 【aws-cdk-examples】API GatewayからLambda経由でDynamoDBを参照/更新する
- 16. nodenvでnodeのバージョンを管理する方法
- 17. ESモジュールとCommonモジュール:Node.jsにおける2つのモジュールシステム
- 18. npmとyarn:JavaScriptのパッケージ管理ツールの比較
- 19. TypeScriptをVSCodeのデバッグ機能で動かす環境構築 + ESLint, Prettier
- 20. [axios] APIのリクエストにインターバルを設ける
Node single executable applicationsでnpmパッケージを使う
[Node single executable applications](https://nodejs.org/api/single-executable-applications.html) を使うと簡単にNodeのスクリプトをexe化できる。
しかし、その名の通り、exe化できるのは1つのJavaScriptのみ❗
つまり、 `import` で自作ライブラリを使うことはもちろん、npmパッケージも使えないのだ❗
なんて限定的な機能なんだ❗クソッ❗…とまぁ、分かってる人はこの時点で「アホだな〜」と思われてると思う。
そう、解決策は簡単で、バンドラーを使えば良い。
WebPackとか、esbuildとか、そういうやつ。
バンドラーは複数のJavaScriptファイルを1つにまとめてくれるので、
SEAを作るときにはもってこいってわけだね。っていうか、ドキュメント↓にそう書いてあるんだわ。ちゃんと読もう。
> Node.js supports the creation of single executable applications by allowing the
synology NASにコンテナを立ててみた
前回synologyのサーバーにapiを立てて、「hello world!」を返してみました。
今回は、container managerを使用してコンテナを立ててみようと思います。大まかな流れ
1.container managerのインストール
2.nodeのレジストリをダウンロードする
3.コンテナの設定をして動かす### container managerのインストール
パッケージセンター>すべてのパッケージから「container manager」をインストールしておいてください。![スクリーンショット 2024-04-12 19.37.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552209/e1709785-e350-9140-562c-4d3d131e9bba.png)
### nodeのレジストリをダウンロードする
container managerを開くと、左側のタブに概要、プロジェクト、イメージ、レジストリ、ネットワーク、ログが出ていると思います。
この
Node.js(Express)とRenderでLINEログイン機能を実装する
## はじめに
[前回](https://qiita.com/course_k/items/4c7faedf11723af9bb6e)はLINEが用意してくれているデモアプリをつかって、LINEログイン機能を試しました。
今回は、Node.jでの実装を通して、内部でどのような処理をしているのかを確かめます。### 前提
本記事は以下のことは完了している想定で進めます。
* Node.jsをインストール済であること
* GitHubアカウントをもっていること
* Renderアカウントをもっていること
* LINE関連の設定が終わっていること(設定詳細は[こちら](https://qiita.com/course_k/items/85bf9cfab971cb5b97ee#line%E9%96%A2%E9%80%A3%E3%81%AE%E8%A8%AD%E5%AE%9A))
* LINEログインチャネルの作成方法がわかっていること(作成方法は[こちら](https://qiita.com/course_k/items/4c7faedf11723af9bb6e#line%E3%83%AD
2025 年 3 月での files.upload API 廃止と移行方法について
こんにちは、Slack の[公式 SDK 開発](https://github.com/slackapi)と日本の Developer Relations を担当している瀬良 (@seratch) と申します 👋
この記事では、本日発表された [files.upload API](https://api.slack.com/methods/files.upload) の deprecation (非推奨) と移行方法について日本語で解説します。アナウンスメント(英語)は、以下のページでご確認いただけます。
https://api.slack.com/changelog/2024-04-a-better-way-to-upload-files-is-here-to-stay
## files.upload API 廃止までの流れ
[files.upload API](https://api.slack.com/methods/files.upload) は、2025 年春に廃止されます。それまでのスケジュールは以下の通りです。
1. 2024 年 5 月 8 日以降、新しく作成
【Hack The Box】Codify【Writeup】
# 初めに
どうも、クソ雑魚のなんちゃてエンジニアです。
本記事は ___Hack The Box___(以下リンク参照) の「___Codify___」にチャレンジした際の ___WriteUp___ になります。
※以前までのツールの使い方など詳細を書いたものではないのでご了承ください。___※悪用するのはやめてください。あくまで社会への貢献のためにこれらの技術を使用してください。法に触れるので。___
https://www.hackthebox.com/
# 初期探索
## ポートスキャン
“`bash
┌──(root㉿kali)-[~/work]
└─# rustscan -a 10.10.11.239 –top –ulimit 5000
.—-. .-. .-. .—-..—. .—-. .—. .–. .-. .-.
| {} }| { } |{ {__ {_ _}{ {__ / ___} / {} \ | `| |
| .-. \| {_} |.-._} } | | .-._} }\ }/ /\
【解決】Node.js20系にホットリロード導入しようとしたらめちゃくちゃハマった
# 起こったこと
Node.js(Express)環境でtypescriptを使ったAPIの開発環境でホットリロードを実装しようとしたところ、めちゃくちゃ詰まった。
最初に試したことはts-nodeとnodemonの組み合わせ。ts-nodeがtsファイルを読み込めず、ずっとエラーを吐いていた。。。以下、解決した方法と環境
## 実行環境
– Node.js 20.0.0
– express 4.19.2
– typescript 5.3.3
– nodemon 3.1.0
– tsx 4.7.2## 解決方法
結論、ts-nodeではなく、tsxをnodemonと一緒に利用することで解決した。
package.jsonのstartコマンドを記載するだけ。tsconfig.jsonなど他のファイルの変更は不要。“`
yarn add -D tsx
“`“`
“scripts”: {
“test”: “echo \”Error: no tes@t specified\” && exit 1″,
“start”: “nodemon –exe
JavaScriptで長い配列を長さnの小さい配列に分割するワンライナー
# やりたいこと
例えば長さ12の配列を、
“`JavaScript:変換前
const src = [‘Jan’, ‘Feb’, ‘Mar’, ‘Apr’, ‘May’, ‘Jun’, ‘Jul’, ‘Aug’, ‘Sep’, ‘Oct’, ‘Nov’, ‘Dec’]
“`
このように、
“`JavaScript:変換前
[
[‘Jan’, ‘Feb’, ‘Mar’],
[‘Apr’, ‘May’, ‘Jun’],
[‘Jul’, ‘Aug’, ‘Sep’],
[‘Oct’, ‘Nov’, ‘Dec’]
]
“`
長さ3など短い複数の配列に分割したいとします。これを実現するワンライナーを紹介します。# 答え(ワンライナー)
“`JavaScript:答え
const dst = Array(Math.ceil(src.length/n)).fill().map((_, i) => src.slice(n*i, n*(i+1)));
“`
– まず、`Math.ceil(src.length/n)`で分割数を求めます。例えば、長さ12を長さ3で分け
Node.jsプロジェクトでの環境変数の扱い方
# はじめに
Node.jsプロジェクトにおいて、環境変数の管理は非常に重要です。このブログでは、.env ファイルと globals.ts モジュールを使用して、環境変数を効率的に管理する方法について説明します。アプリケーションの設定情報をコードから分離することは、セキュリティのベストプラクティスとされています。特に、データベースの接続情報やAPIキーなどの機密情報は、公開されるべきではありません。.envファイルを使用することで、これらの情報を安全に管理し、異なる環境(開発、ステージング、本番)でのアプリケーションの動作を容易に切り替えることができます。
# ステップ 1: 環境変数の設定
.envファイルは、キーと値のペアで構成され、アプリケーションが実行される環境に応じて異なる設定を提供します。dotenvライブラリを使用することで、これらの環境変数をアプリケーションの起動時に読み込み、プロセスの環境変数として利用できるようになります。
“`.env
# okta credentials
SSH_USERNAME=”ssh-username”
SSH_PASSWORD=
旅した国・街をマップで表示できるサイトを作った。
行った国や街を登録してマップに表示できるサイトを作ったので、紹介します。
https://bokenmap.com
## イントロ
今回作ったのは、行ったことのある国と街を登録して、地図に表示することができるWebアプリケーションです。使い方としては、プロフィールページのリンクをSNSに載せたり、地図をiframeタグで他のサイトに埋め込むことを想定しています。
プロフィールページの具体例
[https://bokenmap.com/hikaru](https://bokenmap.com/hikaru)![](https://storage.googleapis.com/zenn-user-upload/1a137814df90-20240408.jpg)
*こういう感じの地図が作れる*[自分の個人ホームページに埋め込んでみた例](https://hikaruimai.vercel.app/travel)
## 課題
僕は旅行が好きなんですが、ウェブ上で「行ったことのある国」をパッと見せたい時に毎回困ります。ブログやSNSなどで自分の旅の経歴みたいなものを公開し
[nodejs] 軽量でパワフル: Dayjsによる効率的な日付管理
# はじめに
日付と時刻の操作は、Web開発において一般的かつ重要なタスクです。JavaScriptの標準Dateオブジェクトは使いづらいと感じる人も多く、これを解決するためのライブラリがいくつか存在します。Dayjsは、そのようなライブラリの中でも特に軽量でありながら、必要十分な機能を提供することで人気を博しています。
# Dayjsの特徴
1. 軽量性: Dayjsは非常に小さいサイズで、パフォーマンスに影響を与えることなくプロジェクトに組み込むことができます
2. 使いやすさ: Dayjsは一連の操作はチェインできます
3. 不変性: Dayjsは操作を行っても元のインスタンスを変更せず、新しいインスタンスを返すため、バグの発生を防ぎやすいです
4. 拡張性: プラグインを通じて機能を拡張でき、必要な機能を柔軟に追加することができます
5. 国際化対応: 多言語に対応しており、グローバルなプロジェクトにも適しています
# 基本的な使用方法
### Dayjsのインストール
“`
npm install dayjs
“`
### 日付の作成、フォーマット変更
“`typ
HackTheBox Codify WriteUp
今回はHackTheBoxのEasyマシン「Codify」のWriteUpです!
名前からしてコードを書いて攻略していくような感じになるのでしょうか…![スクリーンショット 2024-04-07 15.35.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/f1f8966b-edfc-bcfc-0651-d56af756bf1c.png)
グラフはしっかりEasyマシンのようなグラフになっていますね。
評価も高いので楽しみです!攻略目指して頑張ります〜!HackTheBoxって何?という方は下記の記事を見てみてください!一緒にハッキングしましょう〜!
https://qiita.com/WhizOwl/items/165783694cb4791cff34
また、HackTheBoxで学習する上で役にたつサイトやツールをまとめている記事もあるので、合わせてみてみてください!
https://qiita.com/Perplex/items/30f949fe261f56a
【Go / Protobuf / Node.js】gRPC の双方向ストリーミングを利用してチャットを実装する
※ この記事は 2022年10月 に作成したものを一部改稿したものです。
**gRPC** は RPC (Remote Procedure Call) の一種で、Google が自社サービス向けに開発したものをオープンソース化した技術です。
RPC はあるコンピュータ上で動作するプログラムから別の場所にあるプログラムの処理を実行する手法で、1970年代から存在する考え方です。gRPC では、HTTP/2 の「ストリーム」を利用してサーバ – クライアント間で接続を確立することで、HTTP/1.1 のように1つのリクエストに対して1つのレスポンスを返すだけでなく、複数のリクエスト・レスポンスを並行して処理することができます。
そこで本記事では、gRPC の双方向ストリーミングを利用して CLI 上で動作する簡易的なチャットアプリケーションを実装してみようと思います。
## gRPC の特徴
実装に入る前に、APIの構築に最もよく使われる REST との対比を交えて gRPC の特徴について見ていきます。まず通信方式については、REST は先述の通り HTTP/1.1 が主流
nodejsのAPIをGraphQLで実装してみた
## はじめに
GraphQLというものをなんとなく知っていたものの、ちゃんと理解できてなかったなと思い
今回簡単な実装を交えて勉強しました。## GraphQLってなに?
GraphQLは、Web APIのためのクエリ言語であり、データ操作と取得のためのランタイムです。
Facebookによって2015年に開発され、以降、データを効率的に取得する方法として急速に普及しています。
GraphQLの主な特徴は、クライアントが必要とするデータの形をクエリで明確に指定できる点にあります。
これにより、過剰または不足なデータの取得を避け、アプリケーションのパフォーマンスを最適化できます。### Restとの違いは?
下記の違いがあります。
| 特徴 | GraphQL | REST |
|————–|—————————————–|—————
WSL:Ubuntu環境でnodeのアップデートで詰まった
## 環境
osはwindows11でwsl2を用いて、Ubuntuを使用しています。## 警告文が表示される
“`terminal
npm v10.5.1 does not support Node.js v18.16.0. This version of npm supports the following node versions: `^18.17.0 || >=20.5.0`. You can find the latest version at https://nodejs.org/.
“`
要約すると、
あなたのnpm v10.5.1はnode v18.16.0をサポートしてないよ。
だから、nodeのバージョンをv18.17.0かv20.5.0以上にアップグレードしてください。
って感じです。## アップデートに詰まる
じゃあ、アップデートすれば終わりやんと思って
“`terminal
sudo apt update && sudo apt upgrade
node -v
sudo apt-get install nodejs
node -v
“`
で解
【aws-cdk-examples】API GatewayからLambda経由でDynamoDBを参照/更新する
# これは何をしたくて書いたもの?
私個人として、現在業務でアプリ開発に利用しているReact NativeをAWSと連携させたいと考えているため、そのための学習の一環としてReact Nativeの通信先のREST APIを提供できるAPI Gatewayを構築して、その挙動を確認してみることにしました。
CDKには[aws-cdk-examples](https://github.com/aws-samples/aws-cdk-examples/)というサンプルプロジェクトをまとめたリポジトリがあります。今回はその中の[api-cors-lambda-crud-dynamodb](https://github.com/aws-samples/aws-cdk-examples/tree/main/typescript/api-cors-lambda-crud-dynamodb/)というサンプルを実際にデプロイして動かしてみます。# 構成
`cdk deploy`で構築できるリソースは、大まかには以下の画像の通りです。構築されるリソースの詳細は、[index.ts](https:/
nodenvでnodeのバージョンを管理する方法
今回はnode.jsのバージョンをnodenvで管理することで、node.jsのバージョンを簡単に切り替えることができるため紹介します。
:::note info
【前提知識】
– vim操作ができる
– .zshrcファイルが既に作られている
:::# brewコマンドが使えるか確認する
以下のコマンドを実行しbrewコマンドが使用できるか確認を行う。
“`terminal
brew -v
“`ここで、`command not found: brew`と表示された場合は以下のコマンドを実行してください。
【公式サイト】
https://brew.sh/
“`terminal
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`以下のコマンドを実行しバージョンが表示されるか確認する
“`terminal
brew -v
“`:::note warn
MacOSを使用しておりAppleシリコン(M1など)の場合は以
ESモジュールとCommonモジュール:Node.jsにおける2つのモジュールシステム
## **はじめに**
Node.jsにおいて、モジュールシステムは重要な役割を果たしています。現在、Node.jsではCommonモジュールとESモジュールという2つのモジュールシステムが存在しています。本記事では、これらのモジュールシステムの概要と違いについて解説します。
## **Commonモジュール**
Commonモジュールは、Node.js誕生当時から使用されていたモジュールシステムです。モジュールをインポートする際には、`require`関数を使用し、エクスポートする際には`module.exports`を使用します。
“`javascript
// モジュールのインポート
const myModule = require(‘./myModule’);// モジュールのエクスポート
module.exports = {
// エクスポートする内容
};
“`
## ESモジュール
ESモジュールは、現在のスタンダードなモジュールシステムであり、多くの開発現場で使用されています。ESモジュールは、ECMAScript標準のモジュールシステムです。モ
npmとyarn:JavaScriptのパッケージ管理ツールの比較
# はじめに
Node.jsの開発において、外部のライブラリやパッケージを利用することは非常に一般的です。これらのパッケージを効率的に管理するために、パッケージ管理ツールが使用されます。Node.jsにおける代表的なパッケージ管理ツールとして、npmとyarnが挙げられます。本記事では、これらのツールの概要と違いについて解説します。
## パッケージ管理ツールとは
Node.jsは必要最低限な機能のみを提供し、ユーザーが必要なパッケージを各自でインストールする方式を採用しています。これにより、Node.jsの容量を抑えつつ、柔軟性を維持することができます。npmとyarnは、これらのパッケージを管理するために使用される代表的なツールであり、開発者はプロジェクトの要件に応じて適切なツールを選択することが重要です。
そして、パッケージ管理ツールとは、特定のシステムや言語環境において、パッケージを管理するためのツールです。パッケージとは、様々なシーンで活用するために作成されたプログラムの集合体のことを指します。パッケージ管理ツールは以下のような機能を提供します:
– パッケージの導
TypeScriptをVSCodeのデバッグ機能で動かす環境構築 + ESLint, Prettier
先人達の記事を参考にしながら、TypeScriptを手軽にVSCodeで動かすための個人的な最適解ができたので紹介する。
ESLint, Prettierも入れて実用的な環境構築となっている。「TypescriptとかESLintとかのセットアップは別にいいから、**VSCodeの設定**が知りたい!」
という人は [👇🏽VSCodeのデバッグ設定](#vscodeのデバッグ設定) にジャンプ!## 構築する環境
– VSCodeの **デバッグ機能**(F5押下) で **TypeScript** を動かせる。
– 内部的にTSCコマンドでビルドされる。
– **ESLint** と **Prettier** を入れる。下記は対象外とする。
– ESBuildなどは入れない。シンプルなTSCコマンドビルド環境。
– Vue.jsなどブラウザ環境ではない。TSからビルドされたJSを **Node.js** 上で動かす。:::note info
執筆時点(2024年3月)のバージョンで説明する。
– typescript: `^5.4.2`
– eslint: `
[axios] APIのリクエストにインターバルを設ける
## はじめに
APIのリクエスト処理を作成した際に、ステータスコードが429(Too Many Requests)で返ってきてヒヤっとした経験はないでしょうか?
サードパーティのAPIを利用する場合には、プロバイダがAPIのリクエスト頻度を制限していることが一般的です(例えば、1秒間に10回までなど)
上記の理由で、リクエスト頻度を意識する必要がありますNode.js には、AxiosというHTTPクライアントライブラリがあります
https://axios-http.com/
本記事では、Axiosにリクエスト間隔を設定する方法の一例を紹介したいと思います!
## ゴール
axiosを使って、APIのリクエスト間隔を制御できる## 環境情報
| 項目 | バージョン |
| :——–: | :——— |
| Node.js | 20.11.1 |
| TypeScript | 5.4.3 |
| Axios | 1.6.8 |## 方針
以下の方針で実装をしていきます
– axi