-
Notifications
You must be signed in to change notification settings - Fork 0
/
combination.html
146 lines (146 loc) · 10.8 KB
/
combination.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="referrer" content="same-origin">
<link rel="stylesheet" type="text/css" href="/pages/www/css/base.css">
<link rel="preload" crossorigin as="style" type="text/css" href="/pages/www/css/theme_dark1.css">
<link id="dark1_theme" class="theme" rel="stylesheet" type="text/css" href="/pages/www/css/theme_dark1.css">
<link rel="preload" crossorigin as="style" type="text/css" href="/pages/www/css/theme_dark2.css">
<link id="dark2_theme" class="theme" rel="stylesheet" type="text/css" href="/pages/www/css/theme_dark2.css" disabled>
<link rel="preload" crossorigin as="style" type="text/css" href="/pages/www/css/theme_light1.css">
<link id="light1_theme" class="theme" rel="stylesheet" type="text/css" href="/pages/www/css/theme_light1.css" disabled>
<link rel="preload" crossorigin as="style" type="text/css" href="/pages/www/css/theme_light2.css">
<link id="light2_theme" class="theme" rel="stylesheet" type="text/css" href="/pages/www/css/theme_light2.css" disabled>
<script defer src="/pages/www/lib/d3-selection@3/d3-selection.min.js"></script>
<script defer src="/pages/www/js/theme_radio.js"></script>
<script defer src="/pages/www/js/extlink.js"></script>
<link rel="preload" crossorigin as="style" type="text/css" href="/pages/www/css/cls_chroma.css">
<link rel="stylesheet" type="text/css" href="/pages/www/css/cls_chroma.css">
<script defer src="/pages/www/js/do_aatext.js"></script>
<link rel="stylesheet" type="text/css" href="/pages/www/css/cls_ccopy.css">
<script defer src="/pages/www/js/do_ccopy.js"></script>
<link rel="preload" crossorigin as="style" type="text/css" href="/pages/www/css/cat_ui.css">
<link rel="stylesheet" type="text/css" href="/pages/www/css/cat_ui.css">
<script defer src="/pages/www/lib/d3-dsv@3/d3-dsv.min.js"></script>
<script defer src="/pages/www/lib/d3-fetch@3/d3-fetch.min.js"></script>
<script defer src="/pages/www/js/cat_ui.js"></script>
<title>cat_mdview と cat_tmplview を組み合わせて使う際の挙動</title>
</head>
<body>
<noscript><p class="color-a"><strong>数式表示、ハイライト処理、Refererヘッダ強制削除等の各種処理にJavaScriptを利用しています。</strong></p></noscript>
<div id="style_config"></div><nav id="toc"><details>
<summary>目次</summary>
<ul><li><a href="#cat-mdview-と-cat-tmplview-を組み合わせて使う際の挙動">cat_mdview と cat_tmplview を組み合わせて使う際の挙動</a></li><ul><li><a href="#どっちを使うかはあなた次第">どっちを使うかはあなた次第</a></li><ul><li><a href="#cat-mdview-と-cat-tmplview-の比較">cat_mdview と cat_tmplview の比較</a></li></ul><li><a href="#両方使う場合の挙動">両方使う場合の挙動</a></li><li><a href="#さいごに">さいごに</a></li></ul></ul>
</details></nav>
<span class="location"><a href=".">Top</a> / combination.md</span>
</tbody>
</table>
</details>
</div>
<div id="contents" class="contents">
<h1 id="cat-mdview-と-cat-tmplview-を組み合わせて使う際の挙動">cat_mdview と cat_tmplview を組み合わせて使う際の挙動</h1>
<p>おはようございます。こんにちは。こんばんは。ふぇにっくちゅん です。</p>
<p>この記事までに、cat_mdview と cat_tmplview について解説しました。<br />
どちらも Markdown をブラウザで表示する機能が共通です。<br />
cat_tmplview はその機能の他に、ユーザやグループ単位で表示を切り替える機能を備えています。</p>
<p>今回は、どちらのアプリを使うべきか、どちらも使うべきか、悩む方への解説記事です。<br />
その上で、どちらも使う場合には、nginx を意識しておく必要があるため、その点について解説します。</p>
<h2 id="どっちを使うかはあなた次第">どっちを使うかはあなた次第</h2>
<p>まず、cat_mdview と cat_tmplview は、Markdown ファイルをブラウザで閲覧するツールとしてはどちらを利用しても問題ありません。<br />
単純に利用するという意味では、表示の切り替え機能が備わっている cat_tmplview のほうが良さそうにみえます。<br />
良さそうに見えるのは、活用の可能性が広がりそうという甘い誘惑に心を奪われてしまったからです。</p>
<p>たしかに、機能の差としては、cat_tmplview の場合は、動的に表示を切り替える機能を備えていることは確かです。<br />
しかし、メリットだけでなくデメリットも把握した上で、状況に合わせて利用しないと、面倒事に巻き込まれてしまいます。</p>
<p>本節では、cat_mdview と cat_tmplview のメリットとデメリットを紹介します。</p>
<h3 id="cat-mdview-と-cat-tmplview-の比較">cat_mdview と cat_tmplview の比較</h3>
<p>cat_mdview と cat_tmplview のメリットとデメリットを示します。</p>
<ul>
<li>cat_mdview
<ul>
<li>メリット
<ul>
<li>GitHub 互換な Markdown をブラウザで閲覧できる</li>
<li>アプリケーションとして cats_dogs の中で最もシンプル</li>
</ul>
</li>
<li>デメリット
<ul>
<li>動的なコンテンツが作成できない</li>
</ul>
</li>
</ul>
</li>
<li>cat_tmplview
<ul>
<li>メリット
<ul>
<li>動的に処理できるコンテンツが作成できる</li>
</ul>
</li>
<li>デメリット
<ul>
<li>ドキュメント以外に、ユーザ・グループを管理する必要がある</li>
<li>テンプレートの記述により、Markdown ファイルの内容が複雑化する</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>たとえば、個人でアプリを利用する場合、cat_mdview が最もコスパが良いことがわかります。<br />
一人で利用するため、ユーザやグループの管理をする必要がなく、動的な表示の切り替え機能は必要ないです。<br />
つまり、無駄に管理コストを増やし、システムを複雑化させるメリットが、個人で利用する価値がないからです。</p>
<p>他にも、オープンなブログサーバとして利用するケースでも同様です。<br />
静的なコンテンツが閲覧できればよいだけであれば、cat_tmlview を利用する意味はありません。</p>
<p>次に、管理面を考えてみましょう。<br />
管理面と言っても、システムやアプリ、設定ファイルのことではありません。<br />
ドキュメントです。</p>
<p>cats_dogs のアプリは、ドキュメントがなければ効果が発揮できないアプリです。<br />
つまり、cats_dogs 視点では、ドキュメントが最も大切なものになります。<br />
このドキュメントが、扱いにくいものになれば、長期に利用できないゴミドキュメントとなり、cats_dogs がゴミを扱う羽目になってしまいます。<br />
この cats_dogs の価値観で、以下のデメリットを考えてみましょう。</p>
<blockquote>
<p>テンプレートの記述により、Markdown ファイルの内容が複雑化する</p>
</blockquote>
<p>いかにも、Markdown ファイルのメンテナンスに苦労しそうです。<br />
cat_tmplview のユーザやグループ単位で表示を切り替える機能は、便利そうに見えて、cats_dogs の価値観を揺るがす可能性の高い機能であることもわかります。</p>
<p>ここまでは、あえて cat_tmplview の機能をあえてネガティブに見せるように紹介してきました。<br />
甘い誘惑から目を覚ましてもらうためです。</p>
<p>実際には、どちらのアプリが良いということは決められません。<br />
アプリの良さを最大限にするためには、その時の利用シーンや目的を合わせて考える必要があります。<br />
また、これらのアプリを最大限に活用することができれば、ドキュメントが最大限効果を発揮します。<br />
これが、cats_dogs です。</p>
<h2 id="両方使う場合の挙動">両方使う場合の挙動</h2>
<p>では、cat_mdview と cat_tmplview のどちらを使うか?はあなた次第ということがわかったと思います。<br />
ということは、両方組み合わせて利用することも良いです。<br />
本説では、組み合わせてアプリを使う場合に意識する必要があることを解説します。</p>
<p>ここで意識する必要があるのが nginx です。<br />
では、アプリの設定を思い出してみましょう。<br />
思い出す設定は、<em>mdview.conf</em> と <em>tmplview.conf</em> ともに共通して記述する <strong>document_root</strong> のパラメータです。</p>
<p>このパラメータは、各アプリが参照する Markdown ファイルの置き場所を示しています。<br />
デモでは、<code>/var/cats/var/www_md/</code> と <code>/var/cats/var/www_tmpl/</code> に、各アプリが参照する Markdown ファイルを配置しました。</p>
<p><img src="./IMGs/combination1.png" alt="document\_root" /></p>
<p>では、これらのディレクトリに同じファイル名が存在したとき、どちらが優先して表示されるのでしょうか?<br />
これを決めているのが nginx の<a href="https://github.com/1f408/cats_ample/blob/master/demo/step2-3/etc/nginx/nginx-site.conf">設定ファイル</a>です。</p>
<p>ここで注目すべきなのは「location / 」で囲われた箇所です。<br />
その中で以下の記述を探してみてください。</p>
<p><img src="./IMGs/combination2.png" alt="nginx-conf" /></p>
<p>この箇所が、2つのアプリの優先度を決めています。
nginx の if は上から評価されていきます。<br />
今回は、どちらのアプリにも同じファイル名の Markdown ファイルが存在しています。<br />
そのため、そのファイルを閲覧しようとした場合には、どちらの if も評価されます。<br />
つまり、最後に評価されたほうが上書きされます。</p>
<p><img src="./IMGs/combination3.png" alt="priority" /></p>
<p>これもどちらを優先にしたほうが良いかの正解はありません。<br />
どちらを優先したいかを考えた上で、設定を決めてください。</p>
<h2 id="さいごに">さいごに</h2>
<p>本記事では、2つのアプリ cat_mdview と cat_tmplview について紹介し、その使い分けについて説明しました。<br />
ほとんど機能に差が無いように見えて、実は全く違うアプリに見えてきた人もいるのではないでしょうか?<br />
自分好みに、カスタムできるのが cats_dogs の楽しさでもあるので、みなさんも楽しんでみてください。</p>
</div>
<div class="footer">
<hr/>
<center><a href="https://1f408.github.io/pages/">Top</a></center>
</div>
</body>
</html>