2012年10月31日水曜日

ツイッターのヘッダー画像をクールに決められる「TwitrCovers.com」

ツイッターのヘッダー画像をクールに決められる「TwitrCovers.com」、サービスにログインして、希望の画像をクリックするだけで好みのヘッダー画像を設定することが可能です。質の高いヘッダー画像が、選り取り見取り。何事もカタチから入りたい私のような人間には、大変ありがたいサービスです(笑)。

2012年10月30日火曜日

MySQLでエラー「Error Code: 1175 You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column」

MySQLで見慣れないエラーに遭遇したので、メモです。データを一括でアップデートしようと試みたところ、表示されました。安全のための機能だと思います。改めて、MySQLの奥の深さを感じることに。SET SQL_SAFE_UPDATES = 0と設定して、うまく処理できました。

Error Code: 1175
You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
SET SQL_SAFE_UPDATES = 0;
UPDATE Tablename SET ....

参考サイト
--safe-updatesオプションを使用する(MySQLリファレンスマニュアル)
YOU ARE USING SAFE UPDATE MODE AND YOU TRIED TO UPDATE A TABLE WITHOUT A WHERE THAT USES A KEY COLUMN(Little Brain)

2012年10月29日月曜日

全世界のツイッターのつぶやきをリアルに感じ取れる「The one million tweet map」

全世界のツイッターのつぶやきをリアルに感じ取れる「The one million tweet map」、地図上のつぶやきの数表示もさることながら、ページが表示されてからのつぶやき数「Tweets since page load」が、インパクト大です。海上にもかなりの数のマークが散在しています。飛行機あるいは、船からのつぶやきなんでしょうか。とにかく、世界の脈動を感じ取ることができます

2012年10月28日日曜日

PHPでできたWebSocketライブラリ「Ratchet」

PHPでできたWebSocketライブラリ「Ratchet」なるものを見つけました。何も試してはいないのですが、デモを見る限り、なかなか面白いものができそうだと思いメモとして記録です。ドキュメントを覗くと、プッシュというキーワードも発見できますので、コメット的な使い方もできるのかもしれません。

2012年10月27日土曜日

Ubuntu12.04を、Ubuntu12.10にアップグレード

Ubuntu12.04を、Ubuntu12.10にアップグレードしてみました。Alt+F2をクリックし、 コマンドウィンドウに「update-manager -d」とタイプすると、アップグレードが開始されます。

無事、アップグレード出来たのですが、「システムプログラムの問題が見つかりました」というメッセージが頻繁に表示されるようになってしまいました。嫌な予兆です(笑)。










参考サイト
Howto: Upgrade To Ubuntu 12.10 Quantal Quetzal From 12.04, 11.04, 11.10 | Desktop & Server

2012年10月26日金曜日

Windows8のSkype

Windows8のSkypeは、また一段と洗練されたUIになるようです。もちろん、まだWindows8を入手したわけではありませんので、物欲にかられ、様子を見ているだけの戯言です。それにしても、こういう紹介映像を見ると、自分も遅れてなるものかと思ってしまいますね。何とか、手に入れたい(笑)。



2012年10月25日木曜日

無料でWordPressとPukiWikiが利用できる「PHP APPS」

無料でWordPressPukiWikiが利用できる「PHP APPS」に登録してみました。「クラウド」と呼ぶには、ちょっと抵抗がある気がします(笑)が、簡単に利用できることは確かです。環境は充実しているので、あとは中身のコンテンツ次第でしょう。また何か雄叫びブログを始めようかな?

2012年10月24日水曜日

無料で読めるKindle向け電子書籍を紹介した「onehundredfreebooks.com」(英語)

無料で読めるKindle向け電子書籍を紹介した「onehundredfreebooks.com」、英語の書籍しかありませんが、かなりの充実ぶりです。Kindleを持っているだけで、これだけ楽しめるようになるわけですから、恐るべし、アマゾンの戦略。消費者にとっては、本当に有難い話ですが、半端な本屋は潰れますよね。日本も近いうちに、このような環境になるのかもしれません。

