XVideosAPI作ったった。

Railsでなんか作りたかった。
後悔はしていない。

RESTful APIを勉強したかったこともあり、題材でパッと思いついたのがこれだったので作ってみました。3時間ほどで作成したのでエラーいっぱい出るはず。
XVideosAPI

パラメータとして「url」部分に動画再生ページのURLを載せてリクエストすると、動画ダウンロード用のURLをjson形式で返却します。

GitHubにソースコード公開しております。
https://github.com/gaku3601/XvideosAPI

久しぶりにアダルトツール作ったら燃えた!やっぱエロは人類の進化を支えてきたんだなって思った。
昼飯食お。。。

参考文献

http://ruby-rails.hatenadiary.com/entry/20150108/1420675366

gitのバージョンをアップデートする

yumでインストールしたgitだと1.7.1までで、最新版が導入できない。
brewのupdateをする際、「gitの最新版入れろ!」と怒られたのでアップデートします。

gitのアップデート方法

古いgitを削除します。

sudo yum -y remove git

gitのインストール時に必要なパッケージをインストールします。

sudo yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker

以下のURLから最新版のgitを探します。
https://www.kernel.org/pub/software/scm/git/

「/usr/local/src/」へ移動し、wgetでダウンロードしたのち解凍します。

cd /usr/local/src/
wget https://www.kernel.org/pub/software/scm/git/git-2.5.3.tar.gz
sudo tar xzf git-2.5.3.tar.gz

解凍して作成されたフォルダへ遷移し、インストールを行います。

cd git-2.5.3
sudo ./configure
sudo make
sudo make install

このままではシンボリックリンクが違うところを指しているので、シンボリックリンクの設定を行います。

sudo ln -s /usr/local/bin/git /usr/bin/git

git –versionで確認し、最新版になっていればOK

参考文献

http://to-developer.com/blog/?p=1489

