朔のスレッド名とパス長 〜C:\に置け!〜

以前、新月開発作戦会議室でも話題にでてたのですが、朔はスレッド名のUTF-8エンコード文字列を16進数文字列に変換したフォルダ名でキャッシュディレクトリを作るので、長いスレッド名だとWindowsのMAX_PATHを簡単に超えてしまって、ファイルのアクセス(読み書き)がエラーとなるためか、

  • スレッドが取得できない
  • スレッドが立てれない
  • スレッドに投稿された画像が取得でない (キャッシュフォルダまではOKだが画像のパスでアウトの場合)

などの現象が発生します。昨日のindex.datではないですが、indexファイルを作って、それで連番にでも変換をかけて、それをフォルダ名にするとスレッド名の長さによる制約は発生しないのですが、キャッシュAPIをみるとアクセスのしやすさを考えているらしいので、うーむと。今は、ゲートウェイ上で30文字に制限されているようですが、ファイル名はOKでも、デスクトップなど深いディレクトリに朔を置くと、スレッド名が30文字以下の場合でもパス長がオーバーして上記問題が発生します。
とりあえずは、Windowsで朔を動かす場合は、ディスク直下(C:\saku\など)に置いたほうが、長い名前のスレッドが読めるのでお得です。

Hovenは、キャッシュをSQLiteのデータベースに全部突っ込んでいるので、「cache.db」という単一ファイルに全て収まり、スレッド名による制約はありません。ただ、これが壊れるとキャッシュが全滅します。
(添付ファイルは実ファイルで保持します)