2011年12月27日火曜日

[jQuery]フォームのselectを複数選択

selectを複数選択可能にするにはmultipleを指定すれば良いのだけれど、複数選ぶにはCtrl押しながら選択しないといけないのでユーザにやさしくない。直感的に選べるようにするには、jquery.multi-select.jsのプラグインが便利そう。デモや使い方は参照先にあり難しくもないので省略。

2011年12月23日金曜日

bloggerにadSenseの広告が出ない

ブログにadsenseを載せていたわけだが、でなくなってた。
bloggerのレイアウトの設定が変わっていたようで直したら表示されるようになった。
でないのが、いつからなのかなぜなのか、不明だけれどまたでてよかた

2011年12月9日金曜日

Webページ高速化のためにやっとくapacheの設定

最近忘れがちなので備忘録として。設定するのはYSlowの項目でいう、「Add Expires headers」、「Compress components with gzip」、「Configure entity tags (ETags)」。

Add Expires headers

Expiresヘッダを追加し有効期限設定してやる。
mod_expires

Compress components with gzip

データを圧縮して転送量を下げる。
mod_deflate

Configure entity tags (ETags)

正しく設定してキャッシュが正しく使われるようにする。
FileETag ディレクティブ

Etagについては正しく理解できていないのでメモ程度に。
・Etagはキャッシュの管理で使われる。(Etagをレスポンスに含めると、次回のリクエストではIf-None-Match:がヘッダに含められ、Etagが異なればキャッシュが使われずにデータが変えされる。)
・Etagを求める計算にinode番号を使用するので、複数台で負荷分散してるサイトだとEtagが一致しなくなってキャッシュが使われないってことだと思う。
・Etagを返さないように設定すると、YSlowの評価はFからAになるけど、実際の挙動としては、キャッシュが使われるか使われないかは、動作見た感じだとこの設定では変わってないような気がする。

2011年11月30日水曜日

jQuery UI Sortableで複数リスト間ソート

最近は何をするにもjQueryから調べる。だいたいやりたいことはできる。
今回は、複数のソート済みリストがあって、その要素をドラッグ&ドロップで別のリストに移せて、移したらそのリスト内でソートをしたい。

2011年11月21日月曜日

Yahoo!マーケットに掲載される開発者ウェブサイトが残念

Androidマーケットのアプリページの説明からスクレイピングしてるのか、説明内にurlがあると一番最初のurlが基本情報の開発者ウェブサイトになっちゃってるっぽい。抜いてるんだとしたら、アンカーテキスト「デベロッパーのウェブサイトにアクセス」まで含めて抜いてやらないとパッと見ダメそう。提携していてデータもらってるとかなら、そのデータがおかしいのか。まぁ、どちらにしても間違った情報を掲載しちゃってるわけなので。

amazonとか楽天とかの有名なサービスのURLを説明に入れてるアプリで開発者ウェブサイトとして誤掲載されてしまっているのをいくつか見たけど大丈夫かな。まぁ、ウェブサイトにとんで見て本家アプリだと勘違いしてインストールするなんてこともまずないだろうしいいのか。最終的にはAndroidマーケットからインストールするわけで、そこで再度開発者ウェブサイトを見るのかはわからないが正しい情報が載ってるわけだし。リリースされて1週間ちょっと経つが、軽くヤフってみた感じだとこの件騒がれる様子もないしきっと大した問題ではないのだろう。リリース自体がそれほど大きく取り上げられていない感はあるが…

ユーザが間違うかどうかはとりあえずおいておいて、サービスを作る者として『スクレイピングするときは十分に気をつけよう』という今日の教訓。基本は大事ということですね。
(実際にはスクレイピングのミスが原因なのかは知りませんが。あと、スクレイピング先のサイトの仕様なんて完璧に知り得ないので、注意したところでやってしまうときはやってしまいそうですが。。)

※12/12/12 追記
久しぶりに見てみたら修正された模様。誤掲載の証拠をとってた分けではないので、修正されたのか、もとから正しく掲載していたのかは証明できないけど。
今は正しい情報を掲載してるようなので誤解のおきないように追記っした。

2011年11月10日木曜日

jQuery Mobileで動的リスト

だいぶ前に勉強がてらに書いたjQuery Mobileでリスト表示したコード。参考にして使ってみたらリストのデザインでおかしくなる部分あったので修正しておく。

2011年10月30日日曜日

2011年10月23日日曜日

Android Custom Dialogの上下の空間

AlertDialogでlist形式にしたいときは、setItemsやsetMultiChoiceItemsとかsetSingleChoiceItemsとかを使えば良いけど,アイコン+テキストにして見せたいときにはこれはダメ。
Creating a Custom Dialog | Android Developersにあるようにxml用意して、設定してやれば良い。

とりあえず例を参考に下記のようにAlertDialogを準備して、ボタンを押したらshowするようにした。
        View dialogView = View.inflate(this, R.layout.dialog, null);
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Custom Dialog").setView(dialogView);
        alertDialog = builder.create();

用意したxmlは表示されるけど、その上下に微妙に空間ができてしまった。。

で調べる。

AlertDialog.BuilderのsetViewでは設定できないけど、AlertDialogだとpublic void setView (View view, int viewSpacingLeft, int viewSpacingTop, int viewSpacingRight, int viewSpacingBottom)で設定できそう。

下記のように書き換える。
        View dialogView = View.inflate(this, R.layout.dialog, null);
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Custom Dialog");
        alertDialog = builder.create();
        alertDialog.setView(dialogView, 0, 0, 0, 0);


スペースは消えてくれたので、やりたいことはできた。

ただ、builderでbuild(タイトルとかボタンとかのset)をしてcreateされたdialogに、Viewをsetしてやるのはなんとなく気持ち悪さが残る。setは全てbuilderでできる気がしてたので。

