2014年6月30日

2014年6月30日の出来事

本日は

  • システム開発
を行いました。

開発が一つ終わり、新たな開発を行っています。
忙しくてありがたい。

Ubuntu Server 14.04 インストールログ

Ubuntu Server 14.04 をインストールした場合の備忘録です。
インストール方法で Ubuntu Server 13.10 からの変更はありません。

  1. ディスクを入れて起動します。
    以下のようなインストーラーの表示言語選択画面になるので、「日本語」を選択し、Enterキーを押下します。
    押下するとインストール方法の選択画面に移動します。

  2. インストール方法の選択画面に移動したら、
    以下のような「Ubuntu Serverをインストール」を選択し、Enterキーを押下します。
    押下すると「Select a language」の画面に移動します。

  3. 「Select a language」の画面に移動したら、
    「はい」を選択し、Enterキーを押下します。
    押下すると「場所の選択」の画面に移動します。

  4. 「場所の選択」画面に移動したら、
    「日本」を選択し、Enterキーを押下します。
    押下すると「キーボードが由来する国」画面に移動します。

  5. 「キーボードの設定」画面に移動したら、
    「日本語」を選択し、Enterキーを押下します。
    押下すると「キーボードのレイアウト」画面に移動します。

  6. 「キーボードのレイアウト」画面に移動したら、
    「日本語-日本語(OADG 109A)」を選択し、Enterキーを押下します。
    押下すると「ネットワークの設定」画面に移動します。

  7. 「ネットワークの設定」画面に移動したら、
    ホスト名を入力して(ここでは、ホスト名を「ubuntu」としています。)、
    「続ける」を選択し、Enterキーを押下します。
    押下すると「新しいユーザの本名(フルネーム)」画面に移動します。

  8. 「新しいユーザの本名(フルネーム)」の画面に移動したら、
    自分の名前を入力して(ここでは、自分の名前を「username01」としています。)、
    「続ける」を選択し、Enterキーを押下します。
    押下すると「あなたのアカウントのユーザ名」画面に移動します。

  9. 「あなたのアカウントのユーザ名」画面に移動したら、
    アカウントユーザ名を入力して(ここでは、アカウントユーザ名を「account01」としています。)、
    「続ける」を選択し、Enterキーを押下します。
    押下すると「新しいユーザのパスワードを選んでください」画面に移動します。

  10. 「新しいユーザのパスワードを選んでください」画面に移動したら、
    パスワードを入力して、「続ける」を選択し、Enterキーを押下します。
    押下すると「確認のため、再度パスワードを入力してください」画面に移動します。

  11. 「確認のため、再度パスワードを入力してください」画面に移動したら、
    再度パスワードを入力して、「続ける」を選択し、Enterキーを押下します。
    押下すると「ホームディレクトリを暗号化しますか?」画面に移動します。

  12. 「ホームディレクトリを暗号化しますか?」画面に移動したら、
    「いいえ」を選択し、Enterキーを押下します。
    押下すると「時間の設定」画面に移動します。

  13. 「時間の設定」画面に移動したら、
    「your time zone is Asia/Tokyo」と表示されているのを確認し、
    「はい」を選択し、Enterキーを押下します。
    押下すると「ディスクのパーティショニング」画面に移動します。

  14. 「ディスクのパーティショニング」画面に移動したら、
    「ガイド-ディスク全体を使い、LVMをセットアップする」を選択し、Enterキーを押下します。
    押下すると「パーティショニングするディスクの選択」画面に移動します。

  15. 「パーティショニングするディスクの選択」画面に移動したら、
    表示されているディスクを選択し、(環境によってここは異なってくるはずです。)
    Enterキーを押下します。
    押下すると「ディスクの変更を書き込み、LVMを設定しますか?」画面に移動します。

     
  16. 「ディスクの変更を書き込み、LVMを設定しますか?」画面に移動したら、
    「はい」を選択し、Enterキーを押下します。
    押下すると「ガイドによるパーティショニングを利用するボリューム」画面へ移動します。

  17. 「ガイドによるパーティショニングを利用するボリューム」画面へ移動したら、
    「続ける」を選択し、Enterキーを押下します。
    押下すると「ディスクに変更を書き込みますか?」画面に移動します。

  18. 「ディスクに変更を書き込みますか?」画面へ移動したら、
    「はい」を選択し、Enterキーを押下します。
    押下すると基本パッケージのインストールが開始され、最終的に「パッケージマネージャーの設定」画面に移動します。

  19. 「パッケージマネージャーの設定」画面に移動したら、
    何も入力せずに「続ける」を選択し、(インターネット接続にプロキシを経由している環境では、ここに情報を入力しましょう。)
    Enterキーを押下します。
    押下すると「このシステムのアップグレードをどのように管理しますか?」画面へ移動します。

  20. 「このシステムのアップグレードをどのように管理しますか?」画面へ移動したら、
    「自動的にアップデートしない」を選択し、(「セキュリティアップデートを自動的にインストールする」を選んでもいいでしょう。)
    Enterキーを押下します。
    押下すると「ソフトウェアの選択」画面へ移動します。

  21. 「ソフトウェアの選択」画面へ移動したら、インストールするソフトウェアを選択します。
    開発サーバーとして使用する予定なので、「OpenSSH server」を選択し、
    「続ける」へ移動してEnterキーを押下します。
    押下すると「ハードディスクへのGRUBブードローダのインストール」画面へ移動します。

  22. 「ハードディスクへのGRUBブードローダのインストール」画面へ移動したら、
    「はい」を選択し、Enterキーを押下します。
    押下すると「インストールの完了」画面に移動します。

  23. 「インストールの完了」画面に移動したら、
    「続ける」を選択し、Enterキーを押下します。
    押下すると再起動されインストールが完了します。