2012年10月23日火曜日

FuelPHP実験サイト、一区切り

FuelPHP実験サイト、まだ問題も多いですが、まずまずカタチになったように思いますので、とりあえず一区切りです。簡単に作りためた機能をまとめてみました。興味を持って、営業してくれる殊勝な方は、誰かいらっしゃらないかな(笑)?ご要望が上がれば、とことんカスタマイズ致します。

実際のまとめサイトはこちら

2012年10月22日月曜日

実験サイトに地図機能を追加

FuelPHP実験サイトに、地図機能を追加してみました。今回、新たな試みとして、XMLの出力をしています。テンプレート機能を利用して、スマートに実現しようとしましたが、挫折しました。しかたがないので、力技で出力しています。動いているから、結果オーライです。

実際のサイトがこちら

2012年10月21日日曜日

日本郵政の新卒採用WEBサイトの構築案件

日本郵政が、新卒採用WEBサイトの構築案件で開発者を募集しています。どこかに書かれているのかもしれませんが、詳しい仕様などは、よくわかりませんでした。説明会があって、その後、入札といった流れになるようです。説明会で詳しい話が聞けるのでしょう。興味のある方は、是非、どうぞ。

2012年10月20日土曜日

実験サイトにカレンダー機能を追加

FuelPHPを利用した実験サイトの試みで、だいぶ部品が出来上がって来ました。というわけで、これを纏めあげて、少しづつカタチにしていこうと思います。まずは、カレンダー機能から。デザインが素っ気なさすぎるので、誰か腕のいいデザイナーさんとコラボしたいところです(笑)。

実際のサイトがこちら

2012年10月19日金曜日

FuelPHPで、ファイル(file)ベースのセッション(session)

FuelPHP(1.3)で、ファイル(file)ベースのセッション(session)を試してみました。ブラウザのクッキーを無効にして、ログインを試みたのですが、うまく機能しませんでした(笑)。Sessionクラスの設定項目にもあるように、結局、識別子として、クッキーは利用していて「session.use_trans_sid」の機能を利用しているわけではないようです。いわゆる「ガラパゴス携帯」向けにも利用できるかなと思って試してみたのですが、難しいのでしょう。割り切りが必要かもしれません。でも、まだガラパゴス携帯を使っている方、多いんですよね。

/app/config/session.php
// if no session type is requested, use the default
'driver'             => 'file',

// specific configuration settings for file based sessions
'file'  => array(
    'cookie_name'    => 'fuelfid', 
    // name of the session cookie for file based sessions
    'path'           => '/tmp',
    // path where the session files should be stored
    'gc_probability' =>  5
    // probability % (between 0 and 100) for garbage collection
                 ),

参考サイト
[FuelPHP]セッションをクッキーからファイルやDBに変更する(RuputerFanさん)

2012年10月18日木曜日

FuelPHPで、ソーシャルアカウント連携(NinjAuth)

FuelPHP(1.3)で、ソーシャルアカウント連携です。NinjAuthというパッケージで、主要なソーシャルサービスと連携が可能らしいので、設定してみました。

Twitterでしかテストできていませんが、他のサービスも同様に組み込めると思うと、最高に素晴らしいパッケージだと思います。ただ気になる点として、SimpleAuthアカウントに紐付く仕様のため、ユーザーIDがあらかじめ存在していないと威力を発揮できない(?)点でしょうか。IDがないと、ユーザー登録の画面に飛ばされます。多分、facebookやgoogleなどの連携でも同じ振る舞いになるのかと?

とは言え、これだけ充実したソーシャル連携が実現できれば、他に文句のつけようがありません。作者に心から感謝です。

連携可能なソーシャルサービス
facebook
twitter
dropbox
linkedin
flickr
youtube
openid
google


参考サイト
FuelPHP 勉強会 東京 vol.2でOAuthログインの発表をしてきた(DASALOG -ださろぐさん)

2012年10月17日水曜日

FuelPHPで、PDF出力(fuel-pdf)

