Pages

2009年9月30日水曜日

色々なところの動画を見てみる「Adown エイダウン無料版」

ッケージ名 : jp.adlibjapan.adown
※パッケージ名で検索してください。


残念ながら無料版なのでではニコニコ動画は見れない?
とりあえずYoutube以外がこれで見れるようになるので、入れてみる価値はあるかと思います。

その内ニコニコ動画見れる無料なアプリも出てくるでしょうw

しくみとしてはダウンロードしてきた動画を携帯で再生できない場合はadownのサーバーにアップロードして変換するみたいです。
なので、回線をめちゃくちゃ使ってますね。。。遅い。。。

携帯を介さずにいきなり変換してからダウンロードする事はできないものなのでしょうか。。。




mixiに投稿された友達の日記に最速でレスしたい人はこれ「mixi 日記新着アプリ」

パッケージ名 : jp.gr.netfort.dancer.mixi
※マーケットではパッケージ名で検索する必要があるようです。

 
自分はもうmixiやってないんで、興味が無いですがまだ回りでは結構やってる人が多い事に最近気付いたので、興味ある方はどうぞw

Office(Word,Excel)を閲覧、編集してみる。「Documents To Go 2.0 Main App」

パッケージ名 : com.dataviz.docstogo
※マーケットではパッケージ名で検索する必要があるようです。

 
外国が作られたアプリなんですが、何をするアプリかというとMicrosoft Office関連で作られたWordやExcelファイルを開いて閲覧、編集しようとするアプリです。
いつかできるだろうと誰しもが思っていたようなものですね。
で、早速入れてみました。
簡単なテストとして日本語ファイル名とデータが閲覧できるのかという事をしてみました。

結果は下記画面キャプチャの通りです。

現在配布されているDocuments To GoはFree版で色々制限があります。
とりあえずWordとExcelだけはファイル開けられるみたいですね。
日本語ダメだと思っていたのでラッキーでした。

詳しくはご自分で調査してみてください。



>>画像1
Free版ではWordとExcelしか対応していない。


>>画像2
開いたファイルは履歴として出るようです。
ちゃんと日本語出てますね。


>>画像3
ファイルを選択する画面です。

>>画像4
拡張子.xls対応ですね。


>>画像5
拡張子.xlsxにも対応しているみたいです。

2009年9月29日火曜日

すれちがったー ですれ違い通信をしてみよう

パッケージ名 : org.sevenleaves.droidsensor
※マーケットではパッケージ名で検索する必要があるようです。

すれちがったーというアプリがあるのですが、これを入れるとドラクエⅨ?みたいな すれ違い通信ができるというアプリです。

どんな風になるか詳しくは下記サイトを見てください。以外とすれ違えるみたいですw

すれ違ったユーザー名とかが解ったりすると面白いんですけどね~

作るか。。。

※設定のAll Bluetooth Devices はONにしてる方が楽しそうです。
恐らくONにしてないとすれちがったーアプリ入れてる同士のみ反応するようなので、全然すれ違えない。。。

http://d.hatena.ne.jp/melodymaker0930/20090928/1254151913

マーケットからのアプリダウンロードに失敗する

最近9割以上の確率でマーケットからのアプリダウンロードに失敗するようになった。。。
原因不明。。。

ワイヤレス設置 > モバイルネットワーク > ネットワークオペレータ で Docomoを選択しなおすとたまダウンロードできるようになるけどほとんど失敗。。。

場合によってはダウンロード完了と、ダウンロード失敗のメッセージが両方でる時もある。
どっちやねん。。。って失敗してんのかい。。。

その後、何回か再起動してると直りました。。。 なんじゃこれ。。。

ちなみに同時期に他の端末でダウンロードすると凄く正常に行えます。
そこから推測するとサイト側ではないような気もw

その後

「ダウンロードできませんでした。しばらくしてからもう一度試してください。」

とまた相変わらず発生するのですが、遂に再起動しても復活できなくなってきました。。。
ハードの問題なのかサイトの問題なのか。。。

知り合いの端末にも同症状が発生してきているとの事だったのでやっぱりサイトなのか。。。
アプリダウンロードに失敗って痛すぎるぞGoogleさん。。。

完全な解決策は今だ見つからず。。。

とりあえず再起動を繰り返す事が一番の解決策なようです。

HT-03A 電磁コンパスが壊れたらドコモショップで新品と交換

HT-03Aでは電磁コンパスや加速度センサー?が反応しなくなる不具合がある。
まだドコモは認めてはいないので、前例を訪ねても無いと言われてしまうが実際は新しいものと交換してもらえます。

