2012年11月30日金曜日

Djangoで、Hello World

Django(1.4.2)で、Hello Worldです。Djangoの紹介ビデオを見て、ちょっとわかった気になりました。Djangoは、MVCならぬ、MTVフレームワークとのこと。バージョン1.0が、2006年時点に発表され、既にこのような設計思想が取り入れられていたということは、驚きです。

DjangoフレームワークのMTVパターン
Model -> Model
Template -> View
View -> Controller
実際のサイトがこちら。何とかスタートラインに立てたかと(笑)。

2012年11月29日木曜日

Python の Djangoフレームワーク 1.4.2 を設定

PythonDjangoフレームワーク 1.4.2 を設定してみました。Pythonのウェブフレームワークは、他にもいろいろあるようですが、右も左も分からない状態ですので、まずは、Djangoです。お世話になるサーバーは、herokuGetting Started with Django on Herokuのページを参考に進めて、なんとか設定できたように思います。しかし、「Hello World」の文字を表示したいのに、それがわからない。こりゃ、先が長くなりそうです(笑)。

実際のサイトが、こちら



参考ページ
Getting Started with Django on Heroku(Heroku)

2012年11月28日水曜日

Python 2.7.3(2系の最新版)を使いたいために、Ubuntu Server 12.10をインストール

Python 2.7.3(2系の最新版)を使いたいために、Ubuntu Server 12.10をインストールしました。Ubuntuのデスクトップ版はお馴染みですが、サーバー版は新鮮な気分を味わえます。インストール作業は、文字通り全自動。入力を求められる部分がなく、全て勝手に進めてくれます。余談ですが、どぎつい紫の背景が目に染みます(笑)。

インストール後は、taskselコマンドで、OpenSSH serverを追加しました。何もない状態で、これでやっと、外部からアクセスできます。見事な割り切り方。LAMP serverなるものもインストールしました。LAMP環境が整います。これは、非常に楽。ちなみに、PHPは、PHP 5.4.6-1ubuntu1.1、Perlは、v5.14.2となっています。

sudo tasksel

2012年11月27日火曜日

Google's Python Classの続き

Google's Python Classの続きで、「Regular Expressions」と「Utilities」です。テキストを制するものは、全てを制す。そんなGoogleの奥義を見た気がします。Pythonに興味の無い方でも、見て損はないでしょう。Googleのコアテクノロジーのエッセンスを感じることができます。一方、不眠症に悩める方にもお勧め。興味のある内容とはいえ、さすがに長い。催眠効果、抜群であります(笑)。







2012年11月26日月曜日

Pythonに挑戦「Google's Python Class」!

ついにと言いますか、念願のと言いますか、Pythonに挑戦です! もちろん、全く予備知識無し。文字通り、ゼロからのスタートであります。挫折必至とも思えますが、また亀の歩みのマイペースで進めていけたらと(笑)。もし、挫折してしまったら、笑ってやって下さい。というわけで、基本の「き」、いろはの「い」のGoogle's Python Class、「Strings」、「Lists」、「Sorting」、「Dicts and Files」から始めてみます。









GoogleのKey-Valueストアテクノロジーの一端を覗けます。

2012年11月25日日曜日

Linux Mint 14(Nadia)をインストール

Linux Mint 14(Nadia)をインストールしてみました。前回、GNOME2版のmateを試してみたので、今回はGNOME3版のcinnamonです。インストール画面から全て日本語で進めていけるので、安心感があります。最初に環境設定できれば、後は全自動。躓く部分がないので、緊張感がなく、退屈な時間です(笑)。

インストール後、ちょっと試してみて、どうも日本語入力がうまくいかなかったので、「ソフトウェアの管理」からMozcをインストールしました。これで全て完璧です。

2012年11月24日土曜日

Laravel実験サイト、一区切り

Laravel実験サイト、一区切りです。今まで作成してみた機能をまとめてみました。今回、Laravelを試してみての印象は、開発期間短縮に大いに威力を発揮してくれるだろうということです。大規模なサイト製作には向いていないと思いますが、小・中規模サイトの製作には、最適だと思います。特に、導入のしやすさ、学習コストの低さは、他のフレームワークを確実に凌駕していると思います。思いつきではじめたこの実験プロジェクトですが、Laravelを試す事ができて、本当にラッキーだったと思っています。

実際のサイトはこちら

2012年11月23日金曜日