FuelPHP(1.3)で、PDF出力です。fuel-packagesに紹介されている「fuel-pdf」というパッケージを組み込んでみました。fuel-pdf自体は、PDFライブラリのインターフェイス的な役割を果たしています。ディフォルトで用意されているライブラリは、TCPDFDOMPDF。それぞれのライブラリは独立して利用できるようになっていますので、慣れた方なら、あっという間に使いこなせること間違いなし。素晴らしい。

実際のサンプルがこちら。フォントが設定できていないので、無残な状態です(笑)。

2012年10月16日火曜日

Java、Ruby、Node.js、PHPが利用できるPaaS「eXcale」

Java、Ruby、Node.js、PHPが利用できるPaaS「eXcale」に登録してみました。国内にも、本格的にPaaSの波が押し寄せて来つつあるのかなと感じます。管理画面やドキュメントが日本語なのは、本当にありがたい。早速、こちらの作業手順を参考に、PHPのphpinfo()を表示するファイルをデプロイしてみました。PHP Version 5.3.13が利用可能です。正式サービススタートまでは、無料らしいので、いろいろと試させていただこうと思います。感謝。



参考記事
JavaにRuby、Node.js、PHPが利用可能なPaaS、TISがβ提供(@IT)

2012年10月15日月曜日

FuelPHPで、共通クラス

FuelPHP(1.3)で、共通クラスです。/app/classes/model/フォルダ内に共通で利用したいクラスを配置し、利用する際に読み込めば良いようです。何度も同じことを書かなくて済むようになるので、非常に便利。

/app/classes/model/cqq.php
class Cqq
{
    public static function testing_123()
    {
        $a=array
        ( 
        '__FILE__' => __FILE__,
        '__CLASS__' => __CLASS__,
        '__METHOD__' => __METHOD__,
        '__NAMESPACE__' => __NAMESPACE__,
        '__FUNCTION__' => __FUNCTION__,
        '__LINE__' => __LINE__,
        );
        foreach( $a as $key => $value)
        {
            $value = $value ? $value : 'Not declared ???';
            echo $key .'<br />';
            echo $value .'<hr>';
        }
    }
}

class Model_Cqq extends \Model
{
    public static function testing_123()
    {
        $a=array
        ( 
        '__FILE__' => __FILE__,
        '__CLASS__' => __CLASS__,
        '__METHOD__' => __METHOD__,
        '__NAMESPACE__' => __NAMESPACE__,
        '__FUNCTION__' => __FUNCTION__,
        '__LINE__' => __LINE__,
        );
        foreach( $a as $key => $value)
        {
            $value = $value ? $value : 'Not declared ???';
            echo $key .'<br />';
            echo $value .'<hr>';
        }
    }
}
/app/classes/controller/lifts.php
class Controller_Lifts extends Controller
{
    public function action_index( $data=array() )
    {
        # モデルを継承したものではい場合はrequire必須
        require_once( APPPATH .'classes/model/cqq.php');
        Cqq::testing_123();

        \Model_Cqq::testing_123();
        # Model_Cqq::testing_123()でもOKらしい。
        die;
    }
}

参考サイト
JUST WHERE AND HOW TO USE A COMMON CLASS AVAILABLE ON OTHER PROJECTS(FuelPHP Forums)

2012年10月14日日曜日

PHP5.4が利用できるヨーロッパ発PaaS「fortrabbit」、無料プランもあり

PHP5.4(PHP Version 5.4.7-1)が利用できるヨーロッパ発PaaS「fortrabbit」が、サービス開始しています。もちろん、無料プランもあり。PHP5.4が使えて、なおかつ無料プランでも、MySQLが64MBまで利用可能となっています。太っ腹と言わざるを得ません(笑)。詳しい料金表は、こちら。価格は全てユーロです。

無料プランの例(BOOTSTRAP free、MySQL free)
PHP 5.4.7
MySQL 64 MB
ストレージ 100 MB
トラフィック 50 GB
git以外に、sftpやsshも使えます。その他、面白い機能として、無料ユーザーには、フリーズタイマーのリセットが課されます。2日に一度、管理画面にログインしてタイマーを初期化しないと、システムがフリーズ状態となるようです。ゲーム感覚ですね。幽霊会員を排除して、リソースを有効活用するための措置だと思います。私のような無精者には、ハードルが高い(笑)。



