PALEThttps://palet.dev/2021-08-25T00:00:00+09:00ワクチン接種1回目2021-08-25T00:00:00+09:002021-08-25T00:00:00+09:00ykobatag:palet.dev,2021-08-25:/first-shot-of-a-vaccine.html<p>少し前に職場で職域接種が始まったので希望出して受けてきました。日付と時間が指定されて自分の番はだいぶ後半の方でした。</p>
<p>おそらく指定日までに担当の医療従事者の作業が洗練されたためか受付から問診、ワクチン接種まで …</p><p>少し前に職場で職域接種が始まったので希望出して受けてきました。日付と時間が指定されて自分の番はだいぶ後半の方でした。</p>
<p>おそらく指定日までに担当の医療従事者の作業が洗練されたためか受付から問診、ワクチン接種までスムーズに進みました。本当にありがとうございました。</p>
<p>ワクチンはモデルナ製で接種から1時間位たった後から頭痛と倦怠感が現れ始めました。熱も心配しましたが特に37度を超えることはなかったです。その日の夜くらいから徐々に腕が痛くなり始め、注射した腕を下にして寝られないくらい痛みが強くなりました。噂は本当だった…。</p>
<p>大体接種から1日くらいで頭痛と倦怠感が消え2日くらいで腕の痛みも気にならなくなりました。<a href="https://www.mhlw.go.jp/stf/seisakunitsuite/bunya/vaccine_hukuhannou.html#:~:text=1%E5%9B%9E%E7%9B%AE%E3%81%AE%E6%8E%A5%E7%A8%AE%E5%BE%8C%E3%82%88%E3%82%8A%E3%82%822%E5%9B%9E%E7%9B%AE%E3%81%AE%E6%8E%A5%E7%A8%AE%E5%BE%8C%E3%81%AE%E6%96%B9%E3%81%8C%E3%80%81%E3%81%93%E3%81%86%E3%81%97%E3%81%9F%E5%89%AF%E5%8F%8D%E5%BF%9C%E3%81%AE%E7%99%BA%E7%8F%BE%E3%81%99%E3%82%8B%E9%A0%BB%E5%BA%A6%E3%81%8C%E9%AB%98%E3%81%8F%E3%81%AA%E3%82%8B%E5%82%BE%E5%90%91%E3%82%82%E7%A2%BA%E8%AA%8D%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E3%81%9D%E3%82%8C%E3%81%AF%E3%80%811%E5%9B%9E%E7%9B%AE%E3%81%AE%E6%8E%A5%E7%A8%AE%E3%81%AB%E3%82%88%E3%82%8A%E3%80%81%E4%BD%93%E5%86%85%E3%81%A7%E6%96%B0%E5%9E%8B%E3%82%B3%E3%83%AD%E3%83%8A%E3%82%A6%E3%82%A4%E3%83%AB%E3%82%B9%E3%81%AB%E5%AF%BE%E3%81%99%E3%82%8B%E5%85%8D%E7%96%AB%E3%81%8C%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E3%80%812%E5%9B%9E%E7%9B%AE%E3%81%AE%E6%8E%A5%E7%A8%AE%E6%99%82%E3%81%AB%E3%81%AF%E3%80%811%E5%9B%9E%E7%9B%AE%E3%82%88%E3%82%8A%E5%BC%B7%E3%81%84%E5%85%8D%E7%96%AB%E5%BF%9C%E7%AD%94%E3%81%8C%E8%B5%B7%E3%81%93%E3%82%8A%E3%80%81%E7%99%BA%E7%86%B1%E3%82%84%E5%80%A6%E6%80%A0%E6%84%9F%E3%81%AA%E3%81%A9%E3%81%AE%E7%97%87%E7%8A%B6%E3%81%8C%E3%82%88%E3%82%8A%E5%87%BA%E3%82%84%E3%81%99%E3%81%8F%E3%81%AA%E3%82%8B%E3%81%9F%E3%82%81%E3%81%A7%E3%81%99%E3%80%82">2回目の接種の時より強い症状が出る可能性がある</a>とのことなので鎮痛剤など色々準備してから臨みたいと思います。</p>Snippetを登録2020-11-25T00:00:00+09:002020-11-25T00:00:00+09:00ykobatag:palet.dev,2020-11-25:/snippet.html<p>Alfredを導入しました。どうやらSnippetが登録できるとのことなので記事をpostするときに必要なタグを登録してみました。以下が登録したSnippetです。</p>
<div class="highlight"><pre><span></span><code><span class="n">Title</span><span class="o">:</span>
<span class="n">Date</span><span class="o">:</span>
<span class="n">Category</span><span class="o">:</span>
<span class="n">Tags</span><span class="o">:</span>
<span class="n">Slug</span><span class="o">:</span>
<span class="n">Authors</span><span class="o">:</span> <span class="n">ykoba</span>
<span class="n">Status</span><span class="o">:</span>
</code></pre></div>表示フォントをゴシック体に変更2020-04-30T00:00:00+09:002020-04-30T00:00:00+09:00ykobatag:palet.dev,2020-04-30:/fix-fonts.html<p>ブログのフォントがテーマのデフォルトだと明朝体になっていたのでゴシック体に変更しました。</p>
<p>フォントの指定は<code>theme/static/css/style.css</code>内の<code>font-family</code>で行います。</p>
<p>テーマのデフォルトは</p>
<div class="highlight"><pre><span></span><code><span class="nt">font-family</span><span class="o">:</span> <span class="s1">'Lora'</span><span class="o">,</span> <span class="nt">serif</span><span class="o">:</span>
</code></pre></div>
<p>となっていました。<code>Lora</code>と<code>serif</code>が指定されており、左から優 …</p><p>ブログのフォントがテーマのデフォルトだと明朝体になっていたのでゴシック体に変更しました。</p>
<p>フォントの指定は<code>theme/static/css/style.css</code>内の<code>font-family</code>で行います。</p>
<p>テーマのデフォルトは</p>
<div class="highlight"><pre><span></span><code><span class="nt">font-family</span><span class="o">:</span> <span class="s1">'Lora'</span><span class="o">,</span> <span class="nt">serif</span><span class="o">:</span>
</code></pre></div>
<p>となっていました。<code>Lora</code>と<code>serif</code>が指定されており、左から優先して使用します。
<code>Lora</code>は<a href="https://fonts.google.com/specimen/Lora">Google Fonts</a>の一種で主にデザイナー向けのフォントです。
<code>serif</code>はgeneric font familyと呼ばれており、<code>font-family</code>で指定したフォントが何らかの事情で使用できなかった時に最終手段として表示されるフォントです。</p>
<p><code>Lora</code>と<code>serif</code>がどちらも明朝体だったのが原因のようです。
したがって、<code>font-family</code>を次のように書き換えました。</p>
<div class="highlight"><pre><span></span><code><span class="nt">font-family</span><span class="o">:</span> <span class="s1">'Open Sans'</span><span class="o">,</span> <span class="s2">"Hiragino Kaku Gothic ProN"</span><span class="o">,</span> <span class="s2">"Hiragino Sans"</span><span class="o">,</span> <span class="nt">Meiryo</span><span class="o">,</span> <span class="nt">sans-serif</span><span class="o">;</span>
</code></pre></div>
<p>特にこだわりはなかったので フォント ブログ でググって、出てきたfont-familyをほぼコピペ。</p>Raspberry Piのセキュリティを向上させる2019-12-15T00:00:00+09:002019-12-15T00:00:00+09:00ykobatag:palet.dev,2019-12-15:/improve-raspberry-pi-security.html<p>Raspberry Piは安価で手に入れることができ、カメラや他のハードウェアを接続して好きな物を作ったり、ネットワークに接続してサーバ用途で使用したりと便利な小型コンピュータです。しかし、セキュリティが初期のままだとIDとPASSWORDが脆 …</p><p>Raspberry Piは安価で手に入れることができ、カメラや他のハードウェアを接続して好きな物を作ったり、ネットワークに接続してサーバ用途で使用したりと便利な小型コンピュータです。しかし、セキュリティが初期のままだとIDとPASSWORDが脆弱なため不正アクセスのリスクがあります。実際にRaspberry Piが侵入口となり機密データが盗まれる<a href="https://www.itmedia.co.jp/news/articles/1906/23/news012.html">事件</a>も発生しています。</p>
<p>セキュリティはPASSWORDを変えるだけでも向上させることができるのでRaspberry Piを購入しOSをインストールしたら必ず行いましょう。また他にもセキュリティを向上させる方法があるので説明したいと思います。</p>
<p>なお、この記事は<a href="https://qiita.com/advent-calendar/2019/raspberry-pi">Raspberry Pi Advent Calendar 2019</a>の15日目の記事です。</p>
<h1>1 PASSWORD変更</h1>
<p>PASSWORD変更は<code>passwd</code>コマンドで変更できます。
簡単なので必ず行いましょう。</p>
<div class="highlight"><pre><span></span><code>pi@raspberrypi:~ $ passwd
Changing password <span class="k">for</span> pi. <span class="c1"># piユーザのPASSWORDを変更</span>
Current password: <span class="c1"># 現在のPASSWORDを入力</span>
New password: <span class="c1"># 新しいパスワードを入力</span>
Retype new password: <span class="c1"># 新しいパスワードを再入力</span>
passwd: password updated successfully
</code></pre></div>
<h1>2 SSH接続</h1>
<p>SSHはID&PASSWORD認証よりも公開鍵認証で接続した方が安全です。
設定はRaspberry Piだけでなく接続用PCでも作業を行います。</p>
<h2>2.1 接続用PCの作業</h2>
<h3>2.1.1 鍵の生成</h3>
<p>ターミナルを起動し次のコマンドを入力します。</p>
<div class="highlight"><pre><span></span><code>$ ssh-keygen -t rsa -b <span class="m">4096</span>
</code></pre></div>
<p>認証に使用する公開鍵と秘密鍵が生成されます。</p>
<div class="highlight"><pre><span></span><code>Generating public/private rsa key pair.
</code></pre></div>
<p>ファイル名を何にするか聞かれるので、デフォルトで良い人はエンターキーを入力します。
僕は区別しやすいようにいつもファイル名は変更しています。</p>
<div class="highlight"><pre><span></span><code>Enter file <span class="k">in</span> which to save the key <span class="o">(</span>/Path/to/home/directory/.ssh/id_rsa<span class="o">)</span>:
</code></pre></div>
<p>パスフレーズをどうするか聞かれるので入力します。</p>
<div class="highlight"><pre><span></span><code>Enter passphrase <span class="o">(</span>empty <span class="k">for</span> no passphrase<span class="o">)</span>:
Enter same passphrase again:
</code></pre></div>
<p>公開鍵と秘密鍵がディレクトリに追加されていたら成功です。</p>
<h3>2.1.2 公開鍵を転送</h3>
<p>生成した公開鍵をRaspberry Piに転送します。</p>
<div class="highlight"><pre><span></span><code>$ scp /Path/to/home/directory/.ssh/id_rsa.pub pi@XXX.XXX.XX.XX:
</code></pre></div>
<p>鍵のファイル名を変更した場合は<code>id_rsa</code>の部分を変えてください。
また<code>XXX.XXX.XX.XX</code>にはRaspberry PiのIPアドレスを入力してください。
IPアドレスがわからない場合は<code>arp</code>コマンドを使用して調べます。
Raspberry Piを起動する前と起動後にターミナルで<code>arp -a</code>と入力し、出力結果を比べてIPアドレスの表示が増えていたらそれがRaspberry PiのIPアドレスと判断します。</p>
<h2>2.2 Raspberry Piの作業</h2>
<h3>2.2.1 公開鍵の登録</h3>
<p>Raspberry Piでは接続用PCで転送した公開鍵の登録作業を行います。
初めに登録を行うためのディレクトリを生成します。</p>
<div class="highlight"><pre><span></span><code>pi@raspberrypi:~ $ mkdir .ssh
</code></pre></div>
<p>なお<code>.ssh</code>のようにドットが初めにつくと隠しディレクトリになるため、<code>ls</code>と入力しても確認することができません。
確認したい場合は<code>ls -a</code>と入力します。
次に転送した公開鍵を<code>authorized_keys</code>というファイルに追加します。</p>
<div class="highlight"><pre><span></span><code>pi@raspberrypi:~ $ cat id_rsa.pub >> ~/.ssh/authorized_keys
</code></pre></div>
<p><code>cat</code>コマンドはファイルの中身をターミナル上に表示し、<code>>></code>は表示内容を指定したファイルに追記します。
ここで、<code>>></code>ではなく<code>></code>と入力すると上書きになりファイルの中身が消えてしまうので注意が必要です。</p>
<h3>2.2.2 鍵認証の有効化&PASSWORD認証の無効化</h3>
<p>鍵認証を有効化するためにsshの設定ファイルを変更します。加えてPASSWORD認証の無効化も行います。
テキストエディタを使用して設定ファイルを開きます。</p>
<div class="highlight"><pre><span></span><code>pi@raspberrypi:~ $ sudo vi /etc/ssh/sshd_config
</code></pre></div>
<p>設定項目を探して書き換えます。</p>
<div class="highlight"><pre><span></span><code><span class="c1"># 鍵認証の有効化</span>
<span class="c1">#PubkeyAuthentication yes</span>
PubkeyAuthentication yes <span class="c1"># コメントアウトを外す</span>
<span class="c1"># パスワード認証の無効化</span>
<span class="c1">#PasswordAuthentication yes</span>
PasswordAuthentication no <span class="c1"># コメントアウトを外してnoに書き換える</span>
</code></pre></div>
<p>書き換えが終了したらRaspberry Piを再起動してください。</p>
<div class="highlight"><pre><span></span><code>$ sudo reboot
</code></pre></div>
<p>これで設定は終了です。Raspberry Piにログインするときは</p>
<div class="highlight"><pre><span></span><code>$ ssh -i ~/.ssh/id_rsa pi@XXX.XXX.XX.XX
</code></pre></div>
<p>と入力してください。</p>コードブロック中のコードをハイライト表示2019-02-21T00:00:00+09:002020-11-28T16:55:00+09:00ykobatag:palet.dev,2019-02-21:/highlight-in-block.html<p>プログラムをブログに載せる時Markdownのコードブロックを使っているのですが、
変数とか文字列とかがハイライトされず何か見にくいなと思ってました。
<img alt="ハイライトbefore" src="https://palet.dev/images/highlight_before.png">
色分けをする方法を調べてみるとPelicanのテーマを弄れば可能になるようです。
とい …</p><p>プログラムをブログに載せる時Markdownのコードブロックを使っているのですが、
変数とか文字列とかがハイライトされず何か見にくいなと思ってました。
<img alt="ハイライトbefore" src="https://palet.dev/images/highlight_before.png">
色分けをする方法を調べてみるとPelicanのテーマを弄れば可能になるようです。
というわけでテーマの魔改造開始。</p>
<p>Pelicanの<a href="https://docs.getpelican.com/en/stable/faq.html#i-m-creating-my-own-theme-how-do-i-use-pygments-for-syntax-highlighting">FAQ</a>にPygmentを使ったハイライトの適用方法が書いてあったので参考にしました。
PygmentsはPythonで書かれたシンタックスハイライトをコードブロックに適用させるためのライブラリです。
インストールはpipを使って</p>
<div class="highlight"><pre><span></span><code>pip install Pygments
</code></pre></div>
<p>インストールが完了するとcssを外部出力させるためのコマンド<code>pygmentize</code>が使えるようになります。
このコマンドを使ってハイライト用の設定ファイルを生成します。
Pygmentsは様々なハイライトの色が異なるテーマを用意しているのでDemoページから好きな配色のテーマを見つけてください。
僕はperldocが気に入ったのでこの配色テーマを使いました。</p>
<p>perldocのcssを適切な場所で生成します。</p>
<div class="highlight"><pre><span></span><code><span class="nb">cd</span> path/to/theme/static/css/
pygmentize -S perldoc -f html -a .highlight > pygment.css
</code></pre></div>
<p>テーマのbase.htmlにcssを読み込ませれば<code>pelican content</code>実行時にハイライトが適用されるようになります。</p>
<div class="highlight"><pre><span></span><code><span class="nb">cd</span> path/to/theme/template/
</code></pre></div>
<p>base.htmlで</p>
<div class="highlight"><pre><span></span><code><span class="p"><</span><span class="nt">link</span> <span class="na">rel</span><span class="o">=</span><span class="s">"stylesheet"</span> <span class="na">href</span><span class="o">=</span><span class="s">"{{ SITEURL }}/theme/css/pygment.css"</span> <span class="na">type</span><span class="o">=</span><span class="s">"text/css"</span> <span class="na">media</span><span class="o">=</span><span class="s">"all"</span><span class="p">></span>
</code></pre></div>
<p>適用後がこちら。見やすくなったかと思います。</p>
<p><img alt="ハイライトafter" src="https://palet.dev/images/highlight_after.png"></p>Netlify vs Github Pages ~Repositoryの観点から~2019-02-16T00:00:00+09:002019-02-16T00:00:00+09:00ykobatag:palet.dev,2019-02-16:/netlify-vs-github-pages.html<p>Netlifyと同等なサービスとしてGitHub Pagesがあります。
記事をアップロードするのにGitHubを使っているしそのままGitHub Pagesを使えば良いじゃん。
と思ったのですが結局Netlifyを選択しました。
というのもGitHub PagesはGitHub無料アカウントだとpagesのサービスを利用 …</p><p>Netlifyと同等なサービスとしてGitHub Pagesがあります。
記事をアップロードするのにGitHubを使っているしそのままGitHub Pagesを使えば良いじゃん。
と思ったのですが結局Netlifyを選択しました。
というのもGitHub PagesはGitHub無料アカウントだとpagesのサービスを利用するときPublicリポジトリでなければならないからです。
つまり静的サイトのソースコードを全て公開した状態で運用しなければなりません。
リポジトリ自体はMicrosoftに買収されてから無料アカウントでもPrivateリポジトリが作成できるようになりましたが、
GitHub Pagesは有料アカウントでないとPrivateリポジトリを使った運用ができないので注意が必要です。
詳しくはこちらから</p>
<ul>
<li><a href="https://help.github.com/articles/github-s-products/#github-pro">https://help.github.com/articles/github-s-products/#github-pro</a></li>
</ul>
<p>別にサイトのソースコードの公開は問題ないのですが、書きかけの記事とかお蔵入りの記事なども公開されてしまうとちょっと困ってしまいます。
その点NetlifyはGitHubと独立したサービスなのでPrivateリポジトリのまま利用できます。
記事を完成させてから公開する運用方法にしたいのでNetlifyを使うことにしました。</p>
<p>他にもGitHub PagesとNetlifyを比較した記事は多くあります。
詳しく比較したい方は以下のページが参考になるかと思います。</p>
<ul>
<li><a href="https://cloudlance-motio.work/post/netlify-vs-firebase/">静的サイトホスティング無料枠の徹底比較対決!【Netlify vs FireBase vs GitHub Pages vs GitLab Pages】</a></li>
<li><a href="https://chaos-boy.tokyo/posts/2018-05-29/github_pages_or_netrify_or_firebase/">爆速な静的サイト・ホスティングサービス選び Github Pages vs netlify vs Firebase</a></li>
</ul>Pelicanプラグイン導入のススメ2019-02-15T00:00:00+09:002019-02-24T00:00:00+09:00ykobatag:palet.dev,2019-02-15:/introduction-to-pelicans-plug-in.html<p>Pelicanはプラグインを導入することでブログに機能を追加することができます。
Pelicanのcore部分を直接編集しなくても導入できるのが利点です。
このブログでもいくつかのプラグインを導入しています。</p>
<h1>プラグインのダウンロード</h1>
<p>プラグイ …</p><p>Pelicanはプラグインを導入することでブログに機能を追加することができます。
Pelicanのcore部分を直接編集しなくても導入できるのが利点です。
このブログでもいくつかのプラグインを導入しています。</p>
<h1>プラグインのダウンロード</h1>
<p>プラグインはPelicanの<a href="https://github.com/getpelican/pelican-plugins">pelican-plugins</a>リポジトリにまとまっています。
もちろん個人で開発している場合もあるので、その場合は自分でリポジトリを探してください。
netlifyサーバの容量圧迫を回避するため静的サイトのファイルが保存されているディレクトリとは別のディレクトリに
プラグインリポジトリをcloneします。</p>
<div class="highlight"><pre><span></span><code>$ mkdir plugins_github
$ <span class="nb">cd</span> plugins_github
$ git clone git@github.com:getpelican/pelican-plugins.git
</code></pre></div>
<p>このcloneしたディレクトリから必要なプラグインのみを静的サイト用のディレクトリにコピーします。
まず静的サイト用のディレクトリにpluginsディレクトリを作成して、</p>
<div class="highlight"><pre><span></span><code>$ <span class="nb">cd</span> /path/to/your/project/dir
$ mkdir plugins
</code></pre></div>
<p>使いたいプラグインをpluginsディレクトリ内にコピーしましょう。</p>
<div class="highlight"><pre><span></span><code>$ cp -r /path/to/plugins_github/tipue_search plugins/
</code></pre></div>
<h1>プラグインの読み込み方法</h1>
<p>Pelicanはプラグインを設定ファイルで指定したパスから読み込みます。
設定ファイルは<code>pelicanconf.py</code>とします。
そのファイルに次の文を入力してください。</p>
<div class="highlight"><pre><span></span><code><span class="n">PLUGIN_PATHS</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'plugins'</span><span class="p">,]</span>
<span class="n">PLUGINS</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'your_plugin'</span><span class="p">,]</span>
</code></pre></div>
<p><code>PLUGIN_PATHS</code>はプラグインが保存されているディレクトリのパスを指定します。<code>PLUGINS</code>は実際に使用するプラグイン名を入力します。プラグインによって更に設定を行う場合があります。プラグインディレクトリ内のREADMEを見てください。</p>
<h1>このブログで導入しているプラグイン</h1>
<ul>
<li>tipue search</li>
<li>sitemap</li>
<li>minify</li>
</ul>
<hr>
<h2>tipue_search</h2>
<hr>
<p>ブログに検索機能を追加するプラグインです。記事が増えていくと検索機能があったほうが便利だと思うので導入しました。</p>
<h3>・事前準備</h3>
<p>検索を行うためにBeautifulSoupをインストールします。</p>
<div class="highlight"><pre><span></span><code>$ pip install beautifulsoup4
</code></pre></div>
<p>またBeautifulSoupはTipue searchプラグインを必要とするのでthemeディレクトリにダウンロードします。</p>
<div class="highlight"><pre><span></span><code>$ <span class="nb">cd</span> themes/<Name of your theme>/static/
$ wget http://www.tipue.com/search/tipuesearch.zip
$ unzip tipuesearch.zip
$ mv Tipue<span class="se">\ </span>Search<span class="se">\ </span><span class="m">7</span>.0/tipuesearch ./
$ rm -r Tipue<span class="se">\ </span>Search<span class="se">\ </span><span class="m">7</span>.0/ __MACOSX/
</code></pre></div>
<h3>・設定</h3>
<p><code>pelicanconf.py</code>で次のように書き換えます。</p>
<div class="highlight"><pre><span></span><code><span class="n">PLUGIN_PATHS</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'plugins'</span><span class="p">,]</span>
<span class="n">PLUGINS</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'tipue_search'</span><span class="p">,]</span>
<span class="n">DIRECT_TEMPLATES</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'index'</span><span class="p">,</span> <span class="s1">'tags'</span><span class="p">,</span> <span class="s1">'categories'</span><span class="p">,</span> <span class="s1">'authors'</span><span class="p">,</span> <span class="s1">'archives'</span><span class="p">,</span> <span class="s1">'search'</span><span class="p">]</span>
<span class="n">LINKS</span> <span class="o">=</span> <span class="p">((</span><span class="s1">'Home'</span><span class="p">,</span><span class="s1">'/index.html'</span><span class="p">),</span>
<span class="p">(</span><span class="s1">'About'</span><span class="p">,</span><span class="s1">'/pages/about.html'</span><span class="p">),</span>
<span class="p">(</span><span class="s1">'Search'</span><span class="p">,</span><span class="s1">'/search.html'</span><span class="p">),)</span>
</code></pre></div>
<h3>・検索用ページ作成</h3>
<p>次に検索用ページを作成します。テーマによってはすでにあるかもしれません。しかしこのブログで使用しているテーマには検索用ページがなかったので最初から作成しました。そのページ名をsearch.htmlとして次のように書き込みます。</p>
<div class="highlight"><pre><span></span><code>{% extends "base.html" %}
{% block metatitle %}Search{% endblock %}
{% block title %}Search{% endblock %}
{% block description %}A results on this site{% endblock %}
{% block scripts %}
<span class="p"><</span><span class="nt">script</span> <span class="na">type</span><span class="o">=</span><span class="s">"text/javascript"</span> <span class="na">src</span><span class="o">=</span><span class="s">"https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"</span><span class="p">></</span><span class="nt">script</span><span class="p">></span>
<span class="p"><</span><span class="nt">script</span> <span class="na">type</span><span class="o">=</span><span class="s">"text/javascript"</span> <span class="na">src</span><span class="o">=</span><span class="s">"{{ SITEURL }}/tipuesearch_content.js"</span><span class="p">></</span><span class="nt">script</span><span class="p">></span>
<span class="p"><</span><span class="nt">script</span> <span class="na">type</span><span class="o">=</span><span class="s">"text/javascript"</span> <span class="na">src</span><span class="o">=</span><span class="s">"{{ SITEURL }}/theme/tipuesearch/tipuesearch_set.js"</span><span class="p">></</span><span class="nt">script</span><span class="p">></span>
<span class="p"><</span><span class="nt">script</span> <span class="na">type</span><span class="o">=</span><span class="s">"text/javascript"</span> <span class="na">src</span><span class="o">=</span><span class="s">"{{ SITEURL }}/theme/tipuesearch/tipuesearch.min.js"</span><span class="p">></</span><span class="nt">script</span><span class="p">></span>
<span class="p"><</span><span class="nt">script</span><span class="p">></span>
<span class="nx">$</span><span class="p">(</span><span class="nb">document</span><span class="p">).</span><span class="nx">ready</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">$</span><span class="p">(</span><span class="s1">'#tipue_search_input'</span><span class="p">).</span><span class="nx">tipuesearch</span><span class="p">({</span>
<span class="s1">'show'</span><span class="o">:</span> <span class="mf">10</span><span class="p">,</span>
<span class="s1">'mode'</span><span class="o">:</span> <span class="s1">'json'</span><span class="p">,</span>
<span class="s1">'descriptiveWords'</span><span class="o">:</span> <span class="mf">10</span><span class="p">,</span>
<span class="s1">'showURL'</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
<span class="s1">'newWindow'</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
<span class="s1">'wholeWords'</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
<span class="s1">'contentLocation'</span><span class="o">:</span> <span class="s1">'{{ SITEURL }}/tipuesearch_content.json'</span><span class="p">,</span>
<span class="p">});</span>
<span class="p">});</span>
<span class="p"></</span><span class="nt">script</span><span class="p">></span>
{% endblock %}
{% block content %}
<span class="p"><</span><span class="nt">div</span><span class="p">></span>
<span class="p"><</span><span class="nt">h1</span><span class="p">></span>Search<span class="p"></</span><span class="nt">h1</span><span class="p">></span>
<span class="p"><</span><span class="nt">input</span> <span class="na">type</span><span class="o">=</span><span class="s">"text"</span> <span class="na">size</span><span class="o">=</span><span class="s">"30"</span> <span class="na">id</span><span class="o">=</span><span class="s">"tipue_search_input"</span><span class="p">></span>
<span class="p"><</span><span class="nt">br</span><span class="p">></span>
<span class="p"><</span><span class="nt">div</span> <span class="na">id</span><span class="o">=</span><span class="s">"tipue_search_content"</span><span class="p">></</span><span class="nt">div</span><span class="p">></span>
<span class="p"></</span><span class="nt">div</span><span class="p">></span>
{% endblock content %}
</code></pre></div>
<p><code>pelican content</code>を実行するとsearch.htmlファイルが生成されます。</p>
<h3>・その他設定</h3>
<p>検索設定ではオプションを指定できます。どんなオプションがあるか<a href="http://www.tipue.com/search/help/?d=5">このページ</a>から確認できます。
中でも<code>wholeWords</code>オプションは日本語検索をする場合は必ず指定してください。
<code>wholeWords</code>はデフォルトで<code>true</code>となっています。このとき検索の語句は英語(アルファベット?)のみ反応し日本語を含めたそのほかの言語は検索できません。このオプションを<code>false</code>にすると英語以外も検索できるようになります。</p>
<p>作成したブログ検索ページは<a href="/search.html">ここ</a>です。</p>
<hr>
<h2>sitemap</h2>
<hr>
<p>sitemapを作成するためのプラグイン。
googleやbingといった検索エンジンがサイト内のコンテンツを把握するためにsitemapを使用します。
<code>pelicanconf.py</code>で次のように編集</p>
<div class="highlight"><pre><span></span><code><span class="c1"># pluginに追加</span>
<span class="n">PLUGINS</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'sitemap'</span><span class="p">]</span>
<span class="c1"># xmlファイルで出力</span>
<span class="n">SITEMAP</span> <span class="o">=</span> <span class="p">{</span>
<span class="s1">'format'</span><span class="p">:</span> <span class="s1">'xml'</span>
<span class="p">}</span>
</code></pre></div>
<hr>
<h2>minify</h2>
<hr>
<p>HTMLのスペースや改行を除外するプラグイン。webページの高速化が望めますがソースコードの可読性は下がります。
インストール方法は<a href="https://github.com/rdegges/pelican-minify">こちら</a>。</p>
<h1>その他引っかかったところ</h1>
<p>pipで新しくインストールした時にrequirement.txtの書き換えを忘れてサイト内検索が動作しないことがありました。pipでインストールしたら<code>pip freeze > requirement.txt</code>を必ず実行。</p>netlifyで静的サイトを公開した話2019-02-14T22:00:00+09:002019-02-14T22:00:00+09:00ykobatag:palet.dev,2019-02-14:/generate-a-blog-with-pelican-part3.html<p><code>output</code>ディレクトリ内でPythonモジュールを使うことで作成したサイトを見れるようになりました。
しかしそれでは外部から見ることができません。
通常webサイトを一般の人が外部から閲覧できるようにするにはwebサーバーにアップロー …</p><p><code>output</code>ディレクトリ内でPythonモジュールを使うことで作成したサイトを見れるようになりました。
しかしそれでは外部から見ることができません。
通常webサイトを一般の人が外部から閲覧できるようにするにはwebサーバーにアップロードする必要があります。
静的サイトの場合、サーバー上に置いた<code>content</code>ディレクトリ内の記事を自動的にhtmlファイルに変換して
外部から閲覧可能にしてくれるサービスが多数あります。
netlifyはその中の一つです。</p>
<hr>
<p>これは</p>
<ul>
<li><a href="https://palet.dev/generate-a-blog-with-pelican-part1.html">Pelicanとnetlifyでブログ作成(1)</a></li>
<li><a href="https://palet.dev/generate-a-blog-with-pelican-part2.html">Pelicanとnetlifyでブログ作成(2)</a></li>
</ul>
<p>の続きです。</p>
<hr>
<h2>netlify登録</h2>
<p>netlifyの登録はGitHub/GitLab/Bitbucket/Emailの中から一つを選んで登録します。
今回はGitHubのアカウントで登録を行いました。
従って今後はGitHubも使います。
サイト公開までの流れは</p>
<ol>
<li>GitHubに必要なファイルをpush</li>
<li>netlifyとGitHubを連携</li>
<li>netlifyでデプロイ</li>
</ol>
<p>となります。</p>
<h2>GitHubでリポジトリ作成</h2>
<p>GitHubでサイト用のリポジトリを作成します。
ここでリポジトリとはソースコードや設定ファイルなどを管理するデータベースのことです。下の画像はリポジトリの登録画面です。リポジトリ名はお好みで。またPublic,Privateどちらでも構いません。
<img alt="リポジトリ作成" src="https://palet.dev/images/create_repo.png"></p>
<p>リポジトリが作成されるとローカルディレクトリ登録を行うコマンドラインが表示されます。
しかしコマンドラインを実行する前にnetlify用の設定を行うためいくつかの作業を行わなければなりません。</p>
<h3>GitHubで必要なファイルをpush</h3>
<p><code>pelican</code>コマンドによって生成されるファイルをgitの管理下から除外します。</p>
<div class="highlight"><pre><span></span><code>$ <span class="nb">echo</span> <span class="s2">"/output"</span> >> .gitignore
<span class="c1"># ">>" はファイルに追記するためのコマンド</span>
</code></pre></div>
<p>次にPythonで使用しているライブラリの一覧を<code>requirements.txt</code>へまとめます。
<code>pip freeze</code>コマンドを使用して</p>
<div class="highlight"><pre><span></span><code>$ pip freeze > requirements.txt
<span class="c1"># ">" はファイルに上書きするためのコマンド</span>
</code></pre></div>
<p>そしてnetlifyで使用するPythonのバージョンを<code>runtime.txt</code>ファイルを使って指定します。
ローカル環境では<code>Python3.6.5</code>でしたがnetlifyの環境では<code>Python3.6.4</code>がインストールされているため古い方を指定してあげます。</p>
<div class="highlight"><pre><span></span><code>$ <span class="nb">echo</span> <span class="s2">"3.6.4"</span> > runtime.txt
</code></pre></div>
<p>これで準備が整いました。
最後にローカルのディレクトリとGitHubを連携させます。GitHubのほぼコピペですがこのコマンドラインを一行ずつ打ち込んでください。ただし<code>git remote ~</code>の行はリポジトリ名をどのように設定したかによって異なります。ここだけはGitHubのページを確認してください。</p>
<div class="highlight"><pre><span></span><code>$ git init
$ git add .
$ git commit -m <span class="s2">"first commit"</span>
$ git remote add origin git@github.com:ykoba84/static_site.git
$ git push -u origin master
</code></pre></div>
<p>これでGitHub側の設定は完了です。</p>
<h2>netlifyとGitHubを連携&デプロイ</h2>
<p>Netlifyのコンソール画面に移ります。下の画像がコンソール画面です。
このサイトの項目が表示されていますが登録したばかりなら何も表示されていないはずです。
<img alt="コンソール画面" src="https://palet.dev/images/console.png"></p>
<p>New site from GitのタブをクリックしGitHubを選択します。</p>
<p><img alt="新しいサイト作成" src="https://palet.dev/images/create_a_new_site.png"></p>
<p>リポジトリ選択画面が表示されるので先ほど作成したリポジトリを登録します。
最後にデプロイする際のコマンドと出力先ディレクトリの指定を行います。
下の画像を参考に
<code>Build command</code>には<code>pelican content</code>を<code>Publish derectory</code>には<code>output</code>を指定してください。</p>
<p><img alt="デプロイ設定" src="https://palet.dev/images/deploy.png"></p>
<p>Deploy siteをクリックすると後はnetlifyが自動で行ってくれます。
サイト管理画面に移動するとサイトの状態を確認できます。
<img alt="デプロイ設定" src="https://palet.dev/images/site_overview.png">
表示されているURL(https://~)をクリックすればアップロードしたサイトを見ることができます。
URLは適当なサブドメインが生成時に割り当てられていますが、これを変更したい場合は</p>
<ol>
<li>サイト管理画面のSettingsをクリック</li>
<li>Domain managementメニューをクリック。次の画面が表示されたかと思います<img alt="デプロイ設定" src="https://palet.dev/images/domain_management.png"></li>
<li>Custom domains内の右側にある...をクリック</li>
<li>Edit site nameをクリック</li>
<li>好きなサブドメイン名にしてSave</li>
</ol>
<p>の手順で行ってください。</p>
<p>後はローカルで記事を作成->pushでサイトが更新されていきます。
以上がPelicanで生成した静的サイトを公開するまでに行う手順となります。お疲れ様でした。</p>アパートの事前部屋点検2019-02-13T23:20:00+09:002019-02-13T23:20:00+09:00ykobatag:palet.dev,2019-02-13:/inspect-a-room.html<p>今住んでいるアパートは3月退去の予定なのですが、不動産会社の方が部屋の事前確認に協力してくれませんかと連絡が来ました。
なんでも3月は退去する人が多いため立会い確認が希望日にできない可能性があるためらしいで …</p><p>今住んでいるアパートは3月退去の予定なのですが、不動産会社の方が部屋の事前確認に協力してくれませんかと連絡が来ました。
なんでも3月は退去する人が多いため立会い確認が希望日にできない可能性があるためらしいです。知らんけど。
事前確認では部屋に荷物がある状態で部屋の汚損や破損を確認します。
汚い部屋を見せたらどれだけ追加料金を取られるかわからないので部屋の掃除をすることにしました。
しかし結論から言うと不動産会社の方は汚損チェックはせず破損のチェックだけ行なっていました。
掃除してもしていなくても退去時の料金が変わることはありませんでしたがまあ汚いところを見られずに済んだので良しとします。</p>
<p>以下は主に掃除をしたところのメモです。</p>
<ul>
<li>風呂</li>
<li>コンロ、シンク</li>
<li>トイレ</li>
</ul>
<hr>
<h2>風呂</h2>
<p>排水溝やパイプの隙間など汚かった箇所を洗剤で掃除しました。
使用した洗剤はクレンザーです。
鏡も掃除しましたが水垢は落ちませんでした。何で復活するの??
換気扇の掃除は表面のゴミ取りだけです。分解掃除は無理でした。</p>
<h3>使った道具</h3>
<ul>
<li>スポンジ</li>
<li>歯ブラシ</li>
<li>クレンザー</li>
<li>パイプユニッシュ</li>
</ul>
<hr>
<h2>コンロ、シンク</h2>
<p>主にやったことはコンロの油汚れの掃除です。
スポンジで擦っても汚れを落とすことができません。
そこで重曹入り石鹸をコンロ周りに吹きかけて10分放置->タオルで拭き取りを2回繰り返します。
そうすることで汚れを大体落とすことができました。
シンク周りはクレンザーを使って掃除しましたが
水垢は取れませんでした。こいつしぶとい。</p>
<h3>使った道具</h3>
<ul>
<li>スポンジ</li>
<li>重曹入り石鹸(スプレータイプ)</li>
<li>クレンザー</li>
<li>タオル</li>
</ul>
<hr>
<h2>トイレ</h2>
<p>特に特別やったことはありません。便器の掃除くらいですかね。</p>
<hr>
<h2>他にやったこと</h2>
<p>壁紙が剥がれかけていたので接着剤を使って補強。</p>Pelicanで静的サイトを作った話(2)2019-02-12T23:45:00+09:002019-02-12T23:45:00+09:00ykobatag:palet.dev,2019-02-12:/generate-a-blog-with-pelican-part2.html<p><a href="https://palet.dev/generate-a-blog-with-pelican-part1.html">Pelicanとnetlifyでブログ作成(1)</a>ではPelicanのセットアップまで行いました。
今回は記事を書いてサイトを作成するところまで行います。</p>
<h2>記事</h2>
<p>記事はMarkdownと呼ばれる文章の記述方法を指定するマークアップ言語を使って書きます。
記事に必要な要素 …</p><p><a href="https://palet.dev/generate-a-blog-with-pelican-part1.html">Pelicanとnetlifyでブログ作成(1)</a>ではPelicanのセットアップまで行いました。
今回は記事を書いてサイトを作成するところまで行います。</p>
<h2>記事</h2>
<p>記事はMarkdownと呼ばれる文章の記述方法を指定するマークアップ言語を使って書きます。
記事に必要な要素はタイトルや日付といったデータと記事の本文です。
タイトルや日付のデータはメタデータといい、記事の最初に記述します。</p>
<p>セットアップが終わっていればディレクトリ構造は次のようになっているはずです。</p>
<div class="highlight"><pre><span></span><code><span class="o">(</span>venv<span class="o">)</span> yourname@:/path/to/your/project/dir$ ls
Makefile content output pelicanconf.py publishconf.py tasks.py
</code></pre></div>
<p>記事はcontentの中に書いていくことになるのでcontentに移動します。</p>
<div class="highlight"><pre><span></span><code>$ <span class="nb">cd</span> content
</code></pre></div>
<p>お好きなエディタを使って記事を作成します。Markdownを使うため拡張子は<code>.md</code>です。</p>
<div class="highlight"><pre><span></span><code>$ emacs article.md
</code></pre></div>
<p>最初にメタデータを記述します。その記法は</p>
<div class="highlight"><pre><span></span><code>Title: 記事のタイトル名
Date: 日付
Category: カテゴリ名
Tags: タグ
Slug: URLになるやつ
Authors: 書いた本人
</code></pre></div>
<p>です。このメタデータ記述後に記事本文を書いていきます。
例えばこの記事ならば</p>
<div class="highlight"><pre><span></span><code>Title: Pelicanとnetlifyでブログ作成(2)
Date: 2019-02-12 23:00
Category: Development
Tags: Dev
Slug: Pelican-netlify2
Authors: ykoba
[<span class="nt">Pelicanとnetlifyでブログ作成(1)</span>](<span class="na">{filename}/pelican_netlify1.md</span>)ではPelicanのセットアップまで...
</code></pre></div>
<p>と書いています。</p>
<h2>サイト作成</h2>
<p>contentディレクトリの中に記事を書いたときサイトの作成を行うことができます。
まず作業用ディレクトリに移動します。</p>
<div class="highlight"><pre><span></span><code>$ <span class="nb">cd</span> ../
$ ls
Makefile content output pelicanconf.py publishconf.py tasks.py
</code></pre></div>
<p>次に<code>Pelican</code>コマンドを入力します。引数に記事を保存しているcontentディレクトリのパスを指定します。
これによりMarkdownファイルがhtmlファイルに変換されてoutputに出力されます。</p>
<div class="highlight"><pre><span></span><code>$ pelican content
</code></pre></div>
<p>これでサイトの完成です。</p>
<h2>確認</h2>
<p>作成したサイトを確認してみます。
python3はローカルでwebサーバを立ち上げることができる<code>http.server</code>というモジュールを使うことができます。
サイトの出力ディレクトリ<code>output</code>に移動してこのモジュールを使用します。pythonコマンドの引数にモジュールを使うため<code>-m</code>を指定して</p>
<div class="highlight"><pre><span></span><code>$ <span class="nb">cd</span> output
$ python -m http.server
</code></pre></div>
<div class="highlight"><pre><span></span><code>Serving HTTP on <span class="m">0</span>.0.0.0 port <span class="m">8000</span> <span class="o">(</span>http://0.0.0.0:8000/<span class="o">)</span> ...
</code></pre></div>
<p>と出たら成功です。
ブラウザを立ち上げて<code>http://0.0.0.0:8000/</code>を打ち込んだら作成したサイトをみることができます!
結果は君の目で確かめてみてくれ!
<br>
<br>
<br>
<br>
<br>
<br>
...このような表示になっているかと思います。
<img alt="サイト作成例" src="https://palet.dev/images/test_web_site.png"></p>
<p>続きます。</p>Pelicanで静的サイトを作った話(1)2019-02-11T15:40:00+09:002019-02-12T23:30:00+09:00ykobatag:palet.dev,2019-02-11:/generate-a-blog-with-pelican-part1.html<h1>はじめに</h1>
<p>たまになんですけど、ふとしたはずみでプログラミングをしたりそれを行うための環境構築などをするのですが、
どうも最初の段階で満足してしまい後が続きません。
何かモチベーション継続のきっかけになったり後で備 …</p><h1>はじめに</h1>
<p>たまになんですけど、ふとしたはずみでプログラミングをしたりそれを行うための環境構築などをするのですが、
どうも最初の段階で満足してしまい後が続きません。
何かモチベーション継続のきっかけになったり後で備忘録として役立てられればいいなあと思い、
ブログを書いてみることにしました。
どの媒体を使うか色々検討していたのですが、
ブログサイトは記事を書くページがツールボタンでごちゃごちゃしていて使う気になれませんでした。
自分の希望と合うのはないかと探している中で
<a href="https://docs.getpelican.com/en/stable/">Pelican</a>+<a href="https://www.netlify.com/">netlify</a>にたどり着きました。
このブログはそれらの技術を用いて作成しています。</p>
<p>Pelicanは静的サイトジェネレータといってサイトをいい感じに作ってくれます。
そしてサイトに必要な記事は自分の好きなエディタを使って書くことができます。
netfilyは作成した静的サイトをデプロイ(誰でも閲覧できる状態に)するサービスです。
この二つを組み合わせて使えば自分の好きなようにブログを書けるのではと考え実際にやってみました。
以下にその時に行ったセットアップのまとめを記述したいと思います。</p>
<h1>Pelicanとは</h1>
<p>Pelicanはオープンソースの静的サイトジェネレータです。
ここで静的サイトとはページを要求した時にサーバ上に保存されているhtmlファイルをそのまま送るサイトのことを指します。
wikiや<a href="http://abehiroshi.la.coocan.jp/">阿部寛のホームページ</a>がこれにあたります。
静的サイトジェネレータは他にも多数あります。
各静的サイトジェネレータを開発の頻度によってスコア化して一覧表示している<a href="https://www.staticgen.com/">StaticGen</a>というサイトをみると沢山の種類があることがわかります。
なぜ多数ある中からPelicanを選択したかというと開発言語がPythonだったからです。
上位の静的サイトジェネレータはRubyやJavaScriptで書かれているのですがあまり馴染みがなかったので、
比較的開発が盛んでPythonを使っているPelicanを選びました。</p>
<h2>Pelicanインストール</h2>
<p>Pelicanは<code>Python 2.7</code>or <code>Python 3.*</code>で動作します。
本環境は<code>Python 3.6.5</code>を使用します。
はじめにPelicanをインストールする前にPelican実行用仮想環境を作成します。
<code>Python 3.6.5</code>には<code>venv</code>という仮想環境を作成するモジュールが最初からインストールされているのでこれを使用します。
仮想環境を作成するコマンドは</p>
<div class="highlight"><pre><span></span><code>$ python -m venv /path/to/your/venv
</code></pre></div>
<p>これによって仮想環境用のディレクトリが作成されました。
次にそのディレクトリ内に入って仮想環境を有効化させます。</p>
<div class="highlight"><pre><span></span><code>$ <span class="nb">cd</span> /path/to/your/venv
$ <span class="nb">source</span> ./bin/activate
</code></pre></div>
<p>端末が<code>hogehoge $</code>から<code>(venv) hogehoge $</code>になったら成功です。
次にPythonのパッケージインストーラpipからPelicanをインストールします。</p>
<div class="highlight"><pre><span></span><code>$ pip install pelican
</code></pre></div>
<p>またMarkdown形式で記事を書くためにそのライブラリもインストールします。</p>
<div class="highlight"><pre><span></span><code>$ pip install Markdown
</code></pre></div>
<p>これでPelicanのインストールは完了です。
次にサイトを作成するためのセットアップを行います。</p>
<h2>Pelicanセットアップ</h2>
<p>はじめに静的サイトのファイルを置くディレクトリを作成しそこへ移動します。</p>
<div class="highlight"><pre><span></span><code>$ mkdir /path/to/your/project/dir
$ <span class="nb">cd</span> /path/to/your/project/dir
</code></pre></div>
<p>セットアップは<code>pelican-quickstart</code>コマンドを実行しいくつかの質問に答えると完了です。
質問は</p>
<div class="highlight"><pre><span></span><code><span class="o">></span><span class="w"> </span><span class="k">Where</span><span class="w"> </span><span class="n">do</span><span class="w"> </span><span class="n">you</span><span class="w"> </span><span class="n">want</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="k">create</span><span class="w"> </span><span class="n">your</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">web</span><span class="w"> </span><span class="n">site</span><span class="vm">?</span><span class="w"> </span><span class="o">[</span><span class="n">.</span><span class="o">]</span><span class="w"> </span><span class="p">.</span><span class="w"></span>
<span class="o">></span><span class="w"> </span><span class="n">What</span><span class="w"> </span><span class="n">will</span><span class="w"> </span><span class="n">be</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">title</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="n">this</span><span class="w"> </span><span class="n">web</span><span class="w"> </span><span class="n">site</span><span class="vm">?</span><span class="w"> </span><span class="n">test</span><span class="w"> </span><span class="n">web</span><span class="w"> </span><span class="n">site</span><span class="w"></span>
<span class="o">></span><span class="w"> </span><span class="n">Who</span><span class="w"> </span><span class="n">will</span><span class="w"> </span><span class="n">be</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">author</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="n">this</span><span class="w"> </span><span class="n">web</span><span class="w"> </span><span class="n">site</span><span class="vm">?</span><span class="w"> </span><span class="n">ykoba</span><span class="w"></span>
<span class="o">></span><span class="w"> </span><span class="n">What</span><span class="w"> </span><span class="n">will</span><span class="w"> </span><span class="n">be</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="k">default</span><span class="w"> </span><span class="k">language</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="n">this</span><span class="w"> </span><span class="n">web</span><span class="w"> </span><span class="n">site</span><span class="vm">?</span><span class="w"> </span><span class="o">[</span><span class="n">ja</span><span class="o">]</span><span class="w"> </span><span class="n">ja</span><span class="w"></span>
<span class="o">></span><span class="w"> </span><span class="n">Do</span><span class="w"> </span><span class="n">you</span><span class="w"> </span><span class="n">want</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">specify</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">URL</span><span class="w"> </span><span class="k">prefix</span><span class="vm">?</span><span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">g</span><span class="p">.,</span><span class="w"> </span><span class="nl">https</span><span class="p">:</span><span class="o">//</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="w"> </span><span class="p">(</span><span class="n">Y</span><span class="o">/</span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="n">n</span><span class="w"></span>
<span class="o">></span><span class="w"> </span><span class="n">Do</span><span class="w"> </span><span class="n">you</span><span class="w"> </span><span class="n">want</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">enable</span><span class="w"> </span><span class="n">article</span><span class="w"> </span><span class="n">pagination</span><span class="vm">?</span><span class="w"> </span><span class="p">(</span><span class="n">Y</span><span class="o">/</span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="n">Y</span><span class="w"></span>
<span class="o">></span><span class="w"> </span><span class="n">How</span><span class="w"> </span><span class="n">many</span><span class="w"> </span><span class="n">articles</span><span class="w"> </span><span class="n">per</span><span class="w"> </span><span class="n">page</span><span class="w"> </span><span class="n">do</span><span class="w"> </span><span class="n">you</span><span class="w"> </span><span class="n">want</span><span class="vm">?</span><span class="w"> </span><span class="o">[</span><span class="n">10</span><span class="o">]</span><span class="w"> </span><span class="mi">10</span><span class="w"></span>
<span class="o">></span><span class="w"> </span><span class="n">What</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">your</span><span class="w"> </span><span class="nc">time</span><span class="w"> </span><span class="k">zone</span><span class="vm">?</span><span class="w"> </span><span class="o">[</span><span class="n">Europe/Paris</span><span class="o">]</span><span class="w"> </span><span class="n">Japan</span><span class="w"> </span>
<span class="o">></span><span class="w"> </span><span class="n">Do</span><span class="w"> </span><span class="n">you</span><span class="w"> </span><span class="n">want</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">generate</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">tasks</span><span class="p">.</span><span class="n">py</span><span class="o">/</span><span class="n">Makefile</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">automate</span><span class="w"> </span><span class="n">generation</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="n">publishing</span><span class="vm">?</span><span class="w"> </span><span class="p">(</span><span class="n">Y</span><span class="o">/</span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="n">Y</span><span class="w"></span>
<span class="o">></span><span class="w"> </span><span class="n">Do</span><span class="w"> </span><span class="n">you</span><span class="w"> </span><span class="n">want</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">upload</span><span class="w"> </span><span class="n">your</span><span class="w"> </span><span class="n">website</span><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">FTP</span><span class="vm">?</span><span class="w"> </span><span class="p">(</span><span class="n">y</span><span class="o">/</span><span class="n">N</span><span class="p">)</span><span class="w"> </span><span class="n">N</span><span class="w"></span>
<span class="o">></span><span class="w"> </span><span class="n">Do</span><span class="w"> </span><span class="n">you</span><span class="w"> </span><span class="n">want</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">upload</span><span class="w"> </span><span class="n">your</span><span class="w"> </span><span class="n">website</span><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">SSH</span><span class="vm">?</span><span class="w"> </span><span class="p">(</span><span class="n">y</span><span class="o">/</span><span class="n">N</span><span class="p">)</span><span class="w"> </span><span class="n">N</span><span class="w"></span>
<span class="o">></span><span class="w"> </span><span class="n">Do</span><span class="w"> </span><span class="n">you</span><span class="w"> </span><span class="n">want</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">upload</span><span class="w"> </span><span class="n">your</span><span class="w"> </span><span class="n">website</span><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">Dropbox</span><span class="vm">?</span><span class="w"> </span><span class="p">(</span><span class="n">y</span><span class="o">/</span><span class="n">N</span><span class="p">)</span><span class="w"> </span><span class="n">N</span><span class="w"></span>
<span class="o">></span><span class="w"> </span><span class="n">Do</span><span class="w"> </span><span class="n">you</span><span class="w"> </span><span class="n">want</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">upload</span><span class="w"> </span><span class="n">your</span><span class="w"> </span><span class="n">website</span><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">S3</span><span class="vm">?</span><span class="w"> </span><span class="p">(</span><span class="n">y</span><span class="o">/</span><span class="n">N</span><span class="p">)</span><span class="w"> </span><span class="n">N</span><span class="w"></span>
<span class="o">></span><span class="w"> </span><span class="n">Do</span><span class="w"> </span><span class="n">you</span><span class="w"> </span><span class="n">want</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">upload</span><span class="w"> </span><span class="n">your</span><span class="w"> </span><span class="n">website</span><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">Rackspace</span><span class="w"> </span><span class="n">Cloud</span><span class="w"> </span><span class="n">Files</span><span class="vm">?</span><span class="w"> </span><span class="p">(</span><span class="n">y</span><span class="o">/</span><span class="n">N</span><span class="p">)</span><span class="w"> </span><span class="n">N</span><span class="w"></span>
<span class="o">></span><span class="w"> </span><span class="n">Do</span><span class="w"> </span><span class="n">you</span><span class="w"> </span><span class="n">want</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">upload</span><span class="w"> </span><span class="n">your</span><span class="w"> </span><span class="n">website</span><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">GitHub</span><span class="w"> </span><span class="n">Pages</span><span class="vm">?</span><span class="w"> </span><span class="p">(</span><span class="n">y</span><span class="o">/</span><span class="n">N</span><span class="p">)</span><span class="w"> </span><span class="n">N</span><span class="w"></span>
<span class="n">Done</span><span class="p">.</span><span class="w"> </span><span class="n">Your</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">project</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">available</span><span class="w"> </span><span class="k">at</span><span class="w"> </span><span class="o">/</span><span class="k">path</span><span class="o">/</span><span class="k">to</span><span class="o">/</span><span class="n">your</span><span class="o">/</span><span class="n">project</span><span class="o">/</span><span class="n">dir</span><span class="w"></span>
</code></pre></div>
<p><code>ls</code>コマンドで確認してみるといくつかのファイルとディレクトリが作成していることがわかります。</p>
<div class="highlight"><pre><span></span><code>(venv) yourname@:/path/to/your/project/dir$ ls
Makefile content output pelicanconf.py publishconf.py tasks.py
</code></pre></div>
<p>以上でPelicanのインストール&セットアップは完了しました。
今後はcontentディレクトリに記事を書いていくことになります。
次回に続きます。</p>