2012年12月31日月曜日

Automatorを使ったお手軽ファイル変換

Automatorを使った超お手軽なファイル変換の使い方です。
サイズを変えなくていいからpngをjpgに変換したいって事ないですか?
僕の場合ちょいちょいあって、一々fireworksとか立ち上げてバッチ掛けたりしていたのですが、Automatorでもっとお手軽に出来る方法があるのでご紹介。
フォルダアクションを作成して、下記の通り”イメージのタイプを変更”でJPGに設定します。これだけ。あとはこのフォルダにpngを放り込めば、中にJPG画像が生成されます。
お手軽でしょ?



他にも動画を弄る時に、mpeg4とかだと、編集ソフトの負荷がやたらと高かったりするので、作業前に一回MOVに変換してたりします。こういう作業もフォルダアクションで一発です。


こういった定型作業は一旦つくっておけば、割とサクサク作業出来るので、オススメです。
5分で出来て、時間短縮効果が大きいので、トライする価値は十分あると思います。

2012年12月30日日曜日

物理メディアって結局無くならねーんじゃねーの?

先日のブックオフでCDが安いよっていうエントリに関連して。

今年2012年は、待望の日本版kindleストアが登場など、前々から言われていた”電子書籍元年”がついに現実の物となった一年でありました。

で、10月にオープンで12月にやっとこ端末が出そろった状況で、思う事が幾つか。

結局、電子書籍はCDメディアと同じ様な感じになるのではないだろうか?


現時点でCDは衰退してます。でも、CDというメディアがいつかカセットテープの様に絶滅するかと言われると結構疑問です。理由は幾つか有るのですが、結局、パソコンを持っていない層が居る限り多分無くならねーんじゃねーかなと思います。但し、採算が取れなくなってプレイヤー(再生する機械の方ね)の入手性が著しく下がったりする可能性も否定出来ませんが、一応相当普及したメディアフォーマットなので、まだまだ大丈夫な気がします。レコードプレーヤーもまだ生き残ってるしね。それに、今まで流通した分が膨大なライブラリーとして機能するので、プレイヤー市場はある程度安泰なのでは無いでしょうか。で、あくまで予測なんですが、データ形式での流通が増えるに従って、相対的に物理メディアの流通数が抑えられてしまい、ある時点から物理メディアの希少性が高くなって行く傾向が出てくるんじゃないかなーと思ってる次第です。データのみの流通ってずっと残ると思いがちですが、100年スパンの長い目で見ると実はそんなに信頼出来るもんじゃないんじゃないかなーと思ってたりします。その点物理メディアは再生ハードさえ有ればいいんで、割と信頼性高いんじゃないかなと思います。

さらに、紙メディアに関しては再生ハードは不要です。なので、実は紙メディアの方が長期保存に向いてるんじゃないかなーと思ったり。

まずは文庫本から無くなる。


今日、本屋行ってビックリしたんですが、既に文庫本コーナって縮小してるんですよねー。本屋って案外動きはえーんだな。でも言われてみれば、青空文庫でタダで読めるのに文庫で500円とか取ってんだもん、そりゃそこのスペースいらんがなって話になりますよね。
文庫本ってのは基本的に廉価版なんですよね。文庫でしか出てない本ってのはそれ相応なんですよ。
で、本当に好きな本ってハードカバーで欲しいじゃん?いらない?読めりゃ良いってんなら電子書籍で十分だし、ホントに好きならハードカバー買えば良いじゃんで、電子化で一番影響受ける所が文庫なんでしょうね。
という訳で、文庫から先になくなるんじゃないかなーと思ったりしてます。あと、新書とコミック。

多分、今は移行期間


電子書籍は売れないとか何とかっていう言説を良く目にしますが、それってプラットフォームとして未熟だからじゃないかなと思ってます。なので、プラットフォームが成熟するにつれて、電子書籍自体の売り上げは伸びて行くんじゃないかなー。でも、書籍全体の売り上げ自体は変わらないと思うので、そうなると一番割りを食うのが町の本屋さんだったりします。町の本屋さんが潰れたらやだなーと思う方は、是非、アマゾンでポチらないで、アマゾンで検索した欲しい本を町の本屋さんで注文する習慣をつけて下さい。

