パスワードを忘れた? アカウント作成
818481 journal
日記

d3pの日記: 日記のRSSをsf.jpに移転

日記 by d3p

1ヶ月前から準備して、9月末には移転準備できていたのですが、
半月ほど忘れてましたというorz
その間、タグの書式が変わったりして旧サーバでエラー出てるのに気づかなかったりして、
わずかな利用者様にはご迷惑おかけしました。
旧鯖のは消しますので、sf.jp鯖のatomフィードをご利用ください。
現在のソースもプロジェクトページで公開しています。

新atomフィード→http://sjjfeed.osdn.jp/journals.atom

プロジェクトページ→http://osdn.jp/projects/sjjfeed/simple/

#ところでどこかにfirehose.plのパラメータの情報ないですかねぇ?

788344 journal
Ruby

d3pの日記: 日記のRSS

日記 by d3p

/.Jの日記のRSS(http://srad.jp/journals/rss)が前と大分変わってしまい、
ログインしないと実質使えないみたいやら、
content:encodedがなくなってるやら、
前みたいにタイトルにユーザ名入れて欲しいやらで、
http://srad.jp/journalをパースしてAtomにして返すrubyスクリプト組んでみました。
単にNokogiri使ってみたかったのもありますが。
最初はRSS返すように作っていたのですが、rubyのライブラリでCDATAがうまく返せなかったので断念…

一応キャッシュ作って負荷軽減。ツッコミ歓迎。NYSLで。

動いているもの→http://d3p.orz.hm/slashdot-j-journal.atom

↓ソース↓

#!/usr/bin/env ruby
 
# -*- coding: utf-8 -*-
 
require "rubygems"
require "nokogiri"
require "open-uri"
 
url = "http://srad.jp/journals"
atomfile = "./journals.atom"
atomxml = ""
 
class Journal
  attr_reader :title, :author, :description, :content, :url, :datetime
  def initialize(doc)
    #Nokogiriでパースしたデータを格納
    @title = doc.search("h2")[0].search("a")[1].content
    @author = doc.search("div.details")[0].search("a")[0].content
    @description = doc.search("div.p")[0].search("p").map{|c|c.content}.join()
    @content = doc.search("div.p")[0].to_html
    @url = doc.search("h2")[0].search("a")[1].attr("href")
    @datetime = parse_date(doc.search("time")[0].attr("datetime"))
  end
  def parse_date(str)
    /(\d+)年(\d+)月(\d+)日.*?(\d+)時(\d+)分/ =~ str
    return Time.local($1.to_i, $2.to_i, $3.to_i, $4.to_i, $5.to_i)
  end
end
 
#ローカルのatomファイル読みに行く関数
def atom_from_local(af)
  f = File.open(af, "r")
  f.flock(File::LOCK_EX)
  atomxml = f.read
  f.flock(File::LOCK_UN)
  f.close()
  return atomxml
end
 
#前回の更新から1分経過していないときはローカルのAtomを返す
if (FileTest.exist?(atomfile)&&(Time.now - File.open(atomfile).mtime < 60))
  atomxml = atom_from_local(atomfile)
else
  f = File.open(atomfile, "w")
  #誰かがファイルロックしてるときは更新を待ってローカルのAtomを返す
  if !(f.flock(File::LOCK_EX || File::LOCK_NB))
    atomxml = atom_from_local(atomfile)
  else
    doc = Nokogiri::HTML(open(url))
    articles = doc.search("article")
 
    atom = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
      xml.feed("xmlns" => "http://www.w3.org/2005/Atom") do |feed|
        feed.title "Slashdot Japan Journal Atom"
        feed.subtitle "/.J みんなの日記のAtom"
        feed.link(:href => url)
        feed.author do |author|
          author.name "Slashdot Japan Journal Atom Script"
        end
        feed.updated Time.now.xmlschema
        articles.each do |article|
          if (article.attr("data-fhtype") == "journal")
            j = Journal.new(article)
            feed.entry do |entry|
 
              entry.link(:href => j.url)
              entry.title "[#{j.author}] #{j.title}"
              entry.summary j.description
              entry.author do |author|
                author.name j.author
              end
              entry.published j.datetime.xmlschema
              entry.updated j.datetime.xmlschema
              entry.content(:type => "html").text j.content + "<a href='#{j.url}'>本文を読む</a>"
            end
          end
        end
      end
    end
    atomxml = atom.to_xml
    f.write(atomxml)
    f.flock(File::LOCK_UN)
    f.close()
  end
end
 
#出力
puts "Content-type: text/xml\n\n"
puts atomxml

345315 journal

d3pの日記: Ads by Google 2

日記 by d3p

変な広告が。

>≪福岡県の廃業≫
>1個から喜んで対応いたします。 見積もり無料!当日や深夜の回収もOK

夜逃げ屋?いや、回収ってことは…((((;゚Д゚))))ガクガクブルブル

342048 journal

d3pの日記: 松本復興相:辞表提出 岩手、宮城県知事への不適切発言で 1

日記 by d3p

毎日.jpの見出し
http://mainichi.jp/select/seiji/news/m20110705k0000e010004000c.html

×松本復興相:辞表提出 岩手、宮城県知事への不適切発言で
○松本復興相:辞表提出 岩手、宮城県知事および東北地方の市町村・東北放送・九州人・B型・民主党・自民党・公明党・チームドラゴンへの不適切発言で

たった一週間でこれだけケンカを売るとは。

340378 journal

d3pの日記: ネットライフゲームやってみた

日記 by d3p

シマンテックの例のヤツやってみたけど、突っ込みどころ多すぎ。
こんなゲームしてノートン買いたくなる人なんているの…?

謎の仕様
・初期の所持金が0円で最初の給料日が来る前にセキュリティマスが来るので、ノートンは借金して買わなくてはならない。
・個人情報流出、クレジットカード不正使用された、詐欺でお金奪われた状態でも「なんと!ノートンのおかげで助かった!!」の一言で解決するノートン。助け方は一切不明。「ノートンありがとぉおお!!」
・一度助けると消えるノートン。この状態で他のマスに止まると普通に被害に遭う。自動更新ないのー?
・ルーレットの番号の最大が10なのでルーレットの出目次第ではあっという間に終わる。超駆け足人生。
・男にも男のネットストーカー。給料イベントでもらえるのは月給なのに、ネットストーカーイベントの休職では年収持って行かれる。
・超無能ライバルウィルスバトラー。フリーソフトどころか何もないのと同じ。ただ、この世界では空っぽの預金口座や振り込み用口座から数百~数千万の金を盗むことができるスーパーハカーを相手にしないといけないので、このゲームの中では一番リアルな存在かもしれない。
・ゲーム後半は数百万~数億の損害が当たり前のように発生するので最初のTwitterアカウント入力による友人数×1,000円のボーナスはほとんどゴミ。やっぱり罠だった。

あり得ないモノ達
・無条件に200万投資してくれる謎のネット友人。
・ホストでも持てる限度額500万円のクレジットカード。
・30万円寄付すると3000万円の損害賠償を寄付者に請求する寄付団体。
・盗まれて借金になる謎の預金5000万円。この世界の預金は盗まれると借金になるらしい。
・盗まれると2億円の借金を生み出す謎の企画書。

一番あり得ない
・ネット恋愛で美人妻をゲット。チクショウ

typodupeerror

海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs

読み込み中...