2012年10月13日土曜日

FuelPHPで、Twitterログイン

FuelPHP(1.3)で、Twitterログインです。fuel-packagesに紹介されている「fuel-twitter」というパッケージを組み込んでみました。ちょっとソースの中身も覗いてみましたが、簡潔な構成にまとめられているので、多分、カスタマイズしようとした場合でも、手がつけやすいのではないでしょうか。他にも、fuel-packagesには、いろいろなものが紹介されていて、結構、環境が整っている印象です。

実際のサンプルがこちら



参考サイト
FuelPHP で Twitter OAuth を使用する(あかぎメモさん)

2012年10月12日金曜日

pagodaboxで、見事に撃沈

pagodaboxで、見事に撃沈です。デプロイに失敗したのを無視して、作業を続けていたら、完全に固まってしまいました。インスタンスを消去して、作りなおそうかと思ったのですができないようです。エラーが出ているうちは、削除も含めて何も作業できないらしい。しっかりしてます。ガックリ。そういうわけで、失意のブログとなりました。

ちなみに、私が悪いので、pagodaboxを批判しているわけではありません。今では、最高のPHP PaaS環境だと思っています。早速、サポートから、「技術者が対処するので、しばし待機せよ」とメールが来ました。無料で利用させていただいているのに、申し訳ない。

付け加えておくと、バックエンドでエラーが出ているだけで、フロントエンドは平穏無事です。問題なくサービスを提供し続けられていますので、そういった観点からも、よく出来たシステムだと思います。

2012年10月11日木曜日

FuelPHPのViewで、自動リンク

FuelPHP(1.3)のViewで、自動リンクです。文章中にURLやメールアドレスを見つけた場合、自動的にリンクするという機能です。FuelPHP限定というよりは、広く、PHP利用環境下で使えると思います。ネタ元は、こちらCodeIgniterのコード流用とあります。CodeIgniterは全く経験がありませんが、こういうコードを見てしまうと、もはや自己流は流行らないのかもしれません。まさに、フレームワークさまさまです。

function auto_link($str, $type = 'both', $popup = FALSE)
{
    if ($type != 'email')
    {
        if (preg_match_all("#(^|\s|\()((http(s?)://)|(www\.))(\w+[^\s\)\<]+)#i", $str, $matches))
        {
            $pop = ($popup == TRUE) ? " target=\"_blank\" " : "";
            for ($i = 0; $i < count($matches['0']); $i++)
            {
                $period = '';
                if (preg_match("|\.$|", $matches['6'][$i]))
                {
                    $period = '.';
                    $matches['6'][$i] = substr($matches['6'][$i], 0, -1);
                }
                $str = str_replace($matches['0'][$i],
                                    $matches['1'][$i].'http'.
                                    $matches['4'][$i].'://'.
                                    $matches['5'][$i].
                                    $matches['6'][$i].''.
                                    $period, $str);
            }
        }
    }
    if ($type != 'url')
    {
        if (preg_match_all("/([a-zA-Z0-9_\.\-\+]+)@([a-zA-Z0-9\-]+)\.([a-zA-Z0-9\-\.]*)/i", $str, $matches))
        {
            for ($i = 0; $i < count($matches['0']); $i++)
            {
                $period = '';
                if (preg_match("|\.$|", $matches['3'][$i]))
                {
                    $period = '.';
                    $matches['3'][$i] = substr($matches['3'][$i], 0, -1);
                }
                $str = str_replace($matches['0'][$i], Html::mail_to_safe($matches['1'][$i].'@'.$matches['2'][$i].'.'.$matches['3'][$i]).$period, $str);
            }
        }
    }
    return $str;
}

2012年10月10日水曜日

FuelPHPで、ファイルのアップロード&サムネイル画像

