<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;Ck4HQ3k-cSp7ImA9WhRaE0Q.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534</id><updated>2012-02-16T20:15:32.759+09:00</updated><category term="Graph" /><category term="Fedora" /><category term="Notification" /><category term="javascript" /><category term="Titanium" /><category term="English" /><category term="Gimp" /><category term="モニタ" /><category term="Zend Framework" /><category term="ColorStateList" /><category term="jQuery UI" /><category term="SQLite" /><category term="AppLogSDK" /><category term="PhoneGap" /><category term="firefox" /><category term="WebView" /><category term="Camera" /><category term="Galaxy S" /><category term="draw9patch" /><category term="Apache" /><category term="Android" /><category term="Emulator" /><category term="開発環境" /><category term="Spinner" /><category term="ListView" /><category term="CakePHP" /><category term="Intent" /><category term="Service" /><category term="Xperia arc" /><category term="jQuery" /><category term="MySQL" /><category term="CentOS" /><category term="AFreeChart" /><category term="DroidGap" /><category term="AdMob" /><category term="jQuery Mobile" /><category term="Search Dialog" /><category term="XML" /><category term="Mediawiki" /><category term="Perl" /><category term="VMware Player" /><category term="Java" /><category term="AChartEngine" /><category term="SAX" /><category term="PHP" /><category term="App Inventor" /><category term="CheckBox" /><category term="blogger" /><category term="VPS" /><category term="memcached" /><category term="お名前.com" /><category term="書評" /><category term="Ubuntu" /><category term="jQ.Mobi" /><category term="ImageView" /><category term="Tab" /><title>世田谷のエンジニア ブログ</title><subtitle type="html">MySQL,Android,GAEなどの技術的なことや、その他雑多な日記・メモ。</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://suka4.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://suka4.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>105</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/qxiwD" /><feedburner:info uri="blogspot/qxiwd" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;A0QNQH8zfSp7ImA9WhRUEEg.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-9044160420399057566</id><published>2012-01-20T20:36:00.000+09:00</published><updated>2012-01-20T20:36:31.185+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-20T20:36:31.185+09:00</app:edited><title>変なトラフィック増。。</title><content type="html">普段は、400～600程度のアクセスなのに今日は突然アクセス増えていてちょっと気になったのでbloggerの管理画面で確認。みるとアメリカからたくさんアクセスされてるんだけど、これなんなんだろ？&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-jjp0uv2liTo/TxlOoS7klNI/AAAAAAAAALg/GBy9m1A2P30/s1600/blog-traffic.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="274" src="http://1.bp.blogspot.com/-jjp0uv2liTo/TxlOoS7klNI/AAAAAAAAALg/GBy9m1A2P30/s320/blog-traffic.png" /&gt;&lt;/a&gt;&lt;/div&gt;上のがbloggerの1日単位の統計の図。3つの遷移元だけで、いつもの平日分くらい。&lt;br /&gt;
このURLにはこのblogへのリンクなんかないし、ほんとなんなんだろう。気持ち悪い、気持ち悪い。&lt;br /&gt;
気持ち悪いけど、別に実害はないのかな。とりあえずログとしてメモに残しておく。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-9044160420399057566?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/efvLDZD_T2mTAPg3UZzE5z6-Zbk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/efvLDZD_T2mTAPg3UZzE5z6-Zbk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/efvLDZD_T2mTAPg3UZzE5z6-Zbk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/efvLDZD_T2mTAPg3UZzE5z6-Zbk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/wGsuWvu2XZ4" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/9044160420399057566?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/9044160420399057566?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/wGsuWvu2XZ4/blog-post.html" title="変なトラフィック増。。" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-jjp0uv2liTo/TxlOoS7klNI/AAAAAAAAALg/GBy9m1A2P30/s72-c/blog-traffic.png" height="72" width="72" /><feedburner:origLink>http://suka4.blogspot.com/2012/01/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4FSXc8eSp7ImA9WhRVGEo.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-7083465709311008180</id><published>2012-01-18T18:11:00.000+09:00</published><updated>2012-01-18T18:11:58.971+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-18T18:11:58.971+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="jQuery Mobile" /><category scheme="http://www.blogger.com/atom/ns#" term="jQ.Mobi" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title>軽量高速のjQ.Mobiを試してみる</title><content type="html">かるい、はやい、ものすご〜いフレームワーク「&lt;a href="http://www.jqmobi.com/" target="_blank"&gt;jQ.Mobi&lt;/a&gt;」をさっそく試してみようと思う。&lt;br /&gt;
&lt;br /&gt;
前にjQuryMobileでやった簡単なオークション検索を書き換えて使いやすさとか見てみる。ajaxでapi叩いてリストを表示するだけのシンプルなやつ。なので記事タイトルだとちょっと広過ぎで、内容としては『jQ.Mobiのajax関数を使ってみた』がいいところ。&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;pre&gt;&lt;code&gt;&lt;blockquote&gt;.ajax {
    type:'POST', //defaults to GET
    url:'/api/getinfo', //defaults to window.location
    contentType:'application/json', //defaults to application/x-www-form-urlencoded
    headers:{},
    dataType:'application/json', //defaults to text/html
    data:{username:foo}, //Can be a Key/Value pair string or object.  If it's an object, $.serialize is called to turn it into a Key/Value pair string
    success:function(data){}, //function to call on successful Ajax request
    error:function(data){}, //function to call when an error exists in the Ajax request
 }
&lt;/blockquote&gt;&lt;/code&gt;&lt;/pre&gt;READMEを見るとajax関数は同じようにあるので、前作ったそのままで同じように使えそう。&lt;br /&gt;
ちゅうことで、前回やったhtmlをjQueryMobile風からjQ.Mobi風に書き換えて試す。&lt;br /&gt;
jQ.Mobi風というかは、単にjQueryMobileのdata-roleとかを外すくらい。&lt;br /&gt;
強いて言えばinputのclassをjq-ui-formsにしたのはjQ.Mobi風か。&lt;br /&gt;
&lt;br /&gt;
あら、ダメだ。動かない。ソース読むか。&lt;br /&gt;
&lt;br /&gt;
jsonPではdataはserializeされない(そもそもdataは使われてない)のでurlにつけないといけないっぽいのと、callbackもパラメータに持たせてないのがいけないっぽい。&lt;br /&gt;
callbackは下記のようにreplaceしてるので、callback=?としてパラメータに加える。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&lt;blockquote&gt;script.src = options.url.replace(/=\?/, '=' + callbackName);&lt;/blockquote&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
jQueryMobileのときは下記のようだったのを&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;        dataType: "jsonp",
        data: {
            "appid": appid,
            "query": query
        },
        url: "http://auctions.yahooapis.jp/AuctionWebService/V2/json/search",