2011年10月12日水曜日

新しい Blogger インターフェイスでの投稿の改行設定

今までのインターフェイスだと改行がbrに変換されてたのに、新しい Blogger インターフェイスにしたら変換されなくなった。。
設定を見てもそれらしいのがない。と、いうことで、新しいのは使わずにいたけどそろそろ移行しようと思い見てみる。

全体の設定(左のメニューにあるやつ)じゃなくて、投稿の画面で右にある「投稿の設定>オプション>改行」でするんだったのか。
「「Enter」キーを押して改行」に設定したら今までのように改行が変換されるようになった。これで移行できるかな。

2011年10月9日日曜日

Android emulatorにgoogle account登録

AndroidアプリとGAE連携した何かを作りたくてエミュレータにアカウント登録しようとしたときのこと
Setup could not finish
Unable to open connection to server.
となって、上手く登録できない。

結局、emulatorのTargetがGoogle APIsじゃなきゃってだけ。
Android Emulator - Trouble creating user accounts - Stack Overflow

2011年10月6日木曜日

Android エミュレータからPCサーバへのアクセス

1台のPCでAndroidアプリとWebサーバの開発のとき、アプリからサーバへのアクセスはlocalhostじゃダメ。loalhostはエミュレータ自身を指すから。10.0.2.2とすればアクセスできる。
Emulator Networking | Android Developers

2011年9月30日金曜日

インストール数比例型の収益モデル

Androidに新しい収益モデル「インストール数比例型」のAppLogがミログによって提供されたけど、これってどうなのかな。
オプトインだからユーザが同意してくれないといけないわけで、どこまで収益につながるんだろう。(従来の広告型のモデルでもやってないし、そもそもアプリも公開してないので収益につながるかはまずは良いんだけど)
とりあえず、新しいモデルなのでちょっと興味がある。

開発者としては、AppLogSDKをアプリに組み込みやすいのかも気になるところ。SDKはアプリの登録を申請して、審査に通らないとダウンロードできないよう。しっかり読まずに空で登録してしまった。当然Invalid。不要な手間を掛けてしまったな。。すみません。

AppLogSDKの概要を見てもあんまり組み込むイメージが沸かない。。別途、仕様書ってのもダウンロードするものなのかな。


よし、まずは何かシンプルなアプリを作って公開してみるところから始めてみよう!

2011年9月19日月曜日

MySQL ERROR 1005 (HY000): Can't create table

MySQLでcreate tableしようとしてエラーになったのでメモ。

エラー内容
ERROR 1005 (HY000): Can't create table './test/c.frm' (errno: 121)

とりあえず、innodb statusを見てみる。
mysql< show innodb status;
ERROR 1227 (42000): Access denied; you need the SUPER privilege for this operation
スーパー権限が必要とのこと。スーパー権限で作業してるのでちょっとよくわからない。

結論、外部キーのsymbolが問題だった。
MySQL :: MySQL 5.1 リファレンスマニュアル :: 13.5.6.4 FOREIGN KEY 制約
もし CONSTRAINT symbol 条項が与えられると、symbol 値はデータベース上で固有である必要があります。もし条項が与えられなければ、InnoDB は名前を自動的に作成します。

bテーブルと定義が同じテーブルを作りたかったので、SHOW CREATE TABLE bで出力されるcreate文のテーブル名だけcに変えて実行したのがエラーの原因。
symbolが被ってしまってエラー。symbol部分も変えるか削除するかしてやらないとダメ。

2011年9月13日火曜日

jquery ui アイコンの改行回避

jQuery UIのアイコンが便利。ただ、アイコンの後ろに文字を続けたくても、改行されてしまうので調べたメモ。

こんな感じに記述すると
<span class="ui-icon ui-icon-play"></span>再生
<span class="ui-icon ui-icon-pause"></span>一時停止
こう表示される。
再生 一時停止

firebugで見てみるとdisplay:blockのために改行されるよう。 styleを「display: inline-block」設定してやると、
<span style="display: inline-block" class="ui-icon ui-icon-play"></span>再生
<span style="display: inline-blcok" class="ui-icon ui-icon-pause"></span>一時停止
改行されずに上手く表示されました。
再生 一時停止

ちなみに、「display: inline」だとアイコンがどこかに逝ってしまった。。cssはむずかしい。
再生 一時停止

※FirefoxとChromeでしか確認してない。

2011年8月24日水曜日

ubuntu firefox6にアップグレード

最近やたらfirefoxが遅くなった気がする。そして、クラッシュする頻度も増えたような。
ちなみに、アップデートはアップデートマネージャに任せていたのでバージョンは3.6.18。
と、いうわけでfirefox6にアップグレードしてみた。
# add-apt-repository ppa:mozillateam/firefox-stable
# apt-get update
# apt-get install firefox
メニューとか英語だな。。。日本語化にはfirefox-locale-ja。
# apt-get install firefox-locale-ja
これでアップグレードは完了!
若干速くなったような気がするのは気のせいかな

2011年8月4日木曜日

2011年8月3日水曜日

CakePHP 画像アップロード

画像のアップロード調べていて、下記ImageBehaviorを知ったので使ってみる。
[CakePHP] 画像のアップロード&リサイズを簡単にできる ImageBehavior | Sun Limited Mt.

使い方は参照元にあるので省略するが、簡単に使えて良い感じ。
ただ、findしたときに関連テーブルのimageまでは処理してくれない。
で、また調べてたら、下記記事でbelongsToに対して処理を足してたので参考にみる。
ちなみに、今回処理させたい関連はhasMany。
cakePHPのimageBehaviorについて – CEED

afterFindに処理を加えてるよう。

