利他的な遺伝子

タイトルだけドーキンスのあれに引っ掛けているけど、中身は全然違う。こっちはエッセイっぽいというか、サイエンティフィックに寄り過ぎず、社会性動物としてのヒトとの利他性はどこから来るのかを論じていく。

筆者は利他的な遺伝子は母性本能の遺伝子に起源の可能性を考えているようであるが、どうなんだろうねー。

ProductName 利他的な遺伝子 ヒトにモラルはあるか (筑摩選書)
柳澤 嘉一郎
筑摩書房 / 1680円 ( 2011-06-15 )


  • いろいろな性格の中で遺伝性が最も強いのは外向性
  • 本能と学習はその区別が難しく、神経細胞のネットワークの視点から見ると本能も学習もその発現の基本的なメカニズムは同じ
  • 子煩悩は男性向けの言葉、つまり性差からくる
  • 子供の健全な発育には「いつもやさしく接してくれる特定のヒト」が必要

片付け習慣術

割とオーソドックスな内容

基本は増やさない

ProductName 毎朝3分仕事がはかどる片づけ習慣術
堂島 きみお
ぱる出版 / 1470円 ( 2010-12 )


  • そもそも片付けはなんのための片付けか?
  • 自分の調子の良い時間を知っておく
  • 人間関係もモノも整理の基本は分けること
  • 誰がやっても完成度の変わらない仕事はできるだけやらない

ザ・クリスタルボール

SCMのはなし。なかなか面白かった

ProductName ザ・クリスタルボール
エリヤフ・ゴールドラット
ダイヤモンド社 / 1680円 ( 2009-11-13 )


ISO 8601の日付フォーマットをPythonでparseするには

JSONで返ってきた日付フォーマットをPythonでparseするのはちょっとめんどくさい。

tuple_time = time.strptime("2004-06-03T00:44:35", "%Y-%m-%dT%H:%M:%S")

とやる場合にはtimezoneがパースできない。

"2009-06-10T19:00:00+09:00"

こういうやつはダメ。

こういうときにはdateutilを使えばいい。

import dateutil.parser
yourdate = dateutil.parser.parse("2009-06-10T19:00:00+09:00")

参考

Probable cause: too many IN/!= filters in query

GAE/Pythonで。

too many subqueries (max: 30, got 81)

ってことなので、INフィルターには最大30要素までしか入れられない。

リストを30づつに分割して3回クエリを投げて集めるようにしたけど、自動でやってくんないかな。

ProductName プログラミング Google App Engine
Dan Sanderson
オライリージャパン / 3570円 ( 2011-01-24 )


GAE / PythonでURL fetchしたりJSON parseする

JSONのほうはPythonのバージョンを2.6にあげればいいらしいんだけど2.5を使っているのでsimplejsonをGAEプロジェクトの下に配置して

import simplejson as json

ってやる。

URL fetchのほうはGAEで用意されているのでそれを使う

from google.appengine.api import urlfetch

これでjsonを返すweb apiにアクセスしてparseできるので、xooqで同じイベントに登録しているユーザーを探せるようにしておいた。

GAE楽しい。

ProductName プログラミング Google App Engine
Dan Sanderson
オライリージャパン / 3570円 ( 2011-01-24 )


学校のためではなく、人生のために学ぶ

ネクスト・ソサエティによると

継続的に学習、教育の必要な社会になるのは間違いなく、知識労働者の資本とは知識そのものであり、知識社会と知識経済においては知識が主たる生産手段だと。

資本主義社会においては、質の高い労働力を確保するための必要最低限の教育という意味合いで、(画一的な詰め込み型)学校教育というものが必要だったのだろうが、こういう考えは既に時代遅れなんだろう。

もっと子供と一緒に楽しみながら学ぶ機会を如何に設けてやるかが必要なのかなぁと思うことがある。僕自身が学校教育というものを重要視していないせいもあるのだけど、こういった学びのデザインというものを考えてあげられればいいなぁと思っている。

