Yahoo!JAPANのSNS「CU」に招待してもらった

パーマリンク 2008/11/28 14:21:58 著者: あつ メール
カテゴリ: Yahoo!JAPAN

Yahoo!JAPANのSNS「CU」に招待してもらった

Yahoo!JAPANのSNS「CU」に招待してもらいました。

ビジネスチャンスのキッカケづくりを支援してくれるサイトのようです。
まだ始まったばかりのようなので、あまり機能もなさそうですが、ゆっくりと見ていきたいと思います。

招待して欲しい方がいましたら、ご連絡ください。
あつへの連絡はこちら

ついにGoogleEarthに対応

パーマリンク 2008/11/27 15:52:30 著者: あつ メール
カテゴリ: Google, 機器, 工人舎

何度試してもGoogleEarthのプラグインが入ってくれなかった「SA5KX08AL」ですが、ついに成功しました♪

で、表示させたのがこちら。
ついにGoogleEarthに対応

動きはかなり厳しいですが、とりあえず表示は可能です。

スノーボード一六社ではスキー場をGoogleEarthで見ることが出来ます。
僕がよく行く「高鷲スノーパーク」でGoogleEarthをお試しください。


【関連記事】
工人舎のPCをデュアルディスプレイにする方法 
工人舎×VMWare×CentOS=涙 
工人舎のSA5KX08ALを購入した 

*楽天でSA5KX08ALを探す

メンバーが増えます

パーマリンク 2008/11/26 18:55:53 著者: あつ メール
カテゴリ: その他

メンバーが増えます

いよいよ明日からメンバーが増えます。
新しい人が入るのは、うれしいですね♪
色んな部分で良い刺激になると思います。

プレゼンをちょっとでも良くする為に

パーマリンク 2008/11/25 16:54:15 著者: あつ メール
カテゴリ: LifeHack・GTD

プレゼンをちょっとでも良くする為に

最近、勉強会をするようになってから、少しずつ人前で発表する機会が増えてきています。
ですが、そういうことになれていないので、まだまだうまくいきません。

自分の中でも気になっている、「えーっと」などのつなぎ言葉?。
これをなくす方法が書かれていました。
プレゼン中の「えー」とか「そのー」を無くす荒療治 参考になります。

湾岸まるごとゴミ拾いに行ってきました

パーマリンク 2008/11/24 17:19:39 著者: あつ メール
カテゴリ: その他

今日は千葉で行われた、「湾岸まるごとゴミ拾い」に参加してきました。

ゴミ拾いは午前中だけで、午後からは千葉マリンスタジアムでイベントでした。

湾岸まるごとゴミ拾いに行ってきました

芸能人の方も多く参加されており、神田うのさんを生で見れて、ちょっとうれしかったです

こういうイベントが全国で多く行われると良いですね♪

【関連記事】
千葉県を綺麗にしよう~湾岸まるごとゴミ拾い~

楽天市場の利用率が75.7%!

パーマリンク 2008/11/21 16:09:33 著者: あつ メール
カテゴリ: 楽天

ネット通販、「楽天」「アマゾン」「Yahoo!ショッピング」で94.4%の利用率 - JADMA

ネット通販の利用サイトは「楽天市場」「Amazon.co.jp」「Yahoo!ショッピング」の大手Eコマースサイト3社の利用率合計が94.9%。サイトごとに見ると、楽天市場は75.7%、Amazon.co.jpが49.3%、Yahoo!ショッピング37.7%となっており、他コマースサイトを圧倒している。ユーザー層で見ると、楽天市場は女性が若干利用率が高い傾向があるが性別、年代問わず利用されているのに対し、Amazon.co.jp は男性20代が主なユーザー、Yahoo!ショッピングは男性30代、40代が中心になっている。

だそうです。
楽天大好きな自分としては、うれしいですねー♪

千葉県を綺麗にしよう~湾岸まるごとゴミ拾い~

パーマリンク 2008/11/21 15:53:33 著者: あつ メール
カテゴリ: 地域活性化

千葉県を綺麗にしよう~湾岸まるごとゴミ拾い~