自分も交換してもらいましたので。
お持ちの機種がデフォルトアプリの方位磁石が正常に動作するかを確認してみては?

自分のは次にマーケットのダウンロードできない問題が発生してますが。。。

FxCamera でオシャレな写真を撮ろう

FxCamera というアプリを見つけました。

これはトイカメラや魚眼レンズをシミュレートしてくれるアプリで、画像が汚い携帯カメラではこういったエフェクトをおもいっきりかけた方が味のある写真が撮れます♪

汚いのならばあえて汚くしてしまおうという感じですw

バッテリー寿命について

HT-03Aを使っているのですが、この携帯買ったばかりの時は電池が短すぎた。。。

でも、最近は2,3日持ちますw
まず、買ってから落ち着いてきて1日中触りっぱなしって事もなくなったw

常駐アプリはニコタッチ位。
※デフォルトアプリは対象外。

アプリはすぐにTaskillerで終了するように癖づいた。
定期的な同期はGmailのみ。

Astridも使ってますが、起動した時に同期とれば十分なので。
Remember the milk のアプリでAstridより良いものが出ればな~無料でw

TasKiller Free

今まではTaskRoidを使っていたんだけど、最近TasKillerを使ってみた。
さすが後発♪ ワンクリックで全て終了できるので、めちゃくちゃ楽です。
終了させたくないアプリも登録できるので、ニコタッチなんかは対象外にする事も可能。
ただしFreeでは登録件数に制限があるようです。

Package name : com.tni.TasKiller 
※マーケットではパッケージ名で検索する必要があるようです。

絵文字が送れるようになった

ニコタッチもしくはOpenWnnフリック入力対応版で絵文字が入力できるようになった。
でも残念ながらGmail自体はHTMLにも絵文字にも対応していないので、プレビューする事はできない。。。

しかも送信先がドコモの場合は絵文字は表示されるけどEZwebやSoftbankだと化けちゃうみたいです。一覧表示がちょっと重いですが、無いよりかは全然マシですね♪

パッケージ名 : com.hiroshica.android.input.nicownn2

2009年9月25日金曜日

PHP Zend_Mail_Transport_Smtp で大量にメール送信するとメモリー不足になる

完全に辿ったわけではないので、推測だがどうやらこの Zend_Mail_Transport_Smtp は通信ログを内部で持っているのかしてメモリーリークを起こしてしまう。

切断などして開放する事はできるだろうけど、その都度再接続したりどこかのタイミングでってのもな。。。

これに関しては今だ解決策は見つかっていないので、大量メール送信の場合にはテーブルに一度入れてCRON負荷分散するなどして対策が必要となる。

というか元から素で送信しようとするなら必要だけどね。。。

2009年9月18日金曜日

MySQL 日本語(マルチバイト)文字をソート(ORDER BY)する UTF-8

 MySQLで日本語を入れた列をソートしようとするとうまくいかない現象を確認。

解決策は下記を発見。


SELECT * FROM [table_name] ORDER BY CAST([sort_column] AS char);

これが調査した感じではベストでしたが、しっくりこない。。。

DBのセットアップの時に対応させる方法があったような。。。

2009年9月15日火曜日

Zend_Validate NotEmptyでは0を正確にチェックできない時がある。

NotEmpty というだけに0が入力されても普通はOKなんですが、Filter で Int を使うと isEmpty となってしまいます。

これは Validate_NotEmpty の中で empty 関数を利用してチェックしているからです。。。

普通のValidateクラスなら問題ないんですが、この NotEmpty はやっかいな事に IsRequred で必須を指定した時に強制的に追加される Validate です。

removeValidate で削除してオリジナル Validate を追加しようにも自動で追加される Validate は isValid のタイミングで追加されるので対象外になってしまうようです。。。

対応策は見つからず。。。

前回のMulti系エレメントの問題で Int にキャストする事で回避と書きましたが、合わせるとどうしようもない問題に変わります。。。

Multi系の時に array_keys を利用しているのですが、こいつは Int ぽいのしか無ければ必ずIntにしてしまうからです。。。

DBには0以外で管理するしか無いですね。。。
boolの変わりにIntを使う時でも1と2でやった方が良いです。

オリジナルFilterを作成して対処する方法がありました。
http://developer.unlax.com/2009/10/zendframework-element0.html

HTTP_Request でアクセス先がリダイレクトを要求している場合への対応

RSSリーダー作成の時にちょっとはまったのでメモ。

$options = array(
    'timeout' => '10',  // タイムアウトの秒数指定
);
$req = new HTTP_Request('', $options);