FuelPHP(1.3)で、ファイルのアップロード機能を追加してみました。今回は、画像をアップロードする機能を追加してみたわけですが、ファイルのチェックが簡単に行えるので、非常に楽。アップロード後は、Imageクラスを利用すると、サムネイル画像など簡単に準備することができました。

さて、サムネイル画像を生成するエレガントなソースを見つけたので、メモ。元ネタはこちら何が素晴らしいって、画像のアップロードの際、一緒にサムネイル画像を生成しておく必要がありません。サムネイルのサイズ指定は、URLの$width, $height部分の指定を変更してもらうことで、デザイナーさんに丸投げ出来ます。世の中、賢い人がいるものです。心から感謝。

public function action_thumbnail($width, $height, $filename) {
    $width  = (int) $width;
    $height = (int) $height;
    $basepath = DOCROOT.'files/';
    $orig_filename = $basepath.$filename;
    $thumbpath = 'images/'.$width.'/'.$height.'/';
    
    if (file_exists($basepath.$thumbpath.$filename))
    {
        header('Content-Type: image/jpeg');
        echo File::read($basepath.$thumbpath.$filename);
    }
    else if(file_exists($orig_filename) && strpos(realpath(dirname($orig_filename)), realpath($basepath)) !== false && $width > 0 && $height > 0)
    {
        if (!file_exists($basepath.$thumbpath))
            File::create_dir($basepath, $thumbpath);

        \Image::config(array(
            'persistence' => true,
        ))->load($orig_filename)
            ->resize($width,$height)
            ->save($basepath.$thumbpath.$filename)
            ->output();
    }
    else
    {
        throw new HttpNotFoundException;
    }
}
Viewは、こんな感じ。
<?php echo Html::img('post/thumbnail/200/100/'.$post->pic); ?>
<?php echo Html::img('post/thumbnail/300/200/'.$post->pic); ?>
<?php echo Html::img('post/thumbnail/400/300/'.$post->pic); ?>


参考サイト
fuelphpでファイルのアップロード(実践編その8)(WinRoad徒然草さん)
FuelPHPのImageクラス(WinRoad徒然草さん)

2012年10月9日火曜日

FuelPHPで、DB検索

FuelPHP(1.3)で、DB検索機能です。もう、ボロボロ。「慣れていないから」と言って済まされないほど、時間がかかりすぎです。フレームワークを使っている意味が薄れつつあるかもしれません(笑)。デバックしづらいなと思っていたら、「Code Profiler」というデバックツールが用意されていました。configファイルで、設定すると、すぐに利用できるようになります。もっとドキュメントを読みこまないとダメですね。

/app/config/config.php
/*
'profiling'  => false,
 */
'profiling'  => true,

実際のサンプルがこちら。まだ、問題山積です。

2012年10月8日月曜日

FuelPHPで、SimpleAuthのchange_passwordを利用せずにパスワード更新

FuelPHP(1.3)で、SimpleAuthのchange_passwordを利用せずにパスワード更新です。change_passwordを利用するには、現在のパスワード、新しいパスワード、ユーザーIDが必要です。これはこれで非常に便利な機能なのですが、現在のパスワードがわからなくなってしまったような場合、どうしたら良いんだろうと、しばらく考えてしまいました。

正しい使い方ではないかもしれませんが、パッケージ内のhash_passwordメソッドを直接呼び出して、新しいパスワードとユーザーIDだけで更新できましたので、メモです。とりあえず、問題なく動いているような気がします。もしかしたら、もっとスマートな方法があるのかもしれません(?)。

$hash_password = \Auth::hash_password(Input::post('password'));
$user = Model_User::find($id);
$user->password = $hash_password ;
$user->save();

2012年10月7日日曜日

無料のディクテーションサービス「TalkTyper」

無料のディクテーションサービス「TalkTyper」、マイクに向かって話した内容が、テキストエリアにタイプされていきます。久しぶりのヒット。すばらしいサービスです。マイクの感度にもよると思うのですが、100%意図通りに書き取ってくれるわけではありません。しかし、それでも作業効率が上がること、間違いなし。キーボードをタイプしすぎて腱鞘炎に悩む方に、是非、おすすめしたいです。

