Hatena::ブログ(Diary)

cake bake diary

2011年09月03日

NetBeans+cakephp-netbeans入れてみた

| 16:33 | NetBeans+cakephp-netbeans入れてみた - cake bake diary を含むブックマーク NetBeans+cakephp-netbeans入れてみた - cake bake diary のブックマークコメント

そろそろ秀丸WinSCPの環境から脱却したくてNetBeanscakephp-netbeansプラグインを試してみた。

参考にした記事:

ページが見つかりませんでした – 市販薬で老人性イボ除去BANANA|気づいたらポロリとイボが取れた

NeBeansのインストール

インストールしたバージョンは7.0.1のPHP版。

cakephp-netbeansはevilbloodydemon氏の版

cakephp-netbeansのビルドで嵌る。

cakephp-netbeansプロジェクトを右クリック>「NBMを生成」でコンパイルできるはずが、エラー。

ソースレベルも1.5になってるし、なんで?

ここでしばらく嵌る。

PHP版だからかなと思ってALL版をインストールしてみるものの、ダメ。

エラーメッセージ*1を見ると、ハーネスが無いよーって言われてるみたい。

ハーネスってなに。

プロジェクトプロパティからライブラリの項を見ると、NetBeansプラットフォームのところが赤字で「不明なプラットフォーム」になってた。

そこでプラットフォームの管理から"C:\Program Files\NetBeans 7.0.1"を追加し、ハーネスを「プラットフォームに含まれる」にする。

これでモジュールの依存関係が解決でき、ビルド成功。

あとは参考記事の通りにプラグインをインストール。

リモートからプロジェクトを作成

ページが見つかりませんでした – 市販薬で老人性イボ除去BANANA|気づいたらポロリとイボが取れた

既存の開発環境はリモートをWinSCPで操作+秀丸で編集(保存と同時にアップロード)なので、同じにする。

「リモートサーバーからのPHPアプリケーション」でプロジェクトを作成し、SFTPで接続し同期。

設定で「既知のホストファイル」を明示的に指定しないと、アップロードの度に確認が出るので、必ず指定する。

転送速度はWinSCPと同じくらい。

WinSCPだとたまに、転送されてると思ったら認証キーのパスワード要求で止まってたりするので、こっちの方が便利。

ただログは確認しずらい。

Zen-Codingの導入

Zen-Codingが便利らしい[導入編] | Late Riser

を参考にプラグインをインストール。

なぜかショートカットキーがCTRL+Alt+Nじゃなくて、CTRL+Windowsキー+Alt+Nになってる。

Zen-Codingは秀丸版の方が高機能で使いやすい印象。

lang="ja"だし。

秀丸版は子要素スペース記法が拡張されてるのが良かったけどまあ我慢する。

Gitの導入

結論から言うと断念しました。

理由は、

  1. 認証キーの指定方法がわからない*2
  2. リモートと同期を取っているのでブランチを移動するスタイルの開発が現実的ではない。

1の問題が解決できず、かつ2の問題もあったので諦めることに。

ブランチ使えなくなるのは痛いので、早々にローカル開発への切り替えを検討します*3

XDebugの導入

これも上記の理由で断念しました。

リモートデバッグ自体はできるらしいものの、ローカルへ切り替えた方が早そうなので。

テンプレートの作成

ツール>テンプレート から、コンポーネントやヘルパーのひな形を作成。

まとめ

とにかく動作が軽い&メモリも食わないので、おおむね満足してます。

ただ肝心のcakephp-netbeansがいまいち良くわからない&役に立ってないのが・・・うーん

*1:メモし忘れた。。

*2:要するにリモートリポジトリに接続できない

*3:MacbookAir欲しい

icpa0icpa0 2012/04/05 18:40 はじめまして、ICPAの中原でございます。
突然のメールで失礼致します。ブログを拝見させて頂いてメールさせて頂いております。
私どもは外資系ヘッドハンティングファームでございます。外資系IT企業、コンサルティングファーム、国内IT企業のエンジニアポジションをご紹介しております。
現在、クライアント(自社サービスを持った企業)の強いご希望でスマートフォン向けアプリエンジニア、アプリケーションエンジニア、サーバー、DB周りのエンジニアを急務で探しておりまします。
管理人様が上記PHPでプログラミングが出来るエンジニアかと思い非常に興味を持っております。
もし、転職したい、作るプロダクトを変えたい、新しい技術を職場で学びたいという希望があれば、是非ご連絡ください。
何卒、よろしくお願いします。
E-mail nakahara@icpa.com

2011年09月02日

ヘルパーやコンポーネントを別名で利用できるようにする「Hack Plugin」が便利

| 16:11 | ヘルパーやコンポーネントを別名で利用できるようにする「Hack Plugin」が便利 - cake bake diary を含むブックマーク ヘルパーやコンポーネントを別名で利用できるようにする「Hack Plugin」が便利 - cake bake diary のブックマークコメント

ページが見つかりませんでした – 1Byte info

を見て。

no title

使い方:

<?php
var $helpers = array(
        'Hack.Alias' => array(
            'Html' => 'Core.AppHtml',
            'Form' => 'Core.AppForm',
            'Paginator' => 'Core.AppPaginator',
            'Number' => 'Core.AppNumber',
            'Text' => 'Core.AppText',
            'Time' => 'Core.AppTime'));

*1:参考サイトにはモデルもって書いてあるけど、モデル別名の機能は無いっぽい

