君は牛を二頭持っている

ウェブエンジニアのブログ。はてなブログ以外のブログサービスいろいろ探し中

Amon2でブログを作成するまで(設計編)

前:
Amon2でブログを作成するまで(環境構築) - 君は牛を二頭持っている
ギッハブ:https://github.com/AKdozum/Amon2_blog

このあたりから,公式のチュートリアルを大いに参考にしてます
http://amon.64p.org/bbs_tutorial.html

DBとか設計する感じです

作りたいもののおさらい

  • ログイン機能があって(面倒なのでTwitter認証にする)
  • 日本語の文字列を投稿できて
  • 後から編集とか削除出来て
  • コメントも付けられる

ブログ的なもの(検索は作らない)

DB

一応今のところこんな感じですが,もしかすると変わるかもしれません

PRAGMA foreign_keys=ON; #https://www.sqlite.org/foreignkeys.html
CREATE TABLE IF NOT EXISTS member (
id INTEGER NOT NULL PRIMARY KEY,
name VARCHAR(255)
);

CREATE TABLE IF NOT EXISTS entry (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
body TEXT not null,
created DATETIME,
FOREIGN KEY(id) REFERENCES member(id)
);

CREATE TABLE IF NOT EXISTS comment (
id INTEGER NOT NULL PRIMARY KEY,
name VARCHAR(255),
body TEXT not null,
created DATETIME,
FOREIGN KEY(id) REFERENCES entry(id)
);

これをsql/sqlite.sqlに保存して

sqlite3 db/development.db

で,開発環境用のDBをセットアップ完了

API設計

backbone.jsとか見てると,最近はPUTとかDELETEとかのHTTPのメソッドで分けるのが良いのかな?とか思うけど,Amon2のソースぱっと見たところ,PUTが対応してるのかどうかよく分からなかったので,POSTとGETで以下のような感じに.

  • 閲覧 GET /entry/[id]
  • 投稿 POST /entry/post
  • 編集 POST /entry/edit/[id]
  • 削除 POST /entry/delete/[id]
  • コメント投稿 POST /comment/post
  • コメント削除 POST /comment/delete/[id]

実装の前に

テストを書かないといけないので,Amon2でのテストのやり方を調べて次に書きます

Amon2でブログを作成するまで(環境構築)

前:Amon2でブログを作成するまで(前提の話) - 君は牛を二頭持っている
ギッハブ:https://github.com/AKdozum/Amon2_blog

本記事,ご確認頂きたく

環境とか

ステップ1 cpanmインストール

  • cpanm(App::cpanminus)とは

Perlのパッケージ管理ツールのcpanを色々便利にしたり綺麗な設計にしたりしたやつ.つよい
どれぐらいつよいかと言うと

    • cpanに比べて速いらしい
    • cpanに比べて省メモリらしい
    • cpanは外部モジュールに依存しまくってるが,cpanmはそうでもないらしい

らしいです

  • インストール方法

curl -L http://cpanmin.us | perl - --sudo App::cpanminus

sudoを使わずにユーザのディレクトリにインストールすることもできます.
これだけ

Amon2のインストール

cpanm Amon2 -n

  • -nオプションの意味

cpanmがモジュールをインストールする前に行うテストをスキップするように指示します.
テストもスペックしょぼいとそれなりに遅くなる + 今回はテストが一部通らないモジュールがあったので,やむなくスキップします.
製品開発時には,テスト通らなかったモジュールがある場合どうするんだろう.やはり自分でパッチ当てるしかないのかな.つらそう.

Cartonのインストール

Rubyのgemsみたいな感じで,アプリケーションが必要とするモジュール郡を全部インストールしてくれるツールです.

cpanm Carton

アプリケーションのセットアップ

amon2-setup.pl blog(アプリケーション名)

これでアプリケーションのディレクトリと,必要なファイル一覧が展開されます
そのディレクトリに移動して

carton install

で多分大丈夫なはず.

起動確認

アプリケーションのディレクトリで

carton exec perl -Ilib script/blog-server

で起動して,localhost:5000にアクセスして表示されればOK,されなければエラーメッセージを見て逐次対応しましょう.
ちなみに僕は,Xslate(テンプレートエンジン)がホームディレクトリ直下の作業ディレクトリでpermissionで弾かれるよ!って言われました.
なんかroot権限でディレクトリが作成されてたのでchmodガッとすれば通りました.

- 以上 -

Amon2でブログを作成するまで(前提の話)

作業状況はGitHubに随時pushしてます
https://github.com/AKdozum/Amon2_blog

春休み入って,少しだけ時間ができたのでAmon2でちょっとしたブログを作ってみます

Amon2 is 何

Perlで実装されたWAF(Web Application Framework)です.
公式サイト:http://amon.64p.org/
特徴とかはよく分からんけど,ドキュメントちょっと見た感じ,機能が色々ありそう.

作りたいもの

名前:ブログ
機能(優先度順):

  • 記事の投稿
  • 記事の編集
  • 記事の削除
  • XSS対策
  • コメント機能
  • ユーザ認証

その他:AngularJSとか使いたいけど、今回は最低限の機能の実装だけでフロントエンドは全く触らない感じで行く予定

参考文献

卒業論文を発表しました

卒業エントリ書きたかったけど、まだ結果分からないので書けなかったし,近況報告的な内容.
今日は,朝から異常な降雪にも関わらず,9時から卒論発表会があったので,頑張って発表してきた.
一つの区切りとして,やっぱり人前で成果を話すって言うのは良い機会だったけど,結局7分間にまとめ切れなかった部分に関しては非常に後悔が残った.
今後は,渋谷近辺の部屋探し,引っ越し,信学会の総合大会(3月21日発表で,19日午後から新潟に居ます)の3つのタスクが残ってるので,総合大会に向けて,今回の反省十分に活かしていきたい.
全く技術関係なかったけど,多分休み中はしばらくそういう話増える気がする.

2014年の抱負、その他予定とかメモとか

早くも2014年開始から2週間が経とうとしていますし、この3連休はこういうの書く最後のチャンスだと思うので

抱負

いくつかあるので、まだ具体化させていない抽象的なものから順番に

  • 新しい環境で,常に挑戦を忘れないでいきたい

研究室では今まで触ったことのない分野をテーマにしたし,環境が大幅に変わってもビクビクしないで積極的に
チャレンジします.特にITとは関係ない部分での挑戦を増やしていかないとなあと思ってます

  • アウトプットの機会をもっと自分で作る

学習,訓練の一環としてアウトプットしないとという気持ちと,色々な場で自分の知識を共有していくと新しい出会いにも繋がって良いというイメージ

  • 一人暮らしの基盤を固める

今年4月から初一人暮らしが始まるので,仕事と並行して東京での暮らしに早く慣れると嬉しい

まだ取ってないです。春か秋かに取ります

  • Androidの位置情報取得機能使ってみる

本当は去年の夏ぐらいにやりたかった(結局卒検が進まなくてできなかった).
精度がどのくらい出るのか確かめてみて,サービスの中で活用する時に出てくる諸問題を確認しておく

大雑把な予定

  • 2週間後までに

卒論のベータ版書きます

  • 3週間後までに

卒論提出 & 発表スライド作成

  • 2ヶ月後までに

東京に引越し完了(ネット環境に関してはまだ未調査)

  • 3ヶ月後までに

とりあえず東京で健康を第一目標に,ウェッブエンジニャーとして活動開始する

メモ

Amon2,良い

最後に

4月から就職します。東京行くのでみなさん仲良くして下さい
一人暮らしするにあたって,「こういうのあったらいいよ!!」的なアドバイス超待ってます