ソフトウェア開発

git rebase -i を実行してから止める方法

結論 「指示書」の内容を全削除する*1。 具体例 $ rebase -i HOGEHOGE 直後が以下の画像だとします。 この rebase の実行を止めたいと思った場合には、この「指示書」を全削除します。以下のようになります。 その後、指示書を保存して抜けます。すると以下…

Raspberry Pi で最新の git コマンドをインストールする

結論 ソースファイルからビルドします。

Rundeck の Node で外部ホストを YAML で指定する際に、ポート番号を明示的に設定する書き方

結論 hostname の部分にコロン区切りでポート番号を記述します。 例 my_node_name: hostname: 1.2.3.4:12345 osVersion: 4.15.0-1040-aws osFamily: unix osArch: amd64 description: Rundeck server node osName: Linux username: gss2019_production ssh-k…

バージョン管理でよく見かける "Bump up" とは何か

結論 Version up とほぼ同等。 例 「バージョンを 2.0.0 に上げました」と言う場合の書き方*1 Bump up version to 2.0.0 Bump to 2.0.0 Bump up to 2.0.0 Bump version to 2.0.0 参考 *1:単に bump とも

GitHub Actions にて Rails で PostgreSQL を使おうとした際に PostgeSQL に接続できなくてハマった話

前提 GitHub Actions であることや Rails であることは本質的には関係ありません 結論(注意するところ) services 配下の postgres において、env で指定する環境変数の「キー」は予約語(決められた語)であること POSTGRES_USER と POSTGRES_PASSWORD で…

PostgreSQL にて postgres というユーザのパスワードが分からなくなっても sudo できれば助かる

結論 pg_hba.conf において、postgres ユーザの認証方式を trust にすれば、パスワードがなくてもログインできます。pg_hba.conf を編集するには sudo できればよいです*1。 補足 当たり前のことですが、trust にする場合は適用範囲や適用アカウントを絞るな…

Heroku で 'DATABASE_URL' を変更する方法

結論 一度、heroku-postgresql を削除してから設定し直します。なお、削除の際はもちろん既存のデータは消えますので、別途予め救い出しておく必要があります*1。 具体的な方法 以下、CLI を使うことを前提とします。 1. heroku addons:destroy heroku-postg…

Visual Studio Code の Ruby Test Explorer 拡張機能 において A Ruby Test Explorer failed to find an RSpec test suite. というエラーが出た場合の対処法

前提 Rails で RSpec を用いているものとします。 結論 bundle install や bundle exec rails db:migrate などの初期設定が終わっていますか。 エラーメッセージに惑わされない このエラーが出るときは、以下のようなメッセージも併せて書かれています。 Mak…

YouTube Data API v3 を用いて動画をアップロードする際に、非公開あるいは限定公開にする方法

結論 privacyStatus に private または unlisted を指定します。 private は「非公開」です unlisted は「限定公開」です。 公式ドキュメント https://developers.google.com/youtube/v3/guides/uploading_a_video?hl=ja 注意 Ruby での実装では privacyStat…

YouTube Data API v3 を用いて非公開ビデオの情報を取得するためのポイント

前提 OAuth での認証は終えているものとします。 結論 forMine を true に指定し、かつ、channelId を 指定しない。 説明 forMine を true にすればいいことは ドキュメント を読めば分かると思います。しかし、その際に channelId を、例え自分のものであれ…

Visual Studio Code を用いて Rails の RSpec を効率よく実行する

結論 Test Explorer UI という拡張機能をインストールします 上記の拡張機能の拡張機能である、Ruby Test Explorer ををインストールします Text Explore UI の設定をします(私はデフォルトのままにしました) Ruby Test Explorer の設定をします 個人的に…

Visual Studio Code の RuboCop 拡張機能 (ruby-rubocop) にてrubocop is not excutable execute path is empty と出た場合の対処法の一つ

結論 実行される Bundler のバージョンが Gemfile.lock に書かれているバージョンと一致していない。 どうするか Gemfile.lock に書かれているバージョンの Bundler をインストール(アップデート)します。たとえば、1.17.3 を入れたい場合には以下のように…

GitHub Actions でキャッシュを利用する方法

結論 以下のリポジトリのドキュメントどおりに設定ファイルに記述すればよいです。 github.com 各言語別の記述方法の詳細は examples.md にまとまっています。 具体例 Yarn の場合の具体例です。よくある設定ファイルに、キャッシュの部分を差し込んだだけで…

GitHub Actions の結果の「バッジ」を表示する方法

