iCalデータの解析

PHP

そういえばこれまでiCalフォーマットというのを扱ったことなかったので、少し調べてた。 https://tools.ietf.org/html/rfc5545 試しにlivedoorで配信されてるiCal形式のお天気情報をローカルに保存。 http://weather.livedoor.com/weather_hacks/ $ wget htt…

レスポンスヘッダのX-Powered-Byの消し方

nodejs + expressアプリケーションのレスポンスヘッダに出力される X-Powered-By: Expressを消したい場合。こうすればいいらしい。 var express = require('express'); var app = express(); app.disable('x-powered-by'); 試したバージョン。 $ npm info ex…

2.1系もrubiniusに期待。

てきとうに重そうな再帰処理を用意 $ cat fib.rb #!/usr/bin/env ruby # -*- coding: utf-8 -*- def fib(n) return n if n < 2 fib(n - 1) + fib(n - 2) end puts 'fib(10) = %s' % fib(10) puts 'fib(20) = %s' % fib(20) puts 'fib(30) = %s' % fib(30) pu…

RedmineでPHPファイルを表示したときの文字化け対応

redmineのリポジトリでphpファイルを表示するとソースコード内の日本語が文字化けしていたので、調べてみるとcoderayの問題との記事がいくつか見つかった。そんで、coderayのほうを調べにいってみると、どうやらv1.0.9で修正されたらしい。 https://github.c…

要素がシンボルの配列(空白区切り)欲しい

x要素がシンボルの配列(空白区切り)欲しい, ○Ruby2.0.0で%i()使おう! | 實松アウトプット上記エントリーを読んでみて、「要素がシンボルの配列」が得られる%記法はないことを知った。 %w(foo bar baz).map &:to_sym #=> [:foo, :bar, :baz] 現状だと上のよう…

timecopライブラリにpull request

昨日くらいに timecopというライブラリをRuby1.8系で使った場合に起こる問題を修正してPull Requestを送ったところ、程なくして取り込んでくれた。まだRuby1.8系を使っている人がどのくらいいるか分からないけど、timecop-0.5.4に対応が入ったらしい。 https…

Ruby2.0のRefinementsを試す。

http://el.jibun.atmarkit.co.jp/rails/2012/11/ruby-20-8256.htmlRuby2.0 のRefinementsなる機能を試す。 "クラス拡張の影響範囲を名前空間に限定する" とか。test_refinements.rb #!/usr/bin/env ruby # coding:utf-8 module Hoge module Refinements refi…

MongoDBが起動しなくなった

久しぶりにyum updateなどしてたら出力内容にmongoなる文字列を見かけてMongoDBの存在を思い出した。 $ cat /etc/redhat-release CentOS release 5.8 (Final) $ rpm -aq | grep mongo mongo-10gen-server-2.2.1-mongodb_1 mongo-10gen-2.2.1-mongodb_1v2.2.1…

Ruby2.0のlazyを試してみる

Ruby2.0のプレビュー版がでたとのことで、新機能のlazyを試してみる。 #!/usr/bin/env ruby # coding:utf-8 exit unless RUBY_VERSION >= '2.0.0' require "benchmark" require "prime" a = b = nil Benchmark.bm(10) do |x| x.report("not lazy:") { a = (1…

2つの配列から重複を省いたり、重複を得たり

2つの配列から重複を省いたり、重複を得たり 割とよく使うのにすぐ忘れるからメモ。ruby RUBY_VERSION #=> "1.9.3" a = [1,2,3,4,5,6,7,8,9,10] b = [1,3,5,7,9,11] a - b #=> [2, 4, 6, 8, 10] a & b #=> [1, 3, 5, 7, 9] python import sys print(sys.vers…

クラスを示す文字列からインスタンスを得る方法

クラスを示す文字列からインスタンスを得る方法 検索したら普通に出てきた。 http://bugs.ruby-lang.org/issues/767 def my_const_get(name) name.split(/::/).inject(Object){|o,c| o.const_get(c) } end module Hoge class Foo end end my_const_get('Hoge…

続:クラスマクロ

http://d.hatena.ne.jp/UNKK/20110801/p1 こちらの記事の追記を読んでみて、なるほど自分が前回書いた例だと全てのクラスを汚染してしまう。その点を踏まえて色々やっていたら、以下のようになった。 とはいっても、元記事のeigenclassメソッドをラムダに差…

クラスマクロ

こちらの記事のクラスマクロについて考えてみた。 http://d.hatena.ne.jp/UNKK/20110801/p1 #!/usr/bin/env ruby # -*- coding: utf-8 -*- class Module def my_macro(arg) self.class.instance_eval do define_method("Gorira" + arg.to_s) do "Gorira" + a…

Rubyで配列内の重複する値を抽出する方法

こちらの記事の Rubyで配列から重複している値を抽出するのを考えてみた。 http://d.hatena.ne.jp/kiyo560808/20110801/1312196444 a = [1, 2, 3, 4, 5, 6, 5, 4] a.uniq.reject{|i| a.index(i) == a.rindex(i)} #=> [4, 5] もしくは a = [1, 2, 3, 4, 5, 6,…

