カテゴリ: 勉強会など

ページ: 1 2 3 4 5 6 >>

Cakematsuri TOKYO 2009

パーマリンク 2009/10/31 23:59:59 著者: kumaold メール
カテゴリ: 仕事, 勉強会など, サブカルチャー

本当は終わったあとにブログに書きたかったのですが、例によって体調がよろしくなかったので帰宅してからゆっくりまとめます。

まず会場の雰囲気はこんな感じ。100人くらいはいたような。
中央にプロジェクタ、左右に50インチくらいの液晶画面という設備で、発表会とかパーティ用に作られている会場です。


当たり前ですが、30代前半までの人が8割くらいじゃなかったでしょうか。
あと、例によってWindowsユーザが肩身が狭い(LTの発表者大半Macじゃね?)

各セッションのメモや感想など。

基調講演 CakePHP道
・Give back much as you take (←自信ない):もらった分だけ返そう ・Set::combine()でfindした結果を抽出するときなどに便利 ・i18nの仕組みでらくらく多言語化
CakePHPでつくる地域SNS
一六社よりあつさんが地域SNSについて発表されました。
このスライドの中のかしも事務所の写真がインパクトが強かったのか、懇親会でほどんどの人が覚えていてくれました。
スズキ自販サイトでの CakePHP 活用事例
Model数100?もある大規模な中古車検索サイトでの開発例 数が多すぎてクラス名の命名に困るw
nanapiのレシピ
CakePHPだけではサイトが重く感じてしまうので、CakePHPを使うところを使い分ける。表示するHTMLのキャッシュもしておく
CakePHP: The framework strikes back ~フレームワークの逆襲~
今後のCakePHP 1.3と2.0のリリース予定について。メモリ使用量削減など高速化。1.3と2.0の根本的違いはよくわからず
CakePHPでつくる物件紹介ポータルサイト
おれおれフレームワークの経験者が半数近く。業務引継のときに面倒なことになったのでCakePHPを利用することにした
研究分野でのCakePHPの活用事例とその周辺の話
請負契約でやっていたのを「準委任契約」にすることで楽になる?
プラグイン活用法
debug_kitはわかりやすくて便利。Viewのテーマ機能については初めて知った
Key-Value Stores & Non-Relational Databases
最初に概念がまったくわからなかった。非リレーショナルデータベースについてもうちょっと勉強しないとなぁ
パネルディスカッション
飛び入りで東北地方の方も参加。各地方のCakePHPや勉強会の活動状況などについて。やっぱ東海地方の人は少ないみたい。
Lightning Talks
ピッタリ5分でみんなうまくまとまっているなぁ・・・と感心。

・CakePHPはどんどん拡張して使ってみる。
Model Info プラグインでモデル間の関連がわかりやすくなる。 ・DataSourceを自作してみる → なんでもCakeで扱える

話を聞くばかりに夢中になっていてあんまりメモってなかったので、内容については他の方のレポートを参考にしたほうがいいかも。

そういえばCakeの新しい本がまた出るとかいってたような気も。


懇親会は、カンファレンスが延びて結局19時近くからのスタートです。

体調不良で1時間早く抜け出してきたわけですが、時間を忘れてしまうくらいいろいろな人との交流ができてよかったです。

なんかケーキが去年よりグレードアップしてますよ!
(もっといい構図の写真は残念ながら光の加減で没ってしまいましたorz)

こんな体調じゃなければ食べたかったんだがなぁ・・・じつに惜しい。
また来年もぜひ行きたいです。

CakePHP1.2ガイドブックCakePHP1.2ガイドブック
毎日コミュニケーションズ 2009-06-27
売り上げランキング : 14907
おすすめ平均

第17回高蔵寺SE勉強会

パーマリンク 2008/11/16 23:00:00 著者: kumaold メール
カテゴリ: 仕事, 勉強会など

#またまたブログを丸1週間分まとめて投稿します。


本日は、第17回高蔵寺SE勉強会を開催しました。

今回は、events.php.gr.jpにてに募集を行ったところ、13人ほど集まりました。
遠方から来てくださった皆様、どうもありがとうございました。


まずは宿題。
今回はカレンダーヘルパーを作って(改造して)みようということでしたが、久々に張り切ってすべて1からコーディングをしてみました。


苦労したところは言うまでもなく曜日の移動機能。
これのおかげでコーディング量とバグが大幅増加で半日以上要しました。

そのほかは、表示形式を変えたり、CSSでデザインを変更しやすいようなカスタマイズ性の高いつくりを意識して作りました。