上記から下記へ修正する事により対応可能となった。

$options = array(
    'timeout' => '10',  // タイムアウトの秒数指定
    'allowRedirects'    => true,
    'maxRedirects'      => 2,
);
$req = new HTTP_Request('', $options);

2009年9月14日月曜日

PHP Zend_Filterではcontextが使えない。。。

Zend_Filterではcontextが使えないみたいです。。。

生年月日 □□□□年□□月□□日
 といった場合に3つの入力欄に分けた場合にFilterでマージするようにしたいのだが、これができない。。。

Validateの後にすればいいけどValidateでchkdateだってしたいだろうし。。。
結局Validateの際にマージするようにできるけど本来Filterの仕事のような気も。。。

PHP Zend_Form_Elementには同じValidateを2重登録できない。

どうやらZend_Form_Elementの中身を見てみると、ValidateをElementに追加する時に同じ名前を登録しようとすると上書きされてしまうようだ。

これで困る事は、現在デフォルトで用意されているようなNoRecordExistsなんかである。
大体は1回しか利用しない事が多数だが、場合によっては2回以上利用する必要がある場合がある。

例えば
テーブルAとテーブルBに登録されていないメールアドレスならばOKとしたい場合である。

テーブルAをチェックするValidateを登録した後にテーブルBをチェックするValidateを登録するとクラス名が一緒のためテーブルBのみをチェックして判断してしまう。。。

対処方法としてはクラス名を変えてオリジナルの物を用意するしかない。
Abstract.php は別にいるので簡単にできるのだが、同じクラスが2個、3個と増えていくのは全く納得がいかない。。。。

これ位の事が想定できなかったとも考えにくいのだが、方法があるのか。。。
Validateを重複ありにする設定とか。。。

ちなみに1.8.0にあったNoRecordExistsなんかは1.6.1に安易に移植可能だった。

検証対象 Zend_Framework 1.6.1、1.8.0

PHP Zend_Element SlectやRadioなどでは値に0が含まれる注意が必要

ZendFramework の Zend_Formを利用する時にZend_Elementを利用するが、その際にSelectやRadioを利用するとMultiOptionsを指定して利用する。

この時にちょっとした落とし穴があって、本来このMultiOptionsを指定すると自動的にInArrayというValidateが追加されるこれはこの連想配列に含まれるキーに該当するかをチェックしてくれるバリデートなのだが、このキーに0が含まれる場合、つまり 0=>いいえ, 1=>はい といった場合です。

この場合InArrayは自動的にセットされない。

これが何を目的としてこうなっているのかは解らないがリファレンスにもそれらしい事は書かれているので、何かのためにあえてそうなっているようだ。。。

対処方法としては自動的にセットしてくれないので、自分でValidateにInArrayをしてやればいいんだろうと思ったけどダメみたい。。。

って、やっと解った。。。
PHPでは結構型の扱いというのが曖昧なせいで、こんな歪を発見。
in_array で

$res = in_array('aaa', array(
        1,
        2,
        0,
    ));
var_dump($res);

とすると結果は TRUE となる。
なぜ?

これは'aaa'をIntにキャストすると0になってその0が入っているからTRUEとなる。。。

Zend_Validate_InArray でもこの現象が発生しているのです。。。
一応このin_arrayにはこの現象を回避するために第2引数にStrictが用意されており、ここをTRUEにすれば解消されるのですが、問題は Zend_Validate_InArray では指定できるようになっているけどElementでselectなどのMulti系を指定する時は指定できないのです。。。

なので、仕方ないので、

'validators'    => array(
    array (
        'breakChainOnFailure' => true,
        'validator' => 'InArray',
        'options'   => array((array)$arrayHoge, true),
    ),
),

として自動で入れたものをStrictをTRUEで上書きしてやるしかないのです。

また、この時に型まで見るようになるためりフォームから受け取った値はStringなので、このままだとどんな値でもエラーになります。。。

なので、今度はFilterでIntを指定してフォームの値をキャストしてやりましょう。
これで解決ですね。。。

あ~ハマった。。。

2009年9月11日金曜日

PHP Windows環境にPECL FileInfoをインストール

http://pecl.php.net/package/Fileinfo

でダウンロードしても中にDLLファイルが無い。。。

続いて

http://pecl4win.php.net/ext.php/php_fileinfo.dll

で取得しようにもサイトが改装中。。。

で、行きついたのがここ
モジュールは発見したけど入れてみると。

http://dllcentral.com/php_fileinfo.dll/5.2.5.5/