Laravelのビデオチュートリアル「Laravel Tutorial」全10回(YouTube)

Laravelビデオチュートリアル「Laravel Tutorial」全10回(YouTube)、全部英語なので、閲覧するには、かなりの忍耐を要します(笑)。しかし、ちょっとLaravelを試してから肩肘張らずに眺めていると、なんとなく言っていることがわかってくるような気がします。実際、新たな発見があったり、今までわかっていなかったことが朧気ながら見えてきたりして、なかなか良いじゃないかと思ってしまいました。日本語だと最高なのですが、それでも、ありがたい環境です。作者にも感謝。

2012年11月22日木曜日

Laravelで、製品環境(production)開発環境(development)切り替え

Laravelで、製品環境(production)開発環境(development)切り替えの設定メモです。製品環境に設定しているはずなのに、なんでエラー表示されてしまうのだろうかと、しばらく悩んでいたわけですが、ようやく疑問が解消しました(笑)。設定ファイルの error.php で「detail」の設定を切り替えれば良いようです。ちなみに、今までは、paths.php ファイルで、ローカルのURLを設定していただけでした。まだまだ、基本が、わかってないですね。

/application/config/error.php
/*
|--------------------------------------------------------------------------
| Error Detail
|--------------------------------------------------------------------------
|
| Detailed error messages contain information about the file in which an
| error occurs, as well as a PHP stack trace containing the call stack.
| You'll want them when you're trying to debug your application.
|
| If your application is in production, you'll want to turn off the error
| details for enhanced security and user experience since the exception
| stack trace could contain sensitive information.
|
*/

'detail' => true,
↓↓↓
'detail' => false,

2012年11月21日水曜日

Laravelで、サニタイジング「Laravel-HTMLPurifier-Bundle」

Laravelで、サニタイジング対策の「Laravel-HTMLPurifier-Bundle」バンドルを設定してみました。ブレードテンプレート(Blade Template Engine)は、ディフォルトのままではサニタイズされないみたいなので追加しました。簡単に組込できます。

/application/bundles.php
return array(
    'purifier' => array('auto'=>true)
);
$new_data = Purifier::clean($dirty_data);



参考サイト
Sanitize user input in laravel(Stack Overflow)
Sanitizer for laravel(LARAVEL FORUMS)

2012年11月20日火曜日

Laravelで、ソーシャルアカウント連携「OneAuth」バンドル

Laravelで、ソーシャルアカウント連携の「OneAuth」バンドルを設定してみました。対応しているサービスAPIは、下記の通り。主要なものは全て網羅されています。Twitterだけ実際に試してみましたが、2つの設定ファイル(api.phpurls.php)を変更し、呼び出すコントローラー(connect.php)を設置しただけで、うまく連携できました。

使い方としては、ログインしている状態で、ユーザーテーブルと連携させる仕様です。あらかじめ会員登録できていて、ログインした状態でないと、利用できないと思います、多分?

/bundles/oneauth/config/api.php
return array(
    'providers' => array(

        'basecamp' => array(
            'id'     => '',
            'secret' => '',
        ),

        'dropbox' => array(
            'key'    => '',
            'secret' => '',
        ),

        'facebook' => array(
            'id'     => '',
            'secret' => '',
            'scope'  => 'email,offline_access',
        ),

        'flickr' => array(
            'key'    => '',
            'secret' => '',
        ),

        'foursquare' => array(
            'id'     => '',
            'secret' => '',
        ),

        'github' => array(
            'id'     => '',
            'secret' => '',
        ),

        'google' => array(
            'id'     => '',
            'secret' => '',
        ),

        'instagram' => array(
            'id'     => '',
            'secret' => '',
        ),

        'linkedin' => array(
            'key'    => '',
            'secret' => '',
        ),

        'paypal' => array(
            'id'     => '',
            'secret' => '',
        ),

        'soundcloud' => array(
            'id'     => '',
            'secret' => '',
        ),

        'tumblr' => array(
            'key'    => '',
            'secret' => '',
        ),

        'twitter' => array(
            'key'    => '',
            'secret' => '',
        ),

        'vimeo' => array(
            'key'    => '',
            'secret' => '',
        ),

        'windowlive' => array(
            'id'     => '',
            'secret' => '',
        ),

    ),
);
/bundles/oneauth/config/urls.php
return array(
    'registration' => 'signup',
    'login'        => 'login',
    'callback'     => 'connect/callback',
    
    'registered'   => 'mypage',
    'logged_in'    => 'mypage',
);
/application/controllers/connect.php
class Connect_Controller extends OneAuth\Auth\Controller {
}

