ブログ

  • Amazon Linux x86におけるDockerインストールの成功物語:Chatbot UIデプロイへの道のり01

    Amazon Linux x86におけるDockerインストールの成功物語:Chatbot UIデプロイへの道のり01

    はじめに Chatbot UIというオープンソースのAIチャットアプリをデプロイするためまずAmazon Linux x86環境にDockerをインストールする必要があった。その際のdockerのインストール時に発生した問題と解決の過程を書き記しておきます。 https://github.com/mckaywrigley/chatbot-ui?tab=readme-ov-file 問題 Amazon Linux x86環境にDockerをインストールしようとしました。しかし、以下のようなエラーメッセージが表示され、インストールが進まなくなりました。 このエラーは、リポジトリのキャッシュが正しく更新されていないことを示しているらしいです。 解決手順 1. キャッシュの作成 まず、リポジトリのキャッシュを最新の状態にするために、yum makecacheコマンドを実行。 2. リポジトリのクリーンアップ 次に、古いキャッシュデータを削除するために、yum clean allコマンドを実行しました。これにより、キャッシュの不整合や古いデータによる問題を防ぎます。 3. Dockerのインストール再試行 最後に、再度Dockerのインストール。 これらの手順を実行した結果、Dockerのインストールが無事に完了しました。キャッシュが最新の状態になり、不要なデータがクリーンアップされたことで、パッケージの依存関係やバージョン情報が正しく解決され、インストールが成功したと思われる。

  • AWS Route53でGmailのDKIM認証を始める

    AWS Route53でGmailのDKIM認証を始める

    手順01. Google WorkspaceでDKIM認証画面を開く、TXTレコードを確認する AWS Route53にレコードを挿入すると文字が長すぎると怒られた どうやら100文字を超える場合は引用マークで分割しないといけないらしい https://qiita.com/katzueno/items/1f444a3becc459c3c678 たしかに修正したらレコード作成できた・・・。 ちなみにterminalからの確認方法は・・・ 参考リンク Email sender guidelines – Google Workspace Admin Help 追記 実はこの後SPFとDMARCの設定もしろとエラーが出ていた。DKIM、SPF、DMARC全てを送信者に義務付けているということを知りました https://powerdmarc.com/ja/google-and-yahoo-email-authentication-requirements

  • Discord BotをEC2 Amazon Linuxにデプロイする

    Discord BotをEC2 Amazon Linuxにデプロイする

    Pythonで作ったDiscordサーバーを永続化するための手順をまとめました。 ステップ1: サービスファイルの作成 補足 ステップ2: サービスの有効化と起動 ステップ3: ログの確認

  • chatGPTをDiscordサーバーに追加する

    参考記事 https://note.com/sangmin/n/nd6c3d7dd59cb 細かな手順はgithubにも英語ですが記載されていますね。 GitHub – openai/gpt-discord-bot: Example Discord bot written in Python that uses the completions API to have conversations with the text-davinci-003 model, and the moderations API to filter the messages. https://github.com/openai/gpt-discord-bot#setup Discord Botの作成 まずDiscordのdeveloper portalにログインしてBotを作成します。 Discord 以下のようにBotの特権設定をONにしないと招待URLが生成できなかったので注意 ソースコードのクローン 続いてbot用のソースコードをgithubから取得します。 .envの作成 openAIのAPIキーはOpenAI https://openai.com/でsign upした後に生成する必要があります。 はまった点

  • Windowsにdirenvをインストールしてディレクトリごとの環境変数設定を実現したい

    前提 OSはWindows10です。 手順

  • Chromeブラウザのユーザープロファイル名を変更する

    Chromeブラウザのユーザープロファイル名を変更する

    前提 Alfredのブラウザプロファイル切り替えワークフローを使っている 問題 ユーザープロファイルが適切な名前になっていない 課題 ユーザープロファイルの変更が反映されない 解決手法 コマンドラインから変更できるPythonスクリプトを作成した ソースコード 大元のAlfredWorkflow書いてる人のコードを参考に作成しました。 参考: 利用方法

  • ルークスにマスコットキャラクターがやってきました!

    名前は「るる」です メンバーのakamiharamiさんがデザイン・制作してくれました。どうもありがとうございます。ウェブサイトのサイドバーにてお客様をお出迎えしてくれます^^

  • Node.js yargsの使い方

    yargs https://www.npmjs.com/package/yargs yargs-parser https://www.npmjs.com/package/yargs-parser yargsとyargs-parserの違い yargsがyargs-parserを包括している感じでしょうか?実際の挙動を見てみます。 yargsは引数を与えることでYargInstanceというオブジェクトになります。 yargsの引数パース結果はyargs.argvで参照できます yargs-parserはyargsのそれとは若干結果が異なります yargsはパース結果に実行ファイルそのものを含むのに対してyargs-parserは明示的に与えた引数のみを結果に含みます 実装例1. yargsを使った基本的なパース コマンドラインからコマンドをパースさせます。 以下のコマンドを実行します。想定通りの結果になっているでしょうか? 実装例2. コマンドオプションの設定 countやlistといったコマンドにオプションを追加してやります。以前はbuilderとしてオプションを与えていたみたいですが・・・。 以下コマンドを実行してみます。countのみ確認してますが無事オプションは追加されたようです。 しかしながらコマンド実行後の挙動が何もないのは寂しいのでコードを変更して実際の挙動を確認していきます。addコマンドのtitleオプションを指定してコンソール上にタイトルを表示させます。 以下コマンドを実行していきます。 まとめ・所感 yargsは多機能パーサー、yargs-parserは単機能パーサーといった理解に落ち着くとします

  • JavaScript SyntaxError: The requested module ‘./notes.mjs’ does not provide an export named ‘default’から考える適切なimport/exportの使い方

    JavaScript SyntaxError: The requested module ‘./notes.mjs’ does not provide an export named ‘default’から考える適切なimport/exportの使い方

    背景 まずは該当するjavascriptコードを確認しよう。自作jsモジュール notes.mjsからいくつかの関数をインポートしたかった。 問題 しかしながら先ほどのjavascriptコードを実行しようとすると以下エラーが発生。 正直このシンタックスエラーの意味がよくわからなかった。「default」ってなんぞや・・・。 原因分析 自作javascriptモジュールがこちら。 そこでjavascriptといえば我らがMDNドキュメントを見ると目から鱗。javascriptにおけるimportの構文を全く理解できていなかったことが発覚。 先述のjavascriptコードは上記の1行目と同じ表現になるがこちらは以下のように説明されている。 defaultExport:モジュールからのデフォルトのエクスポートを参照する名前。 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/import つまりexport defaultで宣言したもののみがこの構文でimportできると理解(知らんけど)。 続いて2行目については以下のように説明されている。 name: インポートを参照するとき名前空間のように用いられるモジュールオブジェクトの名前。 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/import つまりjavascriptでは任意のモジュールに含まれる要素を任意のオブジェクト名でimportするときはこの表現を使え、と理解(知らんけど)。 解決方法 冒頭のimprot文の表記をちょこっと変えただけ。 参考リンク export – JavaScript | MDN

  • M1 macでnode.jsの開発環境を整備する

    パッケージのインストール node.js nvm(node version manager) node.jsのバージョンを管理・切り替え インストール完了後に以下を実施 ただしNVM_DIR は任意の場所に設定できますが、/opt/homebrew/opt/nvm から変更しないままだと、アップグレード/再インストール時に nvm でインストールされた node はすべて壊れてしまう、という警告が出ています。これはどう対応したら良いのだろうか??#TODO npm(node package manager) node.jsのパッケージ管理 それぞれインストール完了後にコマンドライン上でnode/nvm/npmと叩いて正しく呼び出せるか確認すると良いでしょう。 ローカルサーバーを立てる 適当なリポジトリを作っておいて公式ドキュメントをもとにコードを写経してみます。 コードを書き終わったら以下コマンドを実行してサーバーを走らせます。 localhost:3000にアクセスするとHellor Worldが返されます。 デバッグ 先ほどのコードを以下コマンドで実行することでデバッグクライアントが待機するようです。 コマンドのレスポンス1行目がインスペクタクライアントのURLになります。ChromiumベースのWebブラウザでchrome://inspect/#devicesと入力してインスペクタクライアントを開いてサーバーの挙動を確認すると良いかもしれません。 ファイルシステムAPIを使う htmlを使わない環境下でも使える様々なAPIがあるようです。たとえば以下。 このrequireはcommonJSというサーバーサイドなどの環境下におけるJSの仕様らしい Wikipedia見る限りそんな主流というわけでもないのか・・・? ECMAScript形式だと以下のようになる ただし上記の形式の場合は以下のように拡張子に”m”をつけて実行する。 外部モジュールの呼び出し まずはメインファイル 次にutilsファイル 以下コマンドを実行するとutils内の関数呼び出しとexportされた変数を参照できていることがわかる。 さらに関数のexportも確認する。 以下コマンドを実行すると関数addを呼び出せていることが確認できる。 気づき(なんでもあり) シングルクォート「’」とバッククォート「`」は文字列の処理において使い分けられる 後者は文字列の変数置換”${hoge}”で使われる requireかimportか commonJSかECMAScriptのどちらに従うかっぽいが後者のやり方がようわからんかった。

  • What can make micro-maqueen looks better?マイクロマックイーンの見栄えをどうにかしたい

    これの見た目どうにかならんのか? これを見たら閃いた 発砲どんぶり(お椀)で亀を作る:自由工作 上記リンク先の発泡どんぶりそのままだとデコレーションしづらい(油性ペン使えない)ので以下のアイテムを使うことにした。紙製かつ100円で環境にも優しいらしいので工作にはもってこい。 これだけだとマックイーンとの接着ができないので以下のアイテムを追加購入。 できたのがこちら 作ってみた感想 紙の土台だと工作もしやすいので良き。例えばサーボモータ乗っけて腕をつけるとかできそうかなと。

  • ArduinoでRFIDモジュール(MFRC522)を使ってタグに名前の書き込み・読み込みをする

    今回使うもの Arduino Uno Rev3 ATmega328 マイコンボード A000066 白 VKLSVAN 3個セット RFIDモジュール FRC RC522 MFRC522 IC カード リーダー モジュール+ S50 非接触ICタグ + カードキー Mifare 使用する前のセッティング 以下の記事を参考にしてください。 非接触ICタグで遊ぼう!ArduinoでRFIDリーダRC522を使う方法 とりあえず私はこんなかんじ。無駄にマイクロビット繋げてますけど気にしないでください。 コード ライブラリのサンプルをそのまま使います。 https://github.com/miguelbalboa/rfid/tree/master/examples まずは書き込みから。 すると以下のような出力がシリアルモニターに表示されます。 そしたら入力欄にファーストネーム「hoge#」を打ち込みましょう。入力の最後は#で終わらせる必要があります。すると以下の出力が続きます。 最後に「taro#」と打ち込めば完了です。 次に読み込み。 すると以下が出力されます。 注意点 一点はまったポイントがあるので記しておきます。書き込み時に以下のような出力が出る場合があります。 MFRC522では各種操作の前に以下リンク先の205行目にあるPICC_CMD_MF_AUTH_KEY_Aを用いてタグの認証を行います。 https://github.com/miguelbalboa/rfid/blob/master/src/MFRC522.h 上記エラーはこの認証が通らなかったことを意味するのですが、事前の鍵情報の書き込みをしてない限りそれはあり得ません。 ではなぜ起こったのか?それは「書き込みが完了する前にタグをリーダから離してしまった」からです。書き込みが完了するまでは以下のようにしっかりとタグを読み込ませておかないと認証が失敗してしまうので気を付けてください。