searchカテゴリー選択
chevron_left

メインカテゴリーを選択しなおす

カテゴリーのご意見・ご要望はこちら
cancel
プロフィール
PROFILE

たっきーさんのプロフィール

住所
中央区
出身
中央区

Twitterやプログラミングなどの話題も取り扱っています。

ブログタイトル
約束の地
ブログURL
https://obel.hatenablog.jp/
ブログ紹介文
ゲーム(幻想水滸伝)、デジタル家電、PC、Linux、VPSなど、「何でもあり」なブログです。
ブログ村参加
2016/03/10
本日のランキング(IN)
フォロー

たっきーさんの新着記事

1件〜100件

  • Rails で Active Elastic Job のバージョンを上げると Sprockets::Rails::Helper::AssetNotPrecompiled エラーが出ることがある

    Active Elastic Job とは github.com バージョンアップすると Sprockets::Rails::Helper::AssetNotPrecompiled になることがある Dependabot でバージョンアップのプルリクエストが作られることがあります。その際にタグの単位ではなくコミットハッシュの単位でのプルリクエストになることがあります。 例えば、bump active_elastic_job from ec51c5d to 5528e... のような感じです。 これを安易にマージしてしまうと、Sprockets::Rails::Helper::AssetNotP…

  • VS Code の Dev Container では Dockerfile の ENTRYPOINT が実行されない(っぽい)ので "postCreateCommand" プロパティで代替する

    結論 devcontainer.json 内に、たとえば以下のように書きます。 { (中略) "postCreateCommand": ".devcontainer/devcontainer_entrypoint.sh" (中略) } 上記の devcontainer_entrypoint.sh 内に、Dockerfile の ENTRYPOINT の内容を移植すればよいかと思います。独自のコマンド等を入れたい場合には、ENTRYPOINT の内容を含み、かつそれに独自のコマンドを追記する形になるでしょう。 参考 github.com qiita.com 補足 これだと Dockerfile …

  • GitHub Actions で直接 ${{ toJSON(hoge) }} する際に「半角スペース + #記号」が含まれていると syntax error になる

    結論 どういうことかというと、以下のような場合です。 - name: First step id: my_variables run: | echo "::set-output name=hoge::FOO #12345" - name: Second step run: | echo "${{ toJSON(steps.my_variables) }}" このステップを含んだ Action を実行すると次のようなエラーになります。 ... line 6: syntax error near unexpected token `}' どうすればいいか 公式ドキュメントにもあるように、一度環境変…

  • zsh で補完入力をしようとした際に (eval):1: command not found: と表示されるときの対処方法

    結論 .zcompdump を削除する。zplug を用いているときにはそちらの zcompdump も削除します $ rm ~/.zcompdump $ rm ~/.zplug/zcompdump 削除した後に zsh を起ち上げ直します。

  • "act" コマンド(GitHub Actions ローカル実行コマンド)では "if: failure()" は実行できない

    補足 2022/01/08 現在の情報です。 結論 GitHub Actions のローカル実行コマンドである act では、if: failure() を用いたステップは実行されません。 所感 最初は書き方が間違っているのかと思ってムキになって $ act --rm を叩いていたのですが、ふと push したら何事もなかったかのように通りました。 ハマった 2時間 が虚しい……。

  • tarball の Node.js を、ワンライナーで arm と amd を判別してダウンロードする

    結論 arch コマンドの出力を sed で処理します。 $ ARCHITECTURE=$(arch | sed s/aarch64/arm64/ | sed s/x86_64/x64/) && curl -LO https://nodejs.org/dist/v16.13.1/node-v16.13.1-linux-$ARCHITECTURE.tar.xz 補足 Dockerfile で役に立ちそうです Node のバージョンの部分*1も変数で指定するとハードコーディングが避けられます このやり方でファイル名を指定できる場合はいいのですが、命名規則によってはより複雑な sed が必要になりそ…

  • GitHub Actions をローカルで実行する act が実用的になった

    act とは これです。 github.com 使い方 1. インストールする 公式ドキュメントにはいろいろなインストール方法が書いてありますが、ここでは bash 経由でインストールします。 $ curl https://raw.githubusercontent.com/nektos/act/master/install.sh | sudo bash 2. GitHub Actions の設定ファイルが存在するリポジトリへ移動する たとえば /path/to/my_app/.github/workflows/foobar.yml というようなファイルが存在するとき、$ cd /path/t…

  • Rails を Docker 環境で動かす際にローカル環境と共存させるとエラーが出る

    結論 表題のとおりです。 .bundle とか tmp/ とか vendor/ とかがローカル環境と混ざるとエラーが起き得ます*1。Docker 環境で使うディレクトリは Docker 環境だけで使いましょう。ローカル環境で使いたい場合には別途ディレクトリを作りましょう。 *1:gem のエラー。spring などがひっかかりやすい

  • zsh で Volta のオートコンプリートを有効にする方法

    結論 1. まず補完機能用のスクリプトを出力します (_volta) 。 $ volta completions zsh -o _volta note: does not exist, creating it success: installed completions to _volta 2. 出力したスクリプトを /usr/local/share/zsh/site-functions に移動します。 $ sudo mv _volta /usr/local/share/zsh/site-functions 3. シェルを再起動します*1. 4. 補完機能が効いていることを確かめます。 $ v…

  • WSL2 内から起動するブラウザを Windows 側のブラウザにする方法($ gh repo view --web 時などで)

    結論 環境変数 BROWSER に Windows のブラウザの場所を指定する。 具体例 例えば Chrome の場合は以下のように指定します*1。 BROWSER="/mnt/c/Program\ Files/Google/Chrome/Application/chrome.exe" 参考 github.com 補足 gh だけのスコープとしたいならば、$ gh config を用いてもよいです。 *1:インストール場所が異なっていたり他のブラウザを使いたい場合には、それぞれの場所を指定して下さい

  • Windows の VS Code の Live Server で、WSL2 から Windows 側のブラウザを開く方法

    結論 settings.json に以下のような行を書き加えます。Chrome 以外のブラウザを設定したい場合には適宜書き換えて下さい。 "liveServer.settings.AdvanceCustomBrowserCmdLine": "/mnt/c/Program Files/Google/Chrome/Application/chrome.exe", 設定項目の場所 このあたりにあります。settings.json に書かないと設定できない(=VS Code 内で完結しない設定)項目です。 gyazo.com

  • RSpec (Capybara) でアラートモーダルを操作する方法

    アラートモーダルとは こういうやつです*1。 gyazo.com 結論 「はい」の選択肢を選ぶとき page.accept_confirm 「いいえ」の選択肢を選ぶとき page.dismiss_confirm ドキュメント www.rubydoc.info *1:「アラートモーダル」はおそらく正しい呼び方ではないです

  • apt で mysql-server や mysql-client を install できない(見つからない)とき

    結論 default-mysql-server や default-mysql-client をインストールします。 $ sudo apt install default-mysql-server $ sudo apt install default-mysql-client

  • Ubuntu 20.04 で [SSL: CERTIFICATE_VERIFY_FAILED] エラーが出るとき

    結論の一つ ca-certificates をインストールしましょう。 $ sudo apt install -y ca-certificates

  • PT2を用いて(おそらく PT3 でも)TVTest で「BonDriverの初期化ができません」と出たとき

    結論(の一つ) PT2 の SDK もインストールする(ドライバではない)。 earthsoft.jp

  • pip install したときにバージョン依存でインストール失敗したときの対処法

    結論 依存関係にあるパッケージを個別に入れます。そのためには以下の手順を踏みます。 1. エラーメッセージを読む エラーメッセージを読み、どのパッケージが依存関係にあるかを調べます。 2. pip show PACKAGE_NAME を実行してバージョンを調べる (ここは不要な場合もあります) $ pip show PACKAGE_NAME を実行するとそのパッケージの最新バージョンの情報が得られます。パッケージ名を前述の依存パッケージのパッケージ名に指定して、コマンドを実行します。結果はたとえば次のとおりです。 $ pip show botocore Name: botocore Versi…

  • PC から Twitter にアップロードする動画の fps は 60fps はいける

    結論 いろいろなサイトを見ると 40fps まで、みたいなことが書いてありますが 60fps まで行けました。 補足 60fps 以上もいけるかもしれません fps の上限はは他の要素との組み合わせで決まるのかもしれません 2021/11/08 現在の情報です

  • Google マップ や ロケーション履歴(ライフログ)を他のアカウントへ移行(インポート)できるかどうか

    結論 2021/10/31 現在、できません。 補足 擬似的に、あるいは形式的に移行(インポート)することは不可能ではありません*1。目的や分量によってはその方法で問題ないこともあります。 *1:そのような意図で方法を示している記事は多くあります

  • 「Twitter記念日(周年記念日)」の画像ファイルの置き場所

    結論 2021年10月31日現在、15周年の画像までを確認しています。 https://ton.twimg.com/ntab_public/twitterversary/year1.jpg https://ton.twimg.com/ntab_public/twitterversary/year2.jpg https://ton.twimg.com/ntab_public/twitterversary/year3.jpg https://ton.twimg.com/ntab_public/twitterversary/year4.jpg https://ton.twimg.com/ntab_p…

  • CircleCI の設定ファイルは分割することはできない (2021/09/25)

    根拠 https://support.circleci.com/hc/en-us/articles/360056463852-Can-I-split-a-config-into-multiple-files-support.circleci.com 補足 上記リンク先のページにもあるように、ローカルで分割して書いてそれを統合するような方法を使えば形式的には分割できます。が、よほど巨大なファイルでなければ一つのファイルにベタ書きで十分だと思います。エディタの支援があれば可読性の問題も解消されると思います。

  • GitHub Actions の runs-on で指定する Ubuntu には結構いろいろ最初から入っている

    結論 以下、公式ドキュメントの抜粋です(他にもいろいろと入っています)。 Installed Software Language and Runtime Node 14.18.1 Perl 5.30.0 Python 3.8.10 Python3 3.8.10 Ruby 2.7.0p0 Package Management Npm 6.14.15 Pip3 20.0.2 RubyGems 3.1.2 Yarn 1.22.17 Tools Docker Compose v1 1.29.2 Docker Compose v2 2.0.0 Git 2.33.1 (apt source reposit…

  • PS Vita で画面が映らない(音は出る)ときに強制再起動する方法

    結論 電源ボタンを 20秒 以上、長押しする。 するとリカバリメニューが表示され、そこからソフトウェアによる再起動が可能になります。 盲点 長押しの時間が結構な長さなので、辛抱強く押し続けましょう。

  • rclone で Minio に copy する際に Failed to read metadata: Forbidden: Forbidden status code: 403 などというエラーが出る場合

    結論 今はしょうがない。 アップロード自体は成功している。ただ、たとえばエラーメッセージで分岐するロジックを経ているようなときには注意が必要。 実例 $ rclone --update --include '*.jpg' copy . minio:foobar 2021/10/17 21:49:04 NOTICE: foobar_01.jpg: Failed to read metadata: Forbidden: Forbidden status code: 403, request id: 16AED24DD26F0575, host id: 2021/10/17 21:49:04 NOT…

  • Twitter の API で取得できる media(画像)の URL は原寸大画像を示してはいない

    結論 たとえば、API で取得できる media_url_https が https://pbs.twimg.com/media/FAlJ_JsUUAAgOSq.jpg であったとします。この URL に wget をしても原寸大画像は得られません*1。 常に原寸大画像を取得するためには https://pbs.twimg.com/media/FAlJ_JsUUAAgOSq?format=jpg&name=orig のようにします。つまり media_url_https に対して以下の処理を施します。 拡張子を取り除く(ドットを含む) パラメータとして以下の2つを付与する format=拡張子…

  • Visual Studio Code にて Git(ソース管理)の内容が永遠に更新中の状態になるときの対処法

    結論 Visual Studio Code の自動更新を適用する。 状況 こんな感じでソース管理のところの時計アイコンがずっと表示されているような状態です。 gyazo.com Visual Studio Code を更新する方法 左下の歯車アイコンを押して「再起動して更新する」をクリックすることで最新版へと更新ができます(自動再起動)。 gyazo.com

  • Ubuntu 20.04 に timg をインストールする

    timg とは ターミナルに画像を表示する CLI です。Mac でいう imgcat です。 github.com Ubuntu にインストールする方法 timg を Ubuntu にインストールします。ドキュメントには apt でインストールできるようにも書いてあるのですが現状*1では見つかりません。したがってソースコードからビルドをする形でインストールをします。 ドキュメントに書いてあるとおりですが、以下の手順になります。 *1:2021/10/17

  • Chrome で http://localhost:3000 にアクセスすると https:// に強制リダイレクトされてしまうとき

    結論 Chrome の設定メニューより「キャッシュされた画像とファイル」の削除を実行します。 具体的な方法 以下の方法は 2021/10/07 時点での方法であることには注意して下さい Chrome の設定メニューは日々変わるため、以下の情報が正確でなくなる可能性があります Windows 版 の Chrome での例です 1. Chrome のメニューから「設定」を選び、設定画面(Chrome のタブとして表示される)を開く gyazo.com 2. 「プライバシーとセキュリティ」のカテゴリを選ぶ 画面左側のメニュー一覧から「プライバシーとセキュリティ」を選びます。 gyazo.com 3.…

  • IFTTT で Discord 連携の箇所に何も出てこなくなったら連携をしなおす

    状況 こういう状況です。 gyazo.com 対応方法 「home 画面右上の自分のアイコン」→「My services」→「Discord」→「画面右上の "Settings"」のページに行き Reconnect を押します。 gyazo.com gyazo.com gyazo.com 補足 Reconnect しても、これまでに作ったアプレットに影響はありません。

  • Docker Compose で作ったコンテナ内からプロキシ経由でアクセスする方法

    結論 当該コンテナの環境変数に HTTPS_PROXY や HTTP_PROXY を追加します。 例 version: '3.8' services: foobar: (省略) environment: - HTTPS_PROXY=http://hoge.example.com:12345 - HTTP_PROXY=http://fuga.example.com:54321 (省略)

  • \u 始まりの Unicode でエンコードされたテキストが含まれている JSON は jq を通せば UTF-8 にデコードされる

    実例 たとえば以下のような JSON (sample.json) があったとします。 { "keyword": "\u751f\u5f92\u4f1a\u9577" } 上記の keyword の値である \u751f\u5f92\u4f1a\u9577 の部分を UTF-8 にデコードした JSON を出力するには jq を通せばよいです。 $ cat sample.json | jq { "keyword": "生徒会長" } 補足 \x はじまりのエンコードテキストの場合には Parse error になります。

  • Cypress で npm のライブラリを使いたい場合にはプラグイン側にロジックを書いて cy.task で呼び出して使う

    結論 ドキュメントに書いてあるとおりです。 docs.cypress.io The code you write in Cypress is executed in the browser, so you can import or require JS modules, but only those that work in a browser. 具体例 具体例についてもドキュメントに書いてあります。fs を用いる例です。 docs.cypress.io // in plugins/index.js const fs = require('fs') module.exports = (on,…

  • touch コマンドでは存在しないディレクトリを指定することはできない

    結論 標題通りです。 例えばカレントディレクトリに tmp/ というディレクトリがない場合に tmp/foobar.txt を作ろうとすると以下のようにエラーになります。 $ touch tmp/foobar.txt touch: 'tmp/foobar.txt' に touch できません: そのようなファイルやディレクトリはありません mkdir でいう -p のようなオプションはありません。 解決方法 エラーを起こさないようにするならば、以下のコマンドでいいでしょう。mkdir の -p オプションはディレクトリが既に存在する場合には何もしない(エラーも返さない)ので、以下のコマンドは冪…

  • Windows の Xbox アプリでソフトをダウンロードしているときに CPU の使用率が 100% に張り付く

    結論 標題のとおりです。 大きめのゲーム(100GB超)をダウンロードしている間はプチフリーズが頻発します。 補足 2021/11/09 現在の情報です。

  • Rails で CI 中の db:create 時に LoadError: cannot load such file -- rexml/document が出る場合

    結論 rexml gem を追加します。 具体例 Gemfile の group :test に以下のように追加すればよいでしょう。 group :test do (省略) gem 'rexml' (省略) end 参考 stackoverflow.com

  • CircleCI 内で Docker のコマンドを使いたい場合

    結論 steps の中で setup_remote_docker を実行(記述)した後、docker コマンドを実行します。 具体例 NG な例(setup_remote_docker を実行しない場合) setup_remote_docker を実行しないと次のようにエラーになります。 .circleci/config.yml は次のとおりとします。 version: 2.1 executors: ubuntu: docker: - image: cimg/base:stable-20.04 jobs: foobar: executor: ubuntu steps: - checkout -…

  • CircleCI の Workflow で依存関係を requires で指定する際の名称は name: の設定でなければいけない

    結論 具体例を見たほうが早いと思います。 以下のような Workflow(抜粋)があり job_a -> job_b と実行したいものとします。 sample_workflow: jobs: - job_a: foo: 'bar' - job_b: requires: - job_a 上記の YAML は正しい書式です*1。 注意するケース job_a に name: が設定されている場合には注意が必要です。その際には requires: の指定名は name: の名前を指定しなければいけません。job_a という名前を指定するとエラーになります。 以下がエラーが出るケースです。 sample…

  • CircleCI と GitHub Actions のどちらを使うか

    注意 2021/09/25 時点での状況に基づいています。 結論 GitHub Actions を選んでおけばまず問題ない 業務で課金前提なら CircleCI もあり プライベートリポジトリの利用形態によっては CircleCI もあり 前提 前提として、CircleCI と GitHub Actions での無料利用時間の上限は以下のとおりです。 無料利用時間上限 GitHub Actions パブリックリポジトリでは上限なし プライベートリポジトリでは月2,000分または月3,000分 単位は ユーザ や Organization *1 CircleCI パブリックやプライベートの関係は…

  • CircleCI で SSH する(実行コンテナの中に入る)方法

    結論 1. 「Rerun」メニューから「Rerun Job with SSH」を選ぶ gyazo.com 再度ジョブが実行されます。時間がかかるジョブの場合は待ちます。 2. 実行ステップの最後に「Wait for SSH sessions」と現れるので、そこの詳細を見る 以下のように SSH するアドレスとポートが表示されています。 gyazo.com 3. ログインする(鍵が必要な場合は指定する) 「2.」の SSH のコマンドを実行してログインします。表示されているメッセージにもあるように、GitHub などの鍵が必要になることがあります。 鍵が必要な場合は以下のように指定します。 $ …

  • AWS CLI の補完を zsh で有効にする

    結論 ~/.zshrc に以下の内容を追記します。 autoload -Uz compinit && compinit autoload -U bashcompinit && bashcompinit complete -C '(aws_completerの実行コマンドの場所)' aws 例 私は pyenv を用いて Python 版の AWS CLI を用いていますので、以下の内容を ~/.zshrc に追記しました。 autoload -Uz compinit && compinit autoload -U bashcompinit && bashcompinit complete -C…

  • Ubuntu に Edge を CLI でインストールする方法

    結論 1. Edge の Insider ダウンロードページに行く www.microsoftedgeinsider.com gyazo.com 2. Linux (Debian / Ubuntu) のダウンロードリンクをクリックする gyazo.com 3. 遷移先のページで「手順を取得する」をクリックする 「手順を取得する」を押し、ライセンスに同意します。 gyazo.com 4. コマンドが現れるので順次入力する ライセンスに同意するとコマンドが現れますので、順次入力していきます。 gyazo.com 5. インストールが完了する インストール完了後に以下のコマンドを実行してバージョンが…

  • Ruby で URL から正規表現で各種文字列(ファイル名など)を抽出する

    結論 RFC3986 に従います(後述)。 たとえば対象とする URL が https://pbs.twimg.com/media/FAlJ_JsUUAAgOSq?format=jpg&name=orig であったとします。そのとき、以下のように抽出できます。 url = 'https://pbs.twimg.com/media/FAlJ_JsUUAAgOSq?format=jpg&name=orig' /\A(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?\Z/.match(url) 実行結果 実行結果は以下のようになり…

  • lsd コマンド (LSDeluxe) のインストール時には master ブランチからインストールしないと theme ファイルが効かない

    lsd (LSDeluxe) とは Rust 製の Alt ls です。「すごい ls」です。 github.com 原則として master ブランチからインストールする cargo でインストールする際に $ cargo install lsd とすると最新のバージョンが入りません。その結果 theme ファイルが適用されません*1。 インストールする際には直接 master ブランチ経由で入れましょう。 $ cargo install --git https://github.com/Peltoche/lsd.git --branch master 補足 設定ファイルの置き場所 設定ファ…

  • Rails のコードの中で突然現れる reset_password_email というメソッドはどこで定義されているのか

    結論 Sorcery が定義しています*1。 Sorcery とは 公式ドキュメント *1:Sorcery を使っている場合。使っていない場合にこのメソッド名を使うと将来的に衝突する可能性はあります

  • Storybook で webpack の output を設定してしまうと正しく表示されない

    理由 Storybook の表示に用いられる iframe.html などが output のディレクトリに作られてしまうから*1。 具体例 .storybook/main.js に以下のように書くと output のディレクトリが設定されてしまいます。 module.exports = { (省略) webpackFinal: async(config, {configType}) => { config.output = { path: `${__dirname}/tekitou`, }, (省略) *1:設定で変えられるとは思います

  • Storybook で SCSS を使えるようにする

    注意 フロントエンドは移り変わりが激しいため、この方法が誤りになる可能性があります 2021/09/06 時点での情報です 結論 1. sass-loader の v10 を入れる 最新版を入れてしまわないように注意する*1。 $ yarn add --dev sass-loader@^10.0.0 2. style-loader と css-loder を入れる $ yarn add --dev style-loader css-loader 3. .storybook/main.js を修正する 以下のように修正します。 module.exports = { // (ここまで省略) web…

  • CircleCI の steps 内で条件分岐をする方法

    結論 when を使います。run: の step 内のシェルスクリプトで分岐する方法はよく見るのですが、step そのものを分岐します。 circleci.com 使い方具体例 公式ドキュメントに書いてあるとおりです。steps: 配下に when: を書き、その配下に condition: を書き、そしてその配下に条件分岐を書きます。条件を満たした場合、その when: の内容が実行されます。 condition: を記述するか否かについては注意が必要です。公式ドキュメントにあるように、jobs: 配下の記述においては condition: の表記が必要になります。 一方で workflo…

  • deasync のインストール(ビルド)に失敗するときの対処方法

    結論 node-gyp を入れる。 現象例 以下のような感じで npm / yarn で入れるときにエラーが出る場合です。 ➤ YN0007: │ deasync@npm:0.1.21 must be built because it never has been before or the last one failed ➤ YN0009: │ deasync@npm:0.1.21 couldn't be built successfully (exit code 1, logs can be found here: /tmp/xfs-0c891e14/build.log) ➤ YN0000…

  • Cypress の Free プランは上限に達するのが早いのでダッシュボードに記録する実行対象を絞る

    前提 CI で Cypress を回す際に何も考えずに全実行しているとあっというまに Free プランの枠を食いつぶしてしまうので、実行する対象を絞ります。 もちろん、Free プランでないならばリッチに使いましょう。 Free プランの上限 Free プランの上限(制限)は、「Test Results が毎月 500 まで」です(公式ドキュメント)。 gyazo.com この「Test Results」というのが曲者で、これは「Cypress コマンドの実行回数ではなく、いわゆる Spec の数」です。その数はダッシュボードから確認できます。 gyazo.com 開発ペースにもよりますが、一…

  • Facebook で時系列順に表示する方法

    結論 URL のパラメータとして sk=h_chr を付与する。 具体的には https://www.facebook.com/?sk=h_chr になります。 問題点 サイト内遷移(左上の f ボタンを押した場合など)にはパラメータを引き連れないために時系列順表示になりません。したがって、ブックマークに入れておいて逐次そこからアクセスするなどの工夫が必要です。 参考 www.facebook.com

  • Vue.js v3 でコンポーネントが表示されずに困ったときに判明した理由

    結論 components: { Hoge } と書くべきところを component: { Hoge } と書いていたから(複数形にしていなかった)。 感想 一度通っておけば以後は間違えないタイプのやつです*1。 *1:そういう意味では一度通ったというのは意義があったことなのかもしれない

  • ArchiveBox の使いどころ

    ArchiveBox とは いわゆる「魚拓」の OSS 版です。 github.com スクリーンショット 使い方 使い方は簡単です。公式で推奨されているように Docker Compose でほぼ事足りると思います*1。 設定 設定はデータボリュームのディレクトリ内の ArchiveBox.conf に書きます。WGET_USER_AGENT と TIMEOUT を適切に設定しないとダウンロードに失敗することが多かったので、そのあたりの設定をいい感じにいじります*2。 使いどころ ここからが本題です。 いわゆる「魚拓」がしたいならばそれこそ特化したウェブサービスを用いるほうが簡単です。たとえ…

  • Yarn v3 (v2) を入れたら "scripts" が実行できなくなった場合

    結論 ワイルドカードが含まれている場合はクォートでくくりましょう。 具体例 例えば、以下のような書き方だとエラーになります。 "scripts": { "hoge": "yarn clean && run-s -c hoge:*", ワイルドカードが含まれる場合は以下のようにクォートでくくります。 "scripts": { "hoge": "yarn clean && run-s -c \"hoge:*\"", 補足 シングルクォートでくくるかダブルクォートでくくるかですが、エスケープする手間と可読性を考えるとシングルクォートの方がいい気がします。

  • Windows 11 では Serato で Mixtrack Pro II は使えないっぽい

    注意 2021/09/29 現在の情報です。 結論 標題のとおりです。接続するとステータスバーに「接続中……」というメッセージが出ますが、数分後に接続が失敗した旨が表示されます。 Windows 自体にはデバイスは正しく認識されています。 Serato とは DJ ソフトウェアです。 dirigent.jp Mixtrack Pro II とは Numark の DJ コントローラです。 numark.jp 購入したのは 2014年 でした。 gyazo.com 補足 VirtualDJ 2021 では正しく認識されました。 www.virtualdj.com

  • GitHub Actions の Runner を自前で立てる(セルフホスト self-hosted)ことについて

    箇条書きで書いていきます。 公式ドキュメント docs.github.com 大前提 パブリックリポジトリでは使う意義はほぼ無いと思います パブリックリポジトリは GitHub謹製 のランナーの時間制限がないから セルフホストのランナーにはセキュリティ上の懸念が生じる可能性があるから つまり、以下の内容は全てプライベートリポジトリで利用することが前提となります インストールについて 出てきたスクリプトをコピペして実行するだけなのですぐにできる arm64 にも対応しているほか、Windows や Mac にも対応している 実行について 永続的に実行指定ならば nohup ./run.sh & …

  • GitHub Actions 内で任意のファイルを用いる場合には .github/ に置かない

    結論 - uses: actions/checkout した際には .github/ は持ってきてくれないため、file not found になるからです。 邪魔にならないところにまとめておくのがいいと思います*1。 補足 checkout した際に持ってきてくれているファイルは steps 内で run: ls -la すると分かります。 *1:一例として、lib/github_actions_resources など

  • GitHub Actions と CircleCI を「ローカル環境実行」という観点で比較

    注意 2021/09/26 時点での情報です。 前提 GitHub Actions では act を用います gh コマンド は push されたものを手元から発動するコマンドであって、ローカル環境に存在するジョブを実行するものではないです CircleCI では 公式の CLI ツール を用います 結論 ちょっと込み入った使い方をする場合には act はつらいという印象です CircleCI には YAML のバリデータがある*1ので、それについては CircleCI が便利 act は厳密なチェックをしてくれるという意味では有用でもあるし不便でもある 例えば、特定の on: でしか使用しな…

  • Cypress で対象セレクタが複数ある中から任意のセレクタを選ぶ方法とその際の注意点

    結論 cy.get('.foobar').eq(3) のように、get したあとに eq で取得できる 注意点として、get の戻り値を変数に格納している場合、eq を実行してしまうと格納した変数のオブジェクトは変更される シャローコピーになるということ 具体例 以下のような HTML があったとします。 <html> <head></head> <body> <div class="foobar">1</div> <div class="foobar">2</div> <div class="foobar">3</div> <div class="foobar">4</div> <div c…

  • OS起動時に Elasticsearch などの「重い」サービスがタイムアウトで自動起動に失敗するときの対処法

    前提条件 Ubuntu です。 エラー例 以下のようにタイムアウトでエラーになります. $ sudo service elasticsearch status ● elasticsearch.service - Elasticsearch Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled) Active: failed (Result: timeout) since Sun 2021-08-29 15:31:13 JST; 19s ago Docs: https:…

  • Elasticsearch のデータディレクトリを変更する際は /etc/elasticsearch/elasticsearch.yml を変更するだけではだめ

    結論 /etc/elasticsearch/jvm.options にもディレクトリを指定するところがありますので、そちらも変更します。 補足 /etc/elasticsearch/elasticsearch.yml 内に自分で追記したディレクトリがある場合には、それにも注意する必要があります*1。 *1:たとえば configsync.config_path:

  • MinIO をサービスとしてインストールする

    MinIO とは S3 互換の OSS です min.io サービスとしてインストールする Download のページには単一バイナリを落としてきてからの起動方法が書かれています。これは確かに簡単なのですが、実際にはサービスとして起動する方が便利です。 サービスとして起動する(登録する)方法は GitHub のドキュメント に書いてあります。以下、その方法です。 結論 1. MinIO を /usr/local/bin 配下にインストールする Download より、パッケージマネージャを使ってインストールすると自動的に /usr/local/bin 配下にインストールされるので、これが楽でし…

  • Ubuntu 20.04 に Elasticsearch を apt でインストールする

    補足 Raspberry Pi でインストール可能でした*1。 結論 Java のインストールについては省略します 公式ドキュメント のままです 1. PGP Key のインポート $ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - 2. 必要パッケージのインストール $ sudo apt-get install apt-transport-https 3. リポジトリ定義の追加 $ echo "deb https://artifacts.elastic.co/packages…

  • メディアサーバ Booksonic を Ubuntu で war で動かす場合の注意点

    Booksonic とは Subsonic のフォークのフォークという感じのプロダクトです。 booksonic.org 注意点 Java のバージョンは 1.8系 でなくてはならない db や log などの場所は /var/booksonic sudo (root) で $(which java) -jar booksonic.war --server.port=5000 などのように実行する必要がある したがって jenv を用いる場合には root ユーザ用に jenv を設定しておく必要がある Raspberry Pi (arm64) でも問題なく動作した transcoder やフ…

  • Ubuntu 20.04 で PostgreSQL 13 をインストールする

    背景 現状では、単に $ sudo apt install postgresql をした場合に 12 が入るので、13 が入るようにしたいです。 結論 公式ドキュメント に従います。以下、ドキュメントのコマンド部分だけの抜粋です。 $ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' $ wget --quiet -O - https://www.postgresql.org/media/…

  • Ubuntu 20.04 で PostgreSQL 12 をアンインストールする

    結論 $ sudo apt purge postgresql-12 背景 13 を入れようとして 12 が残ってしまった場合に、12を明示的に削除したいときに実行します*1。 *1:なお、12が残っている状態で13を入れるとポート番号がずれるので、両方を削除して13のみを入れ直すことになります

  • Ubuntu 20.04 で mysql2 gem のインストールに失敗するとき

    結論 libmysqlclient-dev を入れましょう*1。 $ sudo apt install -y libmysqlclient-dev これで bundle install が通るはずです。 参考 検索用に、エラーメッセージ例です。 Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /FOO/vendor/bundle/ruby/3.0.0/gems/mysql2-0.5.3/ext/mysql2 /home/BAR/.rbenv/versions/3.0.2/…

  • CircleCI で Rails の db:create に失敗するときの対処法

    前提条件 以下のような環境です。 Ruby のイメージは circleci/ruby:3.0.2 データベースは PostgreSQL エラーメッセージ 以下のようなエラーメッセージが出ます。 #!/bin/bash -eo pipefail bundle exec rails db:create rails aborted! LoadError: libffi.so.6: cannot open shared object file: No such file or directory - /home/circleci/repo/vendor/bundle/ruby/3.0.0/gems/f…

  • Ubuntu で pip install に軒並み失敗する場合の対処方法

    重要な点 pyenv を使っている場合はパッケージをインストールした後に「アンインストール」→「インストール」する必要があります。 結論 各種パッケージを入れましょう。 $ sudo apt install -y build-essential libbz2-dev libdb-dev libreadline-dev libffi-dev libgdbm-dev liblzma-dev libncursesw5-dev libsqlite3-dev libssl-dev zlib1g-dev uuid-dev tk-dev 重要な点再び pyenv を使っている場合はパッケージをインストールし…

  • VSCode の Jest 拡張機能での Jest の起動に失敗する場合

    環境 Windows (WSL2) Node のバージョン管理には nodenv を使用している 状況 具体的には以下のようなエラーがターミナルに出るときです。 /usr/bin/env: 'node':そのようなファイルやディレクトリはありません Jest process "watch-tests" ended unexpectedly see troubleshooting: https://github.com/jest-community/vscode-jest/blob/master/README.md#troubleshooting gyazo.com 結論 ~/.vscode-s…

  • CircleCI の (sudo) apt update で失敗する場合の対処方法

    現象 このようなエラーが出て失敗する場合です。 Get:1 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB] Get:2 http://deb.debian.org/debian buster InRelease [122 kB] Get:3 http://deb.debian.org/debian buster-updates InRelease [51.9 kB] Reading package lists... Done N: Repository 'http://deb.debia…

  • WSL2 の設定ファイル settings.json の場所

    結論 C:\Users\ユーザー名\AppData\Local\Packages\Microsoft.WindowsTerminal_英数字\LocalState\settings.json 背景 最近 WSL2 の「設定」をメニューから選択すると、次のように GUI での設定が強制されるようになりました。 gyazo.com gyazo.com しかしこの画面からではたとえばフォントの設定などは(現時点では)できません。直接 settings.json を編集する必要があります。そのため、 settings.json の保存場所はそもそもどこなのか、ということを知らなければならなくなり調べま…

  • Ruby で Unicode エスケープシーケンスをデコードする

    結論 URI#decode_www_form_component を使いましょう。 具体例 以下、エスケープシーケンスをくくるためにダブルクォートを用いることに注意です。 [1] pry(main)> URI.decode_www_form_component("\xE3\x81\x82\xE3\x81\x84\xE3\x81\x86") => "あいう" 検索用 あまりにググりにくいので、検索用に置いておきます。 エンコード 日本語 バックスラッシュx エックス

  • zsh で pyenv を用いて Python をインストールするも実行できない場合

    前提 OS は Ubuntu です。 結論 ~/.zprofile にシェルの設定を書きます。 export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init --path)" fi 参考 github.com

  • Lita を Heroku で用いる際にヘルスチェックのエンドポイントを作る(Webサーバ機能を使う)

    Lita とは www.lita.io 結論 まず以下のようなハンドラーを作ります。 module Lita module Handlers class Healthcheck < Handler http.get '/healthcheck' do |_request, response| response.body << 'OK' end Lita.register_handler(self) end end end そして、ハンドラーを require しているファイル(lita-hoge/lib/lita-hoge.rb のようなファイル)内に、このヘルスチェックのハンドラーも以下のよ…

  • Ruby 3 を用いると Lita にて Webサーバー が応答できずに落ちるので注意する

    Lita とは www.lita.io 結論 2021/07/25 時点では、以下のソースにあるように Ruby 3 で escape メソッドが削除されたため、Webサーバ の応答をしようとすると落ちます。 github.com 以下のようにコメントが書いてあります。 # The http_router gem still uses URI.escape which has been removed from Ruby 3.0. したがって、対応するまでは Ruby 2 を使うほうがいいです*1。 補足 具体的に修正する場合には、以下の Issue に書いてあるような方法になるでしょう。 g…

  • Lita の config ファイルにおける Redis のアドレスの指定方法

    Lita とは Ruby製の ChatBot フレームワークです。 www.lita.io 設定ファイル内での Redis のアドレスの指定方法 lita_config.rb というファイルに設定を書き込んでいきます。その際、Redis のアドレスを指定するには以下のように書きます。 (前略) config.redis[:url] = 'redis://localhost:6379' (後略) デフォルトで生成される設定ファイルには config.redis.host と config.redis.port を指定する方法が書かれており、どちらでも良いと思います。 ただ、Heroku にデプロ…

  • Lita のローカル開発時にレスポンスを確認するには @Lita をまず先頭に入力する

    Lita とは Ruby製の bot のフレームワークです。 docs.lita.io 結論 ローカル(シェル)で動作確認する際には @Lita を先頭に付けないとポストが受け付けられません(レスポンスが返ってきません)。 以下のように、@Lita を先頭につけて bot に話しかける必要があります。 gyazo.com 参考 上記のコード(ハンドラの部分の抜粋)は次のとおりです。 module Lita module Handlers class Hoge < Handler route /^lita\s+(.+)/, :lita_help, help: { "lita TEXT": "Li…

  • 1Password のブラウザ拡張機能にて、起動するとずっと「読み込み中」になる場合への対処法

    結論 拡張機能の設定の中の「1Password アプリと連携」の項目をオフにします。 gyazo.com 補足 当該項目をオンにすると、バックグラウンドでアプリ(OS ごとのネイティブアプリ)が起ち上がり、それを利用するっぽいです*1。その挙動の際に、環境によってはうまく連携が取れず、「読み込み中」が続いてしまうのだと思います。 *1:詳しくは分かってない

  • Mac で mimemagic をインストールしようとした際にエラーが出る場合の対処法

    gyazo.com 現象 以下のようなエラーメッセージが出る場合です。 An error occurred while installing mimemagic (0.3.9), and Bundler cannot continue. Make sure that `gem install mimemagic -v '0.3.9' --source 'https://rubygems.org/'` succeeds before bundling. 結論 新しい mimemagic に対応したライブラリを入れましょう。 $ brew install shared-mime-info

  • Windows の Android SDK コマンド adb を実行した時に「AdbWinApi.dllが見つからない」エラーが出たときの対処方法

    結論 AdbWinApi.dll を管理者権限外の場所に移動する*1。 (参考)adb のダウンロード場所 developer.android.com *1:ダウンロードしたツールのフォルダ一式を移動する

  • git の hooks(pre-commit など)が動かない時に確認すること

    結論 .git/config の [core] の部分に hookspath が指定されているかどうかを確認する。 具体例 git/config に以下のように書き加えます*1。 [core] (省略) hookspath=.git/hooks (以下省略) *1:標準のディレクトリ構成の場合

  • Twitter REST API の trends で用いる WOEID の一覧(日本)

    結論 以下のとおりです。 Kitakyushu: 1110809 Saitama: 1116753 Chiba: 1117034 Fukuoka: 1117099 Hamamatsu: 1117155 Hiroshima: 1117227 Kawasaki: 1117502 Kobe: 1117545 Kumamoto: 1117605 Nagoya: 1117817 Niigata: 1117881 Sagamihara: 1118072 Sapporo: 1118108 Sendai: 1118129 Takamatsu: 1118285 Tokyo: 1118370 Yokohama: …

  • VSCode の Ruby Test Explorer を用いる際にテスト対象 Spec が表示されない場合

    結論 設定の Test Framework の項目で明示的にテストに用いるフレームワーク*1 を指定するといける場合があります。 gyazo.com *1:RSpec とか Minitest とか

  • RSpec で特定のテストだけを実行する方法

    結論 --example オプションを使い、その値として「テストの名前」を入れます。 例 以下のような Spec があったとします。 feature 'おはよう' do scenario 'こんにちは' do # ここにテストが入る end end このとき、このテストを実行するためには次のコマンドを実行します。 $ bundle exec rspec --example "おはよう こんにちは" 補足 テスト名の合致を判別する方法は「含まれているか」なので、--example で指定した名前が他のテストの名前にも含まれる場合は、含まれる全てのテストが実行されます --example 以外のテ…

  • VSCode で RuboCop や Solargraph や Ruby Test Explorer が実行できないときの一つの解決法

    結論 コマンドの実行パスを絶対パスで書く。 実例 以下は Ruby Test Explorer の設定です。ここで実行コマンドパスを設定する箇所において、絶対パスでパスを記述します。 例えば、 .rbenv を使っている場合は /home/ここにユーザー名が入る/.rbenv/shims/bundle exec rspec などになると思います*1。 gyazo.com *1:Solargraph ならば /home/ここにユーザー名が入る/.rbenv/shims/solargraph

  • Google Tag Manager の データレイヤー の変数名は dataLayer で固定(変更は可能)

    結論 標題のとおりです。dataLayer という名前はいわば予約語です。 公式ドキュメント support.google.com dataLayer という名前を変更する方法 変更したい場合には GTM の URL に l(アルファベット半角の「エル」) というパラメータを追加し、その値に対して変更した名前を設定します。そして <script> 内の変数もその名前に変えます。 公式ドキュメントは以下になります。 developers.google.cn 補足 GTM 側の名前を変更するより、既存の名前を変更するほうが良いと思います。

  • Ruby の Twitter の gem にて、凍結ユーザの 'name' は Twitter::NullObject で返ってくる

    gyazo.com 結論 標題の通りなので、たとえばデータベースにユーザデータを格納しようとする際に name に NOT NULL 制約をかけていたりバリデーションをかけていたりすると、エラーになります。 対処法の一つとしては Twitter::NullObject のときは例外として特定の文字列に置き換えることでしょうか。ただし注意することがあり、このオブジェクトは以下のような評価になるということです。ここで obj を Twitter::NullObject のオブジェクトとします。 obj.nil? #=> true obj == true #=> false obj == false…

  • スプレッドシートでの TRUE または FALSE は、GAS 上では小文字の文字列('true' または 'false')扱い

    gyazo.com 結論 とあるセルに TRUE あるいは FALSE というデータが格納されているとき、GAS 上での判別は以下のようになります。 // targetCell に TRUE というデータが格納されているとします console.log(typeof targetCell); // string console.log(targetCell); // true console.log(targetCell === true) // false console.log(targetCell === 'true') // true console.log(targetCell ==…

  • Ruby の Twitter gem で DM を取得するときの注意点 (REST API)

    結論 初回は @client.direct_messages_events(count: 1) で取得し、その戻り値から next_cursor を得て、それを用いて次回は @client.direct_messages_events(count: 1, cursor: next_cursor) で取得します。 next_cursor に nil が返ってきたら取得完了です。 罠 普通に取得すると(なぜか)いきなり Rate limits に達して 15分間 身動きが取れなくなります。理由は次のとおりです。 github.com

  • material-table を使う際に検索欄やページングカーソル欄に se や fir などのアルファベットが表示される場合の対処法

    material-table とは github.com 現象 こういう感じになる現象です。 gyazo.com 結論 fonts.googleapis.com から Material Icons をインポートしましょう。 <head></head> 内に以下を書き加えます*1。 <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" /> 修正結果 上記のインポートの結果、以下のようになりました。 gyazo.com 補足 Issue にも上がっていました。 github.co…

  • Ruby で Google API を google-api-ruby-client を使って操作する際に Google::Apis::TransmissionError が出る場合の対応

    結論 リトライをする(こちらのせいではない)。 具体的方法 以下にリトライをするための方法が書いてあります。 github.com client.request_options.retries = 3

  • GitHub Actions で RSpec (Capybara) を実行するための driven_by の options 引数の設定

    現象 次のようなエラーが出る場合の対処法です。 Selenium::WebDriver::Error::UnknownError: unknown error: Chrome failed to start: exited abnormally. (unknown error: DevToolsActivePort file doesn't exist) (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that C…

  • GitHub Actions でアーティファクトを保存するときには with: name: をアルファベットにしないと "Computed hash does not match with url signature" になる

    結論 以下のように書くと、アーティファクトのリンクをクリックした先で Computed hash does not match with url signature というエラーが出ます*1。 (省略) - name: アーティファクトの保存を行う if: failure() uses: actions/upload-artifact@v1 with: name: テストのエラー画像 path: tmp/screenshots (省略) 日本語を使わないで以下のように書くと OK です。 (省略) - name: アーティファクトの保存を行う if: failure() uses: actio…

  • apt を使って Node.js の任意のバージョンをインストールする

    CI にて有用な方法と思います。 結論 たとえば、 v16 系を入れたい場合には以下のコマンドを実行します。 $ curl -sL https://deb.nodesource.com/setup_16.x | sudo bash - $ sudo apt update $ sudo apt install -y nodejs 補足 npm も最新版まで上げるには以下のコマンドを実行します。 $ npm install -g npm 参考 上記の curl コマンド の URL として https://deb.nodesource.com/setup を指定した際に以下のメッセージが表示されま…

  • Nextcloud で消せないファイルやフォルダが出てきたとき

    結論 1. (念のため)アクセスがない状況にする サーバを落としたり、Docker で起動しているならばコンテナを止めます。 2. ファイルがあるディレクトリに移動 data/ユーザー名/files に移動します。 3. 該当ファイルやフォルダを削除する 「2.」のディレクトリにある、消したいファイルやフォルダを削除します。おそらく root の権限が必要になります。 4. アクセスできる状態に戻す サーバを再起動したり、Docker ならばコンテナを作り直します。 5. 削除されていることを確認する 削除されていることが確認できれば OK です。

  • Nextcloud を Docker Compose で使用している時にバージョンアップをする方法

    結論 1. 実行を停止する $ docker-compose down 2. docker-compose.yml に最新バージョンを記述する latest の場合はこの項目は飛ばして OK (省略) image: nextcloud:21.0.2 (省略) 3. 起動する 結構時間がかかります。 $ docker-compose up -d 注意点 データを永続化しておかないと*1、データが消えます。 *1:Nextcloud を使う時点でしていないことは無いでしょうが

  • Ruby の all? メソッドはレシーバが [] の場合は true を返すので注意が必要

    結論 標題の通りで、知っている人には当たり前なのですが、以下のような戻り値になります。 [].all? { |foo| foo == 1 } #=> true どうするか all? を使わないようにすればこのハマりやすい返り値から逃れられます。もし all? を使う場合には、レシーバが [] の場合は早期リターンをするなどすれば回避できます。 ……が、そもそもこれを知らないと回避も何もないですよね……。 参考 tanaken0515.hatenablog.com

  • Rails で NOT NULL なカラムに DEFAULT値 が入るタイミングに注意(自分で nil を代入した場合は NG)

    結論 標題で全てな気がするのですが、以下の例のとおりです。自前で nil を代入した場合には、そのカラムは DEFAULT の値が自動で入ってくれません*1。 例として、User というモデルを使います。ここで、height というカラムに NOT NULL 制約がついていて、DEFAULT が -1 であるとします。 レコード新規作成時 > User.new => #<User:0x00007f9709765500 id: nil, height: -1, (以下省略) 自分で値を代入する > attrs_for_new_user_record = { height: nil } > Use…

  • Windows のバッチファイルの文字コードは Shift JIS でなければいけない

    結論 標題のとおりです。 Shift JIS でないと何が起こるのか 日本語ファイル名やフォルダ名を含んでいると実行に失敗します。echo で日本語を表示しようとした際も化けます。

  • WSL2 の Capybara (RSpec) で "ChromeDriver is assuming that Chrome has crashed" などのエラーが出たときの解決方法の一つ

    結論 google-chrome と chromedriver のバージョンを変える(まずは最新の安定版で試す)。 参考 2021/05/20 時点で正しく動いているバージョンの組み合わせは次のとおりです。 $ google-chrome --version Google Chrome 90.0.4430.212 $ chromedriver --version ChromeDriver 90.0.4430.24 (4c6d850f087da467d926e8eddb76550aed655991-refs/branch-heads/4430@{#429}) 補足 WSL2 かどうかは本質的には…

  • コマンドライン(CLI)で Windows の CD /DVD /BD ドライブ を開閉する(Stream Deck を使って手元のボタンで開閉する)

    結論 NirCmd を用います。最新版のリリース日は 2019/01/08 ですが、現時点での Windows 10 でも問題なく動作します。 www.nirsoft.net ページの一番下に以下の画像のようなダウンロードリンクがあるので、Download NirCmd 64-bit をクリックしてダウンロードします。 ダウンロードファイルを展開し、nircmd.exe をパスが通った場所(C:\Windows\system32 配下はデフォルトでパスが通っているので、ここでいいでしょう)に置きます*1。 あとはこのコマンドを実行すれば OK です。CD / DVD /BD のドライブレターが…

ブログリーダー」を活用して、たっきーさんをフォローしませんか?

ハンドル名
たっきーさん
ブログタイトル
約束の地
フォロー
約束の地
カテゴリー一覧
商用