PHPのメモ

http://www.phppro.jp/school/phpschool/vol8/2 を参考に

PHPの使い方メモ

構文の見た目はCやRっぽい(forの括弧の感じとか;とか、コメント /*hogehoge*/とか)

配列→キーの種類で分類
連想配列VS配列(Rubyと同じ)
http://www.scollabo.com/banban/php/php_05.html の例

<?php
$fruit = array("Apple" => "りんご", "Orange" => "みかん",
"Grape" => "ぶどう");
while(list ($key, $val) = each($fruit)) {
print ("インデックスの $key は、$val です<br>\n");
}
?>

農学部図書館と共起している本のリスト

General:中右記
En1B Architecture:中右記
Law:中右記
HS Japanese Literature:中右記
HS Ethics:中右記
HS Japanese History:中右記
Economics:中右記
Asia:中右記
Social Science Institute:中右記
Historical Institute:中右記
General:森林サイエンス
General:基礎高分子科学
En2:基礎高分子科学
En5 Chemistry:基礎高分子科学
En6 Physics:基礎高分子科学
General:愛と戦いのイギリス文化史
Law:愛と戦いのイギリス文化史
Social Science Institute:愛と戦いのイギリス文化史
General:全所的共同研究の40年
Law:全所的共同研究の40年
Social Science Institute:全所的共同研究の40年
III:全所的共同研究の40年
General:豚肉のチカラ : 健康を支える豚肉の栄養・機能に迫る!
Pharmaceutical Sciences:化学大百科
Law:五感で楽しむまちづくり : 豊かな暮らし・にぎわい・つながりの創造
AG Wood and Timber:日本林業はよみがえる : 森林再生のビジネスモデルを描く
SC Biology:目的別で選べるPCR実験プロトコール : 失敗しないための実験操作と条件設定のコツ
Pharmaceutical Sciences:目的別で選べるPCR実験プロトコール : 失敗しないための実験操作と条件設定のコツ
General:生命環境化学入門 : 地球を救う科学技術
General:生物を知るための生化学
Pharmaceutical Sciences:生物を知るための生化学
General:バイオインフォマティクスin silico
General:ロシア・アヴァンギャルドの世紀 : 構成×事実×記録
General:これで納得!集落再生 : 「限界集落」のゆくえ
General:基礎から学ぶ生物学・細胞生物学
Pharmaceutical Sciences:基礎から学ぶ生物学・細胞生物学
General:複合戦争と総力戦の断層 : 日本にとっての第一次世界大戦
Law:複合戦争と総力戦の断層 : 日本にとっての第一次世界大戦
Medicine1:Rによるバイオインフォマティクスデータ解析 : Bioconductorを用いたゲノムスケールのデータマイニング
Pharmaceutical Sciences:Rによるバイオインフォマティクスデータ解析 : Bioconductorを用いたゲノムスケールのデータマイニング
Economics:政権交代下での新基本計画
Economics:シャーロック・ホームズの経済学
Economics:満洲分村移民の昭和史 : 残留者なしの引揚げ : 大分県大鶴開拓団
Law:地域の産業・文化と観光まちづくり : 創造性を育むツーリズム
Economics:朝鮮社会主義経済の理想と現実 : 朝鮮民主主義人民共和国における産業構造と経済管理
Economics:グローバル競争に打ち勝つ低所得国 : 新時代の輸出指向開発戦略
General:現代イスラーム金融論
Law:現代イスラーム金融論
Economics:現代イスラーム金融論
Social Science Institute:現代イスラーム金融論
General:工学部ヒラノ教授
Law:カブラの冬 : 第一次世界大戦期ドイツの飢饉と民衆
General:環境と植生30講
En14 Urban Engineering:環境と植生30講
General:経営の経済学 = Business economics
En2:経営の経済学 = Business economics
Economics:経営の経済学 = Business economics
Economics:ジョン・ローの虚像と実像 : 18世紀経済思想の再検討
Social Science Institute:ジョン・ローの虚像と実像 : 18世紀経済思想の再検討
General:サステイナビリティ学の創生
En14 Urban Engineering:サステイナビリティ学の創生
Economics:サステイナビリティ学の創生
General:炎の記憶
Economics:炎の記憶
Social Science Institute:炎の記憶
III:炎の記憶
General:ありあまるごちそう : 世界が飢えていくメカニズムがわかる
General:日本の鱗翅類 : 系統と多様性
General:ペンギン化学辞典
SC Biology:もっとよくわかる!免疫学
Pharmaceutical Sciences:もっとよくわかる!免疫学
General:技術者のための特許英語の基本表現
General:地域環境システム
En14 Urban Engineering:地域環境システム
General:大恐慌下の中国 : 市場・国家・世界経済
Law:大恐慌下の中国 : 市場・国家・世界経済
Economics:大恐慌下の中国 : 市場・国家・世界経済
Social Science Institute:大恐慌下の中国 : 市場・国家・世界経済
General:環境史とは何か
En14 Urban Engineering:環境史とは何か
AG Wood and Timber:環境史とは何か
General:金属錯体の合成と反応
Pharmaceutical Sciences:金属錯体の合成と反応
General:百姓学宣言 : 経済を中心にしない生き方
Economics:百姓学宣言 : 経済を中心にしない生き方
Law:韓国財閥の成長と変容 : 四大グループの組織改革と資源配分構造
Economics:韓国財閥の成長と変容 : 四大グループの組織改革と資源配分構造
General:戦時経済体制の構想と展開 : 日本陸海軍の経済史的分析
Law:戦時経済体制の構想と展開 : 日本陸海軍の経済史的分析
Economics:戦時経済体制の構想と展開 : 日本陸海軍の経済史的分析
Economics:現代企業と持続可能なマネジメント : 環境経営とCSRの統合理論の構築
General:ダーウィンの世界 : ダーウィン生誕200年その歴史的・現代的意義
General:理論生物学 : 生命科学の新しい潮流
En2:理論生物学 : 生命科学の新しい潮流
En6 Mathematical Engineering and Information:理論生物学 : 生命科学の新しい潮流
Medicine1:理論生物学 : 生命科学の新しい潮流
Historical Institute:日本中世の村落・女性・社会
General:沖縄空白の一年 : 1945-1946
Law:沖縄空白の一年 : 1945-1946
General:食料主権のグランドデザイン : 自由貿易に抗する日本と世界の新たな潮流
Economics:食料主権のグランドデザイン : 自由貿易に抗する日本と世界の新たな潮流
En14 Urban Engineering:超高齢社会と農ある暮らし . - 東京 : 都市農地活用支援センター , 2011.2
Social Science Institute:超高齢社会と農ある暮らし . - 東京 : 都市農地活用支援センター , 2011.2
SC Biology:タンパク質実験ハンドブック : 取り扱いの基礎から機能解析まで完全網羅!
Pharmaceutical Sciences:タンパク質実験ハンドブック : 取り扱いの基礎から機能解析まで完全網羅!
General:日本自動車工業史 : 小型車と大衆車による二つの道程
Economics:日本自動車工業史 : 小型車と大衆車による二つの道程
Social Science Institute:日本自動車工業史 : 小型車と大衆車による二つの道程
General:入会林野の変容と現代的意義
En14 Urban Engineering:入会林野の変容と現代的意義
Law:入会林野の変容と現代的意義
Economics:入会林野の変容と現代的意義
General:社会労働大事典
Economics:社会労働大事典
Education:社会労働大事典
Social Science Institute:社会労働大事典
General:分子生物学
General:山村政策の展開と山村の変容
Pharmaceutical Sciences:東京薬科大学百三十年
General:川の蛇行復元 : 水理・物質循環・生態系からの評価

