ruby

rubyでクローラ(hatenaのURL取得)

rubyでクローラ hatenaダイアリーの2018年の全記事のURL取得 require 'anemone' urls=['http://d.hatena.ne.jp/arupaka-_-arupaka/archive'] Anemone.crawl(urls,:delay=>3,:depth_limit=>2) do |anemone| anemone.focus_crawl do |page| #page.links.kee…

cygwin でruby gems が実行できない

以下のエラーで cygwinでruby gems が実行できない $ gem install selenium-webdriver ERROR: Loading command: install (Fiddle::DLError) can't load kernel32 ERROR: While executing gem ... (NoMethodError) undefined method `invoke_with_build_args'…

selenium-webdriverを導入 javascriptのクローリング

https://qiita.com/yulily@github/items/c3edbe25e84280c17776 javascriptのクローリング gem install websocket-driver gem install selenium-webdriver gem install poltergeist http://shoprev.hatenablog.com/entry/2014/04/14/210529 クロームドライバ…

rubyでランダムなカタカナの文字列を生成

8文字の例 str0="アイウエオカキクケコサシスセソタチツテノナニヌネノハヒフヘホマミムメモヤユヨワヲン" str0.chomp.split("").sample(8).join()

rubyで数値計算 更新版. ruby-gslの導入

rubyで数値計算を行うためにrb-gslを導入する. 古い記事 http://d.hatena.ne.jp/arupaka-_-arupaka/20091024/1256391373 では情報が古くなったので、更新.(1)gslのソースをとってくる->インストール 1064 cd 1065 wget http://mirror.jre655.com/GNU/gsl/g…

ruby-mecabの辞書の切り替え mecab-ipadic-neologdを使う

プログラム require 'Mecab' m=MeCab::Tagger.new("-Owakati -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd") print m.parse("ちょい飲み")

ファイル1の1列目に存在しないファイル2の列を出力するスクリプト diff 差分