だめだ。。。。なぜ。。。
PHP5.3.0からだと標準でモジュールが入っているみたいなんでコメントアウトを外すだけで良いんだけどな。。。

PHP5.3.0から持って来てみようかな。。。
ってやっぱり駄目だった。。。

PHP JPEG(JPG)のRGBとCMYK等のカラーモードを判別する方法

$FileInfo = getimagesize($ImagePath);

if ($FileInfo['channels'] == 1) {
    echo 'これはグレースケールです。';

} else if ($FileInfo['channels'] == 2) {
    echo 'これは?です。';

} else if ($FileInfo['channels'] == 3) {
    echo 'これはRGBです。';

} else if ($FileInfo['channels'] == 4) {
    echo 'これはCMYKです。';
}

2009年9月8日火曜日

PostgreSQL UNIQUE制約の削除

これらは全部ダメ

× ALTER TABLE [table_name] ALTER COLUMN [column_name] DROP INDEX [index_name];
× ALTER TABLE [table_name] ALTER COLUMN [column_name] DROP UNIQUE;
× ALTER TABLE [table_name] DROP INDEX [index_name];
× DROP INDEX [index_name];

これが正解

○ ALTER TABLE [table_name] DROP CONSTRAINT [column_name];

Windows CSEを利用してPostgreSQLに接続する

まずPostgreSQLのドライバをインストールする。 

検索 > ダウンロード


pgAdminⅢを起動してパスワードを入力してログインする。

データベースを選択して接続する。

 接続するとツールサーバー構成が選べるようになるので、そこにある pg_hba.conf を選択する。

127.0.0.1 の設定されているレコードをダブルクリックする。

方法という項目がmd5になっているので、password に変更する。

そして上書き保存してCSEで接続可能かを確認する。
※CSEでユーザー名、パスワードを入力するようになっているがODBCの設定で入力していれば必要なし。

今回参考にしたサイトはこちら

2009年9月4日金曜日

Smarty バイトで文字数指定する場合にエスケープもする。UTF8対応

前回紹介したものはエスケープはしていなかったので、XMLを出力する際には使えなかった。

理由
・エスケープしてからだとエスケープ後のエンティティが壊れてしまう可能性がある。
・丸めた後だと、バイト数がオーバーしてしまう。

以上の理由から、エスケープもしてくれるタイプを作った。


function smarty_modifier_org_escape_truncate_byte ($string, $length='', $end="…", $enc='UTF-8') {

    $length = (int)$length;
    $end = (string)$end;

    $MbLength = @mb_strlen($string, $enc);

    $ByteCount = 0;
    $ResStrings = $OverStr = '';

    for ($i=0; $i<$MbLength; $i++) {

        $str = htmlspecialchars(mb_substr($string, $i, 1, $enc));
        $len = strlen($str);

        if (($ByteCount + $len + strlen($end)) > $length && $OverStr == '')
            $OverStr = $ResStrings . $end;

        if (($ByteCount + $len) > $length) {
            return $OverStr;

        } else {
            $ResStrings .= $str;
            $ByteCount = $ByteCount + $len;
        }
    }
    return $ResStrings;
}

Smartyで指定文字数までに丸める(削る)。ただし指定はByteで指定する。UTF-8へも対応

 Smarty側で指定バイト数を超えている場合に文字化けしよいように丸める。
UTF8は1バイト~4バイトまで混じっているので、ちょっと工夫が必要となる。

下記関数では文字数を超えている場合まだ続きを表すための文字を追加できる。
もちろん追加した状態で最大文字数を超えないようにしている。
※デフォルトは”…”
※空を渡せば丸めた後に何も付けずにギリギリまで表示できる。

function smarty_modifier_org_truncate_byte ($string, $length='', $end="…", $enc='UTF-8') {

    $length = (int)$length;
    $end = (string)$end;

    $MbLength = @mb_strlen($string, $enc);

    $ByteCount = 0;
    $ResStrings = $OverStr = '';

    for ($i=0; $i<$MbLength; $i++) {

        $str = mb_substr($string, $i, 1, $enc);
        $len = strlen($str);

        if (($ByteCount + $len + strlen($end)) > $length && $OverStr == '')
            $OverStr = $ResStrings . $end;

        if (($ByteCount + $len) > $length) {
            return $OverStr;

        } else {
            $ResStrings .= $str;
            $ByteCount = $ByteCount + $len;
        }
    }
    return $ResStrings;
}

▼利用方法
テンプレート内で下記のように書く。
{$hogehoge|org_truncate_byte:100}

Followers