laclefblog logo

Thu, 27 May 2010

Googleのパックマン

世の中には、平和を数値で表す人達がいる。

1面はクリア出来るようになったが、2面以降はまだクリアしたことが無い。集中力が無い。

Sat, 22 May 2010

WebM

Appleが不支持と聞いて「えー」。特許に関して不安要素があるとか、H.264より遅くて不完全だとか。じゃあそれを改善するために動かないのかなあ、と。

こんな要素をHTML5の規格という中に含まないで欲しいものだ。標準規格はもっとメタなレベルであって良いのではないか。統一されることが確かにソフトウェア開発者/利用者にとってはありがたいが、一時の気の迷いが規格になることもあり得る。

Fri, 21 May 2010

Google TV

これがGoogle TVらしい。

ファミリィを狙っている辺り、太ももの上にはiPad、リビングの壁にはGoogle TVという風景が浸透するか。HTML5製ゲームが普及するか。

AndroidベースでFlashが搭載されていれば、radiko.jpが聴けるなあと思ったり。しかしラジオ広告はテレビやWebのように見える広告ではないから難しいかもしれない。

Mon, 17 May 2010

Googleストリートビューカーが無線LAN通信傍受

Googleがやったことで「誤って」というのは珍しいなあと思った。勿論、後からつけた言い訳なのかもしれないが。

SSIDやMACアドレスの収集は、PlaceEngineでもiPod touchが使っている無線LAN位置測定のサービスでも使われていることなのだから、今更気にするほどの事でもない。そういう技術があること、そしてそれがGPSが届かない屋内で能力を発揮出来ることを知らない人達が、暫く騒ぐことだろう。

Tue, 04 May 2010

Googleと3Dデスクトップ

これはChrome OSに搭載くるか。Android携帯電話で3Dを使っても仕方ないから、タブレット型端末で採用されるのかもしれない。そうすれば、机の上に置いて3D on 3Dだ。

3Dとなれば、オブジェクトを直接触りたくなる。となると、マウスもタッチパネルもまだまだ、3Dを活かしきれていないインタフェースだと言える。アダルトゲーム分野ではWebカメラを用いて画面中のキャラとの目線合わせに用いるとか、キャラの動きに合わせてナニを動かすとか、色々頑張っているようで、これからOSのデスクトップ分野もソフトとハードの両面から進化を見せてくれるだろう。

Sun, 18 Apr 2010

Google Cloud Print API

「俺のプリンタは俺のもの。お前のプリンタは俺のもの。」計画始動。

Google Cloud Print APIはいかにもハードとWebの融合のイメージを具現化したようなオープンスタンダードプリンタAPIになるようだ。Googleさんの考えることはデカイっす。

Mon, 12 Apr 2010

Googleが見る意味

ソーシャルメディアからのリアルタイム情報の取得、ノイズの除去と流れを読むこと、膨大な量の知識を獲得し機械が意味を理解すること。

この先に、限界はあるのだろうか。落ち着くところはあるだろうが、自然言語処理の研究、技術が進むにつれてもっと先に、優れた結果がある気がする。人はこれまで通り、人に理解してもらうことを前提に文章を書いて、機械はそれを人間に近い思考を持って読み取るのか。

じゃあ、検索ももっと人寄りな方法を実現しても良さそうだ。音声解析検索にしても、単語やフレーズを考えるというのが煩わしい。

Fri, 12 Feb 2010

Google Buzzバックアップ(とTwitter転送)

現在、Google Buzzは指定ユーザのpublic Buzz読み込みAPIを提供している。`Developer's Guide - Google Buzz API - Google Code`_ によると、以下のURL先を読むことでAtom formatのデータを取得出来る。

http://buzz.googleapis.com/feeds/{user}/public/posted

読めるのであれば、バックアップを取ったり、Twitterに転送することが出来る(リアルタイムというわけにはいかないが)。

#!/usr/bin/python
# -*- coding: utf-8 -*-

import lxml.etree
import time
import sys
import googl          # my module
import twitter_oauth  # my module
if sys.version_info[:2] >= (2, 5):
    import sqlite3
else:
    from pysqlite2 import dbapi2 as sqlite3


