投稿者「たなか」のアーカイブ

アイリスPC

毎日どんな下らないことでも書こうと思ってるけど、すぐサボるひきこもりなのです。
さて、四六時中、なんかしらの液晶画面を覗いているので、目が疲れるのです。
そんな時の素敵な味方がこれ。
f:id:calnarsa:20110106135904j:image:medium
アイリスPC、愛用しております。
f:id:calnarsa:20110106135950j:image:medium
目薬はいろいろ使ってきたけど、充血がとれる血管収縮剤入りはヤバい情報しかないし、無駄にメントールだけ入って刺激があるだけのものとか、どうしようもないものが多くて、落ち着いた先がアイリスPCでしたとさ。
でもねー、アイリスPC、なかなか売ってないんだよねぇ… もっと手軽に入手できるようになってほしい今日この頃です。

Emacsのpython-modeのインデント設定をGoogle様の教え通りにする

最近Pythonづいているワケですが、Google様の出しているGoogle Python Style Guide(日本語訳)とやらに、以下のような教えが。

コードブロックのインデントはスペース 4 つとします。

http://works.surgo.jp/translation/pyguide.html#id52

ふむ、まさにその通り、ということで、さっそくEmacsのpython-modeを教え通りに設定してみた。

(add-hook 'python-mode-hook
	  '(lambda()
	     (setq indent-tabs-mode nil)
	     (setq indent-level 4)
	     (setq python-indent 4)))

インデントはタブかスペースか、幅はいくつか、などの宗教論争に関わる気はないのであしからず。

Google AJAX Feed APIで遊んでみた

Google AJAX Feed APIで遊んでみたのでメモ。
JavaScriptのセキュリティ上の制限としてSame Origin Policyつーのがあって、要はJavaScriptコードの置いてあるサーバ以外にJavaScript内からアクセスが出来ない。
この制限のため、例えばRSSリーダーを作ろうとすると、いろんなサイトからRSSフィードを取ってきたいけどダメー、という問題にぶちあたってしまうわけです。
この制限を回避するためによくやるのが、JavaScriptコードが置いてあるのと同じサーバにRSSフィード取得するCGIスクリプトでも用意して、JavaScriptからはそのCGIスクリプトにアクセスする方法。
で、こんなものみんながみんなバラバラに書いていても仕方なかろう、ということで天下のぐーぐる様が用意してくれたのがGoogle AJAX Feed APIというわけですな。

使い方は、親切丁寧かつ日本語なドキュメントが用意されているのでそいつを読んでくだされ。

というわけで、みんなの愛するぐーぐる様のblogのAtomフィードを表示するサンプル書いてみた。

sample.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
<!-- -*- coding: utf-8 -*- -->
<html lang="ja">
  <head>
    <META http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Google AJAX Feed API のサンプル</title>
    <script type="text/javascript" src="http://www.google.com/jsapi"></script>
    <script type="text/javascript" src="./sample.js"></script>
  </head>
  <body>
    <table border="1" id="rss_list_tbl"></table>
  </body>
</html>

sample.js

// -*- coding: utf-8 -*-

google.load( "feeds", "1" );

function initialize() {
    var feed = new google.feeds.Feed( "http://googlejapan.blogspot.com/atom.xml" );
    feed.setNumEntries( 10 );
    feed.setResultFormat( google.feeds.Feed.JSON_FORMAT );

    feed.load( function( result ) {
        if ( result.error ) {
	    return;
	}

        var container = document.getElementById( "rss_list_tbl" );
	
        for ( var i = 0; i < result.feed.entries.length; i++ ) {
	    var entry = result.feed.entries[ i ];

	    var tbl = document.createElement( "tr" );
	    
	    var title = document.createElement( "td" );
	    var titleText = document.createTextNode( entry.title );
	    title.appendChild( titleText );
	    tbl.appendChild( title );
	    
	    var link = document.createElement( "td" );
	    var linkText = document.createTextNode( entry.link );
	    link.appendChild( linkText );
tbl.appendChild( link );
	    
	    var content = document.createElement( "td" );
	    var contentText = document.createTextNode( entry.content );
	    content.appendChild( contentText );
	    tbl.appendChild( content );
	    
	    container.appendChild( tbl );
        }
    } );
}

google.setOnLoadCallback( initialize );

らくちんらくちん。

PythonでRSSフィード取得してみた

RSSフィードを使って悪だくみをしようと思い立ち、久しぶりにRSS周りをいじることに。そんでもって、たまにはイマドキの言語で書こうとPythonで書いてみることに。
いろいろGoogle様にお伺いを立てたところ、Pythonではfeedparserを使うのが手っ取り早い模様。
ということで、早速feedparserをインストール。
Ubuntu上でいじっているのでこんな感じ。

$ sudo apt-get install python-feedparser

インストールできたので、Google様にお伺いを立てつつ、サンプルコード作成。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# feedparser のサンプルコード
#

import feedparser

rssurl = "http://d.hatena.ne.jp/calnarsa/rss"
fdp = feedparser.parse( rssurl )
	
for entry in fdp[ 'entries' ]:
    print "Title: ", entry[ 'title' ]
    print "URL: ", entry[ 'link' ]
    print "Description: ", entry[ 'description' ]
    print "Date: ", entry[ 'updated' ]

上のコードを実行してみたら、こんな感じ。

$ ./rss.py
Title:  Bazaarのある生活
Description:  基本的に古いタイプのプログラマなもので、バージョン管理とかメンドクセーとか言い出す奴なのです。 なので、自分しか使わねーソースはバージョン管理無視、あるいはがんばってrcs使えばじゅーぶんじゃん、で済ませるヤローなのですが、さすがにヤバくなってきました。 と
Date:  2010-08-23T16:59:12+09:00
Title:  はじまり
Description:  いまごろになってはじめてみた。 特に意味はない。 ただ思いついただけ。
Date:  2010-08-20T16:34:25+09:00

うん、ちゃんと取れてるね。
上のサンプルコードではRSS1.0形式を想定してるけど、feedparserはRSS1.0, 2.0, Atomに対応している感じ。
RSS2.0は試したけど、このまんまで動いた。ちゃんと検証してないけど。