今回はhasManyを処理したいので、relatedModelsにhasManyもマージする。
$relatedModels = array_merge($model->belongsTo, $model->hasMany);

これだけだと動かなかった。。。
hasManyなわけで複数のときもあるので、127-130行までの処理を複数の場合を考慮する。
                        if (isset($results[$i][$relatedModelName][0])) {
                            $j=0;
                            while ( isset( $results[$i][$relatedModelName][$j] ) && is_array( $results[$i][$relatedModelName][$j] ) )  {
                                if (isset($results[$i][$relatedModelName][$j][$field]) && ($results[$i][$relatedModelName][$j][$field]!='')) {
                                    $value=$results[$i][$relatedModelName][$j][$field];
                                    $results[$i][$relatedModelName][$j][$field]=$this->__getParams($relatedModel, $field, $value,$fieldParams, $results[$i][$relatedModelName][$j]);
                                }
                                $j++;
                            }
                        } else {
                            if (isset($results[$i][$relatedModelName][$field]) && ($results[$i][$relatedModelName][$field]!='')) {
                                $value=$results[$i][$relatedModelName][$field];
                                $results[$i][$relatedModelName][$field]=$this->__getParams($relatedModel, $field, $value,$fieldParams, $results[$i][$relatedModelName]);
                            }
                        }
145-148行のところも同様に。
                        if (isset($results[$relatedModelName][0])) {
                            $j=0;
                            while ( isset( $results[$relatedModelName][$j] ) && is_array( $results[$relatedModelName][$j] ) )  {
                                if (isset($results[$relatedModelName][$j][$field]) && ($results[$relatedModelName][$j][$field]!='')) {
                                    $value=$results[$relatedModelName][$j][$field];
                                    $results[$relatedModelName][$j][$field]=$this->__getParams($relatedModel, $field, $value,$fieldParams, $results[$relatedModelName][$j]);
                                }
                                $j++;
                            }
                        } else {
                            if (isset($results[$relatedModelName][$field]) && ($results[$relatedModelName][$field]!='')) {
                                $value=$results[$relatedModelName][$field];
                                $results[$relatedModelName][$field]=$this->__getParams($relatedModel, $field, $value,$fieldParams, $results[$relatedModelName]);
                            }
                        }

これでhasManyの関連のテーブルのimageが処理されるようになりましたっと。

2011年7月30日土曜日

PHP print_rに第二引数あったのね

超今更ながら、print_rに第2引数を渡せるのを知った。
TRUEを渡すと出力はしないで、string返してくれる。

そんだけです。

2011年7月28日木曜日

jQuery UI TabsにGoogleMap埋め込むと表示位置ズレる

GoogleMapの地図を埋め込んでみたが、どうも初期の中心地がズレる。
原因を調べていたら、どうもjQuery UI Tabsの相性(?)の問題。

2011年7月13日水曜日

jQueryMobileのボタン内のテキストを改行

jQuery Mobile使うとスマートフォンっぽいUIにしてくれるのでまぁ便利なんだけど、微妙なところの調整が良く分からない。掲題の通りで、ボタン内のテキストを改行して全てを表示させたい。デフォルトだと「…」と省略されるので。

2011年7月5日火曜日

モニタ24インチにしたら快適

今までずっと19インチモニタを使っていたのだけれど、とうとう新しいのを買った。別に壊れたわけじゃないんだけど、ネットサーフィン程度にしかPC使ってなかったのが開発もするようになって不便を感じていたため。やっぱり画面が広いと作業効率あがる。気がする。

2011年6月23日木曜日

Android WebView loadDataメモ

WebViewはwebページ表示するために使うものと思ってたけど、htmlの文字列を渡して表示もできるってことに気づいた。htmlの方が慣れてるし、けっこう便利!ちょっとハマった点メモ。

2011年6月17日金曜日

jQueryでAjax

DroidgapでWebアプリをAndroidアプリに変換してみる 」で書いたJavascriptがjQueryらしくなかったので書き直す。jQuery.ajax()を使えば非同期HTTPリクエストを行えたんね。ajax使うように書き直すと、こんな感じ。
function a() {
    var appid = '<ヤフーアプリケーションID>';
    var query = $("#query").val();
    $.ajax({
        dataType: "jsonp",
        data: {
            "appid": appid,
            "query": query
        },
        url: "http://auctions.yahooapis.jp/AuctionWebService/V2/json/search",
        success: function (data) {
            $("#result_list li:gt(0)").remove();
            if (data.ResultSet["@attributes"].totalResultsReturned > 0) {
                $.each(data.ResultSet.Result.Item, function(i,item){
                    var row = $("#result_template").clone();
                    row.removeAttr("style");
                    row.appendTo("#result_list");
                    row.find("#image").attr("src", item.Image);
                    row.find("#link").attr("href", item.AuctionItemUrl);
                    row.find("#title").text(item.Title);
                    row.find("#price").text(parseInt(item.CurrentPrice) + "円");
                });
            }
        }
    });
}
前回のでは、自分でqueryをencodeURIしてやってたけど、ajaxのdataでは不要。dataにcallbackは不要でsuccessに処理を記述する。jQueryでcallbackパラメータ付けてくれてリクエストしている模様。

2011年6月12日日曜日

DroidgapでWebアプリをAndroidアプリに変換してみる

PhoneGapはHTML+CSS+JavaScriptでAndroidやiPhoneなどのアプリケーションを開発できるフレームワークで、DrodiGapってのはPhoneGapでの開発に必要なファイルを生成してくれるテンプレート生成ツール。

DrodiGapではWebアプリをAndroidアプリに変換もできるようなので、ちょっと試してみる。
参考:5分で作るAndroidアプリケーション

2011年6月7日火曜日

Android WebViewメモ

WebViewについてのメモ。

