- 1. Disocrd.js 主要権限名
- 2. 【M3 Mac】 HomebrewとNode・npmの導入
- 3. Node.jsでGoogleスプレッドシートを手軽に読み取る
- 4. node.jsのREPLで深いobjectを全部表示する
- 5. 【Webアプリ開発】23卒、新卒1年目にやれたこと
- 6. Prismaでリレーションされたレコードの有無を条件にデータ抽出したい場合の解決策
- 7. 生成AIでシステムを作成してみよう! 1回目
- 8. nvmのインストール方法、使用方法、アンインストール方法
- 9. connect-flashのメッセージが消える
- 10. 大学1回生がソリューションエンジニアとして働いてわかったこと
- 11. Node.jsを使った定期的なファイル同期の構築手順
- 12. Node.jsとMessagingAPIでLINEの応答ボットを作る
- 13. 【API Gateway】IPアドレスによるアクセス制限を実装・設定する方法
- 14. Webフレームワークを集めたDockerComposeを作ってみた
- 15. 色々と asdf に移行してみる 2024年3月
- 16. JS/TSでvarは何で嫌われてるの? 【JavaScript Node.js TypeScript 初心者プログラマー】
- 17. 【Amazon Cognito】ログイン失敗とロックアウトを見分ける方法
- 18. JS/TSでnpmライブラリを作る時の注意点まとめ
- 19. Proxy環境下でAWS SDKv3 for JavaScriptを使う
- 20. 初めて自分でモノを作った [Node.js MongoDB AWS Terrafrom GitHubActions]
Disocrd.js 主要権限名
# Discord.js v14のメンバーの主要権限名
d.jsで、メンバーが所持している権限の確認するなどの際に使用する権限名を書いていきますが、すべての権限を書いているわけではありません。:::note warn
Disocrd.js v14で動作します。その他のバージョンでは動作はしない可能性があります。
:::
##
### サーバーでの権限
– ADMINISTRATOR: サーバー全権限(管理者)
– KICK_MEMBERS: メンバーのキック権限
– BAN_MEMBERS: メンバーのBAN権限
– CREATE_INSTANT_INVITE: 招待リンクの作成権限### テキストチャンネルでの権限
– VIEW_CHANNEL: チャンネルの閲覧権限
– SEND_MESSAGES: メッセージの送信権限
– MANAGE_MESSAGES: メッセージの管理権限
– MENTION_EVERYONE: everyoneメンションの送信権限### ボイスチャンネルでの権限
– CONNECT: ボイスチャンネルへの接続権限
– SPEAK: ボイスチャ
【M3 Mac】 HomebrewとNode・npmの導入
![Homebrew.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755200/f4593013-5b47-c816-bd2b-0b99dfcf9723.jpeg)
# HomebrewとNode・npmの導入
Node・npmはともかく、Homebrew導入で途中エラったので備忘録
環境はM3 MacBookAir# Homebrewの導入
## 1. インストールするディレクトリに移動
以下のコマンドを実行し、`/Users/{user-name}`ディレクトリへ移動**{user-name}は環境によって異なる。**
“`shell:実行内容
cd ~
“`
:::note info
Macの純正ターミナルは初期ディレクトリがここ
どこにインストールするかは個人が任意に設定(あくまで自分はここ)
:::## 2. Homebrewをインストール
以下のコードをコピーするか、公式サイトからコピーして実行
“`shell:実行内容
/bin/bash -c “$(curl
Node.jsでGoogleスプレッドシートを手軽に読み取る
## はじめに
Node.jsでGoogleスプレッドシートを読み書きするためには、公式のnpmとして[googleapis](https://www.npmjs.com/package/googleapis)が提供されており非常に便利ですが、より少ないコード量で手軽に様々な機能を扱うためのラッパーである[google-api-tool-box](https://www.npmjs.com/package/@genta-mz/google-api-tool-box)を公開したので、使い方を解説します。## インストール
Node.jsのプロジェクトを作成し、`@genta-mz/google-api-tool-box` をインストールしてください。
“`shell
$ npm i @genta-mz/google-api-tool-box
“`
https://www.npmjs.com/package/@genta-mz/google-api-tool-box## GoogleAPIでアクセスするための認証情報をセットアップする
一番簡単なのはGCPプロジェクトの
node.jsのREPLで深いobjectを全部表示する
“`
> repl.writer.options.depth = null
“`例
“`
> {1: {1: {1: {1: {1: 1}}}}}
{ ‘1’: { ‘1’: { ‘1’: [Object] } } }
> repl.writer.options.depth = null
null
> {1: {1: {1: {1: {1: 1}}}}}
{
‘1’: {
‘1’: { ‘1’: { ‘1’: { ‘1’: 1 } } }
}
}
“``repl.writer.options` に `util.inspect` の第二引数を設定できるようだ。
https://github.com/nodejs/help/issues/1490
【Webアプリ開発】23卒、新卒1年目にやれたこと
Hello, everyone. どうも、新卒1年目エンジニアでした。
年度が変わります。せっかくの機会なので、今年度(2023年度)やったことを振り返ります。
# 筆者の略歴
– 大学時代(2019.4~2023.3)
– 情報系の学部を卒業(23卒)
– 授業で一通りのコンピュータサイエンスは知っている状態
– RISC-V OSを実験で作って、セマフォ使って並列処理動かしたのが思い出
– 教育データをAIでこねこねして、最終的にXAI(Explainable AI)の話につなげた卒業研究
– Pythonいっぱいやった
– 就職(2023.4~)
– 某事業会社の開発部門に配属
– 上流から下流までしっかりやる
– Webアプリ作ることが多い# やったこといろいろ
## 1. Webエンジニアの超基礎研修
社内での研修期間を存分に利用して、Webエンジニアとして育ちました。そもそも、まともにWebアプリを作ったことすらなかった筆者だったので、すべてを本当に基礎から学びました。
###
Prismaでリレーションされたレコードの有無を条件にデータ抽出したい場合の解決策
## Prismaとは
Prismaとは型安全なデータアクセスを提供するTypeScriptベースのORMです。
https://www.prisma.io/## やりたかったこと
以下のER図ようなテーブル構成があり、**「タグAが紐づいている」**、または **「全く紐づけがない」** アイテムを抽出する必要がありました。![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2221418/9165e0f0-8ee1-09c0-153b-1976591735df.png)
**「タグID Aが紐づいている」** という条件はsomeを使用することで実現できます。
“`js
where: {
{
tagsOnItems: {
some: {
tagId: ‘A’
}
}
},
}
“`しかし **「全く紐づけがない」** という条件が問題でした。
Pr
生成AIでシステムを作成してみよう! 1回目
## はじめに
Qiita初投稿になります。
今後生成AIが仕事のサポートしていくということで生成AIの学習とやってみたこととそこから学んだコツを共有していきます。
学習中の内容な為、間違いがあると思いますが寛容な心で指摘していただけるとありがたいです。
また、いろいろな方のご意見を聞きたいため、よろしければ記事の感想などをいただけるとありがたいです。
こちらの学習で行うことは生成AIを使用して企画書・要件定義・基本設計・詳細設計・プログラミング・テスト・環境作成 等をやっていきます。
使用予定のツール言語は以下の通りです。
・ChatGPT 3.5
・Github Copilot
・node.js
・javascript## 本日の内容
企画書の作成
(所要時間10分ぐらい)## やったこと
まず本日の内容をやっていくにあたってあまりマーケティング、営業の経験がないのがとても問題、、、、
どうやればいいんだと最初から挫折していましたが、まあやってみるかとChatGPTにて新しいチャットを開いていきました。とりあえず、細かい企画はわからないので日本でとても有名なノーコード/
nvmのインストール方法、使用方法、アンインストール方法
nvmのインストール方法、使用方法、アンインストール方法をまとめました!
https://magicgifted.com/nvm/
connect-flashのメッセージが消える
Express3系でFlashメッセージを表示する為、connect-flashというパッケージを追加して、(勝手に)罠にハマったので共有しておきます。
https://www.npmjs.com/package/connect-flash
サンプルコードを見ながら、下記のようなコードを書いて動作チェックしました。
“` app.js
app.get(‘/flash’, function(req, res){
req.flash(‘info’, ‘Flash is back!’)
res.redirect(‘/’);
});app.get(‘/’, function(req, res){
console.log(req.flash(‘info’)); // デバッグ用にメッセージを仕込んだ
res.render(‘index’, { messages: req.flash(‘info’) });
});
“`“` index.ejs
<% if (messages){ %><%= messages %>
<% } %>
“`
大学1回生がソリューションエンジニアとして働いてわかったこと
# はじめに
こんにちは、学生エンジニアのMasamichiです。最近大阪に引っ越したのですがあまりのアクセスの良さにびっくりしてます。ただ車を運転したいなとは思わなくなりました()今回は、2023年11月〜2024年2月まで株式会社プレイドにてエンジニアインターンに参加してきたので、その体験記を書いてみました。
# インターンについて
## ポジション
僕が今回ついたポジションは[カスタマーエンジニア](https://www.wantedly.com/projects/1418410)という職種です。
※僕はこの部署の中で特にソリューションエンジニアという配役だったので、今回はソリューションエンジニアという職業について言及しています。## 仕事内容
社内では自社SaaSである「KARTE」の**ソリューション開発をする**という仕事をしました。具体的には、導入企業からご意見をいただいたり社内で新たな使い方を検証したい機能を、設計・実装・発信するという一貫したプロセスを体験できました。以下に自分が実装したソリューションの一覧を載せておきます。https://soluti
Node.jsを使った定期的なファイル同期の構築手順
# node-cronを使ったフォルダ同期の環境構築
Node.jsとnode-cronパッケージ、rsyncユーティリティを使用して、指定のフォルダ間で15秒ごとにファイルを同期する環境を構築します。
## 前提条件
– Node.jsがインストールされていること
– node-cronパッケージがインストールされていること
– rsyncユーティリティがインストールされていること
– 対象のフォルダ(/bitnami/wordpress/wp-content/uploads/ と /home/bitnami/Dropbox/wp-uploads/)が存在していること## 手順
### 1. Node.jsとnpmのインストール
Node.jsの最新版をインストールします。
“`bash
curl -sL https://deb.nodesource.com/setup_current.x | sudo -E bash –
sudo apt-get install -y nodejs
“`node-cronパッケージをインストールします。
“`bash
n
Node.jsとMessagingAPIでLINEの応答ボットを作る
## はじめに
業務でLINEのMessagingAPIを使ったサービスの開発をすることになりました。
練習のためLINEの応答ボットを作ってみたので、その手順を説明します。
なお、本記事は以下2点が前提となっています。
* JavaScript、Node.jsの知識があること
* GitHubのアカウントを持っていること## LINE関連の設定
### LINE Business IDの作成
Messaging APIの機能を使用するためにはLINE Business IDが必要です。
以下のURLにアクセスします。
https://manager.line.biz/「アカウントを作成」をクリックします。
「メールアドレスで登録」を押下します。
Node.jsExpressrenderlinebotMessagingAPI【API Gateway】IPアドレスによるアクセス制限を実装・設定する方法
API Gatewayで実装したAPIにおいてIPアドレスによるアクセス制限をする必要が出てきたため、その方法を調査・実装した。
# 結論
API GatewayのLambdaタイプオーソライザーを作成し、特定のIPアドレスにのみ認可を与えることでアクセス制限をかけることができる。# 実装内容
まず、オーソライザーの本体となるLamnda関数を実装する。“`javascript
exports.handler = async (event) => {
if(event.authorizationToken){
// X-forwarded-forの内容がトークンに設定されるので、
// カンマで区切りで取得したIPアドレスの一番最初の要素がアクセス元のIPアドレスになる
ip = event.authorizationToken.split(‘,’)[0].trim();
}
else{
return generatePolicy(‘user’, ‘Deny’, event.method
Webフレームワークを集めたDockerComposeを作ってみた
# 今回作成したリポジトリ
https://github.com/perilla0/web_frameworks_template
# はじめに
これまで、フレームワークごとにテンプレリポジトリを作っていたのですが、プロジェクトの切り替えが面倒だったり、DockerComposeごとにNginxやDBサーバーを定義したり、Githubリポジトリが増えすぎたりと不都合を感じておりました。
なので、バックエンド、フロントエンドのフレームワークをまとめたDockerComposeを作成することにしました。
今後のWebフレームワーク追加や削除がしやすいように、構成に少し工夫も加えました。今後は、Webフレームワークを追加したいときは、今回作成したテンプレリポジトリに追加していくことにします。
本テンプレリポジトリは、あくまでWebフレームワークのインストールから初期画面の表示までの簡素化を目的としております。
# DockerComposeに含まれるサービス
READMEに詳細がありますが、本記事でも簡単に説明させて頂きます。
## バックエンド
– Laravel(PH
色々と asdf に移行してみる 2024年3月
# asdf とは
asdf-vm/asdf-plugins: Convenience shortname repository for asdf community plugins
https://github.com/asdf-vm/asdf-plugins# 色々とasdfに移行しようと思ったわけ
主な動機は2つ
* これまで、 rubyenvやらpipenvやらSDKMANやらasdfやら色々と使っては移行して、いい加減しんどいので asdf に寄せようと思った。
* そろそろメインマシンに性能不足を感じているので新マシン購入に備えての準備。(動機大事)# 今回 asdf で管理する対象としたもの
* deno
* helm
* kind
* kubectl
* kubeval
* kustomize
* minikube
* nodejs# 所感
プラグイン数が凄いことになっていてちょっと感動した。もう asdf だけで生きていければ嬉しいなぁ…
asdf-vm/asdf-plugins: Convenience shortname re
JS/TSでvarは何で嫌われてるの? 【JavaScript Node.js TypeScript 初心者プログラマー】
## 最初に
今回は**初心者向け**に何故varが嫌われているのか書いてみました。
誤字脱字等ありましたら、優しく教えていただけると幸いです。# なんでvarって嫌われてるの?
そもそもconst let varの違いを理解していますか?
一旦それぞれの特徴について、もう一度まとめてみましょう| 宣言方法 | 再宣言 | 再代入 |
|:——– |:——|:——-|
|const | 不可 | 不可 |
| let | 不可 | 可能 |
| var | 可能 | 可能 |これをふまえた上で嫌われている理由をまとめていきます。
### 1: 再宣言が可能
初心者の方は再宣言可能の何がいけないのか?と思いますよね?再宣言はプログラムが長くなればなるほど、面倒な仕様になっていきます。“`js
var hello = “hello world”var hello = “hey”
console.log(hello)
// console: hey
“`
このくらいの行数ならhelloが再宣言されているのでログ出力時にはhello wo
【Amazon Cognito】ログイン失敗とロックアウトを見分ける方法
Amazon Cognito のユーザー認証機能を使ってログイン機能を実装しているシステムで、連続で複数回ログインに失敗するとロックアウトが発生するが、単にログインに失敗しているだけなのか、ロックアウトが発生しているかが見分けがつかなかった。
そこで、今回はロックアウトを見分ける方法について調査結果を共有します。
# 結論
ログインに失敗した場合も、ロックアウトによる失敗もNotAuthorizedExceptionが発生するが、メッセージに違いがあるため、それを参照することで見分けることができる。ログイン失敗の場合
“`
Incorrect username or password.
“`ロックアウトによる失敗の場合
“`
Password attempts exceeded
“`# 調査と検証
Cognitoでのイベント履歴はCloudTrailで確認することができる。
CloudTrail > イベント履歴でイベント名「InitiateAuth」でフィルタリングするとわかりやすい。
![スクリーンショット 2024-03-23 12.30.16.png](
JS/TSでnpmライブラリを作る時の注意点まとめ
## この記事を書くきっかけ
先日、自分で[ライブラリ](https://www.npmjs.com/package/log4debug)を組んでみて色々学ぶことがあったので今回はまとめてみました。自分が作ったライブラリに関しては以下の記事にまとめていますので、良かったら見てください!!
https://qiita.com/ROBOTofficial/items/f6ae594f27117cf14ccc
## 最初に
今回はJS/TSでライブラリ作成をする場合の注意点をまとめていますが、もしかしたらnpmの仕様変更等で今後この記事の内容が的外れになるかもしれませんので、鵜呑みにはしないでください。
またこの記事は**初心者向け**です。上級者や中級者の方は退屈かもしれません。その時は躊躇なくブラウザバックしてくださいあと大前提として、この記事はnpmライブラリを作る時の注意点であってnpmライブラリの作り方ではありません。
npmライブラリの作り方は、また後日あげる予定ですので待っていてください## 1 コードをきれいに
GitHubに公開しないから大丈夫と思っているあ
Proxy環境下でAWS SDKv3 for JavaScriptを使う
AWS SDKでAmazon CloudSearchを利用する際にどハマリしたので備忘録として作成。
~~ずっと認証情報が渡せてないと勘違いしてたのは内緒~~## 環境
“`
$ node –version
v21.7.1
$ yarn –version
1.22.19
“`## 必要パッケージのインストール
“`
$ yarn add @aws-sdk/client-cloudsearch-domain @aws-sdk/credential-provider-ini @smithy/node-http-handler https-proxy-agent dotenv
“`– @aws-sdk/client-cloudsearch-domain : Amazon CloudSearchに検索リクエストを実行
– @aws-sdk/credential-provider-ini : `~/.aws/credentials`からAWSの認証情報を読み込む
– @smithy/node-http-handler : HTTPリクエストハンドラ
– https-pro
初めて自分でモノを作った [Node.js MongoDB AWS Terrafrom GitHubActions]
## 背景
・新卒SIerで3年半ほどインフラエンジニアとして働いていた(今は退職して転職準備中)
・インフラだけでなくアプリ側も経験したく、アプリ側の勉強のアウトプットとして今回のアプリを作った
・「Reactまで導入しよう」「UIUXももっと快適にしたい」「未経験であんな凄いの作ってる人がいるのに」などあるが、初めに考えていた構想が実装できたので一つの区切りとした## どういうアプリ
好きな漫画の言葉を閲覧投稿するアプリ。
「漫画 名言」等検索した時に漫画ごとでグルーピングされてるモノがなかったのと、既に作成側で上げた言葉が紹介されていて自分で上げられるモノがなかったので作ろうと思ったアプリ名:**ふぁぼワード**
アプリURL
https://thehiroapp.com/
※12~21時で起動してますGitHubリポジトリ
https://github.com/hiroXXI/hiro-app### 機能
・言葉(画像)の投稿、編集、削除
・スキ!(お気に入り)機能
・検索機能
・ソート機能
・ページネーション機能・ユーザ登録
・ログインログアウト
・