fc2ブログ

2014-04-01(Tue)

PHP LaravelでJson on Ubuntu12.04 LTS

Laravelを使ってapp/routes.phpから簡単なjsonを返す。

Route::get('users', function()
{
$name = Input::get('name');
Log::info('Start Users:'.$name);
$truth = array(
'name1' => $name
);
/* case of using json_encode */
$aaa = json_encode($truth);
Log::info('truth:'.$aaa);

/* case of using Response::json() */
$response=Response::json($truth);
$response->header('Content-Type', 'application/json');
return $response;
});


# サーバーを起動。
$ php artisan serve


ブラウザで動作確認。

http://localhost:8000/users?name=hogehoge


responseは以下のとおりとなった。

{"name1":"hogehoge"}


参考:
laravel 4 why send content-type when sending json?


2014-03-31(Mon)

PHP Laravelをインストール2 on Ubuntu12.04 LTS

続き
ここらへんを参考に。

事前にインストール確認

$ sudo apt-get install php5-mcrypt



Apacheの設定

$ vim /etc/apache2/sites-enabled/000-default
# DocumentRoot /var/www
# <Directory />
# Options FollowSymLinks
# AllowOverride None
# </Directory>
DocumentRoot /home/gabriel/laravel/blog
<Directory />
Options FollowSymLinks
AllowOverride None
DirectoryIndex index.html index.php server.php
</Directory>


hostsの設定

$ vim /etc/hosts
127.0.0.1 localhost
127.0.1.1 www.example.com gabriel


$ /etc/init.d/apache2 restart



http://localhost にアクセスすると「起動しましたよ」、的な画面が表示される。

PHP5.4以上なのでデバッグサーバーを起動できます。

$ php artisan serve
Laravel development server started on http://localhost:8000


ブラウザでhttp://localhost:8000へアクセスすると同じ画面が表示されます。



2014-03-30(Sun)

PHP Laravelをインストール on Ubuntu12.04 LTS

PHPFramework最近の情報を見ていて触ってみたくなった。

まずはUbuntuのバージョン確認

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.4 LTS
Release: 12.04
Codename: precise



Laravelをインストール。
最初にここら辺はいれときましょう。
PHPも5.5にアップしておきます。

$ sudo add-apt-repository ppa:ondrej/php5
$ sudo apt-get update
$ sudo apt-get install libapache2-mod-php5 php5 php5-cli php5-common php5-curl php5-mcrypt


LaravelのインストールはここのComposerを利用方法を使う。

Composerをインストール

ここを参考にした。
$ sudo su
$ cd /usr/local/bin
$ curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer


laravelをインストール

$ cd ~/laravel
$ composer create-project laravel/laravel blog --prefer-dist


bashrcへPATHを指定

$ vim ~/.bashrc
export PATH="$PATH":/usr/local/bin
$ source ~/.bashrc


今日はここまで。

参考:
ERROR. The PHP cURL extension must be installed to use Guzzle.

how do I upgrade from php 5.3 to php 5.4.6 in ubuntu?




2014-01-05(Sun)

PlayFramework Get parameterが可変時の処理

PlayframeworkでGetパラメータが必要な時と不要なときがあった。

普通は
routesファイルに以下の通り記載し

GET /find controllers.Query.get(name: String, age:Int, gender:String, job:Int)



controllersのファイルには

object Query extends Controller{
def get(name: String, age:Int, gender:String, job:Int) = Action{

}


と書くのが一番楽だ。

しかし、これだとパラメータが不足すればエラーになる。
検索条件が固定でない場合(検索条件がageだけの場合など)は
routesファイルは

GET /find controllers.Query.get()


controllersのファイルには

object Query extends Controller{
def get() = Action{ implicit
request =>
// リクエストパラメータ取得
var qk: Map[String,String] = request.queryString.map { case (k,v) => k -> v.mkString }
}
}


と書けばMap型で取得できる。

How to get all request parameters in Play and Scala
Actions, Controllers and Results


2014-01-03(Fri)

PlayFrameworkでcould not find implicit value for parameter extractor

以下の条件でエラー発生。
条件

①Play2.2.1 + PostgreSQL9.3.1。
②テーブルにnumeric(5,2)を利用。
③PlayではFloatを利用。
④select文を利用しテーブルデータを取得。


エラー内容
could not find implicit value for parameter c: anorm.Column[Float]

コード

case class Location (
id: Pk[Long] = NotAssigned,
pid: String,
x: Float
)

object Location {
val simple = {
get[Pk[Long]]("location.id") ~
get[String]("location.pid") ~
get[Float]("location.x") map {
case id ~ pid ~ x => Location(
id,
pid,
x
)
}
}
def findByPid(pid: String): List[Location] = {
Logger.debug("findByPid Start:"+ pid)
DB.withConnection { implicit connection =>
SQL("select * from location where pid = {pid}")
.on('pid -> pid)()
.as(Location.simple.singleOpt)
}
}
}



原因
PostgreSQLのnumericを取得するとFloatではなくBigDecimalで取得しないとエラーとなるようだ。
対応として、以下の通りとした。
もっとよいやり方があれば教えていただきたい。

def findByPid(pid: String): List[Location] = {
Logger.debug("findByPid Start:"+ pid)
DB.withConnection { implicit connection =>
SQL("select * from location where pid = {pid}")
.on('pid -> pid)()
.map(row => read(row)).toList
}
}
def read(row: SqlRow): Location = {
val o = new Location(
pid = row[String]("pid"),
x = row[java.math.BigDecimal]("x").doubleValue().toFloat
)
return o
}



プロフィール

kumagonjp2

Author:kumagonjp2
Python,Django,R,Mongo,MySQL,Struts,Spring,データマイニングなどサーバー関係のメモを残していきます。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
雪が3Dで降るブログパーツ ver2

マウスで見る方向変えられます

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR