create temporary table test1(num int);
insert test1 (num) values(0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(2),(2),(2);
select concat(repeat(' ',9-num),repeat('#',num*2-1)) from test1;
MySQL限定ですが。。。
Eclipse+PDTでXdebugの時external browserでFirefoxの設定がMacではイケテない件
最近仕事でEclipse+PDTでPHPを改造する仕事が多い。
本当はAptana Studio何だが基本一緒。
で、昔は一から自分で全部設計して構築する仕事が多かったんで、基本的には環境的にも自分のコードだしあんまり作りを解析する必要もないし、ブラウザ上でのデバッグ表示や基本はログでのデバッグ表示等で十分事足りていた。今でも自分で一から作るんならそれは変わらないだろうな、スピード的にも。
で、今の本職のお仕事はあるPHPのパッケージプロダクトをカスタマイズや改造する仕事で、どうしても改造やカスタマイズをするにあたってそのソースコードの挙動を細かく追わなければいけない事情が出てきた。
そこで思いついたのが昔やっぱある既存SNSのコードを追う際に良く使っていたXdebugだった。
基本、VisualStudioとかXcodeとかIDEでステップで追うのは慣れていたし、Cのソースコードを追う際はよくgdb使ってたものでこういうPHP環境でもステップ毎に挙動を追えるのは大変助かる。
で、会社でXdebug使って結構効率が上がってるんで家でも自分のプライベートで関わってるプロジェクトに使おうとおもって導入したら、家の環境がMacなんで少しはまりました。
EclipseとかAptana StudioでXdebugでデバッグするときに、いちいちIDE内蔵のブラウザでやる人はあんまりいないと思う。表示域的にもレイアウト的にもそれはない。やっぱ外部ブラウザを使ってデバッグクライアントを起動させるのが常道だろう。POSTの画面遷移とかもデバッグしやすいし。
で、環境設定で外部ブラウザがデフォルトで内蔵の奴になってるんでそれをデフォで入っているFirefoxに変えます。
するとデバッガをIDEで起動した際に設定で指定したURLとファイルでFirefoxを起動してくれるというわけです。
設定では単にFirefoxへのパスが書いているだけなんでシンプルなもんです。会社のWindowsでは問題なくこれでデバッグ出来てました。
で、家のMacなんですけど、MacのEclipse(Aptana Studio)ではデフォでFirefoxのパスが、
“/Applications/Firefox.app/Contents/MacOS/firefox-bin”
になっています。
“/Applications/Firefox.app”
ではダメです。Eclipseはバイナリの実体を指定しないとダメみたいでappの下を掘らないとイケないわけです。
で、Macご存知の片はわかるんだと思うんですが、これだと新たにFirefoxのインスタンスを立ち上げてしまうんです。
しかも起動時に、既にFirefoxのインスタンスが立っているから立てられない、みたいなアラートが出てしまいます。
いちいちインスタンスとウィンドウを立ち上げるのも、アラートが出るのも嫌ですねー。。
で、こうすれば解消します。:q
環境設定で、「General」の「Web Browser」から(僕英語版のまま使ってるんで日本語化してる人は読み替えてね)新規外部ブラウザをNewをクリックして追加します。するとダイアログが立ち上がります。そこに外部ブラウザの「名前」と「Location」(バイナリへのパスね)と「Parameters」(コマンド引数)を入れられます。そこに下記のように入れれば吉です。
Name ; 任意
Location ; /usr/bin/open
Parameters ; -a /Applications/Firefox.app %URL%
Mac少し知ってる人ならなるほどー、なんでしょうが。
これで既存に立ち上がってるFirefoxのタブとしてデバッグページが立ち上がってくれます。(Firefoxのタブの設定等にもよるだろうけど)
もちろんこれを応用すれば他のブラウザでもOKっすね。
簡単なTipsでした。
ipadを車載してみた
九十九里に行くのにipadをなんとか車載出来ないかとトライしてみました。
やり方は、素直にマジックテープを切り貼りしてくっつけるというやり方です。
実はipadの後ろに本物のナビが設置されてます。
映り込みの関係で、デフォルトだと写真の感じなんですが、後ろに何か挟んでもう少し角度を縦ぎみにしてやると画面が見やすくなります。
で、これを設置して「全力案内」ナビアプリでナビさせてみたのですが、非常に快適でした。
「全力案内」はipadのHDにも対応してるんで、さすがにipadの大画面だと車についてるナビより画面と情報量が多いんで圧巻です。又、オプションのVICSなども購入してるんで混雑具合もわかって全く遜色有りません。
暫くはこれで行こうと思うんですが、もっとちゃんとした車載キットが出回ってきたらちゃんとしたのを買おうかと。
ipadのあとiphone4を買って、他にもAndroidとかいじってると、別にipadいらないんじゃないかとか思ったりしたんですが、画面の大きさを考慮にいれた用途を考えると色々便利な用途がありそうですね。
- プレゼン
- もっと気楽に画面をみんなで見合いながらあーでもない、こーでもない言う
- 電子書籍は僕の経験ではやっぱipadの方が読みやすく読む速度も早いです
- 地図やナビ
- ミーティングとかのメモ取りはやっぱipadの方が見やすい
ipadとニトリのワイヤーイーゼル
前々から話題に成っていたニトリのワイヤーフレームが安いのにipadにぴったりって話、早速試してみた。
ニトリに行って店員に聞いたところしばらくしてワイヤーフレームの置き場所を探してくれた。
通常の額縁とか木製写真フレームとかおいてある所に一緒に置いてある。
で、目的の奴は大きさによって2〜3種類くらいあるみたいだが、一番小さい(らしい)299円のものがipadにはぴったりだ。
で、これが前景
で、これが横から見た感じ
最後に後ろから見た風景がこれ
これは安い割にはめちゃくちゃいい感じで使えてます。
すごくおすすめ。
会社用にももう一個買おうかな。
客先でキーボード打ちながらメモるときも案外この位の角度がある方が映りこみが少なくって書きやすいんだよな。
まあ、客先でBluetoothキーボード使うと3時間位で100%のバッテリがなくなってしまうっていう欠点はあるんだけど。
まあ、暫く使ってみることにします。
Androidは鬼っ子?
Googleはさー、
Androidは鬼っ子なんだよね。
純正の生え抜き部隊じゃないわけね。
あれはDangerってデバイス作ってた部隊を買収してそのチームがそのまま作ってるっしょ。
だからイマイチ彼らの作ってるものが冴えないんだよね。
GmailのAndroid純正アプリなんて最悪でさ。
圧倒的にブラウザのWebアプリの方が使い勝手が向上してるわけ。
これってかつてMSのOS作ってる部隊とOffice作ってる部隊みたいに、要は、勝手にお互いにやってるだけで統合されてないんだよね。お互い勝手に新しいUI導入してチグハグみたいな。
たぶんWebアプリ作ってる部隊は優秀なやつが多いでしょ。
最近のDocsの改善とかGmailの改善を見てると。
とにかくGoogle純正のAndroidアプリはひどい。
やる気を感じない。
おそらくどこかの時点で上手くいかないとGoogleはAndroidから「穏やかに」撤退する気がする。元々Apacheライセンスで公開して寄贈してるんで、純正アプリのソースさえ公開すればあとはどこかが形式上は引き継げるわけだしね、
少なくともおれは趣味じゃなくビジネスで見てるんで。
どんなに端末やAndroid OSが普及しても1銭も入らん訳。
少なくともマーケットを充実して反映させる施策してもらわんことには。
いくら開発がオープンでもビジネスにならないマーケットだと「趣味」で公開する開発者ばっかになっちゃう。あとは企業の広告目的のアプリとか、広告載せたアプリとか。
それだと今の広告作るFlasherみたいにデザイン会社みたいな下請けで稼ぐしかないよね。
あとは単純にブラウザをプラットホームとして見るしかないね。
何かサービスを作ってAndroidに乗ってるブラウザに表示させて提供する。
それだとAndroidがいろんな端末とか家電とかに乗って台数が普及すればするほど設けられる可能性は論理的には広がる。
そういう見方しかできないね。
年とって堪え性の無くなった俺がAndroid開発に思うこと
年とるとイカンね。
不備な環境でも将来性を求めて我慢して努力するっていう堪え性が無くなってきている。
Androidもざっと開発本読むと理念や理想、着想、APIはすごく素晴らしいんだけど開発環境がiPhoneと比べるとかなりひどい。
当然ヨチヨチ歩きのAndroidなんだからもう少し我慢してナマ暖かい目で見守ればいいんだけどできない。
例えばGUI一つデザイナとか非技術者の人とインタラクティブに開発を進めていくことができない。スクリーンショット一つ簡単に取れない。純正のUIだけで作るとダサくなる。それを超えようとするといきなりハードルが上がり、しかもそのデザインをブラッシュアップする操作はデザイナがやりにくい。結果開発者がUIデザインを試行錯誤するしかない。なので何時まで経ってもカッコいいUIのアプリが出てこない。
あとすでにOSのバージョンによる分断が起こってる。
最新の2.1と1.6と1.5でほとんど3分割されてるようなシェア。
当然2.1の機能フルに使うと1.6は使えない。
iphone以上にバージョンどこに合わせるか設定難し。
ちなみに日本のHT03AとXperiaは1.6。
最新のGoogle Phoneは2.1。今度SBMで出すdesireは2.1。
あとすでにデバイスの解像度による分断が起こり初めてる。
iphoneにもあるウェザーニューズのアプリがXperia専用として売られてる。
ただなんでHT03Aで入れると日本地図と天気アイコンがずれまくって操作不能。
Xperiaの高解像度がiphoneと同じ解像度のHT03Aと違うから。
Androidって本来iphoneと異なりレイアウトシステムがあるから、解像度に依存しないレイアウトを使用(リニアなやつ)すればどんなに解像度が変わってもシステム側が横幅とか隙間を調節してくれる。でもこれってすぐ思いつく人がいると思うけど、カッコいいUIには決して成らない。例えば縦で決まってるレイアウトを横にするとテキストボックスが横いっぱいに広がったりして間抜けになる。
たぶんウェザーニューズのアプリはそれだとカッコいいアプリができないんで、絶対レイアウトにしたんだと思う。そうなると解像度に依存するよね。ってことだと思う。
でもさ、今のリニアなレイアウトシステムだと、ipadみたいなタブレットにAndroidが乗るときにどうするんだろ??デカイ画面に画面いっぱいにテキストボックスとかボタンが広がって見れたもんじゃなくなるとおもうよ。
たぶんタブレットが入る前に一度大きな仕組みを入れないとAndroidはそのままだとタブレットにならないと思う。
そんなこともあって本当はAndroidのタブレットが欲しかったんだけど、やっぱipadが欲しくなりました。
Appleは3.1から3.2にOSを変えるてわずかマイナーなUI部品の追加だけでうまくiphone osをipadに対応させましたよね。これはすごく手はずが良かったと思う。
こんなことがAndroidにできるのかな?かなり不安ではある。
しかも各社解像度の違うタブレット端末をいろいろ出すだろう。
そうなるとAndroidの考えるのはできるだけ解像度非依存の抽象レイアウトのUIにならざるえないだろう。でもそれって結局絶対カッコいいUIにはならないんだよね。
なので、結論としてAndroidのUIがAppleのように洗練されることはほとんど期待できない。
ほら、ネットブックで小さい解像度で無理やりWindowsのUI押し込んで、結局使い勝手がかなり酷いみたいな。そういうことがあったじゃないですか。それと同じことがAndroidでも起きそうな気がします。
Appleだったらそんな使い勝手悪くなる解像度のMac出さないじゃないですか。
それだけAppleは解像度に関してはうるさいですよね。
で、なんの話だったっけ?
そうそう、やっぱAppleの提供してる環境の方が快適で作り易いんですよね。
調べやすくもあるし。
年とってチャレンジ心とか将来にかけるだけの堪え性がなくなった俺はやっぱiPhoneの開発環境の方が心地いいなってやっぱ思ったです。
ちゃんとすべて計算ずくで提供されてるんです。Appleのは。
若い人は、そんな整えられて管理された環境は嫌だってのもいいんじゃないですか。
僕もオープンソースとかそんな気持ちで参加してました。
itunes connectのreplace binaryでアップロードエラーが出る場合に疑うこと
先日itunes connectからreplace binaryで*.appのバイナリ入れ替え申請の時に、
「The binary you uploaded was invalid. The signature was invalid, or it was not signed with an Apple submission certificate.」
というエラーで怒られた。
色々調べてみると下記のような様々な要因で起こるらしいので要注意。
- 申請しているBundle Version, Bundle versions string, shortとInfo.plistのBundleのバージョンが異なっている(特にアップグレードしたときに注意)。
- Distribution用のProvisioning ProfileかCertificatesの有効期限がどちらかまたは両方とも切れている。
- アイコンのピクセル数が57*57よりも大きいまたは小さい。
- アイコンが24bitでなく8bitだったりしてだめだった人もいる。
この他にもあるかもしれない。
Tech talkといいSoftBankといい今日はiPhone Dayだ
iPhone Tech talkから帰ってきました。
あまりにも眠かったので懇親会に参加せずに帰宅しました。(別におもしろくなかったって事じゃなく個人的に徹夜だった)
結構大勢いたのにびっくりしましたが、いつもお世話になっているアプリの作者の皆さんとか、おそらくMacアプリ開発界の重鎮?の方とかいたのかもしれませんが誰が誰だかわからず。せめて会って挨拶でもしたかったな。
Tech talkの内容はNDAがらみで書けないのですが、午後の部はそれなりだったかなーと思います。アメリカスタッフのプレゼンの方ですね。3つあったんですが、二つ目は個人的に今興味があって自分に足りない方面の話だったのですが、あまりにも広範囲を短時間で詰め込んだので、話を聞いて理解できると言うよりはこういう事ができるのねってことだけ理解してあとは別途かみ砕いていくしかないですね。三つ目は実務的で一番役に立つ人が多かったのではないかな。(やっぱTable周りはこれからはじめるひとの最初の難関なのね。。)
結構寝不足でうとうとしてたんで、所々歯抜けで、おそらく資料がアップされる(されてる?)と思うので、これから見直して復習ですな。
しかし同時刻にSoftBankの発表。
ずっと合間にNatsuLiphoneで情報を追ってました。会場の人もMacBookで情報見てる人が結構いましたね。
ソフバン結構本気ですねー。
ワンセグは個人的に興味ないんですが、Touchでも使えれば妻に与えると喜ぶかも。バッテリー機能は昨日3000mAhの大容量バッテリを旅行用にを購入したばかりなのでちょっと残念。どうせならワンセグだけでなくいろんなメディアを無線LAN経由でiPhoneに流す簡易メディアサーバみたいにすればもっとおもしろいのに。
BB無線LANの無料開放も実はあんまり個人的にはそんなインパクト無いんですが、ソフバンにとってもユーザにとってもWinWinなんでしょね。俺としてはちょっとマクド行くのが増えるかなくらいで。ちなみにTouchとiPhoneの二台持ちの人はTouchでもBB無線LAN無料でつかえるのかな?
ニコニコも個人的にはあんまり興味無い。あんまり見ないんで。でもまだ持ってない人にはYoutubeもニコニコも携帯電話より大きい画面で見れるってのは結構アピールするのかな。ま、ニコニコは当然Touchでも見れるでしょうからiPhoneだけでは無いんでしょうが。
それよりだ、2.2がいつどうなるのかの方が気になるわけですよ。特にマップ周りとか、マップ周りとか。非常に気になるわけです。プッシュノーティフィケーションもどなったの??ま、まだ自信がつくまで出さないだろうけど。Meで痛い目をみたからな。一部クロック数アップみたいな情報もあったりするが、電池の持ちが悪くなったりとか。
とにかく今日一日はiPhoneに振り回された一日でした。
年内から年明けに某会社からアプリを一つの予定。あとは自分の会社名義(ここ)でオリジナル無料アプリを一つ年内に終わらせたいな。
個人的にはCoreAnimationとかOpenGL系の所を少し極めたいなー、と思ってます。
iphone用bookmarklet for Google
iPhone, ipod touchでgoogleを検索する際にはモバイルiPhone用の物を良く使います。
http://www.google.com/m?search
結構、Ajaxを使ってあってよくできていますし、検索結果も別ウィンドウで開くので
それはそれで大変良いのですが、一つだけ問題があります。
ipod touch iphoneでは別ウィンドウで開くページ容量が大きい場合、バックグラウンドの画面が保持されずに白くなる場合があります。なので、検索結果画面からリンクをクリックして別画面でそれをみて、また検索結果画面にもどると、なぜか検索結果が消えていて、ブラウザはもう一度リロードするのですが、このgoogle検索画面の欠点でAjaxにて検索していて、URLに検索キーワードやページ数を保持するデータが入っていない為に、リロードした場合、また検索キーワードを入れる前のインプットボックスだけの画面に戻ってしまいます。
そこで、前にreaderでやったようにリンクで開きたいURLをストックしておいて、後でいっぺんに開く為のbookmarkletを作りました。
使い方は簡単で、検索結果画面でbookmarkletを走らすと、検索結果のリンクを保存用にイベントハンドラに置き換えます。あとはリンクをクリックするとそれがHTML内に保存されます。同時に検索ボタンの脇に「Open」ボタンがつきますので、必要なときにそれをクリックすれば、新しいウィンドウでリンクが複数いっぺんに開けます。
注意点としては、ウィンドウはモバイルsafariの仕様上8個までしか開けませんので、検索ページを除いてあと7個までしかウィンドウをひらけませんので、そこまでたまる前に一度ウィンドウを開いてください。一度開けば、ストックは一度空になりますので、またURLをストックすることができます。
まだ、バグがあるとおもいますし、チェックもあんまりしてません。
bookmarkletはここからどうぞ。
本日2008/7/5バグ修正しました。
iPhone iPod touch用Bookmarkletを作りました
ipod touch用のGoogle readerはAjaxをつかって使いやすいのですが、元のリンクをクリックすると新しいウィンドウで元記事が表示されます。そのときに新しく開く元記事のウィンドウの容量が大きかったりすると、元の readerのウィンドウがバックグラウンドで消えてしまうという現象が起こります。
これがあんまり都合良くないのと、できれば iPhone用のreaderはAjaxでどんどんページを継ぎ足してみていけるので、後で開きたい元記事をまとめてマークしておきたいと考えました。
そこで二つのbookmarkletを作りました。
一つ目のブックマークレットはreaderでsee originalsの元記事リンクを表示させた状態で走らせると、そのリンクをタッチするとそのリンクを開かずにストックするイベントハンドラーを付加します。モバイルsafariで開けるウィンドウは8つまでですので、リンクストックも7個までしかできないようになっています。
もう一つはストックしたリンクをいっぺんに複数のウィンドウで開くブックマークレットです。
なので、使い方としては、readerを眺めていて、詳細画面を出すとsee originalsの元記事リンクが見えます。個の状態で一つ目のブックマークレットを動かして、その後そのリンクをタッチします。するとリンクがストックされたというアラートが表示されます。
readerがsee originalリンクを生成するのは動的なので、see originalリンクが表示されると、その都度それを後で開きたい場合は、一つ目のブックマークレットを動かす必要があります。
最後にいい所でいっぺんにリンクを開く訳です。
ブックマークレットは下記からどうぞ