東大図書館対応表

ネットワーク分析につかった英語表記

  • 図書館名の英語表記は勝手につけた非公式のもの(最大限もとの図書館のページを調べて適切な訳を考えたが、不適切なものも含まれている可能性があるので右の正式名を参照のこと)
  • 右側の日本語表記は公式のもの
  • 同じ図書館は同じ英語表記とした(例えば、駒場図書館の開架図書と集密図書は同じKOMABAという表記にし、そのもとで処理を行なっている)
  • 例えば農学部の国際植物材料科学図書館は名前がどこで区切れて何を扱っているのかが調べてもよくわからなかったのでInternationalとしか振っていない。
  • 多くの図書館を持つ学部学科については、右側にヘッダーをつけた。AG=農学部、En=工学部など。

AG Agriculture :農図・シラバスコーナー
AG Agriculture :農図・一般図書
AG Agriculture :農図・参考図書
AG Forest :農・森林動物学
AG International :農・国際植物材料科学
AG Wood and Timber :農・林政学
AS America :教養アメ
AS Anthroplogy :教養・文化人類
AS France :教養・仏語
AS Geography :教養・人文地理
AS German :教養・独語
AS HSP :教養・HSP
AS Japanese Literature :教養・国文学
AS Komaba Museum :教養・駒場博物館
AS Linguistics :教養・言語情報
Advanced Science and Technology :先端研・図書
Asia :東文研・図
Atomosphere and Ocean :大海研・図
Earthquake :地震研・図書
Economics :経図
Economics :経図・指定図書
Economics :経図・資料室
Education :育図
En14 Urban Engineering :工14・都市
En1A Civil Engineering :工1A・社基図
En1B Architecture :工1B・建築
En2 :工2・図書室
En5 Chemistry :工5・化学系図
En6 Mathematical Engineering and Information:工6・数理情
En6 Physics :工6・物工
En6 System Information :工6・シス情
En7 Aeronautics and Astronautics :工7・航空
EnglishName :JapaneseName
General :総合図・参考室
General :総合図・書庫
General :総合図・開架
HS Aesthetics :文・美史
HS Aesthetics :文・美学
HS Archaeology :文・考古
HS Asian History :文・東史
HS Chinese :文・中文
HS Chinese Phylosophy :文・中国思想
HS Contemporary Literature :文・現文
HS Cultural Resource :文・文化資源
HS Ethics :文・倫理
HS Frence :文・仏文
HS German :文・独文
HS Humanities and Sociology :文・図
HS Indian Phylosophy :文・印哲
HS Isram :文・イスラム
HS Japanese History :文・日本史
HS Japanese Literature :文・国文
HS Language :文・言語
HS Literature :文・国語
HS Religion :文・宗教
HS Sociology :文・社会
Historical Institute :史料編纂所・図
III :情報学環・図
ISSP :物性研・図書
Industrial Science :生産研・図書
Kashiwa :柏図・参考
Kashiwa :柏図・開架
Kashiwa :柏数物・開架
Komaba :駒場図・カウンター
Komaba :駒場図・参考
Komaba :駒場図・開架
Komaba :駒場図・集密
Law :法・図(閉室中)
Law Meiji :法・近セ明治文庫
Law5 :法・5号館
Mathematical Sciences :数理科学・図書
Medicine1 :医図
Medicine2 :医図・B02室
Pharmaceutical Sciences :薬図
Pharmaceutical Sciences :薬図・参考図書
SC Astronomy :理・天文図
SC Biology :理・生物図
SC Chemistry and Biology :理・生化図
SC Physics :理・物理図
SC7 :理7・CS図
SC7 :理7・CS研
Social Science Institute :社研