2012年11月19日月曜日

Laravelで、sum、countなどの集約関数

Laravelで、sum、countなどの集約関数を利用してみました。最初は使いづらいなと思っていたのですが、次々と絞り込み条件を追加していけるので、ソースがすっきりして、良いじゃないかと思うようになりました。何でもそうですが、慣れるまでは我慢(?)なのかもしれません。

$sum = DB::table('users')
    ->where('gender', '=', 1)
    ->where('age', '>=', 20)
    ->where('age', '<', 30)
    ->sum('votes');

2012年11月18日日曜日

気軽に動画チャットを楽しむことができる「meetingl.com」

気軽に動画チャットを楽しむことができる「meetingl.com」、動画チャットというと、GoogleハングアウトSkypeで十分事足ります。しかし、このmeetinglを知っていて、損はないでしょう。完全に独立したWEBサービスで、インターネットに繋がり、ウェブカメラが利用できれば、どんな状況下でも使うことができます。緊急用途に、普段のビジネス会議にと、幅広く活躍してくれると思います。

2012年11月17日土曜日

Laravelの「利用者の声フォーラム」

Laravelの「利用者の声フォーラム」を覗いてみると、Laravel4に向けての要望やアイデアがいろいろと提起されていて面白いです。Laravelを利用したことがない方や、今後導入を検討している方も、現状の課題や今後の展望が見えてきて、非常に有益ではないでしょうか。挙がっている要望は、どれも的を得ているものばかりで、皆さん、かなり使い込んでいるなと、感心してしまいます。

2012年11月16日金曜日

Laravelのサムネイル画像「THUMBNAIL FROM URL FOR LARAVEL」バンドル

Laravelに、サムネイル画像を作り出してくれる「THUMBNAIL FROM URL FOR LARAVEL」バンドルを組み込んでみました。これが最高に便利なのです。URLを指定しただけで、希望のサイズのサムネイル画像を作成してくれます。下の例のように、簡単にサイズの変更が可能です。作者に、心から感謝。

HTML::image('img/image.png')
↓↓↓
HTML::image('thumburl/thumbnail/100X100/inbound/img/image.png')
HTML::image('thumburl/thumbnail/200X200/inbound/img/image.png')
HTML::image('thumburl/thumbnail/300X300/inbound/img/image.png')
実際に組み込んでみたのがこちら

2012年11月15日木曜日

Laravelで、DB検索

Laravelで、DB検索です。ちょっと複雑なネストした状況下の検索では、functionとその変数用にuseを利用すると、うまくヒットさせることができるようです。しばらくファンクション(function)内の変数の指定方法がわからずに悩み続けましたが、何とか切り抜けられました。よかった。

$members = DB::table('member')
        ->where('gender', '=', 1)
        ->where(function($query) use($num)
        {
            $query->where('age', '>', $num);
            $query->or_where('votes', '>', $num);
        });
実際のサンプルサイトはこちら



参考サイト
How to implement nested where(Laravel Forums)

2012年11月14日水曜日

Laravelに、プロファイラーのlaravel-anbuバンドルを組み込む

Laravelに、プロファイラーのlaravel-anbuバンドルを組み込んでみました。本来は、ECサイト運営開発記さんの記事にあるように、application.php の設定を変えるだけで利用できるようなのですが、うまく設定できなかったので、バンドルを組み込みました。かなり回り道をしたような気もしますが、とにかく利用できるようになりました。やはり、断然、デバックしやすくなります。ありがたい。

/application/bundles.php
return array('anbu' => array('auto' => true));
/application/routes.php
define('LARAVEL_MEMORY', memory_get_usage());
/application/views/templates/main.blade.php
{{ Anbu::render() }}
こんな感じで、クエリーを確認できます。



参考サイト
LaravelでSQLの実行結果が簡単にわかるプロファイラー機能(ECサイト運営開発記さん)

2012年11月13日火曜日

Laravelの文字列操作クラス「Str」にまた感激

Laravelの文字列操作クラス「Str」にまた感激です。特に「Str::slug」が便利。SEOフレンドリーなURLを生成する機能として非常に有難い。日本語文字列だと恩恵を得られませんが、分類タグなどをアルファベットで入力してもらうようにすれば、効果絶大でしょう。他にも使えるメソッドが数多く準備されています。素晴らしい。