Unreal Engine 4やるべ(´・ω・`)

VRヘッドセットが来年あたりからそろそろ来る。
1年くらい前に「PHPカンファレンス」へ行った際、Oculus Riftに触れて「世界はここまで来たか」と思っていたのですがなかなか手が出せずにいました。
本気で商戦を感じたので今回Unreal Engineを導入してみました。

インストールする

以下からインストーラーをダウンロードして導入するだけ。
https://www.unrealengine.com/ja
何も迷うことなく導入完了。

とりあえず初期段階で簡易的な部屋ができている状態でわくわく感がやばい。
無題15

UE vs Unity

とりあえずトレーラー





個人の好き嫌い・作り方もあるかとは思いますがUEの方がリアル感がすごくある気がします。

簡易比較
Unreal Engine Unity
言語 C++ C#,JavaScript,Boo(Python)
稼働OS Windows,Mac,Linux Windows,Mac
Oculus Rift対応 対応済み 対応済み
価格 無料 基本無料
利用制限 なし 無料版だと一部利用制限あり
ロイヤリティ 5% 無料版0%,有料版は有り

UEは言語的にC++のみしか対応していないのが痛いところですが、価格面で見ると無料でいろいろできるUEに軍配が上がりそうです。
またOculus Riftにも対応しているため、とりあえず一通りなんでもできるという印象です。

おわりに

3Dゲームエンジン+VRヘッドセットで1つアイデアがあるため、本気で取り込もうと思います。
1カ月くらい続いたらこのタイミングですがOculus Rift購入する予定です。
VRヘッドセットが正式に発売されるまでが勝負期間。

CentOS6.5へbrewを導入する

gakuです。
elixir+phoenixの環境構築を行う際、brewから導入すると簡単そうだったので、CentOS6.5へbrewを導入してみました。

brewってなんぞ?

ソフトウェアの導入を単純化するパッケージ管理システムのひとつです。yumとかと一緒の類です。
mac上だと簡単に導入できるのですが、CentOSだと若干はまりました。

導入方法

brewを導入するために必要なツールをインストールします。

sudo yum --exclude=systemtap* groupinstall 'Development Tools' && sudo yum install curl git m4 ruby texinfo bzip2-devel curl-devel expat-devel ncurses-devel zlib-devel openssl-devel irb

ここで若干はまりました。
僕の環境化ではsystemtapがどうしても入らなくてskipしてます。
brewの導入には必要ないので良しとしましょう。

そしてbrewのインストール

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/linuxbrew/go/install)"

最後にパスを通します。

echo 'export PATH="$HOME/.linuxbrew/bin:$PATH"' >> ~/.bash_profile
echo 'export MANPATH="$HOME/.linuxbrew/share/man:$MANPATH"' >> ~/.bash_profile
echo 'export INFOPATH="$HOME/.linuxbrew/share/info:$INFOPATH"' >> ~/.bash_profile
echo 'export LD_LIBRARY_PATH="$HOME/.linuxbrew/lib:$LD_LIBRARY_PATH"' >> ~/.bash_profile
source ~/.bash_profile

このままではインストールする際gccでこけるので、元あるgccでシンボリックリンクを作成する。

gcc -dumpversion

でgccのバージョン確認を確認する。

シンボリックリンクを作成する。この時バージョンは上で確認したバージョンで貼っておく。

ln -s `which gcc` `brew --prefix`/bin/gcc-4.4
ln -s `which cpp` `brew --prefix`/bin/cpp-4.4
ln -s `which g++` `brew --prefix`/bin/g++-4.4

インストール確認

brew -v

バージョンが出力されれば導入完了です。

おわりに

elixir+phoenixの道は険しそうです。

gemライブラリ作成してみる

前々から気になっていたGemライブラリの作り方。
久しぶりに時間ができ勉強したので備忘録として載せときます。

前準備

gemコマンドの更新とbundlerのインストール・更新を行っておきます。

gem update --system
gem install bundler
gem update bundler

ひな形の作成・編集

TestGemという名前でひな形を作成します。

bundle gem TestGem

.gemspecファイルの編集

作成されたTestGemフォルダの中にTestGem.gemspecファイルが存在すると思います。
そのファイルを編集します。
TODOと書いてある点は全て編集を行わないと、エラーが発生するので編集しておきましょう。

# coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'TestGem/version'

Gem::Specification.new do |spec|
  spec.name          = "TestGem"
  spec.version       = TestGem::VERSION
  spec.authors       = ["gaku"]
  spec.email         = ["pro.gaku@gmail.com"]

  spec.summary       = %q{Gem Test Create}
  spec.description   = %q{Gem Test Create}
  spec.homepage      = "http://160.16.72.126/"
  spec.license       = "MIT"

  # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
  # delete this section to allow pushing this gem to any host.
  if spec.respond_to?(:metadata)
    spec.metadata['allowed_push_host'] = "http://160.16.72.126/"
  else
    raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
  end

  spec.files         = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
  spec.bindir        = "exe"
  spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
  spec.require_paths = ["lib"]

  spec.add_development_dependency "bundler", "~> 1.10"
  spec.add_development_dependency "rake", "~> 10.0"
end

今回はこんな感じで編集しました。

実装してみる

今回は簡単に文字列を出力するライブラリを作成してみたいと思います。
lib/TestGem.rbを編集します。

require "TestGem/version"

module TestGem
  def self.test
    'abababa'
  end
end

動作確認

動作確認してみます。
まずは作成したライブラリをインストールするため、以下のコマンドを入力します。

bundle install

対話型インタプリタで正常に文字列が出力されるか確認します。

bundle exec irb
irb(main):002:0> TestGem.test
=> "abababa"

無事abababaが出力されたら完了。

おわりに

次回はrailsプロジェクトへの組み込み方法あたりを掲載したいと思います。

参考文献

酒と泪とRubyとRailsと-RubyGemはめっちゃ簡単に作れる!

rails環境ローカル構築ガイド

Ruby_on_Rails_r2_c2
Gakuです。
Ruby on Railsをこよなく愛している僕のため、たびたび環境を構築することがあります。
忘れやすいため、ここに掲載しておこうと思います。

Ruby on Railsってなんぞや?

スクリプト言語であるRubyを使用しているため、すごく簡単にWebシステムを構築できるWebアプリケーションフレームワーク。まさに1本道(rails)のように記述できるため書いているだけで気持ちよくなってくるフレームワークです。最近出た海外のプログラミング言語収入ランクで栄えある1位でした。
http://keizaidata.blogspot.jp/2014/11/blog-post_29.html

年収1300万ですよ。やばいな~。しがないC#erの僕は年収400万も到達していないというのに。。。

構築ガイド

ということで構築してきます。今回の構成内容は以下のような感じ。

CentOS6.5
ruby2.1.5
Ruby on Rails 4.1.8

仮想PCの構築

まずは仮想PCの構築です。仮想PCはvagrant+VirtualBoxでサクッと構築しちゃいます。
vagrantとVirtualBoxを以下からダウンロードしインストールします。
https://www.vagrantup.com/
https://www.virtualbox.org/

インストールが完了したら、仮想PC上にCentOS6.5を構築します。

vagrant box add cents6.5 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
vagrant init centos6.5

これでCentOS6.5のインストールが完了し、設定ファイルが生成されたと思います。
余談になりますが、以下のURLから様々なOSがインストール可能です。
http://www.vagrantbox.es/

vagrant設定ファイルの編集

生成された設定ファイルを編集します。
・ポートの設定

# config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "forwarded_port", guest: 3000, host: 3000

・共有フォルダの設定

# config.vm.synced_folder "../data", "/vagrant_data"
#※ config.vm.synced_folder “<mac上のフォルダ>", “<仮想PC上のフォルダ>"
#↓今回はこんな感じにしました。
config.vm.synced_folder "~/Documents/CentOS6_5ShareFolder", "/home/vagrant/rails_projects"

これでセーブして仮想PCの設定は終了です。

仮想PCを立ち上げてみよう

vagrantを導入しているので立ち上げも簡単です。

vagrant up

※このときエラーが出るようでしたら、vagrantfileの設定を疑って下さい。
少し待つと立ち上がりますので、次にこの仮想PCに接続するために以下のコマンドを入力します。

vagrant ssh

これで接続完了です。
共有フォルダが正しく設定されているか確認はしておきましょう!
[余談]——-
・仮想PCをシャットダウンする場合はvagrantfile上で以下のコマンドを入力します。
$vagrant halt
・仮想PCを削除する場合は以下のコマンドを使用します。
$vagrant destroy
・スーパユーザのパスワードは以下
pw:vagrant
————-

rubyバージョン管理システムの導入

さて、仮想PCも構築できましたしここからrailsの構築へ入っていきます。
まずはrubyを入れたいところですが、rubyバージョン管理システムを導入しておきましょう。
rubyはバージョン間の互換性がないことで有名です。このプロジェクトはこのバージョンのruby、違うプロジェクトは。。。
となってしまうと、その度に仮想PCを立ち上げて環境構築をしなくてはいけません。
それを解消してくれるのがrubyバージョン管理システムです。これを導入することで、フォルダごとに異なるバージョンのrubyを使用することが可能です。
代表的なものにRVMとrbenvがあるのですが、今回はrbenvを導入します。

rbenvの導入

以下のコマンドでインストールします。

git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

パスも通しておきましょう。

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc

正常にインストールされている場合、以下のコマンドでバージョンが出力されます。

rbenv --version

rubyのインストール

rubyをインストールします。
インストール中に以下のツールがないとエラーが出力されてしまうため、事前に導入しておきます。

sudo yum -y install openssl-devel
sudo yum install -y readline-devel

で、rubyのインストール

rbenv install 2.1.5

インストールが完了したら、rbenvでどのフォルダにruby2.1.5を適応させるか設定します。
今回はPC全体でruby2.1.5を使用しますので、以下のコマンドで設定します。

rbenv global 2.1.5

rubyのパッケージ管理システムのアップグレードさせておきましょう。

gem update --system

Railsのインストール

いよいよRuby on Railsの導入です。
ここでもインストール中にいろいろエラーが出ますので、それを防ぐため以下をインストールしておきます。

sudo yum install sqlite-devel
sudo yum install nodejs

インストールが完了したらrailsを導入します。

gem install --no-ri --no-rdoc rails -v 4.1.8

終わりです。お疲れさまでした。

Railsプロジェクトを作成みよう

Railsの環境が構築出来ましたしプロジェクトを作ってみましょう。
共有フォルダ上で以下のコマンドを入力します。

rails new railstest

作成されたフォルダへ遷移し以下のコマンドでrailsが持っているWebサーバを立ち上げます。

rails s

これでエラーが出力されていなければWebサーバが立ち上がるはずです。
ブラウザで以下のURLへアクセスしRailsの初期画面が出力されていれば成功です。
http:localhost:3000/
6c01e957-1891-9c8a-2f02-3377617ae33c

良きRailsライフを(´・ω・`)