便利さには勝てない。


さっき言った事と矛盾するんですが、確かに電子書籍とamazonは便利です。便利すぎます。
はっきり言って本屋さんに出かけるよりアマゾンで買った方がコストも安いし、全然いいんですよ。
大きな流れとしては、出版社は移行期間で一旦落ち込むけど、電子化に上手くシフト出来れば現状は維持出来る。
文庫とコミック、新書を扱っている出版社は電子化の恩恵が大きい。というのは恐らく既定路線です。
で、割を食う本屋さんなんですが、努力次第では目があると思います。
その努力なんですが、結局、どれだけレコメンド出来て、顧客の信頼感を得られるかじゃないかなーと思います。
現状でもハズしてない本屋さんには頻繁に様子を伺いに行きますし、実際手に取って内容を見られるのは大きいです。
本屋さんの無い町って、ちょっと悲しいじゃないですか。なんでユーザーもちょっと意識する必要もあると思うし、本屋さん自体にももっと魅力ある店舗作りをしてほしいんですよね。


ウチは親父の教えで”本屋に言ったら手ぶらで出てくるな。”と言われて育ったので、応援する意味でも何か買って帰りますよ。なので、とりあえずハヤカワのSF文庫だけはなくさないで下さいおねがいします(こないだ無くなってて愕然としました。)

2012年12月29日土曜日

Automatorでファイルのリネーム

フォルダアクションでドロップされたフォルダ内のファイルに接頭語を付けるAutomatorです。
まず、フォルダの内容を取得して、変数”記憶装置”に入れます。で、ココがキモなんですが、記憶装置に入れたら、その流れを下に配置した”テキストの入力を求める”に結合させない事。
これを結合させてしまうと、なぜか”テキストの入力を求める”の欄に自動的に変数”記憶装置”が入ってしまいます。
Automatorを使う上でのお約束みたいなもので、変数を入力したら、一旦流れを切ると良いみたいです。

で、ここから下はテキストの入力を求められたら、そのテキストを接頭語として、ファイル名にテキストを追加しています。

実際の動作としては、アクションを設定したフォルダに、画像の入ったフォルダをドロップするとダイアログが出て、ダイアログに入力したテキストが、フォルダ内のテキストに接頭語として付与されるという簡単な物です。 まずは基本という事で、紹介しました。

恐らく次もAutomatorの話題です。

2012年12月28日金曜日

Automator再考

一時期ちょっと使ってその重さに辟易して暫く使用を控えていたAutomator。
最近、僕の中でまた再評価する出来事があったのでそのメリットについて語りたいと思います。

スクリプトなどでは無く、Automatorを使う大きなメリットが3つあります。
・定型だけど少しだけ判断が必要な作業に強い。
・コマンドラインを使わなくても良い。
・開発(って程でも無いけど)が早い。
これらのメリットを順を追ってみてみたいと思います。

・定型だけど少しだけ判断が必要な作業に強い。


 先日頂いた案件で、CMS上で画像管理の際、フォルダを使用上分ける事が出来ないという事態に遭遇しました。
手元にはフォルダ分けされた大量の同名で内容の違う画像ファイル。
さてどうしたもんかなーと思ってたのですが、ここでフォルダアクションを使用したAutomatorが活躍しました。
フォルダに画像を放り込むと、ダイアログが出て、そこに入力した値を接頭語として一括で付けてくれるという物です。
スクリプトで書いても良かったのですが、恐らくもう使わないだろうし、何より早く出来そうだったので、こんな感じになりました。このフォルダアクション自体はテスト含め10分程度で動作して、直に編集するよりも余程作業が早かったので、重宝しました。
考え方自体は他にも応用が利く様な気がしています。

・コマンドラインを使わなくて良い。


上記の様な作業を人に振りたい事ってありますよね。スクリプトで作っちゃうとコマンドライン叩ける人にしか安心して振れないんですが(実際はそうでもないんだけど、ちょっと不安)フォルダアクションまで落とし込めれば、小学生にも任せられます。これって実は結構メリット大きいんじゃないかな。