東大の図書館を可視化してみた(ネットワーク分析)

東大には学部学科管轄の図書館がある。ということは、1種類の本をいろんな図書館が持っているということが頻繁にある。そこで、「何冊の本を共有しているか」を指標としたネットワークから、学部学科の相互関係がわかったらおもしろいんじゃないかと思い、実際に可視化してみた。学問的な分野で言うと、ネットワーク分析とか図書館情報学みたいな感じ。時間がない人は下のPicasaにおいてあるネットワークの画像だけでも。

送信者 2012年1月22日

  • 動機
    • 東大OPAC機械学習の本を探している時、工2やら工6やら柏やら、工学系の図書館とともに、経済学部図書館にも蔵書があることが多いことに気づいた。
    • ある図書に対して、どの図書館とどの図書館が共起しているかを調べれば、図書館同士、はたまたそれを持つ学部学科同士の関係がわかるのではないかと考えた。
    • 例えば、工学と経済学は両方数理計画法を使うから、数理計画法の図書についてこの2つの図書館は共起しやすいだろう。
    • 最近の図書について調べるだけでは常識的な傾向しか出てこない可能性もあるが、時系列で調べると、学部学科同士の関係の変遷が見えてくるかもしれない。

ということで、やってみた。

  • 方法
    • 東大図書館OPACには素晴らしいことに、図書インデックスの出力機能がある。これを使うと図書リストを500件ずつ.tsv形式(.csvのようなもの)で落とせる。
    • これを使って、2011年に出版された和書を、出版年月昇順で並べたものを出力してデータとする。本1冊を1件として、n=2500のサンプルをとった(複数の図書館に所蔵されている本は500冊程度で、サンプルとしては小さすぎるので、1万件以上のデータを使って後でもう一回やるかもしれません(それをやっていない理由は※のOPACの問題の部分を参照))。

