カラクリサイクル

『輝かしい青春』なんて失かった人の雑記

はてなブログ上のブログを一部整理した

と言う話。


実際のところ、整理した、とは言っても、暫く前に仮閉鎖したブログの記事を既存のブログに移植しただけで、 数としてはそうは増減してないんですが、とりあえず僕のはてなブログ上のブログは下記の通りになりました:

で、まぁ do:kalaclism と Nyadgets! については、今年中を目処に復活させようかと目論でいて、 今は do:kalaclism の stylesheet を書き直すか、と言う所まで話を進めてたりします。

ま、昨日の記事でも言った様に、 昨日は昨日で MSYS2 の環境を整えていたりするんですが、 MSYS2 の環境を整えた理由の中には、 手軽にはてなブログ用の CSS 生成環境 (僕は SCSS を使っている) を作る、というのも有ったりしました。

ただまぁ、今日は今日でこれの作業とかする前に、日々の N 高生として学習に気力を費したんで、 作業は途中で止まっちゃってたりもします。ま、これについては、まーしゃーないと言うか、 一応学生は学習が本分ですからね。


とりあえず、今日はそんな感じでした。はい。

今日行なった作業

とりあえず雑多に。

1. msys2 での環境を再構築した

僕の場合、本格的に Linux 環境が必要になる場合には NixOS on Hyper-V を使ってるんですが、 なんちゃって UNIX-like 環境で十分な場合だったり、あるいは、GVim (+kaoriya) で必要になるコマンドラインツールを揃える、 という目的で、今日、MSYS2 の環境を真面目に構築していたりしました。

それで、一応 Shell 環境としては、

  • zsh + tmux + mintty

と言う組み合わせなんですが、mintty は最新の Version を使う様に時前ビルドをしていて、 かつ、tmuxwcwidith-cjkwcwidth.ctmuxutf8.c に丸っと移植する、 っという荒技とか使って、Ambiguous Width と NERDFont の Private Area の Symbols が 2 で表示される環境を作ってます。 なお、一応僕が使ってる PKGBUILD の定義を貼っておくと、大体こんな感じ:

# Maintainer: Alexey Pavlov <alexpux@gmail.com>

pkgname=tmux-git
pkgver=2.6.64.g6f3b6c8d
pkgrel=1
pkgdesc='A terminal multiplexer'
url='https://tmux.github.io/'
arch=('i686' 'x86_64')
license=('BSD')
provides=('tmux')
conflicts=('tmux')
depends=('ncurses' 'libevent' 'wcwidth-cjk')
makedepends=('git' 'ncurses-devel' 'libevent-devel')
source=("${pkgname}"::'git+https://github.com/tmux/tmux.git'
        https://raw.githubusercontent.com/Alexpux/MSYS2-packages/master/tmux-git/msys-platform.patch
        https://raw.githubusercontent.com/Alexpux/MSYS2-packages/master/tmux-git/no-check-dirs-permission.patch
        https://gist.githubusercontent.com/waltarix/1399751/raw/4db15139bcbf2d36993ef700b43a69eb0392aaf2/tmux-do-not-combine-utf8.patch
        https://gist.githubusercontent.com/waltarix/1399751/raw/4db15139bcbf2d36993ef700b43a69eb0392aaf2/tmux-pane-border-ascii.patch
        https://raw.githubusercontent.com/fumiyas/wcwidth-cjk/master/wcwidth.c
        )
sha256sums=('SKIP'
            'cf7e0f642d43fc97f7c55be41c693cceab5c891f81fcee687e918075e55cd533'
            '8f1938c9bcb99fba5441e11379a193c17eee582a03c04f1bde8089d58a84f44f'
            '55476ee1a324abf796b4595d92ed64af06b030143d3663b2e5dfd7865319f264'
            '9256114cd818e7070d27e44a725f28169ae1264587a65fd49f0c8f51233423e2'
            '9cb413f922779f63d2bc81c125a7c299ec186575c98bc8d971b15f44e5ebfed1')

pkgver() {
  cd "${srcdir}"/$pkgname
  git describe --tags | sed -e 's|-|.|g' -e 's|v||g'
}

prepare() {
  cd "${srcdir}"/$pkgname
  patch -p1 -i "${srcdir}"/msys-platform.patch
  patch -p0 -i "${srcdir}"/no-check-dirs-permission.patch
  patch -p1 -i "${srcdir}"/tmux-do-not-combine-utf8.patch
  patch -p1 -i "${srcdir}"/tmux-pane-border-ascii.patch
  cp osdep-cygwin.c osdep-msys.c

  mv utf8.c utf8.c.orig
  cat "${srcdir}"/wcwidth.c >utf8.c
  cat utf8.c.orig          >>utf8.c
  rm utf8.c.orig

  msg2 "Running autogen.sh"
  ./autogen.sh
}

build() {
  cd "${srcdir}"/$pkgname
  
  ./configure \
    --disable-dependency-tracking \
    --build=x86_64-pc-msys \
    --prefix=/usr \
    --sysconfdir=/etc \
    --localstatedir=/var \
    CPPFLAGS="${CPPFLAGS} -I/usr/include/ncursesw -U_XOPEN_SOURCE" \
    LDFLAGS="${LDFLAGS} -lwcwidth-cjk"

  make
}

package() {
  cd "${srcdir}"/$pkgname
  make DESTDIR="${pkgdir}" install

  install -d "${pkgdir}"/usr/share/licenses/tmux
  install -m 644 COPYING "${pkgdir}"/usr/share/licenses/tmux

  #install -d "${pkgdir}"/usr/share/tmux
  #install -m 644 examples/* "${pkgdir}"/usr/share/tmux
  #install -d "${pkgdir}"/usr/share/vim/vimfiles/syntax
  #install -m 644 examples/tmux.vim "${pkgdir}"/usr/share/vim/vimfiles/syntax

  #install -d "${pkgdir}"/usr/share/bash-completion/completions/tmux
  #mv "${pkgdir}"/usr/share/tmux/bash_completion_tmux.sh "${pkgdir}"/usr/share/bash-completion/completions/tmux
}

あと、これはライセンス的には MSYS2 のモノを継承するんで、再利用を考えている方はそっちを参照してください。

2. MyricaM M の Fontlink を調整した

上記の MSYS2 の環境を整備したコトと関連して、僕が普段使っている Monospace Font の MyricaM M に、 NERFFont の Glyph を表示するために Fontlink しているフォントを、

  • Symbols-1000-em Nerd Font Complete.ttf

に変更したりもしていました。

それで、この Symbols-1000-em Nerd Font Complete.ttf ってなんじゃい? と言うと、これは、

NERDFont の Unicode Private Area に入ってる Symbol Fonts のみのフォント

で、NERDFont のリポジトリのこの辺り から見付けてきて使っています。

まぁ、最初は Inconsolata Nerd Font を ttf に変換して無理矢理使っていたのですが、 mintty で Glyph が欠けて見た目がキモいことになるのを修正しようと試行錯誤して散々失敗した末に、

あ、NERDFont の Private area だけのフォントあるじゃん……

となったのは、ここだけの話です。はい。

3. blogsync + pt (the platinum searcher) とか使ってブログ記事の修正をしていた (WIP)

そして、これが本来の本題……と言うか、 MSYS2 の環境を整えていた理由の一つなんですが、 僕のこのブログ (カラクリサイクルの事です) 、あっちこっち引っ越したり、あるいは、 大量にあった他のブログを Merge したりして、結構過去の記事が壊れてたりするんで、 その辺りの修正を、blogsyncpt (the platinum searcher) とか色々使って修正していました。

それで、作業の流れとしては、

  1. blogsync で はてなブログから記事の Markdown を pull
  2. blogsync pull が終わったら、一度 Git repository に commit
  3. pt を使って問題のありそうな記事を検索する
  4. pt での検索条件が定まったら shell のコマンド繋ぎで一括置換する
  5. git status -s | cut -d' ' -f3 とかを繋いで一括で blogsync push
  6. 最終的に処理が終ったら変更を git commit

と言う感じでやってました。

なお、blogsyncpt と言うコマンドは、

という辺りのコマンドですね。はい

以上

と言うコトで、今日はそんな感じの事をしていました、と言う話でした。はい。

とりあえずこのブログの Hugo 化を取り止めて はてなブログに留まる事にした

うん、なんか面倒になってきたので hugo 化するのを止めました。

