Category Archives: Log

Log

FuelPHPで管理画面を作ってみる

今日はFuelPHPを触ってみる。

2年以上前にKohanaをつかってWebサービス作ったり、Drupalのモジュール書いたりしてた。で、久しぶりにPHPでサーバアプリを作成することになった。で、どのフレームワークを使うか検討してみたんだけど、KohanaよりFuelPHPの方がよさそう。なので、FuelPHPを触って、ついでにPHPのリハビリ。

本当はRuby on Railsでやりたいんだけどね…

早速MAMPの更新。ここんところ使ってなかったので、バージョンがちょっと上がってた。

FuelPHPのインストール

$ curl get.fuelphp.com/oil | sh

oilという実行ファイルをインストール。oilを使ってプロジェクトを作成するらしい。oilは/usr/bin/oilにインストールされる。

プロジェクトを作成

$ oil create MyToDo

と実行すると、プロジェクトに必要なファイルがダウンロードされ、プロジェクトが作成される。こんなディレクトリ構成。

.
├── docs
│   ├── assets
│   │   ├── css
│   │   ├── fonts
│   │   ├── img
│   │   └── js
│   ├── classes
│   │   ├── agent
│   │   ├── cache
│   │   ├── database
│   │   ├── file
│   │   ├── model_crud
│   │   ├── mongo
│   │   ├── session
│   │   ├── upload
│   │   └── validation
│   ├── general
│   │   └── controllers
│   ├── installation
│   ├── packages
│   │   ├── auth
│   │   ├── email
│   │   ├── oil
│   │   ├── orm
│   │   └── parser
│   └── templates
├── fuel
│   ├── app
│   │   ├── cache
│   │   ├── classes
│   │   ├── config
│   │   ├── lang
│   │   ├── logs
│   │   ├── migrations
│   │   ├── modules
│   │   ├── tasks
│   │   ├── tmp
│   │   ├── vendor
│   │   └── views
│   ├── core
│   │   ├── classes
│   │   ├── config
│   │   ├── lang
│   │   ├── tasks
│   │   ├── tests
│   │   ├── vendor
│   │   └── views
│   └── packages
│       ├── auth
│       ├── email
│       ├── oil
│       ├── orm
│       └── parser
└── public
    └── assets
        ├── css
        ├── img
        └── js

CodeIgniter系なのでKohanaとほぼ同じ(だっけ?)。

MAMPで表示するために

$ ln -s /Users/username/Documents/Workspace/MyToDo/public /Applications/MAMP/htdocs/mytodo

とシンボリックリンクを張る。MAMP(ポートを標準設定にしている)を起動して、http://localhost/mytodoにアクセスするとWelcomeページが表示された。

FuelPHP Welcomeページ

設定

まずDBの設定を行う。
MAMPのphpmyadminでデータベース「mytodo」を作成する。
fuel/app/config/development/db.phpを編集する。
dbname=mytodoとする。

return array(
	'default' => array(
		'connection'  => array(
			'dsn'        => 'mysql:host=localhost;dbname=mytodo',
			'username'   => 'root',
			'password'   => 'root',
		),
	),
);

