丸数字をよける

Shift_JIS の文脈で丸数字をちょっとよけたかった

# coding: Windows-31J
(''..'').inject([ARGF.read.force_encoding('Windows-31J'), 1]) do |(input, i), n|
  [input.gsub(n, "(#{i})"), i + 1]
end.first.display

こんな感じか。

もう少し何とか、
丸数字一つずつじゃなくてまとめてとかどうかないかな、String#tr では変換先一文字だっけ

alias nkf

alias nkf='ruby -rnkf -e "opt=[]; opt << ARGV.shift while ARGV.first.to_s[0]==%q[-]; NKF.nkf(opt.size>0 ? opt.join(%q[ ]) : %q[-w], ARGF.read).display;" --'

ちょっと、ruby 入ってるけど nkf 入ってないところでエイリアスで書いてみるとこんな感じか。
出力文字コード指定、デフォルトで '-w' 入れるようにしてるけど、明示的にオプション指定したときは無効になるのでその時はこれもきちんと書くこと。

何もオプション書かなかったら出力指定ユニコードになるけど、入力指定とかでオプション書くときは出力指定も書くように「-Sw」とか。

入出力コード固定なら

alias nkfSw='ruby -ne "\$_.encode(Encoding::UTF_8,Encoding::CP932).display"'

でも良いかもしれない。

コード推定は

alias guess='ruby -rnkf -e "NKF.guess(ARGF.read).display"'

かな。
file コマンドあるならその方が改行まで分かるか。

手元 Windows機で Git

いまさらながら Git。
手元 Windows 機でもやりたいかと、ブラウザだけじゃなく。

そして

GitHub for Windows」で「GitHub Desktop」を入れて、
そのリードで「Git for Windows」を入れると「Git GUI」が入るのがいいみたい。
その後それで入ってる「Git Bash」を適宜調整する、透過性等のクライアントの設定と、rcファイル等の設定ファイル

普段使いのGUIには「Git GUI」がいい感じ、pullがないので Toolメニューに「git pull」を追加する。
ファイルの編集はその Bashvim が性に合うかも、上記調整でその使い勝手もやっとく、
tag 切るのはその Bash からの gitコマンドがいいみたい、大tag 小tag とかあるんだっけ、具体的なコマンドは下記

新規レポジトリの作成は「GitHub Desktop」からがいい感じ。
(ユーザ)ドキュメント\GitHub の下に作ってく、ライセンスとか ignore初期設定選べるのもいい。
「Git GUI」で作るとその辺選ぶのないしローカルリポジトリを(ユーザ)直下に作るのは馴染めない。

いずれにしても「Git GUI」起動画面で新しいローカルリポジトリもリストアップしてくれるのはあり難い、
GUI起動した後そのショートカットをメニューから作れるのでデスクトップに配置しとくといいかも。

タグも GitGUIにはない、GitBash から

  • ローカルでタグ git tag -a 名前 -m コメント
  • リモート(マスター)にあげる git push --tags
  • Git - タグ

時間の掛る Webサーバ

ちょっと処理時間のかかる Webサーバとお付き合いしてて、手元でも確認したくて時間のかかるサーバを作る。過去記事でも TLS1.2 サーバ - hs9587’s diary とか "小さい"Rackアプリケーション - hs9587’s diary とか Webサーバあったよね。

require 'webrick/https'

proc = lambda do |req, res|
  puts start = Time.now
  sleep 10
  res['Content-Type'] = 'text/plain'
  res.body = "start: #{start}.\nstop : #{stop = Time.now}.\n"
  puts stop
end

srv = WEBrick::HTTPServer.new(
  Port: 3001,
#  DocumentRoot: './',
  SSLEnable: true,
  SSLCertName: [['CN', 'foobar']],
  )
#srv.ssl_context.ssl_version = :TLSv1_2

srv.mount_proc '', proc

trap('INT'){ srv.shutdown }
srv.start

やっぱり TLSしゃべった方がいいよね、その辺を WEBrick で指定し、ディレイのあるメソッドを class WEBrick::HTTPServer (Ruby 2.6.0)#mount_proc で割り当てる、 sleep の数字秒ディレイする。割り当てディレクトリ指定空文字列にしとくとなんででも来る、どんなので来てるかは req (class WEBrick::HTTPRequest (Ruby 2.6.0))にある。
こんな感じで ruby で実行する、INT 捕まえて Ctrl-C で終わるようにしてる。

Yahoo!ジオシティーズ サービス終了

ここの記述を遡るとジオシティーズに行き着くのだが

おしまいということである

案内に従ってFTPでファイルをダウンロードする。FTPクライアントWindowsコマンドラインでもいいのだけど、サブディレクトリたどって再帰的に取ってくるのは大変か、 WinSCP でも使おうか。

ローカルで確認すると、なかのリンク先や自分で作った画像のアドレスは原則相対アドレスなのでそのへんはリンク切れなさそう。ただ、ジオ提供の画像がそれなりにあるのはどうしようかな、ルートからの記述になってるので全部書き換えるのは大変、まあなくてもいいでしょう、alt の記述あるのも多い。

ローカルに保存するけど一応 Webにも置いとく、これも WinSCP でアップロード

特にジオの転送設定はしない。

データベース毎の容量、 pg_database_size と du -s #{datid}

PostgreSQL でのデータベース毎のディスク容量をみる

psql -tAF $'   \t' -c 'select pg_size_pretty(pg_database_size(datname)),datname from pg_database order by pg_database_size(datname) desc;' | less

外形的にOSからみた容量なら

(ruby -e 'dats=Hash[* `psql -tAF#{39.chr} #{39.chr} -c #{39.chr}select datid,datname from pg_stat_database order by datid;#{39.chr}`.split ]; Hash[* %x[du -sh #{dats.keys.map{ |id| "/var/lib/pgsql9/data/base/#{id}" }.join(" ")}].split ].map{ |size,dir|id=dir.split("/")[-1]; "#{size}\t#{dats[id]}  \t#{id}\n" }.join.display' ; du -sh /var/lib/pgsql9/ ) | sort -hr | less

たいした差は無いが後者の方が若干多いか。 '/var/lib/pgsql9/data/base/' はデータのある場所、Amazon Linux でのパッケージインストールの場合、そして postgresユーザ。バッククォートと %x が混じってるのに特に意味は無い、タブ文字の前の空白文字は自分の状況での表示の調整。

参考