送信者 2012年1月22日

  1. 図書館をノード(点)とし、図書館同士の共起関係をエッジ(線)とする。図書館は、表示されている限り最大限細かく分類して考える(工学系図書館としてひとつにはせず、工学部2号館図書館、などの単位で考える)。
  2. 2500冊すべての図書に関して、そこで共起すれば、エッジに重みを1付加する。例えば、経済学部図書館と工学部2号館図書館が2500冊のうち10冊同じ本を持っていたら、この2つの間のエッジの重みは10。
  3. 図書情報がシリーズの単位で表示されるので、シリーズの本のいずれかの巻を所蔵していれば(それが2011年出版のものでなくても)、共起していると見なす。共起回数のカウントは、1シリーズにつき最大1回とする。
  4. Cytoscapeで読み込める形でCSV出力する。

送信者 2012年1月22日
例:この本の場合、総図・工2、総図・工3、工2・工3それぞれの間のエッジ(線)の重みを1ずつ付加する。下巻だけが2011年出版で、仮に工2に上巻しかなくてもこの規則でエッジの重みづけを行う。

    • Cytoscape(もともとバイオ系の研究の目的でつくられたネットワーク可視化&分析ソフト)で描画する。

OPACの仕様なのか、キャンパスが違う図書館が共起している時、ひとつのキャンパスの図書館分しかファイルに出力されないようです(現在東大図書館に問い合わせています)。なので、駒場キャンパスにある図書館と本郷キャンパスにある図書館との間の関係は残念ながらわかりませんでした。データを見る限りでは、本郷キャンパスが優先して出力されているようなので、以下本郷キャンパス内の学部学科図書館のネットワークについて考えます。
(追記:東大図書館から返答が来ました。複数キャンパスの図書館が共起していた場合、最初のキャンパスしか出力されていない状況になっていることが確認されたようで、変更を検討中とのこと。なので東大図書館のマイニングをやろうとしている人は注意してください。)
※技術的なtipsはまた後で書きます。

  • 結果

※名前が全部英語で出力されているので、対応関係は↓で確認してください(ネーミングは勝手にしました。ちょいちょいタイプミスがあるのは目をつぶってください。IsramとかFrenceとか。。。)。Cytoscapeは日本語出力ができないので(実はこの対応表をつくるのが一番時間がかかってたりしますorz)。。。
http://d.hatena.ne.jp/christopher6/20120121/1327171531

  • Node DegreeとEdge Weightについて
    • 全体図

送信者 2012年1月22日
アルバムに飛ぶと拡大できます(拡大ボタンは、飛んだ先の右上にある虫眼鏡のところです。)

      • Node Degree(Weightは考慮せず)でソート・色付け(【大】赤→黄→緑【小】)※DegreeとはNodeから出ているEdgeの数のこと。
      • Edge Weight で色付け(【大】赤→黄→緑【小】)
      • 英語表記対応表 http://d.hatena.ne.jp/christopher6/20120121/1327171531
    • 一部

送信者 2012年1月22日

      • 右から、
        1. General(総合図書館)
        2. Law(法学部図書館)
        3. Economics(経済学部図書館)
        4. AG Agriculture(農学部図書館)
        5. Histolical Institute(史料編纂所)
        6. Social Science Institute(社会科学研究所図書館)
        7. HS Japanese History(文学部日本史図書館)
  • Betweeness Centralityについて

