Rails の勉強がてら日本語練習帳の問題の採点アプリを作ってみる

Rails に触ったことがなかったけど、仕事で使うことになったので勉強しましょう、と。
いつも何を作ろうか悩んで作れないでいるけど、たまたま読み始めた日本語練習帳に、問題・課題と採点表があったので、採点アプリを作ってみることにしました。

日本語練習帳 (岩波新書)

日本語練習帳 (岩波新書)

まずはRailsアプリケーションを作成して、Gitで使えるようにして、Heroku にデプロイする。
http://d.hatena.ne.jp/nobyu/20100207/1265531331を参考にさせて頂きました。

$ rails nihongo-renshu-cho
Usage:
  rails new APP_PATH [options]

new を付けろと怒られた。

$ rails -v
Rails 3.1.2

rails のバージョンを確認してみたら 3.1.2 だった。
コマンドが変わったんですね。

$ rails new nihongo-renshu-cho

とやったらいろいろ作られて、

Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

まで出ればスケルトンの作成完了。

続いてGitリポジトリの作成とコミット。

cd nihongo-renshu-cho
git init
git commit -a -m "とりあえずスケルトンのコミット"

そしてHerokuに登録。

$ heroku create nihongo-renshu-cho
Creating nihongo-renshu-cho... done, stack is bamboo-mri-1.9.2
http://nihongo-renshu-cho.heroku.com/ | git@heroku.com:nihongo-renshu-cho.git
Git remote heroku added

あーんどデプロイ。

$ git push heroku master
Counting objects: 63, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (48/48), done.
Writing objects: 100% (63/63), 25.37 KiB, done.
Total 63 (delta 2), reused 0 (delta 0)

          • > Heroku receiving push
: (省略) :
          • > Launching... done, v4
http://nihongo-renshu-cho.heroku.com deployed to Heroku To git@heroku.com:nihongo-renshu-cho.git * [new branch] master -> master

とりあえずHerokuにデプロイ出来るところまで準備が出来ました。
さてと、あとはどんなアプリにするかを考えましょうっと。

さくらVPSにETロボコン開発環境を構築する(Ubuntuインストール〜Trac構築)

OSのインストール

Ubuntu にすることにしたのでオンラインマニュアルの手順に従ってインストール

また、下記の方の記事を参考にセキュリティ設定。

sshd の設定

ポート番号を22から変更し、ルートでのログインを許可しないようにした。
ただし、パスワード認証は許可(そのまま)。

sudo vi /etc/ssh/sshd_config
 - Port 22
 + Port xxxx(適当な番号)

 - PermitRootLogin yes
 + PermitRootLogin no
ufwの設定

とりあえずssh以外は塞ぐ。

sudo ufw default deny
sudo ufw allow xxxx
sudo ufw enable
ロケールを日本に変更
sudo locale-gen ja_JP.UTF-8
sudo update-locale LANG=ja_JP.UTF-8
メンバのアカウント追加
sudo addusers xxx

Tracのインストール

参考

もろもろのインストール。

python-subversionpython-setuptools は入っていた。

sudo apt-get install apache2
sudo apt-get install trac
sudo apt-get install trac-ja-resource
sudo apt-get install libapache2-mod-wsgi

0.11.7-1 がインストールされた。

apt-cache showpkg trac
Package: trac
Versions:
0.11.7-1 (/var/lib/apt/lists/jp.archive.ubuntu.com_ubuntu_dists_lucid_universe_binary-i386_Packages) (/var/lib/dpkg/status)
テスト用のプロジェクト作成
sudo mkdir /var/svn/
sudo svnadmin create /var/svn/testrepos
sudo mkdir /var/www/trac/
sudo trac-admin /var/www/trac/testrepos initenv

デフォルトじゃなくて設定したのは2つ。

  • Project Name [My Project]> TestProject
  • Path to repository [/path/to/repos]> /var/svn/testrepos

あと、/var/www/tracapache で動くようにオーナーを変更

sudo chown -R www-data:www-data /var/www/trac

Apache の設定

Ubuntu は /etc/apache2/httpd.conf に直接書かない流儀とのことで、次のようにして設定。

sudo vi /etc/apache2/sites-available/trac
sudo ln -s /etc/apache2/sites-available/trac /etc/apache2/sites-enabled/010-trac

/etc/apache2/sites-available/trac の中身はこんな感じ

