たぶん忘れるメモ

記憶力はないのです。

電子書籍の作品一覧を取得できないかと思ってみた

 世の中にある電子書籍を、(HTTPアクセスで)一覧で拾えないものかなぁと思って調べた時のメモ。

  • 某ソニー端末限定とかなってるストアは対象外。
  • PC、あるいはスマフォで購入・閲覧可能なもの。

 あと、ありすぎるので漫画も除外。

 ガンガン系というか、あの系統の出版社は最新1話だけ読めますよというサービスをしているところが多いような気がしてます。雑誌の一つの形として定着するのかな。
 どこも同じビューアのようで、専用ビューアをインストールしなくて良いところが素敵。
 そのほかの出版社はプラグインインストール必須な気がします。

Oreill'y

 みんな大好きオライリー
 ISBNがわかればJSONで拾えます。
 http://www.oreilly.co.jp/community/blog/2010/11/bibliographical-info-in-json.html

 一覧はトップにあるだけ。新着はRSSで拾えるんだけどなぁ。
 http://www.oreilly.co.jp/ebook/#all_titles

電子文庫パブリ

 一ツ橋系かなぁと思ったら結構色々ありました。
 パブリ、参加出版社一覧
 http://www.paburi.com/paburi/list-publisher.asp

 総合ベストセラーのカオス感がなんか好き…は、さておきISBN使ってデータをひっかけられたりはなさそうです。
 一覧も無理。新刊をRSSで…ってこともできない。
 ニュースと新着混ざってるのはURLで判定してもいいけど、タイトルだけとか漢すぎるわ。

hon-to

 充実度はここなのかなぁって思います。いかにもECぽいサイト。
 http://hon-to.jp/

 ISBNで検索はできますが、URLに含まれているわけではありません。

ダイヤモンド社

 すべてスマフォ用です。
 http://diamond.jp/e-books/

 直接、AppstoreやAndroidMarketで買うスタイルで、一覧なんかはない。

電子書籍ってどうなんだ

 「電子書籍」でググると、作る方法ばかりヒットします。
 出版社から直接仕入れるようなイメージで、出版社がやっている電子書籍データを引っ張ってはこられないのか?と思って調べたのですが、その発想自体、個人では実現できないのではないかと思いました。

 技術的な問題以前に、モノがあるのかどうかのレベルで。


 アマゾンさんがKindle持って、市場に殴り込んでくるのを待たねばならんのでしょうか。
 アフィリエイトで、そういうことができるように、なるような気がしないでもないなぁ。

電子書籍でしかできないこと?

 電子書籍に関連して、自分がほしいものでかつ、何ができるのかと常々考えてはいるんですが、現時点ではソーシャルリーディングサイトにしかできないような気がしてます。
 それは既にある中から自分が使いやすいものを選べばいい、と思うくらい既にたくさんあります。
 でもそれは「本」であればいい。電子じゃなくても。


 なんというか、そういう感想文をためることでも、他の人が何を読んでいるんだろう的な横のつながりでもなくて、自分が買った本(借りた本)を書斎にため込んで、個人図書館ひゃっほー!的なそういう喜びをネットでしたいんだよなぁ。かさばらない所有欲というのかな。
 そして、それはExcelで管理するのとはちょっと違う。

 ここは見せ方の問題なんだけれど、なんというか圧倒的な物量を感じたい。
 人じゃなくて、本が見たいんだ。
 本がつながっているのが見たい、のかもしれない。

Prototype -> jQuery 移行メモ

ライブラリ使わないでゴリゴリしているところも含め、混在していたので使用ライブラリを jQuery のみになるよう改修したのでその時の気付きのメモ。

とはいえ数ヶ月前なので、細かいところ忘れちゃった…

  • Prototype の Ajax.Updater() は、load() に変更できる。

 デフォルトは GET なので、受け取りを POST 専用のロジックにしている場合は修正が必要。

  • IEだと異様にキャッシュを持つので、編集フォームを繰り返し呼び出すとか、同じDIV内を頻繁に書き換えるとかいう処理をしてる場合は load() じゃなく、$.ajax() にして、{cache:false} を指定しておくのが確実。
  • 上記2つは $.ajaxSetup() でデフォルトを変更しておくという手もある。

 どっちにするのかは好みだと思う。今回は他への影響が気になったので、キャッシュ切りが必要なところは $.ajax() にしておいた。

  • $.post(), $.get() で送信して、コールバックで if (status!="error") {} とか第二引数に判定かけてロジックを書いておくと、移行前のロジックをきれいに移せるような気がする。

 誤読しそうなところ以外はあんまりいじらない方針でいったから、このやり方が正しいかどうかはわからない。

  • デバッグに ajaxError() 便利。ありがとう、そして、ありがとう!

 エラーコンソールに出ないのでしばらく悩んだよ…

  • Prototype でオブジェクトなりプロパティなりを存在チェックしてたところは軒並み、length() > 0 に変更する。jQuery オブジェクトは配列で返されるので undefined は通用しない。