2012年10月6日土曜日

FuelPHPで、SimpleAuthを利用した会員登録

FuelPHP(1.3)で、SimpleAuthを利用した会員登録機能を追加してみました。見事にハマって、三日坊主になるかと思いましたが、何とか少し前進できました。SimpleAuthという名の通り、機能的には本当にシンプル。なんでこれで躓くのか、自分でも呆れてしまうのですが(笑)。慣れるまで、まだまだ修行が必要です。

実際のサンプルがこちら

2012年10月5日金曜日

FuelPHPで、管理画面ログイン機能

FuelPHP(1.3)で、管理画面へのログイン機能を追加してみました。今回もまた、チュートリアル記事(Build an Admin Panel with the Fuel PHP Framework)にあったサンプル通りに作成です。ディレクトリ階層がちょっと複雑なので、理解するまでに時間がかかりましたが、それでも、コマンドラインで必要なファイルを生成してくれるので、非常に効率的。慣れれば、かなり生産性が上がるでしょう。

実際のサンプルがこちら。見かけ倒しのハリボテです。まだ、誰もログインできません(笑)。

2012年10月4日木曜日

FuelPHPで、ページネーション(ページ送り)

FuelPHP(1.3)で、ページネーション(ページ送り)機能を追加してみました。いやー、簡単、便利。デザイン的にも細かく設定できるようになっているので、ありがたい。よく練られているなと、感心してしまいました。人気の理由を理解しつつあります。

実際のサンプルがこちら



参考サイト
Pagination Class(FuelPHP Documentation)
FuelPHPのPaginationクラス(WinRoad徒然草さん)

2012年10月3日水曜日

FuelPHPで、GmailをSMTPサーバーとしてメール送信

FuelPHP(1.3)で、GmailをSMTPサーバーとしてメール送信する設定です。Emailクラス用の設定ファイル email.php の3箇所「driver」「smtp」「newline」を変更すれば良いようです。

/app/config/email.php
/**
 * Mail driver (mail, smtp, sendmail)
'driver' => 'mail',
 */
'driver' => 'smtp',

/**
 * SMTP settings
'smtp'    => array(
    'host'        => '',
    'port'        => 25,
    'username'    => '',
    'password'    => '',
    'timeout'     => 5,
),
 */
'smtp' => array(
    'host' => 'ssl://smtp.gmail.com',
    'port' => 465,
    'username' => 'Gmailのユーザーネーム',
    'password' => 'Gmailのパスワード',
    'timeout' => 5  
),

/**
 * Newline
'newline' => "\n",
 */
'newline' => "\r\n",

参考サイト
Use FuelPHP's Email class with Google Apps or Gmail SMTP(FuelPHP Forums)
FuelPHPで簡単Email送信(WinRoad徒然草さん)

2012年10月2日火曜日

FuelPHPで、掲示板

FuelPHPで、掲示板です。「Getting Started with the Fuel PHP Framework」のページを参考に、設定してみました。DBに登録、変更、削除、一覧表示といった基本機能CRUDです。ページに書かれた通りの手順をなぞっただけなので、表示はまだ全部英語です。できてしまえば、至極簡単なことなのですが、慣れないことをすると、疲れます。特に、今回サーバーとして利用しているpagodaboxは、かなりの「くせ者」。先が思いやられます(笑)。

実際のサンプルがこちら

2012年10月1日月曜日

FuelPHPで、Hello World

季節の変わり目で、頭がおかしくなったかもしれません。人気沸騰中(?)のPHPフレームワーク、FuelPHPを試してみたくなってしまいました。我ながら、目標が定まりません(笑)。再び、行き当たりばったりで、実験プロジェクト始めようかと思います。いつまで続くかわかりませんが、また亀の歩みでいこうかと。そういったわけで、FuelPHPで、Hello Worldです。今回利用したのは、安定版のバージョン1.3です。サーバー環境は、pagodabox にユーザー登録してみました。

実際のサイトはこちら



pagodaboxの使い方