ようへい

2020年5月4日月曜日

[タイムゾーン対応] エポック秒、エポックミリ秒コンバーター

エポック秒(1970/1/1 00:00:00 +0000 からの秒数)、エポックミリ秒(1970/1/1 00:00:00 +0000 からのミリ秒数)を相互変換します。
UNIXタイムスタンプとも言う。 前に作ったコンバーターのタイムゾーン対応版です。

関連記事

2020年5月2日土曜日

[Windows 10] Ruby 2.7 & RMagick (ImageMagick) 環境構築

そろそろ Ruby 2.7 環境を作ろうと思ったので、ついでに RMagick を使える環境を構築。

準備するファイル

Ruby 2.7 + Devkit
WITH DEVKIT の方をダウンロードする。
Ruby Installer for WIndows
https://rubyinstaller.org/downloads/
ImageMagick
RMagick の GitHub をチェックすると、
ImageMagick Version 6.7.7 or later (6.x.x). Version 7 has beta support in version 4.1.0.rc2 (#256).
rmagick/rmagick: Ruby bindings for ImageMagick
https://github.com/rmagick/rmagick
と書かれているため、6系の最新をインストールすることにする。
6系は公式サイトからではなく、以下からダウンロードする。
ImageMagick binaries
http://www.imagemagick.org/download/binaries/ 今回は 6.9.11-10 を使用

セットアップ

  1. Ruby 2.7 をインストール
    • Select ComponentsMSYS2 development toolchain yyyy-mm-dd にチェックを付ける
    • セットアップ後、MSYS2 のセットアップ画面が表示されます。
      閉じてしまった場合は以下を実行
      $ ridk install
      Which components shall be installed? If unsure press ENTER [1,3] と表示されるので 1,2,3 と入力してセットアップしてください。
  2. ImageMagick をインストール
    • Select Additional TasksAdd application directory to your system pathInstall development headers and libraries for C and C++ にチェックを付ける
  3. RMagick をインストール
    • ターミナルを起動し、gem をインストール
      $ ruby -v
      ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x64-mingw32]
      $ gem install rmagick
      Fetching rmagick-4.1.2.gem
      Temporarily enhancing PATH for MSYS/MINGW...
      Building native extensions. This could take a while...
      Successfully installed rmagick-4.1.2
      Parsing documentation for rmagick-4.1.2
      Installing ri documentation for rmagick-4.1.2
      Done installing documentation for rmagick after 2 seconds
      1 gem installed

動作確認

$ ruby -r rmagick -e "puts Magick::colors"
上記で結果がズラズラ出ればとりあえず良さそう。
ただ、昔、rmagick と ImageMagick の相性問題に悩まされた記憶があるので、画像も読み込めるか確認。
$ ruby -r rmagick -e "Magick::Image.read('C:/Program Files/ImageMagick-6.9.11-Q16/images/logo-sm.png').map{|im| puts im.columns, im.rows }"
128
96
大丈夫そうですね。

まとめ

相性問題もあるので情報をまとめておきます。
  • Ruby 2.7.1p83
  • ImageMagick-6.9.11-10-Q16-x64-dll.exe
  • RMagick 4.1.2
関連記事

2020年3月12日木曜日

[Tampermonkey] ヤフオク! 違反通報をサポートするスクリプトを作りました [転売ヤー昇天]

ヤフオク! で転売ヤーによるマスクの高額出品が後を絶ちません。
出品禁止になっても、マスク以外の転売は続くでしょう。
そんな転売ヤーの出品に対して通報する際、重複通報してしまったりして効率が落ちる時があります。
そんな正義マンのために作りました。
Tampermonkey を導入していない方は以下を参照
Chrome への Tampermonkey とスクリプト導入方法

できること

違反通報した商品にパトロールアイコン表示
スクリプトインストール後に通報したオークションデータは格納されます。
その情報をもとに、商品名の前にパトロールアイコンを表示します。
また文字色も赤文字になります。
通報ボタンを押しやすく
商品名の下に通報ボタンを大きく表示します。
通報済みの商品ページに通報済みと表示
違反商品の申告ページで申告しやすく
違反商品の申告フォームまで自動スクロールします。
また、その他、利用規約やガイドラインに違反するもの での申告をデフォルト選択にします。
送信 ボタンもクリックしやすく大きくしてあります。
出品者の出品リストから一括通報
出品者の出品リストでチェックを入れて一括通報ボタンをクリックすると、チェックを入れたオークションの通報ページを直接開くことができます。
転売ヤーはガイドライン違反の出品を多数出品していることが多いので手間が省けます。
チェックする対象が多い場合は一括チェックをクリックすれば手間を省けます。