RVMがアップデートできない

何気なくRVMをアップデートしようと思ったのだが、以下のエラーが発生した。 今、途方に暮れている中。 $ rvm get latest Original installed RVM version: rvm 1.5.2 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/] rvm-<html> %</html>…

macが届いた

なんと、我が家にmac book proが届いた!

RVMのアップデート方法が変わってた

久しぶりにRVMをアップデートしようと思って、「rvm update」を実行してみたらエラーが出た。 $ rvm version rvm 1.2.8 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/] $ rvm update ERROR: rvm update has been removed. S…

0と1を次々返す方法

0と1を次々返す方法 Algorithm - 0と1を次々と返す簡単なお仕事 この記事を見て自分でもやってみる。flipflop.py #!/usr/bin/env python # -*- coding: utf-8 -*- def flipflop(p=False): def ret(): ret.p = not ret.p return ret.p ret.p = not p return r…

MongoDBのmap/reduceを試してみる。

以前(http://d.hatena.ne.jp/stog/20100531/1275317576)作成したコレクションをmap/reduceを使って"type"別に集計してみる。コレクションの中身はこんな感じ。 $ mongo mytest MongoDB shell version: 1.4.4 url: mytest connecting to: mytest type "help…

sqlite3-ruby 1.3.0のインストールが失敗する。

まず、環境はこんな感じ。 # cat /etc/redhat-release CentOS release 5.4 (Final) # rpm -aq | egrep '^sqlite' sqlite-3.3.6-5 sqlite-devel-3.3.6-5 # ruby -v ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-linux] # gem -v 1.3.7 gemでsqlite3-rubyの…

curb(Rubyのcurlバインディング)で並列リクエストを試す

gemでインストールしたcurb(Rubyのcurlバインディング)のrdocを見ていたらCurl::Multiっていうクラスがあって、並列でURLリクエストできそうだったので試してみた。 ※2010/06/15現在、WEB上に置いてあるcurbのオンラインドキュメントは結構古いようで(CURB_…

HTML取得&解析をするPythonスクリプト

ついでにPythonでもYahoo!Japanのトピックス一覧を取得するやつをやってみる。 使用ライブラリは標準添付のurllib2 と easy_installでインストールした lxmltest.py #!/usr/bin/env python # -*- coding:utf8 -*- import urllib2 import lxml.html # urlを指…

HTML取得&解析をするRubyスクリプト

簡単!たった13行のコードで HTML取得&解析をするPerlスクリプト 簡単!たった2行のコードで HTML取得&解析をするrubyスクリプトなんか流行ってる? ぼくもYahoo!Japanのトピックス一覧を取得するやつをRubyでやってみました。 使用ライブラリは標準添…

日時を使った検索がうまくいかない(回避案)

前回(http://d.hatena.ne.jp/stog/20100526/1274899622)の続き。 MongoDBで日時を使った検索をするとき、1970-01-01より前の日付がうまく扱えない件について、自分が使い方を間違っているのか、そういう仕様なのか未だに分かっていない。。なので、以下の…

日時を使った検索がうまくいかない

MongoDBで検索するときの条件として日時を使ってみたのだが、意図した結果が得られない。 前回(http://d.hatena.ne.jp/stog/20100525/1274890034)作ったデータベースに対して以下のように検索してみる。mongodb_find_date.py #!/usr/bin/env python # -*- …

PythonからMongoDBを使ってみる

とりあえず、こんな感じで適当なタブ区切りデータを用意した。 dummy.tsv(文字コード:UTF-8) name type sex birthday おがわ human M 1980/11/03 たかはし human F 1974/02/20 たなか human M 2003/01/15 さとう human F 1960/10/05 ポチ dog F 2005/06/0…

MongoDBのPython用ドライバをインストール

※setuptoolsのバージョン0.6c9以上が必要らしいので適宜アップデートする。 # easy_install -U setuptools pymongoをインストール # easy_install pymongo インストールされたパッケージの確認 $ grep 'pymongo' /usr/lib/python2.4/site-packages/easy-inst…

CentOS5.4にyumでMongoDBをインストール

CentOS5.4にyumでMongoDBをインストールしてみる。 # cat /etc/redhat-release CentOS release 5.4 (Final) http://www.mongodb.org/display/DOCS/CentOS+and+Fedora+Packages を参考にパッケージの取得先を追加する。 # cat /etc/yum.repos.d/MongoDB.repo …

easy_installでインストールしたパッケージの一覧

pythonのeasy_installでこれまでにインストールしたパッケージを確認しようと思ったのだが、一覧表示させる方法が分からなかった。仕方なくパッケージがインストールされるディレクトリ(/usr/lib/python2.4/site-packages/)に移動したところ easy-install.…

RSS1.0を検索する際の名前空間の指定

ここ最近Pythonのlxmlモジュールを試していて、RSS1.0形式のデータをXPathで検索する場合は名前空間を指定しなければならないことを知った。 例えば、RSSから各記事のタイトル部分を取得したいとして RSS2.0の場合、「 /rss/channel/item/title 」でOKなのだ…