おわりに

この構築ガイドを元に最近入社された新入社員さんに教えたら、無事構築できたっぽいのでまだ使えるはず。rails構築当初はRVMを使っていて、数か月たつと全く構築手法が変わっていてひたすら悩まされたわけですが、rbenvを使用してからは安定しています。最近ではchefを使用して構築を自動化していますが、そこらへんの連携も取れるとますます楽しくなってきますよ。次回はRailsと相性の良いPostgreSQLの導入あたりを記事にしたいと思います。(主にHerokuが強すぎるから)

nginx+mysqlでwordpressを構築してみよう

wordpress-code-image

gakuです。今回はこのブログを立ち上げる際、wordpressを使用しましたのでその際の構築手法を掲載したいと思います。

wordpressって何

wordpressとは、ブログを作るためのアプリケーションです。世の中にはhatenaブログやlivedoorブログなど様々なブログがありますが、wordpressは自分でサーバ構築しその上で動作させるシステムですので、プラグインなどによる拡張性やテーマのカスタマイズなどあらゆるところに手が届くシステムとなっています。
そこまで難しいものではないので、サーバ構築の勉強題材としても良いかもしれません。

構築方法

今回はCentOS6.5へwordpressの構築を行います。
サーバにアクセスは出来ている前提で話を進めていきます。