次にORMを利用するように設定する。fuel/app/config/config.phpを編集する。packagesでormがコメントアウトされているので有効にする。認証も行うので、authも入れる。

	/**************************************************************************/
	/* Always Load                                                            */
	/**************************************************************************/
	'always_load'  => array(
 
		'packages'  => array(
		    'auth',
		    'orm',
		),

また、同ファイルを以下のように変更する。

		'whitelisted_classes' => array(
			'Fuel\\Core\\Response',
			'Fuel\\Core\\View',
			'Fuel\\Core\\ViewModel',
            'Fuel\Core\Validation',
			'Closure',
		)

続いて、認証におけるグループを設定する。fuel/packages/auth/config/simpleauth.phpを編集する。

	'groups' => array(
		-1   => array('name' => 'Banned', 'roles' => array('banned')),
		0    => array('name' => 'Guests', 'roles' => array()),
		1    => array('name' => 'Users', 'roles' => array('user')),
		50   => array('name' => 'Moderators', 'roles' => array('user', 'moderator')),
		100  => array('name' => 'Administrators', 'roles' => array('user', 'moderator', 'admin')),
	),

同ファイルを編集してゲストログインができないように設定する。

	'guest_login' => false,

ユーザの作成

ユーザモデルを作成する。

$ oil generate model users username:varchar[50] password:string group:int email:string last_login:int login_hash:string profile_fields:text
$ oil refine migrate

oilのコンソールモードでadminユーザを作成する。

$ oil console
Fuel 1.1 - PHP 5.3.6 (cli) (Sep 15 2011 11:18:57) [Darwin]
>>> Auth::create_user('admin', 'password', 'r.izumita@example.com', 100);
Warning - Cannot modify header information - headers already sent by (output started at /Users/rizumita/Documents/Workspace/MyToDo/fuel/core/classes/cli.php:127) in COREPATH/classes/cookie.php on line 95
1
>>> [ctrl-c]

コードの生成

oil genetare adminコマンドで認証付きのコードが生成される。ToDoモデルとToDoテーブル、コントローラ、ビューが作成される。

$ oil generate admin todos title:string summary:text due:datetime user_id:int
$ oil refine migrate

ブラウザでadmin/todosにアクセスすると認証を求められる。
Login
上で設定したadmin/passwordでログインする。と、Dashboardが表示される。
Dashboard
ナビゲーションバーにTodosがあるのでクリックするとToDoの一覧ページが表示される。
Todos
Add new TodoボタンからToDo追加画面に遷移する。

とりあえず管理画面までできた。
ユーザの選択とか日付の入力のカスタマイズはおいておく。

Log

XcodeでARCに変換できなかった時

XcodeでConvert to Objective-C ARCでARC化しようとした時に、Saveボタンを押しても変換されなかった。

スナップショットを作成できないのが問題らしく、調べたら.gitが邪魔らしい。.gitを外部に移動させるといいという情報にしたがって、.gitを移動して再度実行してみた。

が、失敗。Saveできない。

さらに検索すると、Developer Toolsをアンインストールして再度インストールするといいという情報が。試してみたが、やはりうまくいかない。

どうしようもなくなったが、ふと思い立って、試しにプロジェクトフォルダを他の場所に移動(この時はデスクトップ)に移動して、.gitを外部に出して、再度Saveしてみると成功。

何が悪かったか分からないが、とにかく変換できた。

Log

Xcodeで.hファイルがfile not foundになったら

Xcodeで.hファイルをimportすると、File not foundになって、でもビルドは出来る状態になることがある。
その場合は、当該ターゲットを表示して、Build PhasesのCompile Sourcesからその.hファイルの対になる.mファイルを削除して、再度追加すると直る。

Log

CALayerの3D transformが変換画像に反映されなくてあせった

今請け負っている仕事でViewを画像変換して保存するという仕様があるのだが、CALayerを3d transformしていて、いざrenderInContextで画像に変換しようとしたら、transformが反映されませんでした。ドキュメント見たら「layers that use 3D transforms are not rendered」なんて書かれてて、あと二日くらいでOpenGLで書き直しか?と非常にあせった。

で、3Dな変換は行っていなかったので、かわりにaffineTransformを使ってみたら無事変換できた。

Log

Evernoteのアカウント名を変更

Evernoteのアカウント名を変更した。

プレミアム会員のみアカウント名を変更してもらえる。今月25日に切れる契約だったので、ちょうどよかった。

サポートに変更のメッセージを送る→バックアップをとるように返信が来る→バックアップをとってリプライ→変更確認のメールが来る→変更希望を伝える→変更完了作業が行われる。

実際にはバックアップを利用することはなく、データは正常に受け継がれた。

無料会員は自分で新規アカウントを作ってデータをバックアップからリストアするというちょっと手間な作業が必要。

Log

Xcodeの旧バージョンを取得

Xcode4.2をインストールしたが、Xcode4.1が必要になった。

Xcode4.1等の旧バージョンはhttps://developer.apple.com/downloads/index.actionからダウンロードできた。

Log

LionのTerminal.appでリモート作業でのカラー問題の回避方法

LionのTerminal.appでリモートで作業してるとError opening terminal: xterm-256colorというエラーが発生。

Terminal.appの設定の詳細タブで「ターミナルの宣言方法」をxterm-colorに変更するとエラーが発生しなくなる。

201108261529.jpg

Log

MacBook Pro early 2011にCrucial m4 SSDを載せる

MacBook Pro earlyに2011を載せてみた。うわさ通りレインボーカーソルがまわってフリーズしたようになった。ので、ファームウェアをアップデートしてみることにした。

Macでのアップデートのやり方の情報がすくなかった。少ない情報から以下のようにやってみた。

Crucial.com Product Downloads – Firmware Updatesからm4用のファームウェアisoをダウンロードしてDVDを作成。MBP early 2011ではアップデートができないらしいので、以前使っていたMacBookにm4をとりつける。DVDから起動して、指示に従う(yesを入力するくらい)。アップデート終了したらm4をMBPにとりつける。

以上で完了。レインボーカーソルが表示されることがなくなり、とても快調になった。

Log

Mac (Lion) にzshをインストール

Lionにzshをインストールした。以前もやったのだが、記録がなかったのでとどめておく。

zshをHomebrewでインストールする。

$ brew install zsh

/ect/shellsに/usr/local/bin/zshを追加する。

システム環境設定の「ユーザとグループ」を開く。鍵を開く。
シェルを変更したいユーザを右クリックして詳細オプションを開く。
ログインシェルを/usr/local/bin/zshに変更する。

Log

Safari5.1でEvernoteクリッパープラグインが使えないのでブックマークを使用する

Safari5.1になってEvernoteクリッパープラグインが使えなくなっていますね。

しかたがないので、そのうち対応されることでしょうからそれまでの間はブックマークレットを使用してクリップすることにします。

追記: Safari 5.1からEvernoteにPDFで保存する方法について記事を書きました。

Get Adobe Flash playerPlugin by wpburn.com wordpress themes