&lt;/code&gt;&lt;/pre&gt;jQ.Mobiではこう書いてみる&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;        dataType: "jsonp",
        url: "http://auctions.yahooapis.jp/AuctionWebService/V2/json/search?appid=" + appid + "&amp;query=" + encodeURI(query) + "&amp;callback=?",
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
これで、apiリクエストして、sucecssが呼ばれるところまではできた。でも、cloneはないと怒られる。ちょっと疲れてきたので適当にやる。createElementしてappendする方式で下記のようにした。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;function a() {
    var appid = '&lt;ヤフーアプリケーションID&gt;';
    var query = $("#query").val();
    $("#result_list li").remove();
    $.ajax({
        dataType: "jsonp",
        url: "http://auctions.yahooapis.jp/AuctionWebService/V2/json/search?appid=" + appid + "&amp;query=" + encodeURI(query) + "&amp;callback=?",
        success: function (data) {
            if (data.ResultSet["@attributes"].totalResultsReturned &gt; 0) {
                $.each(data.ResultSet.Result.Item, function(i,item){
                    var li = document.createElement("li");
                    var img = document.createElement("img");
                    var p = document.createElement("p");
                    var a = document.createElement("a");
                    var span = document.createElement("span");
                    $(img).attr("src", item.Image);
                    $(a).attr("href", item.AuctionItemUrl);
                    $(a).text(item.Title);
                    $(span).text(parseInt(item.CurrentPrice) + "円");
                    $(p).append(a);
                    $(p).append(span);
                    $(li).append(img);
                    $(li).append(p);
                    $("#result_list").append(li);
                });
            }
        }
    });
}
&lt;/code&gt;&lt;/pre&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-SK5P_zrX2xI/TxZY5p76WeI/AAAAAAAAALI/99tls_JVL9Y/s1600/jqmobi.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="188" src="http://1.bp.blogspot.com/-SK5P_zrX2xI/TxZY5p76WeI/AAAAAAAAALI/99tls_JVL9Y/s320/jqmobi.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
見た目がバラバラ。jQueryMobieみたいにlistViewの書き方あるのかな？&lt;a href="http://www.jqmobi.com/testdrive/index.html" target="_blank"&gt;jQ.Mobi Kitchen Sink&lt;/a&gt;を見てみるもUIに関しては遷移の挙動と、formのスタイルしかない。仕方ないので自分でcssを適当に書くか。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;style type="text/css"&amp;gt; 
li {clear: both; }
li img, li p { float: left;}
li img { width: 20%; max-width: 20%;}
li p { width: 80%;}
li p a, li p span { display: block;}
&amp;lt;/style&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-2FUHne9mfeE/TxZfkUWlLbI/AAAAAAAAALU/MZ7wTvN25bk/s1600/jqmobi2.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="188" src="http://3.bp.blogspot.com/-2FUHne9mfeE/TxZfkUWlLbI/AAAAAAAAALU/MZ7wTvN25bk/s320/jqmobi2.png" /&gt;&lt;/a&gt;&lt;/div&gt;画像の横にタイトル、価格がくるように幅指定しただけなのにbackgroundまで変わったな。&lt;br /&gt;
ま、いいや。とりあえずこれで導入完了とする。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
導入してみた感じ、ajaxの使い方が微妙で困ったけど、割と簡単に使えた印象。ネット上にはまだ情報は少ないだろうけど、READMEとかソースとか見ればなんとでもなるレベル。&lt;br /&gt;
動作については、jQueryMobileでやたら重いと感じていたスクロールもjQ.Mobiだと特にストレスを感じないので速いんだろう。&lt;br /&gt;
jQueryMobileで個人的にいいなと思ったのはcss書かなくてもリストとかスマホサイトっぽいUIにできるとこだったけど、jQ.Mobiでも調べたらちゃんとできるのかな？でも、jq.ui.cssみたらliに関してのスタイルはli.groupしかないからできないのかな？cssを自分で書かずに、jQueryMobileのthemeRollerのように作成できると嬉しい。cssを自分で書かないといけないんだったら、ちょっと難しい。&lt;br /&gt;
あと、今回の自分でやったのじゃなくて、普通にデモをandroidで弄ってみたら、ハードウェアの戻るキーを押すと真っ白になる。困った困った。「まぁ、試作機にはトラブルは付き物だ。ウルスラ&lt;br /&gt;
利用するのはしばらく様子見がいいかな。&lt;br /&gt;
以上、雑感。&lt;br /&gt;
&lt;br /&gt;
前にやったjQuryMobileでのオークション検索に関連する記事&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="/2011/06/droidgapwebandroid.html"&gt;DroidgapでWebアプリをAndroidアプリに変換してみる&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/2011/06/jqueryajax.html"&gt;jQueryでAjax&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/2011/11/jquery-mobile.html"&gt;jQuery Mobileで動的リスト&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
最近ブログもあまり書いてなくて、これが今年一発目だったのか。せっかくなので、目標設定。&lt;br /&gt;
最低でも月1ではメモ書き程度で良いのでブログを更新する！&lt;br /&gt;
我ながらゆるい目標設定だけどこれくらいが丁度良いはず。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-7083465709311008180?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/07UbI5ZPysYDgFGAY5SxPYUDK7s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/07UbI5ZPysYDgFGAY5SxPYUDK7s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/07UbI5ZPysYDgFGAY5SxPYUDK7s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/07UbI5ZPysYDgFGAY5SxPYUDK7s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/XvdBVqYeIf4" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/7083465709311008180?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/7083465709311008180?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/XvdBVqYeIf4/jqmobi.html" title="軽量高速のjQ.Mobiを試してみる" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-SK5P_zrX2xI/TxZY5p76WeI/AAAAAAAAALI/99tls_JVL9Y/s72-c/jqmobi.png" height="72" width="72" /><feedburner:origLink>http://suka4.blogspot.com/2012/01/jqmobi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYNSH4yfip7ImA9WhRXGUU.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-2817373359118685239</id><published>2011-12-27T18:37:00.000+09:00</published><updated>2011-12-27T19:03:19.096+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-27T19:03:19.096+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="jQuery UI" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title>[jQuery]フォームのselectを複数選択</title><content type="html">selectを複数選択可能にするにはmultipleを指定すれば良いのだけれど、複数選ぶにはCtrl押しながら選択しないといけないのでユーザにやさしくない。直感的に選べるようにするには、&lt;a href="http://loudev.com/" target="_blank"&gt;jquery.multi-select.js&lt;/a&gt;のプラグインが便利そう。デモや使い方は参照先にあり難しくもないので省略。&lt;br&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br&gt;
ただ、ダイアログが大好きとか、同一ページで選択の対象リストに新規追加もさせたいとか、selectは複数だけど対象リストは同一で場所をとるとかなんとかとか、なんらかの止ん事無き理由でプラグインは使えずダイアログ使ったUIにしないといけなくなったとして練習がてらに書いてみる。そんな状況が実際にあるのかは知らない。書きたいから書くだけ。&lt;br&gt;&lt;br style="clear:both"&gt;
&lt;link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css" type="text/css" media="all" /&gt;
&lt;script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
$(function(){
    var dstSlct;
    $('#dialog').dialog({ autoOpen: false });

    $('.stdntChkBox').click(function() {
        dstSlct.children().remove();
        $('.stdntChkBox:checked').each(function() {
            dstSlct.append('&lt;option value="' + $(this).val() + '" selected="selected"&gt;' + $(this).next('label').text() + '&lt;/option&gt;');
        });
    });

    $('.dstSlct').change(function() {$(this).find("option").attr('selected', true);});

    $('.showDlg').click(function(){ 
        dstSlct = $(this).next();
        $('.stdntChkBox').attr('checked', false);
        dstSlct.find("option").each( function() { $("#stdntList input[value='" + $(this).val() + "']").attr('checked', true); });
        $('#dialog').dialog('open');
    });
});
&lt;/script&gt;

&lt;fieldset style="float:left; width:120px; height:80px; border: none;"&gt;
&lt;input type="button" class="showDlg" value="数学履修者"&gt;
&lt;select name="data[Math][]" class="dstSlct" multiple="multiple" style="width:100px; height:60px;"&gt;
&lt;/select&gt;
&lt;/fieldset&gt;

&lt;fieldset style="float:left; width:120px; height:80px; border: none;"&gt;
&lt;input type="button" class="showDlg" value="物理履修者"&gt;
&lt;select name="data[Physics][]" class="dstSlct" multiple="multiple" style="width:100px; height:60px;"&gt;
&lt;/select&gt;
&lt;/fieldset&gt;

&lt;fieldset style="float:left; width:120px; height:80px; border: none;"&gt;
&lt;input type="button" class="showDlg" value="化学履修者"&gt;
&lt;select name="data[Chemistry][]" class="dstSlct" multiple="multiple" style="width:100px; height:60px;"&gt;
&lt;/select&gt;
&lt;/fieldset&gt;

