2012年12月30日日曜日

Androidアプリは儲からないのか 2

Androidアプリは儲からないのかを書いてみてからまた半年経ってたので、どうだったか振り返ってまとめてみる。

2012年11月25日日曜日

[FuelPHP] DB接続でちょっとハマる

Database イントロダクションにあるようにAPPPATH/config/db.phpに設定を書いて、Usageのようにqueryをexecuteしたのだけれど、
Fuel\Core\Database_Exception [ 1045 ]: Access denied for user 'root'@'localhost' (using password: YES)
と言われて繋がりません。ユーザ名はrootなんかにしてないのに。。『さくらVPSでFuelPHPからmySQLへDB接続』の記事でも同様の現象か。さすがにpassをrootにしたくはない。
環境によって接続設定は変えないので、configの下にある下記dirを消してみたところ、APPPATH/config/db.phpの設定で無事に接続。
development  production  staging  test

あと、executeした結果をそのままviewに渡したら、
Fuel\Core\FuelException [ Error ]: Database results are read-only
と怒られました。これはas_arrayで解消。初めてのフレームワークを障ると毎回色々と躓く。

2012年10月21日日曜日

mod_pagespeed入れてみる

mod_pagespeedが正式版になったので、試してみた。Installing mod_pagespeed From Packagesの通りに、Latestバージョンをダウンロードして、インストール。そして、apacheを再起動。
# dpkg -i mod-pagespeed-*.deb
# service apache2 restart

