2018年09月13日に初出の投稿

Last modified: 2018-09-13

読み込みフォーマットでは、記事を --------\n ( - の8文字と改行コード) の文字列によって区切ります。 各記事は、次の2つの主要なセクションから成り、各セクションは、 -----\n (「 - 」の5文字と改行コードの文字列) によって区切ります。

記事のインポートフォーマット

某大学の案件は、ただいま進行中である。もともとは仕様のよくわからないお手製 CMS を使って「新着情報」なるものをページに出力していたのだが、その CMS が使う SQLite のデータファイルを大学のシステム担当者からもらって CSV ファイルへエクスポートしたテキストファイルを作り、こんどは Movable Type 形式にコンバートして、それを再び大学のサーバで動く Movable Type 6 へインポートするという作業である。おおよそ記事は 800 ほどあったのだが、どうやら元の CMS にも「下書き」とか「表示フラグ」のような機能があるらしく、データベースのカラムでは数値があるだけで正確には分からなかったのだが(要するに、この CMS を実装した業者さんは大学と縁が切れているので仕様が分からない。そもそも、僕らが大学のサーバに FTP や ssh で入る権限すらなく、このお手製 CMS も知財とか言われてダウンロードしてもらえないのである。これでは管理画面とデータだけで仕様を推定するしかない)、実際にインポートしてみると同じタイトルの記事が幾つも重複している。

そして、実際にインポートした記事を見ているだけでは分からなかったのだが、いざ内容を確認し始めてみると「2017年9月30日」の記事が 200 個もある。他にも、特定の日付に(もちろん本来は別の日付で公開するべき)記事が集まっていて、どうも MT 形式でインポートしたときに日付のデータだけおかしな処理をされた可能性がある。本文やカテゴリーやタイトルは全く問題がなくて、日付だけおかしい。

そもそも、この MT 形式というフォーマットはデータを幾つかのハイフンだけで区切るという豪快な仕様になっていて、日付けのフォーマットは「MM/DD/YYYY hh:mm:ss」(末尾に「 AM|PM」が付いてもいいが、こんなのはガラパゴスのフォーマットだ。strtotime() 関数が使えない)となっている。インポートする MT 形式のデータには問題がない。では、なんで記事の日付がおかしくなるのか。最初は、ウェブサーバのクロックがヘンなのかと思ったのだが、MT のテンプレートで試しに現在の日時を出力しても特に大きくズレているわけでもない。しかも、記事の日付のズレ方には規則性がないように見える。2017年9月30日となってしまっている記事は、2009年から2018年までのあいだの、どういう原因でこの日付になったのか不明なバラバラの記事ばかりである。元の日付が30日とか9月で部分的に一致しているわけでもないし、ちょうど何か月とか何日という単位で集まっているわけでもないようだ。そういうわけで、元の CMS から出力した日付と記事のタイトルを印刷して、Movable Type の記事一覧と比較しながら、手作業で 650 個くらいの日付を 20:30 くらいに設定し終わったところだ。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Google+ Twitter Facebook