40歳からのキャリアチェンジ

20代はエンジニア・PM、30代はWeb系エンジニア向けのキャリアアドバイザー。40代の今はフリーランスで開発含めて色々やってます。技術ネタとしてはRuby/RailsとJavaScript関連あたり

2011-01-01から1年間の記事一覧

JBしたAppleTV(2G)にradiko導入作業中

会社のブログの方でAppleTVを○○するとNASから直接音楽や動画を再生できるよ!というエントリ書いたのですが、ちょっとしたことがきっかけで以下AppleTV(2G)をJB(脱獄)しました。上記リンク先の会社のブログでも触れていますが、元々はNAS上の音楽データをM…

画面遷移で最初・最後のページにたどりついた処理に悩み中

前回のエントリから2週間近く更新滞った理由というのは画面遷移で最初・最後のページにたどりついた処理に悩んでいるから。ButtonBarとして配置したボタンをクリックした時にイベント発火されて、該当のページに遷移するんだけど、そのページの表示が完了し…

051-Stateパターン使って画面遷移のロジック考える

前回の記事をベースにして、Stateパターン適用しようと思い骨格となる部分だけ考えてみました。デバッグし易さを優先したいので、Titanium Mobile固有のAPIを利用せずGoogleChromeの開発ツール上で動作確認してます。 var Page = function(page){ this.event…

マリオでStateパターン! 〜JavaScript編〜

先日書いたエントリで 現在のページ数チェックとどのボタンクリックしたのか判定しているため基本同じようなコードが存在して、スパゲッティコードになりそうなので、この部分の設計をしっかりしておかないと、後々大変になりそうなので、ここはちょっとじっ…

050-エントリ一詳細ページのイベントハンドラの処理その3

Googleの検索で、「Titanium xxxx」みたいな感じで思いつく限りのキーワードを入れて関連しそうな情報をチェックしたり、Githubでお手本になりそうなソースを探したりと色々なことをやってきて、これ以上進展がないかなーと思ってました。そんな状況の中で、…

049-エントリ一詳細ページのイベントハンドラの処理その2

Titanium Mobileで開発初めて、関連するエントリについては001から連番ふってきたけど、あと1つで50エントリ。自分の当初見込みでは30エントリ位でとりあえず形になるものを作る予定だったけど、全然見積もりが甘かったなーさて、ここから本題。先月書いた…

GW振り返り

全然ブログ書いてなかったので、とりあえずGWの振り返りを。 前半は散々でした・・ GW前半は、うちの娘が嘔吐した後に、高熱(39度超)&下痢という状況で、その看病やら家事やらに追われて、娘が回復したら今度は自分がちょっと調子悪くなるという感じで日…

048-エントリ一詳細ページのイベントハンドラの処理

前回のエントリでボタンクリック時のイベントハンドラの処理で実装しないといけない点がいくつかあるとメモしておきました。 一番新しい/一番古いエントリかどうか判定した上で、適切なボタンを配置 エントリ一覧画面生成する際に、Ti.UI.createTableViewRow…

047-各エントリの画面遷移について考える

画面イメージについての考え BylineのようなGoogleReaderクライアントのような画面遷移出来るようなUIをどうにか実現できない考えています。 アプリケーション起動時にはエントリ一覧を表示(※下記画面キャプチャ1) エントリのタイトルをクリックすると、…

046-SQLite活用したJSON形式のファイルの保存・読込処理

SQLiteを活用してJSON形式のデータを保存できるようになったので、今度は読込について考えました。 実装方法に最初はまる SQLiteに保存する時に //省略 var res = this.db.execute( 'INSERT INTO entries (blogger,permalink,title,html_body,post_date) VAL…

045-MVCのControllerの役割を見直すその4

まず現在のJSONフォーマット 以前書いたエントリでは投稿した日付をIDとして活用すればいいかなぁと考えていたものの、何となく処理をやりづらそうな何とも言えないモヤモヤ感がしてました。twitterのAPIで返すJSON形式を眺めていたら、下記のような形式が良…

adizeroクツカスで借りた4足履き比べまとめ

アディダスが5/31までの期間限定でクツカスというシューズレンタルサービスを行っています。この前の木曜日にシューズが届いたので時間が許す限り履き比べました。元々買う気は無いですが4足履くとこの中の1足くらい買おうかなという気持ちになるので、アデ…

044-Crawler実装しなおす

昨日書いたエントリでふれたようにサーバ側のJSON生成部分から見直すことにするため028-Crawlerは一応完成というエントリで触れたCrawlerから手をつけました これまでのCrawlerと今後実装するべき処理検討 あすなろブログの各エントリ情報を取得する際に ブ…

[Titanium Mobile][javascript][あすなろBLOG Reader]043-MVCのControllerの役割を見直すその3

Controllerを見直すうちにどんどん深みにはまっている感じがします。(苦笑) キャッシュファイルの読み取りを考える仕様を考えるうちに深みにはまってきた テストコードを test("load Entry cache", function(){ var c = new Controller('hibi'); c.init();…

043-MVCのControllerの役割を見直すその2

今までEntryクラスでエントリ一覧のキャッシュの保存と読み出しをこんな感じするようにしていました Entry = function(){//略}; Entry.prototype = { saveCache:function(json,page_number){ /* ブロガー名+現在のページ数.jsonというファイル名で ローカル…

042-MVCのControllerの役割を見直す

エントリ情報をローカルにキャッシュすることは出来て、これで完成間近・・・と思ったのですが「Aというブロガーは何ページ目まで読み込んだのか誰(=どのクラス)が管理するべき?」という部分で疑問が出てきました。Entryクラスは、エントリ情報を管理す…

041-エントリ情報をローカルにキャッシュする処理実装しました

前回のエントリで下記のようなことを書きました。 ※このブログを書き始めてコード読み返していて気づいたのですが、ローカルのキャッシュ処理する際にブロガー毎にキャッシュするようにしてないから、この部分は別途書きなおす必要が有る。。 Titanium.App.E…

040-insertRowAfterは利用せずTableView.setDataを活用するやり方に切り替えました。

タイトルそのままですが、insertRowAfterにこれ以上固執してもうまくいかない気がしてきたので違うやり方を検討しました。 TableView.setData(data)を活用した処理の流れ 自分はまだ1.5.1使っているのでこのTitanium Mobile のAPIドキュメントを改めて読んで…

039-insertRowAfter使った処理がうまくいかずにはまってます

CreateTableViewのreceive()は、エントリ一覧のオブジェクトに加えて、iPhone上で何ページ目が表示されているのかそのページ数を受取、2ページ目以降ならば、TableViewのinsertRowAfterメソッドを使って、rowを動的に追加しようと考えました。結構簡単にでき…

地震があった日のことを振り返る

地震発生から数日経過しましたが、日に日に被災状況の深刻さを知って今回の地震の凄さというのを実感してます。あの日の出来事&その時の心境についてまとめておこうと思います。 地震発生した時、どこにいたのか 「地下深いところ(*)」にいました。ここ最近…

038-MVC的に分割しはじめました

Titanium Mobile使ってアプリ作るときに、MVC的にクラスをわけるのがどこまで効果があることなのか正直わかっていません。ただ、下記2点を考えると、個人的には「アリ」かなぁと思っています。 今つくっているアプリ以外にも、GoogleReaderとかGitHubリーダ…

037-次のxxx件を読み込む処理の実装は半分完成

実際に実装しはじめると自分のスキルの無さを痛感してます。。。簡単に出来ると思ったけど最後の最後でうまくいかないのでその点についてまとめておきます 処理の流れについて簡単 アプリ起動。5件分のエントリを表示 「次の5件を読み込む」という箇所をクリ…

036-次のxxx件を読み込む機能について考察

RSSリーダーのようなアプリの場合、起動時に数件読み込み、ボタンクリック等のイベントをトリガーにして次のxx件を読み込むというのはよくある処理だと思うのでこれについて考察してみました そもそもaddEventListenerはどこに仕込むのか 自分は最初この部分…

035-iPhone側のページング処理考える前に記事一覧→記事詳細表示の実装を行う

記事一覧から、記事詳細情報を表示する Sinatraで生成したJSONをxhrで読み込み→TableViewで記事一覧生成→clickイベントで、記事詳細情報に画面遷移までやっと出来た! twitterより とtwitterでつぶやいたように下記のような画面遷移する処理までは出来てまし…

034-Mongoidの機能を活用してページング処理実装

ブログを閲覧するアプリに欠かせないページング処理(paginate/pagination)について調べて、実装をしているのですが、思ったように作れないこともあってしばらくブログ更新滞ってしまいました。ページング考える上で、サーバ側、クライアント側のiPhone双方…

033-今度はUnable to parse JSON stringのエラーにはまる

Unable to parse JSON string MongoDBに格納した情報を、Sinatra + mongoidでJSON形式で出力するところまでは出来たので、これを読み込むような処理をするためにこんなコードを書きました var Blogger = function(){ this.httpclient = Titanium.Network.cre…

032-undefined method `bytesize' for xxxxにはまる

JSON形式の出力は単に object.to_json でOKというのを知って、「おー、これならあっという間にできるなあ」と思ってapp.rbに get '/api/:name.json' do blogger = params[:name] @items = Entry.find(:conditions => {:blogger => blogger}) @items.each do …

031-Sinatra+MongoDBでブロガー情報

あすなろBLOGを巡回するcrawlerは出来たので、JSON形式で値を返すWebアプリが必要なので、Sinatra使って実装し始めています。 どんな仕様にするか http://xxxx.xxx/api/yokota.json http://xxxx.xxx/api/oohashi.json : という感じで、 /api/ブロガーの名前.…

030-Google Readerのスターアイテム一覧を取得する

しばらくサーバーサイドの開発してて、Titanium MobileをいじりたくなってきたのとGoogle Readerから情報取得するコードをちょっと見直していたので、試しにGoogle Readerのスターアイテム一覧を取得するコード書いてみました。 //google_account.js var Goo…

029-クロール状況を管理する方法について試行錯誤

各ブロガー別にサイトの更新状況をチェックするクローラーを動作させるという仕様を考えているため、どこまでクロール済かを管理する仕組みを作る必要があるかと思っています。処理を待つ一連のジョブを管理するクラスとしてひとまずqueueというクラスを作り…