A Micro Toolbox

ソフトウェアのニッチな問題の対処記録です

curlとChromeのコマンドラインオプションで名前解決

Webアプリ検証で、ドメインやホスト名を一時的に非公開サーバーに向けてアクセスしたいときがある。 /etc/hostsに設定追加したり、Hostヘッダーを書き換えたりして対処できることも多いが、ここでは別案としてcurlとChromeのコマンドラインオプションで名前…

16進記法で指定した色を取り出すとrgb()関数になる

CSSで色を16進数で書いて <span id="colortest" style="color:#ff9933;">orange<span> JavaScriptで取り出すと const colorspan = document.getElementById("colortest"); console.log(colortest.style.color); console.log(colortest.style.cssText); rgb()関数表記になっている。 rgb(255, 153, 51) color: rg</span></span>…

nzip: 入れ子のzipファイルを展開する

あるzipファイルを展開すると中にはzipファイルがあって、そのまた中にはzipファイルがあって、マトリョーシカ的になっていることがある。 例えば、JARファイルに含まれる依存ライブラリのJARが提供するクラスも一括で見たいとき、一階層ずつ展開していくの…

vmstatの出力に時刻を付けてファイル保存(ミリ秒)

Linuxでvmstatの1行ごとに時刻を付けるときにミリ秒まで入れる。 $ vmstat 3 | ruby -ne 'print Time.now.strftime("%X.%3N #{$_}"); STDOUT.flush' | tee vmstat_log.txt 18:44:25.141 procs -----------memory---------- ---swap-- -----io---- -system-- …

サクラエディタにtextlintによる文章校正マクロを登録する

サクラエディタからtextlintを実行して日本語文章のチェックができるように設定する。 試した環境: Windows 10 + サクラエディタ 2.2.0.1 + Node.JS 12.16.1 1. textlintをインストール インストール先のディレクトリを作成する。 このディレクトリはNode.js…

スタックトレースを削る

スレッドダンプやログに出力されるスタックトレースはしばしば長大になる。 長大なスタックトレースを解析するとき、あまり注目しない行を削ると見通しがよくなる。 あまり注目しない行をどう判定するかが問題だが、個人的経験では、同じパッケージ内での呼…

pacman -Syu後にMSYS2が起動しない

結論から書くと、PC再起動で復活した。 まず先に、全パッケージ更新がPGP keyのエラーで失敗した。 $ pacman -Syu ... error: msys: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown:: Import PGP key 4A6129F4E4B84AE46ED7F635628F528CF3053E04…

MSYS上のcurlで/から始まる値をPOSTする

Git for Windowsのbashでcurlを使うときに、フォームパラメータの値が「/」から始まると補完されたパスがサーバに送られる。 例えば、次のようにすると、 $ curl -F'param1=/path/to/file' http://localhost:8000/ サーバ側には param1=C:/tools/console/Git…

pwdx: プロセスの作業ディレクトリを表示

バージョンや環境設定違いのプログラムを同一サーバ上にいくつも立ち上げていると、それぞれのプロセスの作業ディレクトリを確認したくなるときがある。 やり方としては、/proc/プロセスID/cwdのシンボリックリンク先を見ればいい。 $ readlink /proc/$PID/c…

sudoは子プロセスを作る

とあるコマンドをsudo経由で実行したらpsで2つプロセスが見えた。 単純化した実行例: $ sudo sleep 300 &[1] 26061 $ $ ps -ef | grep [s]leeproot 26061 18849 0 18:44 pts/1 00:00:00 sudo sleep 300root 26066 26061 0 18:44 pts/1 00:00:00 sleep 300$ s…

テキストファイルのビットマップ表示

目grepに触発されて、バイナリエディタBzのビットマップ表示をテキストでやってみた。 作ったツール(txt2img)のソースを画像にしたもの。 ログファイルとかスレッドダンプとか長いファイルを俯瞰するのにいいかもしれない。

MinitestでOpen3.capture3の出力先頭に「# encoding: UTF-8」が入る

Open3.capture3で取得した標準出力の文字列をMinitestで使ったら、先頭に「# encoding: UTF-8」が入ってくることがあった。 例えば下記のテストは失敗するのだけど、expectedとactualの差分を見るとactualの先頭行が「# encoding: UTF-8」になっている。 # c…

Windows 10のAnaconda付属pipでWARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

Windows 10でAnaconda付属のpipを実行したら、SSLモジュールが見つからないとのことでpip installできなかった。 > pip install docoptWARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available…

RubyInstaller付属のMinttyを右クリックメニューで開く

RubyInstallerでRuby 2.6.5+DevKitをインストールしたらMSYS2が入った。 この機会にWindowsでのBash環境をGit for Windowsから変えてみた。 C:\Ruby26-x64\msys64にPATHを通す。 C:\Ruby26-x64\msys64\msys2.iniで次の行のコメントを外す。 CHERE_INVOKING=1…

Git for WindowsのMinttyを新しくする

Git for WindowsのGit Bashで使っているMinttyがversion 2.8.5と古いままだったのを新しくした。 手順は下記でQ&Aがあった。 https://stackoverflow.com/questions/50471172/how-do-i-upgrade-mintty-in-git-for-windows MSYS2のリポジトリからmintty-1~2.9.…