・戻るボタン押されたときに、前のページに戻す

ActivityのonKeyDownのオーバライドする
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (event.getAction() == KeyEvent.ACTION_DOWN
                && keyCode == KeyEvent.KEYCODE_BACK
                && webview.canGoBack() == true) {
            webview.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

・ロードするURLに応じて処理をさせる

WebViewClientを継承してonLoadResourceに処理実装する。それをWebViewにセット。
        webview.setWebViewClient(new MyWebViewClient());
・・・
    public class MyWebViewClient extends WebViewClient {
        @Override
        public void onLoadResource(WebView view, String url) {
            if(!url.startsWith("http://example.com")) {
                Toast.makeText(getApplicationContext(), "外部サイトす。" , Toast.LENGTH_SHORT).show();
            }
        }
    }
example.com以外のサイトでは外部サイトとToast表示させる。例としては微妙だけど。。

WebViewClientで他にもいろいろできそう。onPageStartedとかonPageFinishedなどある。
上の例はonLoadResourceじゃなくてonPageStartedのがいいのかな。呼ばれる順番は下記のとおり。
05:37:39.808: DEBUG/MyWebViewClient(977): onPageStarted
05:37:39.888: DEBUG/MyWebViewClient(977): onLoadResource
05:37:40.938: DEBUG/MyWebViewClient(977): onPageFinished

以上、とりあえずメモ。

※追記
リダイレクト時(a.php→a.html)の挙動。
06:24:27.138: DEBUG/MyWebViewClient(1108): onPageStarted a.php
06:24:27.184: DEBUG/MyWebViewClient(1108): onLoadResource a.php
06:24:27.257: DEBUG/MyWebViewClient(1108): onPageStarted a.html
06:24:27.397: DEBUG/MyWebViewClient(1108): onPageFinished a.html
リダイレクト元URLのonPageFinishedは呼ばれず、リダイレクト先URLではonLoadResourceは呼ばれない。

2011年6月3日金曜日

Ubuntu ネットにつながらなくなるし

突然だった。昨日までは普通にネット見れてたのに。
突然なんてことはなく、何かやらかしたんだろうけれど、思い当たる節がない。
とりあえず調べてみよう。

どうも、resolv.confがおかしくなったよう。

DNSサーバの設定が保存されないを参考に。

resolv.confを修正して、/etc/dhcp3/dhclient.confのrequestセクションからdomain-name-serversを抜いてみる。
再起動時に戻ってしまったので、/etc/dhcp3/dhclient.confは元に戻す。きっと何かを間違えてるのだろう。

/etc/network/interfacesに固定IPにするように設定を追記。
auto eth0
iface eth0 inet static
address 固定IP
netmask 255.255.255.0
gateway ゲートウェイ(ルータ)IP

これでつながり、再起動後も問題無し。
でも、昨日アップデートとかも何もしてないし、どうしてこうなった?

2011年6月2日木曜日

Android 進捗表示の方法あれこれ

今までタスクの進捗を表示するときProgressDialogで"くるくるまわってる"やつを一択で使ってたけど、他にもタイトルバー上に表示したり、進捗率を表示させたりと色々あるようなので簡単にメモ。

2011年5月23日月曜日

Android Notificationで通知をする

Notificationを使って通知してみる。Notificationとはステータスバーに表示されるヤツ。

2011年5月20日金曜日

Android Service使ってバックグランド処理

サービスでバックグランド処理させることができるらしい。何分起きに何かを確認とかそういった処理をできる。

2011年5月18日水曜日

2011年5月15日日曜日

Android テーマを動的に設定する

AndroidのテーマはAndroidManifest.xmlに設定する他にもsetThemeでも設定できるようなので試す。

2011年5月12日木曜日

Android AdMob 広告を表示してみる

Androidアプリで小遣いを稼ぐなら、有料アプリにするか、広告を出すか、アプリ内課金か。
お金にはしにくいらしいが小遣い稼ぐ方法の1つのAdMob広告を出す方法をまとめておく。

まずは、AdMobの登録する。今すぐスタートから登録を行う。

2011年5月10日火曜日

Blogger 記事を投稿できない

Bloggerで突然記事を書けなくなった。昨日の夜くらいから。具体的には、記事用のテキストエリアで何かをロード中なのか、グルグル回って、回り続けるので、記事を書けない。

ブラウザ変えても、PC変えても同じ症状だったので、時間が解決するかと思い放置してみたがそんなに甘くなかった。

設定 > 基本設定 > 投稿エディタを選択 を「新しくなったエディタ(おすすめ)」から「以前のエディタ」に変更したところ解消。

追記:この記事投稿後に 「新しくなったエディタ(おすすめ)」でも記事書けるようになったので設定を戻す。

2011年5月9日月曜日

Android System Resourceの参照

デフォルトのシステムリソースは参照できるものとできないものがあるようなのでとりあえずメモ。

デフォルトのシステムリソースと呼んだのは、platforms/android-*/data/resにあるもので、
android:drawable="@android:drawable/ic_btn_speak_now"
のようにして使っていたが、使えないものだと下記のようなエラーが出て参照できない。
Error: Resource is not public. (at 'drawable' with value '@android:drawable/emo_im_laughing').
メッセージの通りpubilcじゃないため参照できない。@*android:と'*'をつけることでprivateなリソースも参照できるけど、止めておいた方が無難。

ちなみにpublicなリソースはplatforms/android-*/data/res/values/public.xmlで確認できる。そんだけ。

2011年5月6日金曜日

PHP Text_Wiki_Mediawikiを使ってみた

PHPでMediawiki記法をHTMLに変換するのにText_Wiki_Mediawikiを使ってみた。
ちょっと使い方がわからなくWikilinkの変換で手間取ったのでメモを残しておく。

2011年5月4日水曜日

Perl XML::SAXを使ってみる

大規模のXMLを処理するならSAX。ということで、とりあえずPerlのXML::SAXを使ってみたメモ。

2011年4月30日土曜日

Ubuntu 11.04 にアップグレードしてみる

Ubuntu 11.04がリリースされたようなので入れてみる。いきなり本体の方あげるのは怖いので、仮想環境で前に使って放置していたUbuntu 10.10を11.04にとりあえずアップグレードしてみる。

2011年4月29日金曜日

Android スピナーをカスタマイズしてみる

今日はSpinnerをカスタマイズする。スピナーのカスタマイズはけっこう面倒。

2011年4月28日木曜日

Xperia arcでScreenShotをとる

デフォルトでGalaxy Sではキャプチャをとる機能があったが、Xperia arcにはない。何かキャプチャとるためのアプリを入れようとも思ったが、Android Screen Monitorの存在を知り、こちらを使わせてもらうことにした。

※記事タイトルはXperia arcでとしてあるけど、このAndroid Screen Monitorを使った方法はxperia arcに限った話ではなくAndroid端末のスクリーンショットを撮れるので、一応注釈。

2011年4月27日水曜日

Android チェックボックスをカスタマイズしてみる

CheckBoxをカスタマイズする。CheckBox使おうとしたらサイズが大きく、他の部分で文字小さくしていて調和が取れなかったため。カスタマイズと言うか小さくしたかっただけ。

2011年4月26日火曜日

Gimp 背景を透過にする

Gimp使って作った画像が背景を透過にできてなかったので調べる。調べれば簡単。
やり方は「レイヤー > 透明部分 > 色を透明度に」で透過にできた。これだけ。

2011年4月23日土曜日

Bloggerタイトルの変更

検索にもかかるようになってきてタイトルが気になってきたので変更する。ここで言う「タイトル」はtitleタグ内の文言。
今まで特に気にもしてこなかったが「ブログ名:記事名」がデフォルトだとタイトルになるようだ。
このタイトルが検索では表示される。ブログ名が長かったりすると記事の内容を表す記事名が丸められかねない。
なので、「記事名 | ブログ名」というように変えようと思う。

2011年4月22日金曜日

Xperia arc 保護フィルムのリベンジ

先日購入したxperia arcはフィルムを貼ったが気泡ができていた。
ヨドバシに行ったついでにフィルムを買ってきた。貼り直しだ。
気泡なんかできるはずないと絶対の自信を持つ人がいるので貼ってもらう。

2011年4月21日木曜日

Android ImageView Levelによって画像変える

ImageViewをLevelによって画像を変えることができるらしい。バッテリーの残量だったり、降水確率だったり、数値によって画像を変えたいときに使える。

2011年4月20日水曜日

Android 用語の読み方が気になる

少し疲れてきたので今日は閑話。
Androidの話題で相手の読み方と自分の読み方が異なっていて一瞬の間ができることがあった。特に意味はないが、読み方が異なったものを簡単にメモ。

2011年4月19日火曜日

2011年4月18日月曜日

draw9patchでAndroid用のボタンを作る

最近素材作ったりのデザイナ的なこともできた方がいいのかなと思いつつあるので、ちょっと頑張って勉強してみる。
文字の位置だったり、拡大したときに崩れなかったりさせるために、Andorid-SDK付属のdraw9patchというツールを使うらしい。

2011年4月17日日曜日

UbuntuでXperia arcを認識させる

Xperia arcをUbuntuにつないでも上手く認識されない。adb再起動したり、PC再起動したりして最終的には認識された。

2011年4月15日金曜日

Android ListViewを一画面に複数配置する

以前のエントリでListViewは一画面に一つしか持てないようだと書いていたので訂正しておく。複数持てる。
ListActivityにて扱えるListView(idが@id/android:listのListView)は一つのみ(※)ってことをListViewは一画面に一つしか持てないと誤認していた。


※ListActivityではListViewが一つだけという意味ではなく別のidで振ってfindViewByIdしてやれば複数配置は可能。


2011年4月14日木曜日

Java Listのソート

今回は、AndroidというよりはJavaでListをSortの話。サンプルはAndroidのリストビューをソートして表示させる。

2011年4月13日水曜日

Android ListViewで選択させ次のActivityに渡す

タイトルの通りでListViewでいくつか選択させて次のActivityに引き継ぐ方法の1つ。

2011年4月9日土曜日

Android ListView positionによってViewを変える

以前に「複数のリストを表示する」ってのを書いたが、また別の方法があったので書いておく。「複数のリスト」という言い方が間違ってる気がしてきたが、やりたことは前回のときに表示したかったもの。

ListViewのViewをpositionによって変えることで、見出し行は見出しのビューで、項目の行は項目のビューを使えば見ため的には同じようには見える。ただし、プログラム的には複数のリストではなく、1つのArrayList。

2011年4月6日水曜日

Android 画面遷移での値の受け渡し

画面遷移時に値を受け渡す。IntentにputExtraで値を追加させて起動させてやることで行えることは知っていた。値としてObjectも可能だったことは知らなかった。初めに見たサンプルを覚えそれが全てだと思い込み、どんなときでもその方法を使う。これを馬鹿の一つ覚えと言う。

2011年4月5日火曜日

Android タブ内のActivityからタブを操作する

1つ目のTabのActivityを起動させない」で自分のやりたかったことの別解。
タブ内のActivity(言葉が間違ってるかも、、)から、TabHostにaddTabする方法をメモ。

2011年4月3日日曜日

Xperia arc 購入

新宿のヨドバシでXperia arcの在庫があったので購入してきた。色はSakura pink。
出会いと別れの季節。これでようやくガラケーを卒業してスマホデビュー。

2011年4月2日土曜日

Android 1つ目のTabのActivityを起動させない

TabHostでタブを追加すると、1つ目に追加したタブは必ず起動されてしまう。必要なタブを追加した後にsetCurrentTabで1つ目以外のタブを指定しても。できればタブを切り替えたときにstartしてほしいので調べる。

2011年4月1日金曜日

Android 状態によって色を変える

ListViewでは複数のリストを表示できないので、複数リストを表示する方法を考えていた。前回で区切り線まで引いた。後はフォーカス時の色を変えれたらそれなりにリストっぽくなるだろう。

と、言うことでフォーカス時に背景色、テキスト色を変える方法を調べたのでまとめる。

2011年3月31日木曜日

Android 区切り線を引く

複数リストを表示する」でinflateとaddViewを繰り返してリストを表示したのだが、見た目がイマイチ。色々とダサい理由はあるのだろうけど、やっぱり大きいのは区切り線かなぁと思うので、そこを直す。

2011年3月30日水曜日

Android 複数のリストを表示する

ListViewは一画面に一つしか持てないようなので、複数のListを表示する方法を考える。複数のリストという言い方があってるかわからないが、やりたいことは各リストに見出し付きで1画面に表示させたい。Y!ニュースの各トピックのニュースが一画面に出ているイメージ。

※追記
ごめんなさい!吹けません!ってことで、嘘ついてたので訂正とお詫びをしておく。
ListViewは一画面に複数持てました。間違ったこと書いてすみません。
Android ListViewを一画面に複数配置する

2011年3月28日月曜日

Android 切り替えたTabを戻るボタンで戻す

TabHostを使ったタブは戻るボタンで前のタブに戻るんじゃなくて、tab使ったアクティビティ起動前の状態に戻るので何か直感的でない。・・・ような気がする。少なくとも私の感覚的には前にいたタブに戻ってほしい。

2011年3月27日日曜日

Android AChartEngineで円グラフを描く

AFreeChartで円グラフを描いたが、ラベルを消せなさそうとか気になる部分はあった。他のライブラリだとどうなのかと思ったので、achartengineを使ってみる。achartengineはライセンスはApache License 2.0。

2011年3月25日金曜日

Galaxy Sでスクリーンショットをとる

先日の「Android カメラで写真を保存してみる」記事で、Galaxy Sでのアプリ画面の写真を載せたけど、Galaxy Sはスクリーンショットがとれるようだ。また、恥ずかしいことをしてしまった。。
借り物のため使いこなせてないな。自分自身は未だにガラケーだし、そろそろスマホデビューしないとな。

2011年3月24日木曜日

Android Tabのうち1つを表示させない

AndroidでTabを使うには、TabHostとTabWidgetを使えば良い。Tab Layout | Android Developersに使い方もあるし、ググれば日本語でも誰かのサンプルがたくさん見れるので割と簡単に使えると思う。

で、今回は「メイン」「カテゴリ」「検索」という3つのタブを使い、メインはデフォルト表示されるものでタブには含めたくない。そんなときにどうすれば良いのかをまとめておく。

2011年3月23日水曜日

Android SQLite テーブル定義変更

小遣い帳アプリに写真保存機能追加でテーブルにカラム追加が必要になった。WebシステムでのMySQLに置き換えて考えてしまうと、システムをメンテナンスモードにしてその間に直接SQL文を流して追加したり変更したりすると思うがAndroidアプリのSQLiteの場合だと少し勝手が違う。

2011年3月22日火曜日

Android カメラで写真を保存してみる

団長は言った。「AndroidはAndroidらしく、Androidじみたことしないといけないの!」と。WebアプリじゃなくてせっかくAndroidアプリの勉強してるんだから、もっと位置情報だったり、センサーだったり、カメラだったりを使えってことらしい。ま、言ったのは団長じゃないけれど。また、位置情報とか使わないとAndroidアプリじみてないのかと言われればそんなこともないのだろうけれど。言ってみたかっただけだろう。

しゃーなしだな!作った小遣い帳アプリに写真を登録できるようにしてみるか。

2011年3月20日日曜日

Android AFreeChartで円グラフを描く

小遣い帳アプリで使ったAFreeChartで円グラフを描いたので、それについてまとめる。自分用のまとめなので間違いを含んでるかもしれないがとりあえずまとめる。まとめるというかメモ。
AFreeChartJFreeChartをAndroid用に拡張したライブラリ。ライセンスはLGPL。

2011年3月19日土曜日

またAndroidアプリを作ってみた

とりあえず作ったAndroidアプリに引き続き、また勉強のため別のアプリを作ってみた。やっぱり実際作ると勉強になる。やっと少ーしAndroidアプリの開発にも慣れてきたかな。といったところ。

2011年3月16日水曜日

MySQL rootのパスワードを忘れたら

色々とパスワードが増えて管理が疎かになり、mysqlのrootのパスワードを忘れた^^;
で、調べていたら、mysqlのrootのパスワードはリセットできるんだね。

2011年3月15日火曜日

とりあえず作ったAndroidアプリで参考にしたもの

とりあえず作ったAndroidアプリでつまずいたり調べたりしたことのまとめ4。

これでまとめは最後。参考にしたサイトや書籍のまとめ。

2011年3月14日月曜日

Android ListViewで下までスクロールして次のリストを取得表示する

とりあえず作ったAndroidアプリでつまずいたり調べたりしたことのまとめ3。

とりあえず作ってみたAndroidアプリの中で一番苦労した部分。そして、きっともっと良い方法はあるであろうやり方。Threadの理解が足りていないのが原因だろう。イケてないやり方だが自分の振り返り用に一応メモしておく。

2011年3月13日日曜日

PHPでブログ更新ping(weblogUpdates.ping)を送信する

PHPでメール送信してblogger自動投稿してみるの続き。

bloggerではping送信先を追加する機能はないので、どうせPHPでブログ自動投稿するならばping送信までやった方がいいでしょ、とのこと。アクセスアップ的にもping送信した方が良いと言われてるけど、どれほど効果があるものかわからないが、やらないよりはやっとけか。

2011年3月12日土曜日

App InventorでAndroidアプリを作ってみる

Androidアプリ開発に関連するものはとりあえず触っていこうとスタンスなので、今回はApp Inventorを触ってみる。App Inventorでのアプリ作成は、パズルピースを組み立てるようにアプリの動作をセットしていくらしい。
Creating an App Inventor app begins in your browser, where you design how the app will look. Then, like fitting together puzzle pieces, you set your app's behavior.
とりあえずGet Startedに従って進める。必要に応じて調べはするが、初めは遊び程度に適当に触ってみるだけなので、特に誰かのサンプルとかは今日は読まない!そう決めた。

2011年3月11日金曜日

Android TableLayoutで列の制御

とりあえず作ったAndroidアプリでつまずいたり調べたりしたことのまとめ2。

Androidアプリを開発していて苦労したことの一つはデザイン周り。なかなか思うように表示できない。layout_widthとかlayout_heightとか、wrap_content、fill_parent、match_parentなどなど。いちいと調べないとすすまない。サンプルなどの勉強ではそのまま真似しててそれほど理解できてなかったってこと。。
このデザイン周りでイライラしたのは、デザインのfill_parentとwrap_contentとが違う位で、アプリケーションがエラーになること。デザイン崩れつつも頑張って表示してくれてもいいじゃん。と思ってしまうのはWebアプリだとブラウザで崩れつつ表示してくれたせいかな。htmlを返すだけで表示はブラウザが行っていたWebアプリと、表示まで行うandroidアプリとの違いか。

で、TableLayoutあたりを少し。

2011年3月10日木曜日

Android Web上の画像表示

とりあえず作ったAndroidアプリでつまずいたり調べたりしたことのまとめ1。

HTMLだとimgタグのsrcにその画像のパスを書いてやればブラウザであとは勝手にやってくれる。Androidでもそんな感じでWeb上の画像の表示をできると思っていたが、そんなでもなかった。

2011年3月9日水曜日

とりあえずAndroidアプリを作ってみた

Androidアプリ開発の勉強を始めて約1ヶ月が過ぎた。みっちりと1ヶ月を費やしたわけではないが、本で勉強したり、Android関連の記事のサンプルをなぞってみたりしてきた。それだけだとつまらないので、そろそろサンプルから抜け出して自分で考えて作ってみることにした。

2011年3月6日日曜日

Ubuntu10.10にtitaniumインストールしたが上手く動かせない

Androidアプリの開発練習にはeclipse ADT+Android SDKでやっていたが、titaniumも試してみることに。なんか色々と困ったので、メモしておく。

2011年3月3日木曜日

PHPでメール送信してblogger自動投稿してみる

blogをメールで自動投稿してみたかったので、PHPでメール送信する関数を調べてみた。メール送るのはServersman@VPSのCentOSから。PHPを調べる前にまずはsendmailをgmailに転送する設定を行う。『SendmailでGmailに転送』を参考にした。参考というかほとんどそのまま。

2011年3月2日水曜日

bloggerのブログをお名前.comのサブドメインに切り替える

お名前.comでドメイン取得したので、サブドメインをbloggerのブログに割り当てて独自ドメインでblogを運用してみる。ちなみにbloggerのブログとは本ブログとは別のもので、本ブログのドメインはblogspot.com。

2011年2月28日月曜日

お名前.comでドメイン取得してみた

Serversman@VPSを契約したので次はドメインを取ることに。Serversman@VPSを提供しているDTIでは、UbicNameというサービスでドメインを取得できる。ただし、UbicNameではできないこともあるよう。

2011年2月24日木曜日

PHP ZendでMemcached使ってみる

重い処理にはキャッシュ。ということで、MemcachedをZend framworkで使用してみた。まずは、Zend frameworkのパッケージphp-ZendFrameworkでは、入らなかったのでインストールから。
# yum install --enablerepo=remi php-ZendFramework-Cache-Backend-Memcached
# /etc/init.d/httpd restart
apacheのリスタートをしないと、下記のようなエラーが出てハマる。

2011年2月22日火曜日

ServersMan@VPSを借りてみた

SeversMan@VPSを借りてみることにした。用途はWebアプリを動かすため。プランは一番安いEntryプラン。設定は自分で行うのでシンプルセット。

2011年2月21日月曜日

PHP Zend_Config_XMLをsimplexml_load_stringに書き換える

XMLのParseにZend_Config_XMLを使ってみたがParse用ではなくConfigファイルを読むためのものっぽいので、simplexml_load_stringに書き換えることにした。

2011年2月20日日曜日

PHP Zend_Config_XML使ってみる。

Zend Frameworkを使用してWebアプリケーションを作ることになった。XMLを処理するので、Zend_Config_XMLを使ってXMLをParseしてみたが、少し使いにくい。

2011年2月19日土曜日

Apache logrotate

気がつけば、apacheのerror_logがすごい大きくなってる。そう、ログのローテートをするのを忘れていたのだ。設定項目などけっこう忘れがちなので、メモしておく。

2011年2月18日金曜日

VMware Player上のFedora 14のIP固定化

VMware PlayerにFedora 14でも開発していてIP指定してssh接続やhttp接続しているのだが、たまにIPが変わって突然アクセスできなくなる。ifconfigなどでIPを確認し直してもちろんアクセスはできるのだが、少し面倒である。CentOSでは設定してなかったので、同様の設定程度しかしてなかったが、Fedoraでは何か設定が必要そうなので調べてみる。

2011年2月17日木曜日

MySQL set型 要素取り出す?

ウェブマスター ツールを見てると「MySQL set型 要素取り出す」というクエリで先日書いたmysql set型 その1の記事へのアクセスがあった。MySQL set型の要素を取り出すとはどういうことだろう?と、思いちょっと考えてみる。

2011年2月16日水曜日

CentOSにMemcachedをインスト-ル

CentOSにmemcachedをインストールする。ちなみにCentOSはVMware上の仮想環境。いつもどおりコンパイルしては入れずにyumを利用する。
# yum install memcached
パッケージがないと言われたのでリポジトリを追加して、もう一度。

2011年2月15日火曜日

CakePHP ケーキを焼いてみる

CakePHPではcakeをbakeを利用することで、コードを生成してくるらしい。まずはちゃんと調べる前に使ってみる。習うより慣れよ!ちょっと使い方違うかな^^;

とりあえず、consoleディレクトリに実行ファイルあるのでさっそく実行してみる。

2011年2月14日月曜日

CentOSでCakePHPを動かす

色々と訳合って、CakePHPをやることになりそう。LAMP環境は整っているので、あとはCakePHPを用意しておく。
http://cakephp.jp/
CakePHPのサイトから落として解凍して、DocumentRoot直下にcakephpというディレクトリ名で移動して準備完了。

2011年2月13日日曜日

VMware Player上のCentOSにLAMP環境構築

そろそろ、先日作成した仮想環境のCentOSにLAMPでの開発ができるようにはする。Linuxはもちろん入ってるので、あとはApahceとMySQLとPHPを入れる。そして、ホストOS側からブラウザで見てページ確認まで行う。

2011年2月12日土曜日

Ubuntu 10.10 64bitでニコニコ動画を正常に見るために

ニコニコ動画を聞こうとしたら、Flashのアップデートの指示。たかが、Flashアップデートだが、また色々と手間取ったものでメモ。

2011年2月11日金曜日

Ubuntu 使用しているアプリケーション 10

開発用PCにUbuntuを入れて使い始めて1週間。良く使用するアプリケーションをまとめておく。

2011年2月9日水曜日

Ubuntu 10.10でAdobe Reader日本語対応

連日だが、日本語でまたも苦しむ。PDFで日本語が表示されないのだ。既存のドキュメント・ビュアーなるもので見てたのでAdobe Readerを入れることにした。それが、またなかなか時間掛かったので、メモしておく。ちなみに結論としてはUbuntuは64ビット版だったのが、苦労の原因のよう。

2011年2月8日火曜日

VMware Player上のCentOSで日本語を快適に使うために

UbuntuのVMware Player上にCentOSを入れていたのだが、日本語が上手く使えなかったので、設定した内容をまとめておく。設定したのは3点。

・キーボード配列
・日本語入力
・日本語フォント

2011年2月7日月曜日

mysql set型 その2

先日のmysql set型 その1の続き。

前回を要約すると、set型の値更新のために、『更新前にSELECTで値を事前に取得→変更後の文字列を整形→整形した文字列でset型の値を変更するUPDATE』としているプログラムがあったが、『SELECTはしないでもUPDATE』はできるといった話。
前回は文字列関数で行ったが、set型の要素によっては上手いこと使えないケースもあるので、今回は別の方法でUPDATEを行う。

2011年2月6日日曜日

開発環境にVMware Playerインストール

そうだ、仮想化しよう。と、いうことでVMware Playerをいれることにした。

http://www.vmware.com/products/player/からダウンロードする。
# bash VMware-Player-3.1.3-324285.x86_64.bundle
実行してVMware Playerのインストールは終了。

あとは、CentOS入れれば仮想マシン作成完了。別にCentOSじゃなくても良いんだかry

2011年2月5日土曜日

初めてのAndroid

Androidを始めることになってWeb上のドキュメントなどを参考にしつつ勉強していたが、どうも基本がなっていない気がするので本を購入することにした。Android本はいろいろあるので悩んだが、信頼のO'Reilly「初めてのAndroid 第3版」。

2011年2月4日金曜日

開発環境にMySQLインストール

まずは開発環境にMySQLをインストール。と、言ってもapt-getでインストールするだけ。
# apt-get install mysql_server
で、rootのパスワードなどを設定して終了。のはずが、思わぬところでつまづいた。。

2011年2月3日木曜日

開発環境用 PC買い替え

開発環境用のPCが貧弱過ぎてAndroid SDKのエミュレータの起動もままならないので新しいパソコンを買うことにした。予算としては、10万円以内でなるべく安いもの。OSはubuntuを入れるのでOS無にして、その分スペックにあてる。なんとなくSSDを使ってみたい。などの要望があったので、BTOパソコンにすることにした。

BTOランキングを見たり、実際にサイトを見たりして、なんとなくサイトのUIが使い易かったドスパラで買うことにした。調べていてドスパラのパソコンに対する否定的な意見もあったが、それは自分で使ってみて判断することにして。

で、買ったパソコンのスペックは以下の通りで、6万弱。

2011年2月2日水曜日

mysql set型 その1

先日、set型の更新に一度SELECTでset型のcolumnの値を取得してから、更新用の文字列を生成している後輩がいた。話を聞いてみると、既存の設定された要素は残しつつ、要素を追加、削除するためらしい。SELECTで取得した値をカンマで分けて各要素をみて、削除要素を含んでいれば削除し、追加要素を含んでいなければ追加する。そうして更新後の必要な要素が分かったら、各要素をカンマでつなぎ文字列を生成する。

正直、このSELECTは必要ない。SELECTしなくても上手く更新できる。