brand new note

日記と備忘録

windows10でurxvtを起動する

やりたいこと

hyperをwindowsのターミナルとして使っていたのですが、出力が重くなってしまったため代わりにurxvt (rxvt-unicode)を使うことを検討しました。

やってみる

・sudo apt install rxvt-unicodeが通らずperlのバージョン関係のエラーが頻発した

perlのバージョンを上げたり下げたりしてもその日は解決しませんでした。

・後日、sudo apt install rxvt で通った

/etc/apt/sources.listを変更してjaistからインストール。unicode対応版ではないものの、rxvtはXlaunch経由で起動できました。

Xlaunchって何

VcXsrvをインストールした際の呼び名です。これを使うとwindowsからでもXwindowSystemを使うことができます。つまり、windowsで使えないターミナルもXlaunchからなら立ち上げることができます。WSLをいじいじしていた時に偶然触っていたので自分のPCにはこの環境が入っていました。この辺見るといいです。

お前らのWSLはそれじゃダメだ - たいちょーの雑記

Xlaunchを起動したのち、windowsから直接叩けるターミナルを用いて以下のコマンドを打つ

dbus-launch rxvt -e uim-fep

f:id:frazz:20190519211904p:plain

起動したけど…二度手間だししょぼい…そこまでやる必要あるか…

動作が軽そうだということは理解しましたが、ほかの方法でうまく行かないか試します。

もっかい

・apt install rxvt-unicodeが通った

Get:1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 perl-base amd64 5.26.1-6ubuntu0.3 [1390 kB]

序盤はperlのバージョンがなんだとかっていうエラーが頻発していたんですが、デフォルトの/etc/apt/souces.listのコメントアウトをいくつか外したところうまくインストールできました。なんだ。

・apt install rxvt-unicode-256colorも通った

これを使うことにしましょう。

・起動が以下のコマンドからできることがわかった

rxvt rxvt-unicode

f:id:frazz:20190519212521p:plain

Xlaunchが起動している間はこのコマンドが有効になるということだと思います。

おもうこと

・そもそもhyper起動してから立ち上がるのであれ

・軽いのは理解したけれど、しょぼい

・公式っぽいインストール手順を色々すっ飛ばしていて不安

・フォント、背景色については設定ファイルをここから書けばいい?

もっかい!

・VcXsrvを起動する手間にはメリットもある

Windows Subsystem for Linux + X Windowを1.024倍くらい使いこなすための方法 - Qiita

端末起動するだけなら手間増えてるよなあと思ったんですが、こういう環境にすることによってほかにもできることが増えたみたいです。なによりだ。

・設定を.Xdefaultsに書いた

少しだけ調べた感じだと、ほかの端末からXwindowに入るケースでは設定が崩れたりする場合があるので、.Xdefaultsは基本的な設定のみを書いて残りは.Xresourcesに書くのが作法のようです。(.Xresoucesは.Xdefaultの設定を見に行った後に手動で起動することによって使える設定というイメージ)

【Proton.jp】 .Xdfaults と .Xresources の違い

が、特にそういうことを考えない場合は全て.Xdefaultに書いても差し支えないようです。

URxvt.scrollBar: false 
URxvt.cursorBlink: true
URxvt.cursorUnderLine: true 
URxvt.background: #222222
URxvt.foreground: #ffffff
URxvt.font: xft:DejaVu Sans Mono, xft:IPAGothic
URxvt.depth:                32
URxvt.geometry:             80x30
URxvt.transparent:          false
URxvt.fading:               5
URxvt.urgentOnBell:         true
URxvt.visualBell:           true 
URxvt.loginShell:           true
URxvt.saveLines:            2000
URxvt.internalBorder:       3
URxvt.lineSpace:            0
URxvt.letterSpace:          -1


Xft.dpi:                    96 
Xft.antialias:              true
Xft.rgba:                   rgb
Xft.hinting:                true

・キー配列を英字の設定にしてVcXsrvを起動する

Xlaunchはショートカットアイコンから起動すると日本語キー配列の設定で立ち上がります。似たような詰まり方をしている方の記事があったのでこれで解決しました。

