ごあいさつ
この度、株式会社ピカントの取締役に就任してしまいましたとさ。
まあ、ひきこもりは続けるし、収入はないけどナー。
Emacsのpython-modeのインデント設定をGoogle様の教え通りにする
最近Pythonづいているワケですが、Google様の出しているGoogle Python Style Guide(日本語訳)とやらに、以下のような教えが。
コードブロックのインデントはスペース 4 つとします。
ふむ、まさにその通り、ということで、さっそく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は試したけど、このまんまで動いた。ちゃんと検証してないけど。

