WordPressでプラグインのみでシンタックスハイライトを導入する

WordPressで有料ブログサービスのように技術的なことに時間を割かずに記事を書くにはどうしたらいいか考えています。

今回の方法もテーマをイジる必要はなく、管理画面から完結できる方法で紹介します。

使うプラグインとライブラリ

を使用します。プラグインはWPの管理画面から検索してインストールすることができ、ハイライトのJSはCDNで公開されているので準備は一切不要です。

設定をする

プラグインの設定からヘッダにコードを挿入できるので下記のようにして追加します。このサンプルはmolokaiを使用しています。面倒なんでみんなmolokai使っとくといいです。

<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/highlightjs/highlight.js@master/src/styles/monokai-sublime.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.10/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>

pre 要素のデザインをmolokaiに合わせるなら追加でこんなCSSをヘッダに追加すると良いでしょう。

<style>
pre {
  padding: 10px;
  background-color: rgb(35, 36, 31);
  color: #fff;
  font-size: 11px
}
</style>

Rustでcargo runする時にnightlyを使う

例えばこんな風にrunする時にnightlyを使うことができる

cargo run

まずtoolchainでnightlyをインストールしておき

rustup toolchain install nightly

rustup runnightly を指定して続けざまに cargo run を書けば良い

rustup run nightly cargo run

これで未来を生きられる

Java(Kotlin)のJacksonでJSONをスネークケースで出力する

変数名をスネークケースで書いても十分そうなるんだけど、できればキャメルケースで書いておきたい。まあJSONのプロパティも本当はキャメルケースがいいんだけど。

val mapper = jacksonObjectMapper()

NamingStrategyでSNAKE_CASEを指定すれば自動でやってくれる。自動じゃどうしようもないものはアノテーションで指定できるらしい。

val mapper = jacksonObjectMapper().setPropertyNamingStrategy(SNAKE_CASE)

Ubuntuでcargo runしたらopenssl-sys周りでビルドに失敗する場合

こんなエラーが出たので

error: failed to run custom build command for openssl-sys v0.9.49

こちらを参考にインストールして

sudo apt install libssl-dev

パスを確認して

dpkg -L libssl-dev | grep lib
dpkg -L libssl-dev | grep include

環境変数に入れると解決はするのですが

export OPENSSL_LIB_DIR=/usr/lib/x86_64-linux-gnu/
export OPENSSL_INCLUDE_DIR=/usr/include/openssl/

コンパイラがこんなこともいっていて

It looks like you're compiling on Linux and also targeting Linux. Currently this
requires the pkg-config utility to find OpenSSL but unfortunately pkg-config
could not be found. If you have OpenSSL installed you can likely fix this by
installing pkg-config.

pkg-config をインストールすれば環境変数を自前で設定する必要はありませんでした

sudo apt install pkg-config

今まではこんなことしたことなかったから、自分で知らないうちにやっていたのかなあ

WordPressでデフォルトのアイキャッチ画像を設定する

default-featured-imageというプラグインで設定できた。昔はわざわざテーマファイルで指定したり、自作プラグインで設定してたけど、公開されてメンテされているものを使ったほうがホント長持ちする。。なるべく自分で開発しないようにすることが大事だなと思うこの頃。
https://ja.wordpress.org/plugins/default-featured-image/

WordPressのプラグインWP Githuber MDでHTMLからマークダウンに変換する

WP Githuber MDで管理画面から記事を開き、サイドメニューのConvertボタンを押すだけで置換できます。

蛇足

自作ブログCMSから、有料ブログまで、ほぼすべてを使いまくって最後WordPressに戻ってきました。やはり自分でカスタマイズできる、自分でトラブル対応できる、無料なのは大きいです。

Qiitaなどからの移行ではAPIを使って自分でマークダウンの記述でエクスポートができますが、はてなブログからのエクスポートではマークダウン方式からHTMLに変換された状態でエクスポートされてしまいます。

そのまま公開している分にはいいのですが、いざ編集するときにHTMLとして編集するのはきついです。でもWP Githuber MDのConvertボタンで即座にマークダウンに変換できるので、その問題はクリアできます。

はてなブログからWordPressに移行しようか悩んでるかたは恐れずに是非移行してください。

Java(Kotlin)でZoneIdを指定しUTCのDatetimeを得る

LocalDateTime.now()LocalDateTimeを得ることができるが、この値はシステムのデフォルトのタイムゾーンにしたがって生成される。意図的にUTCの値を得るには下記のようにしてZoneIdを指定することで可能。

val datetime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
datetime.format(LocalDateTime.now(ZoneId.of("UTC")))

デフォルトのZoneIdは下記のようにして得ることができる

ZoneId.systemDefault() // Asia/Tokyo

デフォルトのOffsetは下記のようにして得ることができる

ZoneId.systemDefault().rules.getOffset(LocalDateTime.now()) // +09:00