VcXsrv日本語キーボード問題 – INOUE Katsumi at Tokyo

アイコンクリックでなくコマンドからVcXsrvを起動し、その際英字配列を使うようにオプションで指定します。そこからrxvtを立ち上げます。スクリプトにしました。

#!/bin/bash 
ps aux | grep "/mnt/c/Program\ Files/VcXsrv/vcxsrv.exe :0 -multiwindow -clipboard -noprimary -wgl -xkblayout us" | awk '{ print "kill -9", $2 }' | sh 
/mnt/c/Program\ Files/VcXsrv/vcxsrv.exe :0 -multiwindow -clipboard -noprimary -wgl -xkblayout us &
sleep 3;

rxvt-unicode

1行目は、VcXsrvのプロセスが立ち上がっている場合、一度killしてから立ち上げ直すようにするために入れました。念のため。

2行目が英字キー配列の設定でVcXsrvを起動するところです。ショートカットアイコンをクリックして質問のダイアログをポチポチする手間が省けました。

rxとかいう短縮コマンドにしてこれを実行できるようにするとより便利です。

f:id:frazz:20190520220035p:plain

ま、ましになったかな…

とりあえずここまで起動するための踏み台になるターミナルはWSLでもcmd.exeでもいいわけで、hyperから足を洗えるだけの材料は整いました。いったん終わり。

はてなブログにgoogle analyticsを組込む

このブログにもgoogle analyticsを組込みました。やり方のメモです。

なにこれ

はてなブログでも自分のブログのアクセスは確認できますが、google analyticsを使うとより高度なアクセス解析ができます。はてなブログproでできることはよく知りませんので、proになってからできることと内容がかぶっていた場合はごめんなさい。

加えてできるようになることの主要な点は以下になります。

  • ページ毎の詳細なアクセス数がわかる

  • どの地域からのアクセスかわかる

  • アクセス元がモバイル端末なのかPCなのかわかる

  • 直帰率やセッション継続時間がわかる …etc

google analytics

f:id:frazz:20190515010414p:plain

  1. 自分のgoogleアカウントからgoogle analytics のページに飛んで登録ボタンから登録作業を開始
  2. google analyticsアカウント名とウェブサイトの名前を入力(何でも可。これはgoogleアカウントとは別物です)
  3. ブログのURLを欄に入力
  4. 適当に業種を選び、レポートのタイムゾーンは日本を選択、データ共有設定のチェック項目をとりあえず読む
  5. ラッキングIDを取得

はてなブログ

f:id:frazz:20190515011542p:plain

  1. ダッシュボード→設定→詳細設定を開く
  2. google analytics のトラッキングIDをペーストする

確認

f:id:frazz:20190515011510p:plainf:id:frazz:20190515011521p:plainf:id:frazz:20190515011531p:plain
比較

だいぶいかす感じになりました。アクセス数に関しては目を瞑ってください。

ひとつデメリットとしては、google analyticsはブログ編集中の自分の足跡もアクセスとしてカウントしてしまいます。ですので純粋な他所様からのアクセスを確認するためには既存のアクセスカウンタを用いるのが便利です。

指定のIPだけアクセスカウンタから弾く、みたいなこともできたような気がしますが、昔やってみてうまく行かなかったので特に今回は気にしていません。

おわりに

なんですんなりこんなことやったのかと言われれば過去にアフィを齧っていたからです。

仕組みはいい勉強になりましたがコンテンツが黒歴史過ぎたのでサイトの運営は終了させました。ともかく知識はこうして使いまわせるので楽しいですね。

CapsLockキーをCtrlキーにする

CapsLockキーを使わないのでCtrlキーとして認識させるようにしました。使用OSはWindows10です。

これでショートカットキーで小指が攣らなくなるのに加えて大文字小文字変換のミスが減ります。

ざっくり

  1. ファイルの拡張子を変更できるようにする
  2. レジストリファイルをメモ帳から作成する
  3. 拡張子を.txtから.regに変更して実行する
  4. 再起動

