CodeIgniter2 #6 認証
さて、認証システムだがこちらも標準ではない。で、いろいろ参考にして今回はこちらのページのを使用することにしました。
- データベースにテーブルを作成
- application/libraries/authex.php を作成
- login コントローラ/Viewを作成
ふむふむ。
parent::Controller(); のところを parent::__construct(); に変更しないと動かないぞと。
CodeIgniter2 #5 画面のいろいろ

まあ、WEB制作には画面の設計がつきもので、デザインに凝り、ボタンに凝り、位置に凝り、精一杯の努力をするわけだがなんとしても絵心がないので、今回はそこらあたりをまとめて何とかしてくれそうな jQuery Mobile にした。
それだけ。
まあ、その他を検討していないわけではないが、betaって言う問題もあるけどそのうちbetaも取れるだろうし。その他のいろいろに比べれば利点がいっぱいと言うことで決定。
CodeIgniter2 #04 Layout レイアウトライブラリ
標準では Layout 機能がないのでここからもらってくる。
// file /application/libraries/Layout.php
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Layout
{
var $obj;
var $layout;
function Layout($layout = "layout_main")
{
$this->obj =& get_instance();
$this->layout = $layout;
}
function setLayout($layout)
{
$this->layout = $layout;
}
function view($view, $data=null, $return=false)
{
$loadedData = array();
$loadedData['content_for_layout'] = $this->obj->load->view($view,$data,true);
if($return)
{
$output = $this->obj->load->view($this->layout, $loadedData, true);
return $output;
}
else
{
$this->obj->load->view($this->layout, $loadedData, false);
}
}
}
?>
使い方はこんな感じ。
// 最初にライブラリの読み込み
$this->load->library('layout', 'layout_main');
// もしいつも使うのであれば、application/config.php にて以下の設定を行う
$autoload['libraries'] = array('layout');
// ビューの出力
$data->title_for_layout='ページタイトル';
$this->layout->view('/shop/view_cart', $data);
// layout ファイル /application/views/layout_main.php
<html>
<head>
<title><?=$title_for_layout?></title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<link rel="stylesheet" href="/css/main.css" type="text/css" />
</head>
<body>
<div id="pagewidth" >
<div id="header" ><img src="/images/header.jpg" width="700" height="200"></div>
<div id="wrapper" class="clearfix" >
<div id="twocols" class="clearfix">
<?php echo $content_for_layout?>
</div>
</div>
<div id="footer" > Footer >/div>
</div>
</body>
</html>
CodeIgniter2 #03 $_GETを使えるように

