静的サイトジェネレーターとGitリポジトリでブログ
Pagent
秋になって処々で秋桜(コスモス)が美しく咲いている。
区画一面にコスモスが咲きほこる畑もあちこち見かける。
あれはどういう理由からなのだろう。
おそらく種を蒔いておられるのだと思うが、生花として採取販売している様子もない。
見る人の目を楽しませるために、わざわざやってくれているのだろうか。
雑草除けくらいにはなるのだろうか。
なんにせよ、見る方としてはとても有難い。
(写真はこちらのサイトからお借りしました。 写真素材 足成:コスモス畑 ⅱ)
Xubuntuで間違ってhomeディレクトリを削除してしまい、過去記事のmarkdownファイルもろともOctopressのsourceを消失させてしまうという失敗をしてしまった。
ここはOctopressの作業フォルダをDropboxに置いておいた方がよいかと思いやってみた。
いちおう動作はしてdeployも出来るが、どこから出てきたか下層にあるはずのフォルダやファイルが勝手に作られていたりする。
通信状況が良くないのか、使い勝手がいまいち。
Dropboxはあくまでバックアップ用にすることにした。
Octopressの作業フォルダは、Xubuntuで共有しているWindowsのDドライブに置き、homeディレクトリにはそこへのリンクを置いているので前よりは安全だろう。
DドライブはXubuntu起動時に自分が所有者としてマウントされるよう、optionsを下記で/etc/fstabに記載している。
defaults,umask=002,uid=1000,gid=1000
(Linuxからntfsパーティションを常用する場合は、Linux標準に合わせてdmask=022,fmask=133,
でマウントした方が良いようだ。umask=002
だとtextファイルを開く際、毎回”〜を実行しますか?それとも内容を表示しますか?”と聞かれる。)
|
|
これでXubuntuでおかしなことをしてしまっても、Dドライブをいじらない限りは大丈夫なはず。
ーー
(追記)
使い方がよく分かってなかっただけで、やっぱりDropboxは便利かもしれない。
他のPCと作業を同期出来るし。
間違ってフィルを削除してしまっても、Dropboxのキャッシュから復元出来るし。
これまで12.04からアップグレードしたXubuntu14.04.1を使っていたので気づかなかったが、14.04.1ではメニュー編集ツールの「メイン・メニュー」が無くなっていて、「メニューエディタ」(MenuLibre)しか入っていない。
自分でメニューを追加する際、MenuLibreはどうも使い方がよく分からない。
かつての「メイン・メニュー」はalacarteというそうで、sudo apt-get install alacarte
でこれを導入した。
導入したまでは良かったのだが、alacarteで新規メニューを追加していたら突然トラブルが発生して、メニューがすべて消えてしまった。
Whisker Menuは真っ白の状態で、デスクトップ上右クリックのアプリケーションでも短い横棒が表示されるのみで、アプリケーションがなにも表示されない。
MenuLibreとalacarteを同時に立ち上げていたのが悪かったのだろうか。
ログインし直してみても変わらず困ってしまった。
ユーザー固有のメニューファイルは~/.config/menus(/home/ユーザー名/.config/menus)にあるらしいのでmenusを見てみたら、真っ白でなにも書かれていない。
どうりでメニューになにも表示されないわけだ。
menusがどんな内容だったかは思い出せなかったが、新規にユーザーを追加してそのmenusファイルを流用すれば良いのではないかと思い、やってみたらこれで無事に復帰できた。
コマンドは忘れたが端末で新規ユーザーを追加した。
この時新規ユーザーのhomeディレクトリも作成する形で追加したんだったと思う。
何にせよ、またクリーンインストールするはめにならずに済んで良かった。
MenuLibreはよく分からないし、Whisker Menuも一見おしゃれのようだが、かつての「アプリケーションメニュー」の方が目的のアプリケーションを素早く選択出来て好みだ。
カテゴリ名を「Octopress」と先頭の「O」を大文字にしているのが、なぜか記事下部でもサイドバーでも「octopress」と小文字で表示されていた。
Jekyllのバージョンアップでカテゴリ名の先頭文字を小文字に統一することになったらしい。
Jekyll 1.X or 2.X (+ Octopress)でのCategoryの取り扱い - rcmdnk’s blog
参照記事の通り、post.rb(Xubuntu14.04.1では/var/lib/gems/1.9.1/gems/jekyll-2.4.0/lib/jekyllにあった)をoctopress/plugins内にコピーして編集したが、previewの際
warning: already initialized constant MATCHER
warning: already initialized constant EXCERPT_ATTRIBUTES_FOR_LIQUID
warning: already initialized constant ATTRIBUTES_FOR_LIQUID
と警告が出る。
コピーしてきたpost.rbの内容は、他の部分を削除してカテゴリー名に関する部分だけにした方が良いらしい。
大文字小文字は自分で好きに決めたいので、downcaseをcapitalizeにするのではなく.map {|c| c.to_s.downcase}
の部分を省略した。
module Jekyll
class Post
def populate_categories
categories_from_data = Utils.pluralized_array_from_hash(data, 'category', 'categories')
self.categories = (
Array(categories) + categories_from_data
).flatten.uniq
end
end
end
大文字小文字を好きに決められるようになった。
ブログをリニューアルするにあたって、またOctopressを少しカスタマイズした。
以前と同じく、Octopressの初期設定時に気にしておきたい9箇所 – tantantと月間アーカイブ for Octopress – rcmdnk’s blogの通り、カテゴリ別アーカイブと月別アーカイブを追加した。
テーマは3rd Party Octopress Themes · imathis/octopress Wikiで探してみたが、やっぱりデフォルトの方がよいかと思い、sass/custom/_styles.scssを下記に編集したのみ。
|
|
日付け表記は英語式ではなく日本語式がよかったので、_config.yml
でdate_format: "%Y年%-m月%-d日"
としたが、なぜかデフォルトのテーマでは反映されず。
source/_includes/post/date.htmlをoctostrap3のdate.htmlと入れ替えたら反映された。
よく分からないが、デフォルトテーマのdate.htmlの記述に問題があるらしい。
あと、記事タイトルやカテゴリー名に漢字を使うと中国語読みみたいになってしまうが、これはたぶんOctopressがベースとしているJekyllの仕様なのだろう。
WordPressのようにスラッグを指定出きれば良いのだが、やり方が分からないのでこの辺は我慢しないとしょうが無いようだ。
deployのやり方が分からずFTPでのアップロードだったが、独自ドメインでもOctopressを使ってブログを書いていた。
先日、PCのhomeディレクトリを移動する際に誤ってhomeディレクトリをすべて削除してしまい、結局Linux(Xubuntu)を再インストールした。
ブログ自体は残っているが、sourceを消失してしまったので、更新するためにはかつての記事をOctopressのsource内に取り込む必要が有りそう。
htmlファイルを一つ一つmarkdown形式に復元するのは骨が折れそうなのでかつての記事は諦めることにして、今度はレンタルサーバーではなくGithubを使って新しく始めることにした。
Githubでも独自ドメインを使えるようだがそれはせず、.github.ioのサブドメインを使わせてもらうことにした。
静的サイトジェネレーターはソースが手元にあるのでバックアップ不要と安心していたが、ソースを消失してしまうとどうしようも無いと痛感。
OctopressブログをGithubのリポジトリにdeployしようとしても、エラーになってなかなか上手くいかなかった。
どうやら、リポジトリ名を(username).github.comにしたのが原因だった様子。
新しく(username).github.ioでリポジトリを作りなおしたら、すんなりdeploy出来た。
Githubがリポジトリを.github.comから.github.ioに移行したのが関係しているのだろうか。
.ioというのは見慣れないドメインだったが、最近はIT分野で好まれているのだとか。
.ioは国別コードトップレベルドメイン(ccTLD)の一つで、イギリス領インド洋地域(Indian Ocean Territory)に割り当てられている。
入出力のI/O(Input/Output)やI/Oポートを表すとして、ウェブアプリケーションを始めとするコンピュータサイエンスの分野では近年.ioドメインが好まれている。2013年4月にGitHubはプロジェクトページの全ドメインを「github.io」に移行した。
イギリスという国がいまだにインド洋に領有地(植民地)を持っている、ということに驚いた。
テスト投稿
以前の記事に書いた通り、クリップボードマネージャーは「Diodon」を使っていた。
Xubuntu14.04にクリップボードマネージャー「Diodon」を入れてみた
だが、最初は可愛く見えていたハリセンボンのアイコンが、だんだん可愛く見えなくなって来たので、「Diodon」をやめて「Glipper」にしてみた。
記憶する項目数を50にして使っていて気がついたのだが、PC起動時に保存されている項目数が3つ程しかない。
前に使った時は、「Remember clipboard history on restart」のチェックボックスを外してもPC終了時に履歴を消してくれないと諦めていたのだが、どうやら「Glipper」は「Remember…」にチェックが入った状態でログアウトした最後のセッションを覚えているようだ。
履歴をクリアした状態で「Remember…」にチェックを入れてログアウトし、その後ログインしてチェックボックスを外せば、それ以降は毎回履歴が空の状態でログイン出来た。
人によっては不便に感じるかもしれないが、保存されてしまったパスワードの履歴をPC終了時に自動的に消してくれるのはとても有難い。
今後は「Glipper」を使うことにしました。
FC2で放置していたブログから別のブログにリダイレクトしてみた。
方法は下記記事のmeta refreshタグを使ったやり方。
サイト(ブログ)のお引っ越し(移転)は301リダイレクトを。出来ない場合は、メタリフレッシュ(meta refresh)とrel=”canonical”を! / もっと知りたいリンゴあれこれ
転送する記事を既存のいくつかのブログに振り分けたかったので、独自ドメインを運用しているサーバー内に中継用のディレクトリを作り、その中に置いた.htaccessを使ってさらに各ブログへ、と2回転送する形にした。
FC2ブログから中継ディレクトリへ
最初、meta refreshタグだけで良いのかと思ったら、参照記事の通り<!--permanent_area-->
や<!--index_area-->
なども入れないと転送されなかった。
FC2がそういう設定をしているらしい。
レンタルサーバーに/301というディレクトリを作りそこへ転送したので、FC2ブログの<head>
直下に下記記述を加えた。
<!--permanent_area--> <!--topentry--> <link rel="canonical" href="http://s.pagent.org/301/<%topentry_no>.php"> <meta <!--index_area--><!--/index_area--> http-equiv="refresh" content="0;URL=http://s.pagent.org/301/<%topentry_no>.php"> <!--/topentry--> <!--/permanent_area--> <!--not_permanent_area--> <link rel="canonical" href="http://s.pagent.org/301/hoge.php"> <meta <!--index_area--><!--/index_area--> http-equiv="refresh" content="0;URL=http://s.pagent.org/301/hoge.php"> <!--/not_permanent_area--> <meta name="robots" content="noindex">
個別記事の転送先URLは、FC2ブログの記事番号<%topentry_no>
だけだと、その後の.htaccessでのリダイレクトが上手くいかない記事が多数出たので、.php
という拡張子を付けてhttp://s.pagent.org/301/<%topentry_no>.php
と指定した。.html
でも大丈夫だったが、http://…
と区別がつき易いように。
それ以外のカテゴリアーカイブページなどは引き継ぐのが難しいので、存在しないURLhttp://s.pagent.org/301/hoge.php
を指定して404エラーになるようにした。
<meta name="robots" content="noindex">
は不要かもしれないが、念のため挿入。
中継ディレクトリから公開URLへ
次に、/301内に.htaccessを作り、一つ一つの記事について公開したいURLにリダイレクトさせた。
たとえばFC2でhttp://pagents.blog.fc2.com/blog-entry-12.html
だった記事はhttp://s.pagent.org/static/2014/01/06/puryu/
へ転送したかったので、下記のように記述。
RewriteRule ^12.php http://s.pagent.org/static/2014/01/06/puryu/ [L,R=301]
手作業になるので記事の数が多いと大変だと思うが、ちゃんと目的のURLにリダイレクト出来た。
meta refreshの待機時間について
当初、meta refreshタグの待機時間は0(秒)に設定したが、それでもジャンプするまでにワンクッションかかってしまう。
どうせ遅延があるし、0秒設定だとスパムサイトと認識される可能性もあるらしい。
また下記記事によると、meta refreshが0秒では新URLが検索エンジンにインデックスされなかったところが、meta refreshを1秒以上にし、さらに旧ページの内容を移転のお知らせだけにしたら、新URLが検索エンジンにインデックスされたとのこと。
meta refresh 0秒だと検索エンジンにインデックスされない | Web Labs
記事内容をすべて下記のように変更し、meta refreshを5秒にした。
この記事は下記のページに移動しました。
5秒後に自動的にジャンプします。 ジャンプしない場合は下記リンクをクリックして下さい。