ブログ

  • Fixing ‘Axios Cross-Site Request Forgery Vulnerability’ in Mineflayer Setup

    Fixing ‘Axios Cross-Site Request Forgery Vulnerability’ in Mineflayer Setup

    背景 問題の概要 脆弱性の詳細 npm auditの結果から、以下の脆弱性が確認された とりあえず言われるがままに進めてみるが・・・ そのため下記を実行し、再びaudit fixを実行 そして再度audit fixを実行すると、vlunerabilitiesの警告は4つに絞られたっぽい ここでわかった問題箇所はminecraft-protocol -> prismarine-auth -> xboxlive-auth -> axiosという依存関係と、axiosのバージョンを1.82以降にしなければいけないということ。 原因分析 npm ls axiosコマンドで確認したところ、使用されていたaxiosのバージョンは0.21.4だった。なんぞ。 そこで一つ上の階層?にある@xboxreplay/xboxlive-authとその依存関係を確認してみると・・・ 最新バージョンである4.1.0は、axiosの最新バージョン(1.7.9)に依存していることのことがわかった。 この暫定的な対処法として、package.jsonにoverridesフィールドを追加して依存関係を最新バージョンにオーバーライドした: 既存の依存関係をクリーンアップし、新たにインストールすることで無事バージョンアップが成功した! 参考リンク

  • EACCES: permission denied, unlink ‘/usr/local/bin/code’

    EACCES: permission denied, unlink ‘/usr/local/bin/code’

    以下リンク先を参考にcommand lineからcodeコマンドを呼び出すため、コマンドパレット経由でinstallを試みたところ下記のエラーが発生 権限周りで問題があるとのことなので確認してみる。 どうやら古いシンボリックリンクが存在していた模様。該当ディレクトリごと削除して再度インストールを試みると成功した。

  • カレー屋さんはグレービーの作り置きをどのように作っているのか

    カレー屋さんはグレービーの作り置きをどのように作っているのか

    カレー作りで一番のボトルネックは玉ねぎだと思う。特にスパイスカレーを作ったことがある人ならよく分かるはずだ。「飴色になるまで炒めた玉ねぎ」、あの作業だ。 あんなものを作れるのは時間に余裕のある貴族か料理人くらいだと思っている。でも、美味しいスパイスカレーを作りたい。少なくとも、スパイスカレーでは玉ねぎの原型を残すのは避けたい。豆カレーなら豆、キーマなら挽肉など、主役になる食材の食感をしっかり主張させたいからだ。それ以外の食材はあくまで引き立て役であるべきで、玉ねぎも例外ではない。 では、あの飴色玉ねぎを短時間で作るにはどうすればいいだろうか。そのアプローチを考えるためには、まず玉ねぎが飴色になるまでの過程を想像し、どんな原理が隠れているのかを理解する必要がある。 飴色玉ねぎとは、玉ねぎを極限まで炒めて水分を飛ばし、同時に繊維を崩してペースト状にしたものだ。単純に水分を抜くだけだと、ただ乾燥した塊ができるだけで美味しくない。ポイントは「炒めながら」水分を飛ばすことだ。水分には玉ねぎの旨味や栄養も含まれるため、できるだけ逃したくない。 そこで理想的なのは、玉ねぎの果肉と水分を適度に分離させてから炒める方法ではないかと思った。その分離を手軽に実現するのに最適なのが「電子レンジ」だ。実際、ウェブ上でリサーチすると、電子レンジで玉ねぎの水分を飛ばし、柔らかくしてから炒めるという時短レシピがいくつか見つかった。このアプローチ自体は間違っていないようだ。 今回は実際に電子レンジを使って飴色玉ねぎの時短レシピに挑戦してみた。玉ねぎ6個分を一度に処理し、数日分のスパイスカレー用グレービーを作る計画だ。 まず、600ワットの電子レンジで5分加熱したが、サランラップ越しに触ってみるとあまり変化がなかった。そこで追加で5分、合計10分加熱することにした。するとレンジ加熱中に玉ねぎから成分が出たせいか、ラップがふわふわと膨らんで浮き上がってくる現象が起きた。これは良い感じに水分が抜けている兆候かもしれない。 10分加熱した時点でもう少し水分が抜けそうだったので、実験のつもりで合計15分まで延ばしてみた。 15分レンジにかけた玉ねぎは、予想以上にいい感じになっていた。写真ではわかりづらいかもしれないが、かなり湯気が立って透明感が増しており、これは成功の兆しが見えてきた。 次はフライパンで炒めるフェーズだ。炒め始めたのは9時43分ごろ。この玉ねぎの量で、もし20分ほどで飴色に到達すれば、大幅な時短となるだろうと期待しつつ作業を進める。 炒め始めて約10分経過すると、かなり色が変わってきた。この時、玉ねぎの水分が完全に飛ばないように、あらかじめ煮出しておいた玉ねぎの皮の出汁を少しずつ継ぎ足した。この方法のおかげで、単純に炒めるよりもきれいな色がついている気がする。 結局、最終的に約30分ほど炒めた。写真を見てもらえばわかる通り、かなり美味しそうな飴色玉ねぎに仕上がった。欲を言えばもう少しだけ炒めて完全なペースト状にしたかったが、時間的にも限界だったので今回はここで完成としたい。 出来上がったグレービーは、ラップで小分けにして冷凍すれば1ヶ月ほど保存可能だ(おそらく1週間も経たず食べきってしまうと思うが)。保存したグレービーは、キーマカレーなら炒めた挽肉とヨーグルトと一緒に溶かして仕上げるなど、さまざまな料理に応用できるので、ぜひ試してほしいと思っている。

  • Securing Image Permissions for Our Programming Workshop Posters with DFRobot’s Support / DF Robot社よりmicro maqueen製品画像の使用許可をいただく

    Securing Image Permissions for Our Programming Workshop Posters with DFRobot’s Support / DF Robot社よりmicro maqueen製品画像の使用許可をいただく

    ルークスでご支援しているプログラミング講座のポスター作りのために「何かいい素材ないかなー?」と悩んでいたところ 「そうか、マックイーンの写真使えばいいのか」 と気づき早速製造元のDF Robot社に連絡を入れてみました。連絡先はこちらに記載されているストアサポートのメールアドレスです。 送付したメールは下記のとおりです。 Dear DF Robot Team, My name is Kichinosuke Fukuhara, and I am organizing a free programming workshop at our local library. We plan to use the following product in the workshop:https://www.dfrobot.com/product-1783.html I am writing to request permission to use an image of this product in our promotional materials, such as…

  • リバースプロキシ設定の見直し:NGINXサーバーで404エラーを解消した事例

    リバースプロキシ設定の見直し:NGINXサーバーで404エラーを解消した事例

    きっかけ 家のwifiルーターを変えたら自宅で使ってるウェブアプリが使えなくなった・・・ 1. 発生した問題と状況 2. 分析と確認事項 3. 具体的な修正内容とコード例 (1) Nginx リバースプロキシ設定の修正 修正前 (例):誤ったサーバ名が設定されていた場合 修正後: この修正により、Nginx が正しいサーバ名でリクエストを受け、適切な UNIX ソケットに転送できるようになるはずだった。 (2) Nginx の設定変更後の反映 しかしながら設定ファイルを修正しただけでは、Nginx は古い設定のまま動作していた。そのため、以下のコマンドで設定変更を反映させる必要があった・・・。 Nginx が新しい設定内容(正しいサーバ名など)を読み込み、リバースプロキシとして正しく動作するようになった! 4. 一連の学び

  • Simplicity is the Ultimate Sophistication / シンプルis 究極:micro:bitとMaqueenで学ぶ組込み開発

    Simplicity is the Ultimate Sophistication / シンプルis 究極:micro:bitとMaqueenで学ぶ組込み開発

    はじめに 最近、MaqueenロボットカーとそのラインセンサーのPython実装に取り組む機会があった。当初は「より良い」キャリブレーション機能を実装しようとしたが、予想外の困難に直面し、結果として大きな学びを得ることになった。この記事では、その過程で見つけた「シンプルさの価値」について共有したい。 最初のアプローチ:複雑な機能を目指して 最初の計画は野心的だった。環境の変化に対応できる高機能なラインセンサーキャリブレーションシステムを作ろうと考えた: しかし、micro:bitに書き込んだ瞬間、問題が発生した。 直面した問題:制約との闘い MemoryError: Memory allocation failed 最初のエラーはメモリ不足。 機能を削って再挑戦したが、今度は違うエラーが出た: object has no attribute ‘read_analog’ さらに文字列処理でも問題が: cannot mix bytes and no bytes literals 特に文字列とバイト列の扱いが面倒だった。 通常のPythonでは当たり前のコード がMicroPythonでは動かない。.format()メソッドに変更したが、これも同様なエラーが起こる。いったい本家のpxt-maqueenはどう実装しているのだろう? 原点回帰:本家コードから学ぶ DFRobotの公式pxt-maqueenコードを調査したところ、驚くべき発見があった: なんと、本家はキャリブレーション機能すら実装していなかった!単にデジタルピンから0/1の値を読むだけの超シンプルな実装だったのだ。 バージョン5でもI2C経由になるものの、基本的にはデジタル値を返すだけの単純な実装だった。 学び:シンプルさの勝利 この発見から下記の気づきを得た: 最終的な実装 本家に倣った超シンプルなものになった: 結論:シンプル is この経験から得た最大の教訓は、「複雑な問題に対しても、単純な解決策が最良の場合がある」ということ。ハードウェアの制約を理解し、その中で最も効率的なアプローチを見つけることが重要なのかもしれない。 最初は「より良いキャリブレーション機能」を目指したが、結果的には「キャリブレーションを必要としないシンプルな実装」が最適解だった。時には、機能を増やすことよりも、不要な複雑さを取り除くことの方が価値がある。 組込み開発で成功するためには、技術的な知識だけでなく、制約の中で最適なバランスを見つける知恵が必要だということを、学ぶことができた。 参考リンク https://github.com/DFRobot/pxt-maqueen https://microbit-micropython.readthedocs.io/

  • fatal: could not create work tree dir YOUR_REPOSITORY: Permission denied

    fatal: could not create work tree dir YOUR_REPOSITORY: Permission denied

    ラズパイでアプリをホストしようとgit cloneしようとしたときに表題のエラーが発生。 私個人で使うマシンなので特定ユーザーに/opt以下の所有権を与えるとgit cloneが成功する

  • Could not open a connection to your authentication agent. – sshエージェントが起動してない場合の対処法

    Could not open a connection to your authentication agent. – sshエージェントが起動してない場合の対処法

    きっかけ SSHエージェントが起動していない or その接続情報がシェルに設定されていないっぽい 対処方法とコマンド sshエージェントをバックグラウンド起動し、エージェントの「接続情報」を現在のシェルに設定。これにより、後で秘密鍵をエージェントに登録し自動的に認証できるようになるはず エージェントは起動した模様だが、鍵が追加されていない ホームディレクトリ内の .ssh フォルダにある id_ed25519 という秘密鍵をsshエージェントに追加。登録された鍵は、GitHubなどに接続する際に自動で使われ、公開鍵認証によって安全に接続できるようになる。※鍵の名前が異なる場合は、適切なパスやファイル名に変更が必要

  • Deploying-a Scalable Flask Application on Raspberry Pi with Gunicorn and Nginx: A Step-by-Step Guide

    Deploying-a Scalable Flask Application on Raspberry Pi with Gunicorn and Nginx: A Step-by-Step Guide

    概念図 永続デプロイの手順 01. リポジトリのクローン 02. gunicornを使って起動テスト 03. systemdの設定と永続化 アプリをサービス登録して、システム起動時に自動開始させる 04. (参考)nginxを使ったデプロイ まとめ

  • マイクラで雪合戦ゲームを作る

    マイクラで雪合戦ゲームを作る

    狙い 前回振り返り 全体設計図(mermaid) 各ブロックの設定コマンド一覧 ステップ 説明 コマンド例 (例として) 実行方法・タイミング 0. スコアボードのリセット 既存のスコアをリセットし、クリーンな状態にする /scoreboard players reset @a Life 一括実行(ゲーム開始前に実行)<br>※Impulse (Needs Redstone) 1. スコアボードの初期設定 プレイヤーのライフ管理用 Objective「Life」と、ゲーム開始用トリガー Objective「GameStart」を作成する /scoreboard objectives add Life dummy “ライフ”<br>/scoreboard objectives add GameStart trigger “ゲーム開始” 一括実行(サーバー起動時・データパックロード時)<br>※Impulse (Needs Redstone) 2. ゲーム開始トリガー実行 プレイヤーまたは管理者が /trigger コマンドでゲーム開始の合図を送る /trigger GameStart set 1 個別実行(必要に応じ手動実行) 3. プレイヤーの初期化 全プレイヤーのライフを初期値(例:10)に設定し、ライフをサイドバーに表示する /scoreboard players set…

  • microbitを買える日本の正規オンライン通販サイト

    microbitを買える日本の正規オンライン通販サイト

    こちらで4つのサイトが確認できます。 Iftiny Switch Education or Switch Science micro:bit(マイクロビット) v2.2 りかなび マイクロビット micro:bit V2(1個) どこで買えばいいか?

  • Supabaseインストールエラーを解決!HomebrewでのGCCインストール手順とトラブルシューティング

    Supabaseインストールエラーを解決!HomebrewでのGCCインストール手順とトラブルシューティング

    前回記事: https://loochs.org/blog/computer/success-story-installing-docker-on-amazon-linux-x86-and-deploying-chatbot-ui/ 目次 1. Supabaseインストールエラー まず、Supabaseをbrew install supabase/tap/supabaseしようとした際に以下のエラーメッセージが表示されました。 2. GCCのインストール GCCがインストールされていないとのことで以下のコマンドを実行してGCCをインストールします。 3. GCCのバージョン確認とシンボリックリンクの作成 できたっぽいので次に、GCCのバージョンを確認します。インストール後に以下のコマンドを実行して確認します。 command not foundエラーが発生。 GCCのバイナリがシステムの標準パスに含まれていない可能性があるため確認してみます。 この場合にはシンボリックリンクを以下のように作成します。 改めてgcc versionの確認 4. Supabaseの再インストール 再度、Supabaseをインストールします。 まじか 5. まとめ supabaseのインストール時に発生した問題を解消するためgccインストールを試みたが失敗しました。Clangで試してみようかな。