nginxの導入

webサーバーアプリのnginxを導入します。

$ vi /etc/yum.repos.d/nginx.repo

nginx.repoファイルに以下のように記載

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
$ yum install nginx

これでnginxの導入は完了です。
nginxの設定を行っていきましょう。

$ vi /etc/nginx/conf.d/default.conf
server {
    listen       80;
    server_name  localhost;
    root   /var/www/wordpress;  #wordpressの格納場所
    index  index.php;

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    location ~ /\.ht {
        deny  all;
    }

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    #location / {
    #    root   /usr/share/nginx/html;
    #    index  index.html index.htm;
    #}

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

wordpressの格納場所と、ポート番号を指定することに注意すれば設定も簡単です。

PHPの導入

wordpressはPHP言語で動作しています。そのため、PHPを導入する必要があります。
以下のコマンドでインストールを行います。

$ yum install php php-pdo php-xml php-pear php-xmlrpc php-common php-cli php-gd php-mysql php-devel php-mbstring php-fpm

設定についてはこんな感じで編集します。

$ vi /etc/php-fpm.d/www.conf
;user = apache
user = nginx

;group = apache
group = nginx

apacheからnginxへ2箇所修正するだけでOKです。こちらも簡単です。

MySQLの導入

データベースであるMySQLを導入します。以下のコマンドでインストールします。

$ yum install mysql mysql-server

インストールが終わったらmysqlへアクセスし、DBとユーザを作成します。

$ mysql -u root -p

DBの作成&ユーザの作成

create database wpdb;
grant all on wpdb.* to 'username'@'localhost' identified by 'password';

MySQLの設定もこれで終わりです。

サービスの起動

各種サービスを起動します。以下コマンドで起動することができます。

$ sudo /etc/init.d/nginx start
$ sudo /etc/init.d/php-fpm start
$ sudo /etc/init.d/mysqld start

また、OS起動時に各種サービスを自動起動するように設定しておきます。

$ sudo chkconfig nginx on
$ sudo chkconfig php-fpm on
$ sudo chkconfig mysqld on

wordpressの導入

最後にwordpressを導入します。以下URLからwordpressの.tar.gz形式のファイルをダウンロードします。(wgetあたり使います。)
https://ja.wordpress.org/

ダウンロードが終わったら、nginxで指定した格納場所へwordpressを配置します。

$ sudo tar xfvz wordpress-4.3-ja.tar.gz -C /var/www

アクセスしてみる

サーバアドレスへアクセスするとwordpressの設定画面が表示されていると思います。
スクリーンショット 2014-12-22 23.32.09
設定内容を記入し「送信」ボタンをクリックします。

wp-config.php&その他の設定

今回の場合、/var/www/wordpress以下にwp-config.phpを作成し画面に表示されている設定をコピー&ペーストし貼り付けます。
また、FTP接続でのプラグインなどの導入は面倒なので、最後に1行付け加えます。

define('FS_METHOD','direct');

このままでは、画面上でプラグインやテーマをインストールすると「権限がない」と怒られてしまうので、各種フォルダへ権限も付与しておきます。
フォルダがない場合は作成してください。

/wp-content/upgrade
/wp-content/uploads
/wp-content/themes
/wp-content/plugins
/wp-content/languages
$ sudo chmod 0707 upgrade
$ sudo chmod 0707 uploads
$ sudo chmod 0707 themes
$ sudo chmod 0707 plugins
$ sudo chmod 0707 languages

おわりに

以上でwordpressの構築は終わりです。シンプルな設定が多いですが最後の権限付与周りなどはまりどころもあるため掲載しておきます。
それにしてもwordpressは楽しい。

wordpressにSyntaxHighlightを導入してみる

SyntaxHighlighter
Gakuです。
このブログではプログラムコードを多く載せることになると思うので、見やすいようにSyntaxHighlightできるプラグインを導入してみます。

https://wordpress.org/plugins/syntaxhighlighter/

無題

zipのままダウンロードして、pluginでアップロードします。
この時、権限がないと怒られる時があります。その際は/wordpress/wp-contentへuploadsフォルダを作成し権限を付与して下さい。

mkdir uploads
sudo chmod 0707 uploads

導入完了。Very Easy。。。

使ってみる

使い方も簡単。[code][/code]で囲ってあげればその部分がハイライトされる。
(今回の例では[]を全角で表記していますが、実際は半角で)
[java]
int val = 11;
if (val == 10) {
System.out.println(“変数valは10です”);
} else if (val == 20) {
System.out.println(“変数valは20です”);
} else {
System.out.println(“変数valは10でも20でもありません”);
}
[/java]

int val = 11;
if (val == 10) {
  System.out.println("変数valは10です");
} else if (val == 20) {
  System.out.println("変数valは20です");
} else {
  System.out.println("変数valは10でも20でもありません");
}

使える言語はこんな感じ。

html,actionscript3,bash,coldfusion,cpp,csharp,css,
delphi,erlang,fsharp,diff,groovy,javascript,java,javafx,
matlab (keywords only),objc,perl,php,text,powershell,
python,r,ruby,scala,sql,vb,xml

slimがない!erbがない!railsがない!
まぁ、いいか。多分css追加すれば対応できると思う。

参考文献

ソースコードをキレイに表示するWordPressプラグイン「SyntaxHighlighter Evolved」