フィンランドの美術館、図書館、自然学校、建築学校、動物園など、義務教育ではない オープンな学びの場から、成人教育、シチズンシップ教育、若者支援、メディア教育、 そして、性的マイノリティや障がい者の支援の現場を訪ねるフィールドワーク。 「楽しさ」と多様な「学びの体験」を重視するフィンランドの実践を、カラフルな写真 とわかりやすいレポートで1冊にまとめました。

というわけで、ところどころ参考になった。

Node.jsとWebSocketでchatサーバーをつくる

週末にみんなNode.jsいじっていて楽しそうだったので、写経してみたら

TypeError: Cannot call method 'set' of undefined

って言われてうごかなかったので、調べたらdeprecatedらしい。

なので、コメントアウトして動かしてみた。

var http = require('http'),
    fs = require('fs'),
    ws = require('websocket-server');

var httpServer = http.createServer(function (req, res) {
  var docroot = "public";
  var response = function(data) {
      res.writeHead(200, {'Content-Type': 'text/html'});
      res.end(data);
  };

  fs.readFile(docroot+req.url, function(err, data) {
     if(err)
     response(err.message);
     else
     response(data);
  });
});

var wsServer = ws.createServer({
  server: httpServer,
  origin: "http://localhost:8124"
});

wsServer.addListener("connection", function(conn) {
             var username = "user_"+conn.id;
//           conn.storage.set("username", username);
             conn.send("WebSocketサーバーに接続しました");
             conn.send("あなたの名前は " + username + " です");
             conn.broadcast(username+" が接続しました");

             conn.addListener("message", function(data) {
                          if(data == "ping")
                          conn.send("pong");
                          else
                          wsServer.broadcast(username+": "+data);
                      });
             });

wsServer.addListener("close", function(conn) {
            conn.broadcast(username+" が切断しました"); 
             });
wsServer.listen(8124);
console.log('Server runnning at http://127.0.0.1:8124/');

ProductName 徹底解説 HTML5 APIガイドブック コミュニケーション系API編
小松 健作
秀和システム / 2730円 ( 2010-12 )


Web Fontを使ってみた

google web fontsだったらimportするだけで使えるので便利ですね。早速xooqで使ってみた。

そういえばHTML5の本では見かけなかったなぁと思ったら、これってCSS3の技術だったのか。

ProductName Google API Expertが解説するHTML5ガイドブック
羽田野 太巳
インプレスジャパン / 2940円 ( 2010-09-16 )


本譲ります的なサイトをGAE+Flaskで作ってみた

昨日作ったものだけど、成果発表をしていないのでこのエントリでしてみたいと思う。

こんな感じのサイトで、認証はTwitterのOAuth、本の管理はbooklogの本棚APIを使ってます。

譲れる本の一覧を表示して、欲しい本があったらreplyしてもらって、手渡しで渡すと。

そんだけ。

まぁ、譲るぜオーラを漂わせるわけではなくて、あくまでイベントのついでに、物々交換的な機能があれば便利なんじゃないかと常々考えてたのでShizuDevつくる会で作ってみたと。

それからGAEも触りたかったしね。

xooqってどっからつけたかというと、はじめに本の交換だからbooxって名づけようと思っていたのだけど、やはりいありがちすぎて既に存在していたので、ひっくり返したらまぁOKだったという(一意性を担保するにはひっくり返せという教えが役に立った)。

前回ちょっと書いて放置してたら半年ほど経過してしまったが、今回みんなで集まったおかげで集中して作業できてよかった。

以下、自分で考えたオススメポイント。

住所バレしない

郵送だと住所書かないといけないのでちょっと嫌ですよね。なので会って渡す、コレ基本。イベントに行くついでにちょっと渡してくるというお手軽感。

Androidのbooklogアプリ便利

読み終わったらAndroidのアプリでスキャンして既読管理しているので、ついでにもう読まないであろう本は「交換してもいい本」カテゴリに入れてしまう、そんだけでOK。パソコン開いて作業しなくてよいので楽ちんですね。

ATNDでどのイベントに参加するかわかるようになってる

とりあえず表示するようにしただけ。やっつけ仕事っぽいがそのうちどうにかする。