Posted on

CodeIgniterのlayout libraryを使ってみる

@localdisk の作成された layout library を使ってみました。すいません、ただそれだけです。layout library の記事を見て頂ければほとんどわかる内容ですが、通常(あくまで僕なりの)の書き方との違いとか書きました。

まずは、ライブラリとなる Layout.php を設置します。
application/libraries/Layout.php

次にテンプレートとなる main.php を設置します。
application/views/layout/main.php

で、呼び出すコントローラ側に以下のように記載します。
今までの書き方はこうでした。$dataに出力したい情報(動的データ)を格納し、viewのロード時に渡します。
[cc lang=”php”]
$data[‘header_title’] = ‘ヘッダーのタイトル’;
$data[‘content_title’] = ‘タイトル’;
$data[‘content’] = ‘ここは本文ですよ’;
$this->load->view(‘layout/main’, $data);
[/cc]

ライブラリ適用後はこのようになります。
layoutライブラリをロードして(または application/config/autoload.php で事前にロードしたらスッキリしますね)あとはメソッドチェーンで1行書くだけ。
[cc lang=”php”]
$this->load->library(‘layout’);
$this->layout->write(‘header_title’, ‘ヘッダーのタイトル’)->write(‘content_title’, ‘タイトル’)->write(‘content’, ‘ここは本文ですよ’)->render();
[/cc]

なるほど、きれいですね。この場合は layout/main だけが共通ですが、共通レイアウトが複数ある場合どうすれば良いかなとか思いましたが深く追求せず。

Posted on

CodeIgniterのURI表記

すごく基本的なことですが、CodeIgniterインストール直後URIは以下のようになります。local環境でci2というフォルダにインストールしたとします。

http://localhost/ci2/index.php/welcome

ちなみに、welcomeページが初期ページとして表示されるように設定している箇所は、
application/config/routes.php 41行目

[cc lang=”php”]
$route[‘default_controller’] = “welcome”;
[/cc]

と設定されているからですね。例えば homeコントローラを作成したとして、サイトの初期ページにしたい場合は、

[cc lang=”php”]
$route[‘default_controller’] = “home”;
[/cc]

とするだけです。で、話戻ってURIですが、index.phpがかっこ悪いので、index.php ファイルをURLから除去する設定をしてみます。
.htaccess を作成します。

[cc lang=”php”]
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /ci2/index.php/$1 [L]
[/cc]

以上です。こうすることで、
http://localhost/ci2/welcome (http://localhost/ci2/ と表示される内容は同じ)
と表示されます。

Posted on

CodeIgniter2.0のインストール

ようやく春めいて来ました。と言うことで先月メジャーアップデートされた CodeIgniter をロリポップにインストールしてみました。CodeIgniter は次のステップでインストールできます。とても簡単にインストールすることができます。

1.CodeIgniterを sourceforge よりダウンロードします。
codeigniter2.0.1ダウンロード

2.ZIP パッケージを展開します。現時点での最新は ci-ja-all-in-one-2.0.1-1.zip です。

3.サーバに CodeIgniter のフォルダとファイルをアップロードします。通常は、index.php ファイルがルートになります。
例えば hogemoge.lolipop.jp にアップロードしたとします。

4.application/config/config.php ファイルをテキストエディタで開き、ベースURL(base_url)を記入。暗号化やセッションを利用する場合は暗号鍵(encryption_key)を記入します。
[cc lang=”php”]
$config[‘base_url’] = ‘http://hogemoge.lolipop.jp/’;
[/cc]
[cc lang=”php”]
$config[‘encryption_key’] = ‘任意の暗号鍵を設定’;
[/cc]

5.データベースを使用する際には、 application/config/database.php ファイルをテキストエディタで開き、データベースの設定を記入します。
[cc lang=”php”]
$db[‘default’][‘hostname’] = ‘mysqlxxx.phy.lolipop.jp’;
$db[‘default’][‘username’] = ‘LAxxxxxxxx’;
$db[‘default’][‘password’] = ‘xxxxxxxxxxxxxxxxx’;
$db[‘default’][‘database’] = ‘LAxxxxxxxx-xxxxxx’;
[/cc]

6.以上で完了です。
codeigniter2.0.1インストール完了

version1.x.xから使っている人は気づいていると思いますが、2.0.xではディレクトリ構成が少し変更されているようです。

CodeIgniter 1.x.x
[cc lang=”php”]
index.php
– system
— application
— helpers
— language
— libraries
— scaffolding
[/cc]

CodeIgniter 2.0.x
[cc lang=”php”]
index.php
– application
– system
— core
— database
— fonts
— helpers
— language
— libraries
[/cc]

applicationフォルダ内に実際スクリプトを書いて行くので、コア部分と切り離れて気分的に?作業しやすいのかなと。あと scaffolding がなくなりました(確かに、ほとんど使っていませんでした)。今回のバージョンアップからはPHP5が必須となります。

Posted on

Klab×ペパボ合同勉強会