・開発が早い。


さんざん言われてるんですが、Automator自体は複雑な事をしようとすると大変です。
でも、簡単な事をサクッと作るのは結構向いています。
特に人間の目で判断してコンピューターで処理し易い様に加工するなどは割と得意なので、データの下処理など重宝します。
単発の作業でなく、工程の一部として上記に挙げた様な物を作って、人での作業を減らす事が出来れば、ミスも減りますし、誰にでも出来るので良い感じなんじゃないかなーとか思ったりしています。
スクリプトなどと住み分けて組み合わせる事でさらに威力を発揮するので、これから積極的に活用して行きたいと思います。

という事で、次からAutomator関連の記事を幾つか挟んで行く予定です。

2012年12月27日木曜日

iPhone5でのデザリング設定について

いま、仕事で主に使っているPCが2台あって1台がMacbook Air"11で、もう一台はちょっと古い白いMacBook(2009)なのだけれども、白MacBookの方は入れている環境の関係から、OSが10.6.8と若干古めでの運用になってます。

白Macの方は最近あんまり稼働してなくて、特定用途(動画編集、音楽編集など)は容量があってビデオチップの性能が良くてメモリが潤沢に積んである白Macでの作業にしています。

で、ここからが本題。

最近AUのiphone5にして、2台持ちだった携帯が1台に出来て、モバイルルーターともおさらばだぜーと思ってたら、どうもmacOSのバージョンが古いと、iphone5を繋いでもインターネット共有してくんないんですよねー。
多分、ケーブル接続不可。で、wifiもそもそもデザリングしようとしないので中々うまく行きませんでした。
色々試行錯誤した結果、以下の感じに落ち着きました。

bluetoothからの接続であれば、iphone5のデザリングが使用出来るよ。

まずは、設定メニューから”インターネット共有”の項目をオンに。


MACからbluetoothでiphoneに接続します。


ちょっと厄介なのが、ケーブルを刺したときだけ、wifi経由の共有もしくはbluetoothの使用を聞かれるんだけど、これで一旦ケーブルのみの接続に設定してしまうと、次にこのダイアログが出て来るまで、bluetoothでの接続を行っても共有が出来ないので、出先でケーブル忘れてしまって、iphoneにbluetooth経由で接続したい場合など結構困ります。結論としては、”ケーブルは常に持ち歩け”。あとwifiでの接続はあんまりオススメしないかなー。周りから丸見えだしね。デフォルトだと名前とかモロばれですんで。


そんな感じで、一応快適な通信生活を送れる感じです。という訳で、月額¥1,400程度で寝かしてあるポケットwifiとはそろそろおさらばかなー。って感じです。てかパンテック製の端末なんでマジ出来悪いんでイライラするのです。

2012年11月21日水曜日

SCSSのNetbeansでの導入方法(Mac)

そろそろこういうのにも手を出さないとなーと思ってちょっとやってみました。

Netbeansでは、プラグインが既にあるので、導入は簡単です。

ツール >> プラグイン

でプラグインウインドウを開いたら
”使用可能なプラグイン”のタブから

Scss Editor

を選んでインストール。NetBeans再起動で、プラグインがインストールされます。
これだけでは動かないので、SASSのコンパイラを入れます。
Rubyで作られているらしいので、通称”黒い画面”ことターミナルから
sudo gem install sass

でインストールが始まります。(macの場合ね)

で、Netbeansに戻って、環境設定の”その他”のタブにSCSSのタブが増えてる筈なので、そこに
/Library/Ruby/Gems/1.8/gems/sass-3.2.3
などと、先ほどの黒い画面に出てたパスでsassのインストールされているパスを追記してやれば、動きます。

使い方
今まで作ってた.cssファイルの代わりに
.scssという拡張子のファイルを作成します。
ここにsass形式でスタイルシートを記入すると保存の時、勝手に”scssファイル名”.cssが生成されます。
変数が使えたり入れ子で書けたり、結構いい感じなので、使ってみるといいんじゃないでしょうか。

2012年11月20日火曜日

音楽著作権とCD

