Hatena::ブログ(Diary)

ITとともに生きよう

2012-12-31

CentOS リポジトリ 追加

覚書のための記述です。CentOS6.2 x86_64で行っています。

追加するリポジトリ

EPELRPMforge

参考にしたページ

RPMforgeリポジトリ導入(RPMforge)

CentOS 外部レポジトリの追加(EPEL)

手順

  1. yum-prioritiesのインストール
  2. rootで以下のコマンドを実行してインストールします。
    yum -y install yum-priorities 
    
  3. すでにyumに設定されているCentOSデフォルトリポジトリの優先度をもっとも優先に設定しておきます。
  4. 完成イメージとしては、CentOS-Baseを1または2、EPELを3、RPMforgeを4とします。 CentOS-Base.repoに設定を追加します。
    vi /etc/yum.repos.d/CentOS-Base.repo
    
    CentOS 外部レポジトリの追加(EPEL) にしたがって以下のように設定します。
    [base]
    priority=1
    [updates]
    priority=1
    [addons]
    priority=2
    [extra]
    priority=2
    [centosplus]
    enabled=1
    priority=2
    [contrib]
    enabled=1
    priority=2
    
    priorityは各要素の最後に追加し、enabledはすでにある要素を変更します。
  5. EPELの導入
  6. 下記リンクにアクセスしてインストールするRPMを確認します。
    http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/5/x86_64/ epel-release-X-X.noarch.rpmインストールします。探してクリックすると「インストールしたいですか?」と聞いてきますので、「はい」でインストールします。 インストール後、yum-prioritiesの設定を変更します。
    vim /etc/yum.repos.d/epel.repo
    
    CentOSbaseと同じように以下のように設定します。
    [epel]
    enabled=1
    priority=3
    
    おそらく、enabledは設定されているはずです。priorityはブロックの最後に追加します。
  7. RPMforgeの導入
  8. 続いてRPMforgeを導入します。以下のリンクから最新版を確認します。
    http://pkgs.repoforge.org/rpmforge-release/ ファイルはrpmforge-release-0.X.X-X.el6.rf.x86_64.rpmです。EPELと同様にクリックでインストールできます。 EPELと同様にyum-prioritiesの設定を変更します。
    vim /etc/yum.repos.d/rpmforge.repo
    
    以下のように設定します。
    [rpmforge]
    enabled=1
    priority=4
    

おわり

とりあえずこれで使っていこう。

2012-12-18

Groovy で はてなダイアリー 書く Gradle で 準備する #gadvent2012

G*な皆さん、こんにちは!
G* Advent Calendar 2012、12/19担当の@nightmare_timです。前日は、@hideokuさんの、 Geb で JavaScript のテストをしてみた #gadvent2012でした^^
今年は、6月に転職という大きな波をくぐり抜け、やっと生活が落ち着いてきた感じがあります。ばたばたは相変わらずですけども、こうやってG* Advent Calendar 2012に参加できるのもうれしく思います。では、始めます。

今回のテーマ