もうすこしくわしく

  1. windows+Eでエクスプローラを開く
  2. ファイル→フォルダと検索オプションの変更を開く
  3. 表示を選択し、登録されている拡張子は表示しないのチェックを外す
  4. 拡張子がファイル名クリック時に変更できるようになる
  5. レジストリファイルを以下の内容で作成する(メモ帳からでよい)
  6. .txtファイルを.regファイルに変更しアイコンが変わることを確認する
  7. 実行して再起動する
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00

参考

www.shin-tan.com

www.shin-tan.com

無効化したい場合等、詳細な説明はこちらに記載されています。お世話になりました。

本来もっとレジストリファイルって丁重に扱われるべきものらしいので、自分ももうすこし調べてみます。

TCPの最大スループットを概算する

TCPを使った通信の最大スループットはウィンドウサイズとラウンドトリップタイムによって決まります。

Tmax=W/RTT

例えばウィンドウサイズが65535byte、RTTが100msのとき、最大スループットは以下のようになります。

Tmax=65535x8(bit)/0.1(s)=5242800(bps)≒5.2(Mbps)

この最大スループットはTCP1セッションに対する速度ですので、セッションを多重化すればスループットは上がります。 web等では高速化の為TCPコネクションを4つ程度同時に確立しているそうです。

参考

マスタリングTCP/IP 入門編 第5版

マスタリングTCP/IP 入門編 第5版

ポストモーテムって何

久しぶりに書き物がしたくなりました。 ふらふらと役に立ちそうな記事を読み漁っていたら気になる単語を見つけました。ポストモーテム、なんだか失敗談を書き記すような文化のことを言うらしい。2分で読んでただ感心したということをメモにしているだけですので、正確な情報ではないことをあらかじめご了承ください。

ポストモーテムの文化 - エムティーアイ エンジニアブログ

人間の失敗を記したドキュメントは陳腐化しない - non117's diary

外部向けのドキュメントではなく、自分達の組織をより良くするために書く内部向けの文章、という特徴があるようです。失敗談を書く理由は同じ過ちを次の世代に残さない為。うまくいかなかったことを文書として書きためれば、時とともに適切な判断が可能になっていきます。

ドキュメントにも色々ありますよね。エンジニアが外向けに文書を出すときに書くものは成功体験や実験の成果であったり、あるいは説明責任を果たす為に書かれるものであったり(自分が書いた事はありませんが…)。内向きであれば組織内で使われる技術の使い方だったり。自分もブログの他に、研究室内のwikiをたまに管理することもありますし、もちろん必要に応じてメールもスライドも書きます。記事を読んでいて、現環境の内外で意識的に文体や伝えたいことをうまく書き分けられているのだろうか、などとぼんやり考えてしまいました。

ソースは最近有名なSRE本だそうで、いえ、ぼくは読んでないんですけど。ただ漫然と毎日を繰り返すよりも意識的に失敗談を記録したほうが血肉になる感覚は日々感じるようになってきています。だからなんとなくこれらの記事が目に留まったのかもしれませんね。

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

ところで

随分とブログの更新に間が空いてしまいましたが、自分が文章をなんとなく書き留めることは変わらず好きで。近頃は抽象的なことしか考えられなくなってきたもので、しばらく他人の目に見せられるような文章は書けないと思い自粛していたのですが、そろそろそんなものでも日々思ったことを書ければいいのかな…などと思い始めております。(ほんとは去年の夏から日の目を見ていない書き物が75万字くらいあるんですよ。。。)

この記事を推敲していたら、意味が破綻してる文章しか書けなくなってきていることに気づきました。人に見せるものは脳からダイレクトに気持ちを取り出すような書き殴りかたをしないようにしないといけませんね…

あけましておめでとうございます

今年もよろしくお願いいたします。少し遅れましたがこの場で2018年の振り返りと2019年の目標を書いておきます。

2018年の反省