ブックオフでCDが250円とかで投げ売りされているのを見るのが好きです。

iTunes Storeとかを見ていると、おんなじアルバムが¥1,500くらい。
もうあんまり覗く事も無いけれど、町のCDショップで同じアルバムが¥2,400とか。名盤だと¥980とかもあるけれど。

ブックオフの¥250のアルバムは、多分買い取り50円しないくらい。もしかしたら値段付かないかもしれないです。
結果、iTunesで買うよりも、現時点で一番お得なのが安くて物理メディアまで手に入るブックオフだったりします。
この値段の差、価値の差ってどこから来るのかちょっと考えてみました。

CDの正規の値段は
制作原価+パッケージ原価+流通コスト+販売店の利益
で成り立ってると、ざっくりと仮定します。印税とかは制作原価に込みね。

一方iTunes Storeの価格は
制作原価+Apple税(流通コストなど込み込み)
そりゃー、iTuneの方が安く出来るよね。一方ユーザーは安い代わりに手元に物が残らない分、損してます。
(損と捉えるか、”物理メディアなんていらねーよ”と考えるかは個人の自由ですね。)
だたし、商品の性質としての”曲が聞ける”という本質は損なわれてないです。

一方ブックオフの価格は
ユーザーからの買い取り価格(原価)+ブックオフの売り上げ
すごいよね、このビジネスモデル。権利者にお金が行かないのが問題視されてるけど、流通コストすら掛かってない。
この場合一番損してるのは、ブックオフにメディアを売ったユーザー。買った価格ー買い取り価格の分だけ丸々損してます。捨てるよりもいいけどね。
でも、この場合とても不思議なのは、
 ・CDはユーザーの聞く権利を買う物とした場合、ブックオフに売った場合はブックオフが権利者になるのか?
 ・CDを売ったユーザーはブックオフに”聞く権利”を譲渡したとしたら、その譲渡は正当な物か?

ブックオフの場合、CDをあくまで物理的な”モノ”として扱ってるので、フツーに売り買いしてますが、モノの値段が殆ど権利料だった場合、このビジネスモデルってどうなの?っていう気がします。

流通がCDだけの時代ならば全く問題ないんだけど、別の形での販路が出て来て、音楽の扱いが”モノ”では無く、”ライセンス”になったので今まで見えてなかった問題点みたいな物が浮き彫りになった感じです。

その安い理由が、権利者に正当に利益が行っていないなど、色々問題を孕んでいますので、そのうちこのビジネスモデルは何かしらの規制が入りそうな気がするので、激安CDの棚に欲しい物がある場合は今のうちに買っておくと後でいい事があるかもしれません。

2012年9月13日木曜日

BCD2000

かつて、Tractor Proでシコシコ自宅DJをしていましたが、どうもフィジコンに高いお金を出す気にはなれず、

「そんなもん、人間の方を最適化すりゃいいんじゃーい!」

とか言いながらキーボード操作で何とかだましだましやっていたのですが、フェーダー操作だけはいかんともし難いんですよね。あとツマミ。
安く上がる方法を色々考えた挙句、Behringer BCD2000とかを安く買っては見た物の、これが大失敗。
ツマミがいっぱいあるし、安いしいいかなーとか思ったら、早いクロスフェーダー操作をすると、ソフトが追随出来ず、認識しなくなります。こうなると再接続しないともうダメ。全く使えませんでした。厳密に言うと早く動かさない様に慎重に使えば使えない事も無いかも知れません。

憶測なんですが、恐らく、USB-MIDIのハード側で、信号を一旦ロストしてしまうと、フリーズするという仕様なのかと思います。多分、フリーズしないフィジコンとかはその辺きちんと考えられてるんですよね。

ですが、ハードだけの所為なのかちょっと疑わしいと思うのが、一応BCD2000はAblton Liveの操作では落ちないのです。なので、ツマミがいっぱい有るのを利用して、Liveでのシンセパラメータとかエフェクトパラメータ弄り用として、現在活躍中でございます。
ちょっとデカいし、作りもパカパカしてるんですけどね。ツマミの多さだけは自慢できる感じです。