cat /etc/apache2/sites-available/trac
ScriptAlias /trac /usr/share/trac-ja-resource/cgi-bin/trac.cgi

  SetEnv TRAC_ENV_PARENT_DIR "/var/www/trac"

ログイン認証の設定
sudo mkdir /var/trac
sudo htdigest -c /var/trac/.htdigest trac admin
sudo htdigest /var/trac/.htdigest trac [username]

先ほど作った /etc/apache2/sites-available/trac に追加する。


    LoadModule auth_digest_module /usr/lib/apache2/modules/mod_auth_digest.so
    AuthType Digest
    AuthName "trac"
    AuthDigestDomain /trac
    AuthUserFile /var/trac/.htdigest
    Require valid-user

ポート80を開けてapache再起動。
sudo ufw allow 80
sudo /etc/init.d/apache2 restart

Tracの設定

anonymous ユーザーは閲覧以外許可しないよう変更。

sudo trac-admin /var/www/trac/testrepos permission remove anonymous  REPORT_DELETE WIKI_CREATE WIKI_MODIFY REPORT_SQL_VIEW TICKET_APPEND TICKET_CHGPROP TICKET_CREATE TICKET_MODIFY

全権限を持つTracユーザーを追加。

sudo trac-admin /var/www/trac/testrepos permission add admin BROWSER_VIEW CHANGESET_VIEW CONFIG_VIEW FILE_VIEW LOG_VIEW MILESTONE_ADMIN MILESTONE_CREATE MILESTONE_DELETE MILESTONE_MODIFY MILESTONE_VIEW REPORT_ADMIN REPORT_CREATE REPORT_DELETE REPORT_MODIFY REPORT_SQL_VIEW REPORT_VIEW ROADMAP_ADMIN ROADMAP_VIEW SEARCH_VIEW TICKET_ADMIN TICKET_APPEND TICKET_CHGPROP TICKET_CREATE TICKET_MODIFY TICKET_VIEW TIMELINE_VIEW TRAC_ADMIN WIKI_ADMIN WIKI_CREATE WIKI_DELETE WIKI_MODIFY WIKI_VIEW

wikiを日本語ページに