去年はM1、同期はほぼ皆就職、残った院生と共同研究者の方々は強者揃い…ということもあり、大学生気分をなんとか抜きたいだとか、自分の意志で何をどこまでやれるのかとか、そういう気持ちが大きかったように思います。特に下半期にかけてはモチベーションが完全に逆転し、恥ずかしいはなし勉強のほうは芳しくなかったのですが、結果として、エンジニアとしてでなくひとりの人間として何に心地良さを感じるのか、今、ひいてはこれから先、自分の心が折れたらどう立ち直ればいいのかを知る年となりました。

自分の実力の伸び悩みに対する対処について、うまく立ち回れなかったのが2018年かなと思います。現在も解決できていないもやもやしたものが色々ありますが、それを踏まえて2019年の目標と行動指針を立てたいと思います。

2019年の目標

  • うまく他人を頼るとはどういうことか学ぶ
  • 自分のペースで勉強するが、常に興味を失わない
  • 知識の吸収率に対する合格ライン(ハードル)を下げる
  • 悩みに対するより良い向き合い方を探す
  • 居心地のいい空間と人を探す
  • 留年しない()

人間的にも技術的にも自分の未熟さに苦しみ、それでもいいから一度は自分の意志であれこれやってみたいというのが去年の感覚でした。自分でも抑えが効かないほど色々なことに悩み、ご迷惑もかけてしまいました。故に、これまで他人を頼って成長してきた部分は大事にし、また自分のペースも見失わず、うまくバランスを取っていけるようになることが今年の大きな目標です。


個人的な悩みは割愛しますが、モチベの部分でうまく立ち回る方法のひとつとして、当ブログは継続して書いていきたいと思っています。ただ、あまり皆様が読んで勉強になるような良い記事は書けないかもしれません。あと10年くらい待ってください()

ブログも含め研究以外での勉強は、自分でインプットアウトプットの質を若干低くすることを許容しようと思っています。院生だしもっと頭よくなりたいみたいな自分自身の縛りに疲れました。技術的に優れた記事を書く方はたくさんいらっしゃるので頭が上がりませんが、それを見て何も手が出せなくなるようなことを避けたいと思っています。そんなわけで技術的な目標は具体的には立てず、気になるものを広く浅く調べようと思っています。


あとまあ下の目標は…修論と就活の話ですけども…。今は技術的に優れているかどうかよりも、長く穏やかな心で続けられるお仕事を探したいなという気持ちのほうが強いです。研究室の皆様の引き立てのお陰で、学部時代の漠然とした不安はほとんど消えました、感謝しかありません。まだまだ未熟ですし更なる飛躍をという気持ちもありますが、これから長く働く空間は慎重に選びたいと思っています。何卒よろしくお願いします。

進捗率を表示するpvコマンド

aptとかyumしたときに表示される進捗率をあらわすプログレスバー。pvコマンドを用いると簡単にこれを実装することができます。時間がかかる処理を自作した場合に対して有効です。使ったことがない方はまずインストールしてみましょう。

sudo apt install pv

使い方

時間がかかる処理ということで、試しに大きなファイルの圧縮をやってみましょう。まず500MBのダミーファイルを用意します。

dd bs=500000000 count=1 if=/dev/zero of=bigfile1.dat
dd bs=500000000 count=1 if=/dev/zero of=bigfile2.dat

ダミーファイルの作り方の説明はこちら

/dev/zeroってなんだ - brand new note


次に作成した二つのファイルをアーカイブし、圧縮します。tarの引数に-を指定することによって、コマンドの出力を標準出力に出すことができます。これにより、パイプで進捗率をpvコマンドに渡すことが可能になります。最後にgzipコマンドに渡して圧縮します。

tar cf - bigfile1.dat bigfile2.dat | pv | gzip > archive.tar.gz


ikeda@DESKTOP-4B08IPQ:/tmp/myapp/datadir$ tar cf - bigfile1.dat bigfile2.dat | pv | gzip > archive2.tar.gz
 953MiB 0:00:06 [ 137MiB/s] [            <=>                                                                           ]

プログレスバーで圧縮中の様子を観察することができます。左から順にトータルのデータ量、経過時間、処理速度が出力されているのがわかります。

参考

UNIXシェルスクリプト マスターピース132

UNIXシェルスクリプト マスターピース132