一応、windows環境だとオーディオインターフェース兼用で使えるんですが、macだと有志が作ったmidiドライバしかありません。多分この辺が怪しいんだろうなー。
Macで使えない為、人気が無かったのか、たまにオークションでビックリする値段で出てたりします。が、作りがペラッペラなので、中古のタマもあんまりオススメ出来無いかなー。一応、後継機のBCD3000はmacでオーディオインターフェースとして使えるみたいです。安いのでコスパは非常にいいですね。
てか、PCDJのフィジコンにお金あんまり掛けられないです。だって高いんだもん。

2012年9月12日水曜日

Audio4DJの使い方アレコレ

4in-4outが使えるので、これが有ればこんな事ができるかもねっていう提案です。

1,Send-Return的な使い方

DJソフト向けのAudioInterfaceなのですが、Lineレベルの入力機器であれば、普通に使えます。で、DAWのアウトを一つSendとして利用して、エフェクトを掛けて、Returnに戻せば、いいんじゃね?の使い方を考えました。

具体的にはこんな感じ。
何らかのDAWで、A-outに再生トラック。B-inが録音トラック。上記の様な接続にしてあげて、 monotribeのAudioINをエフェクター的な使い方をする方法でやれば、スライス、フィルターを掛けた状態で、Bchにトラックを録音出来ます。
上記はTractor向けのセッティングでiphoneはDAWとのシンクをする為にkorgのiphoneアプリで同期を取ります。
DAWの場合は、A-chのアウトからシンク信号を出して同期してあげればより簡単かも知れません。
あと、Ach,Bchともにステレオなので、send-returnがモノラルで良い場合は2系統使えるという何ともお得な仕様です。
monotribeは一例でboseのマルチでも何でも良いし、今流行のrmx1000なんかだとドンピシャなのかも知れません。

ちなみに一つ注意として、B-outはヘッドフォンアウト兼用なので、この使い方だとmonotoribeへの戻しとしては、使わない方が無難かも知れません。

2,モニター系統の分離

使い方あれこれって書いたからにはネタが一個だけって言うのも心苦しいので、もう一つ。mixの時にA-outをマスター出力に使用して、B-outをチャンネル出力にするという方法です。こうすれば、外モニターはトータルのmix。ヘッドフォンで各チャンネルを確認っていう使い方が出来ます。って、あれ?これ割と普通の使い方?

アレコレって書いといて二個しか出なかったですが、参考になりましたでしょうか。
現行だと、audio6とかaudio10とか出てますので、もっと高度な使い方が出来るんでしょうね。

Audio4DJ考察

随分前に、tractor proが激安でアップグレード出来るとのキャンペーンに釣られて、Audio 4 DJを買いました。 Native Instruments AUDIO 4 DJ

バスパワーで動作するAudio Interfaceは初めてだったので、重宝するかなーと思ってたんですが、なんだか入力レベルがラインレベルでは過大入力で、使えねぇなあと思いながら、ラインでPCの音を出したい場合だけ持ち歩く感じでした。(ラインアウトは普通に使えた。)
割と無駄な買い物したなぁ。けど、筐体の質感や出音自体は良いんだよなぁ。Audio Kontrol1でも買い直そうかなぁ。と思っていた矢先です。 別件で調べものをしていたら、驚愕の事実が発覚です。

 *当製品はソフトウェア経由でインプットレベルの変更が可能です。 

 な、なんですとー! 

 という訳で、早速やってみました。アプリケーションフォルダからNIのソフトを探すと”Audio 4 DJ Settings” ってのがありましたよと。 ちなみに環境はmac。多分winでも同じ。

んで、左下のinput modeを使いたい奴に合わせるだけ。ヘッドフォンレベルだとphonoの0dbくらいで丁度いいです。デフォルトだとVinal controlになってます。これが入力おかしい原因だったんですねー。

これで、iphoneやmonotribeやDS-10からPCに手軽に録音出来る環境が整ってしまいました。入力4CHなので、シンクしたDSからの録音とか余裕です。

今までなんと無駄な使い方してたんでしょうか。このサイズで、ガンガン持ち歩いても壊れなさそうな筐体で、バスパワー動作なのは結構魅力的です。余計なinとかmidiとか付いてないのも良いです。キャノン入力出来るとどうしても筐体デカくなっちゃうしね。

