ラベル PHP の投稿を表示しています。 すべての投稿を表示
ラベル PHP の投稿を表示しています。 すべての投稿を表示

2011/05/01

herokuに続け! 各種PaaSプラットフォーム


HerokuというRuby on Railsが動作するRuby専用のPaaSプラットフォームがSalesforceに買収された。

何がおもしろいってRuby on Railsを動作させるためのハードやOSというレイヤーはプロバイダーであるHerokuが面倒を見る。開発者はコードを書いてGit経由でHerokuにアップロードするだけでHEROになることができる。
面倒な部分を全部プロバイダーが面倒見てくれるのがPaaSの強み。

そのPaaSプラットフォームもRubyのHeroku以外にも色々出来ていたので備忘録。

Heroku | Ruby Cloud Platform as a Service
 Ruby on Railsを提供するPaaS
 無料プランからニーズに合わせてサイジング可能

Google App Engine - Google Code
 JavaおよびPythonを利用可
 データベースが特殊。無料枠+従量課金

Windows Azure
 .Net系のPaaSなのかクラウドOSなのか…

Tiny Flock - Django Hosting
 Python/Djangoを提供するPaaS
 無料プランあり。情報がないってレベルじゃねーぞ!

PHP Fog - Reliable Cloud Platform. Built for PHP.
 PHPのPaaS
 デプロイはGit。PHPで作られたアプリケーション(WordPress等)なら何も心配なく動くらしい。

DotCloud
 何でもうごくPaaS
 PHP/Python/Ruby/Java… データベースも選べる。

こんな所でしょうか。
実際にはまだまだたくさんありますが、AzureやGAEは別にすると標準的な技術で構築されているので、万が一の際に他のプラットフォームに移行が出来なくは無いです。

手に職じゃないですが、プラットフォームがあっても言語を使いこなせないと…


2009/07/01

PHPでファイルの最後の行を表示

タイトルの通り。
がんばってみたけどなんだかうまくいかない感じ。
一応動くけど読み込むファイルによっては答えが返ってこない。
こう考えるとPythonって分かりやすいなぁ~




$pointer = fopen("load.dat","r");
/*
load.dat

3
4
2
6
7
9
2
3
4

*/

$ar = array();

if(flock($pointer,LOCK_SH)){
        while(!feof($pointer)){
                $bu = fgets($pointer);
                echo $bu."
";
                array_push($ar,$bu);
        }
        flock($pointer,LOCK_UN);
}

for($i=0;$i<=count($ar);$i++){
        if($ar[$i] == NULL){
                unset($ar[$i]);
        }
}

$ar2 = array_reverse($ar,FALSE);
print $ar2[0];
//print_r($ar2);

fclose($pointer);
?>



2008/06/29

PHP と SQlite2

http://www7.atpages.jp/dalice/sqlite.php

 

前にPythonで作ってアップロードしたら動かないって泣いたやつのPHP版。

PHPは何処でエラーが起きてるか分かりやすいからいいよね:P

 

どうやらPHPはSQlite2でなければならないようなのでSQlite2をダウンロードしなければならない。

ただ、困ったことに公式ではSqlite3しかダウンロードできない。

 

http://www.sqlite.org/sqlite-2_8_17.zip

なんとURLをダイレクトに叩いてみたら出来ました。

でも、それにCSVファイルをインポートしようと思ってもSqlite3のやり方では出来ないし、ネット上はほとんどSqlite3の手法ばかりなので、Sqlite3でdbを作成しそれをSqlite2に入れ込むと言う方法をやってみた。

 

【コラム】OS X ハッキング! (267) SQLite用にCSVファイルを料理する - 弁当もOK! | パソコン | マイコミジャーナル

Sqlite3からdbを作成する方法はこちらを参考。と言うよりもまさにやりたいことなんですが。

 

ただ、これを行う前にダウンロードしてきたCSVファイルに一手間かけました。

郵便番号データダウンロード - 日本郵便

このデータの中の”を消し、UTF-8にエンコードし直しました。

 

作成したSqlite3のdbをSqlite2にするには

sqlite3 hoge.db3 .dump | sqlite fuga.db2

と言うのがあるらしい。

実際に

sqlite3.exe ZIP.db .dump | sqlite.exe POST.db

で作成することが出来ました。

ちなみに、

Sqlite3で作成したZIP.dbが 255KB

Sqlite2に変換したPOST.dbが 325KB と重くなっています。

 

