追記

いがいが日記


2021-05-01 [長年日記]

_ Sakura VPS Ubuntu 18.04, Ruby3.0.1, tDiary 5.1.5

この日記を動かしているSakura VPSを式年遷宮してOSから新規インストールした。Ubuntu 20.04にするにはISOアップロードが必要だったので、選択できた18.04にした。OSインストールはかんたんであっという間だった。これで2023年まで使える。

tDiaryだけならばDBとコンテナにしてHerokuで動かす方が楽かもだけど、ちょっとHTTPサーバで公開したいとか、しばらくバックアップで使いたいとか、VPS環境があると便利なのでそのまま続投にした。ハードウェアも前回契約そのまま続投でSakuraの1Gプランで月額990円、HDD100GB。今きづいたが、現在はSSDが標準で50GBだけど、100GBへ無料で増量できるのか。そして石狩データセンターだと少し安い。引っ越せばよかった。また次の式年遷宮で。

作業は3時間ほどでnginx起動までできて、そこからtDiaryを動かすUnicornをサービス化するところが前と変わっていてちょっとてこずって3時間ほどでtDiaryが動いた。全部でだいたい1日。

tDiaryを動かすRubyもついに3.0系に。最初は1.8系だったから遠くまで来た感がある。あとはRSS発行ができているかとかGoogle検索ができてなさそうとか細かいところは追って調整。

以下、作業時につまづいたところメモ

  • VNCコンソールではコピペできなかったのでシリアルコンソールを利用
  • Let's encryptの実行は前回実行が近くてテストできなかったので後日cron実行後に確認
  • Rubyビルド用のaptパッケージ群のlibreadline6がなくなったようなのでぐぐってaptパッケージ群を更新
    • たぶんこんな感じ
    • $ sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev libgdbm-compat-dev libgdbm-dev libdb-dev
  • tDiary bundle install時に ERROR: could not find idn library! が起きたので aptパッケージ libldap2-dev libidn11-dev を入れて対応
  • tDiary unicorn起動時にエラー、Ruby3.0でなくなったwebrick, rexmlをGemfile.localへ追加
  • unicorn 自動起動設定、Ubuntu18.04で /etc/init.d/ に置くオレオレサービスsystemctlにランレベルの表記が必要になったそうなので/etc/init.d/unicorn_tdiary先頭にランレベルコメント追加
#!/bin/sh
### BEGIN INIT INFO
# Default-Start: 2 3 4 5
# Default-Stop: 0
### END INIT INFO

追記(2021/05/03): Google検索できない問題は「HTTPSで検索できない」という問題で、調べたところ結果を貼り付ける部分のHTTP/HTTPSのmixed contents問題のようだった。Google Programmable Searchのページへ行ってデザインを設定できることがわかったので、結果をGoogleのページへ遷移することにした。いままではsearch google custom.rbプラグインをつかっていたのを外して、Google Programmable Searchで提供されるHTMLコード片をサイドバーに書くことにした。これでHTTP/HTTPS両方で検索できるようになったと思う。しばらく様子見。


2021-04-20 [長年日記]

_ tDiary 20周年

この日記でつかっているtDiaryがついに20周年を迎えた。この20年間でいろいろなブログサービスが出てきてはなくなっていき、その波にのまれることなく日記を同じシステムで書き続けられることのありがたみを改めて感じている。

Rubyの技術的にもいろいろな変遷を経ているはずで、CGIからRackへ、データ保存先はファイル以外にDBに対応し、書くフォーマットもMarkdownになった。なによりこの20年間の全てのRubyバージョンで動かすだけでもかなり大変だったのではないだろうか。$SAFEや$KCODEがRuby3.0でついにRubyから削除されたことに時代を感じられたのもtDiaryのおかげだ。

この日記は2003年9月からはじめたので、18年ほどつかっていることになる。意外と長い。この日記の歴史と私のRubyist歴はイコールで、そして社会人歴もほぼ同期間なので、私の成長の履歴がこの日記に残っている。なにより、tDiaryユーザーというラベルを持っているとRubyコミュニティに入っていきやすく感じた新参者の時代から、その後も長くtDiaryコミュニティのみなさんにお世話になっていることは本当にありがたい。今やRubyでお金を稼いで会社までつくることができた。tDiaryすごい。この日記を書き始めたばかりの頃の私にそれを伝えたら「えっ、Rubyが仕事になるの?しかも10年以上も仕事をしつづけられるの?!」と相当に驚くと思う。

長くメンテナンスをつづけてくれているtdtdsさん、hsbtさん、machuさん、ほかコントリビュートしているみなさんに深く感謝して、これからもtDiaryで日記を書き続けたい。そしてまたみんなで集まってお祝いのケーキを食べる世界が来ることを祈っている。

tDiaryは二十歳になりました: https://tdiary.org/20210420.html


2021-04-16 [長年日記]

_ tmuxをやめてみた

長らくつかっていたtmuxをやめてみた。何年くらいつかっていたのだろう。10年以上経ってる気がする。

screen相当の機能はほぼつかってなく、キーボードショートカット系の機能で利用していたのだけど、iTerm2の機能と重なってうまく動かないことも出てきたので、全部iTerm2へ引越ししてみようとトライ中。いまのところ困ってない。

衝突してうまく動かなかったiTerm2機能はSemantic History。cmd+clickでパスぽいものを選ぶとコマンド実行してEmacsを開くとかできる。

iTerm2でキーボードでスクロールするのはキーボードショートカットのところに既に書かれていた。デフォルトはcmd+Page Up/Downだったので、cmd+j/kを登録した。


2021-04-01 [長年日記]

_ 転生したらnilオブジェクトさんだった件について

神「転生させてやろう。何になりたい?」

?「レアなやつでお願いします!」

--- 転生 ---

?「これなんですか?」

神「nilオブジェクトだ」

nil「nilオブジェクト」

神「シングルトンだからこのプロセスの中に1つしかない」

nil「シングルトン」

神「ifのelse節に入れるのもfalseとnilしかないレアさ」

nil「else節」


2021-03-30 [長年日記]

_ ruby-coreコードでpデバッグ

調べても意外とわからず、笹田さんに教えてもらったのでメモ。 printfだとflushのやり方がよくわからなかったので以下を使うと良い。

rb_p

  • Rubyのp メソッドをつかう方法
  • rb_pにRubyのStringオブジェクト相当を渡す
  • rb_fstring_newはfrozenなStringオブジェクトをつくるメソッド
  • work/rb_mjit_header.hにサンプルになるコードが書いてあったので真似た
rb_p(rb_fstring_new("===foo", (sizeof("===foo") - 1)));

fprintf

  • 笹田さんに fprintf(stderr, "===foo\n"); を教えてもらった
  • flush不要なので便利
  • fprintf(stdout, "===foo\n"); も動いた
  • 前に書いたときにSEGVしたのだけど、あらためて動かしてみたらちゃんと動いた
    • stdoutをちゃんと取れてなかったのかなー?
fprintf(stderr, "===foo\n");
fprintf(stdout, "===foo\n");

追記