2012年8月10日金曜日

情報収集に関するメモ

ここの所、仕事上色々勉強しなければいけない事が多く、情報収集のフローを効率良くする必要があったので再構築を行った。

方法は単純。RSSをGoogleReaderにブッコんでiphoneで暇なときにチェックする。
そんだけ。なんだけど、幾つか新しい発見があったので、メモしておく。

・RSSがサイトに見当たらない場合
wordpressのアップデート情報を取りたいとか、一見RSSが見当たらないので”?”となったが、ソースにfeedのURLが書いてある。良く有るパターンなので、覚えておくと良し。

・iphoneのRSSリーダー
当初、BylineというRSSリーダーを使用していたが、どうも使い勝手がよろしくなかったので、結局safariで見ている。アイコン化すればアクセスも楽だしね。ここは好みの問題。
実際の運用としては、どんどんタイトルだけ流し読みして、気になった物にスターを付けまくるというポリシー。気になった記事は後でブラウザでじっくり読んだり、tumblrにスクラップしたりする。

・AppleのRSS
Appleの更新情報は割と重要なんだけど、探したら小分けにして一カ所にまとめてあった。

結局の所、情報の取得を習慣化する為に、スマートフォンなりを使うのが非常に有用。
ただし、やはり入力には向いていないので、精々閲覧>分類がスムーズに出来る限界。
なので、GoogleReaderなどwebベースのRSSリーダーを活用して後で読む的な使い方をするのが良い様な気がする。

・今後の課題
アウトプットの方法に関してはまだ検討の余地が十分ある。
バージョンアップ情報など、見ても覚えていない可能性が高いので、閲覧性の高い状態でどこかに保存しておく必要があるかもと思っている。

2012年5月14日月曜日

CATextLayer

最近iphoneアプリをチョコチョコとやっております。

案件と平行して、自習がてら何かアプリでもリリースしようかなと思い、適当に何か作ってるのですが、結構機能が豊富だし、扱いが似てるようで違ったり、色々と奥が深いです。

制作ポリシーとして、描画周りはメモリ節約と高速化、管理の簡便さを背景としてCALayerで殆ど処理しています。で、画像を扱う場合はweb上に色々と事例が転がっていたんですが、CATextLayerになると途端に情報が少なくなって、ちょっとした事でドハマしたりしたので、ちょっとメモしておきます。

CALayerはUIView以下にaddsublayerして、描画するレイヤーを重ねることが出来ますが、UIViewの下には基本、一層のレイヤーのみが存在し、そのレイヤー以下にsublayerをaddしていくという仕組みらしいです。(間違ってたらご容赦。)

で、Layerはkeyとかで管理しないと、どのレイヤーがどのレイヤーか良くわからなくなってしまうので、色々とアレなんですが、まだkeyで管理する方法を試してなくて、objectAtIndexとかで、追加された順番毎に設定していたりします。

CATextLayerを使う場合、他にCALayerと混在したりする場合が多そうなのですが、CATextLayerは普通に。contentsとか通りません。内容を変更したい場合は、hoge.stringとかで指定します。

普通、動的に画面遷移せず文字情報を変更したりする場合、UILabelとかを使うのかなと思いますが、一々再描画が必要だったり、なんか気に入らないので、みんなもCATextLayerを使うと良いと思います。

作ったアプリは自作の物は、後々こちらで公開します。

2012年4月19日木曜日

Python 約1ヶ月

今まで、漫然と使えれば良いという感覚で触っていたpythonを本気でマスターするつもりで取り組み始めて早一ヶ月。 何となく、勘所みたいな物が分かってきたので、覚え書きとして、まとめておく事にする。

 書籍
この2冊があれば大抵の事は賄える感じ。

学習の流れ
1、まず漫然とコードを書く。書き始めるまで面倒だが何とか書く。
2、絶対詰まるので、リファレンスを見ながら、必要な所だけつまんで動く様にする。
3、動いているコードを見直す。再検討し、書き直してみる。拡張してみる。
以上の流れで、自分的にはそれなりにお作法的な物は分かってきた感じ。

2週間位で他人のコードが割と読める様になるので、さらに深く掘れる。
 この場合、分からない事は放置しない事。pythonは書き方が画一化しやすいとは言え、同じコードはなかなか存在しないので、人の書き方から参考に出来る所は参考にする。

最初はクラスも関数も無理に意識する必要は無い。
コードを書散らしていくと、どうしても見直し・修正の段で、関数化、クラス化した方が良い所が出てくるので、その際、覚えれば良い事。