if($_POST){
  $sh = $_POST["content"];

これで同一のファイル内でのFormの受け渡しが出来ました。

 

なれた人なら億万倍効果的な事が出来ると思う。

2008/05/30

PHP 2 Thumbnail

PNG画像をアップロードし、横幅120px(縦幅は自動的に決定される)のサムネイルを作成してみよう。

oita
元画像

 

この画像をアップロードするためのHTML

<form action="img.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
  <label>
  <input type="file" name="imgUP" id="imgUP" />
  <br />
  </label>
  <input name="ok" type="submit" value="決定" />
</form>

するとこうなる。

1 

safariだとちょっと表示方法が違うけど、IEやFirefoxならおなじみの参照ダイアログ

 

で、PHP。

今回も絶賛コピペ中

【PHP】GDライブラリを使って画像のサムネイルを作成する。
http://goodjob.boy.jp/chirashinoura/id/79.html

<?php
    $file_path = $_FILES["imgUP"]["tmp_name"];
    $image = imagecreatefrompng($file_path);
    $width = ImageSX($image);
    $height = ImageSY($image);
    $new_width = 120;
    $rate = $new_width / $width; //圧縮比
    $new_height = $rate * $height;
    $new_image = ImageCreateTrueColor($new_width, $new_height);
    ImageCopyResampled($new_image,$image,0,0,0,0,$new_width,$new_height,$width,$height);
    imagepng($new_image,"sample.png");
    imagedestroy($new_image);
    $html='<html><body><img src="sample.png"></body></html>';
    echo $html;
?>

ファイル選択の際は$_FILESと言うのを使うらしい。

PHPリファレンス($_FILES、@move_uploaded_file())
http://www.php-ref.com/web/03_move_uploaded_file.html

 

画像の横幅はimagesx(ファイル)を使う

imagesx
http://phpspot.net/php/man/php/function.imagesx.html

これ以外にもgetimagesize()というのがあり、これはリストで返してくれる。

PHP関数講座:getimagesize -- そふぃのphp入門
http://nyx.pu1.net/function/image/getimagesize.html

 

画像の再サンプリングの部分にはimagecopyresampled()を用いる。

再サンプリングを行いイメージの一部をコピー、伸縮する
http://zapanet.info/phpdoc/function.imagecopyresampled.html

 

ImageCopyResampled — 再サンプリングを行いイメージの一部をコピー、伸縮する
ImageCopyResized — 画像の一部をコピーしサイズを変更する

いまいち違いが分からない。

 

で、実際に出来た画像はこれ。

sample

2008/05/28

FPDF : PHP 2 PDF

FPDFとはPHPでPDFを書き出すことのできる完全フリーのクラスファイルです。

まぁ、唐突になんだと思うでしょうがPHPの勉強の一環です:P

 

FPDF-J - FPDF ファンの集い処
http://fpdf.japansite.net/

 

FPDF日本語の利用
http://homepage3.nifty.com/yamada_ken1/starthp/subpagefpdfj.html

 

FPDFのダウンロードとインストール - FPDFのインストールと環境設定 - FPDFでPHPからPDFを作成
http://www.phpbook.jp/fpdf/install/index1.html

 

ファイルをどこに入れればいいのか迷ってしまった。

 

PHPって

”なんたら” + ”かんたら”

の部分は

”なんたら” . ”かんたら”

って書くんだ。これはびっくり!!

 

で、誰も求めていないソース

<form action="form.php" method="post">
  名前 :
    <input type="text" name="fName" size="40" />
  用件<br />
    <label>
      <textarea name="fText" cols="45" rows="10" id="fText"></textarea>
    </label>
    <input type="submit" value="submit" />
</form>

<p> タグは消したのでちょっとおかしくなると思う。(テキスト入力の部分の横幅はCSSで整える必要があるのかもしれない)

というかサンプルのままです。

<?php
require('fpdf/mbfpdf.php');

$vName = "名前\n" . $_POST['fName'] . "\n";
$vCont = "用件\n" .$_POST['fText'];

$pdf=new MBFPDF();
$pdf->AddMBFont(PGOTHIC, 'SJIS');
$pdf->Open();
$pdf->AddPage();
$pdf->SetFont(PGOTHIC, '', 14);
$pdf->Write(10,$vName);
$pdf->Write(10,$vCont);
$pdf->Output();
?>

こちらもサンプルを少しいじっただけ。

PGOTHICにしていないと文字化け(というか日本語表示されない)が発生するので注意。他のフォントでも大丈夫だと思う(要上記のリンク

1

 

2

 

 

なにはともかく action="form.php" method="post" の使い方が分かっただけでも素晴らしい収穫!!

 

ただ、これを細かくデザインしたPDFを書き出そうとすると激しくめんどくさそう:S