以上です。

2014年6月29日

2014年6月29日の出来事

本日は

  • Rails 講義
  • システム開発
  • グランドゴルフ
を行いました。
地区のイベントでグランドゴルフの運営として頑張りました。

表彰式で、突然の雨が降り、びしょ濡れになりながら、自宅に車を取りにいきました。

Rails で DDD する話

http://a-suenami.hatenablog.com/entry/2013/12/06/092146

Cocuu では、上記リンクを参考に、ドメイン駆動設計を実践してみました。

コントローラーが肥大化せずにイイ感じな気がします。

2014年6月28日

2014年6月28日の出来事

本日は

  • システム開発
  • 草引き
を行いました。

町内会の清掃活動で、草引きをしました。
疲れました。

Rails に ckeditor を導入する

https://github.com/galetahub/ckeditor

で公開されている Rails に ckeditor を導入する gem をインストールしましょう。

Gemfile に
gem 'carrierwave'
gem 'mini_magick'
gem 'ckeditor'
を追記し、
$ bundle install
$ rails generate ckeditor:install --orm=active_record --backend=carrierwave
と実行します。
ORMやImageMagickのラッパーの違いでオプションが違うので注意しましょう。

2014年6月27日

2014年6月27日の出来事

本日は

  • 案件調査
  • 打ち合わせ
を行いました。

本日は暑かったです。涼しい所で仕事がしたい。

Epub3 の構文チェックに使用したWebサービス

Cocuu を作成していく中で、 Cocuuで生成できる Epub3 の品質のチェックに以下のサイトを利用しました。

http://validator.idpf.org/

構文のチェックだけですが、問題点が指摘されるのでとても便利です。

CentOS 6.5 minimal 上の Rails で ImageMagick を使う方法

CentOS 6.5 minimal 上の Rails で gem rmagick を使用しようとして、
gem install rmagick としてもコンパイルエラーとなってインストールできません。
minimal だから ImageMagick がインストールされていないんです。

その場合、不足しているライブラリをインストールすると gem install rmagick がコンパイルエラーとならず上手くインストールができます。

$ sudo yum install ImageMagick ImageMagick-devel


2014年6月26日

2014年6月26日の出来事

本日は

  • アルバイト
を行いました。

子供が、今年2回目の脱臼をおこしました。
延々泣いてとても痛そうでした。

情報セキュリティを考えるためのSNS紹介というスライドを公開しました

今年の1月に色々なSNSを紹介・説明した時の資料を改めてPowerPointにまとめました。

現在、様々なSNSが登場していますが、今どんなSNSがあり、どんなリスクがあるのかを紹介するスライドです。






CentOS 6.5 minimal に rbenv をインストール

CentOS 6.5 minimal に rbenv をインストールした時の記録です。
私は zshシェルを使用していますので、 ~/.zshrc に書き込んでいますが、bashの方は、 ~/.bashrc に書き込んでください。
この手順では、 cruby 2.0.0-p481 をインストールしています。


  1. git のインストール
    $ sudo yum install git
  2. gcc のインストール
    $ sudo yum install gcc
  3. openssl devel のインストール
    $ sudo yum install openssl-devel
  4. rbenv のインストール
    $ cd
    $ git clone git://github.com/sstephenson/rbenv.git .rbenv
    $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc
    $ echo 'eval "$(rbenv init -)"' >> ~/.zshrc
    $ exec $SHELL
    $ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
    $ echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.zshrc
    $ echo "gem: --no-ri --no-rdoc" > ~/.gemrc
    $ rbenv install 2.0.0-p481
    $ rbenv global 2.0.0-p481


2014年6月25日

2014年6月25日の出来事

本日は

  • アルバイト
を行いました。

Rails で多対多のリレーションを作成する方法

Rails で多対多のリレーションを持ったテーブルを作るためには、中間テーブルの作成が必要です。

例をあげましょう。

  • User テーブル
  • Book テーブル
という二つのテーブルを多対多のリレーションで結ぶ場合、中間テーブルとして
  • BookUser テーブル
が必要となります。ちなみに、中間テーブルの名前をここでは「BookUser」としていますが、どんな名称でも問題ないはずです。

中間テーブルを意識しないアクセスを実現するには、

Book クラス内に

  has_many :book_users
  has_many :users, :through => :book_users

User クラス内に
  has_many :book_users
  has_many :books, :through => :book_users


が必要となります。



参考URI:
http://7mi.wkeya.com/archives/611
http://blog.notsobad.jp/post/70028473972/has-many-through

Cocuu のトップページ画像の出どころ

Cocuu のトップページの画像は
PAKUTASO さんが公開している画像を使用しました。
http://www.pakutaso.com/201404481065-3.html

しんと静まり返った感じが出せてとても気に入っています。

Pundit の解説記事を発見

Pundit の英語の解説記事

英語が分からなくてもソースコードを見れば、どのように認可をしているかが分かります。

http://www.elabs.se/blog/52-simple-authorization-in-ruby-on-rails-apps

Rails 4.1 では、authorization にぜひ、 Pundit を使用してみましょう!

2014年6月24日

rake db:reset とrake db:migrate:reset の違い

以下のサイトで紹介されていました。

rake db:resetとrake db:migrate:resetの違い

