野鳥日記

野鳥と技術のブログ http://www.kiriya-system.com/

android sdk adtで起動エラー

android sdkと一緒にダウンロードしたadt(eclipse)で起動時に下記エラーが出た場合

 

「Failed to load the JNI shared library “C:\Program Files(x86)\Java\jre6\bin\client\jvm.dll”」

 

PCにjava32bitのみインストールされていて、java64bitバージョンが入っていない可能性がある。

java 64bitを別途インストールし、

eclipse.iniに

-vm
C:\Program Files\Java\jre7\bin\javaw.exe

 

 

を追加すると起動できるようになる。

 

fuelphpの例外処理で500エラーのページ出したらCrypto key errorも出たの巻

fuelphpの例外処理で500エラーのページ出したらCrypto key errorも出たの巻

 

500エラーのページ下部にCrypto key errorの表記ががががが。

http://d.hatena.ne.jp/yutakikuchi/20130520/1369006349

 

fuel/app/config/crypt.php

がないのが原因ぽい。エラーページにコードのサンプルも出ているので、それを貼り付け作成。

これでエラーが消えた。

しかしなぜこのタイミングでcrypt関連のエラーが出るんだろう?

 

例として表示されていたコードがコード規約に引っかかるのは秘密。(配列のアロー位置、メソッド後のスペース)

fuelPHPのユニットテストでNo tests found in class "Fuel\Core\TestCase".が出る。

fuelPHPユニットテストでNo tests found in class "Fuel\Core\TestCase".が出る。

 

こんなWarningが出たので原因をいろいろ調べてみた。

どうもファイル名とファイル内のクラス名を完全に一致させないとこれが出るようだ。

大文字小文字が違っていたために表示されていたらしい。

 

app本体モデルでは、そんなこといんだけどなぁ・・・謎。

 

あとエラーメッセージが不親切

どこで出ているか表示されない。

詳細を表示させるオプションがphpunit単体だとあるんだが、php oil経由だと・・・見つからない・・・

fuelPHP、jenkins、php_codesniffer連携

fuelPHP、jenkins、php_codesniffer連携

fuelPHPのコード規約のチェックを自動化しつつ、結果をグラフで 見えるようにする。

 

http://oscasierra.net/2013/05/jenkins-to-redhat/

 

ここを参考にansibleのplaybookは以下のような感じ

antとPHP_CodeSnifferも入れてる

 

  tasks:
    - name: install java
      yum: name=java-1.7.0-openjdk.x86_64 state=installed
    - name: install ant
      yum: name=ant state=installed
    - name: jenkins repo install
      shell: wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
    - name: jenkins repo install
      shell: rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
    - name: install jenkins
      yum: name=jenkins state=installed
    - name: jenkins enabled
      service: name=jenkins state=running enabled=yes
    - name: install PHP_CodeSniffer
      shell: pear install PHP_CodeSniffer

 

 

fuelPHPのコーディング規約をインストール

git clone https://github.com/eviweb/fuelphp-phpcs.git

mv fuelphp-phpcs/Standards/FuelPHP/ /usr/share/pear/PHP/CodeSniffer/Standards/

 

コマンドラインで実行は以下の通り

実行場所はプロジェクト直下

phpcs --standard=FuelPHP --extensions=php --ignore=hoge1.php,hoge2.php fuel/app/classes

--ignoreに除外ファイルを指定できる。

対象ディレクトリはapp/classesのみとした。

 

詳細をみたい場合は、-v

この場合はfuel/app/classes以下のパスも指定するのが吉

 

 jenkinsで新規ジョブ作成

フリースタイルを選択

ソースコード管理に使用しているsubversionのアドレスを入力

ビルドantを追加、ビルドファイルはbuild.xmlとした。

 

プロジェクト直下にbuild.xmlを作成

<?xml version="1.0" encoding="UTF-8"?>

<project name="hogehoge project" default="build">
 <target name="build" depends="phpcs"/>


 <target name="phpcs"
         description="Find coding standard violations using PHP_CodeSniffer and print human readable output. Intended for usage on the command line before committing.">
  <exec executable="/usr/bin/phpcs">
   <arg value="--report=checkstyle" />
   <arg value="--report-checkstyle=checkstyle.xml" />
   <arg value="--standard=FuelPHP" />
   <arg value="--extensions=php" />
   <arg value="--ignore=hoge1.php,hoge2.php" />
   <arg value="${basedir}/fuel/app/classes/" />
  </exec>
 </target>
</project>

jenkinsの管理画面からcheckstyleプラグインをインストール

ビルド後の処理にCheckstyle警告の集計を追加

checkstyle.xmlを指定

 

これでジョブにphp_codesnifferの結果がグラフ化されるはず。

 

 phpunitも入れてるが、その設定は後程。

fuelPHPでphp_codesnifferを使ってみた。

http://madroom-project.blogspot.jp/2013/01/fuelphpgitlabjenkins-2.html

 

インストールは↑を参考に。

 

で実際使ってみた。

 

そしたらエラーがいっぱい。ぐぬぬ。。。

最初から導入しておくべきだった・・・

 

多いのが配列の整形ミス。

 <error line="11" column="16" severity="error" message="Array double arrow not aligned correctly; expected 20 space(s) but found 1" source="FuelPHP.Arrays.ArrayDeclaration.DoubleArrowNotAligned"/>

=>

こいつの位置をちゃんと揃えろとのこと。

スペースのとこタブ入れてた・・・

expected 20 space

これは先頭から20文字必要ということらしい

 

あと秀丸の自動変換でスペースをタブに変更していたのが問題で、

えらいハマった・・・

 

$_SERVERも引っかかるな・・・

どうしてくれよう。。。

3/12 追記

Input::serverというのが用意されていた。こちらを使うのが正しい。

ちなみにapp/bootstrap.phpでも$_SERVERが使われていたのでハックしておいた。

ちなみにのちなみに、fuel/coreにphpcsをかけるとかなりの量が引っかかる。

fuelphpでoil紛失(ガス欠)

fuelphpでoil紛失(ガス欠)

 

環境移動やsvn導入などしていたら、

いつの間にかプロジェクト直下のoilファイルがなくなっていた!

 

oil create hogehoge

で適当なプロジェクトを作成し

プロジェクト直下のoilファイルを該当プロジェクトにコピーして

給油完了。

mysqlのsumは該当レコードがない場合、nullを返す

mysqlのsumは該当レコードがない場合、nullを返す

 

該当レコードがない場合、countは0を返すので勘違いしてた。

sumの場合はnullが返ってくる。

countと同様に0を返してほしいときは下記のようにする。

 

SELECT IFNULL(SUM(`hoge`), 0) FROM test

 

参考URL

http://code.ttsoft.jp/2012/12/mysql-sum-with-ifnull-method.html