うちあわせCastな木曜日

8:00

おはようございます。本日は午後からうちあわせCastです。

Drummer:

デイブ・ワイナーの新ツールDrummerを使ってみます。

Drummer: About Drummer

Drummer: Blogging in Drummer

クラウド上のアウトライナーに書き、それをブログとしてもパブリッシュできるツールです。

blog

Scriptも書ける。

DocServer: dialog.alert

拡張されたJavaScript、という感じ。

9:00

TH:

引き続き001の固めを。1000字書き足すことを目標に。

* * *

1000字書き足して冒頭の項がだいたい2000字に。

10:00

Textbox:

新規作成のメカニズムを検討します。

Image from Gyazo

* * *

まず、vs codeで開くときにファイル名の存在チェックを行います。

1
2
3
if not os.path.exists(urlParamStr):
  f = open(urlParamStr, 'w')
  f.close()

これで存在しないファイル名を受け取ったときにも、そのファイルを作成してから開くことができるようになりました。

で、あとは、この「存在しないファイル名」をこのcgiに渡す処理。

現状はindex.htmlに直接記述しているグローバルなnowPageという変数でcgiに渡すファイル名を管理している。

* * *

今空リンクを踏んだらどうなる?

存在しないリンク というリンクを作り、それを踏んでみる。コンソロールで

1
alert(nowPage);

を叩くと、“list/存在しないリンク.md"が返ってきた。この状態で、VS Codeを開けば、先ほどの流れに接続できる。

ただし、この状態だと、画面のビューは何も変わっていない(リンクを踏んだことによる画面の遷移が生じていない)。

ということは、「ボタンをクリックしたら、ビューを変える」動作にもうひと工程入れる必要がある。

1
2
3
4
5
6
7
8
9
          if (xhr.readyState === 4) {
            if (xhr.status === 200){
              var result1 = document.getElementById('xhr-result1');
              result1.innerHTML = replacLinkBtn(marked(xhr.responseText));
              setOnClickEvent()
             }else{
               alert("存在しないファイルだよ");
             }
           }

XMLHttpRequestでエラーが返ってきた場合の処理を加えた。

で、この処理でどうすればいいか。何もしなくてもnowPageにはファイル名が入っているからそこはさわらなくていい。画面表示だ。viewerに「ファイルがまだ存在しません」と表示すればいいか。

1
2
3
4
5
6
7
8
9
          if (xhr.readyState === 4) {
            var result1 = document.getElementById('xhr-result1');
            if (xhr.status === 200){
              result1.innerHTML = replacLinkBtn(marked(xhr.responseText));
              setOnClickEvent()
             }else{
              result1.innerText = file +  "はまだ存在しません";
             }
           }

これで空リンクをクリックすると、以下のように表示される。

Image from Gyazo

この状態で、「このファイルをVS Code」で開くボタンをクリックすれば、新規作成になる。

ただ、若干ページが味気ない気もする。ボタンにしてみる。

* * *

Image from Gyazo

これで空リンクからのページ作成のロジックはできた。

で、その上で新規作成をどうするか。

* * *

ページにinputを置いて、そこからcgiのURLを叩く、という動作は本当に必要だろうか。

テキストを入力して、その内容をcallすればいい。

11:00

妻の昼食準備:

12:00

Textbox:

callボタンを押せば、inputのテキストを取得して、それでファイルをviewするようにした。ファイルが存在しないときは、ページ作成のページが表示されるのは先ほどと同じロジック。

でもって、送信ボタン(callボタン)ではなく、リターンキーで操作できるようにした。これで簡単。

ファイル名入力のアシストがあると便利だが、とりあえず今はそれは考えない。

ページ作成を行ったときのロジックを考える。

現状index.htmlに新規作成ページのロジックがある。で、今考えているのは、その新規作成を通してページを作成すると、「ページ呼び出し」に書き込みが為されるというもの。