設置サンプルはこちら

[CalendarHelper]

<?php
/**
 * CalendarHelper
 *
 * @modifiedby      $LastChangedBy: kuma $
 * @lastmodified    $Date: 2008-11-15 23:00 $
 */
class CalendarHelper extends AppHelper
{
    /*
     * タイトル部の出力フォーマット指定
     */
    var $titleFormat = "%d年%d月";
    
    /*
     * 日付の出力フォーマット指定
     */
    var $dayFormat = "%d";
    
    /*
     * 曜日の出力フォーマット指定 ("Sun", "Mon", "Tue", ...)
     */
    var $weekFormat = array("日", "月", "火", "水", "木", "金", "土");
    
    /*
     * CSSの曜日別クラス名指定 ("sunday", "monday", "tuesday", ...)
     */
    var $className = array("sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday");
    
    /*
     * 週の開始曜日オフセットを指定 (デフォルト[日~土] 0, 0 ~ 7)
     */
    var $weekOffset = 0;
    
    /*
     * 各種作業領域
     */
    var $outData = "";
    var $todayId = "";
    
    /*
     * 指定した1月分のカレンダーを生成
     * @param int $year 西暦年
     * @param int $month 月
     * @return string カレンダーHTML
     */
    function makeCalendar($year = null, $month = null)
    {
        //日付が存在するかチェック。未指定なら今日の日付
        if (!checkdate($month, 1, $year)) {
            $now = getdate();
            $year = $now['year'];
            $month = $now['mon'];
            
            $today_flg = true;
        }
        
        //月の最初の日の曜日を取得
        $week = date('w', mktime(0, 0, 0, $month, 1, $year));
        $dayTmp = 1;
        
        //カレンダー生成の元となる配列を生成
        do {
            $calendar[$week] = $dayTmp;
            $week++;
            $dayTmp++;
        } while (checkdate($month, $dayTmp, $year));
        
        
        //以下、カレンダー実体の出力
        $this->outData = '<table class="calendar">' . "\n";
        $this->outData .= "<caption>" . sprintf($this->titleFormat, $year,$month) . "</caption>\n";
        
        //曜日列の表示
        $this->outData .= "<tr>";
        for ($i = 0; $i <= 6; $i++) {
            //曜日の順序調整
            $weekTitle = $this->weekFormat[($i - $this->weekOffset + 7) % 7];
            $this->outData .= '<th class="weektitle">'. $weekTitle . "</th>";
        }
        $this->outData .= "</tr>\n";
        
        //日付部分の出力 (以下、1行ごとに一度バッファに溜める)
        $weekTmp = "<tr>";
        //オフセット分差し引いたところから、データの終端かつ右端まで繰り返す
        for ($i = (0 - $this->weekOffset); $i < $week || ($i % 7 != 0); $i++) {
            //当該日付が存在すれば表示
            if (isset($calendar[$i])) {
                //本日表示フラグがあれば本日チェックをする
                if (isset($today_flg)) $this->_todayCheck($calendar[$i]);
                $weekTmp .= sprintf('<td class="%s"%s>%s</td>', $this->className[($i + 7) % 7], $this->todayId, sprintf($this->dayFormat, $calendar[$i]));
            } else {
                $weekTmp .= "<td></td>";
            }
            //次の曜日が指定曜日なら改行
            if (($i + 1 + $this->weekOffset) % 7 == 0) {
                //データチェック&挿入
                $this->_insertRow($weekTmp . "</tr>\n");
                //バッファをクリア
                $weekTmp = "<tr>";
            }
        }
        //データチェック&挿入
        $this->_insertRow($weekTmp . "</tr>\n");
        $this->outData .= "</table>\n";
        
        //ビューに出力内容を返す
        return $this->output($this->outData);
    }
    
    /*
     * 1行のに有効データがあれば連結 (無駄な空欄防止)
     * @param string $weekTmp 1行分の作業データ
     */
    function _insertRow($weekTmp)
    {
        if (trim((strip_tags($weekTmp))) != "") {
            $this->outData .= $weekTmp ;
        }
    }
    
    /*
     * 本日の日付であればCSS用にidタグを付加
     * @param int $today チェックする日付
     */
    function _todayCheck($today)
    {
        $now = getdate();
        if ($now['mday'] == $today) {
            $this->todayId = ' id="today"';
        } else {
            $this->todayId = "";
        }
    }
}

?>

[View]

//今月のカレンダーと本日を強調(色彩はCSS)
<?php
    e($calendar->makeCalendar());
?>

