diff --git a/article/electronics/kicad.md b/article/electronics/kicad.md new file mode 100644 index 0000000..6ecd9c7 --- /dev/null +++ b/article/electronics/kicad.md @@ -0,0 +1,8 @@ +--- +title: +tags: [] +image: /uploads/ +publish: public hidden +--- + diff --git a/article/tech/discordjs-14-what-we-can.md b/article/tech/discordjs-14-what-we-can.md new file mode 100644 index 0000000..1e5a4e4 --- /dev/null +++ b/article/tech/discordjs-14-what-we-can.md @@ -0,0 +1,46 @@ +--- +title: Discord.js v14でコマンド登録 +tags: + - DiscordBot + - Discord + - Typescript + - NodeJS +image: /uploads/ +publish: public +--- + +# Dicord.jsを活用しよう +かんたんなBotの作り方は色々乗ってますが、どんな機能をどういうふうに使えるのかをシンプルに一覧できたらいいなと思ったので備忘がてら書き残します。 +この記事はdiscord.js 14 + typescriptの環境をターゲットにしています。 +また、バージョンは、執筆時点で最新版の14.16.3をもとにしています。 +## Overview +- 基本的な仕組み +- メッセージと埋め込み +- RESTクラスとpu +- スラッシュコマンドの実装 +- コンテクストメニューの実装 +# 基本的な仕組み +かつては、一般メッセージの文頭が特定のprefixならコマンドとみなすような原始的な実装がされていました。これは、全てのメッセージを読み取る必要があり、様々な問題がありました。 +これがいつからかDiscordは、スラッシュコマンド等のボットに対するリクエスト方法を公式に用意して、そのリクエストをbotがハンドリングするような形になりました。 +## 例)コマンドの登録 +```ts +import { REST, Routes, } from "discord.js" + +const rest = new REST({ version: "10" }).setToken(TOKEN); +try { + await rest.put(Routes.applicationCommands(CLIENT_ID), { + body: [{ + name: "ping", + description: "Send Ping!", + }] + }); +} catch (error) { + console.error(error); +} +``` +TOKENとCLIENT_IDは与えてください。 + +これにより、ボットが導入されたサーバーで`/`を入力すると、補完のリストに登録されたものが見えます。 + +これらは、Botが起動していなくても利用できます。 diff --git a/article/tech/git-ssh-config.md b/article/tech/git-ssh-config.md index fb6ed8c..32c9a83 100644 --- a/article/tech/git-ssh-config.md +++ b/article/tech/git-ssh-config.md @@ -6,11 +6,7 @@ tags: image: /uploads/ publish: public --- - - # Gitで利用するキーをコマンドで指定する ---- gitに使うキーは`~/.ssh/config`でホストを指定して設定していることでしょう。 ですが、リポジトリのデプロイキーを使いたい場合等、一時的にキーを変えたいシーンがあります。 結論からいうと、 @@ -22,6 +18,5 @@ gitの`-c`オプションはgit configで設定するような内容をその場 `-i`ではキーを指定、`-F`で既存のコンフィグファイルを利用しないようにしています。 # 参考文献 ---- - https://git-scm.com/docs/git - https://man.archlinux.org/man/ssh.1 \ No newline at end of file diff --git a/article/tech/how-to-setup-gitea.md b/article/tech/how-to-setup-gitea.md index 47ea5e7..ff76d8a 100644 --- a/article/tech/how-to-setup-gitea.md +++ b/article/tech/how-to-setup-gitea.md @@ -12,7 +12,6 @@ publish: public # Giteaを始めよう ---- 自分のサーバーにGiteaを立てたよという話です。 Giteaとは、GithubやGitlabなどのGitホスティングサービスの一つで、Giteaはオープンソースで、公式の[gitea.com](https://gitea.com)と(ほぼ)同様のものを自分でホストすることができます。 issue管理や、プロジェクト、Actions、Wiki等のリポジトリマネジメントに使える機能はGitlab @@ -23,7 +22,6 @@ issue管理や、プロジェクト、Actions、Wiki等のリポジトリマネ また、個人的な思想として中央集権的なシステムが好きではないので、自分のプロジェクトを分散管理したいなー、なんて欲求がそこはかとなくあったのです。まあ、自分はGithub Educationに入っているのでタダでけっこうなリソース使わせてくれるのですがね...(Github大好き♡) # Dockerを使ったセルフホスティング ---- [Installation with Docker](https://docs.gitea.com/installation/install-with-docker)に書かれているようにdocker-composeファイルを作り、起動します。 自分はMySQLをDBに設定しました。PostgreSQLを使った設定もあるようです。 ポートは3000がウェブ、22がsshdとなっています。適当にホスト側のポートにバインドしておきます。 diff --git a/article/tech/minecraft-simply-db.md b/article/tech/minecraft-simply-db.md new file mode 100644 index 0000000..e69de29 diff --git a/article/tech/node-simple-git.md b/article/tech/node-simple-git.md index a87286b..c108c8b 100644 --- a/article/tech/node-simple-git.md +++ b/article/tech/node-simple-git.md @@ -11,7 +11,6 @@ publish: public # git-jsについて ---- [git-js](https://github.com/steveukx/git-js)、パッケージ名は`simple-git`です。ここでは、simple-gitと呼びます。 正直公式のREADMEが充実してるので記事書くか迷った。 npmを使用して導入します。 @@ -23,7 +22,6 @@ npm i simple-git なので、実行環境に入っているgitを利用する必要があり、グローバルのconfigも影響します。 # 使ってみる ---- ## インスタンスの作成  simple-gitインスタンスを作成します。 インスタンスの引数に取る`SimpleGitOptions` には、gitリポジトリであるディレクトリや`-c`でしてされる引数を設定できます。 @@ -56,7 +54,7 @@ git -c "http.proxy=someproxy" clone ... ``` core.sshCommand=ssh -i ./path/to/key -F /dev/null ``` -詳しくは[[git-ssh-config]]にまとめています。 +詳しくは[git-ssh-config](./git-ssh-config)にまとめています。 ## コマンドを実行する インタフェースに関数として多くのラップされたコマンドが存在します。 一覧は[README](https://github.com/steveukx/git-js?tab=readme-ov-file#api)を参照してください。 @@ -79,10 +77,8 @@ const commands = ['config', '--global', 'advice.pushNonFastForward', 'false']; const result = await git.raw(...commands); ``` # まとめ ---- もともと`child_process`の`execSync`をつかってGitコマンドを実行していましたが、帰ってきたデータを解析する手間がかかるのでありがたくライブラリに頼りました。 似たようなライブラリに、[js-git](https://github.com/creationix/js-git)というものがありますが、これはGitのラッパーではなく、gitをjsで実装することで、様々な環境でgitを弄れるというものらしいです。機会があったら触ってみたい。 # 参考文献 ---- - https://github.com/steveukx/git-js - https://neos21.net/blog/2020/07/24-01.html \ No newline at end of file diff --git a/article/tech/sveltekit-db-build-error.md b/article/tech/sveltekit-db-build-error.md index 2b746a3..b32dfc0 100644 --- a/article/tech/sveltekit-db-build-error.md +++ b/article/tech/sveltekit-db-build-error.md @@ -11,7 +11,6 @@ publish: public # ビルド時にエラー ---- devでは問題ないのに、buildして確認するとエラーが出る..という問題の解決方法です。 Postgres以外にもこの手のエラーはデータベースを使っていれば発生する可能性がありそうです。 ## 症状 @@ -36,7 +35,6 @@ AggregateError [ECONNREFUSED]: ``` # 原因 ---- SvelteKitはページをプリレンダリングするために、ビルド時にページのコードを実行します。 リクエスト時に初めてモジュールが評価される場合でも、ページの`+page.server.ts`からモジュールを利用していると、モジュールの初期化によって接続が要求されエラーとなります。 @@ -54,7 +52,6 @@ await db.query("hogehoge...") ``` # 解決策 ---- `hook.server.ts`を利用します。 Hooksを使うことで、リクエストに対してカスタムデータをリクエストに追加し、ページのload関数に渡すことができます。 https://kit.svelte.dev/docs/hooks @@ -112,6 +109,5 @@ if (!building) { しかし、DBの初期化時に一回だけ実行されるなら問題にはなりませんが、様々なページからDBにアクセスしようとするたびにこんな調子では面倒ですし、適当なクラスでラッパーしようにも結局場合分け等が煩わしいことになります。 # まとめ ---- devでは期待通りに動くのに、いざbuildとなるとエラーを出されて悲しくなりました。 フレームワークの仕組みとしては合理的なので、文句も言えないのですが。 \ No newline at end of file