ファイル1の1列目に存在しないファイル2の列を出力するスクリプト. joinでできるかも。。diff的になもの $ cat diff_1.rb require 'optparse' require 'set' option={} opt=OptionParser.new opt.on('-b VAL'){|v| option[:b]=v} opt.on('-n VAL'){|v| o…

rubyでコマンドオプションを受け取る optparse

rubyでコマンドオプションを受け取る optparse 基本 VALは受け取る変数.なんでもよい. opt.on('-o VAL') -oオプションで変数を受け取る場合VALはvalでもhogehogedめお文字列ならOK. 引数なしは認めない opt.on('-o') だと引数をうけとらず true or false …

 単語リストの複合を分解

$ cat food_base_word_mecab.rb require 'MeCab' mecab=MeCab::Tagger.new() f=open("food_base_more_than10.txt") f.each{|i| word=i.split(",")[2] count=i.split(",")[5] #puts str; #str="すもももものもものうち." # str="ドライカレー" node=mecab.par…

rbenvで使っていたrubyでrequire できなくなる

rbenvで使っていたrubyでrequire できなくなる

rubyでCSVファイルの併合

rubyの併合スクリプト rubyでCSVファイルの併合 require "csv" a=Hash.new() CSV.foreach("test.csv"){|i| a[i[0]]=i[1]} b=Hash.new() CSV.foreach("test.csv"){|i| b[i[0]]=i[1]} d=(a.keys() + b.keys()).uniq d.each{|i| puts [i,a[i],b[i]].join(",")} …

rubyのワンライナーで日付に関して数値がないところを0で埋める.

ruby -r Date -ane 'BEGIN{h=Hash.new(0);s2=Date.parse("2015-04-08");s1=Date.parse("2006-11-01");};h[$F[1]]=$F[0]; END{(s2-s1).to_i.times.each{|j| v=(s1+j).to_s; print v+","+h[v].to_s+"\n";}}' tmp0 入力ファイル 268 2006-11-01 239 2006-11-02 …

mecabとrubyである単語の前後にある単語を取得

以下でなく連続ワード対応版を使う:: (1)node.feature.split(",")[6].encode("UTF-8","UTF-8") -> node.surfece featureだと未知語がでなくなる問題がある。 (2)複合語版を使うべき。 http://d.hatena.ne.jp/arupaka-_-arupaka/20150511/1431327544m…

リストに含まれる単語を数えるスクリプト

リストに含まれる単語をカウント f=open("food_list0_b.txt") food_list=[] id_list=[] f.each{|i| i.chomp! j=i.split(",") id_list.push(j[0]) ; food_list.push(j[1]) ; } #food_list.each{|i| puts i} #f2=open('buumu_kanrenbun3_str.csv') f2=open('bu…

rubyで食べたいの前にくるの単語を抽出

すごく原始的だけど。。 rubyで食べたいの前にくるの単語を抽出 # -*- coding: Utf-8 -*- require 'MeCab' m=MeCab::Tagger.new() text1="おはよう.うさぎを食べたい" node=m.parseToNode(text1) # node=node.next #node=node.next.next strold1="" strold2=…

cygwinでmecab-rubyを導入.

cygwinでmecab-rubyをいれるとはまるので修正方法. http://wiki.tokor.org/index.php?Cygwin%A4%C7%A4%CEMeCab-0.98%A4%CE%A5%D3%A5%EB%A5%C9%A4%C8mecab-ruby%A4%CE%C6%B3%C6%FE%A1%A1-%A1%A1%A5%C4%A1%BC%A5%EB%B7% を基本的に参考にさせてもらいました。…

データベースsqlite3をrubyのCGI (Web)経由で使うときの注意

データベースsqlite3をrubyのCGI (Web)経由で使うときの注意。。 権限がなくてデータベースに書き込めないときになにもエラーをはかないで はまるので注意.

rubyでcookieを使った原始的ななセッション管理CGI

基本編 (1)セッションID(デフォルト値)を送信するCGI CGI Cookieを利用する. (i)CookieはPATHが一致しないとブラウザが送信してくれないので、cookieの"path"の値に注意する. デフォルトは発信したフォルダ. (ii)cookieはHeaderで単純送信 #!/usr/lo…

マウスオーバーしたら図をだす

ParentsUntil文で行にいき、その後ろにdivダグを挿入し, divダグのに中身を図をいれる.表にマウスオーバーしたらリンク先の図をだ $(".fig").hover( function(){ link1=$(this).attr("href"); $(this).parentsUntil("tr").after('<div id="tmp1"></div>'); $("#tmp1").append('<img src="'+link1+'" width="100%" height="100%" />'…

google chrome でweb解析

(1)どんなログがながれているか? Network -> ファイル名-> Headers: HTML Hedear Response: 実際の文字列(2)エラーとかのチェック -> Console (3)要素の解析 Elements (4)ライブラリなどのSource -> Sources

たぬきの絵を返すCGI

たぬきの絵を返すCGI require 'open-uri' #require 'cgi' #cgi=CGI.new f=open("http://upload.wikimedia.org/wikipedia/commons/thumb/5/51/Tanuki01_960.jpg/250px-Tanuki01_960.jpg","rb") #f=open("http://www.yahoo.co.jp") #f=open("http://ja.wikiped…

rubyからsqlite

準備 yum install sqlite gem install sqllite3 以下のファイルをtableにつめる. food_list.txt 1,xxx 2,yyy 3,zzz 4,aaa 確認 コード require 'rubygems' require 'sqlite3' db=SQLite3::Database.new("syoku.sqlite3") db.execute("drop table if exists …

rubyのワンライナー(一行野郎)でファイルの1行目に連続的に日付を付与

2014年2月1日が基準にすると、、 1010_ss.csv NA,NA,1,1 NA,NA,2,3 NA,NA,3,5 NA,NA,7,8 を 2014-02-01,2014-02-01,1,1 2014-02-02,2014-02-02,2,3 2014-02-03,2014-02-03,3,5 2014-02-04,2014-02-04,7,8 に変える. ruby -r "Date" -F"," -ane 'BEGIN{k=0}…

ParseDateが最新版rubyだと使えなくなったので使えるように変更する方法

http://docs.ruby-lang.org/ja/1.8.7/method/Date/s/parse.html 変更前 a1=ParseDate.parsedate(from_data) a2=ParseDate.parsedate(to_data) a1b=Date::new(a1[0],a1[1],a1[2]) a2b=Date::new(a2[0],a2[1],a2[2]) 変更後 a1b=Date.parse(from_data) a2b=Dat…

2つの値の最小値を求める1行野郎

2つの値の最小値を求める1行野郎 a=3 b=4 ruby -e "puts [$a,$b].min"

ファイルのパーミッションをrubyでいじる

FILEのパーミッションをrubyでいじる FileUtils.chmod(0777,output_dir) あたまに0がつくのがポイント。

cygwin にruby on rails をcygwin上に導入

gem update rdoc gem install rail これでOK 次に最初のプログラム http://railstutorial.jp/chapters/beginning?version=4.0 を参考にやっていくこの方とほぼ同じはまり方 http://blog.livedoor.jp/nures/環境のrubyは ruby 1.9.3p545 (2014-02-24) [x86_…

cygwinにmecab-rubyの導入

mecabの導入は, http://d.hatena.ne.jp/arupaka-_-arupaka/20140701/1404175285 を参考に. mecab-rubyの導入 http://antimon2.hatenablog.jp/entry/2012/07/08/092702を参考に インストール wget https://mecab.googlecode.com/files/mecab-ruby-0.996.tar…

ruby一行野郎で日付の差分をもとめる

データ tmp.csv 2007-1-1,-,1 2007-1-2,-,1 2007-1-3,-,1 2007-1-5,-,1 2007-1-6,-,1 2007-1-12,-,1 cat tmp.csv | ruby -r Date -F"," -alne 'BEGIN{str1=Date.parse("2007-11-1")}; puts str1.to_s+","+$F[1]+","+(str1-Date.parse($F[0])).to_i.to_s; str…

rubyでデフォルト値をもつ二重Hash

間違え: a=Hash::new() a.default=Hash::new() a["1"]["3"]=5 puts a["2"]["3"] 5が表示される.おそらく参照がおかしくなる.正解(きちんと初期化 Hash.new.each{...} は...がデフォルト処理): a=Hash.new.each{|hash,key| hash[key]=Hash.new(0)} a["1…