ruby -rubygems -e 'require "open-uri";require "feed-normalizer";require "hpricot"; puts Hpricot(FeedNormalizer::FeedNormalizer.parse(open("http://shokai.org/blog/feed")).entries[0].content).inner_text'
Fav on LDRにドメイン名を追加するとLDRでe押してfavoriteできる http://hoge.sub.jp/blog/archives/2008/09/favon_ldr_updat.html //domain_name to id_regex function get_id_regex(domain){ if(domain == 'twitter.com' || //twitter and kichikutter domain == 'kichiku.oq.la'|| domain == 'pcod.no-ip.org'|| domain == 'search.twitter.com' ) { 20行目あたりに書く
sudo gem install feed-normalizerfeed-normalizerはsimple-rssなど色々を使ってatomやrssなんでも共通のデータ構造にしてくれるらしい。OpenFastladderの中で使っていた。 #!/usr/bin/env ruby require 'rubygems' require 'feed-normalizer' require 'open-uri' require 'cgi' require 'kconv' require 'pp' uri = ARGV.shift || 'http://shokai.org/blog/feed/' puts "parse #{uri}" feed = FeedNormalizer::FeedNormalizer.parse open(uri) puts "title: #{feed.title}"
さっきできた。3時間ぐらいかかった。 http://twitter.com/ahokai に触発されて作った いつかどこかでn-gramモデルを作って文章を連結させると自然になると読んだので、やってみた。 DBに溜めたpostをmecabで分割する所で文字コード関係でつまづいていたが、色々やってたらなんとかなった。 口調が完全に自分と同じなのできもい。 まず自分のpostを収集するDBを作成 migrate_posts.rb #!/usr/bin/env ruby require 'rubygems' require 'active_record' require File.dirname(__FILE__) + "/model_post.rb" ActiveRecord::Base.establish_connection( :adapter => 'sqlite3', #:dbfile
wordpressにログインしてみた。便利だ。 #!/usr/bin/env ruby require 'rubygems' require 'kconv' require 'mechanize' require 'pp' user = "username" pass = "password" puts 'start' agent = WWW::Mechanize.new page = agent.get("http://shokai.org/blog/wp-login.php") login_form = page.forms_with("loginform").first login_form.log = user login_form.pwd = pass dashboard = agent.submit(login_form) puts "login: " + dashboard.
fastladderのrake db:migrateが通らないので、gemなどを全部アップデートしていたら sudo gem update --systemした後 gemコマンドすると何をやっても /usr/bin/gem:10:Warning: Gem::manage_gems is deprecated and will be removed on or after March 2009. /usr/bin/gem:23: uninitialized constant Gem::GemRunner (NameError)どうすれば・・ RubyGems更新後のGem::GemRunner (NameError) @ 2008年04月 @ ratio - rational - irrational @ IDM より /usr/bin/gem1.8と/usr/bin/gemがあるので cd
素直にUbuntuに入れる。 wget http://fastladder.org/downloads/fastladder-0.0.2-src.tar.gz tar -zxvf fastladder-0.0.2-src.tar.gz cd fastladder/sudo apt-get install libfreeimage3sudo gem update sudo gem install rails sudo gem install rfeedfinder sudo gem install feed-normalizer sudo gem install opml sudo gem install mongrel sudo gem install mongrel_cluster sudo gem install rails --include-dependencies どうやら最新版
http://d.hatena.ne.jp/shokai/20081126/1227721485 の続き。SimpleConsoleで手軽に使える1行メモ帳を作った http://www.bitbucket.org/shokai/mem/overview/ コマンド引数からControllerを選んでViewに流すしくみはSimpleConsoleが作ってくれたので、modelをActiveRecordで実装してみた。 できたもの↓ とりあえず読み書き削除はできる。そのうちメールに吐き出す機能などを付ける。 引数無しで初回起動時に ~/.mem/db が作られる sho@shomb% mem initialize db.. == CreatePosts: migrating ==================================================== -- cr
日本語データを扱うなら、テキストファイルじゃなくてちゃんとRDBに保存した方が良いですね。区切り文字とかが面倒をかけてきて、今回はクロールしてきたデータの一部を手動で修正してしまった。 できた。→大きいサイズ http://www.flickr.com/photos/shokai/3028846281/sizes/o/ 英語blogはHTML除去してsplit(/[^A-Z^a-z]+/)で分割すれば単語が取り出せたが、日本語blogはMeCabで形態素解析し、名詞だけを取り出すようにした。 Mac用 形態素解析エンジンMeCabをインストールしなおし(utf8で) - 橋本詳解 MeCabのRubyバインディングをインストール - 橋本詳解 Ubuntu用 MeCab Rubyバインディングをインストール - 橋本詳解 使用方法 twitterの友人のタイムラインを取得してとりあえずMe
データ群をK個のクラスタに分けるために、「いちばんしっくり来るK個の重心」を再帰で見つけるK平均法を使う。 このページのインデントわかりづらくてイライラした。 このアルゴリズムは階層的クラスタリングより全然速い。 p.47~48より clusters.rbにkcluster関数を追加した http://www.bitbucket.org/shokai/collective-intelligence-study/src/aea87de2da8d/03/clusters.rb def kcluster(rows, distance=:pearson, k=4) # それぞれのポイントの最小値と最大値を決める ranges = Array.new for i in 0...rows[0].length cols = Array.new for row in rows cols.push(row[
3章はクラスタリング。 35ページまでかけて複数の英文blogのRSSフィードから単語を切り出し、 http://kiwitobes.com/clusters/blogdata.txt のような単語と出現回数のリストを作っている。このblogdata.txtを使ってしまっても良いのだけど、せっかくだからrubyでやってみる。 本はPythonなので http://www.feedparser.org を使って記事本文データを持ってきて正規表現などでHTMLタグを外したりしているが、 Ruby移植としてまず http://simple-rss.rubyforge.org/ を使って記事本文データやblogタイトルなどを取ってこれるようにする。 sudo gem install simple-rss p.33のfeedparserと同じ事をやらないとならないので、simple-rssでRSSや
xmpp4rでjabberのプロトコルが使える。 http://www.sabamiso.net/yoggy/tdiary/?date=20070215 http://d.hatena.ne.jp/Syo-Takasaki/20071121/1195644386 が受信メッセージをそのままエコーするのを作ってて、参考になった。でも今回は送信だけに使う。 sudo gem install xmpp4rついでにrconvも入った。 xmpp4rについて http://rubyforge.org/projects/xmpp4r/ http://home.gna.org/xmpp4r/ gtalk-send というファイル名でパスの通っている所に保存しておく #!/usr/bin/ruby require 'rubygems' require 'xmpp4r' require 'kconv' us
geophoto.kmlから、前記事で作ったlocalhostで動いてるRailsに保存してあるflickrのgeotag写真を緯度経度で検索してさらにkmlを読み出している。 http://earth.google.co.jp/kml/kml_tags_21.html をローカルに保存してあって嬉しかったのでバスの中で作った。 geophoto.kml <?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://earth.google.com/kml/2.1"> <NetworkLink> <name>geophoto search</name> <flyToView>0</flyToView> <Link> <href>http://localhost:3000/photos.kml</href> <viewRefreshMod
成田帰りのバスで作った。 前ので4万件でwebricが固まったので、ちょっと考え直した。 file://localhost/opt/local/lib/ruby/gems/1.8/doc/activerecord-2.0.2/rdoc/classes/ActiveRecord/Base.html を読むなどして ActiveRecord::Base.find_by_sql を使って、単純に四角く検索してみた (例) http://localhost:3000/photos.xml?lat=35&lon=135 http://localhost:3000/photos.kml?lat=35&lon=135 http://localhost:3000/photos?lat=35&lon=135&dist=1 などで検索して緯度経度のまわりの写真を出す(50件) http://localhost
railsで。飛行機の中で暇だったので作った。 dbのmigrate class CreatePhotos < ActiveRecord::Migration def self.up create_table :photos do |t| t.column :photo_id, :string, :limit => 20, :null => false t.column :title, :string, :limit => 30, :null => false t.column :page_url, :string, :limit => 128, :null => false t.column :source_url, :string, :limit => 128, :null => false t.column :lat, :double, :null => false t.column
最初helperにしようかと思ったけどmodelにメソッド追加した class Photo < ActiveRecord::Base def source_url_size(size = :medium) if size == :square return source_url.sub(/\.jpg/, '_s.jpg') elsif size == :thumb return source_url.sub(/\.jpg/, '_t.jpg') elsif size == :small return source_url.sub(/\.jpg/, '_m.jpg') elsif size == :large return source_url.sub(/\.jpg/, '_b.jpg') end return source_url end end viewから呼ぶ <%=h photo.s
C:\src\ruby>rails testbbs create create app/controllers create app/helpers create app/models create app/views/layouts create config/environments create config/initializers create db create doc create lib create lib/tasks create log create public/images create public/javascripts create public/stylesheets create script/performance create script/process create test/fixtures create test/functional cre
rubyneko - 誰でも30秒ぐらいでできるrailsのデプロイ mongrel_rails cluster::configure Writing configuration file to config/mongrel_cluster.yml.config/mongrel_cluster.yml log_file: log/mongrel.log port: 4000 pid_file: tmp/pids/mongrel.pid servers: 5 environment: production prefix: /shiritori mongrel_rails cluster::start すると4000~4004の5つが起動しました starting port 4000 starting port 4001 starting port 4002 starting port 400
MongrelでRailsをデプロイ - shokaiの日記の続きの状態で、mongrelが4000~4004番portで起動している状態から。 http://shokai.mag.keio.ac.jp/は普通のapacheのDocumentRoot以下で見せておいて、 http://shokai.mag.keio.ac.jp/shiritori/以下だけをmongrelで起動してるrailsにproxyする つまりVirtualHostは使わない。 sudo a2enmod proxy_balancer sudo a2enmod proxy sudo a2enmod proxy_http/etc/apache2/conf.d/shiritori.conf ProxyPreserveHost Off ProxyRequests Off <Proxy *> Order deny,allow
http://shokai.mag.keio.ac.jp:3000/words のNewWordから投稿できる。しばらく動かしておいてみる modelの入力値をチェックするvalidateで実装した class Word < ActiveRecord::Base validates_presence_of :item, :message => '入力されていません' validates_uniqueness_of :item, :message => 'すでに使われた言葉です' def validate w = Word.find(:first, :order => "id DESC") return if w == nil # 初投稿の時 if item[0] =~ w.item[-1,1] # 最後の文字が同じか? errors.add(:item, "しりとりしてください。前の人は#
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く