2012年11月12日月曜日

Laravelで、定義ファイル

Laravelで、定義ファイルです。Laravelは、かなり自由に書けるので、どこに配置しても問題ないような気がしますが、configフォルダ内に置いておくのが見通しが良くて、良いのでしょう。使い方も、非常に簡単。便利なので、何でもかんでも定義ファイルに詰め込みたくなります(笑)。

2012年11月11日日曜日

LGのウルトラワイドモニタ「EA93 UltraWide Monitor」(2560X1080)

LGのウルトラワイドモニタ「EA93 UltraWide Monitor」(2560X1080)が発表されています。こんなモニターを使うと、アートな気分にさせてくれるかもしれません。HD映像を見ていても、更に余白が生まれるという、何とも贅沢な仕様です。価格が気になるところではありますが、物欲を掻き立てられる一品であることは間違いありません。

2012年11月10日土曜日

Laravelで、フィルター(Filters)

Laravelで、フィルター(Filters)です。これが、本当に便利。ページを表示する前処理として、ユーザーさんに会員登録やログインを促すような場面で威力を発揮します。onlyexceptなどと一緒に用いると、細かい設定が可能です。下の例で言うと、indexとviewのアクション以外に、authフィルターを通すことになります。exceptで設定すると、設定し忘れるということがないので、ありがたい。

フィルターの定義
Route::filter('auth', function()
{
    if (Auth::guest()) return Redirect::to('login');
});
フィルターの読み込み(indexとviewのアクション以外に、authフィルターを通す)
public function __construct()
{
    $this->filter('before', 'auth')->except(array('index','view'));
}
実際に設定してみたサイトがこちら



参考サイト
Build Web Apps From Scratch With Laravel: Filters, Validations, and Files(Nettuts+)

2012年11月9日金曜日

Laravelで、ファイルのアップロード

Laravelで、ファイルのアップロードです。こちらの記事(Build Web Apps From Scratch With Laravel: Filters, Validations, and Files)を参考に設定してみました。ファイルのアップロード以外にもフィルターの概念など、参考になる要素が満載です。

実際のサンプルがこちら。まだ問題が多いですが、とりあえず。

2012年11月8日木曜日

Laravelの入力チェック(バリデーション)に感激

Laravelの入力チェック(バリデーション)に感激です。痒いところに手が届く、その品揃えに、人気の理由を垣間見た気がします。特に便利だなと思うのが、下の3つ。

// 同じデータが入力されているか否かの確認
'password' => 'confirmed'
'token1' => 'same:token2'

// 異なるデータが入力されているか否かの確認
'password' => 'different:old_password',

// 指定ID以外に重複するデータが存在するか否かの確認(ここでの10はid)
'email' => 'unique:users,email_address,10'
特に3つ目の指定IDを除いたユニークチェックは、データ更新の際、非常に重宝します。こういった機能が、デフォルトで備わっているところが、何とも素晴らしい。このバリデーション群だけで、もう十分Laravelを利用する価値があると思います。

実際に組み込んだサンプルがこちら



参考サイト
バリデーション(Web職人のためのフレームワークさん)

2012年11月7日水曜日

Laravelに、swiftmailerバンドルを設定

Laravelに、swiftmailerバンドルを設定してみました。コレ1サーバーさんの記事に紹介されているように、gmailをSMTPサーバーとして設定できます。素晴らしい。

/bundles/swiftmailer/start.php
// Register a transporter in the IoC container
Laravel\IoC::register('mailer.transport', function()
{
    // return Swift_MailTransport::newInstance();
    return Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')
        ->setUsername('yourmailid@gmail.com')
        ->setPassword('yourgmailpassword');
});
その他、変更を加えた点は、preferences.php ファイル。クラウド環境だと、/tmp ディレクトリを利用することができずにエラーが出てしまうので、ごっそりコメントアウトしました。キャッシュとして利用している部分のようなので、問題ないような気がします。

/bundles/swiftmailer/library/preferences.php
/*
if (function_exists('sys_get_temp_dir') && is_writable(sys_get_temp_dir()))
{
  Swift_Preferences::getInstance()
    -> setTempDir(sys_get_temp_dir())
    -> setCacheType('disk');
}
*/
実際のサンプルがこちら。お問合せのメールが飛ぶようになりました。嬉しい(笑)。



参考サイト
Laravelでメール送信(コレ1サーバーさん)