とりあえずphpinfoを表示するページのabを試した結果は下記の通り。
・導入前
Concurrency Level:      10
Time taken for tests:   1.112 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      46632000 bytes
HTML transferred:       46440000 bytes
Requests per second:    899.18 [#/sec] (mean)
Time per request:       11.121 [ms] (mean)
Time per request:       1.112 [ms] (mean, across all concurrent requests)
Transfer rate:          40947.90 [Kbytes/sec] received
・導入後
Concurrency Level:      10
Time taken for tests:   8.088 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      51024000 bytes
HTML transferred:       50741000 bytes
Requests per second:    123.64 [#/sec] (mean)
Time per request:       80.880 [ms] (mean)
Time per request:       8.088 [ms] (mean, across all concurrent requests)
Transfer rate:          6160.74 [Kbytes/sec] received
mod_pagespeedはない方が結果は良い。画像だったりcssだったりがあるページだと結果は違うのかもしれないが、mod_pagespeedを入れても速くならないこともあるのかも。

2012年10月14日日曜日

[MySQL] 日本語全文検索

mysqlの日本語を検索したくてmroongaを試そうとしたら、
Can't open shared library '/usr/lib/mysql/plugin/ha_mroonga.so'
上手く入らない。そもそも32ビット環境ではおすすめされないようなので諦める。
mysqlのFULLTEXTインデックスで全文検索関数を使うことに。

2012年9月17日月曜日

[jQuery] formにプレビュー機能をつける

フォーム入力しながら、実際どういう画面になるのか見せるためプレビュー機能を考える。
プレビュー機能と言ってもやり方は色々ありそう。とりあえず下記2点、実装できればなんとかなりそうかな。
  • formに入力した情報を別のactionに渡す
  • 別windowで開く

2012年8月19日日曜日

Android Notificationで通知をする 2

以前に書いていたAndroid Notificationで通知をするで使っている下記2つの関数。
Notification(int icon, CharSequence tickerText, long when)
void setLatestEventInfo(Context context, CharSequence contentTitle, CharSequence contentText, PendingIntent contentIntent)
deprecatedになっていて、Notification.Builderを使えとのこと。

2012年7月21日土曜日

2012年7月8日日曜日

[CodeIgniter] Cron処理 メモ

CodeIgniterでCronに仕込むバッチ処理を書こうと思って調べてみる。
何もしなくても下記のように普通にコマンドラインから実行できる。
$ cd /path/to/project;
$ php index.php controller method

これだけだとURLにアクセスされるとバッチ処理を実行できてしまうので、コンストラクタでコマンドラインからの実行でない場合は404にしておく。
class Cron extends CI_Controller {

    function __construct()
    {   
        parent::__construct();
        if (!$this->input->is_cli_request()) show_404(); 
    }

}
cron設定できる処理の数が決まっているレンタルサーバとかなら、判定条件を工夫して別のサーバからURL叩いて定期処理をさせるとかもできるか。

[参考]
CodeIgniter ユーザガイド CLIからの実行

2012年6月17日日曜日

[CodeIgniter]エラーページのカスタマイズのメモ

CodeIgniterでエラーページはシンプルでheadingとmessageしか表示されないのでカスタマイズする。
まず、application/errors/error_*.phpをいじればデザインは変えられる。
変数とかを渡したい場合は、application/core/MY_Exceptions.phpを用意する。

2012年6月9日土曜日

Androidアプリは儲からないのか

Androidアプリは儲からないという記事タイトルは今までけっこう見てきた。
そんなAndroidアプリを出して半年が経ったので簡単に収益中心にまとめて見ようと思う。

2012年5月27日日曜日

ServersMan@VPS メンテ後メモ

「性能改善と障害対策を目的としたメンテナンス」が先日行われたが、性能改善したのかな?
Muninでとってる数値ではなんとなくLoad Averageは落ち着いたような気もするけれど。
"Http load time of page"は2倍くらいになってしまっている。。
とりあえず体感的にはわからないので気にしないで様子見。

SaasesでもVPS借りてるので、ソースとデータ移してサービス止めずに済んだ。
ServersManはやめてSaasesを2つにしようとも思ったけれど、
違うとこで2つの方がメンテも被らないだろうし、比較もできるしいいのかな。

まぁ、メンテでの停止を気にするようなサービスでもないのだろうー。
それも半年経つので、一区切りとしてなにかしらまとめてみるかにゃー。

2012年5月13日日曜日

MySQL VIEWについてメモ

VIEWは使ったことなかったが、使用されてるシステムをみることになったのでメモ。
ちょっといじってみた感じVIEWじゃない方がいいんじゃないかとも思う。重いので。

2012年4月14日土曜日

NULL + 1 > 0 はTRUEかFALSEか

PHPだとTRUE。SQLではUNKNOWNのためTRUEではないのでFALSE。
$ php -r 'echo (null + 1) > 0 ? "TRUE" : "FALSE";'
TRUE

mysql> SELECT IF(NULL + 1 > 0, "TRUE", "FALSE");
+-----------------------------------+
| IF(NULL + 1 > 0, "TRUE", "FALSE") |
+-----------------------------------+
| FALSE                             |
+-----------------------------------+
1 row in set (0.00 sec)
3値論理であることを意識していないSQLを業務でも結構見る。NULLの取扱い方は難しい。
だから僕は、Nullがきらい。
基本的には、NOT NULLにしてnullは排除するように気をつけている。
(例外的に、必須でないけどUNIQUEなカラムは仕方ないのでNULL許すこともあるが)
でも、NOT NULLでNULLを排除していてもNULLは出てくるので困る。そう、外部結合。
NULLを完全に排除なんてできないので、nullについてちゃんと意識してSQLを書こうという今回の教訓。

とりあえず以上。


一応、表題の件を考慮しない失敗例は示しておく。

2012年3月17日土曜日

bloggerのアドレスが変わったのか

今日記事を書いて気づいたのだが、bloggerのアドレスが、suka4.blogspot.comからsuka4.blogspot.jpに変わっていた。ブログが国別の URL にリダイレクトされる理由によると、「地域ごとにコンテンツを管理できるようにするためです。」らしい。

SEOには詳しくないが、「Google は、複数のドメインで Blogspot コンテンツをホスティングすることでもたらされる負の影響を最小化すべく、あらゆる努力を払っています。」らしい。

一応SEOに関係しそうなリダイレクトのコードを見てみたら、302だった。
HTTP/1.1 302 Moved Temporarily
Location: http://suka4.blogspot.jp/
/ncrにアクセスすると、リダイレクトされるのを一時的に無効にできるから、301じゃなくて302なのかな?

ちなみにcanonicalは.comの方。
<link href='http://suka4.blogspot.com/' rel='canonical'/> 

SEOは良く分からないけど、このブログへのアクセスは、googleからの検索がほとんどなので、Googleが努力を払うようだし、アクセスが減ったりはしないのかな?まぁ、自分の備忘録としてのメモ書き程度なので、別にアクセスは減っても構わないし、とりあえず様子を見てみよう。

※追記
ちゃんと読んでなかった。302なのも、canonicalが.comなのも、ユーザ(読者)が現在いる場所でリダイレクトされる国別ドメインが決まるからか。

Saases Osukini Server vps借りてみた

Saasesのクラウド春一番キャンペーンとやらで、初期費用が無料だったので、OsukiniサーバーのプランLTを契約してみた。

2012年2月27日月曜日

Ruby on Railsにrideしてみる

いまさらだけれど、Ruby on Railsを勉強しようと思うので、環境構築のメモ。
とりあえずvmにubuntu-11.10を用意したのでそこに作る。

2012年1月20日金曜日

変なトラフィック増。。

普段は、400~600程度のアクセスなのに今日は突然アクセス増えていてちょっと気になったのでbloggerの管理画面で確認。みるとアメリカからたくさんアクセスされてるんだけど、これなんなんだろ?
上のがbloggerの1日単位の統計の図。3つの遷移元だけで、いつもの平日分くらい。
このURLにはこのblogへのリンクなんかないし、ほんとなんなんだろう。気持ち悪い、気持ち悪い。
気持ち悪いけど、別に実害はないのかな。とりあえずログとしてメモに残しておく。

2012年1月18日水曜日

軽量高速のjQ.Mobiを試してみる

かるい、はやい、ものすご〜いフレームワーク「jQ.Mobi」をさっそく試してみようと思う。

前にjQuryMobileでやった簡単なオークション検索を書き換えて使いやすさとか見てみる。ajaxでapi叩いてリストを表示するだけのシンプルなやつ。なので記事タイトルだとちょっと広過ぎで、内容としては『jQ.Mobiのajax関数を使ってみた』がいいところ。