# HG changeset patch
# User e095732
# Date 1355988599 -32400
# Node ID 8370b9afbf33ba97ff96081e79a1a4c34a9de1c7
# Parent dc453f4c4acf1ac949d76b8d74eab4680a0ee43e
add presen
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.DS_Store
Binary file presen/.DS_Store has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/HEAD
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/.git/HEAD Thu Dec 20 16:29:59 2012 +0900
@@ -0,0 +1,1 @@
+ref: refs/heads/master
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/config
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/.git/config Thu Dec 20 16:29:59 2012 +0900
@@ -0,0 +1,12 @@
+[core]
+ repositoryformatversion = 0
+ filemode = true
+ bare = false
+ logallrefupdates = true
+ ignorecase = true
+[remote "origin"]
+ fetch = +refs/heads/*:refs/remotes/origin/*
+ url = https://github.com/semencov/html5slide-2.git
+[branch "master"]
+ remote = origin
+ merge = refs/heads/master
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/description
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/.git/description Thu Dec 20 16:29:59 2012 +0900
@@ -0,0 +1,1 @@
+Unnamed repository; edit this file 'description' to name the repository.
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/hooks/applypatch-msg.sample
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/.git/hooks/applypatch-msg.sample Thu Dec 20 16:29:59 2012 +0900
@@ -0,0 +1,15 @@
+#!/bin/sh
+#
+# An example hook script to check the commit log message taken by
+# applypatch from an e-mail message.
+#
+# The hook should exit with non-zero status after issuing an
+# appropriate message if it wants to stop the commit. The hook is
+# allowed to edit the commit message file.
+#
+# To enable this hook, rename this file to "applypatch-msg".
+
+. git-sh-setup
+test -x "$GIT_DIR/hooks/commit-msg" &&
+ exec "$GIT_DIR/hooks/commit-msg" ${1+"$@"}
+:
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/hooks/commit-msg.sample
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/.git/hooks/commit-msg.sample Thu Dec 20 16:29:59 2012 +0900
@@ -0,0 +1,24 @@
+#!/bin/sh
+#
+# An example hook script to check the commit log message.
+# Called by "git commit" with one argument, the name of the file
+# that has the commit message. The hook should exit with non-zero
+# status after issuing an appropriate message if it wants to stop the
+# commit. The hook is allowed to edit the commit message file.
+#
+# To enable this hook, rename this file to "commit-msg".
+
+# Uncomment the below to add a Signed-off-by line to the message.
+# Doing this in a hook is a bad idea in general, but the prepare-commit-msg
+# hook is more suited to it.
+#
+# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
+# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
+
+# This example catches duplicate Signed-off-by lines.
+
+test "" = "$(grep '^Signed-off-by: ' "$1" |
+ sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
+ echo >&2 Duplicate Signed-off-by lines.
+ exit 1
+}
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/hooks/post-update.sample
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/.git/hooks/post-update.sample Thu Dec 20 16:29:59 2012 +0900
@@ -0,0 +1,8 @@
+#!/bin/sh
+#
+# An example hook script to prepare a packed repository for use over
+# dumb transports.
+#
+# To enable this hook, rename this file to "post-update".
+
+exec git update-server-info
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/hooks/pre-applypatch.sample
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/.git/hooks/pre-applypatch.sample Thu Dec 20 16:29:59 2012 +0900
@@ -0,0 +1,14 @@
+#!/bin/sh
+#
+# An example hook script to verify what is about to be committed
+# by applypatch from an e-mail message.
+#
+# The hook should exit with non-zero status after issuing an
+# appropriate message if it wants to stop the commit.
+#
+# To enable this hook, rename this file to "pre-applypatch".
+
+. git-sh-setup
+test -x "$GIT_DIR/hooks/pre-commit" &&
+ exec "$GIT_DIR/hooks/pre-commit" ${1+"$@"}
+:
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/hooks/pre-commit.sample
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/.git/hooks/pre-commit.sample Thu Dec 20 16:29:59 2012 +0900
@@ -0,0 +1,50 @@
+#!/bin/sh
+#
+# An example hook script to verify what is about to be committed.
+# Called by "git commit" with no arguments. The hook should
+# exit with non-zero status after issuing an appropriate message if
+# it wants to stop the commit.
+#
+# To enable this hook, rename this file to "pre-commit".
+
+if git rev-parse --verify HEAD >/dev/null 2>&1
+then
+ against=HEAD
+else
+ # Initial commit: diff against an empty tree object
+ against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
+fi
+
+# If you want to allow non-ascii filenames set this variable to true.
+allownonascii=$(git config hooks.allownonascii)
+
+# Redirect output to stderr.
+exec 1>&2
+
+# Cross platform projects tend to avoid non-ascii filenames; prevent
+# them from being added to the repository. We exploit the fact that the
+# printable range starts at the space character and ends with tilde.
+if [ "$allownonascii" != "true" ] &&
+ # Note that the use of brackets around a tr range is ok here, (it's
+ # even required, for portability to Solaris 10's /usr/bin/tr), since
+ # the square bracket bytes happen to fall in the designated range.
+ test $(git diff --cached --name-only --diff-filter=A -z $against |
+ LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
+then
+ echo "Error: Attempt to add a non-ascii file name."
+ echo
+ echo "This can cause problems if you want to work"
+ echo "with people on other platforms."
+ echo
+ echo "To be portable it is advisable to rename the file ..."
+ echo
+ echo "If you know what you are doing you can disable this"
+ echo "check using:"
+ echo
+ echo " git config hooks.allownonascii true"
+ echo
+ exit 1
+fi
+
+# If there are whitespace errors, print the offending file names and fail.
+exec git diff-index --check --cached $against --
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/hooks/pre-rebase.sample
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/.git/hooks/pre-rebase.sample Thu Dec 20 16:29:59 2012 +0900
@@ -0,0 +1,169 @@
+#!/bin/sh
+#
+# Copyright (c) 2006, 2008 Junio C Hamano
+#
+# The "pre-rebase" hook is run just before "git rebase" starts doing
+# its job, and can prevent the command from running by exiting with
+# non-zero status.
+#
+# The hook is called with the following parameters:
+#
+# $1 -- the upstream the series was forked from.
+# $2 -- the branch being rebased (or empty when rebasing the current branch).
+#
+# This sample shows how to prevent topic branches that are already
+# merged to 'next' branch from getting rebased, because allowing it
+# would result in rebasing already published history.
+
+publish=next
+basebranch="$1"
+if test "$#" = 2
+then
+ topic="refs/heads/$2"
+else
+ topic=`git symbolic-ref HEAD` ||
+ exit 0 ;# we do not interrupt rebasing detached HEAD
+fi
+
+case "$topic" in
+refs/heads/??/*)
+ ;;
+*)
+ exit 0 ;# we do not interrupt others.
+ ;;
+esac
+
+# Now we are dealing with a topic branch being rebased
+# on top of master. Is it OK to rebase it?
+
+# Does the topic really exist?
+git show-ref -q "$topic" || {
+ echo >&2 "No such branch $topic"
+ exit 1
+}
+
+# Is topic fully merged to master?
+not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
+if test -z "$not_in_master"
+then
+ echo >&2 "$topic is fully merged to master; better remove it."
+ exit 1 ;# we could allow it, but there is no point.
+fi
+
+# Is topic ever merged to next? If so you should not be rebasing it.
+only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
+only_next_2=`git rev-list ^master ${publish} | sort`
+if test "$only_next_1" = "$only_next_2"
+then
+ not_in_topic=`git rev-list "^$topic" master`
+ if test -z "$not_in_topic"
+ then
+ echo >&2 "$topic is already up-to-date with master"
+ exit 1 ;# we could allow it, but there is no point.
+ else
+ exit 0
+ fi
+else
+ not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
+ /usr/bin/perl -e '
+ my $topic = $ARGV[0];
+ my $msg = "* $topic has commits already merged to public branch:\n";
+ my (%not_in_next) = map {
+ /^([0-9a-f]+) /;
+ ($1 => 1);
+ } split(/\n/, $ARGV[1]);
+ for my $elem (map {
+ /^([0-9a-f]+) (.*)$/;
+ [$1 => $2];
+ } split(/\n/, $ARGV[2])) {
+ if (!exists $not_in_next{$elem->[0]}) {
+ if ($msg) {
+ print STDERR $msg;
+ undef $msg;
+ }
+ print STDERR " $elem->[1]\n";
+ }
+ }
+ ' "$topic" "$not_in_next" "$not_in_master"
+ exit 1
+fi
+
+exit 0
+
+################################################################
+
+This sample hook safeguards topic branches that have been
+published from being rewound.
+
+The workflow assumed here is:
+
+ * Once a topic branch forks from "master", "master" is never
+ merged into it again (either directly or indirectly).
+
+ * Once a topic branch is fully cooked and merged into "master",
+ it is deleted. If you need to build on top of it to correct
+ earlier mistakes, a new topic branch is created by forking at
+ the tip of the "master". This is not strictly necessary, but
+ it makes it easier to keep your history simple.
+
+ * Whenever you need to test or publish your changes to topic
+ branches, merge them into "next" branch.
+
+The script, being an example, hardcodes the publish branch name
+to be "next", but it is trivial to make it configurable via
+$GIT_DIR/config mechanism.
+
+With this workflow, you would want to know:
+
+(1) ... if a topic branch has ever been merged to "next". Young
+ topic branches can have stupid mistakes you would rather
+ clean up before publishing, and things that have not been
+ merged into other branches can be easily rebased without
+ affecting other people. But once it is published, you would
+ not want to rewind it.
+
+(2) ... if a topic branch has been fully merged to "master".
+ Then you can delete it. More importantly, you should not
+ build on top of it -- other people may already want to
+ change things related to the topic as patches against your
+ "master", so if you need further changes, it is better to
+ fork the topic (perhaps with the same name) afresh from the
+ tip of "master".
+
+Let's look at this example:
+
+ o---o---o---o---o---o---o---o---o---o "next"
+ / / / /
+ / a---a---b A / /
+ / / / /
+ / / c---c---c---c B /
+ / / / \ /
+ / / / b---b C \ /
+ / / / / \ /
+ ---o---o---o---o---o---o---o---o---o---o---o "master"
+
+
+A, B and C are topic branches.
+
+ * A has one fix since it was merged up to "next".
+
+ * B has finished. It has been fully merged up to "master" and "next",
+ and is ready to be deleted.
+
+ * C has not merged to "next" at all.
+
+We would want to allow C to be rebased, refuse A, and encourage
+B to be deleted.
+
+To compute (1):
+
+ git rev-list ^master ^topic next
+ git rev-list ^master next
+
+ if these match, topic has not merged in next at all.
+
+To compute (2):
+
+ git rev-list master..topic
+
+ if this is empty, it is fully merged to "master".
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/hooks/prepare-commit-msg.sample
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/.git/hooks/prepare-commit-msg.sample Thu Dec 20 16:29:59 2012 +0900
@@ -0,0 +1,36 @@
+#!/bin/sh
+#
+# An example hook script to prepare the commit log message.
+# Called by "git commit" with the name of the file that has the
+# commit message, followed by the description of the commit
+# message's source. The hook's purpose is to edit the commit
+# message file. If the hook fails with a non-zero status,
+# the commit is aborted.
+#
+# To enable this hook, rename this file to "prepare-commit-msg".
+
+# This hook includes three examples. The first comments out the
+# "Conflicts:" part of a merge commit.
+#
+# The second includes the output of "git diff --name-status -r"
+# into the message, just before the "git status" output. It is
+# commented because it doesn't cope with --amend or with squashed
+# commits.
+#
+# The third example adds a Signed-off-by line to the message, that can
+# still be edited. This is rarely a good idea.
+
+case "$2,$3" in
+ merge,)
+ /usr/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;;
+
+# ,|template,)
+# /usr/bin/perl -i.bak -pe '
+# print "\n" . `git diff --cached --name-status -r`
+# if /^#/ && $first++ == 0' "$1" ;;
+
+ *) ;;
+esac
+
+# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
+# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/hooks/update.sample
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/.git/hooks/update.sample Thu Dec 20 16:29:59 2012 +0900
@@ -0,0 +1,128 @@
+#!/bin/sh
+#
+# An example hook script to blocks unannotated tags from entering.
+# Called by "git receive-pack" with arguments: refname sha1-old sha1-new
+#
+# To enable this hook, rename this file to "update".
+#
+# Config
+# ------
+# hooks.allowunannotated
+# This boolean sets whether unannotated tags will be allowed into the
+# repository. By default they won't be.
+# hooks.allowdeletetag
+# This boolean sets whether deleting tags will be allowed in the
+# repository. By default they won't be.
+# hooks.allowmodifytag
+# This boolean sets whether a tag may be modified after creation. By default
+# it won't be.
+# hooks.allowdeletebranch
+# This boolean sets whether deleting branches will be allowed in the
+# repository. By default they won't be.
+# hooks.denycreatebranch
+# This boolean sets whether remotely creating branches will be denied
+# in the repository. By default this is allowed.
+#
+
+# --- Command line
+refname="$1"
+oldrev="$2"
+newrev="$3"
+
+# --- Safety check
+if [ -z "$GIT_DIR" ]; then
+ echo "Don't run this script from the command line." >&2
+ echo " (if you want, you could supply GIT_DIR then run" >&2
+ echo " $0 [ )" >&2
+ exit 1
+fi
+
+if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
+ echo "Usage: $0 ][ " >&2
+ exit 1
+fi
+
+# --- Config
+allowunannotated=$(git config --bool hooks.allowunannotated)
+allowdeletebranch=$(git config --bool hooks.allowdeletebranch)
+denycreatebranch=$(git config --bool hooks.denycreatebranch)
+allowdeletetag=$(git config --bool hooks.allowdeletetag)
+allowmodifytag=$(git config --bool hooks.allowmodifytag)
+
+# check for no description
+projectdesc=$(sed -e '1q' "$GIT_DIR/description")
+case "$projectdesc" in
+"Unnamed repository"* | "")
+ echo "*** Project description file hasn't been set" >&2
+ exit 1
+ ;;
+esac
+
+# --- Check types
+# if $newrev is 0000...0000, it's a commit to delete a ref.
+zero="0000000000000000000000000000000000000000"
+if [ "$newrev" = "$zero" ]; then
+ newrev_type=delete
+else
+ newrev_type=$(git cat-file -t $newrev)
+fi
+
+case "$refname","$newrev_type" in
+ refs/tags/*,commit)
+ # un-annotated tag
+ short_refname=${refname##refs/tags/}
+ if [ "$allowunannotated" != "true" ]; then
+ echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
+ echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
+ exit 1
+ fi
+ ;;
+ refs/tags/*,delete)
+ # delete tag
+ if [ "$allowdeletetag" != "true" ]; then
+ echo "*** Deleting a tag is not allowed in this repository" >&2
+ exit 1
+ fi
+ ;;
+ refs/tags/*,tag)
+ # annotated tag
+ if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
+ then
+ echo "*** Tag '$refname' already exists." >&2
+ echo "*** Modifying a tag is not allowed in this repository." >&2
+ exit 1
+ fi
+ ;;
+ refs/heads/*,commit)
+ # branch
+ if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
+ echo "*** Creating a branch is not allowed in this repository" >&2
+ exit 1
+ fi
+ ;;
+ refs/heads/*,delete)
+ # delete branch
+ if [ "$allowdeletebranch" != "true" ]; then
+ echo "*** Deleting a branch is not allowed in this repository" >&2
+ exit 1
+ fi
+ ;;
+ refs/remotes/*,commit)
+ # tracking branch
+ ;;
+ refs/remotes/*,delete)
+ # delete tracking branch
+ if [ "$allowdeletebranch" != "true" ]; then
+ echo "*** Deleting a tracking branch is not allowed in this repository" >&2
+ exit 1
+ fi
+ ;;
+ *)
+ # Anything else (is there anything else?)
+ echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
+ exit 1
+ ;;
+esac
+
+# --- Finished
+exit 0
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/index
Binary file presen/.git/index has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/info/exclude
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/.git/info/exclude Thu Dec 20 16:29:59 2012 +0900
@@ -0,0 +1,7 @@
+# git ls-files --others --exclude-from=.git/info/exclude
+# Lines that start with '#' are comments.
+# For a project mostly in C, the following would be a good set of
+# exclude patterns (uncomment them if you want to use them):
+# *.[oa]
+# *~
+.DS_Store
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/logs/HEAD
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/.git/logs/HEAD Thu Dec 20 16:29:59 2012 +0900
@@ -0,0 +1,1 @@
+0000000000000000000000000000000000000000 549c4c7e9ac9a5c1e12bc9884cb01e28910caa8b Yu SUGIMOTO 1337671945 +0900 clone: from https://github.com/semencov/html5slide-2.git
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/logs/refs/heads/master
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/.git/logs/refs/heads/master Thu Dec 20 16:29:59 2012 +0900
@@ -0,0 +1,1 @@
+0000000000000000000000000000000000000000 549c4c7e9ac9a5c1e12bc9884cb01e28910caa8b Yu SUGIMOTO 1337671945 +0900 clone: from https://github.com/semencov/html5slide-2.git
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/01/917da8ab8eb1d792fc0273501fe7b6bed2be4c
Binary file presen/.git/objects/01/917da8ab8eb1d792fc0273501fe7b6bed2be4c has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/03/f9b4d21f3838f5343ecd70ff750cb6a1b4cba2
Binary file presen/.git/objects/03/f9b4d21f3838f5343ecd70ff750cb6a1b4cba2 has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/07/e790d26fecd7b4d6209f9f419308b3c1a56bdb
Binary file presen/.git/objects/07/e790d26fecd7b4d6209f9f419308b3c1a56bdb has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/08/73821d4688a6ef550d71b626deb99491541313
Binary file presen/.git/objects/08/73821d4688a6ef550d71b626deb99491541313 has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/09/a521546e239c6af74058532083cb55d730ef76
Binary file presen/.git/objects/09/a521546e239c6af74058532083cb55d730ef76 has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/0a/43f42bec52a9b86ad14b55e1a54632161e56b2
Binary file presen/.git/objects/0a/43f42bec52a9b86ad14b55e1a54632161e56b2 has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/0e/86fca9fe374f9364eb3acaa5f087fd2f6dc9fa
Binary file presen/.git/objects/0e/86fca9fe374f9364eb3acaa5f087fd2f6dc9fa has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/14/9ef551a2ddf020a711077fa7d9b38bdd3b9813
Binary file presen/.git/objects/14/9ef551a2ddf020a711077fa7d9b38bdd3b9813 has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/18/9af7ae82027d618e9514e0bf14b5a8ca548db5
Binary file presen/.git/objects/18/9af7ae82027d618e9514e0bf14b5a8ca548db5 has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/1a/50b7973156ceab71edb5fb2ab103a0156b5825
Binary file presen/.git/objects/1a/50b7973156ceab71edb5fb2ab103a0156b5825 has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/30/8f27312359475b7450b54de978d4ba4e0dbbfc
Binary file presen/.git/objects/30/8f27312359475b7450b54de978d4ba4e0dbbfc has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/34/d1b7a5773841f4d986d170ff30d362ed9081da
Binary file presen/.git/objects/34/d1b7a5773841f4d986d170ff30d362ed9081da has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/35/61325879d0575637d237de47e2fbf752ebee84
Binary file presen/.git/objects/35/61325879d0575637d237de47e2fbf752ebee84 has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/38/9acbbc81fdbf105a92ad39654e7cd095aea6bc
Binary file presen/.git/objects/38/9acbbc81fdbf105a92ad39654e7cd095aea6bc has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/38/f4027a8cc0db254def93c5a231b6177e0b1874
Binary file presen/.git/objects/38/f4027a8cc0db254def93c5a231b6177e0b1874 has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/3b/0e426f1eb09aedd903c1323c5235874eb4b502
Binary file presen/.git/objects/3b/0e426f1eb09aedd903c1323c5235874eb4b502 has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/3b/c745901f273ee9d11c3bdab281ab4415ff9df6
Binary file presen/.git/objects/3b/c745901f273ee9d11c3bdab281ab4415ff9df6 has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/3c/04bf09ef576d3f65bdaa8e6b4c9583df0a6378
Binary file presen/.git/objects/3c/04bf09ef576d3f65bdaa8e6b4c9583df0a6378 has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/3d/8cf9d20952b1bb8ddbc654d66cabd9e3d2ebda
Binary file presen/.git/objects/3d/8cf9d20952b1bb8ddbc654d66cabd9e3d2ebda has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/3e/54ee0602335d2f3ff5500911dffc7ac172c201
Binary file presen/.git/objects/3e/54ee0602335d2f3ff5500911dffc7ac172c201 has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/43/8166927dc57f3e6c8f955eaa62fa3c2ac9ee95
Binary file presen/.git/objects/43/8166927dc57f3e6c8f955eaa62fa3c2ac9ee95 has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/46/b018ea44f4583c129aed4ca2cf865012609c2c
Binary file presen/.git/objects/46/b018ea44f4583c129aed4ca2cf865012609c2c has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/50/acebd4d25306d9230c57091b00d24ab1dcd00f
Binary file presen/.git/objects/50/acebd4d25306d9230c57091b00d24ab1dcd00f has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/54/9c4c7e9ac9a5c1e12bc9884cb01e28910caa8b
Binary file presen/.git/objects/54/9c4c7e9ac9a5c1e12bc9884cb01e28910caa8b has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/56/acd63a9ba849f5addb9abab13a8a5732265df0
Binary file presen/.git/objects/56/acd63a9ba849f5addb9abab13a8a5732265df0 has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/58/f959dd0fea7e2cbf80da4319a42627849e2678
Binary file presen/.git/objects/58/f959dd0fea7e2cbf80da4319a42627849e2678 has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/5e/eae4d42c3e12c66d5046baa3447fb7a2aef26a
Binary file presen/.git/objects/5e/eae4d42c3e12c66d5046baa3447fb7a2aef26a has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/60/13e3ca089e03430f9a7e3f052d79f2393db4f7
Binary file presen/.git/objects/60/13e3ca089e03430f9a7e3f052d79f2393db4f7 has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/63/44c62e6571d171a036de6bf18657a844e56c76
Binary file presen/.git/objects/63/44c62e6571d171a036de6bf18657a844e56c76 has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/6a/7bd6bf4e96238765a3905e6f2c2cddab075942
Binary file presen/.git/objects/6a/7bd6bf4e96238765a3905e6f2c2cddab075942 has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/6e/29dc59c609ed8e44cdfba8f622a876c5337e73
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/.git/objects/6e/29dc59c609ed8e44cdfba8f622a876c5337e73 Thu Dec 20 16:29:59 2012 +0900
@@ -0,0 +1,1 @@
+xAC!Dg)
CUڶM1~C%Q{Qh[NWj!EZM\
uvdqqOzQ堍1rt.+e!JkZb/pƜ{矩7J_(
\ No newline at end of file
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/objects/fe/f07d4f1527df0810b6df7020b96e517ef5b04c
Binary file presen/.git/objects/fe/f07d4f1527df0810b6df7020b96e517ef5b04c has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/packed-refs
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/.git/packed-refs Thu Dec 20 16:29:59 2012 +0900
@@ -0,0 +1,2 @@
+# pack-refs with: peeled
+549c4c7e9ac9a5c1e12bc9884cb01e28910caa8b refs/remotes/origin/master
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/refs/heads/master
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/.git/refs/heads/master Thu Dec 20 16:29:59 2012 +0900
@@ -0,0 +1,1 @@
+549c4c7e9ac9a5c1e12bc9884cb01e28910caa8b
diff -r dc453f4c4acf -r 8370b9afbf33 presen/.git/refs/remotes/origin/HEAD
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/.git/refs/remotes/origin/HEAD Thu Dec 20 16:29:59 2012 +0900
@@ -0,0 +1,1 @@
+ref: refs/remotes/origin/master
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/.DS_Store
Binary file presen/images/.DS_Store has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/FishPoint.graffle
Binary file presen/images/FishPoint.graffle has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/FishPoint.png
Binary file presen/images/FishPoint.png has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/SendWidth.graffle
Binary file presen/images/SendWidth.graffle has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/SendWidth.png
Binary file presen/images/SendWidth.png has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/StartCS.graffle
Binary file presen/images/StartCS.graffle has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/StartCS.png
Binary file presen/images/StartCS.png has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/TestCodeSegment.graffle
Binary file presen/images/TestCodeSegment.graffle has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/TestCodeSegment.png
Binary file presen/images/TestCodeSegment.png has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/datasegment_key.pdf
Binary file presen/images/datasegment_key.pdf has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/dot.png
Binary file presen/images/dot.png has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/execute.graffle
Binary file presen/images/execute.graffle has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/execute.png
Binary file presen/images/execute.png has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/ids.png
Binary file presen/images/ids.png has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/idsSetKey.png
Binary file presen/images/idsSetKey.png has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/notp.png
Binary file presen/images/notp.png has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/ods.png
Binary file presen/images/ods.png has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/peek.graffle
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/images/peek.graffle Thu Dec 20 16:29:59 2012 +0900
@@ -0,0 +1,1012 @@
+
+
+
+
+ ActiveLayerIndex
+ 0
+ ApplicationVersion
+
+ com.omnigroup.OmniGraffle
+ 129.22
+
+ AutoAdjust
+
+ CanvasColor
+
+ w
+ 1
+
+ CanvasOrigin
+ {0, 0}
+ CanvasScale
+ 1
+ ColumnAlign
+ 1
+ ColumnSpacing
+ 36
+ CreationDate
+ 2012-02-07 13:36:21 +0900
+ Creator
+ Kazuki AKAMINE
+ DisplayScale
+ 1 in = 1 in
+ GraphDocumentVersion
+ 5
+ GraphicsList
+
+
+ Bounds
+ {{230.889, 161}, {27, 14}}
+ Class
+ ShapedGraphic
+ FitText
+ YES
+ Flow
+ Resize
+ ID
+ 149
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Draws
+ NO
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+ Text
+
+ Pad
+ 0
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 reply}
+
+ Wrap
+ NO
+
+
+ AllowLabelDrop
+
+ Class
+ LineGraphic
+ Head
+
+ ID
+ 147
+ Info
+ 3
+
+ ID
+ 148
+ Points
+
+ {248.889, 126.25}
+ {198.871, 210.5}
+
+ Style
+
+ stroke
+
+ HeadArrow
+ FilledArrow
+ HeadScale
+ 1.4285709857940674
+ TailArrow
+ 0
+ TailScale
+ 0.5
+
+
+ Tail
+
+ ID
+ 123
+ Info
+ 1
+
+
+
+ Bounds
+ {{148.871, 196.5}, {50, 28}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 147
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ shadow
+
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 dataA}
+
+
+
+ Bounds
+ {{148.871, 182.5}, {50, 14}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 146
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ shadow
+
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 1}
+
+
+
+ Bounds
+ {{152.871, 161}, {43, 14}}
+ Class
+ ShapedGraphic
+ FitText
+ YES
+ Flow
+ Resize
+ ID
+ 145
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Draws
+ NO
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+ Text
+
+ Pad
+ 0
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 receiver}
+
+ Wrap
+ NO
+
+
+ Bounds
+ {{140.38, 175}, {66.9815, 57}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Font
+ HiraKakuProN-W3
+ Size
+ 12
+
+ ID
+ 144
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ shadow
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{73.889, 98.25}, {50, 28}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 143
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ shadow
+
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 dataD}
+
+
+
+ Bounds
+ {{73.889, 84.25}, {50, 14}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 142
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ shadow
+
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 4}
+
+
+
+ Bounds
+ {{123.889, 98.25}, {50, 28}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 141
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ shadow
+
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 dataC}
+
+
+
+ Bounds
+ {{123.889, 84.25}, {50, 14}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 140
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ shadow
+
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 3}
+
+
+
+ Bounds
+ {{173.889, 98.25}, {50, 28}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 139
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ shadow
+
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 dataB}
+
+
+
+ Bounds
+ {{173.889, 84.25}, {50, 14}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 138
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ shadow
+
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 2}
+
+
+
+ Bounds
+ {{223.889, 98.25}, {50, 28}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 123
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ shadow
+
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 dataA}
+
+
+
+ Bounds
+ {{223.889, 84.25}, {50, 14}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 122
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ shadow
+
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 1}
+
+
+
+ AllowLabelDrop
+
+ Class
+ LineGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 118
+ Points
+
+ {67.852, 129.5}
+ {279.889, 129.5}
+
+ Style
+
+ stroke
+
+ HeadArrow
+ 0
+ HeadScale
+ 1.4285709857940674
+ TailArrow
+ 0
+ TailScale
+ 0.5
+
+
+
+
+ AllowLabelDrop
+
+ Class
+ LineGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 121
+ Points
+
+ {67.852, 80}
+ {279.889, 80}
+
+ Style
+
+ stroke
+
+ HeadArrow
+ 0
+ HeadScale
+ 1.4285709857940674
+ TailArrow
+ 0
+ TailScale
+ 0.5
+
+
+
+
+ Bounds
+ {{68.852, 30}, {131, 14}}
+ Class
+ ShapedGraphic
+ FitText
+ YES
+ Flow
+ Resize
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 119
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Draws
+ NO
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+ Text
+
+ Pad
+ 0
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 peek(recever, "key1", 0);}
+
+ Wrap
+ NO
+
+
+ Bounds
+ {{156.871, 48.75}, {34, 14}}
+ Class
+ ShapedGraphic
+ FitText
+ YES
+ Flow
+ Resize
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 120
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Draws
+ NO
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+ Text
+
+ Pad
+ 0
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 "key1"}
+
+ Wrap
+ NO
+
+
+ Bounds
+ {{57.852, 48}, {233.037, 103}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 117
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ CornerRadius
+ 10
+
+
+
+
+ GridInfo
+
+ GuidesLocked
+ NO
+ GuidesVisible
+ YES
+ HPages
+ 1
+ ImageCounter
+ 1
+ IsPalette
+ NO
+ KeepToScale
+
+ Layers
+
+
+ Lock
+ NO
+ Name
+ レイヤー 1
+ Print
+ YES
+ View
+ YES
+
+
+ LayoutInfo
+
+ Animate
+ NO
+
+ LinksVisible
+ NO
+ MagnetsVisible
+ NO
+ MasterSheet
+ マスター 1
+ MasterSheets
+
+
+ ActiveLayerIndex
+ 0
+ AutoAdjust
+
+ CanvasColor
+
+ w
+ 1
+
+ CanvasOrigin
+ {0, 0}
+ CanvasScale
+ 1
+ ColumnAlign
+ 1
+ ColumnSpacing
+ 36
+ DisplayScale
+ 1 in = 1 in
+ GraphicsList
+
+ GridInfo
+
+ HPages
+ 1
+ IsPalette
+ NO
+ KeepToScale
+
+ Layers
+
+
+ Lock
+ NO
+ Name
+ レイヤー 1
+ Print
+ YES
+ View
+ YES
+
+
+ LayoutInfo
+
+ Animate
+ NO
+
+ Orientation
+ 2
+ RowAlign
+ 1
+ RowSpacing
+ 36
+ SheetTitle
+ マスター 1
+ UniqueID
+ 1
+ VPages
+ 1
+
+
+ ModificationDate
+ 2012-12-17 15:57:19 +0900
+ Modifier
+ Yu SUGIMOTO
+ NotesVisible
+ NO
+ Orientation
+ 2
+ OriginVisible
+ NO
+ PageBreaks
+ YES
+ PrintInfo
+
+ NSBottomMargin
+
+ float
+ 41
+
+ NSLeftMargin
+
+ float
+ 18
+
+ NSPaperSize
+
+ size
+ {595.2, 841.8}
+
+ NSRightMargin
+
+ float
+ 18
+
+ NSTopMargin
+
+ float
+ 18
+
+
+ ReadOnly
+ NO
+ RowAlign
+ 1
+ RowSpacing
+ 36
+ SheetTitle
+ キャンバス 1
+ SmartAlignmentGuidesActive
+ YES
+ SmartDistanceGuidesActive
+ YES
+ UniqueID
+ 1
+ UseEntirePage
+
+ VPages
+ 1
+ WindowInfo
+
+ CurrentSheet
+ 0
+ DrawerTab
+ Outline
+ DrawerWidth
+ 209
+ Frame
+ {{227, 52}, {730, 779}}
+ ShowRuler
+
+ VisibleRegion
+ {{-69, 0}, {699, 619}}
+ Zoom
+ 1
+
+
+
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/peek.png
Binary file presen/images/peek.png has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/peek1.graffle
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/images/peek1.graffle Thu Dec 20 16:29:59 2012 +0900
@@ -0,0 +1,940 @@
+
+
+
+
+ ActiveLayerIndex
+ 0
+ ApplicationVersion
+
+ com.omnigroup.OmniGraffle
+ 129.22
+
+ AutoAdjust
+
+ CanvasColor
+
+ w
+ 1
+
+ CanvasOrigin
+ {0, 0}
+ CanvasScale
+ 1
+ ColumnAlign
+ 1
+ ColumnSpacing
+ 36
+ CreationDate
+ 2012-02-07 13:36:21 +0900
+ Creator
+ Kazuki AKAMINE
+ DisplayScale
+ 1 in = 1 in
+ GraphDocumentVersion
+ 5
+ GraphicsList
+
+
+ Bounds
+ {{56, 113}, {21, 14}}
+ Class
+ ShapedGraphic
+ FitText
+ YES
+ Flow
+ Resize
+ ID
+ 172
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Draws
+ NO
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+ Text
+
+ Pad
+ 0
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 add}
+
+ Wrap
+ NO
+
+
+ AllowLabelDrop
+
+ Class
+ LineGraphic
+ Head
+
+ ID
+ 185
+
+ ID
+ 186
+ Points
+
+ {159.515, 40.5}
+ {25, 122.75}
+ {111.232, 168.75}
+
+ Style
+
+ stroke
+
+ CornerRadius
+ 23
+ HeadArrow
+ FilledArrow
+ HeadScale
+ 1.4285709857940674
+ TailArrow
+ 0
+ TailScale
+ 0.5
+
+
+ Tail
+
+ ID
+ 170
+
+
+
+ Bounds
+ {{190.482, 140.75}, {41, 14}}
+ Class
+ ShapedGraphic
+ FitText
+ YES
+ Flow
+ Resize
+ ID
+ 183
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Draws
+ NO
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+ Text
+
+ Pad
+ 0
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 waitList}
+
+ Wrap
+ NO
+
+
+ Bounds
+ {{111.232, 154.75}, {200.5, 28}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 185
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ shadow
+
+ Draws
+ NO
+
+
+ Text
+
+ Align
+ 0
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;\f1\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
+
+\f0\fs24 \cf0 \'81\'45
+\f1 peek(recever, "key1", 4);}
+
+
+
+ Bounds
+ {{110.5, 94.75}, {50, 28}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 179
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ shadow
+
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 dataD}
+
+
+
+ Bounds
+ {{110.5, 80.75}, {50, 14}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 177
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ shadow
+
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 4}
+
+
+
+ Bounds
+ {{160.5, 94.75}, {50, 28}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 181
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ shadow
+
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 dataC}
+
+
+
+ Bounds
+ {{160.5, 80.75}, {50, 14}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 174
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ shadow
+
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 3}
+
+
+
+ Bounds
+ {{210.5, 94.75}, {50, 28}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 178
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ shadow
+
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 dataB}
+
+
+
+ Bounds
+ {{210.5, 80.75}, {50, 14}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 175
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ shadow
+
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 2}
+
+
+
+ Bounds
+ {{260.5, 94.75}, {50, 28}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 180
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ shadow
+
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 dataA}
+
+
+
+ Bounds
+ {{260.5, 80.75}, {50, 14}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 176
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ shadow
+
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 1}
+
+
+
+ AllowLabelDrop
+
+ Class
+ LineGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 182
+ Points
+
+ {104.463, 126}
+ {316.5, 126}
+
+ Style
+
+ stroke
+
+ HeadArrow
+ 0
+ HeadScale
+ 1.4285709857940674
+ TailArrow
+ 0
+ TailScale
+ 0.5
+
+
+
+
+ AllowLabelDrop
+
+ Class
+ LineGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 173
+ Points
+
+ {104.463, 76.5}
+ {316.5, 76.5}
+
+ Style
+
+ stroke
+
+ HeadArrow
+ 0
+ HeadScale
+ 1.4285709857940674
+ TailArrow
+ 0
+ TailScale
+ 0.5
+
+
+
+
+ Bounds
+ {{105.463, 26.5}, {131, 14}}
+ Class
+ ShapedGraphic
+ FitText
+ YES
+ Flow
+ Resize
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 170
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Draws
+ NO
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+ Text
+
+ Pad
+ 0
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 peek(recever, "key1", 4);}
+
+ Wrap
+ NO
+
+
+ Bounds
+ {{193.482, 45.25}, {34, 14}}
+ Class
+ ShapedGraphic
+ FitText
+ YES
+ Flow
+ Resize
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 171
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Draws
+ NO
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+ Text
+
+ Pad
+ 0
+ Text
+ {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 "key1"}
+
+ Wrap
+ NO
+
+
+ Bounds
+ {{94.463, 44.5}, {233.037, 150.25}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 184
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ CornerRadius
+ 10
+
+
+
+
+ GridInfo
+
+ GuidesLocked
+ NO
+ GuidesVisible
+ YES
+ HPages
+ 1
+ ImageCounter
+ 1
+ IsPalette
+ NO
+ KeepToScale
+
+ Layers
+
+
+ Lock
+ NO
+ Name
+ レイヤー 1
+ Print
+ YES
+ View
+ YES
+
+
+ LayoutInfo
+
+ Animate
+ NO
+
+ LinksVisible
+ NO
+ MagnetsVisible
+ NO
+ MasterSheet
+ マスター 1
+ MasterSheets
+
+
+ ActiveLayerIndex
+ 0
+ AutoAdjust
+
+ CanvasColor
+
+ w
+ 1
+
+ CanvasOrigin
+ {0, 0}
+ CanvasScale
+ 1
+ ColumnAlign
+ 1
+ ColumnSpacing
+ 36
+ DisplayScale
+ 1 in = 1 in
+ GraphicsList
+
+ GridInfo
+
+ HPages
+ 1
+ IsPalette
+ NO
+ KeepToScale
+
+ Layers
+
+
+ Lock
+ NO
+ Name
+ レイヤー 1
+ Print
+ YES
+ View
+ YES
+
+
+ LayoutInfo
+
+ Animate
+ NO
+
+ Orientation
+ 2
+ RowAlign
+ 1
+ RowSpacing
+ 36
+ SheetTitle
+ マスター 1
+ UniqueID
+ 1
+ VPages
+ 1
+
+
+ ModificationDate
+ 2012-12-17 15:57:43 +0900
+ Modifier
+ Yu SUGIMOTO
+ NotesVisible
+ NO
+ Orientation
+ 2
+ OriginVisible
+ NO
+ PageBreaks
+ YES
+ PrintInfo
+
+ NSBottomMargin
+
+ float
+ 41
+
+ NSLeftMargin
+
+ float
+ 18
+
+ NSPaperSize
+
+ size
+ {595.2, 841.8}
+
+ NSRightMargin
+
+ float
+ 18
+
+ NSTopMargin
+
+ float
+ 18
+
+
+ ReadOnly
+ NO
+ RowAlign
+ 1
+ RowSpacing
+ 36
+ SheetTitle
+ キャンバス 1
+ SmartAlignmentGuidesActive
+ YES
+ SmartDistanceGuidesActive
+ YES
+ UniqueID
+ 1
+ UseEntirePage
+
+ VPages
+ 1
+ WindowInfo
+
+ CurrentSheet
+ 0
+ DrawerTab
+ Outline
+ DrawerWidth
+ 209
+ Frame
+ {{227, 52}, {730, 779}}
+ ShowRuler
+
+ VisibleRegion
+ {{-69, 0}, {699, 619}}
+ Zoom
+ 1
+
+
+
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/peek1.png
Binary file presen/images/peek1.png has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/put.png
Binary file presen/images/put.png has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/ring.pdf
Binary file presen/images/ring.pdf has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/ring100KB.pdf
Binary file presen/images/ring100KB.pdf has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/ring100KB.png
Binary file presen/images/ring100KB.png has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/ring10B.pdf
Binary file presen/images/ring10B.pdf has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/ring10B.png
Binary file presen/images/ring10B.png has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/ring10KB.pdf
Binary file presen/images/ring10KB.pdf has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/ring10KB.png
Binary file presen/images/ring10KB.png has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/ringTest.png
Binary file presen/images/ringTest.png has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/ring_notp_10b.pdf
Binary file presen/images/ring_notp_10b.pdf has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/take.png
Binary file presen/images/take.png has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/topology.png
Binary file presen/images/topology.png has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/topologyfile.png
Binary file presen/images/topologyfile.png has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/images/update.png
Binary file presen/images/update.png has changed
diff -r dc453f4c4acf -r 8370b9afbf33 presen/index.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/index.html Thu Dec 20 16:29:59 2012 +0900
@@ -0,0 +1,435 @@
+
+
+
+
+
+
+ Presentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ]
+ CodeSegmentとDataSegmentによるプログラミング手法
+
+
+
+ 河野 真治
+ 杉本 優
+
+ 琉球大学 並列信頼研究室
+
+
+
+ 研究背景
+
+
+
+
+ Alice
+ Alice は本研究室で開発を行なっている分散タスク管理フレームワークである。
+ Cell用のOpen CL に似たTask管理用フレームワークCeriumと
+ Lindaを相互接続した分散フレームワークであるFederated Lindaの開発を通して得られた知見を生かされている。
+
+
+
+
+ Cerium
+ CeriumではTaskを小さく分割して並列実行し、データ転送はパイプライン実行により隠される。
+ Taskには依存関係がありデータの依存関係がそのままTaskの依存関係になることが多い。
+ 繰り返し使われるデータの管理が重要であり、実行時にわかるデータ構造感間の依存関係がTaskを複雑にしている。
+
+
+ Data Segment API - put
+
+
+
+
+
+
+
+
+ Data Segment API - update
+
+
+
+
+
+ putと異な点は先頭データを削除し、データを追加する。
+
+
+
+
+ Data Segment API - peek
+
+
+
+
+
+ peekはデータを取得しreceiverに渡す。
+
+
+
+
+ Data Segment API - peek
+
+
+
+
+
+
+
+ Data Segment API - take
+ - データを取得して取得されたデータはdequeueされる
+
+
+
+
+
+
+
+ Data Segmentの実装
+
+ Data Segmentのデータ表現はMessagePackを使用。
+
+
+
+ Data Segment APIでは
+ MessagePack for javaのValueオブジェクトを使用
+ MessagePackのバイナリにシリアライズできる型のみで
+ 構成されているため自己記述式のデータ形式
+
+
+
+
+ Data Segmentの実装
+
+
+
+
+ CodeSegment
+
+ - Code Segmentはタスクのこと
+ - ユーザーが記述する際にCode Segment内で使用する
Data Segmentの作成を記述
+ - Input Data SegmentとOutput Data Segmentを作るAPI
+ - 必要なInput Data Segmentが揃った時に実行される
+
+
+
+
+ Input Data SegmentとOutput Data Segment
+
+ - localかremoteを指定
+ - Data Segmentに関連付けされているKEYを指定
+
+
+
+
+
+ Data Segmentの例
+
+
+
+
+
+ Input Data Segmentの例
+
+
+ Receiverの作成
+ PEEK,TAKEのどちらかを選択
+
+
+
+ 第1引数 マシン名
+ 第2引数 Data Segmentに関連付けられているKEY
+ 第3引数 index(指定しない場合は先頭データが取得される)
+
+
+
+
+ Output Data Segmentの例
+
+
+ putかupdateのどちらかを選択
+
+
+ 第1引数 マシン名
+ 第2引数 Data Segmentに関連付けるKEY
+ 第3引数 Data Segment
+
+
+
+
+ Code Segmentの実行方法
+
+
+
+
+ AliceにはCのmainに相当するStart Code SegmentというCode Segmentが存在する。
+ Start Code SegmentはInput Data Segmentが存在しない。
+
+
+
+
+ Code Segmentの実行方法
+
+
+
+
+ このStart Code Segmentをnewし、executeメソッドを呼ぶことでCode Segmentを実行することができる。
+
+
+
+
+ Code Segmentの記述方法
+
+
+
+ ユーザがCode Segmentを記述する際にはCode Segmentを継承する。
+ runの中に実際にさせたい処理を記述する。
+
+
+
+ Topology Manager
+
+ Alice同士の接続トポロジーを管理する。
+ トポロジーファイルを読み込み、参加を表明したクライアントに接続すべきクライアントのIPアドレスやポート番号、接続名を送る。
+
+
+
+
+
+
+
+ Topology Manager
+
+ Topology Manager関連の通信は全て、Code Segmentで実装されている。
+
+
+
+
+ トポロジーファイル
+
+
+
+
+ トポロジーファイルの記述方法
+
+
+
+
+ トポロジーファイルの確認方法
+
+
+
+
+ 水族館の例題
+
+
+
+
+ 性能比較 - 実験概要
+
+ AliceとFederated Linda で性能比較を行った。
+ Ring型のトポロジーを構成、メッセージが100周する時間を計測。
+ 1周あたりの平均時間を求めた。
+
+
+
+ パケットのサイズは10byte,10Kbyte,100kbtyeで実験
+
+
+
+
+ 実験環境
+
+ ブレードサーバー上の仮想マシンによる仮想クラスタ環境を用いて実験した。
+ ブレードサーバー詳細
+
+
+ マシン台数 |
+ 8台 |
+
+
+ CPU |
+ Intel(R) Xeon(R) X5650 @ 2.67GHz |
+
+
+ 物理コア数 |
+ 12 |
+
+
+ 論理コア数 |
+ 24 |
+
+ CPU キャッシュ |
+ 12MB |
+
+
+ Memory |
+ 132GB |
+
+
+
+
+
+
+ 実験環境
+
+ 仮想クラスタ詳細
+
+
+ マシン台数 |
+ 48台 |
+
+
+ CPU |
+ Intel(R) Xeon(R) X5650 @ 2.67GHz |
+
+
+ 物理コア数 |
+ 2 |
+
+
+ 論理コア数 |
+ 4 |
+
+ CPU キャッシュ |
+ 12MB |
+
+
+ Memory |
+ 8GB |
+
+
+
+
+
+
+ 実験結果
+
+ 10byte
+
+
+
+
+
+ 実験結果
+
+ 10kbyte
+
+
+
+
+
+
+ 実験結果
+ 100kbyte
+
+ データ量が増えると差が縮まっている。これはここの通信の手間の影響が大きことを示している。
+
+
+
+
+ 評価と考察
+
+ 今回の実装はJavaによりCode SegmentとData Segmentに必要なAPIを洗い出すものだった。この実装でも問題をいくつか発見した。
+ API
+ - Class継承したりData Segmentの作成にFactory objectを使うのはJavaを使う際の技術的な問題
+ - JavaのObject指向な記述が全体を煩雑にしている部分がある
+ - updateはData Segmentの競合的な更新に使われるべきだと思われる
+
+
+
+
+ 評価と考察
+
+ SEDA
+ - Federated Lindaに比べ遅い原因の一つはSEDA architectureのせいと思われる
+ - SEDAはスループット重視の実装であり、多段パイプラインのせいでレスポンスが遅れてしまう
+
+
+
+
+
+ 評価と考察
+
+ - スレッドプールを使わないほうが、Ringの結果は良い
+
+ - スレッドプールを使わないほうが、Ringの結果は良い
+
+
+
+
+ 評価と考察
+
+ MessagePack
+ - 今回の実装では単純なMessageの転送時にもMessagePackのdecode/encodeをしているが、overheadになってしまうため、decode/encode抜きに直接操作できるほうが望ましい
+ - Data Segmentの一部の修正をするたびにData Segmentが再構成されているがこれは望ましくない
+ - AliceもCeriumのようにInput Data SegmentとOutput Data SegmentをswapするAPIがあるとよいと思われる
+
+
+
+
+
+
+
diff -r dc453f4c4acf -r 8370b9afbf33 presen/prettify.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/prettify.js Thu Dec 20 16:29:59 2012 +0900
@@ -0,0 +1,1391 @@
+// Copyright (C) 2006 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+/**
+ * @fileoverview
+ * some functions for browser-side pretty printing of code contained in html.
+ *
+ *
+ * For a fairly comprehensive set of languages see the
+ * README
+ * file that came with this source. At a minimum, the lexer should work on a
+ * number of languages including C and friends, Java, Python, Bash, SQL, HTML,
+ * XML, CSS, Javascript, and Makefiles. It works passably on Ruby, PHP and Awk
+ * and a subset of Perl, but, because of commenting conventions, doesn't work on
+ * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class.
+ *
+ * Usage:
+ * - include this source file in an html page via
+ * {@code }
+ *
- define style rules. See the example page for examples.
+ *
- mark the {@code
} and {@code } tags in your source with
+ * {@code class=prettyprint.}
+ * You can also use the (html deprecated) {@code } tag, but the pretty
+ * printer needs to do more substantial DOM manipulations to support that, so
+ * some css styles may not be preserved.
+ *
+ * That's it. I wanted to keep the API as simple as possible, so there's no
+ * need to specify which language the code is in, but if you wish, you can add
+ * another class to the {@code } or {@code } element to specify the
+ * language, as in {@code }. Any class that
+ * starts with "lang-" followed by a file extension, specifies the file type.
+ * See the "lang-*.js" files in this directory for code that implements
+ * per-language file handlers.
+ *
+ * Change log:
+ * cbeust, 2006/08/22
+ *
+ * Java annotations (start with "@") are now captured as literals ("lit")
+ *
+ * @requires console
+ */
+
+// JSLint declarations
+/*global console, document, navigator, setTimeout, window */
+
+/**
+ * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
+ * UI events.
+ * If set to {@code false}, {@code prettyPrint()} is synchronous.
+ */
+window['PR_SHOULD_USE_CONTINUATION'] = true;
+
+/** the number of characters between tab columns */
+window['PR_TAB_WIDTH'] = 8;
+
+/** Contains functions for creating and registering new language handlers.
+ * @type {Object}
+ */
+window['PR']
+
+/** Pretty print a chunk of code.
+ *
+ * @param {string} sourceCodeHtml code as html
+ * @return {string} code as html, but prettier
+ */
+ = window['prettyPrintOne']
+/** Find all the {@code } and {@code } tags in the DOM with
+ * {@code class=prettyprint} and prettify them.
+ * @param {Function?} opt_whenDone if specified, called when the last entry
+ * has been finished.
+ */
+ = window['prettyPrint'] = void 0;
+
+
+(function () {
+ // Keyword lists for various languages.
+ var FLOW_CONTROL_KEYWORDS =
+ "break continue do else for if return while ";
+ var C_KEYWORDS = FLOW_CONTROL_KEYWORDS + "auto case char const default " +
+ "double enum extern float goto int long register short signed sizeof " +
+ "static struct switch typedef union unsigned void volatile ";
+ var COMMON_KEYWORDS = C_KEYWORDS + "catch class delete false import " +
+ "new operator private protected public this throw true try typeof ";
+ var CPP_KEYWORDS = COMMON_KEYWORDS + "alignof align_union asm axiom bool " +
+ "concept concept_map const_cast constexpr decltype " +
+ "dynamic_cast explicit export friend inline late_check " +
+ "mutable namespace nullptr reinterpret_cast static_assert static_cast " +
+ "template typeid typename using virtual wchar_t where ";
+ var JAVA_KEYWORDS = COMMON_KEYWORDS +
+ "abstract boolean byte extends final finally implements import " +
+ "instanceof null native package strictfp super synchronized throws " +
+ "transient ";
+ var CSHARP_KEYWORDS = JAVA_KEYWORDS +
+ "as base by checked decimal delegate descending dynamic event " +
+ "fixed foreach from group implicit in interface internal into is lock " +
+ "object out override orderby params partial readonly ref sbyte sealed " +
+ "stackalloc string select uint ulong unchecked unsafe ushort var ";
+ var COFFEE_KEYWORDS = "all and by catch class else extends false finally " +
+ "for if in is isnt loop new no not null of off on or return super then " +
+ "true try unless until when while yes ";
+ var JSCRIPT_KEYWORDS = COMMON_KEYWORDS +
+ "debugger eval export function get null set undefined var with " +
+ "Infinity NaN ";
+ var PERL_KEYWORDS = "caller delete die do dump elsif eval exit foreach for " +
+ "goto if import last local my next no our print package redo require " +
+ "sub undef unless until use wantarray while BEGIN END ";
+ var PYTHON_KEYWORDS = FLOW_CONTROL_KEYWORDS + "and as assert class def del " +
+ "elif except exec finally from global import in is lambda " +
+ "nonlocal not or pass print raise try with yield " +
+ "False True None ";
+ var RUBY_KEYWORDS = FLOW_CONTROL_KEYWORDS + "alias and begin case class def" +
+ " defined elsif end ensure false in module next nil not or redo rescue " +
+ "retry self super then true undef unless until when yield BEGIN END ";
+ var SH_KEYWORDS = FLOW_CONTROL_KEYWORDS + "case done elif esac eval fi " +
+ "function in local set then until ";
+ var ALL_KEYWORDS = (
+ CPP_KEYWORDS + CSHARP_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS +
+ PYTHON_KEYWORDS + RUBY_KEYWORDS + SH_KEYWORDS);
+
+ // token style names. correspond to css classes
+ /** token style for a string literal */
+ var PR_STRING = 'str';
+ /** token style for a keyword */
+ var PR_KEYWORD = 'kwd';
+ /** token style for a comment */
+ var PR_COMMENT = 'com';
+ /** token style for a type */
+ var PR_TYPE = 'typ';
+ /** token style for a literal value. e.g. 1, null, true. */
+ var PR_LITERAL = 'lit';
+ /** token style for a punctuation string. */
+ var PR_PUNCTUATION = 'pun';
+ /** token style for a punctuation string. */
+ var PR_PLAIN = 'pln';
+
+ /** token style for an sgml tag. */
+ var PR_TAG = 'tag';
+ /** token style for a markup declaration such as a DOCTYPE. */
+ var PR_DECLARATION = 'dec';
+ /** token style for embedded source. */
+ var PR_SOURCE = 'src';
+ /** token style for an sgml attribute name. */
+ var PR_ATTRIB_NAME = 'atn';
+ /** token style for an sgml attribute value. */
+ var PR_ATTRIB_VALUE = 'atv';
+
+ /**
+ * A class that indicates a section of markup that is not code, e.g. to allow
+ * embedding of line numbers within code listings.
+ */
+ var PR_NOCODE = 'nocode';
+
+ /** A set of tokens that can precede a regular expression literal in
+ * javascript.
+ * http://www.mozilla.org/js/language/js20/rationale/syntax.html has the full
+ * list, but I've removed ones that might be problematic when seen in
+ * languages that don't support regular expression literals.
+ *
+ * Specifically, I've removed any keywords that can't precede a regexp
+ * literal in a syntactically legal javascript program, and I've removed the
+ * "in" keyword since it's not a keyword in many languages, and might be used
+ * as a count of inches.
+ *
+ *
The link a above does not accurately describe EcmaScript rules since
+ * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
+ * very well in practice.
+ *
+ * @private
+ */
+ var REGEXP_PRECEDER_PATTERN = function () {
+ var preceders = [
+ "!", "!=", "!==", "#", "%", "%=", "&", "&&", "&&=",
+ "&=", "(", "*", "*=", /* "+", */ "+=", ",", /* "-", */ "-=",
+ "->", /*".", "..", "...", handled below */ "/", "/=", ":", "::", ";",
+ "<", "<<", "<<=", "<=", "=", "==", "===", ">",
+ ">=", ">>", ">>=", ">>>", ">>>=", "?", "@", "[",
+ "^", "^=", "^^", "^^=", "{", "|", "|=", "||",
+ "||=", "~" /* handles =~ and !~ */,
+ "break", "case", "continue", "delete",
+ "do", "else", "finally", "instanceof",
+ "return", "throw", "try", "typeof"
+ ];
+ var pattern = '(?:^^|[+-]';
+ for (var i = 0; i < preceders.length; ++i) {
+ pattern += '|' + preceders[i].replace(/([^=<>:&a-z])/g, '\\$1');
+ }
+ pattern += ')\\s*'; // matches at end, and matches empty string
+ return pattern;
+ // CAVEAT: this does not properly handle the case where a regular
+ // expression immediately follows another since a regular expression may
+ // have flags for case-sensitivity and the like. Having regexp tokens
+ // adjacent is not valid in any language I'm aware of, so I'm punting.
+ // TODO: maybe style special characters inside a regexp as punctuation.
+ }();
+
+
+ /**
+ * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
+ * matches the union of the sets of strings matched by the input RegExp.
+ * Since it matches globally, if the input strings have a start-of-input
+ * anchor (/^.../), it is ignored for the purposes of unioning.
+ * @param {Array.} regexs non multiline, non-global regexs.
+ * @return {RegExp} a global regex.
+ */
+ function combinePrefixPatterns(regexs) {
+ var capturedGroupIndex = 0;
+
+ var needToFoldCase = false;
+ var ignoreCase = false;
+ for (var i = 0, n = regexs.length; i < n; ++i) {
+ var regex = regexs[i];
+ if (regex.ignoreCase) {
+ ignoreCase = true;
+ } else if (/[a-z]/i.test(regex.source.replace(
+ /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
+ needToFoldCase = true;
+ ignoreCase = false;
+ break;
+ }
+ }
+
+ function decodeEscape(charsetPart) {
+ if (charsetPart.charAt(0) !== '\\') { return charsetPart.charCodeAt(0); }
+ switch (charsetPart.charAt(1)) {
+ case 'b': return 8;
+ case 't': return 9;
+ case 'n': return 0xa;
+ case 'v': return 0xb;
+ case 'f': return 0xc;
+ case 'r': return 0xd;
+ case 'u': case 'x':
+ return parseInt(charsetPart.substring(2), 16)
+ || charsetPart.charCodeAt(1);
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7':
+ return parseInt(charsetPart.substring(1), 8);
+ default: return charsetPart.charCodeAt(1);
+ }
+ }
+
+ function encodeEscape(charCode) {
+ if (charCode < 0x20) {
+ return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
+ }
+ var ch = String.fromCharCode(charCode);
+ if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') {
+ ch = '\\' + ch;
+ }
+ return ch;
+ }
+
+ function caseFoldCharset(charSet) {
+ var charsetParts = charSet.substring(1, charSet.length - 1).match(
+ new RegExp(
+ '\\\\u[0-9A-Fa-f]{4}'
+ + '|\\\\x[0-9A-Fa-f]{2}'
+ + '|\\\\[0-3][0-7]{0,2}'
+ + '|\\\\[0-7]{1,2}'
+ + '|\\\\[\\s\\S]'
+ + '|-'
+ + '|[^-\\\\]',
+ 'g'));
+ var groups = [];
+ var ranges = [];
+ var inverse = charsetParts[0] === '^';
+ for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
+ var p = charsetParts[i];
+ switch (p) {
+ case '\\B': case '\\b':
+ case '\\D': case '\\d':
+ case '\\S': case '\\s':
+ case '\\W': case '\\w':
+ groups.push(p);
+ continue;
+ }
+ var start = decodeEscape(p);
+ var end;
+ if (i + 2 < n && '-' === charsetParts[i + 1]) {
+ end = decodeEscape(charsetParts[i + 2]);
+ i += 2;
+ } else {
+ end = start;
+ }
+ ranges.push([start, end]);
+ // If the range might intersect letters, then expand it.
+ if (!(end < 65 || start > 122)) {
+ if (!(end < 65 || start > 90)) {
+ ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
+ }
+ if (!(end < 97 || start > 122)) {
+ ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
+ }
+ }
+ }
+
+ // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
+ // -> [[1, 12], [14, 14], [16, 17]]
+ ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1] - a[1]); });
+ var consolidatedRanges = [];
+ var lastRange = [NaN, NaN];
+ for (var i = 0; i < ranges.length; ++i) {
+ var range = ranges[i];
+ if (range[0] <= lastRange[1] + 1) {
+ lastRange[1] = Math.max(lastRange[1], range[1]);
+ } else {
+ consolidatedRanges.push(lastRange = range);
+ }
+ }
+
+ var out = ['['];
+ if (inverse) { out.push('^'); }
+ out.push.apply(out, groups);
+ for (var i = 0; i < consolidatedRanges.length; ++i) {
+ var range = consolidatedRanges[i];
+ out.push(encodeEscape(range[0]));
+ if (range[1] > range[0]) {
+ if (range[1] + 1 > range[0]) { out.push('-'); }
+ out.push(encodeEscape(range[1]));
+ }
+ }
+ out.push(']');
+ return out.join('');
+ }
+
+ function allowAnywhereFoldCaseAndRenumberGroups(regex) {
+ // Split into character sets, escape sequences, punctuation strings
+ // like ('(', '(?:', ')', '^'), and runs of characters that do not
+ // include any of the above.
+ var parts = regex.source.match(
+ new RegExp(
+ '(?:'
+ + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]' // a character set
+ + '|\\\\u[A-Fa-f0-9]{4}' // a unicode escape
+ + '|\\\\x[A-Fa-f0-9]{2}' // a hex escape
+ + '|\\\\[0-9]+' // a back-reference or octal escape
+ + '|\\\\[^ux0-9]' // other escape sequence
+ + '|\\(\\?[:!=]' // start of a non-capturing group
+ + '|[\\(\\)\\^]' // start/emd of a group, or line start
+ + '|[^\\x5B\\x5C\\(\\)\\^]+' // run of other characters
+ + ')',
+ 'g'));
+ var n = parts.length;
+
+ // Maps captured group numbers to the number they will occupy in
+ // the output or to -1 if that has not been determined, or to
+ // undefined if they need not be capturing in the output.
+ var capturedGroups = [];
+
+ // Walk over and identify back references to build the capturedGroups
+ // mapping.
+ for (var i = 0, groupIndex = 0; i < n; ++i) {
+ var p = parts[i];
+ if (p === '(') {
+ // groups are 1-indexed, so max group index is count of '('
+ ++groupIndex;
+ } else if ('\\' === p.charAt(0)) {
+ var decimalValue = +p.substring(1);
+ if (decimalValue && decimalValue <= groupIndex) {
+ capturedGroups[decimalValue] = -1;
+ }
+ }
+ }
+
+ // Renumber groups and reduce capturing groups to non-capturing groups
+ // where possible.
+ for (var i = 1; i < capturedGroups.length; ++i) {
+ if (-1 === capturedGroups[i]) {
+ capturedGroups[i] = ++capturedGroupIndex;
+ }
+ }
+ for (var i = 0, groupIndex = 0; i < n; ++i) {
+ var p = parts[i];
+ if (p === '(') {
+ ++groupIndex;
+ if (capturedGroups[groupIndex] === undefined) {
+ parts[i] = '(?:';
+ }
+ } else if ('\\' === p.charAt(0)) {
+ var decimalValue = +p.substring(1);
+ if (decimalValue && decimalValue <= groupIndex) {
+ parts[i] = '\\' + capturedGroups[groupIndex];
+ }
+ }
+ }
+
+ // Remove any prefix anchors so that the output will match anywhere.
+ // ^^ really does mean an anchored match though.
+ for (var i = 0, groupIndex = 0; i < n; ++i) {
+ if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
+ }
+
+ // Expand letters to groups to handle mixing of case-sensitive and
+ // case-insensitive patterns if necessary.
+ if (regex.ignoreCase && needToFoldCase) {
+ for (var i = 0; i < n; ++i) {
+ var p = parts[i];
+ var ch0 = p.charAt(0);
+ if (p.length >= 2 && ch0 === '[') {
+ parts[i] = caseFoldCharset(p);
+ } else if (ch0 !== '\\') {
+ // TODO: handle letters in numeric escapes.
+ parts[i] = p.replace(
+ /[a-zA-Z]/g,
+ function (ch) {
+ var cc = ch.charCodeAt(0);
+ return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
+ });
+ }
+ }
+ }
+
+ return parts.join('');
+ }
+
+ var rewritten = [];
+ for (var i = 0, n = regexs.length; i < n; ++i) {
+ var regex = regexs[i];
+ if (regex.global || regex.multiline) { throw new Error('' + regex); }
+ rewritten.push(
+ '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
+ }
+
+ return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
+ }
+
+
+ /**
+ * Split markup into a string of source code and an array mapping ranges in
+ * that string to the text nodes in which they appear.
+ *
+ *
+ * The HTML DOM structure:
+ *
+ * (Element "p"
+ * (Element "b"
+ * (Text "print ")) ; #1
+ * (Text "'Hello '") ; #2
+ * (Element "br") ; #3
+ * (Text " + 'World';")) ; #4
+ *
+ *
+ * corresponds to the HTML
+ * {@code
print 'Hello '
+ 'World';
}.
+ *
+ *
+ * It will produce the output:
+ *
+ * {
+ * source: "print 'Hello '\n + 'World';",
+ * // 1 2
+ * // 012345678901234 5678901234567
+ * spans: [0, #1, 6, #2, 14, #3, 15, #4]
+ * }
+ *
+ *
+ * where #1 is a reference to the {@code "print "} text node above, and so
+ * on for the other text nodes.
+ *
+ *
+ *
+ * The {@code} spans array is an array of pairs. Even elements are the start
+ * indices of substrings, and odd elements are the text nodes (or BR elements)
+ * that contain the text for those substrings.
+ * Substrings continue until the next index or the end of the source.
+ *
+ *
+ * @param {Node} node an HTML DOM subtree containing source-code.
+ * @return {Object} source code and the text nodes in which they occur.
+ */
+ function extractSourceSpans(node) {
+ var nocode = /(?:^|\s)nocode(?:\s|$)/;
+
+ var chunks = [];
+ var length = 0;
+ var spans = [];
+ var k = 0;
+
+ var whitespace;
+ if (node.currentStyle) {
+ whitespace = node.currentStyle.whiteSpace;
+ } else if (window.getComputedStyle) {
+ whitespace = document.defaultView.getComputedStyle(node, null)
+ .getPropertyValue('white-space');
+ }
+ var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3);
+
+ function walk(node) {
+ switch (node.nodeType) {
+ case 1: // Element
+ if (nocode.test(node.className)) { return; }
+ for (var child = node.firstChild; child; child = child.nextSibling) {
+ walk(child);
+ }
+ var nodeName = node.nodeName;
+ if ('BR' === nodeName || 'LI' === nodeName) {
+ chunks[k] = '\n';
+ spans[k << 1] = length++;
+ spans[(k++ << 1) | 1] = node;
+ }
+ break;
+ case 3: case 4: // Text
+ var text = node.nodeValue;
+ if (text.length) {
+ if (!isPreformatted) {
+ text = text.replace(/[ \t\r\n]+/g, ' ');
+ } else {
+ text = text.replace(/\r\n?/g, '\n'); // Normalize newlines.
+ }
+ // TODO: handle tabs here?
+ chunks[k] = text;
+ spans[k << 1] = length;
+ length += text.length;
+ spans[(k++ << 1) | 1] = node;
+ }
+ break;
+ }
+ }
+
+ walk(node);
+
+ return {
+ source: chunks.join('').replace(/\n$/, ''),
+ spans: spans
+ };
+ }
+
+
+ /**
+ * Apply the given language handler to sourceCode and add the resulting
+ * decorations to out.
+ * @param {number} basePos the index of sourceCode within the chunk of source
+ * whose decorations are already present on out.
+ */
+ function appendDecorations(basePos, sourceCode, langHandler, out) {
+ if (!sourceCode) { return; }
+ var job = {
+ source: sourceCode,
+ basePos: basePos
+ };
+ langHandler(job);
+ out.push.apply(out, job.decorations);
+ }
+
+ /** Given triples of [style, pattern, context] returns a lexing function,
+ * The lexing function interprets the patterns to find token boundaries and
+ * returns a decoration list of the form
+ * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
+ * where index_n is an index into the sourceCode, and style_n is a style
+ * constant like PR_PLAIN. index_n-1 <= index_n, and style_n-1 applies to
+ * all characters in sourceCode[index_n-1:index_n].
+ *
+ * The stylePatterns is a list whose elements have the form
+ * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
+ *
+ * Style is a style constant like PR_PLAIN, or can be a string of the
+ * form 'lang-FOO', where FOO is a language extension describing the
+ * language of the portion of the token in $1 after pattern executes.
+ * E.g., if style is 'lang-lisp', and group 1 contains the text
+ * '(hello (world))', then that portion of the token will be passed to the
+ * registered lisp handler for formatting.
+ * The text before and after group 1 will be restyled using this decorator
+ * so decorators should take care that this doesn't result in infinite
+ * recursion. For example, the HTML lexer rule for SCRIPT elements looks
+ * something like ['lang-js', /<[s]cript>(.+?)<\/script>/]. This may match
+ * '
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Title Goes Here Up
+
+ To Two Lines
+
+
+ Sergey Brin
+
+ May 10, 2011
+
+
+
+
+
+ This is a slide with just text. This is a slide with just text.
+ This is a slide with just text. This is a slide with just text.
+ This is a slide with just text. This is a slide with just text.
+
+
+ There is more text just underneath.
+
+
+
+
+
+ Simple slide with header and text
+
+
+ This is a slide with just text. This is a slide with just text.
+ This is a slide with just text. This is a slide with just text.
+ This is a slide with just text. This is a slide with just text.
+
+
+ There is more text just underneath with a code sample: 5px
.
+
+
+
+
+
+ Simple slide with header and text (small font)
+
+
+ This is a slide with just text. This is a slide with just text.
+ This is a slide with just text. This is a slide with just text.
+ This is a slide with just text. This is a slide with just text.
+
+
+ There is more text just underneath with a code sample: 5px
.
+
+
+
+
+
+ Slide with bullet points and a longer title, just because we
+ can make it longer
+
+
+ -
+ Use this template to create your presentation
+
+ -
+ Use the provided color palette, box and arrow graphics, and
+ chart styles
+
+ -
+ Instructions are provided to assist you in using this
+ presentation template effectively
+
+ -
+ At all times strive to maintain Google's corporate look and feel
+
+
+
+
+
+
+ Slide with bullet points that builds
+
+
+ -
+ This is an example of a list
+
+ -
+ The list items fade in
+
+ -
+ Last one!
+
+
+
+
+
Any element with child nodes can build.
+
It doesn't have to be a list.
+
+
+
+
+
+ Slide with bullet points (small font)
+
+
+ -
+ Use this template to create your presentation
+
-
+ Use the provided color palette, box and arrow graphics, and
+ chart styles
+
-
+ Instructions are provided to assist you in using this
+ presentation template effectively
+
-
+ At all times strive to maintain Google's corporate look and feel
+
+
+
+
+
+ Slide with a table
+
+
+
+
+
+ Name
+ |
+ Occupation
+ |
+
+ Luke Mahé
+ |
+ V.P. of Keepin’ It Real
+ |
+
+ Marcin Wichary
+ |
+ The Michael Bay of Doodles
+ |
+
+
+
+
+ Slide with a table (smaller text)
+
+
+
+
+
+ Name
+ |
+ Occupation
+ |
+
+ Luke Mahé
+ |
+ V.P. of Keepin’ It Real
+ |
+
+ Marcin Wichary
+ |
+ The Michael Bay of Doodles
+ |
+
+
+
+
+ Styles
+
+
+ -
+ class="red"
+
-
+ class="blue"
+
-
+ class="green"
+
-
+ class="yellow"
+
-
+ class="black"
+
-
+ class="white"
+
-
+ bold and italic
+
+
+
+
+
+ Segue slide
+
+
+
+
+
+ Slide with an image
+
+
+
+
+
+ Source: Sergey Brin
+
+
+
+
+
+ Slide with an image (centered)
+
+
+
+
+
+ Source: Larry Page
+
+
+
+
+
+ Image filling the slide (with optional header)
+
+
+
+
+
+ Source: Eric Schmidt
+
+
+
+
+
+ This slide has some code
+
+
+
+<script type='text/javascript'>
+ // Say hello world until the user starts questioning
+ // the meaningfulness of their existence.
+ function helloWorld(world) {
+ for (var i = 42; --i >= 0;) {
+ alert('Hello ' + String(world));
+ }
+ }
+</script>
+<style>
+ p { color: pink }
+ b { color: blue }
+ u { color: 'umber' }
+</style>
+
+
+
+
+
+
+ This slide has some code (small font)
+
+
+
+<script type='text/javascript'>
+ // Say hello world until the user starts questioning
+ // the meaningfulness of their existence.
+ function helloWorld(world) {
+ for (var i = 42; --i >= 0;) {
+ alert('Hello ' + String(world));
+ }
+ }
+</script>
+<style>
+ p { color: pink }
+ b { color: blue }
+ u { color: 'umber' }
+</style>
+
+
+
+
+
+
+ The best way to predict the future is to invent it.
+
+
+ Alan Kay
+
+
+
+
+
+ A distributed system is one in which the failure of a computer
+ you didn’t even know existed can render your own computer unusable.
+
+
+ Leslie Lamport
+
+
+
+
+
+ A slide with an embed + title
+
+
+
+
+
+
+
+
+
+
+
+ Full-slide embed with (optional) slide title on top
+
+
+
+
+
+
+ Thank you!
+
+
+
+
+
+
+
+
+