【MongoDB】 MongoDB事始め
なんとなく必要になってきたのでMongoDBつかってみます.
とりあえず環境構築から、DBの動作確認まで確認。
1. Mac Verでのインストール方法
方法は2種類。port or 公式サイトからバイナリ取得(まあバイナリでなくソースコードverもありますが))
1-1. port利用(ちょっとversionが古め)
sudo port install mongodb;
1-2. バイナリ取得(最新ver 利用)
curl http://downloads.mongodb.org/osx/mongodb-osx-x86_64-1.4.4.tgz tar zxvf mongodb-osx-x86_64-1.4.4.tgz cd mongodb-osx-x86_64-1.4.4/bin ln -s * (どっかパスが通ってるフォルダ)
2 mongodb起動
- サーバー起動(あるターミナルなどで実行)
mongod --dbpath="どっか適当なフォルダ"(パス指定しないと/data/dbフォルダが標準で利用される)
- クライアント起動(別のターミナルなどで実行)
mongo
3. 実際にmongodbを試す
クライアント側で色々と実行する。公式サイトのチュートリアルを試すと良いかと。
use mydb j = { name : "mongo" }; t = { x : 3 }; db.things.save(j); db.things.save(t); db.things.find(); ...
後は適当にチュートリアルやってドキュメント読んでソースコードも読めば良いかと。まあ、あまり難しいことはなさそうなイメージ?
- 参考資料
- MongoDB
- http://www.mongodb.org/display/DOCS/Home
- 色々なドキュメント集
- Quickstart OS X
- MongoDB Tutorial
- MongoDB Shell
- http://try.mongodb.org/
- Web上で実行できるMongoDB用のShell(Tutorial付き)
- SQL to Mongo Maping Chart
- http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart
- SQLとMongo DBでの構文(Mongo Query)との対応
- 便利だけど、もう少し対応があってもよさげ?
【Scala】 Lift2.0の環境構築メモ
Lift2.0が2010年6月30日にやっとリリースされたらしいので環境構築メモを残しておいたり.
方法はsbtとmavenの2種類あるっぽいですが、sbt推奨っぽいのでsbtで環境構築。
始めにSimple build toolの設定をする.パスが通っているローカルbinフォルダ(~/bin, ~/local/bin)にsbt-launch.jarを置いて、実行ファイルを作成する
YUKI.N> wget http://simple-build-tool.googlecode.com/files/sbt-launch-0.7.4.jar YUKI.N> vi sbt YUKI.N> java -Xmx512M -jar `dirname $0`/sbt-launch-0.7.4.jar "$@" YUKI.N> chmod u+x sbt
これで、ひとまずsbtの設定は終了
次にliftをdlして解凍. liftフォルダ移動という作業を行う
もしくはgit利用して同様な作業をする。(但し、安定はしてないので環境によっては動かない場合もあるので試すぐらいならtgzの方利用した方がいいかも)
ちなみにlift.tgzってありますが一応versionは2.0です(現状)(versionについては/lift/project/build/LiftProject.scalaファイルで確認できます)
YUKI.N> wget http://liftweb.net/lift.tgz YUKI.N> tar zxf lift.tgz YUKI.N> cd lift
or
YUKI.N> git clone http://github.com/dpp/lift_sbt_prototype.git YUKI.N> cd lift_sbt_prototype
次にsbtを実行してアップデート実行後サーバー起動(jetty-run)させる
YUKI.N> sbt > update > jetty-run
最後にlocalhost:8080にいって動作確認チェックしてとりあえず終了.
ちなみにliftでの作業は基本的にはsrcフォルダで行ないます。
srcのtree構成は以下のとおり.わりかし謎
|-main |---resources |-----props |---scala |-----bootstrap |-------liftweb |-----code |-------comet |-------lib |-------model |-------snippet |-------view |---webapp |-----WEB-INF |-----images |-----static |-----templates-hidden |-test |---resources |---scala |-----code |-------snippet
あとは、liftのドキュメントなりソースを読んでWebサイトを作ればいいんじゃないでしょうかね。
備考: Lift 2.0の特徴
- とりあえずMongoDBとCouchDBをサポートしたのがメインっぽいですかね
Lift 2.0's new features include: -NoSQL support including built-in support for MongoDB and CouchDB -High performance JSON support including an elegant JSON DSL and bidirectional JSON <-> Class conversion -Powerful, concise REST support -Support for enterprise infrastructure including JTA and LDAP -Declarative systems for single Screen input and validation as well as multiple screen Wizards -Radically improved development experience including much better error messages and support for dynamically changing system configuration -Support for running Lift apps outside of a J/EE Servlet containers -Improved Comet support including modern browser detection and better connection starvation detection -Improved support for testing including super-concise dependency injection and run-mode detection -Support for Simple Build Tool Performance improvements
参考ページ
- lift
- simple build tool
- lift 2.0 release
- http://liftweb.net/20_release.html
- 2.0の特徴について詳しく知りたい場合はここを見る
【データセット】色々なデータセットまとめ
海外中心のデータセットのなんとなくまとめ. 将来的に利用したかったりしたくなかったり
- delicious(dataset query)
- deliciousで探すのがてっとり早い気がする。
- http://delicious.com/search?p=dataset
- infochimps
- なんか色々ある 9753 dataset
- http://infochimps.org/
- google public dataset
- OECDとかRetail salesとか
- http://www.google.com/publicdata/home
- データマイニング関連のデータセット
- kdnuggetsというなんかデータマイニングで有名なサイトのデータセット
- http://www.kdnuggets.com/datasets/
- freebase
- オンライン共有データセット
- http://www.freebase.com/
- StatLib---Datasets Archive(メロン大学)
- where to find opendataset
- open datasetの取得方法などのまとめ
- ISBN検索とかできるAPIとかあったり
- http://www.readwriteweb.com/archives/where_to_find_open_data_on_the.php
- wordbank dataset
- wordbankのデータセット
- http://data.worldbank.org/
- theinfo.org
- データセットと加工方法に関する説明など
- http://theinfo.org/
- some dataset available on the web
- 映画のレビューデータセットとか? 10000万レコードくらいあるし
- Amazon publicdataset
- Enron
- エンロンメール(メロン大学)
- http://www.cs.cmu.edu/~enron/
- google ngram
- googleのngramデータとか? google ngramの例など
- http://googleresearch.blogspot.com/2006/08/all-our-n-gram-are-belong-to-you.html
- uci machine learning dataset
- 機械学習関連のデータセット, 例によってiris(ry
- http://archive.ics.uci.edu/ml/
- http://archive.ics.uci.edu/ml/datasets.html
- dataset bookmark on delicious
- どっかの誰かのデータセットブクマ
- http://delicious.com/pskomoroch/dataset
- data marketplace
- データクレクレサイト?
- http://datamarketplace.com/
- stanford large network dataset
- data.gov
- ckan
- network data
- datamob.org
- Amazon ReviewとかPublicのよさそうなデータセット
- http://datamob.org/
- reddit dataset
- socrata
- なんらかのデータセットまとめ
- http://www.socrata.com/
- 30 resources to find the dat you need
そんなところ. まあ有名所は大体把握しているかと
■
結構有名なデザパタのサイト(http://dofactory.com/Patterns/Patterns.aspx)にのってたデザパタ使用頻度をなんとなくまとめてみました。
CがCreation, SがStructure, BがBehaviorの略です。
5
- C:Abstract Factory
- C:Factory
- S:Facade
- B:Iterator
- B:Observer
4
- C:Singleton
- S:Adapter
- S:Composite
- S:Proxy
- B:Command
- B:Strategy
3
- C:Prototype
- S:Bridge
- S:Decoraator
- B:State
- B:Template Method
2
- C:Builder
- B:Chain of Responsibility
- B:Mediator
1
- S:Flyweight
- B:Interpreter
- B:Memento
- B:Visitor
結論:
■
【Amazon】 Product Advertising API関連調査
久しぶりに使いそうになったのでなんとなくライブラリ調査してみました。
2009-11-01 verのが最新版っぽいかと。
- 公式
- Perl
- http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2482
- 公式サンプルがそのまま使える?
- CPANは色々あるけどどれがいいか謎
- http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2482
- PHP
- Services_Amazon
- http://pear.php.net/package/Services_Amazon
- 多少古い感じ
- sudo pear install Services_Amazon-0.8.0でおk
- Python
- python-amazon-product-api
- http://pypi.python.org/pypi/python-amazon-product-api/0.2.4.1
- ドキュメント: http://packages.python.org/python-amazon-product-api/
- easy_install python-amazon-product-apiでおk
- from amazonproduct import APIといった感じで使う
swfobject備忘録
swfobject関連の作業を何かしらのキッカケで三ヶ月に一遍くらいするのですが、結構その度に忘れることがあるのでメモ
swfobjectの読み込みはGoogle Hostingを利用する
-
- swfobjectを使うときは,Google-hosted content delivery network(CDN)を利用するのが手っ取り早いし、お薦めの手法
- jQuery Cook Book(洋書, 和訳多分無い)の1.1とかにも載ってるんですけど、最近はjQueryとかPrototypeはGoogle Hostingに任せるのがお薦めの手法で、ライブラリダウンロードしてローカル読み込みは、非推奨とのこと(但し、デバッグ時などにはローカル利用もあり).なんかもう古いやり方だよね的なノリの解説で、ちなみにTwitterとかもjQueryはGoogle Hosting経由で利用してます。
- 推奨理由は以下の通り
- 安定, 信頼性, 高速, ライブラリ複数バージョンのサポート
となんかいいことづくめな感じ
- swfobjectの読み込みは以下のように行います
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.1/swfobject.js"></script>
swfの読み込みが出来ない
- きちんと設定したはずなのになぜかswfが読み込まれないというお話
- swfの読み込みはDocumentrootを基準として読み込む必要がある(未確認)?
- たとえば,http://hahahahaha/swf/test.swfとおいた場合にはswfobject.embedSWF("/swf/test.swf/", ...)と実行する(まあ別に相対パスでも動きますがね。。 なんか昔嵌った記憶があるのでドキュメントルート指定の方がいいかと)
swfobject.embedSWF("/swf/test.swf", "myContent", "700", "400", "9.0.0", "expressInstall.swf", flashvars, params, attributes);
ActionscriptとJavascriptの連携がうまく動作しない
- ActionscriptとJavascript連携する際にはExternalInterface.callとかfscommandを使ってActionscriptからJavascript関数を呼び出すという感じのことをやるのですがこれが上手くいかない というお話。
- まあ単純にパラメータ指定必要なんですね(たぶん)。。
- swliveconnect:"true"と設定していない場合fscommandとかでJavascriptと通信できないっぽいです。
- Flashの読み込みは色々とパラメータ結構多くて厄介。。
var flashvars = {}; var params = { swliveconnect:"true" }; var attributes = { id:"myCom", name:"myCom" }; swfobject.embedSWF("/swf/test.swf", "myContent", "700", "400", "9.0.0", "expressInstall.swf", flashvars, params, attributes);
ちなみに、何かしらswfobjectに関して上手くいかない場合は, 公式wikiのDocument, FAQ,もしくはTest Suite(swfobjectのテストケース)のソースコードを読むと解決することが多い気がします。
特にtest suiteのソース読む事をお薦めします。テストケースにはswfobjectでやるべき内容が網羅されてるので、swfobjectで出来る大抵の内容は載っています(フルスクリーンとかswf同時読み込みとか)。ちなみにテスト用flaファイルも置いてあるのでそれも参考になりますね。
参考資料
- swf object
- 公式サイト
- swf object wiki
- 公式Wiki: faq, document, test-suiteなど役立つ情報多し
- swf object test suite
- テストケースのまとめ. swfobjectでやりたいような内容は大抵網羅されているかと
- swfobject hosted library
- google hosting swf objectに利用方法の説明
[Ruby][MySQL] Yahoo Blog APIから取得したBlog情報をSequelを使ってDBに保存する
なんとなく前回の続き。Sequelいい感じですね。
Sequelを使えばAdapterさえあればMySQLでもPostgreSQLでもSQLite3でもほぼ同等な処理がSQLライク(かどうかは謎。。)で使えます。
ちなみに実験用のソースなんでDBのテーブル制約とかは特につけてないです。
require 'yahoo_blog'ってのは前の投稿で書いといた奴です。
# -*- coding: utf-8 -*- require 'rubygems' require 'sequel' require 'yahoo_blog' ## DB接続 + テーブル作成 ## # enocoding => utf8? # 日本語utf8にしなきゃいけないって記事があったのですが、自分の環境だと問題無し。 options = {} # user pass mydbは環境に応じて変更。。 DB = Sequel.connect('mysql://user:pass@localhost/mydb', options) # テーブルがない場合テーブルを作成(for yahoo blog data) # BlogIdっているのかな。。 DB.create_table? :yahoo_blog do primary_key :id String :Query String :BlogId String :RssUrl String :Title Text :Description String :Url String :Creator String :MobileLink String :SiteTitle String :SiteUrl DateTime :DateTime end ## yahoo blogデータの取得 query = "涼宮春日的憂鬱" yobj = Yahoo_blog_search.new(query) blog_data = yobj.get_all_processing_data ## BlogデータのDBへの挿入 yblog = DB[:yahoo_blog] ## テーブルにyahoo blogデータを導入する blog_data.each do |i| yblog.insert(:BlogId => i["Id"], :Query => query, :RssUrl => i["RssUrl"],:Title => i["Title"], :Description => i["Description"] , :Url => i["Url"], :Creator => i["Creator"],:MobileLink => i["mobileLink"], :SiteTitle => i["SiteTitle"] , :SiteUrl => i["SiteUrl"], :DateTime => i["DateTime"] ) end ## 導入したデータの出力 puts "Blog count: #{yblog.count}" yblog.each do |i| puts " Query: #{i[:Query]} Title: #{i[:Title]} DateTime #{i[:DateTime]}" end
テーブルカラムがキャメルケースなのは如何なものかと。まあ、yahoo apiの出力結果に合わせただけなんですが。
上記のソースを実行すると以下のような出力がされまする。とりあえずテーブルにデータが入ってるのが分かるかと思います。
DateTimeをformat変更しないでも導入出来る点が大変よろしいかと。
Blog count: 35 Query: 涼宮春日的憂鬱 Title: 交響情人夢 - のだめ中国語版 DateTime 2009-10-30 23:55:46 +0900 Query: 涼宮春日的憂鬱 Title: diary DateTime 2009-08-24 23:59:59 +0900 Query: 涼宮春日的憂鬱 Title: [Nico字幕組] 涼宮春日的憂鬱「飛〓!巨乳的天使(朝比奈實久瑠)」 DateTime 2009-07-02 01:00:00 +0900 Query: 涼宮春日的憂鬱 Title: [Nico字幕組] 涼宮春日的憂鬱「我的家人不行〓」ver.2 DateTime 2009-07-01 01:00:00 +0900 Query: 涼宮春日的憂鬱 Title: 100K+1紀念篇之2 組曲「涼宮春日的憂鬱」 DateTime 2009-06-28 01:00:00 +0900 Query: 涼宮春日的憂鬱 Title: 「萌え本」の多様化・国際化の歴史 DateTime 2008-12-27 15:31:19 +0900 Query: 涼宮春日的憂鬱 Title: 台湾旅行レポ〜2日目〜その1 DateTime 2008-07-20 22:51:13 +0900 ...
ちなみにSequelで作られたテーブルをMySQLでカラム情報確認すると以下のようになってるのが分かります。
Stringがvarchar(255), textがtext, datetimeがdatetimeといった感じで作られてますね。
mysql> SHOW COLUMNS FROM yahoo_blog; +-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | Query | varchar(255) | YES | | NULL | | | BlogId | varchar(255) | YES | | NULL | | | RssUrl | varchar(255) | YES | | NULL | | | Title | varchar(255) | YES | | NULL | | | Description | text | YES | | NULL | | | Url | varchar(255) | YES | | NULL | | | Creator | varchar(255) | YES | | NULL | | | MobileLink | varchar(255) | YES | | NULL | | | SiteTitle | varchar(255) | YES | | NULL | | | SiteUrl | varchar(255) | YES | | NULL | | | DateTime | datetime | YES | | NULL | | +-------------+--------------+------+-----+---------+----------------+ 12 rows in set (0.01 sec)
単純にMySQLでデータを見ると以下のような感じで格納されているのが確認されまする。
mysql> SELECT url FROM yahoo_blog; +----------------------------------------------------------+ | url | +----------------------------------------------------------+ | http://blogs.yahoo.co.jp/nakkun_xiaren/59920937.html | | http://d.hatena.ne.jp/bsiyo/20090824/1251125999 | | http://nico.pixnet.net/blog/post/28514416 | | http://nico.pixnet.net/blog/post/28504268 | | http://nico.pixnet.net/blog/post/28462212 | ..
ちなみに自分が欲しかった、Yahoo Blog APIのDescription(Blogの詳細情報)はBlogの本体情報の始めの部分?をN文字以内にしてsubstringした感じの内容なので、Blogの本体データが欲しい場合はあともう一段階処理する必要がありさうですね。。。
まあ何をしたかったかというと、LSA(潜在意味解析)をBlog情報を元に実行してナニかの類似度を計りたいなーと思っていたところです。。
後はblogのUrl情報からBlog本文情報とってくりゃ終わりですが、はてさて