静的サイトジェネレーターとGitリポジトリでブログ
Pagent
HexoのArchivesや各カテゴリーのページはデフォルトでは記事全文を表示するようになっている。
リスト表示の方が一覧を俯瞰出来て便利なので好みなのだが、カスタマイズの仕方がなかなか分からなかった。
結局は_config.ymlのArchivesの項目で
# Archives
## 2: Enable pagination
## 1: Disable pagination
## 0: Fully Disable
archive: 2
category: 2
tag: 2
となっているところの値を、2から1に変更。
# Archives
## 2: Enable pagination
## 1: Disable pagination
## 0: Fully Disable
archive: 1
category: 1
tag: 1
簡単にリスト表示(タイル形式)になった。
Hexoにはいろいろテーマがあるようで有難い。
Themes · hexojs/hexo Wiki
(デモサイトはなぜか中国語が多い。)
元々入っていたデフォルトのテーマは「Landscape」だったので、とりあえずそれとは別のOfficial Themes、「Phase」と「Light」を試してみた。
試したはいいが、「Light」を入れてから元のテーマに戻そうとしたら戻せなくなってしまった。
「Light」が崩れたようなスタイルから変更出来ない。
hexo h
でヘルプを見ると、clean
(Remove generated files and the cache)というコマンドオプションがあったので、hexo clean
をしてみた。
書いてある通り/publicフォルダ自体も消えてしまったが、その後hexo g
したらテーマも無事直った。
消したのに、カウント数が(0)のまま表示されているカテゴリやタグも、hexo clean
で直るようだ。
ーー
テーマのCSSをカスタマイズする際にも、ローカルでの確認では問題ないが、いざdeployすると反映されていないようだ。
この時もいったんhexo clean
すると良いようだ。
Github Pagesのブログに使っている静的サイトジェネレーターをOctopressからHexoに変更してみた。
Octopressの/source/_posts内の記事ソースをそのままHexoの/source/_postsにコピーしたら、generateした時にパーマリンクがhttp://.../2014/10/24/2014-10-24-xubuntu-blank-menu/
のように日付けが重複してしまった。
Hexoはデフォルトでは、新しく記事ソースを作った時には日付けがつかず、generateする時に日付けを付加するようになっているらしい。
_config.ymlの
# Writing
new_post_name: :title.md # File name of new posts
のところを
new_post_name: :year-:month-:day-:title.md
に変更したらOctopress同様になるようだ。
Migration | Hexo
Octopressでは記事が/blogディレクトリ下に配置されるパーマリンクを使っていたが、今後はHexoのデフォルトの通りルート下に:year/:month/:day/:title/というパーマリンクを使うことにした。この方がシンプルで好みだし。
Githubでは.htaccessファイルを使ったリダイレクトが使用不可のようなので、以前の記事がリンク切れになるのは仕方がない。
あと、下記記事を参考に、FeedとSitemapのプラグインを入れた。
プラグインの導入はとても簡単だった。
所要時間3分!? Github PagesとHEXOで爆速ブログ構築してみよう! | 株式会社LIG
Feedを導入すると、ヘッダー右上のアイコンでatom.xmlのページは表示出来たが、ブラウザのアドレスバーの端にフィードアイコンが表示されていない。
themes/landscape/layout/_partial/head.ejsの26行目、link rel="alternative"
をlink rel="alternate"
に変更したら、アドレスバーにフィードアイコンが表示された。
心配だったGithubへのdeployも、_config.ymlの# Deployment
の項目に記載するだけですんなりdeploy出来た。
記事数が増えるに従い動作がもっさりして来たOctopressに較べ、Hexoのgenerateは断然早くて軽快。
コマンドもhexo new
→hexo n
hexo generate
→hexo g
hexo server
→hexo s
hexo deploy
→hexo d
で良いようだし、なかなか快適。
Octopressでブログを書いていて、さして不満はないのだが、別の静的サイトジェネレーターに「Hexo」というのがあるのを知った。
Octopressに較べ、テーマも豊富に用意あり、日本語のURLやカテゴリー名にも対応しているようだったので、入れてみた。
rubyではなく、Node.jsというのを使うらしい。
導入には下記サイトなどを参考にさせて頂いた。
【Node.js】Hexoでブログを書くための環境構築 | AdMax Tech Blog
概ね上記サイトの通りに進めたらいいようだったが、Xubuntu14.04の環境では若干うまく行かないところがあった。
nodeにパスを通す際、~/.bash_profileというファイルが見つからなかったので、~/.profileに
if [[ -s ~/.nvm/nvm.sh ]];
then source ~/.nvm/nvm.sh
fi
を追記したが、これでは駄目なようで、ターミナルを起動する度にnvmというコマンドが見つからないと言われる。
どうやら~/.bashrcに追記しないと駄目なようだった。
Ubuntu11.10で、nvmからnode.jsをインストールする - ホワイトぼーど
Hexoをインストールするところで
npm WARN optional dep failed, continuing fsevents@0.2.0
と言われたが、問題なく使えるようだ。
途中うまく行かないので、下記サイトを参考に
curl -sL https://deb.nodesource.com/setup | sudo bash -
sudo apt-get install -y nodejs
とやったりしたが、果たしてこれが必要な操作だったのかどうかは不明。
Installing Node.js via package manager · joyent/node Wiki
しばらく試用してみて良ささそうだったら、Octopressから乗り換えるかもしれない。
DropboxでOctopressのフォルダを同期し、2台目のPCでもrake new_postやrake generateは出来るようになったが、rake deployが出来ない。
gitが入ってなかったのでsudo apt-get install git
し、rake setup_github_pages
でセットアップしたが、
! [rejected] master -> master (non-fast-forward)
とエラーになる。
SSHの公開鍵も設定したのだが。
検索したところ、Octopressで突然deploy出来なくなった時には、Rakefileを編集するという対処法があるらしい。
Octopressでrake deployした際にrejectedされた場合の対処 - Qiita
どうやら強制的にdeployするものらしい。
上記記事の通り、Rakefileの268行目の#
の前に+
を付けて
Bundler.with_clean_env { system "git push origin +#{deploy_branch}" }
にすると、deploy出来た。
元記事によると、deploy出来るようになった後は、Rakefileの編集を元に戻しておいた方がいいらしい。
rake gen_deploy rejected in Octopress - Stack Overflow
いったんdeploy出来るようになったら、その後はRakefileを元に戻してもdeploy出来る。
記事ではoctopress/_deployディレクトリでgit pull origin master
というコマンドを使う回答もあった。
機会があれば今度試してみようと思う。
gitがなんなのかよく分からないが、FTPでアップロードしていた時に較べるとブログの更新も楽だし、スマートな感じがする。
でもほんと、gitってよく分からない。
OctopressのフォルダをDropboxに置くことにしたので、メインで使っているPCではなく古いネットブックにインストールしたXubuntuからDropbox上のOctopressを使えるかどうか試してみた。
だがrake previewしようとしたら、エラーになってしまった。
Octopressを使う環境が整っていないので当然といえば当然。
環境を整えるにあたり、bundle installで行き詰まってしまった。
途中
Installing libv8 (3.16.14.7)
の表示のところで動かない。
フリーズしたのかと思ったが検索したところ、libv8のインストールには時間が掛かるらしい。
確かにCPUの使用率も100%で、頑張ってはいるようだ。
非力なマシンのせいか結局30分くらい掛かったろうか。
もう一度パスワード入力を求められ、その後またtherubyracer (0.12.1)のところで少し時間が掛かったが、ようやくYour bundle is complete!
Octopressを使えるようになった。
ーー
使えるようになったと思ったら、deployが出来ない。
$ rake deploy
cp -r source/images/.gitkeeper public/images/.gitkeeper
## Deploying branch to Github Pages
## Pulling any updates from Github Pages
cd _deploy
cd -
rm -rf _deploy/assets
rm -rf _deploy/atom.xml
rm -rf _deploy/blog
rm -rf _deploy/favicon.png
rm -rf _deploy/images
rm -rf _deploy/index.html
rm -rf _deploy/javascripts
rm -rf _deploy/posts
rm -rf _deploy/robots.txt
rm -rf _deploy/sitemap.xml
rm -rf _deploy/stylesheets
## Copying public to _deploy
cp -r public/. _deploy
cd _deploy
## Committing: Site updated at 2014-11-19 11:02:25 UTC
sh: 1: git: not found
## Pushing generated _deploy website
## Github Pages deploy complete
cd -
拒否はされてないみたいだが、記事を投稿出来ない。
どこに問題があるのか、よく分からない。
generateもやたら遅いし、ちょっとしんどいかな。
ーー
gitがインストールされてない?
ネットブックLaVie LightにDebian Wheezyをインストールした。
ウィンドウマネージャはXfceが好みなので、debian-7.7.0-i386-netinst.isoでインストールする際、”Advanced options” 、”Alternate desktop environments”でXfceを選択した。
ファイルやフォルダを簡単に管理者権限で操作したいので、XfceデフォルトのファイルマネージャーThunarのアクションに「rootで開く」を追加し、gksuもインストールした。
だがrootで開こうとしても、認証画面は表示されるものの、フォルダやファイルを管理者権限で開くことが出来ない。
代わりにNemoをインストールしようとしたら、リポジトリにNemoが無かった。PCManFMも確かrootで開くメニューがあったのでインストールしてみたが、なぜかrootで開くメニューが無い。
困ってしまったが、Ubuntu 12.04 Preciseのリポジトリを追加することで、Nemoをインストール出来た。
echo "deb http://ppa.launchpad.net/noobslab/mint/ubuntu precise main" | sudo tee -a /etc/apt/sources.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F59EAE4D
sudo apt-get update
sudo apt-get install nemo
Ubuntu 14.04 Trustyのリポジトリを入れた方が、Nemoのバージョンが新しくて良いかと思いやってみたが、「壊れたパッケージを修復出来ない」とかでNemoをインストール出来なかった。
それと、Nemoを起動すると、デスクトップ上の右クリックでアプリケーションメニューを表示するのが出来なくなってしまう。
これでは少々不便なので、普段はThunarを使った方が良いかもしれない。
Xubuntu 14.04.1をインストールしたネットブックLaVie Light BL300/T。
有線でのネット接続は問題無いが、無線LANがとても不安定。
頻回に接続が切れて認証を要求されるし、接続も異様に遅い。
Xubuntu 12.04では問題なく使えていたのだが。
どうも無線LANアダプターAtheros製AR9285とドライバーath9kの相性の問題もあるらしい。
ノートPCの無線LANデバイスにて : フレイドフォートonBlog
/etc/modprobe.d内にath9k.confというファイルを作りそこにoptions ath9k nohwcrypt=1
と記載したり、ath9kをロードし直したりしてみたが改善しない。
NdisWrapperでWindows Xp用のドライバーを使えば良いかと思いやってみたが、これも満足に動作しない。
Xubuntu 14.04.1にLinux 3.2や3.8カーネルをコンパイルしてインストールすれば良いのかもしれないが、自分の力量を超えているので断念。
(カーネルのコンパイルをしなくても、Ubuntu 12.04 Preciseのリポジトリを追加してLinux 3.2カーネルをインストールすれば良かったのかもしれない。Debian WheezyにNemoをインストール)
結局Xubuntu 12.04をインストールしそれを14.04.1にアップグレード、起動カーネルをLinux 3.2にすることで無線LANも安定した。
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 3.2.0-58-generic"
古いPCでもLinuxは利用出来ると言われるが、Linuxも新しい機器への対応を進める一方、古いPCは切り捨てられていくのだろうか。
使い勝手はUbuntu派生ディストリに劣るかもしれないが、今度Debian+Xfceも試してみようと思う。
ーー
(追記)
lshwコマンドで見たところ、Xubuntu 12.04(Linux 3.2カーネル)でもAR9285に使われているドライバーはath9kだった。
なぜXubuntu 14.04.1の場合は無線が安定しないのだろう?
「disabling IRQ #9」回避のため、起動オプションに「pci=noacpi」を付けていたからだろうか。
ーー
(再追記)
Xubuntuのアップデートで、カーネルが更新される度にgrubが書き換えられてはかなわないので、/etc/default/grubのパーミッションで、所有者rootのアクセス権が「読み書き」だったのを「読み込み専用」にした。
変更が必要な時はまたアクセス権を変更しないといけないが、これで意図に反してgrubが書き換えらるのを防ぐことが出来る。
NECのネットブックLaVie Light BL300/TにXubuntu14.04.1を再インストールした。
以前もXubuntu14.04.1をインストールしたがその時はdisabling IRQ #9
でインストールDVDを起動出来ず、いったんXubuntu13.04をインストールしてから、その後Xubuntu14.04.1にアップグレードしていた。
だが、起動オプションにpci=noacpi
を加えれば、Linuxカーネル3.13.0-39でも起動出来るようだったので、起動オプションを付けてXubuntu14.04.1をインストールした。
Xubuntu14.04.1のインストールDVDを入れ、起動後「shift」キーを押し続けてオプションを表示。言語を日本語にした後「F6」キーで「その他のオプション」を表示。acpi=off
、noapic
、nolapic
、edd=on
、nodmraid
、nomodeset
等の起動オプションが選択出来るが、なにも選ばず「ESC」キーで選択画面を終了。(acpi=off
では解像度が800×600に固定されてしまい、他のオプションではdisabling IRQ #9
でインストールDVDを起動出来ない。)
下部に「起動オプション」の欄があり、キーボードで任意にオプションを入力出来るので、quiet splash --
に続けてpci=noacpi
と入力し「ENTER」で起動。
問題なくXubuntu14.04.1をインストール出来た。
インストール後再起動すると、/etc/default/grubの
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
の下にちゃんと
GRUB_CMDLINE_LINUX_DEFAULT="pci=noacpi"
の記載が加わっている。
Xubuntuの前にLubuntu14.04.1も試してみたが、確かにXubuntuに較べて動作はやや軽いような気はした。
だがLubuntuソフトウェアセンターというのが検索も出来ず使いづらいし、お気に入りアプリケーションの登録も不便だったりと、カスタマイズの容易さではXubuntuに劣るようだ。
花の色はうつりにけりな
いたづらにわがみ世にふる ながめせしまに
(古今和歌集 小野小町)