October 8, 2012

do.comは便利かも

do.comというタスク管理サービスを知りました。
https://do.com/

プロジェクト単位でのタスク管理が可能なサービスです。
今のところ、無料で使えるようです。

大分類としてグループがあります。グループは複数作成可能です。
また、グループの中に複数のプロジェクト、複数のタスクを作成可能です。

タスクは、プロジェクトに属しても属さなくても良いみたいです。
なので、グループのみに依存していて、プロジェクトには依存しない。
みたいなタスクが作れます。

共同作業者は、グループ単位とプロジェクト単位で、それぞれ設定可能なようです。

タスクには添付ファイルを付けられます。
面白いのが、Googleドライブ内のファイルを添付出来る点です。
その際、Google側での認証が必要なのですが、
けっこう色々な権限を許可しなければなりませんでした。

なので、メインのGoogleアカウントとサブのGoogleアカウントで
Googleドライブ内の特定のディレクトリを共有。
サブのアカウントでdo.comと連携。の形にしてみました。

これで、do.com側がアクセスできるのはサブのアカウント。
ドキュメントの編集はメインのアカウントでも可能。となります。

ただ、やり取りのサクサク感はchatworkに軍配有りな印象。
do.comは、とりあえず一人で使い込んでみよう。。。

October 4, 2012

FuelPHPのFormatクラスのCSVで囲い文字をダブルクォートでは無くす方法(configファイル未使用)

以下、FuelPHP 1.3で確認しています。

囲い文字という表現が正しいかはさて置き、FuelPHPのFormatクラスは、
CSVの各値がダブルクォートで囲まれている事を前提にしています。

参考:
FuelPHP の Format クラスは CSV が「"」で囲まれることを前提にしている

ソースを見てみると、以下のConfig値が有りました。
* format.csv.newline
* format.csv.delimiter
* format.csv.enclosure
* format.csv.escape
* format.csv.regex_newline

囲い文字のダブルクォートはformat.csv.enclosureになります。

アプリ側で
Config::set('format.csv.enclosure', '')
しても、反応はありませんでした。

理由は、Format::_init()でConfig::load('format', true)している部分です。
アプリ側でsetした値が飛んでしまいます。

app/configディレクトリにformat.phpを置いても良いのですが、
どうも気が進まなかったので、以下の方法で半ば強引にねじ伏せてみました。

(1)
アプリ側でConfig::load('format'true)する。

(2)
アプリ側でConfig::set('format.csv.enclosure', '')する。

(3)
普通にFormatクラスを使う。
ex). $data = Format::forge($data, 'csv')->to_array();

これでOKです。

ポイントは
Config::load($file, $group = null, $reload = false, $overwrite = false)
の$overwriteはfalseがデフォルトである部分です。

アプリ側で先にConfig::load('format'true)して
Format::_init()でのConfig::load('format'true)を無効化する感じです。

--

2012/10/06 追記
$overwriteじゃなくて$reloadかも。

MantisBTのファイルアップロードで関係している値

php.ini:
upload_max_filesize
post_max_size

config_inc.php(MantisBT):
$g_max_file_size

保存先がDB(MySQL)なら、さらに以下。

my.cnf:
max_allowed_packet

max_allowed_packetにほんの少しハマってしまいました。。。
要注意。

September 28, 2012

FuelPHPのAssetクラスとassetsディレクトリ構造

FuelPHPのAssetクラスは主にpublic/assetsディレクトリ内にある
* jsディレクトリ
* cssディレクトリ
* imgディレクトリ
内のjsファイル、cssファイル、画像ファイルに対するHTMLタグを生成するのに使います。

メソッドはそれぞれ
* Asset::js()
* Asset::css()
* Asset::img()
となります。

ただ、例えばjqueryのプラグインを導入した時等、
その中に入っているjs、css、画像ファイルを前述のjs、css、imgディレクトリに
分けて入れてしまっては、メンテナンス性が悪くなる恐れがあります。

個人的には、以下のような感じで、そのまままとめて放り込みたいです。

--
public/
 assets/
  js/
  css/
  img/
  jquery/
   plugin1/
    plugin1.js
    plugin1.css
    plugin1.png
   plugin2/
    plugin2.js
    plugin2.css
    plugin2.png
--

そこで、ドキュメントを参考に
Asset::add_path('assets/jquery/', array('css', 'js', 'img'));
して
Asset::js('plugin1/plugin1.js');
してみたのですが、エラーとなってしまいました。
http://docs.fuelphp.com/classes/asset/usage.html#/method_add_path
http://press.nekoget.com/fuelphp_doc/classes/asset/usage.html#/method_add_path

諦めようかなと思ったのですが、試しに
Asset::add_path('assets/jquery/', 'css');
Asset::add_path('assets/jquery/', 'js');
Asset::add_path('assets/jquery/', 'img');
として
Asset::js('plugin1/plugin1.js');
してみると、うまくいきました。
Asset::css('plugin1/plugin1.css');
もOKでした。
imgメソッドは確認していませんが、たぶんOKでしょう。

Asset::add_path処理を共通化したい場合、各Controllerの親Controllerのbefore()で問題無いですが、
controller_startedイベントで行なっていも良いのかなと思います。
http://docs.fuelphp.com/classes/event.html
http://press.nekoget.com/fuelphp_doc/classes/event.html


--

追記
controller_startedイベントだとRestコントローラの時も通ってしまう??
そのうち確認しておこう。。。

追記2
上記、Restコントローラでも通りました。
イベントクラスの使い所難しいなー。。。