ちょっとしたスクリプトをWindows/Linux/macOS兼用で動作させる

ちょっとそういうのが必要になったので 確か Embulk でこんな感じのことをやっていたはず…という記憶を頼りに作ってみた。 とりあえず動くけど、後述のとおり行儀のいい方法ではない&制約事項もあるので、使う場合は要注意。 環境 Windows 11 Ubuntu 22.04 …

xargsで複数のパラメータに対してプレースホルダを使う

環境 Ubuntu 22.04 xargsで -n と -I が併用できない問題 xargs を使う際、-I オプションを使ってパラメータをプレースホルダに差し込むというのをよくやります。 # テスト用ファイル $ cat data.txt aaaa bbbb cccc dddd # ファイルの各行に対して xargs で…

SQLで is null or 〜 を一発でやる is distinct from の話

SQL

環境 PostgreSQL 15 本記事の機能はPostgreSQLで試していますが、is distinct from はANSI標準なので、他のDBMSでもサポートされていれば使えます SQLで null を含むカラムへの条件指定 ご存知のとおり、SQLでの値の比較の際に = とか <> とかで null と比較…

複合インデックスを使うにはwhere句に書くカラムの順番を合わせないとダメとか無いですよねという話

概要 「複合インデックスを使うにはwhere句に書くカラムの順番をインデックスの定義順と合わせなければならんのじゃよ *1」って言われて、いやそんなまさか…?と思ったので念のため検証してみたメモ。 結論から言うと、試した限りではそんなことはなかった。…

IntelliJ IDEAでSpring Bootの@Valueアノテーションの引数にプロパティ値が展開されないようにする

環境 IntelliJ IDEA 2022.3 (Ultimate Edition) macOS Big Sur 11.7 概要 いつの頃からか、IntelliJ IDEAでSpring Bootの @Value アノテーションの引数部分に実際のプロパティ値が展開されるようになりました。 こう書くと… # application.yaml demo: someSt…

BSD版xargsの -I オプションで長い文字列を置換する場合は -S で replsize の設定が必要

