手元 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 が混じってるのに特に意味は無い、タブ文字の前の空白文字は自分の状況での表示の調整。

参考

TLS1.2 サーバ

ちょっと TLS1.2 での通信を確かめることになって、たしかに TLS1.2 でしゃべってる HTPPSサーバが欲しかった。

ruby -r webrick/https -e 'WEBrick::HTTPServer.new(:Port=>3001,:DocumentRoot=>"./",:SSLEnable=>true,:SSLCertName=>[["CN", "foobar"]]).tap{|s|s.ssl_context.ssl_version=:TLSv1_2}.start'

取敢えず簡便なものが欲しいのでワンライナーで。

Port 指定注意、無しだと 80番を取りに行って駄目ならエラーになる、駄目じゃないときはそれはそれで危ないときなので注意。大体ドキュメントルートとして実行場所のローカルファイルさらしてる訳で、ローカルだけで見るようにしましょう。

SSL/TLS 用なので webrick/https library webrick/https (Ruby 2.5.0) をリクワイアする、これで webrick 自体もリクワイアされる。/https なしでも SSLEnable 指定は通るが別に SSL/TLS にはならない、設定値のハッシュにそのキーが追加されるだけということだろう。

webrick/httpsクワイアして :SSLEnable=>true にすると最低限 :SSLCertName も指定しないとエラーになる、これは
class OpenSSL::X509::Name (Ruby 2.5.0) の指定になるので、配列の配列が必要、最低限の指定ならまあ ”CN” にしときましょう。

そしてプロトコルを TLS1.2 に限りたいので
class OpenSSL::SSL::SSLContext (Ruby 2.5.0) #ssl_version= で指定する、選択肢は
constant OpenSSL::SSL::SSLContext::METHODS (Ruby 2.5.0) にある。このリストに :TLSv1_2 がない環境だとちょっと悲しい。ここで
instance method Object#tap (Ruby 2.5.0) を使ってる、HTTPServer.new の引数でなんとかならないかと思ったけど難しい、ここではハッシュ引数にしてるが、
constant WEBrick::Config::HTTP (Ruby 2.5.0) を渡してもいい、そのときは WEBrick::HTTPServer.new(WEBrick::Config::HTTP.tap{|c|c[:Port],c[:SSLEnable],c[:SSLCertName]=3001,true,\[\["CN","foobar"\]\]}) とでもするのだろうか、それで #ssl_context(OpenSSL::SSL::SSLContext) に触れないか。

最初のワンライナーに戻る。これを実行して適宜ブラウザからアクセスすると確かに TLS1.2 をしゃべってる、ほかのプロトコルではしゃべらない。ブラウザ表示ページのプロパティや、ブラウザの設定で使うプロトコルを調整したりで確かめた、 ssl_version=:TLSv1_2 のところも :TLSv1_1 やさらに下位にしてみたり。

あと、この辺のスクリプトはそこそこ古い Ruby でも動く、なのでハッシュ引数は古い記法で書いてる、まあそんな環境ではプロトコルの選択肢に :TLSv1_2 が出てこない訳だ。

ぶろぐ移行続き、というかこちらの編集画面をひらくまでのあいだ。はてなブログの管理画面つづき

 

「インポート設定」画面


インポート設定 画面
Rubyとか Illustratorとか SFとか折紙とか  hs9587’s diary ? 
投稿数 370
コメント数 85

3ステップでかんたんインポート

STEP1 記事のインポート
「確認画面へ進む」釦押下、

このはてなダイアリーをインポートします。よろしいですか?
「インポートする」釦押下

インポートしています... 画面

プログレスバーの進行は結構ゆっくり、みてるあいだはすすまない、20分くらいしてみたら終ってた


STEP2 はてなブックマークの移行
はてなブックマークを移行する」釦押下
「… 本当によろしいいですか?」ダイアローグ「OK」
 これはわりと一瞬、まあブックマーク殆どないしね


STEP3 記事のリダイレクト
「リダイレクト設定する」釦押下
「… よろしいいですか?」ダイアローグ「OK」

「おめでとうございます! インポートが完了しました!」

はてなブログ

はてなブログ へ移行しようか、はてなダイアリーからのインポート(ブログの移行) - はてなブログ ヘルプ

ええと、まず  ブログを作成 - はてなブログ で移行先 hs9587’s diary を作成、すべての人に公開 でいいや。「まだ記事がありません」と。

はてなブログ画面右上の「hs9587’s diary」リンクから「設定」で管理画面、左辺メニューの「インポート」を選ぶ、インポートもとのタブで「一般のブログ」「はてなダイアリー 」とあるの「はてなダイアリー 」を選ぶ、所要の「Rubyとか Illustratorとか SFとか折紙とか」が(だけ)でてくるので「インポート設定」釦、「インポート設定」画面になる、この辺でこの記事は保存してそっちの画面での操作を続ける