で、まぁ今回の中途の作業で、色々と知見……とまでは行かないものの、 ある程度、どこをどうすれば過去記事の修正が楽に出来るか、というのが分かったので、 その辺りは、このブログなどの過去記事の修正に生かしたいと思ってます。はい。

改めて Bitcoin について思うところを書いてみる

昨日、CryptoCurrency の Mining をちょっとだけ再開したんだけど、 よくよく考えてみると、なんかアホらしくなってきたので、 今日はその辺り、非常に雑に書いてみたいと思います。

1BTC ≒ $7500 ぐらい (2017年11月現在) ってアホなの?

まぁ、 Bitcoin が流行ってるからこそこの値段が付いているんだと思うんですが、

  • 1BTC ≒ $7500 (ぐらい)

って、 正直、みんなアホなの?

いや、1BTC が $7500 (ぐらい) って、そこそこの Mac Pro を一台買える値段だし、 かつては誰も見向きもしなかった CryptoCurrency がこの値段って言うのは、 まぁ凄いコトなんだろうけど、これ、どう考えてもバブルだと思うし、あと、

その BTC 、Private Key が Lost した ら、 全部消えるんだよ?

って言うモノに、まぁそこまでの価値を見い出すのはどうなのかなぁ、と僕は思います。

ディスクのクラッシュ一つで吹っ飛ぶ $7500 (ぐらい) って、リスク管理としてどうなの?

いやさ、Bitcoin って P2P で実装されたシロモノなんだから、 Shamir's Secret Sharing で Private Key がバックアップされて、 三つぐらいのパスワードで復元出来る……みたいな感じになってれば、 また変わってくると思うんだけど、現状、そんな仕組みなんて無い訳で。

精々が Paper Wallet とか、暗号化した信頼性が高いストレージにバックアップ……が関の山なので、 その辺り、誰も指摘してないのかなぁ、と。

で、僕はこの手の事で、前々から常々思ってるんだけど、ssh鍵 とか GPG鍵 も含めて、

秘密鍵を物理デバイスに保存して管理する (物理デバイスに依存する管理)

というのが悪手だと思っていて、基本的に、頭の中に染み付いている、

  • 長いパスワード
  • 短いパスワード
  • PIN

を入力する事によって、使う時だけにメモリ上に復元して、使用後すみやかにその復元したデータを破棄する、 と言うのが、まあキーロガーとかの問題は有るにしろ、まだ望ましいんじゃないか、と考えていたりはします。

まぁでもエントロピーが足りないとかそういう問題もあるには有るか。 やっぱりこの手の問題は難しいですね、はい。

Mining てタダの電気の無駄遣いなんでは……?

いや、これがさ、誰某の代わりに Deep Learning とかを行うリソースを P2P で貸せて、 それの礼金を P2P で受け取る事が出来ます、って言うならまだ有益だと思うんだけど、 現実問題、そういう系の Cryptocurrency ってあんまりパっとした話を聞かないし、 あと、普通に考えて、Bitcoin の Mining って、要は、

電気代を使って PC フル回転させて、ハッシュ値を Brute force で総当たりしているだけ

な話なので、うーん、ソレ、いくら儲けが出るから、と言って、本質的には、

電気をカネで買って、その買った電気でカネを生み出す

という類いの、壮大なムダ遣いに思えてならないので、 そういうのはクッキークリッカーだけにしておけ、と思います。

以上

まぁしょうも無い記事を長々と書いてきた自分もどうかと思いますが、 真面目な話、最初の 1BTC 高すぎ には目を瞑るとしても、

  • Wallet の Backup の自動化や確実化が 個人やサービスに任せになっている 現状
  • Mining って実は タダの電気の無駄遣い なんじゃないか、っていう 本質的な問題
  • あと、P2P 通貨とか言いながら、実際には ほぼ中央集権になってるじゃねぇか 的なヤツ

とか言う問題点もあるし、あと、ちょっと引いて見たら分かるんだけど、なんか Cryptocurrency って、

壮大に資源を無駄遣いして金儲けの仕組みを作ってるだけ なんじゃ……?

と思わないでも無いので、まぁもうちょっと、なんて言うかこう、

PC の余剰リソース有効活用出来て稼げる ような World Community Grid っぽい

が、有れば良いのになーと思います。はい。

ま、そういう類いの CryptoCurrency 、実際有ったと思ったけど、あんまり流行ってないのは残念だよなぁ。