DB_FILE = 'gglbuzz_backup.db'
def init_db(con):
    con.execute("""CREATE TABLE gglbuzz(
        id TEXT PRIMARY KEY,
        timestamp INTEGER,
        text TEXT,
        url TEXT
        )
    """)
    print("create db '%s'" % DB_FILE)

Buzzバックアップデータベースにはsqliteを用い、id、timestamp(UNIX Time)、テキスト、Google Buzz上のURLを保存する。実際のBuzzには場所情報や写真など色々含まれているので、ちゃんとバックアップすることを考えると、もっと列を追加する必要がある。Atomデータの解析にはlxmlを使う。

def check_gglbuzz(con):
    url = "http://buzz.googleapis.com/feeds/laclef.yoshiyasu/public/posted"
    # url = "atom.xml"

    namespaces_dict = {
        "atom":"http://www.w3.org/2005/Atom",
        "thr":"http://purl.org/syndication/thread/1.0",
        "media":"http://search.yahoo.com/mrss",
        "activity": "http://activitystrea.ms/spec/1.0/"
        }

    root = lxml.etree.parse(url)

    entries = root.xpath(".//atom:entry", namespaces=namespaces_dict)
    for entry in entries[::-1]:
        id = entry.xpath("./atom:id", namespaces=namespaces_dict)[0].text
        content_text = entry.xpath("./atom:summary", namespaces=namespaces_dict)[0].text
        url = entry.xpath('./atom:link[@rel="alternate"]', namespaces=namespaces_dict)[0].attrib["href"]
        time_f = entry.xpath('./atom:published', namespaces=namespaces_dict)[0].text
        timestamp = int(time.mktime(time.strptime(time_f, "%Y-%m-%dT%H:%M:%S.000Z")))
        #print id, content_text, url, timestamp

        # check DB
        cur = con.execute('SELECT * FROM gglbuzz where id = "%s"' % (id))
        if cur.fetchone() == None:
            con.execute("INSERT INTO gglbuzz VALUES(?, ?, ?, ?)", (id, timestamp, content_text, url))
            con.commit()
            try:
                twitter_oauth.post_update(content_text[0:110] + " " + googl.get_short_url(url, None))
            except:
                con.execute('DELETE FROM gglbuzz where id = "%s"' % (id))
                con.commit()

データベースのコネクションを引数に取り、Google BuzzのAtomデータを取得/解析し、データベースに格納する。

データベースに格納する前に、Atomデータから取得したデータを以前データベースに格納したかをチェックし、未格納であれば格納、そしてTwitterに転送する。Twitter転送に失敗したら、データベースの格納を取り消す(次回再挑戦する)。

googlモジュールはURLをhttp://goo.gl/hogeに短縮するため、twitter_oauthモジュールはOAuth認証でTwitterと交流するためのもの。

if __name__ == "__main__":
    con = sqlite3.connect(DB_FILE)
    #init_db(con)
    check_gglbuzz(con)
    con.close()

スクリプト起動時には、まずデータベースとのコネクションを生成し、チェックが済んだら、閉じる。

後は、このスクリプトをcronに登録し、5分や10分間隔で動かせば、Buzzがバックアップされ、かつTwitterに転送される。

Wed, 10 Feb 2010

Google Buzz

何はともあれ、始まった。

Buzzという名前辺りが、揺れ動いて現れたり消えたりするものを対象にしていることを強く意識していることを表現している気がする。テキスト、写真、場所と最初から結構盛り込んだサービスだが、どうなるかな。

Google Buzz API - Google Code はいまいち揃っていないので、本格的に使うまでもう少し様子見が出来る。

準備として、TwitterのOAuth認証を勉強していたのだが、どうにも使い難い。これが主流になると思うと、少し嫌だ。だからと言って、代替手段は思い付いていない。

Sat, 16 Jan 2010

Googleと中国

21世紀にしては、しょぼい情報戦だったなあという程度の感想。

中国はそういうローカルネットワークが蔓延って、あの国民数で検閲前提をやってきたのだから、まあ偉いものだ。GoogleはGoogleで理想があるし、人と人、団体と団体、相容れないところもあることは、理解すべき。Google Book Searchに対する日本の対応もそんなに変わらなかった。

もう世界中から無視されない中国。中国が、それをどう受けるべきか分かっていない。ツンな奴だということだ。

話が内輪になってきた。