来週の月曜日(11月24日)、「湾岸まるごとゴミ拾い」に参加します。
このイベントは

2008年11月24日(月祝)の朝9:00から11:00まで浦安市・市川市・船橋市・習志野市・千葉市・のベイエリアをまたぐ5市を中心に一斉ゴミ拾いを行い、午後は千葉マリンスタジアムにて象徴イベントを開催致します

というものです。

お近くの方はぜひお越しください♪

ロリポップでPHP5が使えるようになった

パーマリンク 2008/11/20 16:49:00 著者: あつ メール
カテゴリ: その他

ようやく僕が使っているサーバーもPHP5が使えるようになりました。

それも php.ini の設定もできるようになっています。
ロリポップでPHP5が使えるようになった

さてどうするかな。

【関連記事】
ロリポップでPHP5が使えるようになる!
【ロリポップ!】お客様のスクリプトにより負荷がかかっております

第2回SBM研究会に行ってきます

パーマリンク 2008/11/17 16:58:32 著者: あつ メール
カテゴリ: 勉強会・セミナー

第2回SBM研究会に行ってきます

第2回SBM研究会に行ってきます。

内容はこんな感じです。

・伊藤 直也:株式会社はてな
「新はてなブックマークについて」

・上野 大樹:慶應義塾大学大学院
「ソーシャルブックマークデータの時間情報を用いた情報フィルタリングと検索(仮)」

・大向 一輝:国立情報学研究所/株式会社グルコース
「SBMの「偏り」に関する研究とコミュニティ・ブックマーク4dkのご紹介(仮)」

・藤田 昭人:IIJ-II/大阪市立大学大学院 創造都市研究科
「Kikker の Map/Reduce 化」