今回のテーマは、 Groovyはてなダイアリーを書く」です。ぶっちゃけ言うと、ただ HTMLBuilderを使ってHTMLを生成するだけなんですが(^^;本当はHatenaAPIとかを使って自動でアップデートまでやりたいとこですが、まずはコードで原文書いてそれをGitやMarcurialで管理したいのもあって、ローカルで作成手順を作りました。
きっかけは、以前行われた SCMBC NAGOYAの時に、@irofさんが言われていた 「Groovistだったら閉じタグのHTMLなんか面倒でしょ?」という発言をお聞きして、「ほう」と思ったことが始まりです。(もう8カ月も前の話xx)それまではてなダイアリーも普通にHTMLで書いていたので、「それだったらGroovyで書くかな」と思いはじめ始めました。
実際に最近は全てこの形式で書いていますので、その書き方を紹介します。後でその準備と、HTML作成してコピペベースを作るGradleスクリプトを紹介します。

GroovyHTMLを書くHTMLBuilder

まず記述する時の書式を説明します。参考にしたのは@fumokmm(id:fumokmm)さんの記事 MarkupBuilderでHTML生成を試してみた です。
ヘッダー情報等の決まった構文部
以下の様に記述します。
import groovy.xml.MarkupBuilder      

def writer = new File('作成するファイル.html').newPrintWriter('UTF-8')
def html = new MarkupBuilder(writer)
html.doubleQuotes = true

html.html{
body{
//本文
}
}
本文
プレーンな記述は、以下のように書きます。
mkp.yield('プレーンな記述は、以下のように書きます。');
全てこの形で囲うようにしてください。このmkp.yieldで渡された文字列はすべて平文としてHTML内に配置されます。
色付き文字
こういった文字を書くには
font(color:'#00AA00','こういった文字を書くには');
リンク
G* Advent Calendar 2012
a(href:'http://atnd.org/events/34317’,’G* Advent Calendar 2012');
箇条書き
  • りんご
  • みかん
  • ぶどう
ul{      
li{mkp.yield('りんご');};
li{mkp.yield('みかん');};
li{mkp.yield('ぶどう');};
}
表組み
果物 価格
りんご 100
みかん 30
ぶどう 150
table(border:'1'){      
tr{th('果物');th('価格');}
tr{td('りんご');td('100');}
tr{td('みかん');td('30');}
tr{td('ぶどう');td('150');}
}
pre要素
個人的にはこれが一番 面倒です。上述の表組みのソースを示すpre要素の記述はこうなります。
pre{      
mkp.yield('table(border:\'1\'){');br();
mkp.yield(' tr{th(\'果物\');th(\'価格\');}');br();
mkp.yield(' tr{td(\'りんご\');td(\'100\');}');br();
mkp.yield(' tr{td(\'みかん\');td(\'30\');}');br();
mkp.yield(' tr{td(\'ぶどう\');td(\'150\');}');br();
mkp.yield('}');
}
pre要素の中に、mkp.yieldで囲った文章を列挙し、brもつける必要があります。また、 シングルクォーテーションやダブルクォーテーションはバックスラッシュでエスケープする必要があります。
ヘッダー要素
h5('ヘッダー要素')

注意点

  • 改行をしっかり入れる

  • はてなダイアリーは文章の改行コードをしっかり理解してくれるので、それに頼るとレイアウトがよく分からなくなりますので、改行はbrをしっかりつかいましょう。以下のメソッドを使います。
    br();
  • 閉じ中括弧の後に書かない

  • 意外にやってしまいますが、これはコンパイルエラーにならずにRuntimeExceptionになります。
        }br();    //エラーになります

記事全体

当記事の全体をgistに上げておきます。
ファイル全体

ビルド

HTMLと違ってGroovyコードは実行してHTMLコードを出力します。構文間違いなどはコンパイルエラーとして吐き出してくれるので、間違いが少なくなるのは間違いないのですが、やっぱり何度もやるのは骨が折れます。そこで Gradleさんの出番ですね!
行いたいこと
  • 決まった構文が入ったGroovyファイルを用意する。
  • (手動で)HTMLBuilderを使って本文を書く。
  • Groovyを実行してHTMLファイルを作成する。
  • 作成したHTMLファイルの改行を取り除く
  • チェック用のhtml要素とbody要素を抜いたコピペ用を作る。
作成したスクリプト
長くなりそうなので、リンクと使い方だけ説明しておきます。
作成したGradleスクリプトのbitbucket:Mercurialリポジトリ
上記リポジトリクローンしてください。クローンすると以下のようなGradleスクリプトができます。
└── hatenadiarymakescript      
├── build.gradle
└── gradle_mkdir.gradle
以前作成した Gradle 標準ディレクトリ構造 自動作成をここでも使用しています。ただし、build.gradleの外部参照として定義してあります。手順は以下の様になります。
  1. GradleにGroovyファイルを準備させる。
  2. gradle ready
    これで、GradleのGroovy標準ディレクトリ構成が作成され、hatenadiary.groovyファイルが準備されます。すでに決まった構文部は記述された状態になります。
  3. 本文を書く
  4. もちろん、手動です^^
  5. Groovyの実行、改行の除去、チェック用HTMLコピペ用ファイルを生成する。
  6. gradle hdmake
    Gradleが自動で実行、改行の除去、コピーの作成を行ってくれるので、ビルドが成功すると以下のようなファイルができるはずです。
    hatenadiary.html    hatenadiary.hd
    htmlファイルがチェック用HTML、hdファイルがコピペ用のファイルです。どちらも改行コードは抜けています。htmlファイルをブラウザで確認し、良ければ、hdファイルの内容をコピーして、はてなダイアリーにはってください。単純なHTMLですので、はてなブログにも問題なく使用できると思っています。 ※実行確認はLinuxで行っています。
タスクはもちろん以下のコマンドでも確認できます。
gradle tasks
特に、gradle hdmakeをこまめに実行して確認していくと、バグやエラーを発見しながら書いていく事ができます。

課題

今のところこれらは手動で…

まとめ

Gradleスクリプトはケーススタディのために別で記事にしようと思います。次は@bikisukeさんですね^^楽しみです!今年もあっという間でしたが、皆さん、よいお年をお過ごしくださいm(_ _)m

Connection: close