sudo trac-admin /var/www/trac/testrepos/ wiki load /usr/share/trac-ja-resource/trac/wiki/default-pages/
sudo cp /usr/share/trac-ja-resource/trac/templates/* /var/www/trac/testrepos/templates/

動作確認

http://ホスト名/trac にアクセスするとプロジェクト一覧が表示される。

TestProject をクリックして移動してみると

(please configure the [header_logo] section in trac.ini)

などと出てくるので、ロゴを適当に引っ張ってきて設定。

sudo cp /usr/share/trac-ja-resource/trac/htdocs/trac_banner.png /var/www/trac/testrepos/htdocs/
sudo vi /var/www/trac/testrepos/conf/trac.ini

 [header_logo]
 alt = (please configure the [header_logo] section in trac.ini)
 height = -1
 link =
 src = site/trac_banner.png
 width = -1

とりあえず動いたので今日はここまで。

VAIO type P(VGN-P90HS) に Ubuntu 10.10 を入れる

http://blog.goo.ne.jp/minoh_edubuntu/e/0d14e8d867a8c4ab529ae85f517fb75eを参考にインストールしました。

ずっと以下のエラーが取れなくて困っていたのですが、こんな記事があり、BIOSを更新したらあっさり行けました。
# BIOSバージョンR2073U3で起動を確認。

Busy Box v1.15.3 (Ubuntu 1:1.15.3-1ubuntu5) built-in shell (ash)
Enter 'help' for a list of built-in commands.
(initramfs) Unable to find a medium containing a live file system

※dmesg で見るとこんなの

ehci_hcd 0000:00:1d.7: unlink after no-IRQ? controller is probably using the wrong IRQ

やこんなの

USB device not accepting address error -110

が出てた。

インストール

  1. UNetbootin で起動用のUSBメモリを作成
  2. Fn11を押してUSBから起動
  3. Tab を押してGrubの起動パラメーターに以下を追加
xforce=vesa memmap=1K#0x7f800000

なお、ACPI=OFF の設定は不要でした。
memmapについての解説はこちらhttp://ubuntuforums.org/showpost.php?s=f0758c756ebdfcca785b26e4afe714b5&p=9969379&postcount=22

あとは普通に〜。

追加で入れる物

HardwareSupportComponentsVideoCardsPoulsbo - Ubuntu Wiki

  1. GMA500ドライバ

そのままだと画面描画が遅くてどうしようもないので、これは必須。
あと、これを入れるとサスペンドから復帰した時にXが死ぬ問題も解決する。

sudo add-apt-repository ppa:gma500/ppa
sudo apt-get update
sudo apt-get install poulsbo-driver-2d poulsbo-driver-3d poulsbo-config

Ubuntu 10.04 Server on VMware

環境

インストール

http://www.ubuntu.com/server/get-ubuntu/download からダウンロードしてインストール
インストール完了後、以下のコマンドを実行してアップデートする

# sudo apt-get update
# sudo apt- get upgrade

日本語配列のキーボードを使えるようにする

デフォルトだと英語配列なので、日本語配列にする。

sudo apt-get install console-data

[Select keymap from arch list]->[qwerty]->[Japanese] の順に選択することで、日本語配列として認識されるようになった。

日本語が使えるようにする

以下のコマンドで Japanese Teamのパッケージレポジトリを追加する。

wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -
wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add -
sudo wget https://www.ubuntulinux.jp/sources.list.d/lucid.list -O /etc/apt/sources.list.d/ubuntu-ja.list
sudo apt-get update
sudo apt-get upgrade

[System]->[Administrator]->[LanguageSupport] をクリック
[Install / Remove Languages] をクリック
Japanese の installed をチェックして [Apply] をクリック

iBus は使いづらいみたいなので、SCIM を入れてみる

[System]->[Administrator]->[Synaptic Pacage Manager] をクリック
Quick search に scim-anthy と入力してパッケージ
見つけ、インストールする。
[System]->[Preferences]->[SCIM Input Method Setup] をクリック
適当に設定。

telnet/ssh 接続出来るようにする

VMwara の簡単インストールだと ssh が入っていないらしく接続出来ないので、追加でインストールする。

apt-get install ssh

Git を使えるようにする

Git があるかなー、と思って

git

とやったら親切にインストールされていないことと、インストール方法を教えてくれた。
以下の方法でインストール。

sudo apt-get install git-core

VMware に Puppy Linux 4.31 をインストールする

VMの作成

HDDはデフォルトのiSCSIだとpuppyが認識しない。
IDEで作り直しておく。

isoイメージから起動

キーボードは、HHKなのでUSAを選択。
X server は Xvesa を選択。

個人設定

画面サイズは1024*768
[デスクトップ]→[設定]→[インターネット/LAN接続の設定]→[ネットワーク又は無線LANでインターネット]を選択
eth0 を使えるようにする。

HDDへインストール

GParted でパーティション作成
swap に 512MB 割り当てて、残り7.5GBをルート用に
[デスクトップ]→[インストール]→[ユニバーサルインストーラを実行するには、このボタンをクリックしてください]を選択
内蔵ハードディスクを選択
パピーを sda2 にインストールをクリック
パピーファイルはどこにありますか?と聞かれるので、「CD」を選択
インストール方法を聞かれるので、「FRUGAL」を選択
GRUB の設定内容が /tmp/NEWGRUBTEXT に出力される

GRUBのインストール

[メニュー]→[システム]→[Grubブートローダの設定]を選択
simple でインストール
GRUBファイルの置き場所を /dev/sda2 で設定
/tmp/NEWGRUBTEXT の設定を /mnt/sda2/boot/grub/menu.lst に追加

個人保存ファイルの設定

再起動すると、保存するかを聞かれるので、指示にしたがって設定する。
そうすると、キーボードや画面サイズやネットワーク設定を覚えてくれる。

VMware tools のインストール

なんか上手くいかないのでそのうち・・・。

VAIO type P + Ubuntu 10.04 の環境構築

VAIO type P に入れた Ubuntu の環境構築編。

画面描画を改善する

デフォルトだととにかく画面描画が遅すぎるので、GMA500ドライバをインストール。
(輝度調整が Fn + F5/F6 でできるようになる。)

sudo add-apt-repository ppa:gma500/ppa
sudo apt-get update
sudo apt-get install poulsbo-driver-2d poulsbo-driver-3d poulsbo-config
sudo vi /etc/default/grub
# GRUB_CMDLINE_LINUX_DEFAULT="quiet splash mem=2000mb"
# を設定する。上記のGMA500チームのページには、acpi_osi=Linux も指定するように書かれているが、EeePC用なので設定しない。
sudo update-grub
ログイン時のデフォルトセッションを変更する

再起動してログオンすると、真っ白な画面になってしまった。
原因はこのドライバは3D未対応なのに、Netbook Edition のデフォルトセッションは、3Dを使っているため。
対策として、Netbook 2D でログインするように変更する。
[システム]→[ログイン画面の設定] を選択し、「Ubuntu Netbook Edition 2D」をデフォルトセッションに設定。
ただ、これだと上下にパネルが出てたりで邪魔なのでパネルをカスタマイズする。

HHKっぽいキーボード配置にする

Ctrl キーの位置だけなら、[システム]→[キーボード]→[レイアウト]→[オプション]から「Swap Ctrl and CapsLock」にすることで出来るけど、HHK っぽくするために、窓使いの憂鬱をインストールする。

  1. http://members.at.infoseek.co.jp/hattoushin_uma/から適当なところにダウンロード
  2. いつもどおり展開→configure→make→インストール

    configure すると色々足りないと言われるので、g++ と boost 関連を入れておくこと。

    tar xvzf mayu-0.11.tar.gz
    cd mayu-0.11/
    sudo apt-get install g++ libboost-all-dev
    ./configure
    make
    sudo make install
    

  3. uinput のロード

    uinput がロードされていないと mayu は動かないので、README にある通りロードする。

    sudo modprobe uinput
    

    また、起動時にロードするよう、/etc/modules にも追加する。

    sudo vi /etc/modules
    # uinput
    # の行を追加する
    

  4. 起動スクリプトの作成

    よく分からないまま、Ubuntu で窓使いの憂鬱使う方法 - 地獄のネコブログスクリプト内の USER を書き換えて登録。

    sudo vi /etc/init.d/mayu
    # スクリプトは参考サイト参照
    sudo chmod +x mayu
    sudo update-rc.d mayu start 10 2 . stop 10 0 1 3 4 5 6 .
    

  5. 設定ファイルの作成

    ホームディレクトリに .mayu という名前で設定ファイルを作成。
    元々 Windows で使っていた設定を流用した。

    include "linux104.mayu"
    keymap Global
    
    #like HHK
    #mod key
        #LAlt key -> Mod0
        mod Alt  -= LAlt
        mod Mod0  = LAlt
        key *LAlt = &Ignore
        
        #LWin key -> Alt
        mod Windows -= LWin
        mod Alt     += LWin
        key *LWin    = *LAlt
    
    #move key
        key M0-*K                   = *Home
        key M0-*Comma               = *End
        key M0-*L                   = *PageUp
        key M0-*Period              = *PageDown
        key M0-*Semicolon           = *Left
        key M0-*Apostrophe          = *Right
        key M0-*LeftSquareBracket   = *Up
        key M0-*Slash               = *Down
    
    #function key
        key M0-*_1          = *F1
        key M0-*_2          = *F2
        key M0-*_3          = *F3
        key M0-*_4          = *F4
        key M0-*_5          = *F5
        key M0-*_6          = *F6
        key M0-*_7          = *F7
        key M0-*_8          = *F8
        key M0-*_9          = *F9
        key M0-*_0          = *F10
        key M0-*Minus       = *F11
        key M0-*Equal       = *F12
        key M0-*BackSlash   = *Insert
        key M0-*BackSpace   = *Delete
    

  6. 再起動

    再起動して動作を確認する。

トラックポイントでスクロール出来るようにする

sudo vi /usr/lib/X11/xorg.conf.d/15-vaio.conf

で以下を設定。

Section "InputClass"
  Identifier "Trackpoint Wheel Emulation"
  MatchProduct "PS/2 Generic Mouse"
  MatchDevicePath "/dev/input/event*"
  Driver "evdev"
  Option "EmulateWheel" "true"
  Option "EmulateWheelButton" "2"
  Option "Emulate3Buttons" "false"
  Option "XAxisMapping" "6 7"
  Option "YAxisMapping" "4 5"
EndSection

日本語ディレクトリ名を英語にする

$ LANG=C xdg-user-dirs-gtk-update

再起動した時にロケールに合わせるか?と聞かれないよう、「次回以降尋ねない」にチェックを入れておく。

サスペンド/ハイバネーションを出来るようにする(未)

現状ではサスペンド/ハイバネーションからの復帰が出来ない。
以下のようにしてみたけどNG。

sudo vi /etc/default/grub
# GRUB_CMDLINE_LINUX=”nomodeset”
# を設定する。
sudo update-grub

サスペンドからの復帰に失敗したあと、強制終了させて再起動すると無線LANが無効にされているようなので、サスペンドの設定がおかしそう??