&lt;div id="dialog" title="選択して下さい"&gt;
&lt;div id="stdntList"&gt;
&lt;input id="stdntChkBox1" class="stdntChkBox" type="checkbox" value="1"&gt;&lt;label for="stdntChkBox1"&gt;いぐち&lt;/label&gt;&lt;br&gt;
&lt;input id="stdntChkBox2" class="stdntChkBox" type="checkbox" value="2"&gt;&lt;label for="stdntChkBox2"&gt;いとう&lt;/label&gt;&lt;br&gt;
&lt;input id="stdntChkBox3" class="stdntChkBox" type="checkbox" value="3"&gt;&lt;label for="stdntChkBox3"&gt;いのうえ&lt;/label&gt;&lt;br&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br style="clear:both"&gt;
&lt;br&gt;
なんとなく動きとしてのイメージはこんな感じか。あとはダイアログから新しく人を追加できるようにするとか。&lt;br&gt;
逆に追加とか考えずにもう少し汎用的にすればプラグイン化できるのかな。今度勉強としてみよう。&lt;br&gt;
&lt;br&gt;
残念なコードのメモ。
&lt;pre&gt;&lt;code&gt;&amp;lt;script type="text/javascript"&amp;gt;
$(function(){
    var dstSlct;
    $('#dialog').dialog({ autoOpen: false });

    // チェックボックス押されたら、対象のselectのこどもを一旦削除して、checkedのものを対象のselectにappendしなおす
    $('.stdntChkBox').click(function() {
        dstSlct.children().remove();
        $('.stdntChkBox:checked').each(function() {
            dstSlct.append('&amp;lt;option value="' + $(this).val() + '" selected="selected"&amp;gt;' + $(this).next('label').text() + '&amp;lt;/option&amp;gt;');
        });
    });

    // select自身からは変更できなくしとく（selectのこどもは常にselected）
    $('.dstSlct').change(function() {$(this).find("option").attr('selected', true);});

    // ダイアログ表示するときに、対象のselectのこどもを見てcheckboxをcheck
    $('.showDlg').click(function(){ 
        // 対象のselectはボタンの次にあるとする（コードは汎用性が少ない）
        dstSlct = $(this).next();
        $('.stdntChkBox').attr('checked', false);
        dstSlct.find("option").each( function() { $("#stdntList input[value='" + $(this).val() + "']").attr('checked', true); });
        $('#dialog').dialog('open');
    });
});
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-2817373359118685239?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fm3kMEPwSq4NyJnnpZghgLEopJ4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fm3kMEPwSq4NyJnnpZghgLEopJ4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fm3kMEPwSq4NyJnnpZghgLEopJ4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fm3kMEPwSq4NyJnnpZghgLEopJ4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/vQKTRI7UZOQ" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/2817373359118685239?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/2817373359118685239?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/vQKTRI7UZOQ/jqueryselect.html" title="[jQuery]フォームのselectを複数選択" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://suka4.blogspot.com/2011/12/jqueryselect.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cFRXs8eCp7ImA9WhRXFk0.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-7265568985315571116</id><published>2011-12-23T10:50:00.000+09:00</published><updated>2011-12-23T10:50:14.570+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-23T10:50:14.570+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="blogger" /><title>bloggerにadSenseの広告が出ない</title><content type="html">ブログにadsenseを載せていたわけだが、でなくなってた。&lt;br /&gt;
bloggerのレイアウトの設定が変わっていたようで直したら表示されるようになった。&lt;br /&gt;
でないのが、いつからなのかなぜなのか、不明だけれどまたでてよかた&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-7265568985315571116?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Qq4_S7WicMpGDncJ8q5ps9MYDpw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Qq4_S7WicMpGDncJ8q5ps9MYDpw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Qq4_S7WicMpGDncJ8q5ps9MYDpw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Qq4_S7WicMpGDncJ8q5ps9MYDpw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/jUgSalKkVi4" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/7265568985315571116?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/7265568985315571116?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/jUgSalKkVi4/bloggeradsense.html" title="bloggerにadSenseの広告が出ない" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://suka4.blogspot.com/2011/12/bloggeradsense.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4DQXw7fSp7ImA9WhRQFEw.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-5064639216430298075</id><published>2011-12-09T14:58:00.001+09:00</published><updated>2011-12-09T16:16:10.205+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-09T16:16:10.205+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Apache" /><title>Webページ高速化のためにやっとくapacheの設定</title><content type="html">最近忘れがちなので備忘録として。設定するのはYSlowの項目でいう、「Add Expires headers」、「Compress components with gzip」、「Configure entity tags (ETags)」。&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Add Expires headers&lt;/h4&gt;Expiresヘッダを追加し有効期限設定してやる。&lt;br /&gt;
&lt;a href="http://httpd.apache.org/docs/2.0/mod/mod_expires.html" target="_blank"&gt;mod_expires&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Compress components with gzip&lt;/h4&gt;データを圧縮して転送量を下げる。&lt;br /&gt;
&lt;a href="http://httpd.apache.org/docs/2.0/ja/mod/mod_deflate.html" target="_blank"&gt;mod_deflate&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Configure entity tags (ETags)&lt;/h4&gt;正しく設定してキャッシュが正しく使われるようにする。&lt;br /&gt;
&lt;a href="http://httpd.apache.org/docs/2.1/mod/core.html#fileetag" target="_blank"&gt;FileETag ディレクティブ&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Etagについては正しく理解できていないのでメモ程度に。&lt;br /&gt;
・Etagはキャッシュの管理で使われる。(Etagをレスポンスに含めると、次回のリクエストではIf-None-Match:がヘッダに含められ、Etagが異なればキャッシュが使われずにデータが変えされる。）&lt;br /&gt;
・Etagを求める計算にinode番号を使用するので、複数台で負荷分散してるサイトだとEtagが一致しなくなってキャッシュが使われないってことだと思う。&lt;br /&gt;
・Etagを返さないように設定すると、YSlowの評価はFからAになるけど、実際の挙動としては、キャッシュが使われるか使われないかは、動作見た感じだとこの設定では変わってないような気がする。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-5064639216430298075?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/In3iWJC2xPu6tESm8YnZgiZiiYo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/In3iWJC2xPu6tESm8YnZgiZiiYo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/In3iWJC2xPu6tESm8YnZgiZiiYo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/In3iWJC2xPu6tESm8YnZgiZiiYo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/80stk50boO0" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/5064639216430298075?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/5064639216430298075?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/80stk50boO0/webapache.html" title="Webページ高速化のためにやっとくapacheの設定" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://suka4.blogspot.com/2011/12/webapache.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQDRX0-fCp7ImA9WhRRFkw.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-2300234601615948749</id><published>2011-11-30T10:20:00.001+09:00</published><updated>2011-11-30T10:59:34.354+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-30T10:59:34.354+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="jQuery UI" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title>jQuery UI Sortableで複数リスト間ソート</title><content type="html">最近は何をするにもjQueryから調べる。だいたいやりたいことはできる。&lt;br /&gt;
今回は、複数のソート済みリストがあって、その要素をドラッグ&amp;ドロップで別のリストに移せて、移したらそのリスト内でソートをしたい。&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
まずは、要素をドラッグ&amp;ドロップで別のリストに移す。&lt;br /&gt;
これは、sortableのconnectWithで指定してやることでできる。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="sortable1" style="border:1px solid; padding:5px; margin: 5px; width: 100px;"&gt;&lt;div&gt;Ishida&lt;/div&gt;&lt;div&gt;Uchida&lt;/div&gt;&lt;div&gt;Yamada&lt;/div&gt;&lt;/div&gt;&lt;div class="sortable1" style="border:1px solid; padding:5px; margin: 5px; width: 100px;"&gt;&lt;div&gt;Arclight&lt;/div&gt;&lt;div&gt;Blade &lt;/div&gt;&lt;div&gt;Eve&lt;/div&gt;&lt;/div&gt;&lt;script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"&gt;&lt;/script&gt;&lt;script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;$(document).ready(function(){    $('.sortable1').sortable({        connectWith:'.sortable1'    }); });&lt;/script&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;div class="sortable" style="border:1px solid; padding:5px; margin: 5px; width: 100px;"&amp;gt;
    &amp;lt;div&amp;gt;Ishida&amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;Uchida&amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;Yamada&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class="sortable" style="border:1px solid; padding:5px; margin: 5px; width: 100px;"&amp;gt;
    &amp;lt;div&amp;gt;Arclight&amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;Blade &amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;Eve&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script type="text/javascript"&amp;gt;
$(document).ready(function(){
    $('.sortable').sortable({
        connectWith:'.sortable'
    }); 
});
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
次に移したリスト内でソート。&lt;br /&gt;
移した先でのeventはreceive。なので、ここにリスト内でソートさせればOK！！&lt;br /&gt;
と、思ったけど、リスト内で位置変えた場合に、ソートがされないので、順番が崩れる。&lt;br /&gt;
なので、リスト内のソートはupdateイベントに処理を書く。省略するけど、ajaxでDB側に更新投げる処理は、receiveに書く。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="sortable2" style="border:1px solid; padding:5px; margin: 5px; width: 100px;"&gt;&lt;div&gt;Ishida&lt;/div&gt;&lt;div&gt;Uchida&lt;/div&gt;&lt;div&gt;Yamada&lt;/div&gt;&lt;/div&gt;&lt;div class="sortable2" style="border:1px solid; padding:5px; margin: 5px; width: 100px;"&gt;&lt;div&gt;Arclight&lt;/div&gt;&lt;div&gt;Blade &lt;/div&gt;&lt;div&gt;Eve&lt;/div&gt;&lt;/div&gt;&lt;script type="text/javascript"&gt;$(document).ready(function(){    $('.sortable2').sortable({        connectWith:'.sortable2',        update: function(event, ui) {            var item = ui.item.parent();            var funcSort = function(a, b) {                var compA = $(a).text();                var compB = $(b).text();                return (compA &lt; compB) ? -1 : (compA &gt; compB) ? 1 : 0;            };            var listItems = item.children('div').get();            listItems.sort(funcSort);            $.each(listItems, function(i, itm) { item.append(itm); });        }    }); });
&lt;/script&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;script type="text/javascript"&amp;gt;
$(document).ready(function(){
    $('.sortable').sortable({
        connectWith:'.sortable',
        update: function(event, ui) {
            var item = ui.item.parent();
            var funcSort = function(a, b) {
                var compA = $(a).text();
                var compB = $(b).text();
                return (compA &amp;lt; compB) ? -1 : (compA &amp;gt; compB) ? 1 : 0;
            };
            var listItems = item.children('div').get();
            listItems.sort(funcSort);
            $.each(listItems, function(i, itm) { item.append(itm); });
        }
    }); 
});
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
これでやりたいことはできた。リスト内のソートはtextでやったけど、classにソートに使う値を持たせるなどやりようはある。&lt;br /&gt;
jQueryとか使うとUIリッチになってサービスの使い勝手あげられるのでGood！！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-2300234601615948749?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2ipxlPQpULaB1TY4qMAJhdx4qCM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2ipxlPQpULaB1TY4qMAJhdx4qCM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2ipxlPQpULaB1TY4qMAJhdx4qCM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2ipxlPQpULaB1TY4qMAJhdx4qCM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/JGVdMsIrlOY" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/2300234601615948749?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/2300234601615948749?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/JGVdMsIrlOY/jquery-ui-sortable.html" title="jQuery UI Sortableで複数リスト間ソート" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://suka4.blogspot.com/2011/11/jquery-ui-sortable.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MEQXw-cCp7ImA9WhRQFkU.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-5229360269108944236</id><published>2011-11-21T16:48:00.001+09:00</published><updated>2011-12-12T19:23:20.258+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-12T19:23:20.258+09:00</app:edited><title>Yahoo!マーケットに掲載される開発者ウェブサイトが残念</title><content type="html">Androidマーケットのアプリページの説明からスクレイピングしてるのか、説明内にurlがあると一番最初のurlが基本情報の開発者ウェブサイトになっちゃってるっぽい。抜いてるんだとしたら、アンカーテキスト「デベロッパーのウェブサイトにアクセス」まで含めて抜いてやらないとパッと見ダメそう。提携していてデータもらってるとかなら、そのデータがおかしいのか。まぁ、どちらにしても間違った情報を掲載しちゃってるわけなので。&lt;br /&gt;
&lt;br /&gt;
amazonとか楽天とかの有名なサービスのURLを説明に入れてるアプリで開発者ウェブサイトとして誤掲載されてしまっているのをいくつか見たけど大丈夫かな。まぁ、ウェブサイトにとんで見て本家アプリだと勘違いしてインストールするなんてこともまずないだろうしいいのか。最終的にはAndroidマーケットからインストールするわけで、そこで再度開発者ウェブサイトを見るのかはわからないが正しい情報が載ってるわけだし。リリースされて1週間ちょっと経つが、軽くヤフってみた感じだとこの件騒がれる様子もないしきっと大した問題ではないのだろう。リリース自体がそれほど大きく取り上げられていない感はあるが…&lt;br /&gt;
&lt;br /&gt;
ユーザが間違うかどうかはとりあえずおいておいて、サービスを作る者として『スクレイピングするときは十分に気をつけよう』という今日の教訓。基本は大事ということですね。&lt;br /&gt;
(実際にはスクレイピングのミスが原因なのかは知りませんが。あと、スクレイピング先のサイトの仕様なんて完璧に知り得ないので、注意したところでやってしまうときはやってしまいそうですが。。)&lt;br /&gt;
&lt;br /&gt;
※12/12/12 追記&lt;br /&gt;
久しぶりに見てみたら修正された模様。誤掲載の証拠をとってた分けではないので、修正されたのか、もとから正しく掲載していたのかは証明できないけど。&lt;br /&gt;
今は正しい情報を掲載してるようなので誤解のおきないように追記っした。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-5229360269108944236?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OSgPyQYH3PTZ7chTjQ1Iwsz2cEU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OSgPyQYH3PTZ7chTjQ1Iwsz2cEU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OSgPyQYH3PTZ7chTjQ1Iwsz2cEU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OSgPyQYH3PTZ7chTjQ1Iwsz2cEU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/qFVeOUJb3Z4" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/5229360269108944236?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/5229360269108944236?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/qFVeOUJb3Z4/yahoo.html" title="Yahoo!マーケットに掲載される開発者ウェブサイトが残念" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://suka4.blogspot.com/2011/11/yahoo.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcCRngyeCp7ImA9WhRTGU0.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-6971965201501317779</id><published>2011-11-10T13:41:00.001+09:00</published><updated>2011-11-10T13:41:07.690+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-10T13:41:07.690+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery Mobile" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title>jQuery Mobileで動的リスト</title><content type="html">だいぶ前に勉強がてらに書いたjQuery Mobileでリスト表示したコード。参考にして使ってみたらリストのデザインでおかしくなる部分あったので修正しておく。&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="/2011/06/droidgapwebandroid.html"&gt;DroidgapでWebアプリをAndroidアプリに変換してみる&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/2011/06/jqueryajax.html"&gt;jQueryでAjax&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
このコードだと、下記のようにリストの要素が角丸になってしまう。ちょっとみにくいけど。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-VbceWwt6yIc/TrtJejrcXkI/AAAAAAAAAKw/DEPU1FbJqVw/s1600/jquerymobile_list.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="205" src="http://4.bp.blogspot.com/-VbceWwt6yIc/TrtJejrcXkI/AAAAAAAAAKw/DEPU1FbJqVw/s320/jquerymobile_list.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
前にのせた画像ももちろん角丸ではあったけれど、あの頃はリストを表示したかっただけで特に気にしてなかったので気付かなかった。。というか、見て見ぬ振り…だったのかも。昔のことで覚えていない。&lt;br /&gt;
&lt;br /&gt;
閑話休題、なんで角丸になってしまうのか挙動をおっていく。コードは…&lt;br /&gt;
&lt;br /&gt;
まずリストの作り方を確認すると、ul内にdisplay:noneしてあるテンプレートliをcloneして、ulにappendして値を当てはめるだけ。&lt;br /&gt;
&lt;br /&gt;
で、原因。&lt;br /&gt;
初めul内にはテンプレートのliが1つあるのみなので、jQuery Mobileがテンプレートliにui-corner-top(最初のli)、ui-corner-bottom(最後のli)のclassをつける。&lt;br /&gt;
このテンプレートliをcloneしてるので、角が丸くなってしまう。ちなみに画像の角が丸いのは、ui-corner-tl、ui-corner-bl。&lt;br /&gt;
&lt;br /&gt;
原因がわかったので、必要ないclassを削除するように「&lt;a href="/2011/06/jqueryajax.html"&gt;jQueryでAjax&lt;/a&gt;」のeachに追記。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;if (i &amp;gt; 0) {
    row.removeClass('ui-corner-top');
    row.find('img').removeClass('ui-corner-tl');
}
if (i &amp;lt; data.ResultSet.Result.Item.length - 1) {
    row.removeClass('ui-corner-bottom');
    row.find('img').removeClass('ui-corner-bl');
}
&lt;/code&gt;&lt;/pre&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-U9-oSivdTBo/TrtP-1r0NXI/AAAAAAAAAK8/gkUuklLvUnQ/s1600/jquerymobile_list2.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="206" src="http://1.bp.blogspot.com/-U9-oSivdTBo/TrtP-1r0NXI/AAAAAAAAAK8/gkUuklLvUnQ/s320/jquerymobile_list2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
これで角丸はとれました。もっとスマートな方法はあるかも。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-6971965201501317779?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/t0JFWH98uw0vegyNjubqr20teD4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t0JFWH98uw0vegyNjubqr20teD4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/t0JFWH98uw0vegyNjubqr20teD4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t0JFWH98uw0vegyNjubqr20teD4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/S_PT7MSEqOw" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/6971965201501317779?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/6971965201501317779?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/S_PT7MSEqOw/jquery-mobile.html" title="jQuery Mobileで動的リスト" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-VbceWwt6yIc/TrtJejrcXkI/AAAAAAAAAKw/DEPU1FbJqVw/s72-c/jquerymobile_list.png" height="72" width="72" /><feedburner:origLink>http://suka4.blogspot.com/2011/11/jquery-mobile.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYHQXw-cCp7ImA9WhdaGUo.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-8871037769362853150</id><published>2011-10-30T21:32:00.000+09:00</published><updated>2011-10-30T21:35:30.258+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-30T21:35:30.258+09:00</app:edited><title>PC メモリ故障&amp;交換</title><content type="html">2月に買ったPC(&lt;a href="/2011/02/pc.html"&gt;開発環境用 PC買い替え&lt;/a&gt;)のメモリが9ヶ月で壊れたのでそのときのこと。&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
PC使ってたら、突然アプリケーションが落ちた。ブラウザとかメーラとかVMとか。&lt;br /&gt;
何？と思ってとりあえず再起動しようとしたら、PCが起動してこない。&lt;br /&gt;
&lt;br /&gt;
ここからの原因調査が時間かかった。&lt;br /&gt;
&lt;br /&gt;
"RUN fsck MANUALLY"とでてたので、リカバリモードでfsckしてみるも、mountされた状態では危険とのメッセージ。&lt;br /&gt;
なので、SSDからでなくLiveCDから起動させようとするも、LiveCDから起動はできない。&lt;br /&gt;
リカバリモードでファイルは読めてるみたいだし、DISKは問題ないのかな。&lt;br /&gt;
バックアップはとっておこうかなと思って外付けHDDつなぐも上手いこと認識させられず断念。&lt;br /&gt;
&lt;br /&gt;
ディスクじゃないならメモリかな？ということで、Memory test(memtest86+)なるものをやってみる。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-4m-MjjWK9oI/Tq09k2ufnEI/AAAAAAAAAKk/4bxngDcOJwQ/s1600/memtest.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="180" width="320" src="http://2.bp.blogspot.com/-4m-MjjWK9oI/Tq09k2ufnEI/AAAAAAAAAKk/4bxngDcOJwQ/s320/memtest.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
うお！エラーにしかならない。&lt;br /&gt;
原因はメモリか。2本あるので、両方ダメなのかどっちかがダメなのか確認のため外さないとな。&lt;br /&gt;
箱開けてみる。DVDドライブが邪魔ですぐにはメモリ抜けん。。&lt;br /&gt;
悪戦苦闘し抜き差しmemtestしつつ、故障したメモリは1つであることがわかった。&lt;br /&gt;
&lt;br /&gt;
故障してないメモリ1つだけならちゃんとPCも起動できる。&lt;br /&gt;
1つでも4Gあるからか、ネット見るとかなら特に遅いとかは感じないな。&lt;br /&gt;
まぁ、起動はできるようになったので良かった良かった。そして、疲れた。&lt;br /&gt;
2本のうち1本不良なだけで、起動もできなくなるんだな。勉強になった。&lt;br /&gt;
&lt;br /&gt;
とりあえず、1年経ってないし保証期間かなと思い、ドスパラのサポートに電話で聞いてみる。&lt;br /&gt;
メモリを交換してくれるとのこと。故障した1つじゃなくて2つとも交換。ありがとう、そしてありがとう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-8871037769362853150?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EzyAFntCs1Ki3qMKvnu-4Fd0cUo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EzyAFntCs1Ki3qMKvnu-4Fd0cUo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EzyAFntCs1Ki3qMKvnu-4Fd0cUo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EzyAFntCs1Ki3qMKvnu-4Fd0cUo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/qhRuvBZTDBs" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/8871037769362853150?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/8871037769362853150?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/qhRuvBZTDBs/pc.html" title="PC メモリ故障&amp;交換" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-4m-MjjWK9oI/Tq09k2ufnEI/AAAAAAAAAKk/4bxngDcOJwQ/s72-c/memtest.jpg" height="72" width="72" /><feedburner:origLink>http://suka4.blogspot.com/2011/10/pc.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYHQ3w9eCp7ImA9WhdaE0g.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-6647006055809412874</id><published>2011-10-23T15:42:00.001+09:00</published><updated>2011-10-23T15:42:12.260+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-23T15:42:12.260+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>Android Custom Dialogの上下の空間</title><content type="html">AlertDialogでlist形式にしたいときは、setItemsやsetMultiChoiceItemsとかsetSingleChoiceItemsとかを使えば良いけど,アイコン＋テキストにして見せたいときにはこれはダメ。&lt;br /&gt;
&lt;a href="http://developer.android.com/guide/topics/ui/dialogs.html#CustomDialog" target="_blank"&gt;Creating a Custom Dialog | Android Developers&lt;/a&gt;にあるようにxml用意して、設定してやれば良い。&lt;br /&gt;
&lt;br /&gt;
とりあえず例を参考に下記のようにAlertDialogを準備して、ボタンを押したらshowするようにした。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;        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();
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
用意したxmlは表示されるけど、その上下に微妙に空間ができてしまった。。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-tRu3nhaeTZo/TqOzQd3l4MI/AAAAAAAAAKM/n3o_pDtAXPc/s1600/customDialog1.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="192" src="http://4.bp.blogspot.com/-tRu3nhaeTZo/TqOzQd3l4MI/AAAAAAAAAKM/n3o_pDtAXPc/s320/customDialog1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
で調べる。&lt;br /&gt;
&lt;br /&gt;
AlertDialog.BuilderのsetViewでは設定できないけど、AlertDialogだとpublic void setView (View view, int viewSpacingLeft, int viewSpacingTop, int viewSpacingRight, int viewSpacingBottom)で設定できそう。&lt;br /&gt;
&lt;br /&gt;
下記のように書き換える。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;        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);
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-RaNYl53PQMw/TqO1Bpf2NkI/AAAAAAAAAKY/Fyv1RW5iZyY/s1600/customDialog2.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="192" src="http://2.bp.blogspot.com/-RaNYl53PQMw/TqO1Bpf2NkI/AAAAAAAAAKY/Fyv1RW5iZyY/s320/customDialog2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
スペースは消えてくれたので、やりたいことはできた。&lt;br /&gt;
&lt;br /&gt;
ただ、builderでbuild(タイトルとかボタンとかのset)をしてcreateされたdialogに、Viewをsetしてやるのはなんとなく気持ち悪さが残る。setは全てbuilderでできる気がしてたので。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-6647006055809412874?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iIUWfOKQvm160zcgtnpm4rLXJNs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iIUWfOKQvm160zcgtnpm4rLXJNs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iIUWfOKQvm160zcgtnpm4rLXJNs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iIUWfOKQvm160zcgtnpm4rLXJNs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/rtFpk02w0PQ" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/6647006055809412874?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/6647006055809412874?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/rtFpk02w0PQ/android-custom-dialog.html" title="Android Custom Dialogの上下の空間" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-tRu3nhaeTZo/TqOzQd3l4MI/AAAAAAAAAKM/n3o_pDtAXPc/s72-c/customDialog1.png" height="72" width="72" /><feedburner:origLink>http://suka4.blogspot.com/2011/10/android-custom-dialog.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEEQns-cCp7ImA9WhdbFEw.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-2601303584718837610</id><published>2011-10-12T20:23:00.001+09:00</published><updated>2011-10-12T20:23:23.558+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-12T20:23:23.558+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="blogger" /><title>新しい Blogger インターフェイスでの投稿の改行設定</title><content type="html">今までのインターフェイスだと改行がbrに変換されてたのに、新しい Blogger インターフェイスにしたら変換されなくなった。。&lt;br /&gt;
設定を見てもそれらしいのがない。と、いうことで、新しいのは使わずにいたけどそろそろ移行しようと思い見てみる。&lt;br /&gt;
&lt;br /&gt;
全体の設定(左のメニューにあるやつ)じゃなくて、投稿の画面で右にある「投稿の設定＞オプション＞改行」でするんだったのか。&lt;br /&gt;
「「Enter」キーを押して改行」に設定したら今までのように改行が変換されるようになった。これで移行できるかな。&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-2601303584718837610?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2wBTqlt10lHOoEWWIT7WTabC8Kw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2wBTqlt10lHOoEWWIT7WTabC8Kw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2wBTqlt10lHOoEWWIT7WTabC8Kw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2wBTqlt10lHOoEWWIT7WTabC8Kw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/C0g7JkCCy6o" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/2601303584718837610?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/2601303584718837610?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/C0g7JkCCy6o/blogger.html" title="新しい Blogger インターフェイスでの投稿の改行設定" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://suka4.blogspot.com/2011/10/blogger.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QGQXk8cSp7ImA9WhdbEUk.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-6043205788521810156</id><published>2011-10-09T16:28:00.000+09:00</published><updated>2011-10-09T16:28:40.779+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-09T16:28:40.779+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Emulator" /><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>Android emulatorにgoogle account登録</title><content type="html">AndroidアプリとGAE連携した何かを作りたくてエミュレータにアカウント登録しようとしたときのこと&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;Setup could not finish
Unable to open connection to server.
&lt;/code&gt;&lt;/pre&gt;となって、上手く登録できない。&lt;br /&gt;
&lt;br /&gt;
結局、emulatorのTargetがGoogle APIsじゃなきゃってだけ。&lt;br /&gt;
&lt;a href="http://stackoverflow.com/questions/3260868/android-emulator-trouble-creating-user-accounts" target="_blank"&gt;Android Emulator - Trouble creating user accounts - Stack Overflow&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-6043205788521810156?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7zmyFLz2kEN1frk87bNET-0EQBw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7zmyFLz2kEN1frk87bNET-0EQBw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7zmyFLz2kEN1frk87bNET-0EQBw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7zmyFLz2kEN1frk87bNET-0EQBw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/4R7iVtjkky4" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/6043205788521810156?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/6043205788521810156?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/4R7iVtjkky4/android-emulatorgoogle-account.html" title="Android emulatorにgoogle account登録" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://suka4.blogspot.com/2011/10/android-emulatorgoogle-account.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QAQHg-fSp7ImA9WhdbEUk.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-8395357784549603582</id><published>2011-10-06T14:13:00.001+09:00</published><updated>2011-10-09T16:29:01.655+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-09T16:29:01.655+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Emulator" /><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>Android エミュレータからPCサーバへのアクセス</title><content type="html">１台のPCでAndroidアプリとWebサーバの開発のとき、アプリからサーバへのアクセスはlocalhostじゃダメ。loalhostはエミュレータ自身を指すから。10.0.2.2とすればアクセスできる。&lt;br /&gt;
&lt;a href="http://developer.android.com/guide/developing/devices/emulator.html#emulatornetworking" target="_blank"&gt;Emulator Networking | Android Developers&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-8395357784549603582?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/T0pJgW29IJhOk5PkcvgYMQrkiBg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T0pJgW29IJhOk5PkcvgYMQrkiBg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/T0pJgW29IJhOk5PkcvgYMQrkiBg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T0pJgW29IJhOk5PkcvgYMQrkiBg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/l0cT-PVBMVU" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/8395357784549603582?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/8395357784549603582?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/l0cT-PVBMVU/android-pc.html" title="Android エミュレータからPCサーバへのアクセス" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://suka4.blogspot.com/2011/10/android-pc.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4DQn06eSp7ImA9WhdUE0U.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-1699570295428883591</id><published>2011-09-30T20:53:00.002+09:00</published><updated>2011-09-30T20:59:33.311+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-30T20:59:33.311+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AppLogSDK" /><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>インストール数比例型の収益モデル</title><content type="html">Androidに新しい収益モデル「インストール数比例型」の&lt;a href="https://www.applogsdk.com/ja" target="_blank"&gt;AppLog&lt;/a&gt;がミログによって提供されたけど、これってどうなのかな。&lt;br /&gt;
オプトインだからユーザが同意してくれないといけないわけで、どこまで収益につながるんだろう。(従来の広告型のモデルでもやってないし、そもそもアプリも公開してないので収益につながるかはまずは良いんだけど)&lt;br /&gt;
とりあえず、新しいモデルなのでちょっと興味がある。&lt;br /&gt;
&lt;br /&gt;
開発者としては、AppLogSDKをアプリに組み込みやすいのかも気になるところ。SDKはアプリの登録を申請して、審査に通らないとダウンロードできないよう。しっかり読まずに空で登録してしまった。当然Invalid。不要な手間を掛けてしまったな。。すみません。&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://www.applogsdk.com/ja/developer_detail" target="_blank"&gt;AppLogSDKの概要&lt;/a&gt;を見てもあんまり組み込むイメージが沸かない。。別途、仕様書ってのもダウンロードするものなのかな。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
よし、まずは何かシンプルなアプリを作って公開してみるところから始めてみよう！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-1699570295428883591?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4GMS4F2JBSw2lBTGUVHZ2kaDBA8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4GMS4F2JBSw2lBTGUVHZ2kaDBA8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4GMS4F2JBSw2lBTGUVHZ2kaDBA8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4GMS4F2JBSw2lBTGUVHZ2kaDBA8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/zvjlfBg8Dn4" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/1699570295428883591?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/1699570295428883591?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/zvjlfBg8Dn4/blog-post.html" title="インストール数比例型の収益モデル" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://suka4.blogspot.com/2011/09/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEDQ3Y4fip7ImA9WhdVFEw.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-3371193237269793643</id><published>2011-09-19T15:11:00.000+09:00</published><updated>2011-09-19T15:11:12.836+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-19T15:11:12.836+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MySQL" /><title>MySQL ERROR 1005 (HY000): Can't create table</title><content type="html">MySQLでcreate tableしようとしてエラーになったのでメモ。&lt;br /&gt;
&lt;br /&gt;
エラー内容&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;ERROR 1005 (HY000): Can't create table './test/c.frm' (errno: 121)
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
とりあえず、innodb statusを見てみる。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;mysql&amp;lt; show innodb status;
ERROR 1227 (42000): Access denied; you need the SUPER privilege for this operation
&lt;/code&gt;&lt;/pre&gt;スーパー権限が必要とのこと。スーパー権限で作業してるのでちょっとよくわからない。&lt;br /&gt;
&lt;br /&gt;
結論、外部キーのsymbolが問題だった。&lt;br /&gt;
&lt;a href="http://dev.mysql.com/doc/refman/5.1/ja/innodb-foreign-key-constraints.html" target="_blank"&gt;MySQL ::   MySQL 5.1 リファレンスマニュアル :: 13.5.6.4 FOREIGN KEY 制約&lt;/a&gt;&lt;br /&gt;
&lt;blockquote&gt;もし CONSTRAINT symbol 条項が与えられると、symbol 値はデータベース上で固有である必要があります。もし条項が与えられなければ、InnoDB は名前を自動的に作成します。 &lt;/blockquote&gt;&lt;br /&gt;
bテーブルと定義が同じテーブルを作りたかったので、SHOW CREATE TABLE bで出力されるcreate文のテーブル名だけcに変えて実行したのがエラーの原因。&lt;br /&gt;
symbolが被ってしまってエラー。symbol部分も変えるか削除するかしてやらないとダメ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-3371193237269793643?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/djYU_PibS9DIN5I8sdkkGy7pST0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/djYU_PibS9DIN5I8sdkkGy7pST0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/djYU_PibS9DIN5I8sdkkGy7pST0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/djYU_PibS9DIN5I8sdkkGy7pST0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/lkgLbyqHhbI" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/3371193237269793643?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/3371193237269793643?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/lkgLbyqHhbI/mysql-error-1005-hy000-cant-create.html" title="MySQL ERROR 1005 (HY000): Can't create table" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://suka4.blogspot.com/2011/09/mysql-error-1005-hy000-cant-create.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAAQno8eSp7ImA9WhdWGU0.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-5467631123173032777</id><published>2011-09-13T17:39:00.000+09:00</published><updated>2011-09-13T18:05:43.471+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-13T18:05:43.471+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="jQuery UI" /><title>jquery ui アイコンの改行回避</title><content type="html">&lt;a href="http://jqueryui.com/themeroller/" target="_blank"&gt;jQuery UI&lt;/a&gt;のアイコンが便利。ただ、アイコンの後ろに文字を続けたくても、改行されてしまうので調べたメモ。&lt;br&gt;
&lt;br&gt;
こんな感じに記述すると
&lt;link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css" type="text/css" media="all" /&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;span class="ui-icon ui-icon-play"&amp;gt;&amp;lt;/span&amp;gt;再生
&amp;lt;span class="ui-icon ui-icon-pause"&amp;gt;&amp;lt;/span&amp;gt;一時停止
&lt;/code&gt;&lt;/pre&gt;
こう表示される。&lt;br&gt;
&lt;span class="ui-icon ui-icon-play"&gt;&lt;/span&gt;再生
&lt;span class="ui-icon ui-icon-pause"&gt;&lt;/span&gt;一時停止
&lt;br&gt;
&lt;br&gt;
firebugで見てみるとdisplay:blockのために改行されるよう。
styleを「display: inline-block」設定してやると、
&lt;pre&gt;&lt;code&gt;&amp;lt;span style="display: inline-block" class="ui-icon ui-icon-play"&amp;gt;&amp;lt;/span&amp;gt;再生
&amp;lt;span style="display: inline-blcok" class="ui-icon ui-icon-pause"&amp;gt;&amp;lt;/span&amp;gt;一時停止
&lt;/code&gt;&lt;/pre&gt;
改行されずに上手く表示されました。&lt;br&gt;
&lt;span style="display: inline-block" class="ui-icon ui-icon-play"&gt;&lt;/span&gt;再生
&lt;span style="display: inline-block" class="ui-icon ui-icon-pause"&gt;&lt;/span&gt;一時停止
&lt;br&gt;
&lt;br&gt;
ちなみに、「display: inline」だとアイコンがどこかに逝ってしまった。。cssはむずかしい。&lt;br&gt;
&lt;span style="display: inline" class="ui-icon ui-icon-play"&gt;&lt;/span&gt;再生
&lt;span style="display: inline" class="ui-icon ui-icon-pause"&gt;&lt;/span&gt;一時停止
&lt;br&gt;&lt;br&gt;
※FirefoxとChromeでしか確認してない。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-5467631123173032777?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/l_80wUpwt5foTVDAxe4TNGV5hVw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/l_80wUpwt5foTVDAxe4TNGV5hVw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/l_80wUpwt5foTVDAxe4TNGV5hVw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/l_80wUpwt5foTVDAxe4TNGV5hVw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/Xl1dDvN6yiA" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/5467631123173032777?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/5467631123173032777?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/Xl1dDvN6yiA/jquery-ui.html" title="jquery ui アイコンの改行回避" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://suka4.blogspot.com/2011/09/jquery-ui.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUESXY6eCp7ImA9WhdXEUo.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-879572947664457241</id><published>2011-08-24T17:56:00.000+09:00</published><updated>2011-08-24T17:56:48.810+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-24T17:56:48.810+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu" /><title>ubuntu firefox6にアップグレード</title><content type="html">最近やたらfirefoxが遅くなった気がする。そして、クラッシュする頻度も増えたような。&lt;br /&gt;
ちなみに、アップデートはアップデートマネージャに任せていたのでバージョンは3.6.18。&lt;br /&gt;
と、いうわけでfirefox6にアップグレードしてみた。 &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;# add-apt-repository ppa:mozillateam/firefox-stable
# apt-get update
# apt-get install firefox
&lt;/code&gt;&lt;/pre&gt;
メニューとか英語だな。。。日本語化にはfirefox-locale-ja。 &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;# apt-get install firefox-locale-ja
&lt;/code&gt;&lt;/pre&gt;
これでアップグレードは完了！&lt;br /&gt;
若干速くなったような気がするのは気のせいかな&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-879572947664457241?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/d0EXXYgF8DqW6vJ9jPQLBw_5keA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/d0EXXYgF8DqW6vJ9jPQLBw_5keA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/d0EXXYgF8DqW6vJ9jPQLBw_5keA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/d0EXXYgF8DqW6vJ9jPQLBw_5keA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/oT6acY8MqLg" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/879572947664457241?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/879572947664457241?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/oT6acY8MqLg/ubuntu-firefox6.html" title="ubuntu firefox6にアップグレード" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://suka4.blogspot.com/2011/08/ubuntu-firefox6.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIAQ3kycSp7ImA9WhdQF0w.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-3263959614789997838</id><published>2011-08-18T12:28:00.001+09:00</published><updated>2011-08-19T10:49:02.799+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-19T10:49:02.799+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Graph" /><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>AndroidでGoogle Chart ToolsのImage Charts使って円グラフを描く</title><content type="html">以前にAFreeChart,AChartEngineを使ってAndroidアプリに円グラフを表示させてみた。&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/2011/03/android-afreechart.html"&gt;Android AFreeChartで円グラフを描く&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/2011/03/android-achartengine.html"&gt;Android AChartEngineで円グラフを描く&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
今回は&lt;a href="http://code.google.com/intl/ja/apis/chart/image/" target="_blank"&gt;Google Chart Tools: Image Charts&lt;/a&gt;を使ってグラフを表示させてみる。&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;Google Chart APIはチャート画像を返してくれるので、これをImageViewとかで表示させるだけでOK。ちなみにAPIのコール数に制限はないけど、１日あたり25万コール以上が想定されるなら、メールで知らせてくりゃってことらしい。&lt;br /&gt;
&lt;blockquote&gt;
Google Chart Usage Policy&lt;br /&gt;
&lt;br /&gt;
There's no limit to the number of calls per day you can make to the Google Chart API. However, we reserve the right to block any use that we regard as abusive. If you think your service will make more than 250,000 API calls per day, please let us know by mailing an estimate to chart-api-notifications@google.com.
&lt;/blockquote&gt;
パラメータは「&lt;a href="http://code.google.com/intl/ja/apis/chart/image/docs/chart_params.html" target="_blank"&gt;List of Chart Parameters&lt;/a&gt;」見る。タイトルとか色とか背景色とか凡例の位置とか基本的にはなんでもパラメータあるし好きなように表示できそう。&lt;br /&gt;
&lt;br /&gt;
とりあえず、前にやったデータの円グラフを表示させるコード。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
        Display display = wm.getDefaultDisplay();

        String chart = "http://chart.apis.google.com/chart?cht=p3&amp;amp;amp;chdlp=b";
        chart += "&amp;amp;amp;chtt=" + URLEncoder.encode("サンプル");
        chart += "&amp;amp;amp;chd=t:40,5,10,25,20,50";
        chart += "&amp;amp;amp;chdl=Cupcake|Donut|Eclair|Froyo|Gingerbread|Honeycomb";
        chart += "&amp;amp;amp;chs=" + display.getWidth() + "x" + (display.getHeight() / 3);

        try {
            ImageView imageview = (ImageView) findViewById(R.id.chart);
            InputStream is = (InputStream) new URL(chart).getContent();
            Drawable d = Drawable.createFromStream(is, "");
            is.close();
            imageview.setImageDrawable(d);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
&lt;/code&gt;&lt;/pre&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-uOUDrXep0EI/Tkx_p1loOFI/AAAAAAAAAJs/wBoZfXRgloM/s1600/ImageChart.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-uOUDrXep0EI/Tkx_p1loOFI/AAAAAAAAAJs/wBoZfXRgloM/s320/ImageChart.png" width="192" /&gt;&lt;/a&gt;&lt;/div&gt;
画像をとってきて表示させてるだけなので、AFreeChart、AChartEngineより敷居は引くく簡単に導入できる印象。当然だけど2つと違って、INTERNETのpermissionは必要。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-3263959614789997838?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/x10Rb2aqS4bmt8U-P2SrXiHT-xs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/x10Rb2aqS4bmt8U-P2SrXiHT-xs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/x10Rb2aqS4bmt8U-P2SrXiHT-xs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/x10Rb2aqS4bmt8U-P2SrXiHT-xs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/ewotvsKcbp0" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/3263959614789997838?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/3263959614789997838?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/ewotvsKcbp0/androidgoogle-chart-toolsimage-charts.html" title="AndroidでGoogle Chart ToolsのImage Charts使って円グラフを描く" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-uOUDrXep0EI/Tkx_p1loOFI/AAAAAAAAAJs/wBoZfXRgloM/s72-c/ImageChart.png" height="72" width="72" /><feedburner:origLink>http://suka4.blogspot.com/2011/08/androidgoogle-chart-toolsimage-charts.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEEQ3Y_eyp7ImA9WhdRFE4.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-2781927437043938422</id><published>2011-08-04T12:58:00.002+09:00</published><updated>2011-08-04T13:03:22.843+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-04T13:03:22.843+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CakePHP" /><category scheme="http://www.blogger.com/atom/ns#" term="PHP" /><title>CakePHP フォーム周りメモ</title><content type="html">CakePHPのフォーム要素はdivやlabelがあってどうも気に入らない。消したい。&lt;br /&gt;
ということで、マニュアル見てみる。&lt;br /&gt;
&lt;a href="http://book.cakephp.org/ja/view/1390/%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E8%A6%81%E7%B4%A0%E3%81%AE%E8%87%AA%E5%8B%95%E7%94%9F%E6%88%90" target="blank"&gt;フォーム要素の自動生成 :: フォーム :: 主要なヘルパー :: マニュアル :: 1.3コレクション&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
下記のようにlabel,divをfalseをセットしてやると出力されなくなる。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?php echo $this-&amp;gt;Form-&amp;gt;input('name', array('label'=&amp;gt;false, 'div'=&amp;gt;false));?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
あと、hasAndBelongsToManyの要素のフォームがmulitple属性指定されたselectなのも気に入らない。&lt;br /&gt;
「Ctrl」キー押しながら複数選択ってなんか敷居が高い気がするのでチェックボックスにしたい。下記のようにすればできる。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?php echo $this-&amp;gt;Form-&amp;gt;input('Hobby', array('multiple' =&amp;gt; 'checkbox'));?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
で、これもdivタグ、labelタグを消したいので、追加。 &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?php echo $this-&amp;gt;Form-&amp;gt;input('Hobby', array('multiple' =&amp;gt; 'checkbox','label'=&amp;gt;false, 'div'=&amp;gt;false));?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
見事に&amp;lt;div class="checkbox"&amp;gt;が残る。これも消したいのでググる。 &lt;br /&gt;
&lt;a href="http://stackoverflow.com/questions/1267230/cakephp-form-helper-habtm-multiple-checkbox-styling" target="blank"&gt;CakePHP form helper - HABTM multiple checkbox styling - Stack Overflow&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
cssでスタイリングできるよってな感じか。それは普通に分かるけれど。。。消したかったのです。&lt;br /&gt;
&lt;br /&gt;
と、いうことで諦めて苦手なcssで。 &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;div.checkbox{
    display:inline;
}
&lt;/code&gt;&lt;/pre&gt;とりあえず１行で表示させたいだけなので、こんなでいいかな。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-2781927437043938422?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5_F7wh2vz0vTKFhv60cWqwvLIW0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5_F7wh2vz0vTKFhv60cWqwvLIW0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5_F7wh2vz0vTKFhv60cWqwvLIW0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5_F7wh2vz0vTKFhv60cWqwvLIW0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/kDR5vX5ZlhY" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/2781927437043938422?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/2781927437043938422?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/kDR5vX5ZlhY/cakephp_04.html" title="CakePHP フォーム周りメモ" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://suka4.blogspot.com/2011/08/cakephp_04.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EMSHw5fCp7ImA9WhdRE0k.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-3398516368295598753</id><published>2011-08-03T14:34:00.000+09:00</published><updated>2011-08-03T14:34:49.224+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-03T14:34:49.224+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CakePHP" /><category scheme="http://www.blogger.com/atom/ns#" term="PHP" /><title>CakePHP 画像アップロード</title><content type="html">画像のアップロード調べていて、下記ImageBehaviorを知ったので使ってみる。&lt;br /&gt;
&lt;a href="http://blog.syuhari.jp/archives/1905" target="blank"&gt;[CakePHP] 画像のアップロード＆リサイズを簡単にできる ImageBehavior | Sun Limited Mt.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
使い方は参照元にあるので省略するが、簡単に使えて良い感じ。&lt;br /&gt;
ただ、findしたときに関連テーブルのimageまでは処理してくれない。&lt;br /&gt;
で、また調べてたら、下記記事でbelongsToに対して処理を足してたので参考にみる。&lt;br /&gt;
ちなみに、今回処理させたい関連はhasMany。&lt;br /&gt;
&lt;a href="http://blog.ceed.jp/?p=292"&gt;cakePHPのimageBehaviorについて &amp;#8211; CEED&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
afterFindに処理を加えてるよう。&lt;br /&gt;
&lt;br /&gt;
今回はhasManyを処理したいので、relatedModelsにhasManyもマージする。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;$relatedModels = array_merge($model-&gt;belongsTo, $model-&gt;hasMany);
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
これだけだと動かなかった。。。&lt;br /&gt;
hasManyなわけで複数のときもあるので、127-130行までの処理を複数の場合を考慮する。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;                        if (isset($results[$i][$relatedModelName][0])) {
                            $j=0;
                            while ( isset( $results[$i][$relatedModelName][$j] ) &amp;&amp; is_array( $results[$i][$relatedModelName][$j] ) )  {
                                if (isset($results[$i][$relatedModelName][$j][$field]) &amp;&amp; ($results[$i][$relatedModelName][$j][$field]!='')) {
                                    $value=$results[$i][$relatedModelName][$j][$field];
                                    $results[$i][$relatedModelName][$j][$field]=$this-&gt;__getParams($relatedModel, $field, $value,$fieldParams, $results[$i][$relatedModelName][$j]);
                                }
                                $j++;
                            }
                        } else {
                            if (isset($results[$i][$relatedModelName][$field]) &amp;&amp; ($results[$i][$relatedModelName][$field]!='')) {
                                $value=$results[$i][$relatedModelName][$field];
                                $results[$i][$relatedModelName][$field]=$this-&gt;__getParams($relatedModel, $field, $value,$fieldParams, $results[$i][$relatedModelName]);
                            }
                        }
&lt;/code&gt;&lt;/pre&gt;145-148行のところも同様に。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;                        if (isset($results[$relatedModelName][0])) {
                            $j=0;
                            while ( isset( $results[$relatedModelName][$j] ) &amp;&amp; is_array( $results[$relatedModelName][$j] ) )  {
                                if (isset($results[$relatedModelName][$j][$field]) &amp;&amp; ($results[$relatedModelName][$j][$field]!='')) {
                                    $value=$results[$relatedModelName][$j][$field];
                                    $results[$relatedModelName][$j][$field]=$this-&gt;__getParams($relatedModel, $field, $value,$fieldParams, $results[$relatedModelName][$j]);
                                }
                                $j++;
                            }
                        } else {
                            if (isset($results[$relatedModelName][$field]) &amp;&amp; ($results[$relatedModelName][$field]!='')) {
                                $value=$results[$relatedModelName][$field];
                                $results[$relatedModelName][$field]=$this-&gt;__getParams($relatedModel, $field, $value,$fieldParams, $results[$relatedModelName]);
                            }
                        }
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
これでhasManyの関連のテーブルのimageが処理されるようになりましたっと。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-3398516368295598753?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tPMyn01irJ3F8sjzWchHYAW_7rQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tPMyn01irJ3F8sjzWchHYAW_7rQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tPMyn01irJ3F8sjzWchHYAW_7rQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tPMyn01irJ3F8sjzWchHYAW_7rQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/IlV9pRYQuGU" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/3398516368295598753?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/3398516368295598753?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/IlV9pRYQuGU/cakephp.html" title="CakePHP 画像アップロード" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://suka4.blogspot.com/2011/08/cakephp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEBQH47eSp7ImA9WhdREE0.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-6511004257574274105</id><published>2011-07-30T14:44:00.000+09:00</published><updated>2011-07-30T14:44:11.001+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-30T14:44:11.001+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PHP" /><title>PHP print_rに第二引数あったのね</title><content type="html">超今更ながら、print_rに第2引数を渡せるのを知った。&lt;br /&gt;
TRUEを渡すと出力はしないで、string返してくれる。&lt;br /&gt;
&lt;br /&gt;
そんだけです。&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
そんだけなんだけど、一応どんな感じで使ったかも書いとくと、配列のログ出力が簡潔になった。&lt;br /&gt;
出力バッファリングを有効にしてやって、バッファリング内容を表示ってやってたので。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?php

$arr = array('a'=&gt;'hoge', 'b'=&gt;'fuga');

ob_start();
echo "var_dump: ";
var_dump($arr);
error_log(ob_get_contents());
ob_end_clean();

error_log("print_r: " . print_r($arr, true));
&lt;/code&gt;&lt;/pre&gt;上のvar_dump(別にprint_rでもい)の出力が今までやってた方法で、下が今回覚えたprint_rの第二引数使ったもの。&lt;br /&gt;
4行が１行に!! 簡潔にかけて便利じゃ。下記注意があるので、内部的には同じようなことをやってるんだろうけど。&lt;br /&gt;
&lt;blockquote&gt;注意:&lt;br /&gt;
  return パラメータを使う場合、この関数は内部的に出力バッファリングを使います。そのため、ob_start() コールバック関数の中では使えません。&lt;/blockquote&gt;&lt;br /&gt;
で、ログはこんな感じに出力されると。sedで改行コードを改行に置換してやると見やすいね。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;$ tail -f /var/log/apache2/error.log | sed 's/\\n/\
/g'
[Sat Jul 30 14:38:02 2011] [error] [client 127.0.0.1] var_dump: array(2) {
  ["a"]=&gt;
  string(4) "hoge"
  ["b"]=&gt;
  string(4) "fuga"
}

[Sat Jul 30 14:38:02 2011] [error] [client 127.0.0.1] print_r: Array
(
    [a] =&gt; hoge
    [b] =&gt; fuga
)

&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-6511004257574274105?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pzYJVRvZfa0AObykFFOmEKWQwt8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pzYJVRvZfa0AObykFFOmEKWQwt8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pzYJVRvZfa0AObykFFOmEKWQwt8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pzYJVRvZfa0AObykFFOmEKWQwt8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/VIn4KFwAJdU" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/6511004257574274105?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/6511004257574274105?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/VIn4KFwAJdU/php-printr.html" title="PHP print_rに第二引数あったのね" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://suka4.blogspot.com/2011/07/php-printr.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ICQ3o8fCp7ImA9WhdSGEk.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-4411300522776836863</id><published>2011-07-28T18:32:00.000+09:00</published><updated>2011-07-28T18:32:42.474+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-28T18:32:42.474+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="jQuery UI" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title>jQuery UI TabsにGoogleMap埋め込むと表示位置ズレる</title><content type="html">GoogleMapの地図を埋め込んでみたが、どうも初期の中心地がズレる。&lt;br /&gt;
原因を調べていたら、どうもjQuery UI Tabsの相性（？）の問題。&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
jQuery UIタブの中と外にそれぞれ同じiframeを埋め込んだのが下図。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-3s1F9Ak3w0E/TjEnR1Y5LlI/AAAAAAAAAJk/dq-xSZAeaaw/s1600/jQuery%2BUI%2BTabs%2B%252B%2BGoogle%2BMap.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="182" src="http://4.bp.blogspot.com/-3s1F9Ak3w0E/TjEnR1Y5LlI/AAAAAAAAAJk/dq-xSZAeaaw/s320/jQuery%2BUI%2BTabs%2B%252B%2BGoogle%2BMap.png" /&gt;&lt;/a&gt;&lt;/div&gt;タブ内の方はタブの分だけ（かな？）右下にズレてしまって、世田谷区じゃなくて目黒区になっている。&lt;br /&gt;
タブの外にあるのはA地点が中心に来ていて期待した位置。&lt;br /&gt;
&lt;br /&gt;
対応方法を探す。iframeじゃなくて、マップAPIのようだけど、下記参考にみてみた。&lt;br /&gt;
&lt;a href="http://stackoverflow.com/questions/1428178/problems-with-google-maps-api-v3-jquery-ui-tabs" target="blank"&gt;Problems with Google Maps API v3 + jQuery UI Tabs - Stack Overflow&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
結論としては、iframeのsrcをrelに書き換えて、tabのshowでrelの値をsrcに設定することでズレは解消。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;    $(function(){$('#tab').tabs({
            show:function(event, ui) {
                var rel = $(ui.panel).find('iframe').attr('rel');
                $(ui.panel).find('iframe').attr('src',rel);
            }
        })
     });
&lt;/code&gt;&lt;/pre&gt;地図のあるタブに切り替えるたびに読み込み中になるのは、まぁ良しとする。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-4411300522776836863?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/H7Q4zmiiCbPem1qm9r7NtrGaB6Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/H7Q4zmiiCbPem1qm9r7NtrGaB6Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/H7Q4zmiiCbPem1qm9r7NtrGaB6Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/H7Q4zmiiCbPem1qm9r7NtrGaB6Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/27qAd31YyVo" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/4411300522776836863?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/4411300522776836863?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/27qAd31YyVo/jquery-ui-tabsgooglemap.html" title="jQuery UI TabsにGoogleMap埋め込むと表示位置ズレる" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-3s1F9Ak3w0E/TjEnR1Y5LlI/AAAAAAAAAJk/dq-xSZAeaaw/s72-c/jQuery%2BUI%2BTabs%2B%252B%2BGoogle%2BMap.png" height="72" width="72" /><feedburner:origLink>http://suka4.blogspot.com/2011/07/jquery-ui-tabsgooglemap.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIEQXk8cCp7ImA9WhdTFU4.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-2344882066971910406</id><published>2011-07-13T14:54:00.000+09:00</published><updated>2011-07-13T14:55:00.778+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-13T14:55:00.778+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="jQuery Mobile" /><title>jQueryMobileのボタン内のテキストを改行</title><content type="html">jQuery Mobile使うとスマートフォンっぽいUIにしてくれるのでまぁ便利なんだけど、微妙なところの調整が良く分からない。掲題の通りで、ボタン内のテキストを改行して全てを表示させたい。デフォルトだと「…」と省略されるので。&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
ぐぐるが、とくに解決方法みつけられないので、自力で頑張る。&lt;br /&gt;
&lt;br /&gt;
.ui-btn-inner の 「white-space: nowrap;」が効いてるので折り返されないで表示されてる。&lt;br /&gt;
んで、ボタン内の文字列はspan.ui-btn-textに入れられるようなので、このスタイルを設定すればよさそう。&lt;br /&gt;
&lt;br /&gt;
サンプル&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;    &amp;lt;style type="text/css"&amp;gt;
    div.ws-normal span.ui-btn-text { white-space:normal; }
    div.ws-pre span.ui-btn-text { white-space:pre; }
    &amp;lt;/style&amp;gt;
    &amp;lt;div data-role="content"&amp;gt;
        &amp;lt;input type="button" value="ボタンの文字列長いと改行されずに省略されるのをなんとかしたい。"&amp;gt;
        &amp;lt;div class="ws-normal"&amp;gt;
            &amp;lt;input type="button" value="ボタンの文字列長いと改行されずに省略されるのをなんとかしたい。"&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div class="ws-pre"&amp;gt;
            &amp;lt;input type="button" value="ボタンの文字列長いと
改行されずに省略されるのをなんとかしたい。"&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-EXI6121heg8/Th0w7muzaAI/AAAAAAAAAJc/RxYDlbdurrQ/s1600/jQueryMobileButton.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="192" src="http://1.bp.blogspot.com/-EXI6121heg8/Th0w7muzaAI/AAAAAAAAAJc/RxYDlbdurrQ/s320/jQueryMobileButton.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
とりあえず、改行はできましたっと。もっと良い方法もあるのかな。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-2344882066971910406?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vUPiu6x_ZghYg3DE2zZkHKCVnUQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vUPiu6x_ZghYg3DE2zZkHKCVnUQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vUPiu6x_ZghYg3DE2zZkHKCVnUQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vUPiu6x_ZghYg3DE2zZkHKCVnUQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/uIuX5R5bF3k" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/2344882066971910406?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/2344882066971910406?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/uIuX5R5bF3k/jquerymobile.html" title="jQueryMobileのボタン内のテキストを改行" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-EXI6121heg8/Th0w7muzaAI/AAAAAAAAAJc/RxYDlbdurrQ/s72-c/jQueryMobileButton.png" height="72" width="72" /><feedburner:origLink>http://suka4.blogspot.com/2011/07/jquerymobile.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8AQ38_eSp7ImA9WhZaGEs.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-5445933112769361706</id><published>2011-07-05T20:54:00.000+09:00</published><updated>2011-07-05T20:54:02.141+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-05T20:54:02.141+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="開発環境" /><category scheme="http://www.blogger.com/atom/ns#" term="モニタ" /><title>モニタ24インチにしたら快適</title><content type="html">今までずっと19インチモニタを使っていたのだけれど、とうとう新しいのを買った。別に壊れたわけじゃないんだけど、ネットサーフィン程度にしかPC使ってなかったのが開発もするようになって不便を感じていたため。やっぱり画面が広いと作業効率あがる。気がする。&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left; float: left; margin: 1em"&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=suka4-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=B00346K5N4&amp;ref=tf_til&amp;fc1=333333&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=535FB3&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="clear: both;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
買ったのは「&lt;a href="http://www.amazon.co.jp/gp/product/B00346K5N4/ref=as_li_tf_tl?ie=UTF8&amp;tag=suka4-22&amp;linkCode=as2&amp;camp=247&amp;creative=1211&amp;creativeASIN=B00346K5N4"&gt;SAMSUNG 24型ワイド液晶モニター B2430H&lt;/a&gt;」。あんまりこだわりはないのでノングレアのもので15,000円程度のものから選択。価格は14,571円と15,000を切る安さで手に入った。今日確認したら、Amazonのパソコン・家電オンラインショップ Bサプライズって店で12,800円とさらに安い値段になってて、お買い得！！&lt;br /&gt;
&lt;br /&gt;
で、このモニタを使って2週間程度経つが、特に問題もなくて良い感じ。&lt;br /&gt;
まぁ価格.comのレビューにもあったけど、視野角は狭いのかも。たまたま下から覗いてみたら暗かったんで。でも、普通に正面から見る分には全く問題なし！動画も問題なく。&lt;br /&gt;
あとは強いて言うなら、モニタの電源の青ライトが明るいのが気になるので、PCシャットダウン時にはモニタも落とすようになったのが手間というか、経済的というのか。&lt;br /&gt;
兎に角、手頃な価格でモニタが入って大満足。&lt;br /&gt;
&lt;br /&gt;
&lt;br style="clear: both;"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left; float: left; margin: 1em"&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=suka4-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=B0045IPON6&amp;ref=tf_til&amp;fc1=333333&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=535FB3&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
モニタ自体は問題ないけど、それだけでは終わらなかった。&lt;br /&gt;
モニタには「&lt;a href="http://www.amazon.co.jp/gp/product/B0045IPON6/ref=as_li_tf_tl?ie=UTF8&amp;tag=suka4-22&amp;linkCode=as2&amp;camp=247&amp;creative=1211&amp;creativeASIN=B0045IPON6"&gt;パソコン自動切替器 BSKMR201&lt;/a&gt;」で、UbuntuとWindowsをつないで使ってたのに、Windowsが解像度に対応してない。&lt;br /&gt;
&lt;br /&gt;
解像度あってないと醜いのでちょっと頑張る。&lt;br /&gt;
&lt;br /&gt;
&lt;br style="clear: both;"&gt;&lt;br /&gt;
ちなみにwindowsは5年くらい前に買ったDELLのDIMENSION 3100C。&lt;br /&gt;
ドライバを更新したけど対応解像度は変わらずで、下記の参考の方のようにPowerStripを入れて設定してみる。よく理解せずにやってたから、同様に画面が真っ暗になって焦る。電プチ。Windows起動画面でF8押して、VGAモードにして起動する。またいじってると、画面が真っ暗。繰り返す。繰り返す。&lt;br /&gt;
&lt;br /&gt;
一応、1920x1080の解像度で表示出来るようになったけど、145ヘルツしか選べない参考と同じ状態。そのまま終了すると、次回起動時にログイン画面で真っ暗。恐らくPowerStripが起動してるときは表示できるけど、ログイン画面時ではPowerStripが起動されてないので真っ暗になるんだろう。&lt;br /&gt;
&lt;br /&gt;
だから、ログイン時画面真っ暗なままでキーボードだけでログインしてるのか。わけわからなくなりそうだな。慣れればこれでも大丈夫かな。&lt;br /&gt;
もしくは起動時にF8押してVGAモードにするか、シャットダウン前に低解像度に設定して終了するとかか。忘れそうだな。これも、あんまりうまくないですね。&lt;br /&gt;
&lt;br /&gt;
そもそも、なんでそんな古いの使ってるのって話か。たまにしか使わないので、低解像度でそのまま使うのでもいいか。&lt;br /&gt;
&lt;br /&gt;
参考：&lt;a href="http://www.attrise.com/ceo/2011/02/2319201080.html" target="_blank"&gt;[備忘録]モニタ解像度変更手順（23インチ、1920×1080への対応） | ホームページ制作（横浜）のアットライズ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-5445933112769361706?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3BGXl_b4RdzxqleKbW7FaHmbdrk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3BGXl_b4RdzxqleKbW7FaHmbdrk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3BGXl_b4RdzxqleKbW7FaHmbdrk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3BGXl_b4RdzxqleKbW7FaHmbdrk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/oH-Sw1AKBOI" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/5445933112769361706?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/5445933112769361706?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/oH-Sw1AKBOI/24.html" title="モニタ24インチにしたら快適" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://suka4.blogspot.com/2011/07/24.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcMRHY6fSp7ImA9WhZaGU8.&quot;"><id>tag:blogger.com,1999:blog-5002540725168985534.post-2103938462196680066</id><published>2011-06-23T12:28:00.001+09:00</published><updated>2011-07-06T12:14:45.815+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-06T12:14:45.815+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WebView" /><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>Android WebView loadDataメモ</title><content type="html">WebViewはwebページ表示するために使うものと思ってたけど、htmlの文字列を渡して表示もできるってことに気づいた。htmlの方が慣れてるし、けっこう便利！ちょっとハマった点メモ。&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
使い方は簡単で、htmlのデータ用意して、loadDataするだけ。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;        WebView webview = new WebView(this);
        String data = "&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;meta http-equiv=\"content-type\" content=\"text/html;charset=UTF-8\"&amp;gt;&amp;lt;/head&amp;gt;";
        data +=  "&amp;lt;body&amp;gt;ハロー&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;";
        webview.loadData(data, "text/html", "UTF-8");
        setContentView(webview);
&lt;/code&gt;&lt;/pre&gt;ヘッダにmetaタグで指定してやらないと文字化けるので注意が必要。metaがないと下記のように化ける。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-SaUCPHBKzbM/Tfmzt-U8CcI/AAAAAAAAAJE/pWScwEHzWDg/s1600/webview.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="192" src="http://3.bp.blogspot.com/-SaUCPHBKzbM/Tfmzt-U8CcI/AAAAAAAAAJE/pWScwEHzWDg/s320/webview.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
だいたいこんな感じで使ってたけど、たまに表示ができないときがあるので調べ見てる。どうもdataに%が入ると表示ができないよう。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;     data +=  "&amp;lt;body&amp;gt;ハロー%&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;";
&lt;/code&gt;&lt;/pre&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-tUIqgV-FpdE/Tfm1M9PVLvI/AAAAAAAAAJM/EYHHZbex2tw/s1600/webview3.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="192" src="http://4.bp.blogspot.com/-tUIqgV-FpdE/Tfm1M9PVLvI/AAAAAAAAAJM/EYHHZbex2tw/s320/webview3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
%が入るかもしれないデータの場合は、URLEncoder.encodeしてやれば表示できる。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;        try {
            data +=  "&amp;lt;body&amp;gt;" + URLEncoder.encode("ハロー%", "UTF-8") + "&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;";
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
※追記：URLEncoder.encodeだと半角スペースが+で表示されてしまうな。%を%25にreplaceするだけでもいいのかな。&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;とりあえずloadDataはメタタグ入れるのとencodeに気をつけてれば文字化けの問題はなさそう。&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
ちなみに、loadDataの説明にはちゃんと下記記述があったのでちゃんと読まずに使ってただけ。。。&lt;br /&gt;
%以外にも#とかも書かれてるけど、置き換えなくても表示できた。%だけ上のように「Web page not available」。&lt;br /&gt;
&lt;blockquote&gt;A String of data in the given encoding. The date must be URI-escaped -- '#', '%', '\', '?' should be replaced by %23, %25, %27, %3f respectively.&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
注意するのはそんな程度。htmlだからtableタグが使えるのがちょっとうれしい。tableタグなくてもTableLayoutあるし問題ないんだけど、罫線ひくのにbackgroundとmargin使って線のように見せる(参照：&lt;a href="http://www.droidnova.com/display-borders-in-tablelayout,112.html" target="_blank"&gt;Display border lines in TableLayout on Android Development&lt;/a&gt;)のがなんだかなとは思ってた。もちろんtableタグならborder指定するだけで簡単に表に枠線を付けられる。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-jUrje2ulAX0/TfnBaonK_3I/AAAAAAAAAJU/E1s6IU4rAZ4/s1600/webview4.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="192" src="http://4.bp.blogspot.com/-jUrje2ulAX0/TfnBaonK_3I/AAAAAAAAAJU/E1s6IU4rAZ4/s320/webview4.png" /&gt;&lt;/a&gt;&lt;/div&gt;すごく簡単。rowの数が任意のときにも便利。任意の場合、TableLayoutだとどうやるのかな。TableRowをinflateして、TableLayoutにaddViewしてを繰り替えしていくとかかな？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5002540725168985534-2103938462196680066?l=suka4.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LLGRNIJiDodSR4CTR4_N7x5bSXg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LLGRNIJiDodSR4CTR4_N7x5bSXg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LLGRNIJiDodSR4CTR4_N7x5bSXg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LLGRNIJiDodSR4CTR4_N7x5bSXg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxiwD/~4/zc2pTfFZrAk" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/2103938462196680066?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5002540725168985534/posts/default/2103938462196680066?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxiwD/~3/zc2pTfFZrAk/android-webview-loaddata.html" title="Android WebView loadDataメモ" /><author><name>suka4</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-SaUCPHBKzbM/Tfmzt-U8CcI/AAAAAAAAAJE/pWScwEHzWDg/s72-c/webview.png" height="72" width="72" /><feedburner:origLink>http://suka4.blogspot.com/2011/06/android-webview-loaddata.html</feedburner:origLink></entry></feed>