てか、この製品、オークションでも殆ど見かけません。あんまり売れなかったんだねー。
案外使い易いので、安く売ってたら検討の余地はありますよー。

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はアクセスコントロールリストの略で、サイトオーナーとか権限の設定や参照です。
アクティビティは、閲覧履歴とかですかね。

詳細はコチラ

Google Appsの2-legged oauth

Google Appsのデータに外部からアクセスしたくて、色々調べていたら、2-legged oauthと言う方法がスマートという事が分かり、色々試してみた。

他の認証方法は
・SSO(シングルサインオン) Apps側での設定が煩雑
・OpenID    よく調べてないけど却下。
・Oauth     2leggedと3legged

んで、何がしたいかって言うと、
pythonのスクリプトから、Appsのデータにアクセスしたい。
の用途では、やり取りの手順が少ない2-legged oauthがスマートという判断。

Googleコードからサンプルスクリプトを引っ張ってきたのがこんな感じ。
import gdata.gauth
import gdata.docs.client

CONSUMER_KEY = 'example.com'
CONSUMER_SECRET = 'abc123doremi'
requestor_id = 'any.user@anydomain.com'

client = gdata.docs.client.DocsClient(source='yourCompany-YourAppName-v1')
client.auth_token = gdata.gauth.TwoLeggedOAuthHmacToken(
    CONSUMER_KEY, CONSUMER_SECRET, requestor_id)

# Retrieve user's list of Google Docs
feed = client.GetDocList()
for entry in feed.entry:
  print entry.title.text

そんでもってCONSUMER_KEY,CONSUMER_SECRETには、Appsのドメイン管理>高度なツール>OAuthドメインキーを管理するの所から取って来た、自分とこのドメインとシークレットキーを入力。

pythonの実行環境にeasy_installでgdataなるgoogle data APIを叩く為のモジュールをインストールしないと上記のコードは動きませんのであしからず。

実際に試したみたのですが、幾つかの設定の注意点があるのでそのままでは動きません。
ハマった点を箇条書きに。

・google appsでは動きません。(google apps for buisinessじゃないと駄目)
・サーバ側の情報をwebアプリケーションとしてgoogleに登録する必要があります。
・サーバ側でHTTPSの通信に対応してないと動きません。
・google apps側でもAPIを動かす許可が必要です。

という訳で、必然的にローカルでは正常な動作検証出来ませんし、普通のレンタルサーバでもモジュールの追加の関係で厳しいんじゃないかな?既に何らかの形で公開しているサーバで、root権限持ってるサーバが無いと駄目なので、その時点で結構敷居高めな感じです。
幸い、先日動いたサーバの方で動作検証出来たので事亡きを得ましたが…。

認証さえ通ってしまえば、後はほぼフルコントロールなので、結構色んな事が出来ます。
けれども、要は使い道って感じですね。
でもgoogle appsってまだまだニッチなんだよなぁ。便利なんだけど、エクセルとかに慣れた人とかだとほぼ覚え直しになっちゃうので、その辺が敷居高いのかなぁ。
スタートアップとかだとこんなに便利で低コストなモノ、他に無いんですけどね。

2012年3月15日木曜日

クソはどんなに煮詰めてもクソでしかない。

こんなニュースが。ちょっと気になったので。

年金システム開発が1年以上停滞


元の構想がクソならば、どんなにこねくり回した所で、それはクソでしかない。
既存の運用の仕組みがクソならば、そこを変えないとどうしようもないという好例。
ベンダーどうこう、マネージメントどうこうでは無く、運用の問題であり、ひいては国民の問題である。
そんでもって、一人で何か変えるには問題が大きすぎるのも事実。
どうなるのでしょうか?