備考

オークションデータは、通報後8日間キャッシュされます。(出品期間は最長7日+12時間のため)

インストール

ヤフオク! で違反通報をサポートするスクリプト
https://logroid.github.io/user-script/8209_violation_report.user.js 要望等はコメントにお願いします。
関連記事

2020年3月5日木曜日

Chrome への Tampermonkey とスクリプト導入方法

Greasemonkey からフォークした Tampermonkey の導入方法です。
Chrome 以外にも導入できますが、Firefox 版ではバグがあったりするので Chrome 版を使用します。

Chrome への拡張インストール

以下のリンクを Chrome で開き、Chrome に追加 ボタンをクリックしインストールします。
Tampermonkey - Chrome ウェブストア
https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo

スクリプトの導入

例として、ヤフオク! での違反通報をサポートするスクリプトを導入してみます。
Tampermonkey がインストールされたブラウザで以下のリンクをクリックします。
ヤフオク! 違反通報
https://logroid.github.io/user-script/8209_violation_report.user.js インストール ボタンをクリックしてインストールします。 以下のページの内容が動作することを確認します。 [Tampermonkey] ヤフオク! 違反通報をサポートするスクリプトを作りました [転売ヤー昇天]
期待通りに動いていればOK

スクリプトの更新

Tampermonkey のデフォルト設定では、1日に1度チェックされて自動更新されます。
しかし、強制的に更新したい場合は、Chrome のツールバーの Tampermonkey アイコンをクリックして、UserScript の更新を確認 をクリックすることで更新できます。
関連記事

2020年2月20日木曜日

bash スクリプトでよく使うコマンドまとめ

スクリプトを動的に作る

$ cat <<'EOF' >/tmp/hogehoge.rb
xxx
EOF
あまり使わないけど、docker で自動的に環境構築するときとか、シェルからはできないような操作をする際に使ったり。

echo で色つけて出力

色・装飾つき echo コマンドメーカー

sed で置換

$ sed -i -e 's;fuga;bar;' \
    -e '/^hoge/s/=false/=true/' \
    /tmp/hoge.conf
sed の正規表現で気を付けるのは、-e 's;h+;HOGE;' と書いてしまうとダメ。
拡張正規表現を使うためには、対象のメタキャラクタをエスケープする。-e 's;h\+;HOGE;' という感じ。
よくハマる。

grep で抽出

$ echo "hoge=fuga" | grep -o "fuga"
fuga
これでもいいのだが、Perl の正規表現を使うようにして
$ echo "hoge=fuga" | grep -Po "=\K(fuga)"
こんな感じで使うほうが好き。

大量のファイルに何かをする

$ find <検索条件> -print0 | xargs -0i sh -c "echo {}; basename {}"
ポイントとしては、-print0 で null 区切りにすること。
こうすることで、ファイルパスに含まれる空白などが悪さをしなくなり xargs が正しく処理できる。
なお、-exec は制限あるので極力使わない。

ls の日付フォーマットを変更

$ ls -l --time-style=+%Y-%m-%d\ %H:%M:%S
加工するときとかに使う。

バイナリファイルのダンプ

$ od -tx1z <ファイルパス>
ファイルの中に制御文字入ってないかとか見るときに使ったり。

指定サイズのデータ作成

ランダムデータ
$ dd if=/dev/urandom of=random_data bs=1073741824 count=4
ddは2GB以上のブロックサイズを指定できないため、4GBを作る場合は1GBx4等で対処する
固定データ
$ printf "%01048576d" > 1MB.txt
0で埋まったファイルが作られる。

あるファイルが、どの rpm によりインストールされたか調べる

$ rpm -qf <ファイルパス>

rpm の中身を見る

未インストールの rpm
$ rpm -pql <rpmファイルパス>
インストール済みの rpm
$ rpm -ql <rpm名>
関連記事