久しぶりなので小ネタ。 環境 macOS Big Sur 11.7 なにごと? いつものように xargs -I でコマンドを置換して諸々やっていたのですが、あるときなぜかうまく置換されないことがあったのです。 これは期待どおり。 $ echo 'short' | xargs -I@ echo '[@]' [sh…

Helmのtemplateでループ内から変数を参照する

環境 helm v3.8.0 背景 こんな感じで、ほぼ同じ内容のマニフェストを複数作りたいとする。 当然 values.yaml で変数を管理したいし、2つ分コピペするのではなくループでうまいこと処理したい。 # targetgroupbinding.yaml apiVersion: elbv2.k8s.aws/v1beta1…

UnicodeエスケープされたJavaプロパティファイルをsedとnkfで読めるようにする

native2ascii無き現代に.propertiesの化石と向き合う もう2022年なのでnative2asciiはJDKに同梱されなくなっているわけですが、一方で目の前にはUnicodeエスケープされた.propertiesファイルが。 手元にはnative2asciiなんぞ無いので、sedとnkfでなんとかし…

混在する改行コードをBSD版sedで変換する

環境 macOS Big Sur 11.6 zsh 5.8 (x86_64-apple-darwin19.6.0) CR+LF, CR, LF を全て LF に統一したい 改行コード CR+LF, CR, LF が混在した邪悪なファイル file.txt がある。 $ echo -n 'あいうえお\r\nかきくけこ\rさしすせそ\n' > file.txt # file.txt …

Spring Bootでプロパティを環境変数から読むときの変換ルール

これは完全に自分用メモなのですが Spring Bootでプロパティの値を環境変数から読むときの変数名の変換ルールは下記のとおり。 To convert a property name in the canonical-form to an environment variable name you can follow these rules: Replace dot…

findコマンドの-depthオプションのGNU版とBSD版の違いでハマったという話

なにごと? find コマンドで「1階層目のファイル/ディレクトリだけを列挙したい」となり*1、macOSで $ man find したら -depth オプションを使えばよさそうだったので、こんなふうにしてたわけです。 $ find . -depth 1 で、これをGitHub Actionsでやってい…

jshellコマンドを使って.javaファイル無しでJavaプログラムを実行する

環境 $ jshell -version jshell 17 本題 小ネタ。 jshellコマンドは標準入力からソースコードを流し込めるので、シェルのヒアドキュメントを使うことでソースコードのファイルを作らずにJavaプログラムを実行できる。 例えば「CIのときにあらかじめcreate da…

mvnコマンドに-Dオプションを渡せばpom.xmlのプロパティが指定できる

はじめに 実は知らなかったシリーズ。ドキュメントちゃんと読んでないのがバレる。 環境 Maven 3.8.2 本題 例えばこんな感じで pom.xml を書いて… <properties> <someOption>${someValue}</someOption> </properties> こんな感じで -D オプション付きで実行する。 $ mvn -DsomeValue=SOME_VALUE そうすると、pom…

SpringアプリのテストでHikariDataSource has been closedなどと言われたのでなんとかした

TL; DR Springのテスト時に使われるコンテキストキャッシュ DefaultContextCache はデフォルトの保持数が32で、それを超えると古いコンテキストが破棄される。そのときにDBのコネクションプールも破棄されてしまって困る。 キャッシュの保持数はSpringのプロ…

ruby-buildでRubyをインストールしようとしたらoptparseが無いって言われる

なにごと? ruby-build で rbenv install 3.0.2 したら optparse が無いって言われてエラーになるんですよ。 $ rbenv install 3.0.2 Downloading ruby-3.0.2.tar.gz... -> https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.2.tar.gz Installing ruby-3.0.…

KarateでのAPIテストと同時にAssertJ-DBでデータの確認もやりたい

はじめに Karateを使うとWeb APIのリクエスト&レスポンスのテストがとてもいい感じにできるが、そうすると今度は「POSTされたデータがちゃんとDBに入っているかどうか」とかも確認したくなってきてしまうもの。 そこでKarateでのテストシナリオ実行の際、As…

Spring Bootでプロファイルごとに実装を切り替える

TL; DR @Profile や @ConditionalOnExpression を使う。ちょっとつらいけどがんばる。 サンプルコードは下記のとおり。 github.com やりたいこと システム日時を取得するユーティリティがあるが、テストのときに日時が毎回変わると困るので、特定の場合は固…

IntelliJ IDEAを使い始めたときに見るとよい情報まとめ

はじめに 最近ようやくIntelliJ IDEAを使い始めたので、役に立った情報をまとめておきます。 想定環境 IntelliJ IDEA Community Edition 2021.1 macOS Big Sur 11.2.3 / Ubuntu 20.04(GNOME) とりあえずはじめに読むもの Javaプログラムの作成〜実行 pleia…

クリップボード操作コマンドを活用してテキストを手軽に一括編集する

はじめに macOSの pbcopy, pbpaste やLinuxの xsel を使うと、クリップボードにコピーした値を sed などのコマンドで編集後、別のエディタやスプレッドシートにペースト、といった操作が簡単にできて便利という話です。 スクリプトを書くほどでもないけど手…

Pleiades (Eclipse)でのSpringアプリ開発時にjarファイルが削除/変更できなくなったので対処した

環境 Windows 10 Pleiades All in One Eclipse 2019-06 (Ultimate) 現象 Springアプリの開発に独自のjarライブラリを使用していたのですが、jarを上書きしたり、jar更新後にGitのブランチ切り替えをしたときにこんなエラーが出ることがありました。 リソース…

2018年に行ったライブ、フェス

今年はいろいろ行きました。 No. 日付 名称 会場 一言 1 2/14 P.T.A.発足10周年!! と5周年!! “Perfumeとあなた”ホールトゥワー 幕張イベントホール 最高。初めての生edge。最高。 2 3/21 Perfume x TECHNOLOGY presents Reframe NHKホール 1曲目のDISPLAYの…

Excel VSTOアドイン開発入門

はじめに Spreadsheets/Excel Advent Calendar 2018の12日目の記事です。 Excelでの作業の自動化といえばExcel VBAですが、複雑な機能の実装には辛いことも多かったりします。 そんなときは、C#や.NET Frameworkの機能がフルに使えるVSTO (Visual Studio Too…

Omnibus GitLabからGitLab.comに移行した話

はじめに VPSに置いてあったOmnibus GitLabをアップデートしたら起動しなくなったので、これを期にGitLab.comに移行しました。 環境 移行元 Omnibus GitLab Version: 10.4.3, Revision: 183dd5d CentOS 6.9 x86_64 移行先 GitLab.com (API v4) 手順 1. GitLa…

HainというWindows用ランチャで素因数分解

しごとしたくないなーと思いながらぼーっとネット見てたら、増田でこんな記事を見つけました。 anond.hatelabo.jp anond.hatelabo.jp ざっくり要約すると、 テレビで流れてきた数字を数秒もしないうちに素因数分解して ニコ動のコメントに書き込んでる!すご…

ruby-opencvをWindows(RubyInstaller)で使う

ruby-opencvは一応Windowsもサポートしているわけですが、いつからかOpenCVがMinGW版のバイナリを配布しなくなってしまったため、RubyInstallerを使っている場合は自前でOpenCVをビルドしなければならない状態になっていました。 GitHubでもissueがいくつか…

UNetbootinでドライブが選択できないときはコマンドラインオプションを使えばよいですという話

環境 Ubuntu 15.10 UNetbootin 608-1 なにごと? LinuxをUSBメモリからインストールするときには UNetbootin を使ったりします。…が、USBメモリを差し込んでOSに認識されているにも関わらず、UNetbootinの画面上で選択できないことがあります。 ↓ USBメモリ…

Windowsでzipファイルを分割したり結合したりする

はじめに 大きめのファイルをアップローダとかで他の人に渡す場合など、zipファイルを分割したかったりすることがあります。 でも結合にわざわざソフト入れてもらうのもなーと思ってたら、結合だけなら標準のコマンドでできたのでした*1。 というわけで、や…

WindowsのROBOCOPYコマンドでタイムスタンプを維持したままコピーする

はじめに ペルソナQをDL販売で買おうと思ったらSDカードの容量が足りないじゃん! というわけで、容量の大きいものに交換することにしました。コピー自体は普通にSDカード内のフォルダごとコピーしてやればいいようです。 パソコンを使ってデータを移動する…

第10回記念シェル芸勉強会@シェルリアンタワー&第28回場所が未定だったが決まったぞ定例会に行ってきました

行ってきました 4月5日にGMO Yoursで開催された、第10回記念シェル芸勉強会@シェルリアンタワー&第28回場所が未定だったが決まったぞ定例会に行ってきました。 当日の様子→第10回記念シェル芸勉強会@シェルリアンタワー&第28回場所が未定だったが決まったぞ…

「過負荷に耐えるWebの作り方 〜国民的アイドルグループ選抜総選挙の舞台裏」を読んだ

読んでみた 秒間10,000アクセスの処理が要件の、AKB48の選抜総選挙システムを構築した事例の解説本です。普段そんなにアクセスが来るシステムを触っていないということで、どんな仕組みなのかが気になって読んでみました。 過負荷に耐えるWebの作り方 ~国民…