が、これはあまりオブジェクト的ではない。index.htmlにおいて「どんなページが存在しているのかは気にしない」の原則が守られていない。一応、その処理を走らせるときに「ページ呼び出し」ファイルがなければ作る、という設定にしておけば問題はないわけだが。

一応別のロジックを考えてみたい。

* * *

オブジェクト指向的責任論で考えれば、あるファイルにテキストが追加されるときは、そのファイルで動作が行われたときだけ、ということになる。あるいは、そのファイルに何かメッセージを渡す、ということだが、それは上で想定している流れになる。つまり、index.htmlが渡すべきファイル(ページ呼び出し)を「知っている」という前提が必要だ。

* * *

もしページ呼び出しに越権的立場を与えないとしたら、ページの作成などは「ページ呼び出し」上で行うことになる。つまり、一気にページをviewしたり、空核のページにジャンプするのではなく、まずページ呼び出しのページの中でリンクを示し「このページを表示しますか?」や「この名前で新規ファイルを作成しますか?」と表示することになる。

でもって、そのためのcgiを別途書く必要がある。これはあまりスマートな解決には思えない。

フォルダの中を、たとえば、曖昧検索で検索してその結果を返す、というのであれば、別の役割なのでそれをcgiで書いてみるのは良いだろう。

たとえば「カレンダー」と打って、カレンダーとぴったりフィットするものがある場合はそれを表示、ない場合は曖昧検索の結果を返す、というようにしてもいいが、それは既存のcgiには組み込めない。

* * *

加えていえば、呼び出しページのオブジェクト的独立性を高めると、たとえば空リンク経由でページを作ったときにその情報を拾えないことになる。

そのことの是非も合わせて検討しなければならない。

* * *

現状inputに入力したテキストをそのままテキストファイルに書き込むことで、ログの代わりにすることはできるが、入力間違いをタイプしたときもそのログが残ってしまう問題はある。あとで消せばいいのだけども、仕様としては若干気になるところ。

* * *

そもそも現状、ファイルを新規作成と、既存のファイルを開くがどういつのcgiを叩くことで実現するので、ファイルを新規作成したときだけトリガーするためには、そのための動作が必要。ただ、これは別に難しくない、

14:00

うちあわせCast

publish:うちあわせCast:第八十六回:Tak.さんとDrummerについて by うちあわせCast

16:00

Textbox:

とりあえず、追記部分をどうするかを考える。

URLのパラーメータを増やす。

クエリストリングの取得(PYTHON CGI)

[Python CGI] (3) URLのクエリパラメータを取得

リクエストの取得 (CGI) | Python-izm

ファイル名と追記するテキストを受けとって、それを利用できればよい。

* * *

と思ったが、今回やるのはファイル名とファイルへのリンクだからパラメータはひとつでよい。が、今後追記することも考えられるので、一応やり方を押さえておく。

* * *

できた。

「ページ呼出」ページでページをcall。存在しない場合は、作成のボタンを表示→ボタンを押したら、ファイルが作成されると共に、「ページ呼出」ページにそのページへのリンクを追記。

という感じ。

この機能のおかげで、既存のテキストファイルへの追記もできるようになった。メモ書きなどに使えるかもしれない。

自分が見ているページのブックマークなども、CGIを経由で可能かも、しれない。

17:00

TH:

001を続けます。

21:00

翻訳:

Drummer: About Drummer

のページの冒頭を軽く訳しました。

Drummerについて - 倉下忠憲の発想工房

全文をきちんと訳して、デイブさんに許可をもらうのが筋なのでしょうが、とりあえずどんなツールなのかが簡単にわかる程度に留めておきます。

あとで読む:

本日の振り返り:

今日も今日とてTHを進めました。徐々にリズムができあがりつつあります。あと、うちあわせCastの収録も無事終わりました。

Textbox開発も落ち着いてきたので、しばらくは平坦な原稿生活を送ることになりそうです。

というわけで本日はそろそろ閉店がらがらです。

お疲れさまでした。仕事終わりの妻を迎えに行ってきます。