[Symfony2]勉強会に向けて自習中…

Posted under Symfony2 by uechoco on 日曜日 14 11月 2010 at 22 : 24 : 04

最近Symfony2のいい噂をよく聞くようになりました。といってもsymfonyのエバンジェリストをTwitterでフォローしているだけなのですが。

来週Symfony2勉強会が開かれるので、そのために自習をしています。

一応、Githubから最新のSandbox(2010/11/09時点)を取得して学習していますが、Quick Tourの日本語版のソースコードの改変が追いついていないようで、英語版のソースコードを見つつ、日本語版の解説を見つつといった状況です。正直言うと、本家英語版のソースコードも最新のSandboxには追いついていません(笑 そういうのも覚悟の上で触らなきゃいけないのは承知で触ってるので気にはしていませんが、全体像がなかなか把握しきれていない時点ではちょっとやり辛いですね。

やり辛いといえば、Eclipseが別の名前空間にあるクラスに対してリンク(CtrlとかCommand押しながらクラス名クリックするとそのファイルに飛んでくれるやつ)が効かないこと。Eclipse 3.5だから?うーん。とにかく効率が落ちて困ってます。

そういえば、symfony 1.4時代にDoctrine触ってなかったりするので、Doctrine思えなきゃいけないのよね。それよかPHP5.3とかオブジェクト指向とかも覚えなきゃね。。。やることイパーイ


[Eclipse]インストール済みのJREが復活した

Posted under mac入門記 by uechoco on 日曜日 28 3月 2010 at 10 : 44 : 00

Mac OS X 10.6(Snow Leopard)にしたり、Eclipse 3.5(Galileo)にしたり、していると、いつの間にかOSDE(OpenSocial Environment Development)が起動できなくなってた。どうやら、JREやJDKが見つからないと言って、起動してくれないらしい。ちなみにEclipseはPDTベースにPleiadesで日本語化を施したもの

関連エラー:

  • 選択された JRE は現在の準拠レベル 1.4 をサポートしていません
  • 指定された JRE インストールが存在しません
  • The specified JRE installation does not exist
  • 標準 VM は MacOS ではサポートされていません。
  • Standard VM not supported on MacOS

たしかに、設定メニューからインストール済みのJREを見てみると、何も無い。そして、追加仕様としても、追加できない。OSDEやMac のJavaやらいろいろ疑ってググったが、中々出てこない。英語のサイトを見ていたら、新規ソフトウェアのインストールでいくつかインストールしたら改善したって書き込みを見たので、Eclipse Java 開発ツール」とか「環境記述 JavaSE-1.6」とか、それっぽいものを同時にインストールしてみたところ、インストール済みのJREが復活しました。たぶん前者が影響しているかと思います。

参考:


[Mac][Eclipse]Pleiades入り本体のアップデートすると起動に失敗する時の対処法

Posted under mac入門記,ソフトウェア by uechoco on 日曜日 8 11月 2009 at 07 : 58 : 54

[mac]eclipseインストールとpleiadesで日本語化というMacのEclipseにPleiadesを導入する記事を書いてるくらいなので、現在使用中のEclipse 3.5にもPleiadesが適用されていますが、たまにトラブルが起きたりします。今回のトラブルは、何らかの、特にElipseコア系のソフトウェアアップデートをした後に、Eclipseが起動しなくなってしまうという現象です。案の定、Pleiadesがトラブルを起こしているのですが、私の場合の現象と解決策を残しておきます。

まず、Eclipseソフトウェアアップデートした後、再起動を促されますので再起動をします。そうすると、スプラッシュ画像の直後にダイアログが出て、「起動失敗したから、logファイルにエラー状況書き込んどいたよ」的な英語が書かれています。Pleiadesの説明書にも書いてありますが、Eclipseソフトウェアアップデートの直後は、必ず1回だけEclipseを-cleanオプションで起動させなければいけません。ターミナルなどで/Application/Eclipseに移動し、eclipse -cleanとコマンドを打つことでPleiadesがクリーン起動します。

通常なら、次回以降の起動はEclipse.appのダブルクリックで済むのですが、たまに前述の起動エラーが続くときがあります。その場合、クリーン起動なら正常起動できるのに、-cleanを付けない通常起動だとどうしても起動エラーになってしまいました。困っていたときに、Pleiadesのreadmeをくまなく読んでいると、強制終了が続く場合、-clean起動の後、configuration/jp.sourceforge.mergedoc.pleiades/ ディレクトリを削除すると直るかもしれないと書いてありました。試しにやってみたら、本当に直りました。

というわけで、Pleiadesでトラブルが起きたら、readmeをくまなく見て、解決策を探してみるのがいいでしょう。起動エラーが続く場合は今回の記事のような対応が書かれています。


[eclipse]YAML編集プラグインyedit(*.yml/*.yaml)

Posted under php,ソフトウェア by uechoco on 日曜日 25 10月 2009 at 22 : 01 : 37

symfony開発のために、EclipseにYAMLファイルの編集プラグインが入ってなかったので入れてみました。

候補としては、[eclipse]YAMLエディター – hello,worldに紹介されているyamleditoryeditです。

yamleditorは1年以上更新されていないのですが、yeditは現在進行形で開発されているようなので、yeditにしました。Eclipse 3.4と3.5に対応しているようです。インストール後に設定画面でエディターのファイルの関連付けを確認してみると、*.ymlと*.yamlの両方が関連づけられていました。YAMLハイライト見やすいな。

基本的に問題ないのですが、たまに変なところでSyntax Errorはいたりするのはなんでだろう。まーそのうち改善されるかな?


[Mac]netatalkの.AppleDoubleでsymfonyコマンドがつまずく時がある

Posted under Linux,mac入門記,php,symfony by uechoco on 日曜日 13 9月 2009 at 02 : 03 : 07

タイトルでもわかるとおり、非常に限定的な環境でsymfonyを使ったときにハマってしまったので、今後、私と同じようなマニアックな環境でハマってしまった人がググってくれることを期待して備忘録を残します。

さて、私はMac OS X上にVMware Fusion 2を導入していて、会社での開発をVM上のCentOS 5で行っています。開発ではMacのCocoaに対応したEclipse 3.5を主にしようしています。EclipseでVM上のファイルを直接読み書きするため、netatalkというMac版sambaとも言えるソフトウェアをCentOSに導入して、MacとLinux間の共有を行っています。ここら辺のお話は、以前3回に渡って書いたnetatalk導入のブログの記事を参照してもらえればと思います。

Mac OS Xでで外部ストレージ(NFS)などを用いるとき、ファイルのメタ情報を保存するために、netatalkでは.AppleDoubleというフォルダを各フォルダごとに生成し、そのフォルダの中に元ファイル名と同名のファイル名でメタ情報を格納します。※WikipediaのAppleSingleにAppleDoubleについて記載があります。netatalkではnoadoubleというオプションがあり、「必要なければ.AppleDoubleを作らない」という設定にすることができるのですが、必要ある場合は当然作成されてしまいます。例えば、Eclipseからアクセスして保存とかをすると、.AppleDoubleが作られてしまうような気がします。

CentOS上にsymfonyを展開してMacからターミナルで操ろうとしたとき、基本的にはsymfonyのあの深いフォルダ階層のすべてに.AppleDoubleが生成されてしまうということです。そこでこまったのがsymfonyコマンド。propel:build-xxxとかやろうとすると、どうも.AppleDoubleのせいでうまくいかないことがあります。

例えばpropel:build-model

Bash:
  1. [ueno@localhost project]$ ./symfony propel:build-model
  2.   Unable to parse file "/path/to/project/config/.AppleDouble/schema.yml": Unable to parse line 1 (

なぜか.AppleDoubleフォルダ内のshema.ymlがパースできないと言われてしまいます。前述の通り、.AppleDoubleフォルダの中に元ファイル名と同名のメタファイルを生成しますので、もしかしたらschema.ymlという名前に反応してしまったのかもしれません。一応propel:build-modelのヘルプを見てみましょう。

Bash:
  1. [ueno@localhost project]$ ./symfony help propel:build-model
  2. Usage:
  3.  symfony propel:build-model [--phing-arg="..."]
  4.  
  5. Aliases: propel-build-model
  6.  
  7. Options:
  8.  --phing-arg  Arbitrary phing argument (multiple values allowed)
  9.  
  10. Description:
  11.  The propel:build-model task creates model classes from the schema:
  12.  
  13.    ./symfony propel:build-model
  14.  
  15.  The task read the schema information in config/*schema.xml and/or
  16.  config/*schema.yml from the project and all installed plugins.
  17.  
  18.  You mix and match YML and XML schema files. The task will convert
  19.  YML ones to XML before calling the Propel task.
  20.  
  21.  The model classes files are created in lib/model.
  22.  
  23.  This task never overrides custom classes in lib/model.
  24.  It only replaces files in lib/model/om and lib/model/map.

検索条件はconfig/*schema.ymlと書いてありますので、フォルダも引っかかってしまうようです。

で解決策はどうするのか?propel:build-xxx系のコマンドなどでは、symfonyライブラリの中に含まれるsfFinder.class.phpというユーティリティを利用しています。この中に、指定されたルールに基づいて、ファイルやディレクトリを検索するというin()メソッドがあるのですが、この中で、バージョン管理ソフトのディレクトリを無視するようなプログラムの掛かれば部分があります。symfony 1.2.8のlib/symfony/util/sfFinder.class.phpの341行目付近です。

php:
  1. /**
  2.    * Searches files and directories which match defined rules.
  3.    *
  4.    * @return array list of files and directories
  5.    */
  6.   public function in()
  7.   {
  8.     $files    = array();
  9.     $here_dir = getcwd();
  10.  
  11.     $finder = clone $this;
  12.  
  13.     if ($this->ignore_version_control)
  14.     {
  15.       $ignores = array('.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg');
  16.  
  17.       $finder->discard($ignores)->prune($ignores);
  18.     }

svnやらcvsやらgitやらのメタ情報を保存するフォルダの除外指定が列挙されています。ならばここにAppleDoubleをいれればいいんでないか?ということで、修正多野がこちら

php:
  1. if ($this->ignore_version_control)
  2.     {
  3.       $ignores = array('.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg', '.AppleDouble');
  4.  
  5.       $finder->discard($ignores)->prune($ignores);
  6.     }

symfonyのコアを書き換えるのはどうかと思ったのですが、この設定を付け加えるだけでnetatalk環境でのsymfonyコマンドが問題なく使えるようになったので開発が進みそうです。

まぁ、こんな環境でsymfony使う人はなかなか居ないと思いますが。。。


次ページへ »

Copyright © 2012 うえちょこ@ぼろぐ. WP Theme created by Web Top.