クラス作るときのやり方

ライブラリ使わないでごりごりしたり、jQueryプラグイン作ったりしたので、その時の気付き。

  • オブジェクトのプロパティは先行定義できない。

 やり方色々あるし作り方によってはOKなのかな。必要なときに this.property=hoge ってした。すごい違和感ある…

  • ないときにアクセスしても undefined が返るだけ。エラーにはならないから気付きにくいので、意識しておいたほうがデバッグが楽に感じる。

 おかしい…と思ったときにまずどこを疑うか的な。

  • prototype オブジェクトにセットするプロパティは読み出しのみ有効なのは、やり方がまずいのか、そういうものなのか。

 static = クラス変数、クラスメソッド
 こんなイメージ…でやってた。当たっているかは知りません…

IE判定ってどうするのが一番いいの?って気になった

ググってみたらこちらで素敵にまとめられてた件…
http://d.hatena.ne.jp/Naotsugu/20110927/1317140891

でも折角なので、手持ちのスクリプトをgrepしてみて引っかかったこの2タイプの違いについて調べてみる。

【1】
if (/*@cc_on!@*/false) { // for IE

【2】
if (window.navigator.userAgent.toLowerCase().indexOf("msie") > -1) { // for IE


【1】
@がついてるのは、JScriptの条件付きコンパイル。
http://msdn.microsoft.com/ja-jp/library/7kx09ct1.aspx

これはコメントで囲んでる中身がIEのとき(JScriptが実行される環境にあるとき)実行される。

なので、

@cc_on で条件付コンパイルをアクティブにする。

条件付のスクリプトの内容は !(否定演算子)。

つまり、if (!false) { と同じことになる。

IEでは true が返るけれど、コメントの中身が無効になるIE以外だと if (false) { の判定をする。

こういうロジックのようです。

JScriptのバージョンもわかるので、こういう使い方もする。

if (/*@cc_on!@*/false) {
  /*@if (@_jscript_version <= 5.6)
    alert("IE6 爆発しろ");
  @end@*/
}

JScriptのバージョン一覧はこちら。
http://msdn.microsoft.com/ja-jp/library/2z6exc9e%28v=VS.100%29.aspx


【2】
ライブラリ見てみてもこっちのパターンが多そう。
正規表現の場合もあるけれどユーザーエージェントから判定をするやり方。IEのバージョンを正確に取るには完全に保証できないっぽいけど(OSのインストール状態によって色んな表記があるから)それはJScriptで判定すればいいんじゃないかって思った。

gitをさくらのレンタルサーバーにインストールする

流行のVPSとかじゃなくて普通のレンタルサーバー。

インストール先のディレクトリを作っておいて、普通にインストール。

$ mkdir $HOME/git

$ wget http://kernel.org/pub/software/scm/git/git-1.7.3.3.tar.gz

$ tar xzf git-1.7.3.3.tar.gz
$ cd git-1.7.3.3
$ ./configure --prefix=$HOME/git
$ gmake prefix=$HOME/git
$ gmake prefix=$HOME/git install

パスを追加しておく。

$ vi .cshrc
 set path = $HOME/git/bin  ←追加

$ source .cshrc

インストールできたか確認。

$ git version

リポジトリ作る。
そもそものgitの理解が十分ではなかったので、インストール記事とか見ててもさっぱりピンと来なかった。

リモート用、というのがリポジトリな訳ですよ。subversion的には。色々と単語が違うので同じバージョン管理でしょ、大丈夫!なんて真っ白な状態でインストール始めたら痛い目にあった。

$ mkdir gitrep
$ mkdir hoge.git
$ cd hoge.git
$ git init --bare

これで完了。

リモート用のリポジトリの場合は、--bare が必須らしい。
ここ重要。commitできなくて結構悩んだ。

display_errors

display_errorsをoffにすると、output_buffering=4096 のときと同じような動きをする。

display_errors=Offの状態で、echoを吐かせたあと、session_start() してもエラーにならなかった。
何らかの出力をされたらPHPはヘッダを吐くとマニュアルのどこかに書いてあったのだけれど、echo文のあとにheaders_sent()でチェックしてもfalseが返る。

こういうものなのかもしれないけれど、バッファリングしているなんて思ってなかったらメモ。