2010年03月11日

Fatal error: Cannot redeclare session_use_trans_sid()

| 19:48 | Fatal error: Cannot redeclare session_use_trans_sid() - cake bake diary を含むブックマーク Fatal error: Cannot redeclare session_use_trans_sid() - cake bake diary のブックマークコメント

Cake1.3にKtai Libraryをインストールすると、

 Fatal error: Cannot redeclare ktai_session_use_trans_sid() (previously declared in /www/lightning/public/config/ktai_session.php:24) in /www/lightning/public/config/ktai_session.php on line 34

のようなエラーが出る。

このエラーはセッションがタイムアウトした時に1回だけ出るもよう。

(再びタイムアウトすれば、また出る)

調べたらCannot redeclareエラーは関数が再定義された時に出るらしい。

たぶんcake_session.php 552行目の

require ($config);

が原因と思われ。

ここを下記の用に修正。

require_once($config);

1.2系のsession.phpはちゃんとrequire_onceになってるのに、なんでだろ(´・ω・`)

w3110w3110 2010/03/15 19:45 1.2.6でも起きていて、なんでだろーと思ってました。
http://github.com/cakephp/cakephp1x/commit/7e889d849557f97a2f46166cef8c4bfd37b35a9e

1.2.5から1.2.6に上がったときに変更があったみたいです。

2009年06月17日

vendors/jsの中にもいろいろ置きたい

| 18:28 | vendors/jsの中にもいろいろ置きたい - cake bake diary を含むブックマーク vendors/jsの中にもいろいろ置きたい - cake bake diary のブックマークコメント

CakePHP1.2RC3でFCK Editorを使う

をみながらFCKeditorを入れてたら何故かFCKeditorのajaxリクエストがMissing Controller*1に。

原因はapp/webroot/js/じゃなくて、vendors/js/に入れてたから。*2

app/webroot/jsに置けるファイルタイプに制限は無いけどvendors/jsはそうじゃないらしい。

Dispatcherの以下の部分が関係してるみたい。

<?php
function cached($url) {
    if (strpos($url, 'css/') !== false || strpos($url, 'js/') !== false || strpos($url, 'img/') !== false) {
        /* 省略 */
        $assets = array('js' => 'text/javascript', 'css' => 'text/css', 'gif' => 'image/gif', 'jpg' => 'image/jpeg', 'png' => 'image/png');
	    $ext = array_pop(explode('.', $url));
		foreach ($assets as $type => $contentType) {
		    if ($type === $ext) {
			if ($type === 'css' || $type === 'js') {
				$pos = strpos($url, $type . '/');
			} else {
				$pos = strpos($url, 'img/');
			}
			$isAsset = true;
			break;
		}
	}
        /* 省略 */
    }
}
?>

要はvendors/jsとvendors/imgとvendors/cssについては$assetsにあるファイルタイプのみ読み込み許可すると。

$assetsにhtmlとxmlを追加したら動いた

<?php
$assets = array('js' => 'text/javascript', 'css' => 'text/css', 'gif' => 'image/gif', 'jpg' => 'image/jpeg', 'png' => 'image/png', 'html' => 'text/html', 'xml' => 'text/xml');
?>

ので、shin1x1さんの上書きテクでdispatcher.phpを上書き。

あとDebugKitが動かない><

FCKeditor使うとDebugKitでelements.toolbar is nullとかエラーが出て何も表示されない。

FCKeditorの方は普通に動く。

だからtoolbarみたいな競合しやすい名前付けるのはどうかと思うなぁ。。

*1:JsController could not be found.

*2:だってappに置きたくないんだもん…

2009年06月11日

プラグインの名前はキモイけど…

| 00:37 | プラグインの名前はキモイけど… - cake bake diary を含むブックマーク プラグインの名前はキモイけど… - cake bake diary のブックマークコメント

プラグインの名前がキモイのをなんとかする

http://www.ustream.tv/recorded/1609082

を見ての感想。

動画感謝です。

requestActionってそんなに使うかな

一度も使ったこと無いのでありがたみがわからない…

複数のコントローラのアクションを同時に呼ぶようなシチュエーションも想像できない…

想像できないものは仕方ないというわけで、気にしないことにする。

そしてコントローラのプラグイン名さえ省略すればURLのキモさは解消されるわけで。

(routes.phpで書き換えてもいいけどそれだとプラグイン内で完結しないからなー…)

コンポーネントやヘルパーの名前問題

個人的にはこっちのが問題かと。

例えばDebugKitのToolbarComponent。

$components = array('DebugKit.Toolbar');

って使うけど、

$components = array('MyPlugin.Toolbar', 'DebugKit.Toolbar');

みたいに他のプラグインもしくはapp層でToolbarComponentていう名前使ってたらDebugKit使えないわけですよ。

かといって、

$components = array('MyPlugin.Toolbar', 'DebugKit.DebugKitToolbar');

のようになってもやはりキモい。キモすぎる。

プラグイン名が名前空間になればいいのに…*1

デフォルトコントローラは便利ですね

これは知らなかった。

これからプラグインのメインコンテンツはデフォルトコントローラに書くことにしよう。

まとめ

  • コントローラ以外、プラグイン名は省略しない。キモくても我慢する。
  • コントローラはまずデフォルトコントローラに出来ないか検討。
  • 最終的にはroutes.phpで。

*1:PHPの次のバージョンからnamespace実装らしい…でもcakeが対応するのは2.0以降だろうなぁ…