個人的な感想なのだけれども、良く出来たシステムを先に作っちゃって、その上で年金を動かす仕組みにした方が余程マシなのではないかなと。実際、色々と後付けで変更するのでこういう事態になる。その何だか良くわからない仕事やコストって無駄な仕事でしかないよね。
ていうか、社保庁のやり方は卑劣でしかなくて、面倒なフロント業務は全部外注。で、解体の原因になったグダグダぶりには一向に手をつけた気配無く、なんとなくミンナ忘れるまで大人しくしてる雰囲気。こういう役所に何かさせる位なら、全部コンピュータにやらせた方がまだマシ。

2012年3月11日日曜日

インストールしたモジュールのメモ

BeautiflSoup
Tweepy
pip
flask

※メモなので書き散らかし。失礼。

さくらVPSでpython2.7にしてみた。

さくらVPSはCentOS5.5で入ってるpythonのバージョンが2.4系です。
このままだとimport JSONとか出来ないので、不便だし、開発ローカルと環境を合わせないと何かと不便なので、2.7にアップデートします。

ちなみに、OSX Lionのpythonのバージョンはデフォルトでは2.7です。
(GAEとか視野に入れた場合、微妙に使いにくいのか?)

参考にしたのはこちら。
http://d.hatena.ne.jp/hateka/20110923/1316799206

詳細書くのはめんどくさいので注意点のみ補完です。

2.4の時にツール系を色々、setup.pyしていましたが、2.7にした後、全部やりなおしです。
先にバージョンアップしておく事をオススメします。

パスの構成がいまいち不理解なところがあり、Cronで叩いたスクリプトがうまく動いてくれない事態に遭遇しました。よくよく調べると、cronで叩いてたのが2.4のインタプリタだったというオチ。crontabに2.7が入ってる所をフルパス指定で対処しました。

元のシステムで使ってる可能性があるので、実運用はこんな感じがいいのかもですね。
その辺は未検証なので良くわかりません。

とりあえず自動実行の環境が整ったので、cronでスクリプト叩いて色々とゴニョゴニョ出来るサーバが実働段階に入りました。
っていうか、VPSとは言え、月額980円って電気代とか回線代まで勘案すると破格ですよね。自宅でサーバ立てようかなと思ったけど、とりあえず全然用が足りる感じです。
スクリプトで大量のデータ扱うにしても、20Gあれば当面は十分でしょう。
でも最近CPIのVPSのが競合としていい感じのスペックなので、足りなくなったら今度はこっちにしようかなって感じです。

2012年2月29日水曜日

さくらVPSでcyberduckを使う。


いちいち転送コマンド打ち込むのも面倒なので、cyberduckちゃんが使えるかどうか試してみた。

なかなか良くわからなかったが最終的に成功。
再度設定するかもしれないので、個人的メモ。

ポイント
・新規接続でSFTP(SSHによる暗号化FTP)を使用。
・使うポートは、SSH用に以前変更したポートを使用。
・アノニマスログイン及び、キーチェーンの使用のチェックを外す。
・公開鍵認証を使用のチェックを入れ、秘密鍵ファイルを指定。

で、接続成功。テストの為、軽く作ったpythonスクリプトを転送して動作確認。

pythonのバージョンが2.4なので、次はこれをアップデートする予定。

2012年2月27日月曜日

さくらVPS設定

思う所あってさくらVPSの設定を始めた。 というか暫く前に実験用で借りておいたのは良いけど、設定する時間がなくてほぼ放置だったのをある程度理解が深まった所で一気に設定したら、なんとか動く設定に出来たので、メモを残す事にした。 参考にしたのはこちら アカベコマイリ でもってハマったポイントなんだけど、/etc/ssh/sshd_configの設定で、リモートログインの設定でパスワード認証を廃止するまでの一連の流れにハマった。 具体的には、 scp [オプション][転送したいファイル名][転送先のパス] で、ローカルで生成したid_rsa.pubファイルを転送するんだけんど、転送先のパスに置くのに非常に手間取ったりした。 公開鍵ファイルを正しい所に置かないと、きちんと動作しないのね。 iptablesの設定して、FTP入れてログイン出来るとこまでやった。 まだまだ設定詰めなきゃな感じだけど、取り合えず”ローカルで作ったスクリプト関連をがんがん放り込んでテストする環境”を構築する事が出来たのでとりあえず、ここまで。 httpとかはおいおい作業予定。