結論 例えば、GitHub Actions の設定ファイルが以下のようであったとします。 name: Hoge Hoge Fuga Fuga on: push: jobs: (以下省略) このとき、バッジは以下の書き方で取得できます(Markdown)。 ![GitHub Actions Status](https://github.com/USER_NAM…

Heroku で静的サイトに Basic認証 をかける方法

結論(手順) heroku-buildpack-static というビルドパックを用います このビルドパックの設定ファイルである static.json に "basic_auth": true と指定して、Basic認証を有効にします ユーザ名とパスワードを .htpasswd または環境変数に設定します

VS Code で TypeScript を書く際に import 文 を使うと from で指定した値に波線が引かれて「モジュール...が見つかりません」と出る場合の対処方法

現象 どうするか 適切な型定義ファイルをインストールします。上記例の場合は puppeteer の型定義ファイルである @types/puppeteer をインストールします*1。 $ npm install --save-dev @types/puppeteer または $ yarn add --dev @types/puppeteer これで、…

Gyazo を Ruby を用いて API 経由で扱う方法

Gyazo には API が用意されているので、アプリケーション経由で画像を取り扱うことができます。 1. アプリケーションを登録する まずはアプリケーション登録をするために、登録ページに行きます。 gyazo.com 以下のようにしてアプリケーションを登録し、clie…

SkyWay を使って Quoridorn(コリドーン)を自前で建てる

SkyWay とは こちらのサービスです。WebRTC の部分を賄ってくれるサービスです。 webrtc.ecl.ntt.com Quoridorn(コリドーン)とは こちらの OSS です。TRPG のセッションで用いる Webアプリケーション です。 github.com Quoridorn を自前で建てることを目…

Puppeteer で動作する自動制御版の Chrome に、拡張機能(Vue.js devtools)を導入する方法

結論 launch メソッドの引数として(厳密には「引数であるオブジェクトの args の値として」)、'--disable-extensions-except=/path/to/extension_name' と指定すればよいです*1。 ここで、/path/to/extension_name とは、拡張機能のソースファイル一式が入…

Puppeteer でデバイスを指定する方法と、指定できるデバイス名の一覧

Puppeteer とは Puppeteer は、Chrome を Node から操作できるライブラリです。要はブラウザ操作の自動化ライブラリです。 github.com Puppeteer でデバイスを指定する Puppeteer では動作をエミュレートするデバイスを指定することができます。指定方法は簡…

Puppeteer をクロスブラウザ対応させた Playwright を試す

Puppeteer とは Puppeteer は、Chrome を Node から操作できるライブラリです。要はブラウザ操作の自動化ライブラリです。 github.com Playwright とは Puppeteer をクロスブラウザ対応(Chromium, WebKit and Firefox に対応)させたのが Playwright です*1…

Visual Studio Code で「完全一致」で検索する方法

結論 検索ボックスの右側にある 3つ のボタンのうち、真ん中のボタンを押して有効化します。次の画像のとおりです。 gyazo.com 補足 さらに、大文字小文字も完全一致させたい場合には、一番左のボタンを押して有効化します。 備考 正規表現ではうまく一致し…

Visual Studio Code で ESLint、Prettier、RuboCop、Solargraph、Jest、Babel、TypeScript などの設定ファイルのメンテコストを下げる戦略

前提 チームプロジェクトを「汚さない」ようにすることを前提とします。 結論 VS Code の「ユーザー」設定(一番上位に位置する包括設定)はなるべく変更しないようにします 設定を変更する場合には「ワークスペース」ごとの設定を変更するようにします 「ワ…

rbenv や nodenv などの XXenv で一瞬だけバージョンを切り替えたい場合

結論 二つの方法があります。実質的には、どちらも同じことです。以下、rbenv の場合を例として書きます。 1つ目の方法. RBENV_VERSION を設定した上で、ruby を実行する 具体例を見るとすぐに分かると思います。 $ ruby -v ruby 2.7.0p0 (2019-12-25 revisi…

webpack-dev-server で ライブリロード(ホットリロード)がされないときには webpack.config.js の devServer.contentBase と output.publicPath の設定を見直してみる

状況 Web でも散見されますが、webpack-dev-server のライブリロード(ホットリロード)が効かない状況を想定します。似たような状況においてそうなのですが、これに気づかずに開発を続けると、コード上は正しくても動作に反映されないので無駄な時間を費や…

puppeteer を webpack で bundle しようとしたら「Can't resolve 'ws'」と怒られた場合の対処方法

結論 webpack.config.js の externals に以下のように追記します。 module.exports = { (省略) externals: { puppeteer: 'require("puppeteer")' }, (省略) }; 具体的な現象 $ webpack Hash: 89a5cffe5c5fd346c8e6 Version: webpack 4.41.5 Time: 609ms …

ローカル Webサーバ の比較と選択

手元の HTML / CSS / JavaScript をサクッと確認するためには ローカルWebサーバ を建てる必要があります*1。思いついたローカルWebサーバの簡易比較をしてみます。 比較項目は以下のとおりです。それぞれの項目の内容は、最低限のオプションで起動した場合…

CircleCI で cron を設定する方法

公式ドキュメント CircleCI は公式ドキュメントが充実していますので、一読しましょう*1。 circleci.com YAML の例 cron を実行するための最低限に近い .circleci/config.yml の例は次のとおりです。 *1:ぶっちゃけ公式ドキュメントを読み込めばほぼ分かって…

GitHub Actions で cron を設定する方法

公式ドキュメント 日本語のドキュメントは、例え用意してあったとしても、情報が古いことがあるので気をつけましょう*1。 help.github.com YAML の書き方 cron を設定するための最小限の YAML を書くと次のようになります。 name: FOOBAR on: schedule: - cr…

GitHub Actions のキャッシュ容量の上限は 400MB(なので wkhtmltopdf-binary を入れていると厳しい)

状況 GitHub Actions で bundle install した gem のキャッシュが保存できるようになったので喜んで使っていたのですが、とある日にログを見たところ、以下のような表示が出ていました。キャッシュ容量の上限の 400MB を超えている、との警告です。 [warning…

Powered by はてなブログ