シゴタノ!を書く金曜日

7:00

おはようございます。本日はシゴタノ!です。あと、夜には臨時の読書会があります。それなりに原稿を進めましょう。

まずは、シゴタノ!の原稿から。

シゴタノ!:

書きます。

* * *

書けました。日曜日に更新されます。

8:00

「数学ガールの秘密ノート」 の研究:

自分でも似たサイトを運用しようと思っているので、とりあえずどういう感じになっているのかを探索。

* * *

有料メンバーは、

https://girlnote.hyuki.net/paid-202209-123456789aaa/

のようなURL(上記は架空のもの)を教えてもらえる。個別の記事は、たとえば

https://girlnote.hyuki.net/paid-202209-123456789aaa/023/

のような価値になっている。番号は、連載の回数とマッチしている。

次の月になると、「paid-202209-123456789aaa」の部分が別の文字列になる。

後ろでは単にフォルダの名前が変わっているだけだと思われる。先月のURLは404になるので、おそらくそうだろう。

中身は動かさずに、フォルダ名だけを毎月リネームして、秘匿するという形式。なるほど。

* * *

「switch.js」なるものが、表示の切り替えに一役買っているもよう。有料ページにアクセスしたら、何かが保存されて、それが他のページでも機能する、みたいな感じかな。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
  if (url.match(/^http.*\/(paid-[\d\w-]+)/)) {
    const id = RegExp.$1;
    localStorage.setItem(KEY, id);
  } else if (url.match(/^(http.*)\/trial\/(.*)/)) {
    const pre = RegExp.$1;
    const path = RegExp.$2;
    const id = localStorage.getItem(KEY);
    if (id) {
      const newUrl = `${pre}/${id}/${path}`;
      switch_to_paid(newUrl);
    }

paidページにアクセスした経験があるならば、localStorage.setItem(KEY, id)が記録される。

で、その後trialページを表示すると、 localStorage.getItem(KEY)がチェックされ、中身が入っているなら(つまり、アクセスした経験があるならば)、ページを切り替える、という感じか。

たとえば、先月の有料ページにアクセスしたことがあったとしよう。すると、localStorage.setItem(KEY, id)がセットされる。で、どうなる? そのままだと、 if (id)がtrueになる気がするが。

そうか。仮にtrueになっても、生成されるUrlが ${pre}/${id}/${path} なので先月分のURLでページは表示されないのか。なるほど。