□パネルディスカッション
「SBM研究を加速・拡大するために-SBM事業者には何ができるのか 」
・パネラー
-伊藤 直也(株式会社はてな
-澤田 哲也(Yahoo! JAPAN)
-須藤 洋一(ECナビ)

(調整中)

□ミニプレゼン「ブロガーから見たSBM」

・西谷 智広:「SBMコメント機能によるコミュニケーション形態の考察」

・広木 大地:「普通のヤツらのメタをゆけ」

・美谷 広海:「ソーシャルブックマークサービスのSEO力」


ソーシャルブックマークを作ろうと考え中だったので、色々と参考になりそう。

第17回高蔵寺SE勉強会をやりました

パーマリンク 2008/11/16 23:30:41 著者: あつ メール
カテゴリ: PHP, CakePHP, 勉強会・セミナー

第17回高蔵寺SE勉強会をやりました

第17回高蔵寺SE勉強会をやりました。

今回は社外から7名の方が参加してくださりました。
本当にありがとうございます。

まずはいつも通り、宿題から。

今回は、「カレンダーヘルパー」を作ろうです。
作ったのは、以下の内容。
・カウントダウンヘルパー
 特定の日までのカウントダウン
・カウントアップヘルパー
 特定の日からのカウントアップ
・Googleカレンダーヘルパー
 Googleカレンダーで公開されている情報の表示
実際のサンプルはこちら
ソースはこちら。
[Controller]

<?php
class CalendarController extends AppController
{
    var $uses = array();
    var $helpers = array('Calendar');

    function index()
    {
    }
}


[View]

<h2>カレンダーヘルパー</h2>
<br />
<br />
<b>カウントダウン</b><br />

誕生日まであと<?php e(number_format($calendar->countDown('2009-11-13'))); ?>日<br />
誕生日まであと<?php e($calendar->countDown('2009-11-13', 'Y')); ?>年<?php e($calendar->countDown('2009-11-13', 'm')); ?>ヶ月<?php e($calendar->countDown('2009-11-13', 'd')); ?>日<br />

<br />
<br />
<b>カウントダウン</b><br />
2020年まであと<?php e(number_format($calendar->countDown('2020-01-01'))); ?>日<br />
2020年まであと<?php e($calendar->countDown('2020-01-01', 'Y')); ?>年<?php e($calendar->countDown('2020-01-01', 'm')); ?>ヶ月<?php e($calendar->countDown('2020-01-01', 'd')); ?>日<br />

<br />
<br />
<b>カウントアップ</b><br />
今日で生まれてから<?php e(number_format($calendar->countUp('1979-11-13'))); ?>日<br />
今日で生まれてから<?php e($calendar->countUp('1979-11-13', 'Y')); ?>年<?php e($calendar->countUp('1979-11-13', 'm')); ?>ヶ月<?php e($calendar->countUp('1979-11-13', 'd')); ?>日<br />

<br />
<br />
<b>カレンダー</b><br />
<?php e($calendar->googleCalendar('2008', '11', 'http://www.google.com/calendar/feeds/fvijvohm91uifvd9hratehf65k%40group.calendar.google.com/public/basic')); ?>


[Helper]

<?php
/**
 * Calendar Helper
 *
 * @package		cake
 * @subpackage	cake.cake.libs.view.helpers
 *
 * @modifiedby      $LastChangedBy: あつ $
 * @lastmodified    $Date: 2008-11-08 20:40 $
 */
class CalendarHelper extends AppHelper
{
    /**
     * 指定日までの日数を返す
     *
     * @param   string  $date       指定日(2006-12-27 or 06-12-27 separators can be a space, period, dash, forward slash)
     * @param   string  $format     返り値のフォーマット(null:日、Y:年月日の年、m:年月日の月、d:年月日の日)
     * @return  integer or false    指定日までの日数
     */
    function countDown($date, $format = null)
    {
        // 日付の妥当性チェック
        $validation = & new Validation();
        if (!$validation->date($date)) {
            return false;
        }

        // separatorsがperiodなどの場合、strtotimeが正常に機能しないので、無理やりslash+年を4桁に変換
        if (!preg_match('%^(?:(?:(?:(?:(?:1[6-9]|[2-9]\\\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\\\\/|-|\\\\.|\\\\x20)(?:0?2\\\\1(?:29)))|(?:(?:(?:1[6-9]|[2-9]\\\\d)?\\\\d{2})(\\\\/|-|\\\\.|\\\\x20)(?:(?:(?:0?[13578]|1[02])\\\\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])\\\\2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\\\\2(?:0?[1-9]|1\\\\d|2[0-8]))))$%', $date, $matches)) {
            return false;
        }
        $date_array = explode($matches[2], $matches[0]);
        if (strlen($date_array[0]) == 2) {
            $date_array[0] = '20' . $date_array[0];
        }
        $date = $date_array[0] . '/' . $date_array[1] . '/' . $date_array[2];

        // 日付の妥当性チェック2
        if ($date < date('Y/m/d')) {
            return false;
        }

        // カウントダウン算出
        switch ($format) {
            case 'Y':
                $cowntdown = date('Y', strtotime($date) - strtotime(date('Y-m-d'))) - 1970;
                if ($cowntdown < 0) {
                    return false;
                }
                break;
            case 'm':
                $cowntdown = date('m', strtotime($date) - strtotime(date('Y-m-d'))) - 1;
                if ($cowntdown < 0) {
                    return false;
                }
                break;
            case 'd':
                $cowntdown = date('d', strtotime($date) - strtotime(date('Y-m-d'))) - 1;
                if ($cowntdown < 0) {
                    return false;
                }
                break;
            default:
                $cowntdown = (strtotime($date) - strtotime(date('Y-m-d'))) / (24 * 60 * 60);
                if ($cowntdown < 0) {
                    return false;
                }
                break;
        }

        return $cowntdown;
    }

    /**
     * 指定日からの日数を返す
     *
     * @param   string  $date       指定日(2006-12-27 or 06-12-27 separators can be a space, period, dash, forward slash)
     * @param   string  $format     返り値のフォーマット(null:日、Y:年月日の年、m:年月日の月、d:年月日の日)
     * @return  integer or false    指定日からの日数
     */
    function countUp($date, $format = null)
    {
        // 日付の妥当性チェック
        $validation = & new Validation();
        if (!$validation->date($date)) {
            return false;
        }

        // separatorsがperiodなどの場合、strtotimeが正常に機能しないので、無理やりslash+年を4桁に変換
        if (!preg_match('%^(?:(?:(?:(?:(?:1[6-9]|[2-9]\\\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\\\\/|-|\\\\.|\\\\x20)(?:0?2\\\\1(?:29)))|(?:(?:(?:1[6-9]|[2-9]\\\\d)?\\\\d{2})(\\\\/|-|\\\\.|\\\\x20)(?:(?:(?:0?[13578]|1[02])\\\\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])\\\\2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\\\\2(?:0?[1-9]|1\\\\d|2[0-8]))))$%', $date, $matches)) {
            return false;
        }
        $date_array = explode($matches[2], $matches[0]);
        if (strlen($date_array[0]) == 2) {
            $date_array[0] = '20' . $date_array[0];
        }
        $date = $date_array[0] . '/' . $date_array[1] . '/' . $date_array[2];

        // 日付の妥当性チェック2
        if ($date > date('Y/m/d')) {
            return false;
        }

        // カウントアップ算出
        switch ($format) {
            case 'Y':
                $cowntup = date('Y', strtotime(date('Y-m-d')) - strtotime($date)) - 1970;
                if ($cowntup < 0) {
                    return false;
                }
                break;
            case 'm':
                $cowntup = date('m', strtotime(date('Y-m-d')) - strtotime($date)) - 1;
                if ($cowntup < 0) {
                    return false;
                }
                break;
            case 'd':
                $cowntup = date('d', strtotime(date('Y-m-d')) - strtotime($date)) - 1;
                if ($cowntup < 0) {
                    return false;
                }
                break;
            default:
                $cowntup = (strtotime(date('Y-m-d')) - strtotime($date)) / (24 * 60 * 60);
                if ($cowntup < 0) {
                    return false;
                }
                break;
        }

        return $cowntup;
    }

	/**
	 * Googleカレンダーを表示
	 *
     * @param   integer $year       表示する年
     * @param   integer $month      表示する月
     * @param   string  $url        GoogleカレンダーのURL
     * @return  string              カレンダー
	 */
	function googleCalendar($year, $month, $url)
    {
        // Googleカレンダーの情報取得
        $events = $this->getEvents($year, $month, $url);

        $weekday_j = array('日', '月', '火', '水', '木', '金', '土');
        $line_feed = "\\n";

        // 月の最終日を取得
        $last_day = $this->getLastDay($year, $month);

        // カレンダー生成
        $calendar  = '<table border="1">' . $line_feed;
        for ($day = 1; $day <= $last_day; $day++) {
            // 曜日を取得
            $weekday = $this->getWeekday($year, $month, $day);

            $calendar .= '<tr>' . $line_feed;
            $calendar .= '<td>' . $weekday_j[$weekday] . '</td>' . $line_feed;
            $calendar .= '<td>' . $day . '</td>' . $line_feed;
            $calendar .= '<td>';
            if (isset($events[$year][$month][$day])) {
                foreach ($events[$year][$month][$day] as $value) {
                    $calendar .= $value . '<br />';
                }
            } else {
                $calendar .= '&nbsp;';
            }
            $calendar .= '</td>' . $line_feed;
            $calendar .= '</tr>' . $line_feed;
        }
        $calendar .= '</table>' . $line_feed;

        return $calendar;
	}

	/**
	 * イベント情報を返す
	 *
     * @param   integer $year       年
     * @param   integer $month      月
     * @param   string  $url        GoogleカレンダーのURL
     * @return  array               イベント情報
	 */
	function getEvents($year, $month, $url)
    {
        uses('Xml');
        $startmin = $year . '-' . $month . '-01';
        $startmax = date('Y-m-d', strtotime('1 month', strtotime($startmin)));
        $url .= '?start-min=' . $startmin . '&start-max=' . $startmax . '&max-results=5000&orderby=starttime';
        $xml = new Xml($url);
        $data = Set::reverse($xml);
        $events = array();
        if (isset($data['Feed']['Entry'])) {
            foreach ($data['Feed']['Entry'] as $value) {
                // 詳細URL取得
                $detail_url = '';
                // 正規表現参考:http://phpspot.net/php/pg%90%B3%8BK%95%5C%8C%BB%81F%90%B3%82%B5%82%A2%82t%82q%82k%82%A9%82%C7%82%A4%82%A9%92%B2%82%D7%82%E9.html
                if (preg_match("/(https?|ftp)(:\\/\\/[-_.!~*\\'()a-zA-Z0-9;\\/?:\\@&=+\\$,%#]+)/", $value['content']['value'], $matches)) {
                    $detail_url = $matches[0];
                }

                if (preg_match("/((\\d{4})\\/(\\d{2})\\/(\\d{2})).+((\\d{4})\\/(\\d{2})\\/(\\d{2}))/", $value['summary']['value'], $matches)) {
                    // 複数期間の場合は、期間全ての日に表示
                    $date = $matches[1];
                    $period = (strtotime($matches[5]) - strtotime($matches[1])) / (24 * 60 * 60);
                    for($i = 0; $i <= $period; $i++) {
                        $date_array = explode('/', $date);
                        if (!empty($detail_url)) {
                            $events[$date_array[0]][(int)$date_array[1]][(int)$date_array[2]][] = '<a href="' . $detail_url. '">' . $value['title']['value'] . '</a>';
                        } else {
                            $events[$date_array[0]][(int)$date_array[1]][(int)$date_array[2]][] = $value['title']['value'];
                        }
                        $date = date('Y/m/d', strtotime('1 day' ,strtotime($date)));
                    }
                } elseif (preg_match("/((\\d{4})\\/(\\d{2})\\/(\\d{2}))/", $value['summary']['value'], $matches)) {
                    if (!empty($detail_url)) {
                        $events[$matches[2]][(int)$matches[3]][(int)$matches[4]][] = '<a href="' . $detail_url. '">' . $value['title']['value'] . '</a>';
                    } else {
                        $events[$matches[2]][(int)$matches[3]][(int)$matches[4]][] = $value['title']['value'];
                    }
                } 
            }
        }

		return $events;
	}

	/**
	 * 月の最終日を返す
	 *
     * @param   integer $year       年
     * @param   integer $month      月
     * @return  integer             月の最終日
	 */
	function getLastDay($year, $month)
    {
		$result = date('t', mktime(0, 0, 0, $month, 1, $year));
		return $result;
	}

	/**
	 * 曜日を返す
	 *
     * @param   integer $year       年
     * @param   integer $month      月
     * @param   integer $day        日
     * @return  integer             1日の曜日
	 */
	function getWeekday($year, $month, $day)
    {
		$result = date('w', mktime(0, 0, 0, $month, $day, $year));
		return $result;
	}
}
?>

Googleカレンダーについては、表示のパターンがいくつかありそうなので、このロジックでうまくいかないケースもあると思います。
参加者の方に意見も頂きましたので、今後に生かしていきたいと思います。

昼からは発表で、僕は「CakePHP開発事例の紹介」と「CakePHP簡単問合せフォームの作り方」を発表しました。
発表資料は高蔵寺SE勉強会ブログに書いてありますので、そちらをご覧ください。

他の方の発表は大変参考になる内容で、今後の開発に十分生かしていけそうです。

最後に全体の感想ですが、今回は初心者・入門者向けということでやりましたが、完全にその期待に沿えるものではなかったような気がしています。
色々なご意見を頂きましたので、今後の勉強会の運営に役立てていきたいと思います。
今回お越し下さった皆様、本当にありがとうございます。

PHP開発者に必須の本

パーマリンク 2008/11/13 16:00:08 著者: あつ メール
カテゴリ: PHP

最近はCakePHPでの開発がほとんどで、素のPHPだけで書くことがありません。
だからといって、PHPに関する情報を知らなくていい訳では全く無く、フレームワークを使っているからこそ、その元となるPHPの最新情報はちゃんと収集しなければいけません。

そんなこんなで、PHPの開発者にはとても参考になる本が発売されました。
まるごとPHP! Vol.2
まるごとPHP! Vol.2(アマゾンで購入する)
まるごとPHP! Vol.2(楽天で購入する)

これで、PHPの最新情報を収集しましょう♪

ついでにもう一つ。
PHP×携帯サイト デベロッパーズバイブル
PHP×携帯サイト デベロッパーズバイブル(アマゾンで購入する)
PHP×携帯サイト デベロッパーズバイブル(楽天で購入する)

これは携帯サイトを作る時に役立ちます。(とはいってもまだ立ち読みしただけですが。。。)

ハッピーバースデー

パーマリンク 2008/11/13 13:06:40 著者: あつ メール
カテゴリ: その他

ハッピーバースデー

今日は29歳の誕生日なのですが、ロリポおじさんがお祝いのメッセージをくれました。

ハッピーバースデー、トゥー、ユー♪
お誕生日おめでとうだぽ!

今日は、とってもステキな日だぽ!
おじさんとツッキーにも、お祝いさせてほしいぽ!

↓ここで、お祝いしているぽ!
 http://birthday.lolipop.jp/

ロリポおじさん&ツッキー より


ロリポおじさん、ありがとー♪

誕生日を登録しているサービスでこういうメールをおくってくるとことってないなー。

名古屋に近い高蔵寺でCakePHP勉強会を行います

パーマリンク 2008/11/10 14:25:49 著者: あつ メール
カテゴリ: 勉強会・セミナー

名古屋に近い高蔵寺でCakePHP勉強会を行います

今週の日曜日(11/16)に第17回高蔵寺SE勉強会を開催します。
今回は、CakePHPの初心者・入門者向けの勉強会です。

東海地方でCakePHPに興味がある方はぜひお越しください。
詳しくは、高蔵寺SE勉強会ブログをご覧ください。

Javaの参考サイト「パンダちゃんのJava勉強記」

パーマリンク 2008/11/02 21:37:19 著者: あつ メール
カテゴリ: その他

Javaは触りくらいしかわからないですが、これからJavaを勉強しようとしている人にオススメなのが、「パンダちゃんのJava勉強記」。

あいかわらずパンダちゃんは努力家です。

第16回高蔵寺SE勉強会をやりました

パーマリンク 2008/11/02 17:17:38 著者: あつ メール
カテゴリ: 勉強会・セミナー

第16回高蔵寺SE勉強会をやりました

第16回高蔵寺SE勉強会をやりました。

今回は社外の方が参加してくれましたー。
それもCakePHPを1年ほどやってる方でした。
岐阜でCakePHPerに会ったのは、これで2人目です。
本日は来て下さってありがとうございました。

宿題は画像解析。
あれこれ悩んだ挙句、最終的に作ったのが、こちら
食事は5色(赤、緑、黒、白、黄)が均等になるようにすると、バランスがいいとのことでしたので、写真に写った食事の色を解析し、バランス良い食事になっているか判断する機能を作りました。

色の振り分けが雑なので、緑が多いはずなのに、チャートでは黒が大半を占めています。

一番下には、各色の食材を楽天APIで取得して表示させています。

発表は「CakePHPカンファレンス東京に行ってきました」と「htmlSQLの実例紹介」を行いました。

最後は、まんじゅうCMSをコードリーディングしました。
事前に、インストールしてあれこれと触りながら、気になった点や参考になった箇所を発表しました。
気になった点としては、開発者の方もすでに把握されていますが、cake配下にあるapp_controller.phpにあれこれと書いている点。
それから、使った環境下では、どうしてもテーブル名にprefixを設定したかったのですが、Models内の色々なファイル内にprefixを考慮されていない箇所があったので、そこでエラーになってしまった点。
良かった点は、このCMSの一番のコンセプトである、プラグインを入れるだけで簡単に拡張できる部分の作り方。
これは大変参考になりました。

次回は11月16日(日)に開催します!

あつ

Facebookやってます

愛知県名古屋市在住のWEBシステム屋(SE・プログラマ)。株式会社一六社(いちろくしゃ)所属。PHP、 CakePHPを利用して日々開発中。WEBで地域活性化を目指します。好き:フットサル/GTD/Mac/ 住んだことのある場所:一宮(愛知)、豊田(愛知)、浜松(静岡)、浦添(沖縄)、中津川(岐阜)、名古屋(愛知)

検索

タグクラウド

勉強会

欲しい物リストの全て

レコメンデーションエンジン

16ブログ     powered by b2evolution free blog software