🛼

開発日記-2024-07-21 / Rubyのスクレイピング関連の調査

公開日
4か月前
2024-07-21
更新履歴

RubyのURI must be ascii only

URI.parse では URI must be ascii only エラーが出てしまう。なので、Addressable::URI.parse を使う。

mechanize

mechanizeで "\xE3" from ASCII-8BIT to UTF-8 のような文字コード関連のエラーが起きた場合。

agent.page.body.encode(Encoding::Windows_31J, Encoding::UTF_8, undef: :replace)

devcontainerのzshを簡単にカスタマイズする方法を調べている

ローカル環境をpreztoでカスタマイズしているので、devcontainerのzshも同じようにカスタマイズするためにスクリプトを作って使い回しているのだが、もっとスマートな方法はないのか調べている。

NextUIのScroll Shadowとtocbotのバグ

NextUIのScroll Shadowtocbotを合わせて使っているのだが、目次の項目が長くなると最下部までスクロールしても下部のScroll Shadowの影が消えない。

  • 目次部分の高さを半分くらいにすると正常に消えるようになる
  • ブラウザの開発者ツールで目次にDOMを追加・削除すると正常に消えるようになる
  • tocbotを使わずに同じような高さの要素を静的に出力させてみると正常に消えるようになる

結局解決策はわからないので進捗だけメモしておくことにした。

tocbotの使い方を間違っていた

tocbotの親のdivに overflow-y: scroll; をつけていると、コンテンツ側のスクロールにtocbot側が追従しなかった。

下記のように修正することで、コンテンツ側のスクロールに合わせて目次側もスクロールするようになった。

<div class="tocbot-container">
  <div class="tocbot"></div>
</div>
.tocbot-container {
  overflow-y: scroll; 
}
.tocbot {
  overflow-y: scroll; 
}

shikiのdiffの書き方は言語のコメントアウトの違いによって変わる

CSSの場合
.tocbot-container {
  overflow-y: scroll; /* [!code --] */
}
.tocbot {
  overflow-y: scroll; /* [!code ++] */
}
TypeScriptの場合
const hello = 'world'; // [!code --]
const hello = 'new world'; // [!code ++]

すごい。