//2008年1月のカレンダーを表示
<?php
    e($calendar->makeCalendar(2008, 1));
?>

//2008年1月の曜日を右に2日移動したカレンダーを表示
<?php
    e($calendar->makeCalendar(2008, 1, 2));
?>


午後からはほとんど発表中心で進行しました。

今回は外部ゲストの方にも発表していただき、新しいことも色々と学ぶことができました。

発表内容はこんな感じ。

  • CakePHP開発事例の紹介
  • CakePHPとテスト
  • CakePHPで携帯サイトを作るためのテクニック


そのあとはLT(ライトニングトーク)を行いました。

  • CakePHPでAjax入門
  • CakePHPとFlashの連携
  • CakePHP簡単問合せフォームの作り方
  • CakePHPの多言語化対応


このうち、CakePHPの多言語化対応については、いままでのCakePHP日本語化などの経験から苦労した点や、ポイントなどについて発表させていただきました。


やはり、外部の方がいると新鮮でいろいろな意見を聞くことができてよかったです。

今後とも開催実績を積み重ねて、多くの人に来てもらえると嬉しいです。

また開発合宿みないなのもやりたいなぁ。

type="text/javascript">
type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

第15回高蔵寺SE勉強会

パーマリンク 2008/11/02 21:06:31 著者: kumaold メール
カテゴリ: 仕事, 勉強会など

第16回高蔵寺SE勉強会を開催しました。

まず、宿題の方はこちら。

写真を解析して何か作ってみよう

[言語]JavaScript・PHPなど
[お題]
写真を解析して何か作ってみよう。各自のアイディアにお任せです!
例)写真から顔の部分を検出する。写真から季節を判別する。など・・・。


某笑い男のアレみたいなことできたらなぁ~とか思ってましたがレベル高すぎ!

仕方なく諦めて画像の色解析ライブラリを使ってみただけの手抜きです。


PHP Classesにて配布してあるColor extract クラスという、画像中の頻出色を簡単に抽出できるライブラリを使用してみた"だけ"です。

<?php
//セキュリティ上ファイルアップロード部は省略

//Color extract クラスライブラリを読み込む
include_once('./lib/colors.inc.php');

$ex = new GetMostCommonColors();
$ex->image = $filename;
//Get_Colorメソッドで解析・集計
$colors = $ex->Get_Color();

//最大表示数
$how_many = 12;
$colors_key = array_keys($colors);

?>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta http-equiv="Cache-Control" content="no-cache">
        <title>第16回高蔵寺SE勉強会宿題 - 画像解析</title>
    </head>
    <body>
    <form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" enctype="multipart/form-data" method="post">
        <input type="file" name="img" size="45">
        <input type="submit" value="画像解析!">
    </form>
    
    <table>
        <tr>
            <td>
                <table border="1" cellspacing="0" cellpadding="3">
                <tr>
                    <th width="30">色</th>
                    <th width="50">回数</th>
                    <th width="70">色の値</th>
                </tr>
                <?php for ($i = 0; $i <= $how_many; $i++): ?>
                    <tr>
                        <td bgcolor="<?php echo $colors_key[$i]; ?>" width="16" height="16"></td>
                        <td><?php echo $colors[$colors_key[$i]]; ?></td>
                        <td><?php echo $colors_key[$i]; ?></td>
                    </tr>
                <?php endfor; ?>
                </table>
            </td>
            <td>
                <img src="<?php echo $filename; ?>">
            </td>
        </tr>
    </table>
    
    </body>
</html>


実装してみたものがこちら

最初は順調にできていたアップロード部分も、エラー処理を追加するうちに何故かうまくいかなくなってしまいました。

原因を調査したところ、ファイルを判断している部分で、JPEG画像のContent-typeを「image/jpeg」だけでなく「image/pjpeg」も許可しないと駄目でした。


どうもプログレッシブJPEG(e-Words)らしいのですが、アップロードされると全てpjpegとして扱われるってことなのか?




次回の第17回勉強会は、events.php.gr.jp掲載されました!

今回はやや規模を拡大して、CakePHPの初心者・入門者向け講座を開催します。
参加してみたい方は是非申し込みをどうぞ。

type="text/javascript">
type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

1 2 3 4 5 6 >>

一六社で働くITエンジニアのブログ。

普段はWeb系システム開発と地元のPCサポートをやってます。いつの間にやら会社に8年目。
技術ネタ中心に日々の仕事と生活と趣味やらを気が向いたら書いてます。

2017年4月
 << <   > >>
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

検索

XMLフィード

16ブログ     powered by b2evolution free blog software