rpgamer.com
ゲーム(幻想水滸伝)、デジタル家電、PC、Linux、VPSなど、「何でもあり」なブログです。
Twitterやプログラミングなどの話題も取り扱っています。
CentOS 7 で Lua を make しようとしたときに「致命的エラー: readline/readline.h: そのようなファイルやディレクトリはありません」と出るとき
起きている現象 $ curl -R -O http://www.lua.org/ftp/lua-5.3.4.tar.gz $ tar zxf lua-5.3.4.tar.gz $ cd lua-5.3.4 $ make linux test lua.c:82:31: 致命的エラー: readline/readline.h: そのようなファイルやディレクトリはありません #include <readline/readline.h> 結論 $ sudo yum install libreadline-dev libreadline-dev をインストールした後のコンパイルの結果 $ make cl…
expect コマンドで "[" や "]" を表現する(エスケープする)ためには「バックスラッシュを3つ」用いる
結論 例えば以下の expect ですと、[y/N] という文字列を待つことになります。 expect -c ' expect "\\\[y/N\\\]" '
Letter Opener を WSL2 で用いると、ローカルファイルが開かれる時にファイルが見つからない(当然)
Letter Opener github.com ローカルファイルが開かれる 例えば、tmp/letter_opener/1648090024_918493_6bde588/rich.html のようなファイルが開かれるとします。 その時、WebブラウザがリクエストするURLは file://home/USERNAME/.ghq/github.com/FOO/BAR/tmp/letter_opener/1648090024_918493_6bde588/rich.html のようになります。 Windows からはこのパスは存在しないので Not Found になります(当然)。
git commit を実行したらフリーズしてしまう場合の対処法(レア)
結論 gpg を再起動します。kill したあとは自動で起ち上がります。 $ gpgconf --kill gpg-agent 状況 相当待つとエラーメッセージが出ました。 $ git commit error: gpg はデータを署名するのに失敗しました fatal: failed to write commit object 補足 VSCode 内のターミナルで署名のパスワード入力に失敗するとこの現象になってしまいました*1。 *1:別途ターミナルでは起きない
i18n-next や next-translate にてコロンが含まれていると正しく翻訳されない問題
結論(理由) デフォルトで名前空間のセパレータとして定義されているから。 以下は next-translate の README です。 gyazo.com どうするか 設定ファイルで定義を変えます。当然ながら名前空間側のの記述方法が変わってくるので注意が必要です。 next-translate ならば i18n.js (i18n.json) に以下のように書きます*1。 nsSeparator: false 参考 github.com *1:名前空間を一律無効にする場合
結論 検索語に 月/日/年 を用いる。 例 2/14/2022 だめな例 2022/2/14
GitHub Actions の ubuntu-latest に内包されている PostgreSQL を使う
結論 以下のようなアクションを書くと、 ホストは localhost ポート番号は 5432 ユーザー名は postgres_user パスワードは postgres_password な PostgreSQL が起動できます。 services での構築は不要です。 - name: PostgreSQL を起動する run: # https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-Readme.md#postgresql sudo systemctl start postgre…
GitHub Actions で CircleCI のように SSHデバッグ をする方法
結論 "Debugging with tmate" を使う。 github.com 使い方 使い方は公式ドキュメントに詳しく書かれています。 mxschmitt.github.io 以下の画像のような感じで SSH の接続情報が表示されるので、コピペして ssh コマンド を実行すればログインできます*1。 gyazo.com 実際にどう書くか 実際には以下の内容を追記すればいいと思います。 1. on: の箇所に workflow_dispatch: を書く workflow_dispatch を指定することで、手動発火を契機に SSH接続 をすることができるようになります*2。 2. St…
Capybara で複数回の同じ send_keys を送るときのスマートな書き方
結論 find('#search').send_keys(*([:backspace] * 8)) 参考 2、3回ぐらいならば以下で良いと思います。 find('#search').send_keys(:backspace, :backspace, :backspace)
WSL2 かつ Ubuntu 22.04 にて snap を用いないで Firefox を使う
結論 以下のページのとおりです。snap やら systemd やらの面倒なことは飛ばせます*1。 www.omgubuntu.co.uk 元に戻す時 以下のファイルを消せば(だいたい)なかったことになります。 /etc/apt/sources.list.d/mozillateam-ubuntu-ppa-jammy.list /etc/apt/apt.conf.d/51unattended-upgrades-firefox /etc/apt/preferences.d/mozilla-firefox 補足 これで Cypress で全ブラウザが出ました。Playwright でも OK でした…
Vue Test Utils にてコンポーネントを遅延読み込みしている際に出る Vue warn への対応
#結論 コンポーネントをマウントするときに stubs プロパティを用いて明示的にスタブ化する。 具体例 以下のような感じでコンポーネントを遅延読み込みしているとします。 components: { ChienComponent: () => import("path/to/chien_component") }, このとき、テスト側では次のようにマウントします。 wrapper = shallowMount(YourComponent, { // (省略) stubs: { ChienComponent: true } }); 結果、テスト上の HTML ではちゃんとスタブ化されています。c…
Capybara で要素が「存在する」「存在しない」をテストする方法
結論 have_selector マッチャを用いる。 例 expect(page).to have_selector "#submit" expect(page).not_to have_selector "#cancel" 補足 非表示要素を取り扱う際などは *options で様々な設定が可能です。 chaika.hatenablog.com
Cypress にて「ある要素が持つテキストを配列として取得してその内容をテストする」方法
前提 以下のような HTML があるとして、この4つの文字列を配列として扱い、期待通りであるかどうかをチェックするテストを書きたいとします。 <div class="hoge fuga">ああああ</div> <div class="hoge fuga">いいいい</div> <div class="hoge fuga">うううう</div> <div class="hoge fuga">ええええ</div> 結論 jQuery のメソッドを使います*1。 具体的には以下のようになります。 // jQuery のオブジェクトであることが分かるように、変数名の先頭に $ を付けるのが慣習のようだ…
Discord.js でスラッシュコマンドの登録を解除する方法
結論 空のコマンドの配列 [] を登録する。 例 discord.js Guide の こちらのページ の例でいうと、次のようになります(関連箇所だけを抜粋)。 rest.put(Routes.applicationGuildCommands(clientId, guildId), { body: [] }) .then(() => console.log('Successfully registered application commands.')) .catch(console.error); 原文では rest.put(Routes.applicationGuildCommands(c…
ffmpeg を用いて動画のタイトル(メタデータ)を設定する方法
結論 $ ffmpeg -i input_video.mp4 -metadata title="ここに動画のタイトルが入る" -c copy output_video.mp4 確認方法 確認するためには ffprobe コマンドを用います。 $ ffprobe output_video.mp4 (省略) Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output_video.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 ti…
結論 yt-dlp を使う 認証には Cookie を使う 参考 github.com 補足 会員限定の生放送動画(URL が https://live.nicovideo.jp/ で始まる動画)は Streamlink を使う必要があります
Netscape フォーマットの Cookie File とは
結論 以下のようなテキストファイルです。なお、空白部分は全てタブです。 # Netscape HTTP Cookie File # This file is generated by yt-dlp. Do not edit. .foo.example.com TRUE / FALSE 1647672197 barbarfoobar 1647067397 ファイルを取得するには Cookie を何らかの形で書き出して上記の形に整形する、という方法も無くはないですが、拡張機能を使うのが楽でしょう。 Chrome (Edge) chrome.google.com Firefox addons.moz…
結論 Dropbox の Webアプリで見る。 補足 公式ドキュメントにて推奨されています。 docs.microsoft.com gyazo.com
Cypress で console.log 的にターミナルにプリントデバッグしたいとき
結論 task という機能(コマンド)を使います。公式ドキュメントのとおりです。 docs.cypress.io cypress/plugins/index.js に上記の内容をコピペします。 プリントデバッグしたい箇所で、 cy.task('log', 'This will be output to the terminal') のように書きます。 補足 ログの場所はそこそこ見つけづらいので、 on('task', { log(message) { console.log(`[cy.log] ${message}`) return null }, }) のように装飾してもいいかもしれません。…
「ブログリーダー」を活用して、たっきーさんをフォローしませんか?
rpgamer.com
結論 excelapi.org 具体例 たとえば以下の URL にアクセスするとテキストで返ってきます(漢字部分は「織田信長」)。 - https://api.excelapi.org/language/kanji2kana?text=%E7%B9%94%E7%94%B0%E4%BF%A1%E9%95%B7 補足 ExcelAPI という名前ですが、単純な API として用いても OK とのことです。 excelapi.org Yahoo! に同様の API がありますが、それをラップしたもののようです*1。 注意点 1分間に300件までのレートリミットがあります。 *1:Yahoo! のもの…
結論 Mac が「大文字小文字を区別しない」からではないか。 Mac が設定上で「区別しない」場合には、 Linux では該当ファイルが見つからないことになるから。 具体例 ls コマンドを実行した場合の具体例。 Linux gyazo.com macOS gyazo.com 参考 dev.classmethod.jp 補足 めちゃくちゃハマったが、この知見はきっと活きる。
結論 VPN の接続。自分の場合は以下を VPNトンネル から除外するとうまくいった。 tailscale.exe tailscaled.exe tailscale-ipn.exe
結論 オプション -nosalt を付与する。 具体例 1. -nosalt を付与しない場合 一見同じ結果に見えますが、全て異なっています。 $ echo "hogehoge" openssl enc -e -aes-256-cbc -base64 -pbkdf2 -pass pass:foobar U2FsdGVkX19a4H6vBEvUMPTyd+Q7/27pFzaPQctnCfs= $ echo "hogehoge" openssl enc -e -aes-256-cbc -base64 -pbkdf2 -pass pass:foobar U2FsdGVkX185H8E7L8W…
前提 find_or_initialize_by にこだわるのは本質的ではなく、find_by や where などでも同じです。本質はタイムゾーンの違いです。 結論 具体例を見たほうが早いと思いますので、載せます。 NG な例 user = User.find_or_initialize_by( name: 'hoge', submitted_at: '2023/04/07 17:48:31' ) これを繰り返し実行した場合に、常に user.new_record? が true を返してしまいます。 OK な例 期待通りの動作をさせるためには、テキストでそのまま入れるのではなく Time.…
現象 SSH でログイン時に、 X11 forwarding request failed on channel 0 というエラーが出ます。 結論 現時点では機能しない*1。 参考 github.com *1:将来的には動くかも
結論 シェルの設定ファイルに例えば以下のように組み込む。 # Starting Tailscale daemon automatically if not running... RUNNING=`ps aux grep tailscaled grep -v grep` if [ -z "$RUNNING" ]; then sudo tailscaled > /dev/null 2>&1 & disown fi 補足 $ sudo tailscaled をパスワード確認無しで実行するために /etc/sudoers に追記をする必要がある*1 tailscaled の場所は which …
Activerecord-Import とは github.com 結論(どうするか) インポート時に batch_size オプションを指定してやる。 具体例 User.import!(users, batch_size: 10000) PostgreSQL が落ちたときのエラーメッセージ PQconsumeInput() SSL SYSCALL error: EOF detected (ActiveRecord::ConnectionFailed) 参考 https://webcache.googleusercontent.com/search?q=cache:jdX4uXcvCb4J:h…
結論 ここです。設置場所を考えると数メートルの USBケーブル を用いるのが無難です。 長い USBケーブル は一本持っておくといろいろ便利で、たとえば SwitchBot のカーテンレールの充電にも役立ちます。
結論 require 'rake' をする。 公式ドキュメント docs.ruby-lang.org
結論 Graphviz (CLI) はインストール済みであるとします。 $ dot -Tpdf /path/to/hoge.dot -o /path/to/fuga.pdf 具体例 Rails ERD では dot で出力が可能なところ、その dot を PDF に変換するために有用です。 「Rails ERD で最初から PDF に出力すると Git で差分が分からない(毎回差分が出る)ので dot 運用したい」というようなケースで有効です*1。 公式ドキュメント *1:dot の差分が分かりやすいかと言われると決してそうではないのですが
結論 標題のとおりです。 具体的方法 参考ページ deb版の入れ方については以下のページが参考になります。 chatnoirlibre.com 99mozillateamppa の適用のさせ方 99mozillateamppa の適用のさせ方は、どこかに 99mozillateamppa という名前と内容のファイルを用意しておいて、ステップの中で、 sudo cp 99mozillateamppa /etc/apt/preferences.d を実行してあげるといいです。 ステップ全体での 99mozillateamppa の適用のさせ方 ステップ全体としては以下のような流れで実行していきます…
結論 標題のとおりです*1。 具体例 REPO/sub 配下が submodule だとして、たとえば以下のように gh secret set したとします。 $ cd sub $ gh secret set HOGE< fuga.txt ✓ Set Actions secret HOGE for username/sub 以上のように submodule の方のリポジトリに登録されてしまいます。 正しく登録するには以下のようにします。cd してはいけません。 $ gh secret set HOGE< sub/fuga.txt ✓ Set Actions secret HOGE for us…
28:17ぐらいから32:44ぐらいまで www.youtube.com
結論 標題通りです。 マイグレーションのコードをテストと同時に書いていた際にハマりました。直接コマンドで db:migrate(:reset) すると schema.rb を見に行き、schema.rb の更新作業が走っていない場合には例えば UNIQUE制約 などが変更されません。 DBが空っぽの状態から、一定のデータを CSVインポート によって投入したいという状況のとき、DB を空っぽにする作業を行わないと既存レコードが存在してしまってエラーになるし、かといって bin/rails db:migrate:reset みたいなのを実行する行を挿入すると冒頭の現象にハマります。
gyazo.com 現象 github.com 結論(これで解決した) プロジェクトに Prettier を入れて Prettier Path には ./node_modules/prettier を指定する。 それまでは nodenv を用いた上でグローバルに入れていた*1が、プロジェクト配下に入れることで解決した。 *1:良くない
結論 GitHub 側で一度 Cloudflare のアプリを削除してから再インストールする。
結論 mecab-ipadic-2.7.0-20070801 を --with-charset=utf8 のオプション付きでビルドする。 $ ./configure --with-charset=utf8 Natto で確認する 期待通りの挙動になっているかを Natto で確認します。 > require 'natto' > nm = Natto::MeCab.new => #<Natto::MeCab:0x00007f2546c63280 @model=#<FFI::Pointer address=0x0000561020b78620>, @tagger=#<FFI::Pointer ad…
自分が意識していることは次のとおりです。 まずは(半)手動で回せるようにする 手動で回すのが面倒になってきたら自動化を考え始める 原則として必要になるまでは自動化は考えない方向で いきなり自動化すると見えなくなってくるものもある 自動化の際はそのコストを考えて、手で回す方が総じてコストが安いならば、単純作業を我慢して手で回す たとえば 1回 につき 30分 かかる試行が 10回 程度で完結する見込みならば、そのために数時間かけて自動化するのは総コスト高になる ただし、自動化の過程で気づきや経験が得られるというメリットがある 自動化が再利用できるタイプのものならば意義はある 小さく部分に分けて回…
結論 PS5 で PS4 のソフトをほぼ遊ぶことができる(後方互換性あり) Xbox Series X or Xbox Series S にて Xbox One のソフトをほぼ遊ぶことができる(後方互換性あり) 根拠 PS5 「圧倒的大多数をプレイできる」「ほとんどの PS4 ゲームをプレイできる」とあるのはごく少数の例外に対する保険的な記述 ごく小数の例としては PS VR のゲームなど 具体例として 6つ のゲームが挙げられている Xbox Series X S Xbox One のほとんどのゲームは、Xbox Series X S でプレイ可能です。 さらに、ゲームの外観とパフォ…
コナミオフィシャルショップ コナミのオフィシャルショップで販売されます。現時点ではプレオーダーで、発売予定日は今年の第三四半期です。 Now available in Official Konami Shop, the original video game soundtrack classic RPG: SUIKODEN! Fill your surroundings with the beautiful music of the Scarlet Moon Empire featuring original artwork from the Konami vault ⚔️Get yours!…
結論 Node パッケージをインストール後に、2つの Windows 実行ファイルに実行権限をつける。 $ chmod +x node_modules/node-notifier/vendor/snoreToast/snoretoast-x64.exe $ chmod +x node_modules/node-notifier/vendor/snoreToast/snoretoast-x86.exe 補足 「なにかのたびに実行権限が外れていることを気にする必要がある*1」ので、これを除外して冪等にするには、たとえば package.json に以下のように追記する*2。 "postinstal…
結論 「docker build` を実行する際の書き方」と「Dockerfile の書き方」の 2つ の書き方を適用する必要がある。 docker build を実行する際の書き方 RAILS_MASTER_KEY という環境変数に渡したいデータが格納済みとする。 $ docker build --secret id=rails_master_key,env=RAILS_MASTER_KEY --tag my_app . Dockerfile の書き方 (これより前は省略) RUN --mount=type=secret,id=rails_master_key RAILS_MASTER_KE…
上記の本*1を実際に購入する(した)方法です。一般的な ECサイト での購入手順と同一ですが、フランス語を Webブラウザ で随時翻訳しておく、などの工夫が必要です*2。 1. Third Editions のサイト(仏語)に行く 行きます。 ※サブディレクトリで /en を指定すると英語版のサイトに行けますが、そちらでは現時点*3では 幻水II本 を扱っていません 2. 幻水II本 の商品ページに行く 行きます。ここらへんから翻訳がないとつらくなってきます。 *1:以降は「幻水II本」と呼びます *2:頑張れば、あるいはフランス語が読めるならば翻訳は不要 *3:2023/04/13
結論 JavaScript (JSON) の世界で情報の受け渡しを行うため、データフォーマットとしては JSON or バイナリ*1 の世界だということです。 gyazo.com gyazo.com gyazo.com 補足 n8n のデータの流通は原則として JavaScript の世界でのことなのでこういうものだと思います Destination Key にデフォルトで指定される data という key は n8n ではデフォルトの key なので深い理由がなければいじらないほうがいいです *1:テキストも含む
結論 表題通り。 ハマった 落ちるときのエラーは次のような感じ。 rails aborted! ActiveRecord::NoDatabaseError: We could not find your database: eiyuden_crm_test. Which can be found in the database configuration file located at config/database.yml. To resolve this issue: - Did you create the database for this app, or delete it? You…
La Saga Suikoden: Une étoile au firmament du J-RPG 先日も書いた 幻水II 本の「La Saga Suikoden: Une étoile au firmament du J-RPG」ですが、版元の Third Editions からは初回版として特別仕様の表紙カバーバージョンを購入することができます。 初回版カバーの裏面には通常バージョンの表紙が印刷されている(リバーシブル)ので、初回版を購入しておけば通常版の表紙も再現できます。 ただ難点なのは、現時点ではフランス語サイトでしか通販申込みができないという点です(日本への発送は OK)。 なお…
結論 パーソナルアクセストークン (PAT) を取得し、actions/checkout を使う際に その PAT を token という key で指定する。 具体的な書き方 以下のように書きます。secrets の登録方法は省略します*1。 - name: $ git clone する uses: actions/checkout@v3 with: token: ${{ secrets.YOUR_TOKEN }} ハマったところ PAT を使えば良いことはだいたい見当がつくのですが、actions/checkout で使うとはわからなかった。README に記載はあるのですが、すぐにこれに…
一昨日のこと*1になりますが、Twitch にて 幻水II のクイズイベントが有志により開催されました。 Quiz Kit という Twitch と連携するサービスを用いて参加者がクイズに答えていくイベントです。以前に 幻水I をテーマに開催されたところ、今回は 幻水II がテーマになっています。 英語によるイベントですが、ビデオが残っていて見返せますので、雰囲気等が味わえます。興味がある方はどうぞ。 www.twitch.tv *1:2023/04/02
結論 以下のような Step を書きます。 - name: inputs と secrets の値を表示する run: echo '${{ toJson(inputs) }}' echo '${{ toJson(secrets) }}' 注意点 toJson() しないと Object と表示されます つまり、一般的に Object と表示された場合には toJson() してやれば中身が表示できます echo の引数は シングルクォート してあげないとエラーになります*1 こちら や こちら を参照のこと *1:これにハマった
La Saga Suikoden: Une étoile au firmament du J-RPG 先日記事に書いた幻水本「La Saga Suikoden: Une étoile au firmament du J-RPG」が、日本の Amazon にて Kindle版 で購入できるようになっています。 ただし、フランス語版ですので、その点は十分にご留意ください。 以下のリンクから購入できます(アフィリエイトリンクです)。 La Saga Suikoden: Une étoile au firmament du J-RPG (French Edition)作者:Remoiville, Jo…
結論 {{$now.toFormat('yyyyMMdd_HHmmss')}} gyazo.com 補足 ポイントは toFormat() です 他にも toLocaleString() などがあります 内部的に Luxon を使っているのでそのドキュメントを見ると手っ取り早いです moment.github.io
前提 macOS 13.2.1(22D68) uname $ uname -a Darwin FOOBAR.local 22.3.0 Darwin Kernel Version 22.3.0: Mon Jan 30 20:38:43 PST 2023; root:xnu-8792.81.3~2/RELEASE_ARM64_T8112 arm64 Xcode $ pkgutil --pkg-info=com.apple.pkg.CLTools_Executables grep version version: 14.2.0.0.1.1668646533 rbenv rbenv のインストール…
MinIO の場合とほとんど同じです。 obel.hatenablog.jp 事前準備 「R2 API トークンの管理」から、トークン(アクセスキーとシークレットアクセスキー)を予め作成しておきます 「エンドポイント」は https://アカウントID.r2.cloudflarestorage.com/ になるので、これも予め控えておきます gyazo.com 結論 必要な gem aws-sdk nokogiri nokogiri でなくとも ox や oga や libxml や rexml でもいいです nokogiri を選んだ理由は、Rails の場合は明示的に入れなくてよく、馴染み…
少しだけ注意する点がありますが、それ以外はいつもどおりです。 結論 必要な gem aws-sdk nokogiri nokogiri でなくとも ox や oga や libxml や rexml でもいいです nokogiri を選んだ理由は、Rails の場合は明示的に入れなくてよく、馴染み深いから、というだけで深い理由はありません コード require 'aws-sdk' s3_client = Aws::S3::Client.new( region: 'ap-northeast-1', access_key_id: 'YOUR_ACCESS_KEY_ID', secret_acce…
Rundeck とは www.rundeck.com n8n とは n8n.io 乗り換えた理由(Rundeck のつらみ) 重い メモリ 2GB の VPS で Rundeck 専用につかっても重い ジョブの一括削除すると必ずタイムアウトするか 30分 ぐらい待ってエラーとかでどうにもならなくなった 起動が遅い メモリ使用量が常時上限張り付き 乗り換えにあたって要した条件 軽いこと コードベースでジョブが扱えること IFTTT は全部ポチポチ GUI なのでジョブが増えると手に負えなくなる 柔軟性が高いこと n8n は多くの Integration に対応している n8n は多くの node…
結論 タイトルのまんまなんですが、以下、例示の画像です。 デフォルトのマイグレーションだと timestamp になります。それを timestamptz に変換してから記録したのが最新の一件になります。 gyazo.com gyazo.com 理由や原因 Open されている Issue があります*1。timestamptz への型変換はこの Issue を見て気づきました。 github.com 関連 Issue & Pull Request github.com github.com *1:この記事が公開されている頃には対応されているかも
結論 gem として google-analytics-admin-v1alpha を用います。各種データを取得するための Data API とは異なるので注意です。 公式ドキュメント cloud.google.com 具体的なコード例 具体的なコード例は次のとおりです。Data API のとき とほぼ同じです。 (1) client を定義し、 (2) リクエスト内容のオブジェクトを定義し、 (3) その内容を client のメソッドを用いて投げる、 とレスポンスが返ってくる、という流れです。 認証は Data API のとき と同じく、サービスアカウントの 認証用 JSON ファイル の…
注意 2022年12月13日(火)現在の内容です。 結論 たとえば ./dist 配下に静的な HTML などが存在し、./dist/funcions が存在するとき。 デプロイされない場合 以下のような wrangler の実行方法だと functions がデプロイされません。 $ wrangler pages publish ./dist Uploading... (8/8) ✨ Success! Uploaded 0 files (8 already uploaded) (0.41 sec) ✨ Deployment complete! Take a peek over at http…