送信者 2012年1月22日
アルバムに飛ぶと拡大できます(拡大ボタンは、飛んだ先の右上にある虫眼鏡のところです。)

    • NodeはBetweeness Centrality(媒介中心性)で色付け(【大】赤→黄→緑【小】)
    • Betweeness Centrality(媒介中心性)はCytoscape PluginのNetwork Analysisを利用したもの*1。※Betweeness Centralityとは任意の2Node間の最短経路に含まれるほど大きくなる指標(最短経路上に来やすいかどうか、これが大きいほど「橋渡し」する点)。
    • EdgeはWeightで色付け(【大】赤→黄→緑【小】)
    • Spring Embedded Layout で描画※Weightが大きいほど(ともに所蔵している本が多いほど)近くなる。
    • 拡大したもの↓(Spring Embedded Layoutは毎回出力が違うので上の結果とはちがいます)

送信者 2012年1月22日

  • En:工学部
  • AG:農学部
  • HS:文学部(Humanities and Sociology)
  • SC:理学部
  • Law:法学部
  • 結果について
    • 農学部(AG Agriculture)の媒介中心性の高さが際立っていた。なにか操作を間違っているかな、と思って、農学部と他の学部図書館との間で共起しているような図書のリストを確認したが、やはりそうであった(参考:「農学部図書館と共起している本のリスト」http://d.hatena.ne.jp/christopher6/20120121/1327174066)。経済分野の本がおいてあったりするのを確認して納得。
    • 工学部の建築(En14 Architecture)や都市工学(En1B UrbanEngineering)、社会基盤(En1A CivilEngineering)などは文系の図書館に近い。
    • 一方で、医学、薬学は文系の図書館から遠い。例えば医療政策や医療マネジメント、医療経済学、あるいは薬事法などの本があるはずだが、相対的には少ないのかもしれない。
    • 工2や工6のようにいろんな学科が混じっている図書館が多くあり、図書館単位での分析には限界がある。
    • ノードの粒度が影響してしまうので、それを考慮しなければいけない。例えば農学部は3つしか図書館がないが、工学部は10以上図書館があり、単純な数の指標においては分割されていない図書館が有利な傾向にある。従って、DegreeやBetweeness Centralityで上位にきていることが必ずしもすごいわけではない。ただし、図書館同士の近さについてはある程度うまく可視化されたのではないかと思う。
    • この場合の媒介中心性をどう解釈していいかわからない。勉強不足。ネットワークである以上そこを切るとQ値は必ず増えるので、Newman法によるクラスタリングの指標にはなるとは思う。
    • 理系学部学科の名誉のために補足しておくと、日本語文献しか検索にかけていないので、英語文献が相対的に多いと思われる理系の図書館はDegreeやBetweeness Centralityでは不利。また理系の図書館は学科ごとに分散している傾向にあるので、その点でも不利。
  • 補足とか
    • 時系列分析したら面白いと思うが、まだ時間がなくてやっていない。
    • データサンプルは1万くらいは欲しい。特に共起している図書が500ちょいなので(つまり2500冊のうち2000冊は、上述のようにシリーズを考慮しても1つの図書館にしかない)、データ規模が少し小さいのは否めない。ただ、手作業で20回もファイル出力させるのはつらい。。。
    • はじめCiNii BooksのAPIをつかってやろうとしたが、詳細な情報が出力されないため無理だった。徹夜でCiNii BooksのAPI叩くライブラリつくったのにorz...
    • 好きな社会科学研究所の図書館が上位だったから個人的に満足。我が経済学部図書館が法学部図書館に負けているのは遺憾。
    • 専門科目の試験前なのにさぼって何やって(ry
  • ネットワーク分析をやっている人にむけて
    • ISI Web of Knowledgeで論文情報が同様に提供されているので、論文ネットワークを研究したい人はそれがいいかもしれません(後述するゼミのテーマがそれで、自分はゲーム理論の論文についてやりました)。大学の学内アクセスのみですが。
    • CiNii Books やArticles(両方とも要developer登録)でこれをやる場合には、ランダムサンプリングが若干面倒です。最初CNID(CiNiiの図書コード)やISBNコードをランダムに生成することを考えましたがうまくいかず、結局検索キーワードなしで、出版年や言語などを指定して、その検索結果をhtmlパーサで解析してやりました(結局上述の通り無駄になったわけですが)。ただし、15件しかhtmlパーサでひっかからなかったので(なぜだかは不明)、1000件近く一度に検索結果を出力できるのも関わらず、15件ずつ叩いてやりました。
    • CiNii Books APIは秒あたりリクエスト5回程度で5分くらい叩いていたら一時的に停止されたので、秒1回か2回くらいのリクエストにしたほうがいいかもしれません。
    • 日本の図書館の可視化は、ネットワーク分析ソフトの文字化けの問題であまりおすすめできません。英語名称の変換表をつくるのが面倒なので。単純に学術的な近さを調べたいなら、英語圏の論文や図書を解析したほうがいいと思います。
    • 可視化した時の美しさとか分析プラグインの充実度を考えるとpajekなどよりもCytoscapeがよいです。生物系のソフトなので社会系には不向きな部分もありますが(例えばクラスタリングプラグインにNewmanアルゴリズムがなかったりする(訂正:ClusterMakerというプラグインでサポートされているようです))基本的には事足りる気がします。ただし、日本語情報が少ないです(バージョンが最新だとなぜかテーブルから読み込めなかったりとか、そういう情報がわからない)。
  • 謝辞
    • 去年の駒場の「イノベーション政策」という全学ゼミでネットワーク分析に出会いました。そこで教えてくださった梶川先生、森先生に感謝。その時はコードが書けず、全部ツールにおんぶに抱っこでやっていたのを考えると感慨深いです。

工学部イノベーション政策研究センター
http://ipr-ctr.t.u-tokyo.ac.jp/jp/index.html

*1:WeightをInteractionとして設定しているが、このアプリケーション内の計算でそれが考慮されているかについては現在確認中

CiNiiのAPIを叩くコードのめも

  • CiNii APIを使うためのコード
  • 結局東大図書館について詳しい情報が取得できないことがわかったのでつかわなかった

# -*- coding: utf-8 -*-
require "open-uri"
require "rubygems"
require "pp"
require "nokogiri"
include Math

class Booklist < Array
def initialize()
super
end
end

class Book
attr_reader :book_data
attr_accessor :library
def initialize(*init)
default = {
:title => nil,
:author => [],
:date => nil,
}
@book_data = default
if init[0].is_a?(Hash)
@book_data.merge!(init[0])
end
@library=[]
@book_data
end
end

# library for analyzing CiNii book repository
module CiNii
Chunk = 100
SLEEP_TIME = 0.2
BASE_URL ="http://ci.nii.ac.jp/books/opensearch/search?"
TODAI = "FA001798 OR FA001823 OR FA011747 OR FA011780 OR FA022153 OR FA001787 OR FA011769 OR FA011929 OR FA013990 OR FA001845 OR FA011791 OR FA011849 OR FA01185X OR FA01193X OR FA011951 OR FA011962 OR FA011984 OR FA012003 OR FA012025 OR FA012080 OR FA012091 OR FA022142 OR FA011758 OR FA01177X OR FA011973 OR FA011995 OR FA012069 OR FA020395 OR FA001801"
DEFAULT_PARAM={
"appid"=>"yourappkey",
"type"=>"1",
"format"=>"html",
"sortorder"=>"2",
"count"=>"15",
"lang"=>"jpn",
"fano"=>TODAI,
"year_from"=>"2011"
}
# fetching 15 books(default) from cinii search result
# fail when more than 15
def get_onepage_namelist(param)
namelist = []
doc = nil
open(BASE_URL+rpconv(DEFAULT_PARAM.merge(param))){|f|
doc = Nokogiri::XML(f)
}
#html body form ul li div div
doc.search('a[@class="taggedlink"]').each do |e|
namelist << e["href"].split("/")[2]
end
sleep SLEEP_TIME
namelist
end

# return booklist contains num books as a list
def get_namelist(num)
namelist=[]
max = num/15
for i in 1..max+1
namelist=namelist+get_onepage_namelist({"p"=>"#{i}"})
puts "#{100.0*i/(max+1)}% success in #{num} files(making list)"
end
namelist.take(num)
end

# collect num of rfd data files
def collect_rdf(num,file_path)
namelist=get_namelist(num)
max = (namelist.size-1 )/ Chunk
for i in 0..max
bl=Booklist.new()
list = []
if i==max
list = namelist[i*Chunk..namelist.size-1]
else
list = namelist[i*Chunk..(i+1)*Chunk-1]
end
list.each do |ncid|
bl << get_rdf(ncid)
end
p bl
puts "#{100.0*(i+1)/(max+1)} % success in #{num} files"
open(file_path+"/"+i.to_s+".dat","w"){|f| Marshal.dump(bl,f)}
end
end

# get rfd data file
# return as a Book data structure
def get_rdf(ncid)
open("http://ci.nii.ac.jp/ncid/"+ncid+".rdf") do |f|
doc=Nokogiri::XML(f)
# scraping book_info
title =doc.xpath("rdf:RDF/rdf:Description/dc:title").children.text
author = []
doc.xpath("rdf:RDF/rdf:Description/foaf:maker").each do |a|
author = author << a.xpath("foaf:Person/foaf:name").children.first.text
end
date = doc.xpath("rdf:RDF/rdf:Description/dc:date").children.text
book_info = {
:title =>title,
:author => author,
:date => date
}
book = Book.new(book_info)
library = []
doc.xpath("rdf:RDF/rdf:Description/bibo:owner").each do |e|
library << e.xpath("foaf:Organization/foaf:name").text
end
book.library=library
return book
end
end

# acess randamly according to isbn code
def rand_access(times)
times.times do
begin
n = rand_isbn
puts n
search({"rft.isbn"=>n})
sleep SLEEP_TIME
rescue
puts "fail"
sleep SLEEP_TIME
retry
end
end
end

# convert requestparameter from Hash to String
def rpconv(hash)
request_parameter=""
i=0
hash.each_key do |k|
request_parameter << "&" unless i==0
request_parameter << "#{URI.encode(k)}=#{URI.encode(hash[k])}"
i=i+1
end
request_parameter
end

def todai_library()
list = search_library({
"count"=>"40",
"name"=>"東京大学"})
list
end

def search_library(*option)
url = "http://ci.nii.ac.jp/books/opensearch/library?"
param = {
"appid"=>"8B7Ols7k63ktXMiqxz2z"
}
if option[0].is_a?(Hash)
param.merge!(option[0])
end
puts url+rpconv(param)
list = {}
open(url+rpconv(param)) do |f|
doc = Nokogiri::XML(f)
p doc
doc.css("entry").each do |e|
list[e.css("id").text.split("/")[4]]=e.css("title").text
end
end
list
end

def todai_research
lib_list = todai_library
collect_rdf
end

######
## garbage
# creating rand cnid
def rand_cnid
num=rand(99999999)
num_s = "%08d" % num
"BB"+ num_s
end

#creating rand isbn
def rand_isbn
num=rand(999999999)
num_s = "%9d" % num
"4"+num_s
end
end

Rのメモ

金融工学入門の課題ためのメモ

  • quadprogが線形計画法で使える
  • Rのlibrary導入の環境構築は面倒
  • quadprogの形式での制約式

Rのwikiの数理計画法のページ
http://www.okada.jp.org/RWiki/?R%A4%C7%BF%F4%CD%FD%B7%D7%B2%E8

  • 2次計画法まで対応している

データマイニング勉強会の濱田さんのブログ
http://d.hatena.ne.jp/hamadakoichi/20100118/1263832446

基本文法まとめ
http://www.is.titech.ac.jp/~shimo/class/doc/r-tips.pdf

tips

  • for

for(elem in list){}

  • if

if(TRUE or FALSE){}
else{}

  • lapply

lapply(list,func)

  • function

func <-function{.. return(x)}

  • accessor
  • 該当する要素のリストをとる場合:listkey
  • 該当する要素それ自体:list[key]

思ったこと

  • "<<"とかないのかなとおもった。まあcbindやらrbindやらあるけど。
  • ()でくるむのめんどい。オブジェクトに対してドット"."でアクセスするのが手にやさしい気がする。そんなこといい始めたらlispなんて(ry

facebook

  • ログイン出来なかったんだけど、website の登録ページやらredirect urilやらを変えたらログインできるようになった
  • 問題は、接続できないこと

C:/Ruby192/lib/ruby/1.9.1/net/http.rb:678:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)
from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:678:in `block in connect'

http://martinottenwaelter.fr/2010/12/ruby19-and-the-ssl-error/

めんどう