いくら何でも、$_GET とれないと困るだろうということで、ここと、ここを参考にさせてもらって修正する。
- application/config/config.php の 修正
$config['allow_get_array'] = TRUE; $config['enable_query_strings'] = TRUE; $config['controller_trigger'] = 'c'; $config['function_trigger'] = 'm'; $config['directory_trigger'] = 'd'; $config['permitted_uri_chars'] = ''; $config['uri_protocol'] = "AUTO";
- application/config/hooks.php の修正
$config['enable_hooks'] = TRUE;
$hook['pre_system'][] = array(
'class' => 'ConvertQueryString',
'function' => 'execute',
'filename' => 'ConvertQueryString.php',
'filepath' => 'hooks',
'params' => array()
);
これで、$_GET のパラメータはすべて $_PUT にぶち込まれるので、バリデーションも行える様になる。ただ、getで呼び出すときには &c=controller&m=function を付加する必要がある。
※サーバによっては?以降がうまくとれないことがあるらしい。
※form_open (‘c=controller&m=func”) って書く必要がある
CodeIgniter2 #02 ありがちな初期設定
- こちらのページを参考にしました。
- application/config/config.php にベースURLを記述
- application/config/database.php にデータベース接続情報を記述
- index.php の実行モードを development から testing へ変更。エラーを画面表示するようにする。
- application/config/config.php の $config['log_threshold'] = 4; へ変更。すべてのログを出力する。
- application/logs/ フォルダーのパーミッションを書き込み可能に変更。
- application/config/config.php の $config['encryption_key'] = ”; に適当な文字列を設定。
- application/config/config.php の $config['sess_cookie_name'] = ‘ci_session’; に適当な文字列を設定。
- $config['sess_use_database'] = FALSE; を TRUE に変更。データベースにセッションテーブルを作成する。
- application/config/config.php の $config['global_xss_filtering'] = FALSE; を TRUE に変更。
- application/config/config.php の $config['csrf_protection'] = FALSE; を TRUE に変更。(全てのformタグをformヘルパーの form_open() で開くこと)
とりあえず、これくらい設定する。
で、URLにアクセスしてみる。エラーが出なければOK。エラーが出た場合にはログが application/logs/ に出力されるので確認する。下の出ればOK。
CodeIgniter2 #01 ありがちにインストール
CodeIgniter2.0.3を使ってみようと思ったときのメモ
ちなみにCodeIgniterにした理由以下の通り。
- 軽量である&学習時間が少なくてすむ
- フレームワークの縛りが緩い
- 日本語ドキュメントが充実
- php 5.1.6 に対応している
特に最後の php5.1.6に正式に対応しているのが決め手。Cake/Symfony等の最新バージョンでは 5.3 以上でないといけないとなっており、利用できないサーバが発生する可能性が高いためです。自社で専用サーバにて稼働させる場合には特に問題ないけど、ありがちな話でお客様は安い共有サーバを使っていたりする可能性が高いので。
- 日本CodeIgniterユーザ会のページより日本語化済みのファイルをダウンロード。
- ファイルを展開(展開後のファイルサイズは6.5M程度、ユーザーガイドを除けば1.3M)
とりあえず、これで用意はできた。もちろん別途に以下の用意もしました。
- サーバ(今回は自社のPleskサーバに領域を設定)
- ドメイン
- データベース(MySQL)
EXCEL2010
新しくインストールしたPC上のEXCEL2010にて問題が起きた
・ネットワーク上のファイルを開こうとすると「XXファイルを開くことができません」と表示される。それだけ。
補助情報として
・ローカルのファイルは開くことができる
・同じファイルをネットワーク上にコピーすると上記のメッセージが出て開かない
・ローカルに持ってくると開くことができる
・ネットワーク上のファイルサーバはWindows2008R2で、ワークグループ共有でドメインを使っていない
・EXCEL2007/EXCEL2003を使用している同僚は問題ない。
・xls/xlsxファイルのどちらも関係なく同様の症状となる
・新しく組んだPCでSSDが入っている
もう少しメッセージ何とかしてほしいものだ。理由が全然わからない。ネットで検索してみると以下の問題が見つかった。
EXCELファイルを開けない理由
・xlsxをEXCEL2003とかで開こうとしている -> 互換ツールをインストールする
・マクロ付きファイルのためメッセージが出る -> セキュリティオプションでマクロを許可する
・ダウンロードファイルのため保護モードになる -> セキュリティオプションで保護モードをやめる
・「ファイルが破損しているため開くことができません」 -> バグ
・ネットワーク上のファイルを開くときに非常に時間がかかる -> バグ
・ほんとにファイルが壊れてる -> あきらめる
全然見つからない。
開かない理由としては通常メッセージが表示されるので原因がわかるのだけれど、何もメッセージが出ないというのは困ったものだ。散々探したあげく、関係していると思われるところが見つかった。SSDがらみで変更したのが徒となっていたようだ。
COOL LEAF by Minebea