WSLでgnuplotを動かすとlibGL errorになる

WSLのUbuntsu 18.04 LTSでgnuplotを動かしたら、グラフが表示されたもののlibGL errorが2行出た。 gnuplot> plot sin(x) QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-volvox' libGL error: No matching fbConfigs or visuals fou…

Windows Subsystem for Linuxの初期設定

Windows Subsystem for LinuxでUbuntu 18.04 LTSをインストール後にやったこと。 1.リポジトリを日本のサーバに変更 $ cd /etc/apt $ sudo sed -i.bak -e "s/http:\/\/archive\.ubuntu\.com/http:\/\/jp\.archive\.ubuntu\.com/g" sources.list 2. 既存のソ…

watchコマンドをバックグラウンドで実行する

watchコマンドをバックグラウンドで実行しようとするとすぐに停止してしまう。 $ watch -n 10 'top -Hbcn1 > top_$(date +$F_%H%M%S).txt' & [1] 6603 $ [1]+ Stopped watch -n 10 'top -Hbcn1 > top_$(date +$F_%H%M%S).txt' $ 次のようにすればOK。 $ watc…

マウスカーソルを左上に移動させるワンライナー

> ruby -r "win32api" -e "Win32API.new('user32', 'SetCursorPos', ['i', 'i'], 'i').call(0, 0)" これをmcz.batなどとしてPATHの通ったところに保存し、Windowsキー+Rでmcz->エンターとうてば、マウスがスクリーンの左上に移動する。

ダミーのSMTPサーバ(続き)

前回の続き。 smtp4dev ダミーのSMTPサーバで検索して真っ先に挙がったものがこれ。 http://smtp4dev.codeplex.com/DOWNLOADSをクリックして、smtp4dev 2.0.9 standaloneをダウンロードする。 ZIPを展開すると実行バイナリ一つだけが入っているので、ダブル…

ダミーのSMTPサーバ

RailsのActionMailerを動作確認するのにGmailを使っていたけれど、もっと認証のゆるいSMTPサーバを想定した送信テストが必要になって、ダミーのSMTPサーバとして使えるものを調べた。メール送信する環境はWindows 10 + Ruby 2.2 + Rails 4.2.6。 ダミーのSMT…

Git for Windows付属のopensslを実行するときはwinptyが必要

Git for WindowsをインストールするとコンテキストメニューのGit Bash HereからMinTTYでopensslコマンドが使える。ただし、openssl [options]ではなくwinpty openssl [options]というようにwinptyを介する必要がある。 $ which openssl /mingw64/bin/openssl…

reStructuredTextの文法チェック

reStructuredText(reST)で長い文章を書いていて文法チェックしたくなったとき、オンラインのreSTエディタが便利。自分はOnline reStructuredText editorを使っている。 http://rst.ninjs.org/GitHubに自分の書いたreSTが期待通りに解釈されなかったら、 上記…

GitHub for Windows: エラー「値が有効な範囲にありません」で起動できない

Windows 7でGitHub for Windowsが急に、「値が有効な範囲にありません」というエラーで起動できなくなった。 最終的には、http://stackoverflow.com/questions/26435261/installing-github-on-windows-value-does-not-fall-within-the-expected-rangeで見つ…

Thunderbird: 突然メール受信できなくなった

かなり久しぶりに立ち上げたPCでThunderbirdを更新したら、メール受信(POP)ができなくなった。更新前のバージョンを失念してしまったが、更新後のバージョンは38.7.1。 受信ボタンをクリックすると、メールサーバに接続中のメッセージがステータスバーに表示…

Domain Coloringで桜を描いた

先日作成した複素数関数のDomain Coloringツール(colorz)で、桜の花を描いてみた。 実行したコマンドライン: $ colorz "(1+1i)*z/(sin((PI/10+z.phase)*2.5).abs+0.3*cos((PI/10+z.phase)*2.5).abs)" 白い線は絶対値が2のべき乗になるところ。色相は偏角をあ…

Domain Coloringの世界

複素数関数のビジュアル的な解析手法に、Domain Coloringというものがある。Domain Coloring https://en.wikipedia.org/wiki/Domain_coloring 直訳したら定義域彩色とでもいうのだろうか。 複素平面上の各点に対する関数の値(複素数)を色で表現した図である…

Tumblr:複数行にわたるコードブロックを書く

TumblrはMarkdownで記事を書けるのだが、複数行にわたるコードブロック(整形済みテキスト)は「```」で囲んでも整形が崩れてしまう。 一行だけの ```コード```は問題ない。 ``` 何か 複数行の コード ```は、 何か 複数行の コードとなる。プレビューで生成さ…

Keybreakモジュールによるキーブレイク処理サンプル(集計)

前回(キーブレイク処理を簡潔に書きたい - Toolbox)に引き続き、keybreakモジュールについて。 キーごとに数値を集計するサンプル。 件数カウントとほとんど同じ。 require "keybreak" RECORDS =<

キーブレイク処理を簡潔に書きたい

ということで、簡単なモジュール(https://github.com/hashimoton/keybreak)を作ってgem化した。 キーブレイク処理 キーブレイク処理(またはコントロールブレイク処理)とは、ソート済みのレコードを順に読み込んで、レコード内のある項目(キー)が同一のレコー…