発端は、IT Developerが企画する福岡のクラブイベントAfroTempleというイベントで知り合った@motodakさんと一緒に勉強会して他の会社がどんな感じで勉強会しているのか、他の会社の技術者に対して話す機会、コミュニケーションをする機会があると刺激にもなるしお互いに取ってプラスになるんじゃないか。といった流れで、「Klab×ペパボ合同勉強会」が実現しました。(※福岡です)
第0回の内容としては、web socket, web storage, oauth など。僕はかなり資料がぎりぎり(Web Sql Database と同じ,行き詰っていました..)でしたが web storage について調べてみた事をつらつらと話させていただきました。
なかなか新鮮な勉強会でした。楽しかった〜。

Posted on

Indexed Database

HTML5 勉強会@福岡 – 第8回で Indexed Database がどのようなものか聞いてきました。以下は備忘録です。

用途
web アプリのプラットフォーム
スマートフォン、モバイルなどオフラインでも使いたい。
やはりアプリ、ゲーム用途が多いのかなと言った印象

3種類のローカルデータベースAPI
Web Storage:ごく簡単なデータ保存。なのでcookieの代替手段的な使い方
Web SQL Database:あまり進んでいない。なくなる?
Indexed Database:一番利用用途が広い。key value store ライクな使い方

Indexed Database
KVSっぽいけど、キー以外にもインデックスをつけられる
トランザクション使える
FireFox4で実装される(ちなみにfirefox4 beta2ではまだ使う事ができませんでした)

API
非同期:結果をイベントハンドラで受け取る
同期:結果をメソッドの戻り値

キーの種類
in-line keys プロパティをキーとして使用
out-of-line keys 自動採番

レコードの取得
idx.get() 1レコード
KeyRange 範囲指定による取得(only,leftBound,rightBound,bound)

トランザクション
read only
read write
snapshot read
commit/abort(rollback)
非同期APIではcommitはない

Web Storageであれば利用できるので試しに使ってみましたが、Todolistやアドレス帳以外の
利用用途が思いつきません(頭固い)…Indexed Database を早く触ってみたい感じです。

Posted on

電子書籍が作れるブクログのパブー

ブクログのパブー
電子書籍が自分で簡単に作れるブクログのパブーがリリースされました。小説、日記、漫画、絵本など自己表現をこのパブーでぶつけてみてはいかがでしょうか。
もちろん、いろんな人が作家となって作られた本は読むことができるし、それに売ること、買うこともできるってすごく画期的ですよね?私も早速、奥さんに話したらすごく興味ありそうでした。

とにかく、見て触って体感してみて下さい。

Posted on

GAEをほんのちょっと触ってみた

以下,自分用備忘録.

URLマッピング
main関数で以下のように書くと,http://(アプリケーション名).appspot.com/ にアクセスすると MainHandlerクラスを呼び出し,http://(アプリケーション名).appspot.com/hello にアクセスすると HelloHandlerクラスを呼び出す.

def main():
 application = webapp.WSGIApplication(
  [
   (‘/’, MainHandler),
   (‘/hello’, HelloHandler)
  ],
  debug=True
 )
 wsgiref.handlers.CGIHandler().run(application)

テンプレートの利用
上記の MainHandler は以下の通り.予め viewフォルダにindex.htmlを作成.
ファイルをレンダリングして htmlに返します.最後の行は出力.

class MainHandler(webapp.RequestHandler):
 def get(self):
  fpath = os.path.join(os.path.dirname(__file__),’views’,’index.html’)
  html = template.render(fpath,None)
  self.response.out.write(html)

Posted on

ロリポップが80万人突破で8GBに容量アップ

ロリポップが80万人突破で8GBに容量アップしました。容量追加オプションで10GB(+2GB)になります。あわせて31日まで初期費用無料キャンペーンやってます!

自分が初めてロリポップ使った時は200MB。え、っと、何倍…40倍?!
これだけあれば容量気にしなくて良いですね。

Posted on

バーベイタム

Verbatim Championship

全日本バーベイタム選手権が面白そうだったのでやってみた。
ゲームも面白いのだけど、なにより作った側の人がすごいと思った。
パラメータ持たせて戦わせるのはわかるんですが戦闘シーンがよく出来過ぎ!
プログラマはこれくらいできないといけないのだろうか・・・物理苦手だな。。

ちなみに僕が作ったMyMonsterはこちら

Posted on

ATND for WordPressを公開しました

サイドバーに表示
こんなかんじ

まだまだ自分専用(ブログ下部に表示させています)ですが、必要最低限の機能を追加して取りあえず使ってもらえる状態にしました。
プラグイン用のページを設けましたので使い方はそちらを見て下さい。

ATND for WordPress

あと、主催者や参加者でもイベントが取られるみたいなので、

○○さん主催のイベント
私の参加しているイベント

とか表示するのも面白いですね!

プラグインの自動アップロード方法とか全然わかっていないので
今後のメンテ方法とか次回の WP勉強会で聞いておかねば。。
ソースはcodecheck.inにおいておきます。

それとそれと、ただいま一緒に働いてくれる人を募集しているので興味ある方は是非。(くどい)