“COOL LEAF”は、キートップを全て無くした全面フラットのキーボードです。導光板式バックライトを採用した鏡面パネルに文字が浮かびあがる斬新なデザイン は、高いインテリア性と同時に、医療現場や照明を暗くしたホームシアター、清浄性が求められる食品工場やクリーンルームなど、様々な用途でご活用いただけ る可能性のあるキーボードです。
“COOL LEAF”は、当社のキーボード(入力機器)、ライティングデバイス(導光板式バックライト)、計測機器(フォースセンサー)の設計・開発で培ってきた技術の組み合わせによって製品化が実現したもので「ミネベアの横の総合力を結集した開発製品」です。
とのこと、2万前後。これ欲しい。
robocopy.exe
DOS の頃には xcopy や zcopy などにお世話になりましたが、Windows7の時代にお世話になっているのが、robocopy です。
この頃の Windows7 などには標準でついているので困った時に使用しています。その他にも GUI で便利に使用できる FireFileCopy や TeraCopy など色々あるのにとは思いますが以下の点で非常に助かります。
- 壊れかけのHDDからデータをサルベージしたい
- 時々エラーの発生するNASからファイルをサルベージしたい
など、非常事態に於いてのオプションが有効なのです。もちろん壊れてしまったHDDからデータをサルベージしないといけない場合などには意味はありませんが、特定のセクタで読めないとかそういう場合に強い味方になります。
使用方法はオプションを付けないで起動すると表示されます。数がとっても多いので使いそうな物だけピックアップします。
C:\>robocopy
-------------------------------------------------------------------------------
ROBOCOPY :: Windows の堅牢性の高いファイル コピー
-------------------------------------------------------------------------------
開始: Sun Mar 20 12:04:14 2011
簡易な使用法 :: ROBOCOPY コピー元 コピー先 /MIR
コピー元 :: コピー元ディレクトリ (ドライブ:\パスまたは \\サーバー
\共有\パス)。
コピー先 :: コピー先ディレクトリ (ドライブ:\パスまたは \\サーバー
\\共有\パス)。
/MIR :: 完全なディレクトリ ツリーをミラー化します。
詳細な使用方法については、ROBOCOPY /? を実行してください。
**** /MIR はファイルをコピーできるだけでなく、削除もできます。
- /XO 古いファイルを除外します
- /W:n エラーが起きた時に n 秒後に再試行します
- /S サブディレクトリを含む
- /R:n エラーのリトライ回数の指定
- /FFT ファイルの新旧比較時にタイムスタンプの差2秒を無視する
基本的には copy コマンドと同様です。 /s を付けるればフォルダも全部、/mir を付ければミラーリングっぽくコピーしてくれます。
RocketHybrid 122x memo
>
株式会社ディラックは、SSDとHDDでハイブリッドドライブを構成する米HighPoint Technology製SATAインターフェイスカード「RocketHybrid 122x」シリーズ2製品を3月18日より発売する。価格はオープンプライスで、店頭予想価格はいずれも8,980円前後の見込み。
>ハイブリッドドライブを構成するためのインターフェイスカード。コントローラはMarvell製88SE9130で、SATA 6Gbpsに対応し、RocketHybrid 1220は内蔵の、RocketHybrid 1222はeSATAを2ポート搭載する。
(PCWatchより)
なんというか価格の割に使えそう。。SSDを大容量HDDのキャッシュに自動的に使ってくれるという便利さ。SSDは256GBとかだと目が飛び出るような値段がするので、価格低下の激しい大容量HDDと組み合わせるのは非常に理にかなっている。HDD側でSSD(というかFLASHメモリ)を組み込んだ製品もアナウンスはあったような気がするが、そのあとを追いかけていないので不明。
同じくソフトウェア側でやってる物や、RAIDコントローラ、ついでにソフトウェア遅延書き込み系もピックアップしておく。HyperDiskCacheがお勧めかな。
- アダプテック MaxIQ (RAIDコントローラ+SSDキャッシュ)
- silverstone HDDBOOST (RocketHybrid 同様な2.5HDDを入れる3.5HDDケース)
- アイ・オー マッハドライブ (メインメモリをライトキャッシュに)
- バッファロー ターボSSD (メインメモリをライトキャッシュに)
- 電机本舗 プチフリバスター (メインメモリをライトキャッシュに)
- アーク情報システム SSD革命(どっちかというとRAMDISK)
- HyperDiskCache