db:reset は db/schema.rb
db:migrate:reset は db/migrate/*

をもとにデータベースが構築されるという違いがあります。

そういう事なので、
rails g migrate でテーブルを作成した後に、やっぱり無かった事にしたい時は、
rake db:migrate:reset を使いましょう。

rake db:reset だと、 db/migrate/* との不整合でおかしくなる時があります。

2014年6月24日の出来事

本日は

  • システム開発
  • 打ち合わせ
  • 案件調査
を行いました。

Rails でバリデーションについて詳細に説明してくれているサイト TECHSCORE のご紹介

Validation の書式、書いていないとよく忘れますよね。

そこで、以下のサイトで詳細に Validation について掲載されていました。
http://www.techscore.com/tech/Ruby/Rails/model/validation/1/


Rails で Validation の場合分けの方法

キータで Validation の場合分けの方法が記載されていました。

Rails - 状況によってsave時に実行するバリデーションを切り替える - Qiita


on オプションでラベルを設定できます。

その時、ラベルを :create , :update 等といったメソッド名と同じにすると、
そのメソッドが実行された時に Validation できます。

また、適当なラベル名をつけ、
@instance.save(context: :label_name)
@instance.valid?(:label_name)
とラベル名を含めて save や valid メソッドを実行すると
Validation の場合分けができます。

以外と使用頻度が高いテクニックです。

2014年6月23日

2014年6月23日の出来事

本日は

  • アルバイト
  • システム開発
を行いました。

クラウドワークス 開発の契約ランキング 2014年06月第3週 で第9位になりました。

こんにちは

クラウドワークス「システム開発の契約ランキング 2014年06月第3週」で

第9位になりました。

https://crowdworks.jp/public/rankings/1180

今後もシステム屋まそおをよろしくお願いいたします。

2014年6月22日

2014年6月22日の出来事

本日は

  • システム開発
を行いました。

休みなしで行っているので眠いです。

2014年6月20日

Rails 4.1 で Cancanに代わる権限認可ライブラリライブラリ Pundit

http://blog.n-z.jp/blog/2013-10-08-rails4-authorization.html
上記URI によれば、Cancan の Rails 4.1 対応があまり進んでいないらしい。

実際に Cancan の github を見てみると Issues と Pull Requests が溜まっています。
https://github.com/ryanb/cancan

そこで、http://blog.n-z.jp/blog/2013-10-08-rails4-authorization.html を参考に
pundit という gem を導入しました。

実際 pudit を使用して作成しましたが、gemを導入しなくていいくらいシンプルな考えで認可が管理できます。

Readme にも書かれていますが、
class ApplicationPolicy
  attr_reader :user, :record
  def initialize(user, post)
    @user = user
    @post = record
  end
  def index?
    post_public?
  end
  def show?
    user_signed_in?
  end
end

こんな感じで、コントローラー毎に ?のついたメソッドを作成して、
そのコントローラーで
  def index
    @policy = PostPolicy.new(current_user, Post)
    return render :file => "public/401.html", :layout => false, :status => :unauthorized unless @policy.index?

として、カレントユーザーの権限を判定します。(※ここではユーザー管理は devise を使っています)

また、コントローラー毎のメソッドだけでなく、
post_public?
user_signed_in?
等、ユーザーの状態を判定するメソッド(例: user_signed_in?)や、インスタンスの状態を判定するメソッド(例: post_public?)
も public メソッドとして追加してみましょう。

上記のコントローラーで @policy としているので、ビューで、権限判定が必要な部分は、全てこれを使います。

こうすると権限は、全て policyクラスに押し込めて便利です。


2014年6月20日の出来事

本日は

  • アルバイト
を行いました。

サッカー日本代表が、ギリシアに引き分けました。
決勝リーグ進出は、絶望的な状況です。

2014年6月19日

2014年6月19日の出来事

本日は

  • 案件調査
を行いました。

事業は厳しいですが頑張ります。

CentOS 6.5 minimal を vagrant 風にする手順

vagrant 便利ですよね。
でも Windows に vagrant はまだインストールしたくないんですよね。
そこで、将来 vagrant をインストールできるように、 vagrant 風の VirtualBox の Box を作成したいと思います。



  1. CentOS 6.5 minimal のインストール
    CentOS 6.5 x86_64 minimal インストールログ」として記事を公開しているのでご覧下さい。
  2. VirtualBox から root ユーザーでログイン
  3. vagrant ユーザーを追加して、パスワードを設定します。
    このインストール完了後は、ssh公開鍵認証にするので、長めのパスワードを設定しておきましょう。
    $ adduser vagrant
    $ passwd vagrant
  4. sudo 権限の追加
    $ visudo
    とコマンドをうって、ファイルの最後に
    vagrant ALL=(ALL) NOPASSWD:ALL
    を追加しましょう。パスワード確認なしの sudo コマンドの実施ができます。
  5. ネットワークの設定
    CentOS 6.5 minimal では、デフォルトでネットワークがオフになっています。起動時にオンにする設定にします。
    $ vi /etc/sysconfig/network-scripts/ifcfg-eth0
    ONBOOT=no と書かれている部分を ONBOOT=yes にします。
  6. CentOS の再起動
    $ reboot
  7. ssh 経由で vagrantユーザーでログイン
  8. ssh 公開鍵 vagrant, vagrant.pub をローカルからコピーしてくる
    https://github.com/mitchellh/vagrant/tree/master/keys
    (TeraTermなら簡単ね)
  9. 公開鍵認証の設定
    $ mkdir ~/.ssh
    $ chmod 700 ~/.ssh
    $ mv vagrant vagrant.pub ~/.ssh
    $ cd ~/.ssh
    $ chmod 400 vagrant*
    $ cp vagrant.pub ~/.ssh/authorized_keys
    $ chmod 400 authorized_keys
  10. CentOS のアップデート
    $ sudo yum update
    $ sudo reboot
  11. Guest Additions のビルドツールインストール
    $ sudo yum install make perl kernel-devel gcc
  12. VirtualBox で「Guest Additions の CD イメージを挿入」を実施
  13. Guest Additions のインストール
    $ sudo mount /dev/cdrom /mnt
    $ sudo bash /mnt/VBoxLinuxAdditions.run
    $ sudo umount /mnt
  14. 共有フォルダにアクセスできるグループに参加
    $ sudo gpasswd -a vagrant vboxsf
  15. ファイルのクリア
    $ sudo yum clean all
これで、Vargrant 風の環境の完成です。
私は、これに Rails や php を導入して Windows で開発を行っています。

この手順を Gist でも公開しています。
https://gist.github.com/masoo/ce3115b33c0d72e53030

2014年6月18日

2014年6月18日の出来事

本日は

  • アルバイト
を行いました。

今日はすっきり寝れました。

2014年6月17日

2014年6月17日の出来事

本日は

  • アルバイト
を行いました。

サービスのPRが難しいですね。
Cocuuがなかなか認知されなくて、寂しいです。

2014年6月16日

2014年6月16日の出来事

本日は

  • 案件調査
  • Cocuu のPR
を行いました。

事業が厳しい状況が続きます。

2014年6月15日

2014年6月15日の出来事

本日は

  • 案件調査
を行いました。

サッカー ワールドカップで 日本代表がコートジボワールに負けましたね。
次のギリシア戦は勝ってほしい。

2014年6月14日

2014年6月14日の出来事

本日は

  • 案件調査
  • 同窓会
を行いました。

Cocuuの今後

Cocuu のサービスを開始しましたが、これで終わりではありません。

継続して改良していくつもりです。

まず、ソーシャル的な機能を考えています。
Cocuu内でいろいろな執筆作業ができたらいいなと思っています。

また、Cocuuのサービスがうまく軌道に乗った場合、法人化して、決済方法を増やしたいと思っています。

個人事業主の限界は Paypal じゃないかなと思っているのですが、儲けもないのに法人化すると、事業が軌道に乗らなかった時にサービスの継続ができませんので、収益がない場合は、決済については、このまま細々とやっていくかもしれません。


そして、国際化です。
お気づきの方もおられると思いますが、URIが既に ja などの部分がついた URI になっていると思います。
スタートアップで最低限のルーティングを考えて、あのようなサイト構成になっています。

国際化に伴っては、英語の本も出版出来るように考えています。


これからも Cocuu をよろしくお願いいたします。

Cocuuの作成で心がけた事

Cocuu を作成するにあたって、心がけた事を記事にしました。
http://cocuu.net/sections/ja/498ab87acb69c6526e8bcc68f8c8677b

見出しをいうと。

  1. 「非公開」がデフォルト。「公開」はオプトイン。
  2. 広告無し。
  3. シンプルな画面
です。

2014年6月13日

2014年6月13日の出来事

本日は

  • アルバイト
を行いました。

梅雨は、ジメジメしていやですね。

2014年6月12日

2014年6月12日の出来事

本日は

  • システム開発
  • 案件調査
を行いました。
開発がひと段落したので、案件調査実施中です。

niconicoが不正ログインの被害にあったので、今一度パスワードの管理方法を確認しよう

niconico が不正ログインの被害にあいました。
以下のURIで詳細が公開されています。
他社流出パスワードを用いた不正ログインについて

ようは、他のサイトのユーザー名とIDをそっくりそのままniconicoで使用したユーザーに不正ログインされた可能性があるというニュースです。

このような悪意のある人からの不正ログインは、被害にあった企業では防ぎようがなく、各々で注意するしかありません。

当ブログでも、私のパスワード管理法を公開していますので、ぜひ参考にできる部分はしていただいて、不正ログインの被害のリスクを最小限にしましょう!

以下が公開したパスワード管理法の記事です。
ぼくのかんがえたさいきょうのパスワード管理


ドメインとったら、ちゃんと robots.txt を置こう!

そうです。
Google の Web マスターツールに登録したら、アラートをいただきました。

Webサービス作ったら、検索エンジンの事もしっかりとしないとダメですよね。

エラーページだけデータの取得から除外したかったので、

# See http://www.robotstxt.org/robotstxt.html .
User-agent: *
Disallow: /401.html
Disallow: /404.html
Disallow: /422.html
Disallow: /500.html

とだけ書かれた、 robots.txt をhttp://cocuu.net/robots.txt に設置しました。


2014年6月11日

2014年6月11日の出来事

本日は

  • アルバイト
を行いました。

Cocuuも随時アップデートしていくよ。

Epub3作成・発表プラットフォーム Cocuu を公開しました

こんばんは。システム屋まそおの舩原です。

Epub3 の作成・発表プラットフォーム Cocuu を公開しました。
http://cocuu.net/

なぜこのようなサービスを開発したかというと、
Epub の作成環境は、まだ整っているとは言い難く、環境を整えるだけでとても苦労しました。

私は、「月刊情報セキュリティ事故ログ」という電子書籍を数冊、昨年書きましたが、電子書籍作成ソフトウェアで、同じフォーマットの電子書籍を書くのに苦労しました。
また、 epub の仕様が難しくて前回のフォーマットの確認が煩雑でした。
Cocuu で作成できる epub3 は細かい指定はできませんが、同じフォーマットで作成するにはとても簡単です。


そして、Cocuuは電子書籍の作成だけではありません。
プロフィールページの公開ができるので、自身が作成した電子書籍のPRページにもなります。

では、みんなで楽しい電子書籍ライフを過ごしましょう。

2014年6月10日

2014年6月10日の出来事

本日は

  • システム開発
を行いました。

本日、Epub3作成・発表サイト Cocuu を公開しました。
頑張りました。

2014年6月9日

2014年6月9日の出来事

本日は

  • システム開発
を行いました。

布団が雨でぬれて大変でした。

2014年6月8日

2014年6月8日の出来事

本日は

  • システム開発
を行いました。

二日酔いなのか、体がだるい一日となりました。

2014年6月7日

2014年6月7日の出来事

本日は

  • システム開発
を行いました。

夜は、家族で焼き肉に行きました。
お腹いっぱい食べてとても嬉しかったです。

2014年6月6日

2014年6月6日の出来事

本日は

  • アルバイト
を行いました。




今日も本番環境の調整中です。
今週中の公開を目指します。

2014年6月5日

2014年6月5日の出来事

本日は

  • アルバイト
を行いました。

本番環境の調整中です。

2014年6月4日

2014年6月4日の出来事

本日は

  • アルバイト
を行いました。

イベントがありとても楽しかった一日でした。

2014年6月3日

2014年6月3日の出来事

本日は

  • システム開発
を行いました。

もうすぐ完成しそう。

2014年6月2日

2014年6月1日

2014年6月1日の出来事

本日は

  • システム開発
を行いました。

今日は暑かったです。