その段階まで行くと上記、”エキスパートPythonプログラミング”が非常に参考になってくる。

特に、書き方の面で、リスト内包表記、ジェネレーターの使い方はかなりpythonの勘所の様に思う。 これを理解すれば、クラスの書き方に幅が出来、スマートなコードが書ける様になってくる。

あと、
if __name__ == "__main__":
以下に書く様になってから、非常に見やすく、テストしやすいコードが書ける様になった。

一応githubのアカウントは作ったんだけれども、品質的に、人様の前にお出し出来る様なコードが書けるのはもう少し先になりそうだ。ていうか、思いつくモジュールは大抵既に他の誰かが作ってしまっている。

一先ずは、サーバサイドで色々と動く専用プログラムを量産していこうと思う。
紹介出来る様な物があればココに書いていこうとも思っている。

2012年4月12日木曜日

python "#" の扱い。

twiterぶ¥にハッシュタグ付きで投稿するスクリプトを書く時に、 ”そういえば#ってエスケープ処置しなくていいのかな?”と思い調べてみた。 言わずもがなだが、#はpythonでは一行コメントであり、eclipsなんかでコメント色分け設定などしていると”コレ大丈夫か?”などと言う気になる。 普通、日常で#とか使う機会は僕の場合そんなになかったので、ちょっと調べてみた所、 単純に print '#hoge' で良かったというオチ。 面倒くさくなくてよかった。

2012年3月29日木曜日

XMLのエスケープ文字処理

こないだ作ったスクリプトのデバックしていたら、エスケープ文字が極稀に入り込む事で、XMLが正常にパース出来ない場合がある事が判明したので、対処しましたん。


#不要文字エスケープ処理
def escapeCode(hoge):
 p1 = re.compile(u'&')
 p2 = re.compile(u'<;')
 p3 = re.compile(u'>;')
 p4 = re.compile(u'\'')
 p5 = re.compile(u'\"') #"
 
 q = p1.sub(u'&amp;',hoge)
 q = p2.sub(u'&lt;',q)
 q = p3.sub(u'&gt;',q)
 q = p4.sub(u'&apos;',q)
 q = p5.sub(u'&quot;',q)
 return q
こんな感じ。

もうちょいスマートな方法もありそうだけんど、正規表現あんまり詳しくないので、もうちょっと勉強しないとなと反省。

さくらのVPSリニューアル

らしいのですが、折角構築した環境をどうしてくれるんだと小一時間。

http://vps.sakura.ad.jp/lp/

とはいえ、メモリ容量2倍、ストレージ容量5倍でお値段据え置きは魅力的。
今の用途で、今の動かしている小さいシステム(クローラーを幾つかと、データの集計表示)には全く不足無く、別に弄らんでくれても良かったのに。
まだ、手戻りが出来るうちに移行しちゃった方がいいのかなぁ。と思う次第。

背景にはやっぱりCPIなどの競合が結構イカすプランを出してきているので、そこにぶつけに来た感じなんでしょうね。
でも、さくらはバックボーン回線はホントに早いからなぁ。クロール早い早い。

という訳で近日中に”はじめて”のシステム移行予定です。

2012年3月20日火曜日

Google Sites APIsの使用時の注意

ちょっとハマったので忘れないうちにメモ。

Google Sites API は取りたいデータの種類で指定するURLが違うのだ。

具体的には

コンテンツフィード
https://sites.google.com/feeds/content/domainName/siteName/[contentEntryID]
リビジョンフィード
https://sites.google.com/feeds/revision/domainName/siteName/contentEntryID/[revisionEntryID]
サイトフィード
https://sites.google.com/feeds/site/domainName/[siteName]
aclフィード
https://sites.google.com/feeds/acl/site/domainName/siteName/[aclEntryID]
アクティビティフィード
https://sites.google.com/feeds/activity/domainName/siteName/[activityEntryID]
こんな感じで指定するURLを変えないと狙ったデータが取って来れなかった。
コンテンツの中身を取りたいのにサイトのURLを指定してても変な値しか帰ってきません。

コンテンツはコンテンツの中身。リビジョンは更新履歴をサイトごとに。
サイトフィードは、サイトのサマリーを取ってきます。
aclはアクセスコントロールリストの略で、サイトオーナーとか権限の設定や参照です。
アクティビティは、閲覧履歴とかですかね。

詳細はコチラ。