assorted-commits Mailing List for Assorted projects (Page 68)
Brought to you by:
yangzhang
You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(9) |
Dec
(12) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(86) |
Feb
(265) |
Mar
(96) |
Apr
(47) |
May
(136) |
Jun
(28) |
Jul
(57) |
Aug
(42) |
Sep
(20) |
Oct
(67) |
Nov
(37) |
Dec
(34) |
2009 |
Jan
(39) |
Feb
(85) |
Mar
(96) |
Apr
(24) |
May
(82) |
Jun
(13) |
Jul
(10) |
Aug
(8) |
Sep
(2) |
Oct
(20) |
Nov
(31) |
Dec
(17) |
2010 |
Jan
(16) |
Feb
(11) |
Mar
(17) |
Apr
(53) |
May
(31) |
Jun
(13) |
Jul
(3) |
Aug
(6) |
Sep
(11) |
Oct
(4) |
Nov
(17) |
Dec
(17) |
2011 |
Jan
(3) |
Feb
(19) |
Mar
(5) |
Apr
(17) |
May
(3) |
Jun
(4) |
Jul
(14) |
Aug
(3) |
Sep
(2) |
Oct
(1) |
Nov
(3) |
Dec
(2) |
2012 |
Jan
(3) |
Feb
(7) |
Mar
(1) |
Apr
|
May
(1) |
Jun
|
Jul
(4) |
Aug
(5) |
Sep
(2) |
Oct
(3) |
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
(9) |
Apr
(5) |
May
|
Jun
(2) |
Jul
(1) |
Aug
(10) |
Sep
(1) |
Oct
(2) |
Nov
|
Dec
|
2014 |
Jan
(1) |
Feb
(3) |
Mar
(3) |
Apr
(1) |
May
(4) |
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2016 |
Jan
(1) |
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2017 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(5) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(2) |
2018 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <yan...@us...> - 2008-01-13 02:30:15
|
Revision: 227 http://assorted.svn.sourceforge.net/assorted/?rev=227&view=rev Author: yangzhang Date: 2008-01-12 18:29:58 -0800 (Sat, 12 Jan 2008) Log Message: ----------- added safe_pickle, write_pickle; made read_pickle (formerly the AFAIK unused read_objs) more generic Modified Paths: -------------- python-commons/trunk/src/commons/seqs.py Modified: python-commons/trunk/src/commons/seqs.py =================================================================== --- python-commons/trunk/src/commons/seqs.py 2008-01-11 04:40:18 UTC (rev 226) +++ python-commons/trunk/src/commons/seqs.py 2008-01-13 02:29:58 UTC (rev 227) @@ -1,8 +1,12 @@ # -*- mode: python; tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4; -*- # vim:ft=python:et:sw=4:ts=4 +from __future__ import with_statement + from cStringIO import StringIO -import cPickle as pickle +from cPickle import * +from struct import pack, unpack +from contextlib import closing from itertools import ( chain, count, ifilterfalse, islice, izip, tee ) @@ -12,38 +16,52 @@ @var default_chunk_size: The default chunk size used by L{chunkify}. """ -default_chunk_size = 4096 +default_chunk_size = 8192 -def read_objs( s ): +def read_pickle( read ): """ - Given an input socket, reads in pickled objects from it. This is a - generator which yields those objects as they come. I assume that - the pickling format is resistant against partial (incomplete) - pickles. + Given a reader function L{read}, reads in pickled objects from it. I am a + generator which yields unpickled objects. I assume that the pickling + is "safe," done using L{safe_pickle}. - @param stream: The input stream. - @type stream: stream + @param read: The reader function that reads from a stream. It should take + a single argument, the number of bytes to consume. + @type read: function + """ + with closing( StringIO() ) as stream: + obj = None # return this if we hit eof (not enough bytes read) - @param chunk_size: The size of the chunk (usually the number of - bytes to read). - @type chunk_size: int + def read_until( target ): + remain = target - streamlen( stream ) + if remain > 0: + chunk = read( remain ) + # append to end + stream.seek(0,2) + stream.write( chunk ) + return stream.tell() >= target + + if read_until(4): + stream.seek(0) + (length,) = unpack('i4', stream.read(4)) + if read_until(length+4): + stream.seek(4) + obj = load(stream) + + return ( obj, stream.read() ) + +def safe_pickle( obj ): """ - stream = StringIO() - while True: - chunk = s.recv( 8192 ) - if len( chunk ) == 0: break - stream.write( chunk ) - stream.seek( 0 ) - while True: - try: obj = pickle.load( stream ) - except ( EOFError, pickle.UnpicklingError, ValueError ): break - else: - yield obj - rem = stream.read() - stream.seek( 0 ) - stream.write( rem ) - stream.truncate() + Pickle L{obj} but prepends the serialized length in bytes. + """ + msg = dumps(obj) + return pack('i4',len(msg)) + msg +def write_pickle( obj, write ): + """ + Write L{obj} using function L{write}, in a safe, pickle-able fashion. + """ + return write( safe_pickle( obj ) ) + def streamlen( stream ): """ Get the length of a stream (e.g. file stream or StringIO). This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-11 04:40:17
|
Revision: 226 http://assorted.svn.sourceforge.net/assorted/?rev=226&view=rev Author: yangzhang Date: 2008-01-10 20:40:18 -0800 (Thu, 10 Jan 2008) Log Message: ----------- latest, published. settling down, don't plan on working on it for some time Modified Paths: -------------- personal-site/trunk/src/dark.css personal-site/trunk/src/index.txt Modified: personal-site/trunk/src/dark.css =================================================================== --- personal-site/trunk/src/dark.css 2008-01-11 04:39:10 UTC (rev 225) +++ personal-site/trunk/src/dark.css 2008-01-11 04:40:18 UTC (rev 226) @@ -9,6 +9,7 @@ #define DIM_BLUE #87BEEB #define BRIGHT_BLUE #D0EFFF +#define TEXT_GRAY #DDDDDD #define TEXT_WHITE #DDDDDD #define H1_COLOR #DDDDDD #define H2_COLOR #FFFFFF @@ -43,8 +44,9 @@ } ul { - /* margin: 12px 0; */ - margin-left: -25px; + /* for MSIE */ + margin-left: 1.5em; + padding-left: 0em; } li { @@ -93,7 +95,7 @@ font: normal 1.5em sans-serif; letter-spacing: 0.2em; padding-left: 10px; - padding-bottom: -10px; + /* padding-bottom: -10px; */ /* margin-top: 30px; */ /* padding: 16px 20px; */ text-transform: lowercase; Modified: personal-site/trunk/src/index.txt =================================================================== --- personal-site/trunk/src/index.txt 2008-01-11 04:39:10 UTC (rev 225) +++ personal-site/trunk/src/index.txt 2008-01-11 04:40:18 UTC (rev 226) @@ -69,7 +69,8 @@ processing - [Technology and Infrastructure for Emerging Regions](http://tier.cs.berkeley.edu/) (TIER) - - [Recovery-Oriented Computing](http://roc.cs.berkeley.edu/) (ROC) + - [Recovery-Oriented Computing](http://roc.cs.berkeley.edu/) (ROC), Windows + crash dump analysis - [802.15.4 Simulation in TinyOS](http://tinyos.net/) - Other - ZDB: a personal data management system @@ -77,10 +78,9 @@ Search](http://www.microsoft.com/windows/products/winfamily/desktopsearch/) and [Microsoft SharePoint Portal Server](http://www.microsoft.com/sharepoint/) - - [Yi](http://haskell.org/haskellwiki/Yi): text editor written in Haskell - [Simple Publications Manager](http://pubmgr.sf.net/): publication management web application - - [Assorted Projects](http://assorted.sf.net/): my code dump +- [Assorted Projects](http://assorted.sf.net/): my code dump <a name="classes"></a> MIT classes @@ -99,7 +99,56 @@ <p>Valid XHTML 1.0 (<a href="http://validator.w3.org/check/referer">re-validate</a>)</p> <p>Valid CSS (<a href="http://jigsaw.w3.org/css-validator/check/referer">re-validate</a>)</p> </div> +<div id="spamlink" style="position: absolute; top: -250px; left: -250px;"><a href="http://people.csail.mit.edu/yang/appraisal.php">pattern</a></div> +<!-- +<style>a.pudris{color:#FFF;font:bold 10px arial,sans-serif;text-decoration:none;}</style><table cellspacing="0"cellpadding="0"border="0"style="background:#999;width:230px;"><tr><td valign="top"style="padding: 1px 2px 5px 4px;border-right:solid 1px #CCC;"><span style="font:bold 30px arial,sans-serif;color:#666;top:0px;position:relative;">@</span></td><td valign="top" align="left" style="padding:3px 0 0 4px;"><a href="http://www.projecthoneypot.org/" class="pudris">MEMBER OF PROJECT HONEY POT</a><br/><a href="http://www.unspam.com"class="pudris">Spam Harvester Protection Network<br/>provided by Unspam</a></td></tr></table> +--> +<!-- Google Analytics --> +<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> +</script> +<script type="text/javascript"> + _uacct = "UA-1322324-1"; + urchinTracker(); +</script> + +<!-- Performance Metrics --> +<script src="http://pmetrics.performancing.com/102.js" type="text/javascript"></script> +<noscript><p><img alt="Performancing Metrics" src="http://pmetrics.performancing.com/102ns.gif" /></p></noscript> + +<!-- Extreme Tracking --> +<div id="eXTReMe"><a href="http://extremetracking.com/open?login=yzzororg"> +<img src="http://t1.extreme-dm.com/i.gif" style="border: 0;" id="extremeimg" +height="38" width="41" id="EXim" alt="eXTReMe Tracker" /></a> +<script type="text/javascript"><!-- +var EXlogin='yzzororg' // Login +var EXvsrv='s9' // VServer +EXs=screen;EXw=EXs.width;navigator.appName!="Netscape"? +EXb=EXs.colorDepth:EXb=EXs.pixelDepth; +navigator.javaEnabled()==1?EXjv="y":EXjv="n"; +EXd=document;EXw?"":EXw="na";EXb?"":EXb="na"; +EXd.write("<img src=http://e0.extreme-dm.com", +"/"+EXvsrv+".g?login="+EXlogin+"&", +"jv="+EXjv+"&j=y&srw="+EXw+"&srb="+EXb+"&", +"l="+escape(EXd.referrer)+" height=1 width=1>");//--> +</script><noscript><div id="neXTReMe"><img height="1" width="1" alt="" +src="http://e0.extreme-dm.com/s9.g?login=yzzororg&j=n&jv=n" /> +</div></noscript></div> +<script> +var img = document.getElementById("extremeimg"); +img.width=1; +img.height=1; +</script> + +<!-- Quantcast --> +<!-- Start Quantcast tag --> +<script type="text/javascript" src="http://edge.quantserve.com/quant.js"></script> +<script type="text/javascript"> +_qacct="p-45nKPbm9DJOeE";quantserve();</script> +<noscript> +<img src="http://pixel.quantserve.com/pixel/p-45nKPbm9DJOeE.gif" style="display: none" height="1" width="1" alt="Quantcast"/></noscript> +<!-- End Quantcast tag --> + <!-- vim:ft=mkd:et:sw=2:ts=2:nocin --> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-11 04:39:06
|
Revision: 225 http://assorted.svn.sourceforge.net/assorted/?rev=225&view=rev Author: yangzhang Date: 2008-01-10 20:39:10 -0800 (Thu, 10 Jan 2008) Log Message: ----------- added Path Added Paths: ----------- scala-commons/trunk/src/commons/Path.scala Added: scala-commons/trunk/src/commons/Path.scala =================================================================== --- scala-commons/trunk/src/commons/Path.scala (rev 0) +++ scala-commons/trunk/src/commons/Path.scala 2008-01-11 04:39:10 UTC (rev 225) @@ -0,0 +1,12 @@ +package commons +import java.io.File +object Path { + implicit def StringToPathString(s: String) = PathString(s) + implicit def PathStringToString(p: PathString) = p.path + val sep = File.separatorChar + case class PathString(path: String) { + def /(relpath: String) = + if (path.last == sep) path + relpath + else path + sep + relpath + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-11 04:21:45
|
Revision: 224 http://assorted.svn.sourceforge.net/assorted/?rev=224&view=rev Author: yangzhang Date: 2008-01-10 20:21:45 -0800 (Thu, 10 Jan 2008) Log Message: ----------- added setdiff Modified Paths: -------------- shell-tools/trunk/src/bash-commons/common.bash shell-tools/trunk/src/daemon-ctl.bash Modified: shell-tools/trunk/src/bash-commons/common.bash =================================================================== --- shell-tools/trunk/src/bash-commons/common.bash 2008-01-11 03:59:19 UTC (rev 223) +++ shell-tools/trunk/src/bash-commons/common.bash 2008-01-11 04:21:45 UTC (rev 224) @@ -310,6 +310,17 @@ grep -B5 'ANSWER: 0' } +setdiff() { + local a="$( mktemp )" b="$( mktemp )" diff="${3:-diff}" && + sort -u "$1" > "$a" && { + sort -u "$2" > "$b" && { + "$diff" "$a" "$b" + } + rm "$b" + } + rm "$a" +} + persist-fsc() { local output="$(fsc "$@")" || status="$$" Modified: shell-tools/trunk/src/daemon-ctl.bash =================================================================== --- shell-tools/trunk/src/daemon-ctl.bash 2008-01-11 03:59:19 UTC (rev 223) +++ shell-tools/trunk/src/daemon-ctl.bash 2008-01-11 04:21:45 UTC (rev 224) @@ -98,7 +98,6 @@ { pid=$( cat "$pid_file" ) log "stopping pid = $pid, pid file = $pid_file" - indent for i in $( seq 1 "$timeout" ) ; do if ! ps $pid > /dev/null ; then break @@ -109,7 +108,6 @@ kill $pid &> /dev/null || true sleep 1 done - deindent if ps $pid > /dev/null ; then log "Force-killing $pid" kill -9 $pid This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-11 03:59:13
|
Revision: 223 http://assorted.svn.sourceforge.net/assorted/?rev=223&view=rev Author: yangzhang Date: 2008-01-10 19:59:19 -0800 (Thu, 10 Jan 2008) Log Message: ----------- added multimap Modified Paths: -------------- scala-commons/trunk/src/commons/Collections.scala Modified: scala-commons/trunk/src/commons/Collections.scala =================================================================== --- scala-commons/trunk/src/commons/Collections.scala 2008-01-11 03:57:11 UTC (rev 222) +++ scala-commons/trunk/src/commons/Collections.scala 2008-01-11 03:59:19 UTC (rev 223) @@ -453,6 +453,17 @@ (h, took) //(h, sortCounts(h) take n) } + + def multimap[a,b](xs: List[(a,b)]) = { + val h = new mut.HashMap[a, mut.ArrayBuffer[b]] { + override def default(k: a) = { + this(k) = new mut.ArrayBuffer[b] + this(k) + } + } + for ((k,v) <- xs) h(k) += v + h + } //def merge[a](in: Iterator[Iterator[a]]) = { // val iters = new Array(in: _*) // val cur = Array(in map (_ next): _*) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-11 03:57:12
|
Revision: 222 http://assorted.svn.sourceforge.net/assorted/?rev=222&view=rev Author: yangzhang Date: 2008-01-10 19:57:11 -0800 (Thu, 10 Jan 2008) Log Message: ----------- - added frontends for javabib, jscrape, sun http server (for zdb) - added handle generator (aka symbol generator) - added single-node-type tree TreeNode - added google ajax search api...this is in java :) stuffing here for now (for zdb) - added optionize(), success() - added run() Modified Paths: -------------- scala-commons/trunk/src/commons/Collections.scala scala-commons/trunk/src/commons/Control.scala scala-commons/trunk/src/commons/Io.scala scala-commons/trunk/src/commons/Misc.scala Added Paths: ----------- scala-commons/trunk/src/commons/GoogleAJAXSearchAPI.java scala-commons/trunk/src/commons/extras/ scala-commons/trunk/src/commons/extras/JScrape.scala scala-commons/trunk/src/commons/extras/JavaBib.scala scala-commons/trunk/src/commons/extras/SunHttpServer.scala Modified: scala-commons/trunk/src/commons/Collections.scala =================================================================== --- scala-commons/trunk/src/commons/Collections.scala 2008-01-04 03:33:45 UTC (rev 221) +++ scala-commons/trunk/src/commons/Collections.scala 2008-01-11 03:57:11 UTC (rev 222) @@ -298,6 +298,19 @@ case class Leaf[a](x: a) extends Tree[a] } + case class TreeNode[a](value: a, children: Seq[TreeNode[a]]) { + def show = { + import Misc._ + def r(n: TreeNode[a], lvl: Int): Stream[String] = { + Stream cons ( + " " * lvl + n.value, + Stream concat (n.children map (n => r(n, lvl+1))) + ) + } + r(this,0) mkString "\n" + } + } + abstract class BoolTree[a] { def sat(f: a => Boolean): Boolean = this match { case And(ts) => ts forall (_ sat f) Modified: scala-commons/trunk/src/commons/Control.scala =================================================================== --- scala-commons/trunk/src/commons/Control.scala 2008-01-04 03:33:45 UTC (rev 221) +++ scala-commons/trunk/src/commons/Control.scala 2008-01-11 03:57:11 UTC (rev 222) @@ -21,6 +21,10 @@ val stop = System.currentTimeMillis stop - start } + def optionize[a](f: => a) = + try { Some(f) } catch { case _ => None } + def success(f: => Any) = + try { f; true } catch { case _ => false } def loop[a](f: => a) { loop(const(f)) } def loop[a](f: Int => a) = for (val x <- Stream from 0) f(x) def lazyLoop[a](f: => a): Stream[a] = lazyLoop(const(f)) Added: scala-commons/trunk/src/commons/GoogleAJAXSearchAPI.java =================================================================== --- scala-commons/trunk/src/commons/GoogleAJAXSearchAPI.java (rev 0) +++ scala-commons/trunk/src/commons/GoogleAJAXSearchAPI.java 2008-01-11 03:57:11 UTC (rev 222) @@ -0,0 +1,29 @@ +import java.io.*; +import java.net.*; + +public class GoogleAJAXSearchAPI { + private static String endpointURL = "http://www.google.com/uds/GwebSearch?"+ + "callback=GwebSearch.Raw" + + "Completion&context=0&lstkp=0&rsz=small&hl=en&" + + "sig=8656f49c146c5220e273d16b4b6978b2&q=Axis2&key=xxxxxxxxxxxxxxxxxx&v=1.0"; + + public static void main(String[] args) throws Exception { + URLConnection uc = new URL(endpointURL).openConnection(); + HttpURLConnection connection = (HttpURLConnection) uc; + connection.setDoOutput(true); + connection.setRequestMethod("GET"); + connection.connect(); + + String line; + InputStream inputStream = null; + try { + inputStream = connection.getInputStream(); + } catch (IOException e) { + inputStream = connection.getErrorStream(); + } + BufferedReader rd = new BufferedReader(new InputStreamReader(inputStream)); + while ((line = rd.readLine()) != null) { + System.out.println(line); + } + } +} Modified: scala-commons/trunk/src/commons/Io.scala =================================================================== --- scala-commons/trunk/src/commons/Io.scala 2008-01-04 03:33:45 UTC (rev 221) +++ scala-commons/trunk/src/commons/Io.scala 2008-01-11 03:57:11 UTC (rev 222) @@ -86,5 +86,17 @@ using (new ObjectOutputStream(bytes)) (_ writeObject x) using (BinaryWriter(fname)) (_ write bytes.toByteArray) } + + def run(cmd: String, input: String) = { + val proc = Runtime.getRuntime.exec(cmd) + using (TextWriter(proc.getOutputStream)) (_ println input) + if (proc.waitFor != 0) { + throw new Exception( + "command failed with exit status " + proc.exitValue + ": " + cmd + ) + } + using (TextReader(proc.getInputStream)) (_ read) + } + } import Io._ Modified: scala-commons/trunk/src/commons/Misc.scala =================================================================== --- scala-commons/trunk/src/commons/Misc.scala 2008-01-04 03:33:45 UTC (rev 221) +++ scala-commons/trunk/src/commons/Misc.scala 2008-01-11 03:57:11 UTC (rev 222) @@ -32,6 +32,13 @@ implicit def str2xstr(s: String): XString = XString(s) implicit def xstr2str(s: XString): String = s.s def id[a](x: a) = x + + // aka symbol generator + class HandleGenerator(base: String) extends Iterator[String] { + val i = Iterator from 0 + override def next = base + i.next + override def hasNext = i.hasNext + } // class OrderedPair[a <: Ordered[a], b](x:a,y:b) extends GPair[a,b](x,y) with Ordered[OrderedPair[a,b]] { // override def compare(o: OrderedPair[a,b]) = x compare o._1 // } Added: scala-commons/trunk/src/commons/extras/JScrape.scala =================================================================== --- scala-commons/trunk/src/commons/extras/JScrape.scala (rev 0) +++ scala-commons/trunk/src/commons/extras/JScrape.scala 2008-01-11 03:57:11 UTC (rev 222) @@ -0,0 +1,26 @@ +package commons.extras + +import com.apsquared.jscrape._ + +object JScraper { + def scrapeForString(url: String, query: String) = { + val q = + """declare namespace xhtml="http://www.w3.org/1999/xhtml";""" + new PageScraper scrapePageForString (url, q + query) + } +// +// def scrapeForList(url: String, query: String) = +// + + def main(args: Array[String]) { + if (args.length > 0) { + val url = args(0) + val query = args(1) + println(scrapeForString(url, query)) + } else { + val url = "http://citeseer.ist.psu.edu/desikan03lightweight.html" + val query = "//xhtml:pre" + println(scrapeForString(url, query)) + } + } +} Added: scala-commons/trunk/src/commons/extras/JavaBib.scala =================================================================== --- scala-commons/trunk/src/commons/extras/JavaBib.scala (rev 0) +++ scala-commons/trunk/src/commons/extras/JavaBib.scala 2008-01-11 03:57:11 UTC (rev 222) @@ -0,0 +1,36 @@ +package commons.extras + +import bibtex.dom._ +import bibtex.parser._ +import java.io._ +import scala.collection.jcl + +object JavaBib { + type Entry = Map[String, Seq[String]] + def list2buffer[a](xs: java.util.List) = new jcl.BufferWrapper[a] { + override def underlying = xs + } + def convert(entry: BibtexEntry): Entry = { + val map = new jcl.MapWrapper[String, BibtexAbstractValue] { + override def underlying = entry.getFields + } + val mappings = for ((k,uncasted) <- map.elements) yield { + val newV = uncasted match { + case v: BibtexPersonList => list2buffer(v getList) + case v: BibtexString => List(v getContent) + } + (k,newV) + } + Map(mappings toList:_*) + } + def parse(value: String): (Seq[Entry], Seq[Exception]) = + parse(new StringReader(value)) + def parse(reader: Reader) = { + val file = new BibtexFile + val parser = new BibtexParser(false) + parser parse (file, reader) + val entries = list2buffer[BibtexEntry](file getEntries) map convert + (entries, parser.getExceptions) + } +} + Added: scala-commons/trunk/src/commons/extras/SunHttpServer.scala =================================================================== --- scala-commons/trunk/src/commons/extras/SunHttpServer.scala (rev 0) +++ scala-commons/trunk/src/commons/extras/SunHttpServer.scala 2008-01-11 03:57:11 UTC (rev 222) @@ -0,0 +1,59 @@ +package commons.extras + +import com.sun.net.httpserver._ +import java.net._ +import commons.Control._ +import commons.Io._ +import scala.collection.{immutable => immut, jcl} +import com.Ostermiller.util._ + +/** + * Servlet-like wrapper around Sun's small HTTP server that comes with Java 6. + * + * Requires ostermillerutils, java 6 + */ +object SunHttpServer { + type HeaderMap = Map[String,Seq[String]] + type ParamMap = Map[String,String] + type Handler = (String, HeaderMap, URI, ParamMap, String) => String + def start(f: Handler) { + val server = HttpServer create (new InetSocketAddress(8888), 1) + server createContext ("/", new HttpHandler { + override def handle(t: HttpExchange) { + val headers = { + val hs = new jcl.MapWrapper[String,java.util.List] { + override def underlying = t.getRequestHeaders + } + Map(hs.elements map { case (k,v) => + val v2 = new jcl.BufferWrapper[String] { + override def underlying = v + } + (k, v2) + } toList: _*) + } + val body = using (TextReader(t getRequestBody)) (_ read) + val method = t getRequestMethod; + val uri = t getRequestURI; + // TODO note that this mapping is lossy (only uses one of multiple + // potential mappings for each key) + val paramMap = { + val params = new CGIParser(uri getQuery) getParameters; + val map = Map(params map { pair => (pair.getName, pair.getValue) }: _*) + map withDefaultValue "" + } + val response = try { + f(method, headers, uri, paramMap, body) + } catch { + case ex: Exception => { + ex.printStackTrace + throw ex + } + } + t sendResponseHeaders (200, response length) + using (t getResponseBody) (_ write response.getBytes) + } + }) + server setExecutor null + server start; + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-04 03:33:45
|
Revision: 221 http://assorted.svn.sourceforge.net/assorted/?rev=221&view=rev Author: yangzhang Date: 2008-01-03 19:33:45 -0800 (Thu, 03 Jan 2008) Log Message: ----------- added team little's code for battlecode 2007 Added Paths: ----------- battlecode-2007-little/ battlecode-2007-little/trunk/ battlecode-2007-little/trunk/teams/ battlecode-2007-little/trunk/teams/boat/ battlecode-2007-little/trunk/teams/boat/RobotPlayer.java battlecode-2007-little/trunk/teams/classpath battlecode-2007-little/trunk/teams/clean/ battlecode-2007-little/trunk/teams/clean/MyConst.java battlecode-2007-little/trunk/teams/clean/RobotPlayer.java battlecode-2007-little/trunk/teams/emp_offense/ battlecode-2007-little/trunk/teams/emp_offense/RobotPlayer.java battlecode-2007-little/trunk/teams/emp_offense2/ battlecode-2007-little/trunk/teams/emp_offense2/MyConst.java battlecode-2007-little/trunk/teams/emp_offense2/RobotPlayer.java battlecode-2007-little/trunk/teams/groupies/ battlecode-2007-little/trunk/teams/groupies/MyConst.java battlecode-2007-little/trunk/teams/groupies/RobotPlayer.java battlecode-2007-little/trunk/teams/huns/ battlecode-2007-little/trunk/teams/huns/MyConst.java battlecode-2007-little/trunk/teams/huns/RobotPlayer.java battlecode-2007-little/trunk/teams/imper/ battlecode-2007-little/trunk/teams/imper/RobotPlayer.java battlecode-2007-little/trunk/teams/imper4/ battlecode-2007-little/trunk/teams/imper4/RobotPlayer.java battlecode-2007-little/trunk/teams/nomad_emp_defense/ battlecode-2007-little/trunk/teams/nomad_emp_defense/MyConst.java battlecode-2007-little/trunk/teams/nomad_emp_defense/RobotPlayer.java battlecode-2007-little/trunk/teams/nomads/ battlecode-2007-little/trunk/teams/nomads/MyConst.java battlecode-2007-little/trunk/teams/nomads/RobotPlayer.java battlecode-2007-little/trunk/teams/noop/ battlecode-2007-little/trunk/teams/noop/MyConst.java battlecode-2007-little/trunk/teams/noop/RobotPlayer.java battlecode-2007-little/trunk/teams/project battlecode-2007-little/trunk/teams/sammies/ battlecode-2007-little/trunk/teams/sammies/MyConst.java battlecode-2007-little/trunk/teams/sammies/RobotPlayer.java battlecode-2007-little/trunk/teams/soldiermass/ battlecode-2007-little/trunk/teams/soldiermass/MyConst.java battlecode-2007-little/trunk/teams/soldiermass/RobotPlayer.java battlecode-2007-little/trunk/teams/soldiers/ battlecode-2007-little/trunk/teams/soldiers/MyConst.java battlecode-2007-little/trunk/teams/soldiers/RobotPlayer.java battlecode-2007-little/trunk/teams/tank_rush/ battlecode-2007-little/trunk/teams/tank_rush/MyConst.java battlecode-2007-little/trunk/teams/tank_rush/RobotPlayer.java battlecode-2007-little/trunk/teams/tankbase/ battlecode-2007-little/trunk/teams/tankbase/MyConst.java battlecode-2007-little/trunk/teams/tankbase/RobotPlayer.java battlecode-2007-little/trunk/teams/team022/ battlecode-2007-little/trunk/teams/team022/MyConst.java battlecode-2007-little/trunk/teams/team022/RobotPlayer.java battlecode-2007-little/trunk/teams/team022/RobotPlayer_antiEmp.java battlecode-2007-little/trunk/teams/todo.txt Added: battlecode-2007-little/trunk/teams/boat/RobotPlayer.java =================================================================== --- battlecode-2007-little/trunk/teams/boat/RobotPlayer.java (rev 0) +++ battlecode-2007-little/trunk/teams/boat/RobotPlayer.java 2008-01-04 03:33:45 UTC (rev 221) @@ -0,0 +1,804 @@ +package boat; + +import battlecode.common.*; +import static battlecode.common.GameConstants.*; +import static battlecode.common.Direction.*; +import java.io.*; +import java.lang.*; +import java.math.*; +import java.util.*; + +public class RobotPlayer implements Runnable { + + public final RobotController rc; + public final Robot r; + public final int id; + public final RobotType type; + public final int broadcastRadiusSquared; + + public final int myMagic = 0x729d8298; + public final int mySeed = 0x27e72954; + + public RobotPlayer(RobotController rc) { + this.rc = rc; + r = rc.getRobot(); + id = r.getID(); + type = rc.getRobotType(); + broadcastRadiusSquared = type.broadcastRadius() * type.broadcastRadius(); + } + + // ======================================================================== + + public int nextMessageId = 0; + public Set<MapLocation> receivedMessaged = new HashSet<MapLocation>(); + + public void sendMessage(String msg, int[] data) throws Exception { + Message m = new Message(); + m.strings = new String[] {msg}; + m.ints = data; + + MapLocation loc = rc.getLocation(); + + int hash1 = myMagic ^ id ^ loc.getY(); + int hash2 = mySeed ^ nextMessageId ^ loc.getX(); + + m.locations = new MapLocation[] { + new MapLocation(id, nextMessageId), + loc, + new MapLocation(hash1, hash2) + }; + + nextMessageId++; + + rc.queueBroadcast(m); + } + + public Message getMessage() throws Exception { + while (true) { + Message m = rc.getNextMessage(); + if (m == null) return null; + if (m.strings != null && m.strings.length == 1 && m.locations != null && m.locations.length == 3) { + MapLocation m1 = m.locations[0]; + if (m1 == null) continue; + MapLocation m2 = m.locations[1]; + if (m2 == null) continue; + MapLocation m3 = m.locations[2]; + if (m3 == null) continue; + + // make sure the hash checks out + int hash1 = myMagic ^ m1.getX() ^ m2.getY(); + int hash2 = mySeed ^ m1.getY() ^ m2.getX(); + if (m3.getX() != hash1) continue; + if (m3.getY() != hash2) continue; + + // make sure we didn't already receive it + if (!receivedMessaged.add(m1)) continue; + + // make sure we could have heard it + if (rc.getLocation().distanceSquaredTo(m2) > broadcastRadiusSquared) continue; + + // ok, I guess we'll believe it... + return m; + } + } + } + + public void debug(String s) throws Exception { + debug(0, s); + } + + public void debug(int index, String s) throws Exception { + rc.setIndicatorString(index, s); + } + + public int round() throws Exception { + return Clock.getRoundNum(); + } + + public MapLocation add(MapLocation a, MapLocation b) { + return new MapLocation(a.getX() + b.getX(), a.getY() + b.getY()); + } + + public MapLocation sub(MapLocation a, MapLocation b) { + return new MapLocation(a.getX() - b.getX(), a.getY() - b.getY()); + } + +// public final double dir_const = 8.0 / (Math.PI * 2); +// public final Direction[] dirArray = new Direction[] {WEST, SOUTH_WEST, SOUTH, SOUTH_EAST, EAST, NORTH_EAST, NORTH, NORTH_WEST, WEST, SOUTH_WEST, SOUTH, SOUTH_EAST, EAST}; +// public final double dir_const = 8.0 / (Math.PI * 2); +// public final Direction[] dirArray = new Direction[] {EAST, NORTH_EAST, NORTH, NORTH_WEST, WEST, SOUTH_WEST, SOUTH, SOUTH_EAST, EAST}; +// public Direction dir(MapLocation from, MapLocation to) { +// return dirArray[4 + (int)Math.round(dir_const * Math.atan2(from.getY() - to.getY(), to.getX() - from.getX()))]; +// int i = (int)Math.round(dir_const * Math.atan2(from.getY() - to.getY(), to.getX() - from.getX())); +// if (i > 0) return dirArray[i]; +// return dirArray[8 + i]; +// } + + public static Direction dir(MapLocation from, MapLocation to) { + int dx = to.getX() - from.getX(); // 12 + int dy = from.getY() - to.getY(); // 12 + if (dx > 0) { // 2 + if (dy > 0) { // 2 + return NORTH_EAST; // 2 + } else if (dy == 0) { + return EAST; + } else { + return SOUTH_EAST; + } + } else if (dx == 0) { + if (dy > 0) { + return NORTH; + } else if (dy == 0) { + return Direction.NORTH; + } else { + return SOUTH; + } + } else { + if (dy > 0) { + return NORTH_WEST; + } else if (dy == 0) { + return WEST; + } else { + return SOUTH_WEST; + } + } + } + + public static Direction dir(int fromX, int fromY, int toX, int toY) { + int dx = toX - fromX; // 12 + int dy = fromY - toY; // 12 + if (dx > 0) { // 2 + if (dy > 0) { // 2 + return NORTH_EAST; // 2 + } else if (dy == 0) { + return EAST; + } else { + return SOUTH_EAST; + } + } else if (dx == 0) { + if (dy > 0) { + return NORTH; + } else if (dy == 0) { + return Direction.NORTH; + } else { + return SOUTH; + } + } else { + if (dy > 0) { + return NORTH_WEST; + } else if (dy == 0) { + return WEST; + } else { + return SOUTH_WEST; + } + } + } + + public int timer_startRound; + public int timer_startByte; + + public void debug_startTimer() { + timer_startRound = Clock.getRoundNum(); + timer_startByte = Clock.getBytecodeNum(); + } + + public int debug_endTimer() { + return debug_stopTimer(); + } + + public int debug_stopTimer() { + int endByte = Clock.getBytecodeNum(); + int endRound = Clock.getRoundNum(); + int bytes = (6000 - timer_startByte) + + (endRound - timer_startRound - 1) * 6000 + endByte - 3; + System.out.println("bytes = " + bytes); + return bytes; + } + + public int distSq(int x1, int y1, int x2, int y2) { + int dx = x1 - x2; + int dy = y1 - y2; + return dx * dx + dy * dy; + } + + // ======================================================================== + + public class Dist { + public int dist; + public Direction dir; + + public Dist(int dist, Direction dir) { + this.dist = dist; + this.dir = dir; + } + } + + public class Board { + MapLocation origin; + TerrainType[][] tiles = new TerrainType[79][79]; + Dist[][] dists = new Dist[79][79]; + + Map<Direction, Double> dirPoints = new HashMap<Direction, Double>(); + + public Board(MapLocation center) { + origin = new MapLocation(center.getX() - 39, center.getY() - 39); + +// double a = 2; +// double b = 3; +// double c; +// +// Vector<Double> a = new Vector<Double>(); +// for (int i = 0; i < 1000; i++) { +// a.add(1000.0 - i); +// } +// +// int beginTime = Clock.getBytecodeNum(); +// +// Collections.sort(a); +// +// int endTime = Clock.getBytecodeNum(); +// System.out.println("time = " + (endTime - beginTime - 2)); + } + + public Direction getBestDir() { + Direction bestDir = Direction.NORTH; + double best = 0.0; + for (Direction d : dirPoints.keySet()) { + double points = dirPoints.get(d); + if (points > best) { + best = points; + bestDir = d; + } + } + return bestDir; + } + + public void exploreSurroundings() { +// int beginTime = Clock.getBytecodeNum(); + +// System.out.println(); + MapLocation loc = rc.getLocation(); + for (int y = loc.getY() - type.sensorRadius(); y <= loc.getY() + type.sensorRadius(); y++) { + for (int x = loc.getX() - type.sensorRadius(); x <= loc.getX() + type.sensorRadius(); x++) { + TerrainType t = rc.senseTerrainType(new MapLocation(x, y)); + tiles[x - origin.getX()][y - origin.getY()] = t; +// +// System.out.print(t == null ? "." : t == TerrainType.OFF_MAP ? "v" : t == TerrainType.WATER ? "#" : " "); + } +// System.out.println(); + } + +// int endTime = Clock.getBytecodeNum(); +// System.out.println("time = " + (endTime - beginTime)); + } + + public void astar() throws Exception { + int beginTime = Clock.getRoundNum(); + + dists = new Dist[79][79]; + dirPoints = new HashMap<Direction, Double>(); + boolean callOfNature = false; + + int orth = type.moveDelayOrthogonal(); + int diag = type.moveDelayDiagonal(); + + LinkedList<Pair<Integer, Pair<MapLocation, Direction>>> v = new LinkedList<Pair<Integer, Pair<MapLocation, Direction>>>(); + MapLocation robotLoc = sub(rc.getLocation(), origin); + v.add(new Pair<Integer, Pair<MapLocation, Direction>>( + 0, new Pair<MapLocation, Direction>(robotLoc, null))); + + debug_startTimer(); + + l1: while (v.size() > 0) { +// Collections.sort((List)v); + Pair<Integer, Pair<MapLocation, Direction>> p = v.remove(0); + int dist = p.left; + if (dist > 6 * orth && callOfNature) { + break; + } + MapLocation loc = p.right.left; + int locX = loc.getX(); + int locY = loc.getY(); + Direction dir = p.right.right; + + if (dists[locX][locY] == null) { + dists[locX][locY] = new Dist(dist, dir); + + Direction cur = Direction.NORTH; + do { + MapLocation loc2 = loc.add(cur); + TerrainType t = tiles[loc2.getX()][loc2.getY()]; + if (t == null && callOfNature == false) { + callOfNature = true; + dirPoints.put(dir, 10.0); + } + if (t != null && t == TerrainType.LAND && dists[loc2.getX()][loc2.getY()] == null) { + Pair<Integer, Pair<MapLocation, Direction>> p2 = new Pair<Integer, Pair<MapLocation, Direction>>( + dist + (cur.isDiagonal() ? diag : orth), new Pair<MapLocation, Direction>( + loc2, dir != null ? dir : cur)); + + v.add(p2); + } + + cur = cur.rotateRight(); + } while (cur != Direction.NORTH); + } + } + + { + for (Upgrade u : rc.senseNearbyUpgrades()) { + MapLocation m = sub(rc.senseLocationOf(u), origin); + Dist d = dists[m.getX()][m.getY()]; + if (d != null) { + Double points = dirPoints.get(d.dir); + if (points == null) { + points = 0.0; + } + dirPoints.put(d.dir, points + 100.0); + } + } + } + + debug_endTimer(); + + } + } + + // ======================================================================== + + public static class Blah implements Comparable { + public double dist; + public double heuristic; + public MapLocation loc; + + public Blah(double dist, MapLocation loc, MapLocation dest) { + this.dist = dist; + this.heuristic = dist + Math.sqrt(loc.distanceSquaredTo(dest)); + this.loc = loc; + } + + public int compareTo(Object o) { + Blah that = (Blah)o; + return new Double(heuristic).compareTo(that.heuristic); + } + } + + public static class MyPoint { + int x; + int y; + + public int getX() { + return x; + } + + public int getY() { + return y; + } + } + + public void astarTest() { + + System.out.println("got here!"); + + Random rand = new Random(); + + { + System.out.println("loc = " + rc.getLocation()); + + } + + { + Random r = new Random(100); + + for (int i = 0; i < 15; i++) { + System.out.println("next = " + r.nextGaussian()); + } + } + + { + HashSet<MapLocation> s1 = new HashSet<MapLocation>(); + for (int i = 0; i < 100; i++) { + s1.add(new MapLocation(rand.nextInt(1000), rand.nextInt(1000))); + } + HashSet<MapLocation> s2 = new HashSet<MapLocation>(); + for (int i = 0; i < 100; i++) { + s2.add(new MapLocation(rand.nextInt(1000), rand.nextInt(1000))); + } + + debug_startTimer(); + + s1.addAll(s2); + + debug_endTimer(); + } +// { +// Vector<Integer> v = new Vector<Integer>(); +// +// for (int i = 0; i < 1000; i++) { +// v.add(100 - i); +// } +// +// System.out.println("doing test"); +// +// debug_startTimer(); +// +// Collections.sort(v); +// Collections.sort(v); +// +// debug_endTimer(); +// } + +// +// HashSet<MapLocation> blahS = new HashSet<MapLocation>(Arrays.asList(blah)); +// +// int[] here = new int[2000]; +// +// debug_startTimer(); +// +// MapLocation[] here2 = blahS.toArray(new MapLocation[0]); +// +// debug_stopTimer(); +// debug_startTimer(); +// +// int i = 0; +// for (MapLocation lo : blahS) { +// here[i++] = lo.getX(); +// here[i++] = lo.getY(); +// } +// +// debug_stopTimer(); +// +// System.out.println(here2[0]); + + + + + + + +// String a = "######################################## #x #+x # ## AA # #x # + ## AA # # # + ## # ## # ## # ## # ##### # # #####x #### # # #### ## #+x + x+# ## #x # # x# ## #### #### ## # ## # ## ## ## # ######### # ## ## ## ## ## ## # #### ## ##x ## # ## ## x##+x # # # # x # # # # x+###### + # x+x # + ######+x # # # # x # # # # x+##x ## ## # ## x## ## #### # ## ## ## ## ## ## # ######### # ## ## ## # ## # ## #### #### ## #x # # x# ## #+x + x+# ## #### # # #### x##### # # ##### # ## # ## # ## # ## + # # # BB ## + # x# # BB ## # x+# x# ########################################"; +// +// final int size = 39; +// int orth = type.moveDelayOrthogonal(); +// int diag = type.moveDelayDiagonal(); +// +// System.out.println(); +// boolean[][] map = new boolean[size][size]; +// { +// for (int y = 0; y < 39; y++) { +// for (int x = 0; x < 39; x++) { +// map[x][y] = (a.charAt(y * 39 + x) != '#'); +// +// System.out.print(map[x][y] ? "." : "#"); +// } +// System.out.println(); +// } +// } +// +// { +// MapLocation start = new MapLocation(1, 1); +// MapLocation end = new MapLocation(2, 0); +// +// int i = 1; +// int ii = 9; +// +// debug_startTimer(); +// +// int d = start.distanceSquaredTo(end); +// +// debug_endTimer(); +// System.out.println("dd = " + d); +// } +// +// { +// MapLocation start = new MapLocation(1, 1); +// int endX = 18; +// int endY = 22; +// +// int[][] dists = new int[size][size]; +// +// +// +// +// debug_startTimer(); + +// int curX = start.getX(); +// int curY = start.getY(); +// Direction dir = dir(curX, curY, endX, endY); +// int bestDist = Integer.MAX_VALUE; +// while (curX != endX || curY != endY) { +// dists[curX][curY] = 1; // 14 +// +// int dist = distSq(curX, curY, endX, endY); // 14 +// if (dist < bestDist) { // 3 +// bestDist = dist; // 2 +// dir = dir(curX, curY, endX, endY); // 5 + 30 = 35 +// +// while (true) { +// MapLocation loc2 = cur.add(dir); +// if (map[loc2.getX()][loc2.getY()]) { +// cur = loc2; +// } else { +// break; +// } +// } +// } +// +// while (true) { // 1 +// int loc2X = curX + dirDx +// MapLocation loc2 = cur.add(dir); // 4 + +// if (map[loc2.getX()][loc2.getY()]) { +// cur = loc2; +// dir = dir.isDiagonal() ? dir.rotateRight().rotateRight() : dir.rotateRight(); +// break; +// } else { +// dir = dir.rotateLeft(); +// } +// } +// } + + +// int time = debug_endTimer(); +// +// System.out.println(); +// int count = 0; +// for (int y = 0; y < 39; y++) { +// for (int x = 0; x < 39; x++) { +// +// if (dists[x][y] != 0) { +// System.out.print("v"); +// count++; +// } else { +// System.out.print(map[x][y] ? "." : "#"); +// } +// } +// System.out.println(); +// } +// System.out.println("count = " + count + " : " + (time / count)); +// } + + + +// { +// MapLocation start = new MapLocation(1, 1); +// MapLocation end = new MapLocation(19, 19); +// +// MapLocation cur = start; +// double bestDist = start.distanceSquaredTo(end); +// while (!cur.equals(end)) { +// +// } +// +// double[][] dists = new double[size][size]; +// Vector<Blah> open = new Vector<Blah>(); +// open.add(new Blah(1, start, end)); +// +// while (open.size() > 0) { +// Collections.sort((List)open); +// Blah b = open.remove(0); +// if (dists[b.loc.getX()][b.loc.getY()] == 0) { +// dists[b.loc.getX()][b.loc.getY()] = b.dist; +// +// if (b.loc.equals(end)) { +// break; +// } +// +// Direction cur = Direction.NORTH; +// do { +// MapLocation loc2 = b.loc.add(cur); +// boolean t = map[loc2.getX()][loc2.getY()]; +// if (t && dists[loc2.getX()][loc2.getY()] == 0) { +// open.add(new Blah(b.dist + (cur.isDiagonal() ? diag : orth), loc2, end)); +// } +// cur = cur.rotateRight(); +// } while (cur != Direction.NORTH); +// } +// System.out.print("."); +// System.out.flush(); +// } +// System.out.println(); +// for (int y = 0; y < 39; y++) { +// for (int x = 0; x < 39; x++) { +// +// if (dists[x][y] != 0) { +// System.out.print("v"); +// } else { +// System.out.print(map[x][y] ? "." : "#"); +// } +// } +// System.out.println(); +// } +// } + + + + + + + + +// { +// MapLocation start = new MapLocation(1, 1); +// MapLocation end = new MapLocation(19, 19); +// +// double[][] dists = new double[size][size]; +// Vector<Blah> open = new Vector<Blah>(); +// open.add(new Blah(1, start, end)); +// +// while (open.size() > 0) { +// Collections.sort((List)open); +// Blah b = open.remove(0); +// if (dists[b.loc.getX()][b.loc.getY()] == 0) { +// dists[b.loc.getX()][b.loc.getY()] = b.dist; +// +// if (b.loc.equals(end)) { +// break; +// } +// +// Direction cur = Direction.NORTH; +// do { +// MapLocation loc2 = b.loc.add(cur); +// boolean t = map[loc2.getX()][loc2.getY()]; +// if (t && dists[loc2.getX()][loc2.getY()] == 0) { +// open.add(new Blah(b.dist + (cur.isDiagonal() ? diag : orth), loc2, end)); +// } +// cur = cur.rotateRight(); +// } while (cur != Direction.NORTH); +// } +// System.out.print("."); +// System.out.flush(); +// } +// System.out.println(); +// for (int y = 0; y < 39; y++) { +// for (int x = 0; x < 39; x++) { +// +// if (dists[x][y] != 0) { +// System.out.print("v"); +// } else { +// System.out.print(map[x][y] ? "." : "#"); +// } +// } +// System.out.println(); +// } +// } + + + + + + + + +// int[][] open = new int[size * size + 10][2]; +// int openBegin = 0; +// int openEnd = 0; +// int[][] closed = new int[size][size]; +// +// { +// rc.yield(); +// int beginTime = Clock.getRoundNum(); +// +// open[openEnd][0] = 1; +// open[openEnd][1] = 1; +// closed[1][1] = 1; +// openEnd++; +// +// for ( ; openBegin < openEnd; ) { +// int xMin = open[openBegin][0] - 1; +// int yMin = open[openBegin][1] - 1; +// int xMax = xMin + 2; +// int yMax = yMin + 2; +// openBegin++; +// +// int dist = closed[xMin + 1][yMin + 1] + 1; +// +// for (int y = yMin; y <= yMax; y++) { +// for (int x = xMin; x <= xMax; x++) { +// if (closed[x][y] == 0 && map[x][y]) { +// open[openEnd][0] = x; +// open[openEnd][1] = y; +// closed[x][y] = dist; +// openEnd++; +// } +// } +// } +// } +// +// int endTime = Clock.getRoundNum(); +// int endByte = Clock.getBytecodeNum(); +// System.out.println("rounds = " + (endTime - beginTime)); +// System.out.println("bytes = " + (((endTime - beginTime) * 6000) + endByte)); +// } + } + + // ======================================================================== + + public Board board; + + public void run() { + + // kill off all the archons except 1 + try { + if (rc.senseGroundRobotAtLocation(rc.getLocation().add(Direction.SOUTH_EAST)) != null) { + board = new Board(rc.getLocation()); + } else { + rc.suicide(); + } + } catch (GameActionException e1) { + } + + astarTest(); + + rc.suicide(); + + while(true){ + try { + board.exploreSurroundings(); + board.astar(); + + Direction dir = board.getBestDir(); + + debug(1, "dir = " + dir); + + rc.queueSetDirection(dir); + rc.yield(); + rc.queueMoveForward(); + rc.yield(); + } catch(Exception e) { + System.out.println("caught exception:"); + e.printStackTrace(); + } + } + } +} + +class Pair<T_left, T_right> implements Comparable { + public T_left left; + public T_right right; + + public Pair(T_left left, T_right right) { + this.left = left; + this.right = right; + } + + public String toString() { + return "(" + left + ", " + right + ")"; + } + + public boolean equals(Object o) { + if (o instanceof Pair) { + Pair<T_left, T_right> that = (Pair<T_left, T_right>)o; + return + ((left == null && that.left == null) || (left != null && left.equals(that.left))) && + ((right == null && that.right == null) || (right != null && right.equals(that.right))); + } + return false; + } + + public int hashCode() { + return left.hashCode() + right.hashCode(); + } + + public int compareTo(Object o) { + Pair<T_left, T_right> that = (Pair)o; + int i = 0; + if (this.left instanceof Comparable) { + int c = ((Comparable)this.left).compareTo(that.left); + if (c == 0) { + if (this.right instanceof Comparable) { + return ((Comparable)this.right).compareTo(that.right); + } else { + return 0; + } + } else { + return c; + } + } else { + if (this.right instanceof Comparable) { + return ((Comparable)this.right).compareTo(that.right); + } else { + return 0; + } + } + } +} Added: battlecode-2007-little/trunk/teams/classpath =================================================================== --- battlecode-2007-little/trunk/teams/classpath (rev 0) +++ battlecode-2007-little/trunk/teams/classpath 2008-01-04 03:33:45 UTC (rev 221) @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path=""/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="lib" path="C:/Home/BattleCode/lib/battlecode.jar"/> + <classpathentry kind="output" path=""/> +</classpath> Added: battlecode-2007-little/trunk/teams/clean/MyConst.java =================================================================== --- battlecode-2007-little/trunk/teams/clean/MyConst.java (rev 0) +++ battlecode-2007-little/trunk/teams/clean/MyConst.java 2008-01-04 03:33:45 UTC (rev 221) @@ -0,0 +1,37 @@ +package clean; + +public class MyConst { + + public static int[][] dirDs = new int[][] {{0, -1}, {1, -1}, {1, 0}, {1, 1}, {0, 1}, {-1, 1}, {-1, 0}, {-1, -1}}; + + public static int[][][] newSquaresToSense6() { + return new int[][][] {{{0, -6}, {-3, -5}, {-2, -5}, {-1, -5}, {1, -5}, {2, -5}, {3, -5}, {-4, -4}, {4, -4}, {-5, -3}, {5, -3}, {-6, 0}, {6, 0}, }, {{0, -6}, {-3, -5}, {-2, -5}, {0, -5}, {1, -5}, {2, -5}, {3, -5}, {3, -4}, {4, -4}, {4, -3}, {5, -3}, {5, -2}, {5, -1}, {5, 0}, {6, 0}, {5, 2}, {5, 3}, }, {{0, -6}, {3, -5}, {4, -4}, {5, -3}, {5, -2}, {5, -1}, {6, 0}, {5, 1}, {5, 2}, {5, 3}, {4, 4}, {3, 5}, {0, 6}, }, {{5, -3}, {5, -2}, {5, 0}, {6, 0}, {5, 1}, {5, 2}, {4, 3}, {5, 3}, {3, 4}, {4, 4}, {-3, 5}, {-2, 5}, {0, 5}, {1, 5}, {2, 5}, {3, 5}, {0, 6}, }, {{-6, 0}, {6, 0}, {-5, 3}, {5, 3}, {-4, 4}, {4, 4}, {-3, 5}, {-2, 5}, {-1, 5}, {1, 5}, {2, 5}, {3, 5}, {0, 6}, }, {{-5, -3}, {-5, -2}, {-6, 0}, {-5, 0}, {-5, 1}, {-5, 2}, {-5, 3}, {-4, 3}, {-4, 4}, {-3, 4}, {-3, 5}, {-2, 5}, {-1, 5}, {0, 5}, {2, 5}, {3, 5}, {0, 6}, }, {{0, -6}, {-3, -5}, {-4, -4}, {-5, -3}, {-5, -2}, {-5, -1}, {-6, 0}, {-5, 1}, {-5, 2}, {-5, 3}, {-4, 4}, {-3, 5}, {0, 6}, }, {{0, -6}, {-3, -5}, {-2, -5}, {-1, -5}, {0, -5}, {2, -5}, {3, -5}, {-4, -4}, {-3, -4}, {-5, -3}, {-4, -3}, {-5, -2}, {-5, -1}, {-6, 0}, {-5, 0}, {-5, 2}, {-5, 3}, },}; + } + public static int[][][] allSquaresToSense6() { + return new int[][][] {{{0, -6}, {-3, -5}, {-2, -5}, {-1, -5}, {0, -5}, {1, -5}, {2, -5}, {3, -5}, {-4, -4}, {-3, -4}, {-2, -4}, {-1, -4}, {0, -4}, {1, -4}, {2, -4}, {3, -4}, {4, -4}, {-5, -3}, {-4, -3}, {-3, -3}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {3, -3}, {4, -3}, {5, -3}, {-5, -2}, {-4, -2}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {4, -2}, {5, -2}, {-5, -1}, {-4, -1}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {4, -1}, {5, -1}, {-6, 0}, {-5, 0}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {6, 0}, {-5, 1}, {-4, 1}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}, {-5, 2}, {-4, 2}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}, {-5, 3}, {-4, 3}, {-3, 3}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}, {-4, 4}, {-3, 4}, {-2, 4}, {-1, 4}, {0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {-3, 5}, {-2, 5}, {-1, 5}, {0, 5}, {1, 5}, {2, 5}, {3, 5}, {0, 6}, }, {{0, -6}, {-3, -5}, {-2, -5}, {-1, -5}, {0, -5}, {1, -5}, {2, -5}, {3, -5}, {-4, -4}, {-3, -4}, {-2, -4}, {-1, -4}, {0, -4}, {1, -4}, {2, -4}, {3, -4}, {4, -4}, {-5, -3}, {-4, -3}, {-3, -3}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {3, -3}, {4, -3}, {5, -3}, {-5, -2}, {-4, -2}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {4, -2}, {5, -2}, {-5, -1}, {-4, -1}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {4, -1}, {5, -1}, {-6, 0}, {-5, 0}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {6, 0}, {-5, 1}, {-4, 1}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}, {-5, 2}, {-4, 2}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}, {-5, 3}, {-4, 3}, {-3, 3}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}, {-4, 4}, {-3, 4}, {-2, 4}, {-1, 4}, {0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {-3, 5}, {-2, 5}, {-1, 5}, {0, 5}, {1, 5}, {2, 5}, {3, 5}, {0, 6}, }, {{0, -6}, {-3, -5}, {-2, -5}, {-1, -5}, {0, -5}, {1, -5}, {2, -5}, {3, -5}, {-4, -4}, {-3, -4}, {-2, -4}, {-1, -4}, {0, -4}, {1, -4}, {2, -4}, {3, -4}, {4, -4}, {-5, -3}, {-4, -3}, {-3, -3}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {3, -3}, {4, -3}, {5, -3}, {-5, -2}, {-4, -2}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {4, -2}, {5, -2}, {-5, -1}, {-4, -1}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {4, -1}, {5, -1}, {-6, 0}, {-5, 0}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {6, 0}, {-5, 1}, {-4, 1}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}, {-5, 2}, {-4, 2}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}, {-5, 3}, {-4, 3}, {-3, 3}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}, {-4, 4}, {-3, 4}, {-2, 4}, {-1, 4}, {0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {-3, 5}, {-2, 5}, {-1, 5}, {0, 5}, {1, 5}, {2, 5}, {3, 5}, {0, 6}, }, {{0, -6}, {-3, -5}, {-2, -5}, {-1, -5}, {0, -5}, {1, -5}, {2, -5}, {3, -5}, {-4, -4}, {-3, -4}, {-2, -4}, {-1, -4}, {0, -4}, {1, -4}, {2, -4}, {3, -4}, {4, -4}, {-5, -3}, {-4, -3}, {-3, -3}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {3, -3}, {4, -3}, {5, -3}, {-5, -2}, {-4, -2}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {4, -2}, {5, -2}, {-5, -1}, {-4, -1}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {4, -1}, {5, -1}, {-6, 0}, {-5, 0}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {6, 0}, {-5, 1}, {-4, 1}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}, {-5, 2}, {-4, 2}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}, {-5, 3}, {-4, 3}, {-3, 3}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}, {-4, 4}, {-3, 4}, {-2, 4}, {-1, 4}, {0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {-3, 5}, {-2, 5}, {-1, 5}, {0, 5}, {1, 5}, {2, 5}, {3, 5}, {0, 6}, }, {{0, -6}, {-3, -5}, {-2, -5}, {-1, -5}, {0, -5}, {1, -5}, {2, -5}, {3, -5}, {-4, -4}, {-3, -4}, {-2, -4}, {-1, -4}, {0, -4}, {1, -4}, {2, -4}, {3, -4}, {4, -4}, {-5, -3}, {-4, -3}, {-3, -3}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {3, -3}, {4, -3}, {5, -3}, {-5, -2}, {-4, -2}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {4, -2}, {5, -2}, {-5, -1}, {-4, -1}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {4, -1}, {5, -1}, {-6, 0}, {-5, 0}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {6, 0}, {-5, 1}, {-4, 1}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}, {-5, 2}, {-4, 2}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}, {-5, 3}, {-4, 3}, {-3, 3}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}, {-4, 4}, {-3, 4}, {-2, 4}, {-1, 4}, {0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {-3, 5}, {-2, 5}, {-1, 5}, {0, 5}, {1, 5}, {2, 5}, {3, 5}, {0, 6}, }, {{0, -6}, {-3, -5}, {-2, -5}, {-1, -5}, {0, -5}, {1, -5}, {2, -5}, {3, -5}, {-4, -4}, {-3, -4}, {-2, -4}, {-1, -4}, {0, -4}, {1, -4}, {2, -4}, {3, -4}, {4, -4}, {-5, -3}, {-4, -3}, {-3, -3}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {3, -3}, {4, -3}, {5, -3}, {-5, -2}, {-4, -2}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {4, -2}, {5, -2}, {-5, -1}, {-4, -1}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {4, -1}, {5, -1}, {-6, 0}, {-5, 0}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {6, 0}, {-5, 1}, {-4, 1}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}, {-5, 2}, {-4, 2}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}, {-5, 3}, {-4, 3}, {-3, 3}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}, {-4, 4}, {-3, 4}, {-2, 4}, {-1, 4}, {0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {-3, 5}, {-2, 5}, {-1, 5}, {0, 5}, {1, 5}, {2, 5}, {3, 5}, {0, 6}, }, {{0, -6}, {-3, -5}, {-2, -5}, {-1, -5}, {0, -5}, {1, -5}, {2, -5}, {3, -5}, {-4, -4}, {-3, -4}, {-2, -4}, {-1, -4}, {0, -4}, {1, -4}, {2, -4}, {3, -4}, {4, -4}, {-5, -3}, {-4, -3}, {-3, -3}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {3, -3}, {4, -3}, {5, -3}, {-5, -2}, {-4, -2}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {4, -2}, {5, -2}, {-5, -1}, {-4, -1}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {4, -1}, {5, -1}, {-6, 0}, {-5, 0}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {6, 0}, {-5, 1}, {-4, 1}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}, {-5, 2}, {-4, 2}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}, {-5, 3}, {-4, 3}, {-3, 3}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}, {-4, 4}, {-3, 4}, {-2, 4}, {-1, 4}, {0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {-3, 5}, {-2, 5}, {-1, 5}, {0, 5}, {1, 5}, {2, 5}, {3, 5}, {0, 6}, }, {{0, -6}, {-3, -5}, {-2, -5}, {-1, -5}, {0, -5}, {1, -5}, {2, -5}, {3, -5}, {-4, -4}, {-3, -4}, {-2, -4}, {-1, -4}, {0, -4}, {1, -4}, {2, -4}, {3, -4}, {4, -4}, {-5, -3}, {-4, -3}, {-3, -3}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {3, -3}, {4, -3}, {5, -3}, {-5, -2}, {-4, -2}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {4, -2}, {5, -2}, {-5, -1}, {-4, -1}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {4, -1}, {5, -1}, {-6, 0}, {-5, 0}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {6, 0}, {-5, 1}, {-4, 1}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}, {-5, 2}, {-4, 2}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}, {-5, 3}, {-4, 3}, {-3, 3}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}, {-4, 4}, {-3, 4}, {-2, 4}, {-1, 4}, {0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {-3, 5}, {-2, 5}, {-1, 5}, {0, 5}, {1, 5}, {2, 5}, {3, 5}, {0, 6}, },}; + } + public static int[][][] newSquaresToSense5() { + return new int[][][] {{{0, -5}, {-3, -4}, {-2, -4}, {-1, -4}, {1, -4}, {2, -4}, {3, -4}, {-4, -3}, {4, -3}, {-5, 0}, {5, 0}, }, {{0, -5}, {-3, -4}, {-2, -4}, {0, -4}, {1, -4}, {2, -4}, {3, -4}, {3, -3}, {4, -3}, {4, -2}, {4, -1}, {4, 0}, {5, 0}, {4, 2}, {4, 3}, }, {{0, -5}, {3, -4}, {4, -3}, {4, -2}, {4, -1}, {5, 0}, {4, 1}, {4, 2}, {4, 3}, {3, 4}, {0, 5}, }, {{4, -3}, {4, -2}, {4, 0}, {5, 0}, {4, 1}, {4, 2}, {3, 3}, {4, 3}, {-3, 4}, {-2, 4}, {0, 4}, {1, 4}, {2, 4}, {3, 4}, {0, 5}, }, {{-5, 0}, {5, 0}, {-4, 3}, {4, 3}, {-3, 4}, {-2, 4}, {-1, 4}, {1, 4}, {2, 4}, {3, 4}, {0, 5}, }, {{-4, -3}, {-4, -2}, {-5, 0}, {-4, 0}, {-4, 1}, {-4, 2}, {-4, 3}, {-3, 3}, {-3, 4}, {-2, 4}, {-1, 4}, {0, 4}, {2, 4}, {3, 4}, {0, 5}, }, {{0, -5}, {-3, -4}, {-4, -3}, {-4, -2}, {-4, -1}, {-5, 0}, {-4, 1}, {-4, 2}, {-4, 3}, {-3, 4}, {0, 5}, }, {{0, -5}, {-3, -4}, {-2, -4}, {-1, -4}, {0, -4}, {2, -4}, {3, -4}, {-4, -3}, {-3, -3}, {-4, -2}, {-4, -1}, {-5, 0}, {-4, 0}, {-4, 2}, {-4, 3}, },}; + } + public static int[][][] allSquaresToSense5() { + return new int[][][] {{{0, -5}, {-3, -4}, {-2, -4}, {-1, -4}, {0, -4}, {1, -4}, {2, -4}, {3, -4}, {-4, -3}, {-3, -3}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {3, -3}, {4, -3}, {-4, -2}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {4, -2}, {-4, -1}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {4, -1}, {-5, 0}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {-4, 1}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {-4, 2}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {-4, 3}, {-3, 3}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {-3, 4}, {-2, 4}, {-1, 4}, {0, 4}, {1, 4}, {2, 4}, {3, 4}, {0, 5}, }, {{0, -5}, {-3, -4}, {-2, -4}, {-1, -4}, {0, -4}, {1, -4}, {2, -4}, {3, -4}, {-4, -3}, {-3, -3}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {3, -3}, {4, -3}, {-4, -2}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {4, -2}, {-4, -1}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {4, -1}, {-5, 0}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {-4, 1}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {-4, 2}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {-4, 3}, {-3, 3}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {-3, 4}, {-2, 4}, {-1, 4}, {0, 4}, {1, 4}, {2, 4}, {3, 4}, {0, 5}, }, {{0, -5}, {-3, -4}, {-2, -4}, {-1, -4}, {0, -4}, {1, -4}, {2, -4}, {3, -4}, {-4, -3}, {-3, -3}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {3, -3}, {4, -3}, {-4, -2}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {4, -2}, {-4, -1}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {4, -1}, {-5, 0}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {-4, 1}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {-4, 2}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {-4, 3}, {-3, 3}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {-3, 4}, {-2, 4}, {-1, 4}, {0, 4}, {1, 4}, {2, 4}, {3, 4}, {0, 5}, }, {{0, -5}, {-3, -4}, {-2, -4}, {-1, -4}, {0, -4}, {1, -4}, {2, -4}, {3, -4}, {-4, -3}, {-3, -3}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {3, -3}, {4, -3}, {-4, -2}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {4, -2}, {-4, -1}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {4, -1}, {-5, 0}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {-4, 1}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {-4, 2}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {-4, 3}, {-3, 3}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {-3, 4}, {-2, 4}, {-1, 4}, {0, 4}, {1, 4}, {2, 4}, {3, 4}, {0, 5}, }, {{0, -5}, {-3, -4}, {-2, -4}, {-1, -4}, {0, -4}, {1, -4}, {2, -4}, {3, -4}, {-4, -3}, {-3, -3}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {3, -3}, {4, -3}, {-4, -2}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {4, -2}, {-4, -1}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {4, -1}, {-5, 0}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {-4, 1}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {-4, 2}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {-4, 3}, {-3, 3}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {-3, 4}, {-2, 4}, {-1, 4}, {0, 4}, {1, 4}, {2, 4}, {3, 4}, {0, 5}, }, {{0, -5}, {-3, -4}, {-2, -4}, {-1, -4}, {0, -4}, {1, -4}, {2, -4}, {3, -4}, {-4, -3}, {-3, -3}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {3, -3}, {4, -3}, {-4, -2}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {4, -2}, {-4, -1}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {4, -1}, {-5, 0}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {-4, 1}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {-4, 2}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {-4, 3}, {-3, 3}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {-3, 4}, {-2, 4}, {-1, 4}, {0, 4}, {1, 4}, {2, 4}, {3, 4}, {0, 5}, }, {{0, -5}, {-3, -4}, {-2, -4}, {-1, -4}, {0, -4}, {1, -4}, {2, -4}, {3, -4}, {-4, -3}, {-3, -3}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {3, -3}, {4, -3}, {-4, -2}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {4, -2}, {-4, -1}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {4, -1}, {-5, 0}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {-4, 1}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {-4, 2}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {-4, 3}, {-3, 3}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {-3, 4}, {-2, 4}, {-1, 4}, {0, 4}, {1, 4}, {2, 4}, {3, 4}, {0, 5}, }, {{0, -5}, {-3, -4}, {-2, -4}, {-1, -4}, {0, -4}, {1, -4}, {2, -4}, {3, -4}, {-4, -3}, {-3, -3}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {3, -3}, {4, -3}, {-4, -2}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {4, -2}, {-4, -1}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {4, -1}, {-5, 0}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {-4, 1}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {-4, 2}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {-4, 3}, {-3, 3}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {-3, 4}, {-2, 4}, {-1, 4}, {0, 4}, {1, 4}, {2, 4}, {3, 4}, {0, 5}, },}; + } + public static int[][][] newSquaresToSense4() { + return new int[][][] {{{0, -4}, {-2, -3}, {-1, -3}, {1, -3}, {2, -3}, {-3, -2}, {3, -2}, {-4, 0}, {4, 0}, }, {{0, -4}, {-2, -3}, {0, -3}, {1, -3}, {2, -3}, {2, -2}, {3, -2}, {3, -1}, {3, 0}, {4, 0}, {3, 2}, }, {{0, -4}, {2, -3}, {3, -2}, {3, -1}, {4, 0}, {3, 1}, {3, 2}, {2, 3}, {0, 4}, }, {{3, -2}, {3, 0}, {4, 0}, {3, 1}, {2, 2}, {3, 2}, {-2, 3}, {0, 3}, {1, 3}, {2, 3}, {0, 4}, }, {{-4, 0}, {4, 0}, {-3, 2}, {3, 2}, {-2, 3}, {-1, 3}, {1, 3}, {2, 3}, {0, 4}, }, {{-3, -2}, {-4, 0}, {-3, 0}, {-3, 1}, {-3, 2}, {-2, 2}, {-2, 3}, {-1, 3}, {0, 3}, {2, 3}, {0, 4}, }, {{0, -4}, {-2, -3}, {-3, -2}, {-3, -1}, {-4, 0}, {-3, 1}, {-3, 2}, {-2, 3}, {0, 4}, }, {{0, -4}, {-2, -3}, {-1, -3}, {0, -3}, {2, -3}, {-3, -2}, {-2, -2}, {-3, -1}, {-4, 0}, {-3, 0}, {-3, 2}, },}; + } + public static int[][][] allSquaresToSense4() { + return new int[][][] {{{0, -4}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {0, 4}, }, {{0, -4}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {0, 4}, }, {{0, -4}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {0, 4}, }, {{0, -4}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {0, 4}, }, {{0, -4}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {0, 4}, }, {{0, -4}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {0, 4}, }, {{0, -4}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {0, 4}, }, {{0, -4}, {-2, -3}, {-1, -3}, {0, -3}, {1, -3}, {2, -3}, {-3, -2}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {3, -2}, {-3, -1}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {3, -1}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {-3, 1}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {3, 1}, {-3, 2}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {3, 2}, {-2, 3}, {-1, 3}, {0, 3}, {1, 3}, {2, 3}, {0, 4}, },}; + } + public static int[][][] newSquaresToSense3Tank() { + return new int[][][] {{{0, -3}, {-2, -2}, {-1, -2}, {1, -2}, {2, -2}, }, {{0, -3}, {0, -2}, {1, -2}, {2, -2}, {2, -1}, {2, 0}, {3, 0}, }, {{2, -2}, {2, -1}, {3, 0}, {2, 1}, {2, 2}, }, {{2, 0}, {3, 0}, {2, 1}, {0, 2}, {1, 2}, {2, 2}, {0, 3}, }, {{-2, 2}, {-1, 2}, {1, 2}, {2, 2}, {0, 3}, }, {{-3, 0}, {-2, 0}, {-2, 1}, {-2, 2}, {-1, 2}, {0, 2}, {0, 3}, }, {{-2, -2}, {-2, -1}, {-3, 0}, {-2, 1}, {-2, 2}, }, {{0, -3}, {-2, -2}, {-1, -2}, {0, -2}, {-2, -1}, {-3, 0}, {-2, 0}, },}; + } + public static int[][][] allSquaresToSense3Tank() { + return new int[][][] {{{0, -3}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {-1, -1}, {0, -1}, {1, -1}, {0, 0}, }, {{0, -3}, {0, -2}, {1, -2}, {2, -2}, {0, -1}, {1, -1}, {2, -1}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, }, {{2, -2}, {1, -1}, {2, -1}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {1, 1}, {2, 1}, {2, 2}, }, {{0, 0}, {1, 0}, {2, 0}, {3, 0}, {0, 1}, {1, 1}, {2, 1}, {0, 2}, {1, 2}, {2, 2}, {0, 3}, }, {{0, 0}, {-1, 1}, {0, 1}, {1, 1}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {0, 3}, }, {{-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {-2, 1}, {-1, 1}, {0, 1}, {-2, 2}, {-1, 2}, {0, 2}, {0, 3}, }, {{-2, -2}, {-2, -1}, {-1, -1}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {-2, 1}, {-1, 1}, {-2, 2}, }, {{0, -3}, {-2, -2}, {-1, -2}, {0, -2}, {-2, -1}, {-1, -1}, {0, -1}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, },}; + } + public static int[][][] newSquaresToSense3Soldier() { + return new int[][][] {{{0, -3}, {-2, -2}, {-1, -2}, {1, -2}, {2, -2}, {-3, 0}, {3, 0}, }, {{0, -3}, {-2, -2}, {0, -2}, {1, -2}, {2, -2}, {2, -1}, {2, 0}, {3, 0}, {2, 2}, }, {{0, -3}, {2, -2}, {2, -1}, {3, 0}, {2, 1}, {2, 2}, {0, 3}, }, {{2, -2}, {2, 0}, {3, 0}, {2, 1}, {-2, 2}, {0, 2}, {1, 2}, {2, 2}, {0, 3}, }, {{-3, 0}, {3, 0}, {-2, 2}, {-1, 2}, {1, 2}, {2, 2}, {0, 3}, }, {{-2, -2}, {-3, 0}, {-2, 0}, {-2, 1}, {-2, 2}, {-1, 2}, {0, 2}, {2, 2}, {0, 3}, }, {{0, -3}, {-2, -2}, {-2, -1}, {-3, 0}, {-2, 1}, {-2, 2}, {0, 3}, }, {{0, -3}, {-2, -2}, {-1, -2}, {0, -2}, {2, -2}, {-2, -1}, {-3, 0}, {-2, 0}, {-2, 2}, },}; + } + public static int[][][] allSquaresToSense3Soldier() { + return new int[][][] {{{0, -3}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, }, {{0, -3}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {-1, -1}, {0, -1}, {1, -1}, {2, -1}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {1, 1}, {2, 1}, {2, 2}, }, {{0, -3}, {0, -2}, {1, -2}, {2, -2}, {0, -1}, {1, -1}, {2, -1}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {0, 1}, {1, 1}, {2, 1}, {0, 2}, {1, 2}, {2, 2}, {0, 3}, }, {{2, -2}, {1, -1}, {2, -1}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {0, 3}, }, {{-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {2, 1}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {0, 3}, }, {{-2, -2}, {-2, -1}, {-1, -1}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {-2, 1}, {-1, 1}, {0, 1}, {1, 1}, {-2, 2}, {-1, 2}, {0, 2}, {1, 2}, {2, 2}, {0, 3}, }, {{0, -3}, {-2, -2}, {-1, -2}, {0, -2}, {-2, -1}, {-1, -1}, {0, -1}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {-2, 1}, {-1, 1}, {0, 1}, {-2, 2}, {-1, 2}, {0, 2}, {0, 3}, }, {{0, -3}, {-2, -2}, {-1, -2}, {0, -2}, {1, -2}, {2, -2}, {-2, -1}, {-1, -1}, {0, -1}, {1, -1}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {-2, 1}, {-1, 1}, {-2, 2}, }, }; + } +} Added: battlecode-2007-little/trunk/teams/clean/RobotPlayer.java =================================================================== --- battlecode-2007-little/trunk/teams/clean/RobotPlayer.java (rev 0) +++ battlecode-2007-little/trunk/teams/clean/RobotPlayer.java 2008-01-04 03:33:45 UTC (rev 221) @@ -0,0 +1,2010 @@ +package clean; + +import battlecode.common.*; +import battlecode.world.signal.EvolutionSignal; +import static battlecode.common.GameConstants.*; +import static battlecode.common.Direction.*; +import static battlecode.common.RobotType.*; +import static battlecode.common.MapHeight.*; +import static battlecode.common.TerrainType.*; + +import java.io.*; +import java.lang.*; +import java.math.*; +import java.util.*; + +public class RobotPlayer implements Runnable { + + public static RobotController rc; + public static Robot r; + public static int id; + public static RobotType type; + public static Team team; + public static boolean inAir; + public static Random rand; + public static int myMagic; + + public static int mapOriginX; + public static int mapOriginY; + public static int mapStride = 92; + public static String map = " $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ... [truncated message content] |
From: <yan...@us...> - 2008-01-03 22:40:26
|
Revision: 220 http://assorted.svn.sourceforge.net/assorted/?rev=220&view=rev Author: yangzhang Date: 2008-01-03 14:40:30 -0800 (Thu, 03 Jan 2008) Log Message: ----------- tweaked colors, published Modified Paths: -------------- personal-site/trunk/src/dark.css Modified: personal-site/trunk/src/dark.css =================================================================== --- personal-site/trunk/src/dark.css 2008-01-03 22:39:01 UTC (rev 219) +++ personal-site/trunk/src/dark.css 2008-01-03 22:40:30 UTC (rev 220) @@ -6,13 +6,8 @@ #define DIM_GOLD #B8860B #define BRIGHT_GOLD #DAA520 -/* -#define DIM_BLUE #87CEEB -#define BRIGHT_BLUE #E0FFFF -*/ - #define DIM_BLUE #87BEEB -#define BRIGHT_BLUE #E0FFFF +#define BRIGHT_BLUE #D0EFFF #define TEXT_WHITE #DDDDDD #define H1_COLOR #DDDDDD This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-03 22:39:00
|
Revision: 219 http://assorted.svn.sourceforge.net/assorted/?rev=219&view=rev Author: yangzhang Date: 2008-01-03 14:39:01 -0800 (Thu, 03 Jan 2008) Log Message: ----------- changed colors, published Modified Paths: -------------- personal-site/trunk/src/dark.css Modified: personal-site/trunk/src/dark.css =================================================================== --- personal-site/trunk/src/dark.css 2008-01-03 11:59:31 UTC (rev 218) +++ personal-site/trunk/src/dark.css 2008-01-03 22:39:01 UTC (rev 219) @@ -3,26 +3,25 @@ * (http://arcsin.se/). */ -#define TEXT_WHITE #DDDDDD -#define H1_COLOR #DDDDDD -#define H2_COLOR #FFFFFF - -#if 1 #define DIM_GOLD #B8860B #define BRIGHT_GOLD #DAA520 -#else -#define DIM_GOLD #87CEEB -#define BRIGHT_GOLD #E0FFFF -#endif -#if 1 +/* #define DIM_BLUE #87CEEB #define BRIGHT_BLUE #E0FFFF -#else -#define DIM_BLUE #B8860B -#define BRIGHT_BLUE #DAA520 -#endif +*/ +#define DIM_BLUE #87BEEB +#define BRIGHT_BLUE #E0FFFF + +#define TEXT_WHITE #DDDDDD +#define H1_COLOR #DDDDDD +#define H2_COLOR #FFFFFF +#define LINK DIM_BLUE +#define LINK_HOVER BRIGHT_BLUE +#define MENU_BORDER DIM_ORANGE +#define MENU_HOVER DIM_ORANGE + /* Standard elements */ /* * { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-03 11:59:28
|
Revision: 218 http://assorted.svn.sourceforge.net/assorted/?rev=218&view=rev Author: yangzhang Date: 2008-01-03 03:59:31 -0800 (Thu, 03 Jan 2008) Log Message: ----------- latest, published Modified Paths: -------------- personal-site/trunk/src/dark.css Modified: personal-site/trunk/src/dark.css =================================================================== --- personal-site/trunk/src/dark.css 2008-01-03 11:53:28 UTC (rev 217) +++ personal-site/trunk/src/dark.css 2008-01-03 11:59:31 UTC (rev 218) @@ -3,8 +3,9 @@ * (http://arcsin.se/). */ -#define TEXT_WHITE #F5F5F5 -#define TEXT_GRAY #A0A0A0 +#define TEXT_WHITE #DDDDDD +#define H1_COLOR #DDDDDD +#define H2_COLOR #FFFFFF #if 1 #define DIM_GOLD #B8860B @@ -148,7 +149,8 @@ border-top: 1px solid DIM_GOLD; font: 1.3em sans-serif; font-weight: normal; - color: silver; + margin-right: -10px; + color: H2_COLOR; } .content p { /* margin: 0 0 12px; */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-03 11:53:24
|
Revision: 217 http://assorted.svn.sourceforge.net/assorted/?rev=217&view=rev Author: yangzhang Date: 2008-01-03 03:53:28 -0800 (Thu, 03 Jan 2008) Log Message: ----------- latest, published Modified Paths: -------------- personal-site/trunk/src/dark.css Modified: personal-site/trunk/src/dark.css =================================================================== --- personal-site/trunk/src/dark.css 2008-01-03 11:24:44 UTC (rev 216) +++ personal-site/trunk/src/dark.css 2008-01-03 11:53:28 UTC (rev 217) @@ -3,12 +3,24 @@ * (http://arcsin.se/). */ +#define TEXT_WHITE #F5F5F5 +#define TEXT_GRAY #A0A0A0 + +#if 1 #define DIM_GOLD #B8860B #define BRIGHT_GOLD #DAA520 -#define TEXT_WHITE #F5F5F5 -#define TEXT_GRAY #C0C0C0 +#else +#define DIM_GOLD #87CEEB +#define BRIGHT_GOLD #E0FFFF +#endif + +#if 1 +#define DIM_BLUE #87CEEB #define BRIGHT_BLUE #E0FFFF -#define DIM_BLUE #87CEEB +#else +#define DIM_BLUE #B8860B +#define BRIGHT_BLUE #DAA520 +#endif /* Standard elements */ /* @@ -79,11 +91,15 @@ .title { float: left; width: 190px; + height: 30px; } .title h1 { color: TEXT_GRAY; font: normal 1.5em sans-serif; + letter-spacing: 0.2em; padding-left: 10px; + padding-bottom: -10px; + /* margin-top: 30px; */ /* padding: 16px 20px; */ text-transform: lowercase; } @@ -103,7 +119,7 @@ color: DIM_GOLD; /* #7799bb; */ float: left; padding-top: 4px; - width: 100px; height: 36px; + width: 100px; height: 30px; border-top: 3px solid black; } .menu a span { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-03 11:24:40
|
Revision: 216 http://assorted.svn.sourceforge.net/assorted/?rev=216&view=rev Author: yangzhang Date: 2008-01-03 03:24:44 -0800 (Thu, 03 Jan 2008) Log Message: ----------- latest, published Modified Paths: -------------- assorted-site/trunk/index.txt Modified: assorted-site/trunk/index.txt =================================================================== --- assorted-site/trunk/index.txt 2008-01-03 11:20:17 UTC (rev 215) +++ assorted-site/trunk/index.txt 2008-01-03 11:24:44 UTC (rev 216) @@ -74,7 +74,6 @@ - [Simple Publications Manager](http://pubmgr.sf.net/): another SF-hosted mini-project of mine - [TinyOS](http://tinyos.net/): SF-hosted project I've been involved in -- [My homepage](http://yz.zor.org/) [browse the code repository]: https://assorted.svn.sourceforge.net/svnroot/assorted This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-03 11:20:11
|
Revision: 215 http://assorted.svn.sourceforge.net/assorted/?rev=215&view=rev Author: yangzhang Date: 2008-01-03 03:20:17 -0800 (Thu, 03 Jan 2008) Log Message: ----------- added cabal Modified Paths: -------------- shell-tools/trunk/src/bash-commons/bashrc.bash Modified: shell-tools/trunk/src/bash-commons/bashrc.bash =================================================================== --- shell-tools/trunk/src/bash-commons/bashrc.bash 2008-01-03 11:19:34 UTC (rev 214) +++ shell-tools/trunk/src/bash-commons/bashrc.bash 2008-01-03 11:20:17 UTC (rev 215) @@ -80,7 +80,7 @@ if [[ "${subdir:0:1}" == / || "$subdir" == '' ]] ; then pieces=( "${pieces[@]}" "$subdir" ) else - pieces=( "${pieces[@]}" {"$USER_PREFIX","$USER_TOAST_PREFIX","$GLOBAL_PREFIX","$GLOBAL_TOAST_PREFIX"}/"$subdir" ) + pieces=( "${pieces[@]}" {"$USER_PREFIX","$USER_TOAST_PREFIX","$USER_CABAL_PREFIX","$GLOBAL_PREFIX","$GLOBAL_TOAST_PREFIX"}/"$subdir" ) fi done prepend_var "$var" "${pieces[@]}" @@ -91,6 +91,7 @@ export USER_PREFIX="$HOME/.local/armed" export USER_PKG="$HOME/.local/pkg" export USER_TOAST_PREFIX="$HOME/.toast/armed" +export USER_CABAL_PREFIX="$HOME/.cabal" export GLOBAL_PREFIX="/opt/armed" export GLOBAL_PKG="/opt" export GLOBAL_TOAST_PREFIX="/usr/local" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-03 11:19:28
|
Revision: 214 http://assorted.svn.sourceforge.net/assorted/?rev=214&view=rev Author: yangzhang Date: 2008-01-03 03:19:34 -0800 (Thu, 03 Jan 2008) Log Message: ----------- some documentation Modified Paths: -------------- movie-lookup/trunk/README Added Paths: ----------- movie-lookup/trunk/TODO Modified: movie-lookup/trunk/README =================================================================== --- movie-lookup/trunk/README 2008-01-03 11:18:26 UTC (rev 213) +++ movie-lookup/trunk/README 2008-01-03 11:19:34 UTC (rev 214) @@ -4,4 +4,12 @@ amount of information in a printable view. Copy the plain-text body of this page into `hbo.txt`. -- Run `hbo.bash`, which uses `lookup.bash`, which uses `movie-lookup`. +- Run `hbo.bash`, which uses `MovieLookup.scala` and `lookup.bash`, which uses + `movie-lookup` and `MovieLookup.class`. + +- You can view the results directly, or you can use Viewer to filter out all + the schedule entries under a certain rating + +- To just get the ratings for some movies, just run `lookup.bash` and pipe in + the data; the rated movies will come back on stdout (ratings are prefixed, + delimited by " --- ") Added: movie-lookup/trunk/TODO =================================================================== --- movie-lookup/trunk/TODO (rev 0) +++ movie-lookup/trunk/TODO 2008-01-03 11:19:34 UTC (rev 214) @@ -0,0 +1,11 @@ +- handle numbers, eg "5th Day of Peace" == "The Fifth Day of Peace" +- handle partial titles, eg "Dodgeball" == "Dodgeball: A True Underdog Story" +- handle other articles, eg "Inconvenient Truth" == "An Inconvenient Truth" +- suggest close matches, eg + - "Good as It Gets" == "As Good as It Gets" (interactive?) + - "Highway Men" == "Highwaymen" +- deal with multiple matches, eg "The Taming of the Shrew" (1967, 1983) + - if one of them is obscure (has no ratings), rank it higher +- extract other information (year, number of ratings, etc) +- incorporate number of ratings in the rating, somehow +- adopt other engines/web-based search techniques? (eg "Good Evening Mr. Wallenberg") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-03 11:18:26
|
Revision: 213 http://assorted.svn.sourceforge.net/assorted/?rev=213&view=rev Author: yangzhang Date: 2008-01-03 03:18:26 -0800 (Thu, 03 Jan 2008) Log Message: ----------- latest, published Modified Paths: -------------- assorted-site/trunk/index.txt Modified: assorted-site/trunk/index.txt =================================================================== --- assorted-site/trunk/index.txt 2008-01-03 11:16:27 UTC (rev 212) +++ assorted-site/trunk/index.txt 2008-01-03 11:18:26 UTC (rev 213) @@ -1,4 +1,4 @@ -% assorted.sf.net Projects +% assorted.sf.net projects % Yang Zhang % Nov 7, 2007 @@ -63,8 +63,8 @@ - Source management: various tools for cleaning up and maintaining a source code repository, identifying things that might not belong (hiatus) - Websites - - This website (maintained) - - [My personal website](http://yz.zor.org/) (maintained) + - [This website](http://assorted.sf.net/) (maintained) + - [My personal website](http://people.csail.mit.edu/yang/) (maintained) Other links: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-03 11:16:22
|
Revision: 212 http://assorted.svn.sourceforge.net/assorted/?rev=212&view=rev Author: yangzhang Date: 2008-01-03 03:16:27 -0800 (Thu, 03 Jan 2008) Log Message: ----------- anchor fixed, published Modified Paths: -------------- personal-site/trunk/src/index.txt Modified: personal-site/trunk/src/index.txt =================================================================== --- personal-site/trunk/src/index.txt 2008-01-03 11:16:00 UTC (rev 211) +++ personal-site/trunk/src/index.txt 2008-01-03 11:16:27 UTC (rev 212) @@ -3,7 +3,7 @@  -<a name="about"/> +<a name="about"></a> About me -------- @@ -16,7 +16,7 @@ [MIT]: http://mit.edu/ [UC Berkeley]: http://berkeley.edu/ -<a name="contact"/> +<a name="contact"></a> Contact information ------------------- @@ -46,7 +46,7 @@ </script> </div> -<a name="projects"/> +<a name="projects"></a> Publicly released projects -------------------------- @@ -82,7 +82,7 @@ management web application - [Assorted Projects](http://assorted.sf.net/): my code dump -<a name="classes"/> +<a name="classes"></a> MIT classes ----------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-03 11:15:54
|
Revision: 211 http://assorted.svn.sourceforge.net/assorted/?rev=211&view=rev Author: yangzhang Date: 2008-01-03 03:16:00 -0800 (Thu, 03 Jan 2008) Log Message: ----------- latest site Modified Paths: -------------- assorted-site/trunk/build.bash assorted-site/trunk/index.txt Modified: assorted-site/trunk/build.bash =================================================================== --- assorted-site/trunk/build.bash 2008-01-03 11:12:48 UTC (rev 210) +++ assorted-site/trunk/build.bash 2008-01-03 11:16:00 UTC (rev 211) @@ -12,8 +12,11 @@ cp ../main.css . pandoc -s -S --tab-stop=2 -c main.css -H ../header.html -A ../footer.html -o index.html ../index.txt -exit # XXX fix rest later +# XXX fix rest later +scp index.html shell-sf:assorted/htdocs/ +exit + rewrite() { cat << "EOF" <IfModule mod_rewrite.c> @@ -43,7 +46,7 @@ # deploy tar czf - . | -ssh sf ' +ssh shell-sf ' cd assorted rm -r htdocs-new 2> /dev/null || true mkdir htdocs-new Modified: assorted-site/trunk/index.txt =================================================================== --- assorted-site/trunk/index.txt 2008-01-03 11:12:48 UTC (rev 210) +++ assorted-site/trunk/index.txt 2008-01-03 11:16:00 UTC (rev 211) @@ -30,11 +30,13 @@ - Throttled Repeater: small program that sends a fixed number of lines at a time from a file to a server over TCP (done) - Meta programming - - Simple object code generation: currently targets Java serialization, - emphasizing compactness, speed, and simplicity (done) + - Simple object code generation (iogen): currently targets Java + serialization, emphasizing compactness, speed, and simplicity (done) - BattleCode composer: express and mix strategies quickly (planning) - TopCoder tools: crawl TopCoder rankings to analyze players. Currently only produces language statistics. (done) + - Simple Pre-Processor (spp): tiny implementation of cpp's _object-like + macros_ (done) - Tools for various websites or services - [Facebook](facebook-tools): monitor changes in your Facebook network (done) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-03 11:12:42
|
Revision: 210 http://assorted.svn.sourceforge.net/assorted/?rev=210&view=rev Author: yangzhang Date: 2008-01-03 03:12:48 -0800 (Thu, 03 Jan 2008) Log Message: ----------- latest version of spp (done) Modified Paths: -------------- simple-preprocessor/trunk/src/Preprocessor.scala simple-preprocessor/trunk/src/spp.bash Modified: simple-preprocessor/trunk/src/Preprocessor.scala =================================================================== --- simple-preprocessor/trunk/src/Preprocessor.scala 2008-01-03 11:12:25 UTC (rev 209) +++ simple-preprocessor/trunk/src/Preprocessor.scala 2008-01-03 11:12:48 UTC (rev 210) @@ -2,18 +2,20 @@ import commons.Io._ import scala.collection.mutable._ import java.util.regex._ + object Preprocessor { val rules = new ArrayBuffer[(Pattern,String)] def main(args: Array[String]) { using (TextReader(System.in)) { r => for (line <- r.readLines) { - val toks = line.split("\\s",2) - if (toks(0) == "#define" && toks.length > 2) { - rules += (Pattern.compile("\\b" + toks(1) + "\\b"), toks(2)) + val toks = line.split("\\s+",3) + if (toks(0) == "#define" && toks.length >= 2) { + val expansion = if (toks.length == 3) toks(2) else "" + rules += (Pattern.compile("\\b" + toks(1) + "\\b"), expansion) } else { var munged = line - for ((pat,rep) <- rules) { - munged = pat matcher munged replaceAll toks(2) + for ((pat,exp) <- rules) { + munged = pat matcher munged replaceAll exp } println(munged) } Modified: simple-preprocessor/trunk/src/spp.bash =================================================================== --- simple-preprocessor/trunk/src/spp.bash 2008-01-03 11:12:25 UTC (rev 209) +++ simple-preprocessor/trunk/src/spp.bash 2008-01-03 11:12:48 UTC (rev 210) @@ -1,3 +1,4 @@ #!/usr/bin/env bash +make -C "$(dirname "$0")" > /dev/null scala -cp "$(dirname "$0")/out" Preprocessor This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-03 11:12:23
|
Revision: 209 http://assorted.svn.sourceforge.net/assorted/?rev=209&view=rev Author: yangzhang Date: 2008-01-03 03:12:25 -0800 (Thu, 03 Jan 2008) Log Message: ----------- latest version of auto-mirror (abandoned) Modified Paths: -------------- auto-mirror/trunk/src/automirror.py Modified: auto-mirror/trunk/src/automirror.py =================================================================== --- auto-mirror/trunk/src/automirror.py 2008-01-03 11:11:36 UTC (rev 208) +++ auto-mirror/trunk/src/automirror.py 2008-01-03 11:12:25 UTC (rev 209) @@ -1,4 +1,5 @@ #!/usr/bin/env python +# vim:et:sw=2:ts=2 """ Mirrors a (one-level-deep) directory. @@ -13,20 +14,36 @@ import glob, ftplib, commands, socket, time, getopt, sys, os from signal import * +from subprocess import * +from traceback import * +def log(*msg): + print ' '.join(map(str, (time.ctime(),) + msg)) + sys.stdout.flush() + +def info(*msg): return log(*msg) +def debug(*msg): return log(*msg) + is_downloading = False +def restart(): + args = ['python'] + sys.argv + debug( 'spawning', args ) + pid = os.spawnvp(os.P_NOWAIT, 'python', args) + sys.exit(0) + # debug( 'pid', pid ) + # os.kill(os.getpid(), SIGTERM) + def handle_sigusr1(sig, bt): - global is_downloading, debug - if debug: print 'got SIGUSR1'; sys.stdout.flush() + global is_downloading + debug( 'got SIGUSR1' ) if is_downloading: - args = ['python'] + sys.argv - if debug: print 'spawning', args; sys.stdout.flush() - pid = os.spawnvp(os.P_NOWAIT, 'python', args) - if debug: print 'pid', pid; sys.stdout.flush() - os.kill(os.getpid(), SIGTERM) + restart() +def handle_sigquit(sig, bt): print_stack( file = sys.stdout ) + signal(SIGUSR1, handle_sigusr1) +signal(SIGQUIT, handle_sigquit) class DownloadFile( object ): def __init__(self, name): @@ -62,7 +79,7 @@ """ def main(): - global is_downloading, debug + global is_downloading updir = ".upload" server = user = passwd = nodedir = localpath = None @@ -76,13 +93,13 @@ # defaults run_forever = True timeout = 5 - debug = False + do_debug = False # parse arguments for o, a in opts: if o == "-t": run_forever = False if o == "-r": timeout = int(a) - if o == "-v": debug = True + if o == "-v": do_debug = True ftp = None @@ -94,10 +111,10 @@ try: # get directory listing is_downloading = True - if debug: print "connecting.."; sys.stdout.flush() + debug( "connecting.." ) ftp = ftplib.FTP(server, user, passwd) ftp.set_pasv(True) - if debug: print "cwd"; sys.stdout.flush() + debug( "cwd" ) ftp.cwd(nodedir) # NOTE: ftplib has issues with nlst-ing empty dirs, so make sure on the @@ -107,18 +124,18 @@ rmflist = [] acklist = [] try: - if debug: print "get remflist"; sys.stdout.flush() + debug( "get remflist" ) remflist = ftp.nlst("") except ftplib.all_errors, e: pass try: - if debug: print "get acklist"; sys.stdout.flush() + debug( "get acklist" ) acklist = ftp.nlst(updir+"/") except ftplib.all_errors, e: pass - if debug: print "removing files..."; sys.stdout.flush() + debug( "removing files..." ) # remove files that have been removed from the server locflist = os.listdir(localpath) @@ -130,7 +147,7 @@ except: pass # igorne missing ".md5" files for partial downloads - if debug: print 'fetching files...'; sys.stdout.flush() + debug( 'fetching files...' ) for filename in remflist: # check if file had already been downloaded @@ -141,7 +158,7 @@ localpname = localpath+"/"+filename df = DownloadFile(localpname) - if debug: print "before download of "+filename; sys.stdout.flush() + debug( "before download of "+filename ) # download file ftp.retrbinary("RETR %s" % filename, @@ -149,7 +166,7 @@ 16*1024, df.get_offset()) - if debug: print "after download of "+filename; sys.stdout.flush() + debug( "after download of "+filename ) # fix the timestamp, which is often way in the future (for some # reason, the cabs don't quite have the right date/time) @@ -167,9 +184,9 @@ # remove md5 file commands.getoutput("rm %s" % md5fname) - print "[%s] download complete" % filename + info( "[%s] download complete" % filename ) - if debug: print 'done downloading'; sys.stdout.flush() + debug( 'done downloading' ) # done with all files is_downloading = False @@ -183,29 +200,44 @@ ftp.storbinary("STOR .upload/ls.txt", lsf) lsf.close() + # launch a new download.py if avail + downloads = sorted(glob.glob(localpath + '/download.py-*')) + if len(downloads)>0: + shutil.move(downloads[-1], '/opt/bin/download.py') + restart() + # if there are Makefiles, execute lexicographically last one makefiles = sorted(glob.glob(localpath + '/Makefile*')) if len(makefiles)>0: + # note that os.system defers interrupts, for some reason os.system('make -C ' + localpath + ' -f ' + makefiles[-1]) + #p = Popen('make -C ' + localpath + ' -f ' + makefiles[-1], + # shell = True) + #debug( 'waiting on pid', p.pid ) + #try: os.waitpid( p.pid, 0 ) + #except: pass # TODO retry + debug( 'sleeping' ) + if run_forever: time.sleep(30) else: done = True + debug( 'looping' ) + except ftplib.all_errors, e: - print "FTP error", e + info( "FTP error", e ) is_downloading = False time.sleep(timeout) - print "Retrying.." + info( "Retrying.." ) except socket.error, e: - print "Socket error", e + info( "Socket error", e ) is_downloading = False time.sleep(timeout) - print "Retrying.." + info( "Retrying.." ) ftp.quit() if __name__ == "__main__": main() -# vim:et:sw=2:ts=2 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-03 11:11:34
|
Revision: 208 http://assorted.svn.sourceforge.net/assorted/?rev=208&view=rev Author: yangzhang Date: 2008-01-03 03:11:36 -0800 (Thu, 03 Jan 2008) Log Message: ----------- merged, updated builder Modified Paths: -------------- assorted-site/trunk/build.bash assorted-site/trunk/index.txt Modified: assorted-site/trunk/build.bash =================================================================== --- assorted-site/trunk/build.bash 2008-01-03 11:03:47 UTC (rev 207) +++ assorted-site/trunk/build.bash 2008-01-03 11:11:36 UTC (rev 208) @@ -12,6 +12,8 @@ cp ../main.css . pandoc -s -S --tab-stop=2 -c main.css -H ../header.html -A ../footer.html -o index.html ../index.txt +exit # XXX fix rest later + rewrite() { cat << "EOF" <IfModule mod_rewrite.c> Modified: assorted-site/trunk/index.txt =================================================================== --- assorted-site/trunk/index.txt 2008-01-03 11:03:47 UTC (rev 207) +++ assorted-site/trunk/index.txt 2008-01-03 11:11:36 UTC (rev 208) @@ -26,6 +26,9 @@ text user interfaces (hiatus) - JFX Table: an editable table (spreadsheet) widget in JavaFX (done) - LZXGrid: an editable table (spreadsheet) widget in OpenLaszlo (done) +- System utilities + - Throttled Repeater: small program that sends a fixed number of lines at a + time from a file to a server over TCP (done) - Meta programming - Simple object code generation: currently targets Java serialization, emphasizing compactness, speed, and simplicity (done) @@ -39,6 +42,10 @@ - O'Reilly Safari: cache text for offline reading (abandoned) - Youtube: caches videos from your favorites, playlists, and subscriptions (done) + - MovieLookup: given an [HBO](http://hbo.com/) schedule, look up movie + ratings on [Rotten Tomatoes](http://rottentomatoes.com/), sort the movies + by score, and aggregate the show times for those movies based on the + schedule (done) - Configuration resources and desktop tools - [Vim syntax file for JavaFX](http://www.vim.org/scripts/script.php?script_id=1943) (done) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-03 11:03:57
|
Revision: 207 http://assorted.svn.sourceforge.net/assorted/?rev=207&view=rev Author: yangzhang Date: 2008-01-03 03:03:47 -0800 (Thu, 03 Jan 2008) Log Message: ----------- latest personal site, published Modified Paths: -------------- personal-site/trunk/Makefile Added Paths: ----------- personal-site/trunk/src/dark.css Removed Paths: ------------- personal-site/trunk/static/dark.css Modified: personal-site/trunk/Makefile =================================================================== --- personal-site/trunk/Makefile 2008-01-03 09:47:38 UTC (rev 206) +++ personal-site/trunk/Makefile 2008-01-03 11:03:47 UTC (rev 207) @@ -3,12 +3,15 @@ DARK := out/dark.html INDEX := out/index.html -all: $(INDEX) $(PLAIN) $(DARK) +all: $(INDEX) $(PLAIN) $(DARK) out/dark.css svn export --force static out out: mkdir -p out +out/dark.css: src/dark.css + cpp -P -CC -traditional-cpp $^ $@ + $(INDEX): $(DARK) ln -sf dark.html $(INDEX) Copied: personal-site/trunk/src/dark.css (from rev 205, personal-site/trunk/static/dark.css) =================================================================== --- personal-site/trunk/src/dark.css (rev 0) +++ personal-site/trunk/src/dark.css 2008-01-03 11:03:47 UTC (rev 207) @@ -0,0 +1,156 @@ +/* + * This is loosely based on the 'Blackbox' theme by Viktor Persson + * (http://arcsin.se/). + */ + +#define DIM_GOLD #B8860B +#define BRIGHT_GOLD #DAA520 +#define TEXT_WHITE #F5F5F5 +#define TEXT_GRAY #C0C0C0 +#define BRIGHT_BLUE #E0FFFF +#define DIM_BLUE #87CEEB + +/* Standard elements */ +/* +* { + margin: 0; + padding: 0; +} + */ + +a { + color: DIM_BLUE; + text-decoration: none; +} + +a:hover { + color: BRIGHT_BLUE; +} + +body { + background: black url(img/bg.png) repeat-x fixed left bottom; + color: TEXT_WHITE; + margin: 20px 0; + text-align: center; + font: normal 0.8em sans-serif,Arial; +} + +ul { + /* margin: 12px 0; */ + margin-left: -25px; +} + +li { + /* list-style: url(img/li.gif); */ + /* margin-left: 18px; */ +} + +code { + font: normal 1em "Lucida Sans Unicode",serif; + background: url(img/bgcode.gif); + color: #888; + display: block; + padding: 3px 6px; + white-space: pre; + margin-bottom: 12px; +} + +/* Misc */ +div.quote { + margin-bottom: 12px; + font: normal 1.1em "Lucida Sans Unicode",serif; + background: url(img/quote.gif) no-repeat; + padding-left: 28px; + color: gray; +} + + +/* Main structure */ +.main { + background: #000; + border: 3px double #EEE; + border-color: DIM_GOLD; /* #222; /* #141414 #202020 #222 #202020; */ + margin: 20px auto 4px auto; + text-align: left; + width: 600px; +} + +/* Header */ +.title { + float: left; + width: 190px; +} +.title h1 { + color: TEXT_GRAY; + font: normal 1.5em sans-serif; + padding-left: 10px; + /* padding: 16px 20px; */ + text-transform: lowercase; +} + + +/* Menu */ +div.menu { + float: right; +} +.menu a { + background: #000; /* url(img/bgmenu.png) repeat-x; */ + /* + border-left: 1px solid #222; + border-right: 1px solid #222; + border-top: 1px solid #222; + */ + color: DIM_GOLD; /* #7799bb; */ + float: left; + padding-top: 4px; + width: 100px; height: 36px; + border-top: 3px solid black; +} +.menu a span { + padding-left: 6px; +} +.menu a:hover { + background-position: left bottom; + color: BRIGHT_GOLD; + border-top: 3px solid BRIGHT_GOLD; +} + + +/* Content */ +.content { + /* border-top: 1px solid DIM_GOLD; */ + background: black; + clear: both; + padding: 8px 10px; +} +.content h1, img { + display: none; +} +.content h2 { + /* margin: 0 0 4px; */ + text-transform: lowercase; + border-top: 1px solid DIM_GOLD; + font: 1.3em sans-serif; + font-weight: normal; + color: silver; +} +.content p { + /* margin: 0 0 12px; */ +} + +/* Footer */ +.footer { + padding: 5px; + background: #0A0A0A; + color: #666; +} +/* TODO fix the spacing +.footer p { + padding-top: -10px; + padding-bottom: -10px; +} +*/ + +/* + * vim:noet:sw=4:ts=4 + */ Deleted: personal-site/trunk/static/dark.css =================================================================== --- personal-site/trunk/static/dark.css 2008-01-03 09:47:38 UTC (rev 206) +++ personal-site/trunk/static/dark.css 2008-01-03 11:03:47 UTC (rev 207) @@ -1,143 +0,0 @@ -/* - * This is loosely based on the 'Blackbox' theme by Viktor Persson - * (http://arcsin.se/). - */ - -/* Standard elements */ -/** { - margin: 0; - padding: 0; -}*/ - -a { - color: skyblue; - text-decoration: none; -} -a:hover { - color: lightcyan; -} -body { - background: black url(img/bg.png) repeat-x fixed left bottom; - color: whitesmoke; - margin: 20px 0; - text-align: center; - font: normal 0.8em sans-serif,Arial; -} -ul { - /* margin: 12px 0; */ - margin-left: -25px; -} -li { - /* list-style: url(img/li.gif); */ - /* margin-left: 18px; */ -} -code { - font: normal 1em "Lucida Sans Unicode",serif; - background: url(img/bgcode.gif); - color: #888; - display: block; - padding: 3px 6px; - white-space: pre; - margin-bottom: 12px; -} - - -/* Misc */ -div.quote { - margin-bottom: 12px; - font: normal 1.1em "Lucida Sans Unicode",serif; - background: url(img/quote.gif) no-repeat; - padding-left: 28px; - color: gray; -} - - -/* Main structure */ -.main { - background: #000; - border: 3px double #EEE; - border-color: darkgoldenrod; /* #222; /* #141414 #202020 #222 #202020; */ - margin: 20px auto 4px auto; - text-align: left; - width: 600px; -} - -/* Header */ -.title { - float: left; - width: 190px; -} -.title h1 { - color: silver; - font: normal 1.5em sans-serif; - padding-left: 10px; - /* padding: 16px 20px; */ - text-transform: lowercase; -} - - -/* Menu */ -div.menu { - float: right; -} -.menu a { - background: #000; /* url(img/bgmenu.png) repeat-x; */ - /* - border-left: 1px solid #222; - border-right: 1px solid #222; - border-top: 1px solid #222; - */ - color: darkgoldenrod; /* #7799bb; */ - float: left; - padding-top: 4px; - width: 100px; height: 36px; - border-top: 3px solid black; -} -.menu a span { - padding-left: 6px; -} -.menu a:hover { - background-position: left bottom; - color: goldenrod; - border-top: 3px solid goldenrod; -} - - -/* Content */ -.content { - /* border-top: 1px solid darkgoldenrod; */ - background: black; - clear: both; - padding: 8px 10px; -} -.content h1, img { - display: none; -} -.content h2 { - /* margin: 0 0 4px; */ - text-transform: lowercase; - border-top: 1px solid darkgoldenrod; - font: 1.3em sans-serif; - font-weight: normal; - color: silver; -} -.content p { - /* margin: 0 0 12px; */ -} - -/* Footer */ -.footer { - padding: 5px; - background: #0A0A0A; - color: #666; -} -/* TODO fix the spacing -.footer p { - padding-top: -10px; - padding-bottom: -10px; -} -*/ - -/* - * vim:noet:sw=4:ts=4 - */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-03 09:47:38
|
Revision: 206 http://assorted.svn.sourceforge.net/assorted/?rev=206&view=rev Author: yangzhang Date: 2008-01-03 01:47:38 -0800 (Thu, 03 Jan 2008) Log Message: ----------- added simple-preprocessor Added Paths: ----------- simple-preprocessor/ simple-preprocessor/trunk/ simple-preprocessor/trunk/src/ simple-preprocessor/trunk/src/Makefile simple-preprocessor/trunk/src/Preprocessor.scala simple-preprocessor/trunk/src/spp.bash Added: simple-preprocessor/trunk/src/Makefile =================================================================== --- simple-preprocessor/trunk/src/Makefile (rev 0) +++ simple-preprocessor/trunk/src/Makefile 2008-01-03 09:47:38 UTC (rev 206) @@ -0,0 +1,8 @@ +all: out/Preprocessor.class + +out/Preprocessor.class: Preprocessor.scala commons/* + mkdir -p out + fsc -d out $^ + +clean: + rm -r out/ Added: simple-preprocessor/trunk/src/Preprocessor.scala =================================================================== --- simple-preprocessor/trunk/src/Preprocessor.scala (rev 0) +++ simple-preprocessor/trunk/src/Preprocessor.scala 2008-01-03 09:47:38 UTC (rev 206) @@ -0,0 +1,23 @@ +import commons.Control._ +import commons.Io._ +import scala.collection.mutable._ +import java.util.regex._ +object Preprocessor { + val rules = new ArrayBuffer[(Pattern,String)] + def main(args: Array[String]) { + using (TextReader(System.in)) { r => + for (line <- r.readLines) { + val toks = line.split("\\s",2) + if (toks(0) == "#define" && toks.length > 2) { + rules += (Pattern.compile("\\b" + toks(1) + "\\b"), toks(2)) + } else { + var munged = line + for ((pat,rep) <- rules) { + munged = pat matcher munged replaceAll toks(2) + } + println(munged) + } + } + } + } +} Added: simple-preprocessor/trunk/src/spp.bash =================================================================== --- simple-preprocessor/trunk/src/spp.bash (rev 0) +++ simple-preprocessor/trunk/src/spp.bash 2008-01-03 09:47:38 UTC (rev 206) @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +scala -cp "$(dirname "$0")/out" Preprocessor Property changes on: simple-preprocessor/trunk/src/spp.bash ___________________________________________________________________ Name: svn:executable + * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-03 09:04:39
|
Revision: 205 http://assorted.svn.sourceforge.net/assorted/?rev=205&view=rev Author: yangzhang Date: 2008-01-03 01:04:32 -0800 (Thu, 03 Jan 2008) Log Message: ----------- updated design Modified Paths: -------------- personal-site/trunk/Makefile personal-site/trunk/src/header.html personal-site/trunk/src/index.txt personal-site/trunk/static/dark.css Removed Paths: ------------- personal-site/trunk/src/plain-epilogue.html Modified: personal-site/trunk/Makefile =================================================================== --- personal-site/trunk/Makefile 2008-01-03 04:52:13 UTC (rev 204) +++ personal-site/trunk/Makefile 2008-01-03 09:04:32 UTC (rev 205) @@ -2,19 +2,19 @@ PLAIN := out/plain.html DARK := out/dark.html INDEX := out/index.html -TESTDIR := test all: $(INDEX) $(PLAIN) $(DARK) + svn export --force static out out: - svn export static out + mkdir -p out $(INDEX): $(DARK) ln -sf dark.html $(INDEX) -$(PLAIN): src/index.txt src/header.html src/plain-epilogue.html out +$(PLAIN): src/index.txt src/header.html out pandoc -s -S --tab-stop=2 -H src/header.html src/index.txt \ - -c plain.css -A src/plain-epilogue.html | \ + -c plain.css | \ $(MUNGEMAIL) > $(PLAIN) $(DARK): src/index.txt src/header.html src/dark-prologue.html src/dark-epilogue.html out @@ -23,7 +23,7 @@ $(MUNGEMAIL) > $(DARK) publish: all - scp -r out/* lin:www/ + scp -o CompressionLevel=9 -r out/* lin:www/ clean: - rm -rf $(TESTDIR) out + rm -rf out Modified: personal-site/trunk/src/header.html =================================================================== --- personal-site/trunk/src/header.html 2008-01-03 04:52:13 UTC (rev 204) +++ personal-site/trunk/src/header.html 2008-01-03 09:04:32 UTC (rev 205) @@ -1,7 +1,7 @@ <meta name="no-email-collection" content="http://www.unspam.com/noemailcollection" /> <meta name="verify-v1" content="d8peXpEYa9lz6TBtLim5WB9X0DP40G5qmNZENCT3rGA=" /> <meta name="verify-v1" content="xcIyp637+f42aznWePbI2c0qUCVoqQhIDIoKCsQV9fM=" /> - <style> + <style type="text/css"> .footer { font-size: smaller } Modified: personal-site/trunk/src/index.txt =================================================================== --- personal-site/trunk/src/index.txt 2008-01-03 04:52:13 UTC (rev 204) +++ personal-site/trunk/src/index.txt 2008-01-03 09:04:32 UTC (rev 205) @@ -7,9 +7,9 @@ About me -------- -I'm a grad student who wishes he had more time for his personal website. I -work with Prof. [Sam Madden] in [CSAIL] at [MIT]. I graduated from [UC -Berkeley] in 2005 with a BS in Electrical Engineering and Computer Science. +I'm a grad student working with Prof. [Sam Madden] in [CSAIL] at [MIT]. I +graduated from [UC Berkeley] in 2005 with a BS in Electrical Engineering and +Computer Science. [Sam Madden]: http://db.csail.mit.edu/madden/ [CSAIL]: http://www.csail.mit.edu/ @@ -39,7 +39,7 @@ item( 'Jabber (Google)', 'xmpp:', 'gmail.com', 'yaaang' ); item( 'Skype', 'callto://', 'yaaang' ); item( 'FreeNode', 'irc://irc.freenode.org/', 'zeeeee' ); // TODO fix - item( 'Office', '<a href="http://whereis.mit.edu/map-jpg?selection=32&Buildings=go">32</a>-<a href="http://www.csail.mit.edu/resources/maps/9G/G920.gif">G920</a>, <a href="callto://+1-617-253-0969">(617) 253-0969</a>' ); + item( 'Office', 'MIT/CSAIL <a href="http://whereis.mit.edu/map-jpg?selection=32&Buildings=go">32</a>-<a href="http://www.csail.mit.edu/resources/maps/9G/G920.gif">G920</a>, 32 Vassar St., Cambridge, MA 02139, <a href="callto://+1-617-253-0969">(617) 253-0969</a>' ); item( 'GPG public key', '<a href="yang.gpg.asc">yang.gpg.asc</a> (<a href="http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xB1E65B60">MIT PKS entry</a>)' ); document.write( '</ul>' ); // ]]> @@ -101,14 +101,5 @@ </div> <!-- -Links ------ - -- [Pawan Deshpande] - -[Pawan Deshpande]: http://people.csail.mit.edu/pawand/ ---> - -<!-- vim:ft=mkd:et:sw=2:ts=2:nocin --> Deleted: personal-site/trunk/src/plain-epilogue.html =================================================================== --- personal-site/trunk/src/plain-epilogue.html 2008-01-03 04:52:13 UTC (rev 204) +++ personal-site/trunk/src/plain-epilogue.html 2008-01-03 09:04:32 UTC (rev 205) @@ -1,45 +0,0 @@ - <!-- Google Analytics --> - <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> - </script> - <script type="text/javascript"> - _uacct = "UA-1322324-1"; - urchinTracker(); - </script> - - <!-- Performance Metrics --> - <script src="http://pmetrics.performancing.com/102.js" type="text/javascript"></script> - <noscript><p><img alt="Performancing Metrics" src="http://pmetrics.performancing.com/102ns.gif" /></p></noscript> - - <!-- Extreme Tracking --> - <div id="eXTReMe"><a href="http://extremetracking.com/open?login=yzzororg"> - <img src="http://t1.extreme-dm.com/i.gif" style="border: 0;" id="extremeimg" - height="38" width="41" id="EXim" alt="eXTReMe Tracker" /></a> - <script type="text/javascript"><!-- - var EXlogin='yzzororg' // Login - var EXvsrv='s9' // VServer - EXs=screen;EXw=EXs.width;navigator.appName!="Netscape"? - EXb=EXs.colorDepth:EXb=EXs.pixelDepth; - navigator.javaEnabled()==1?EXjv="y":EXjv="n"; - EXd=document;EXw?"":EXw="na";EXb?"":EXb="na"; - EXd.write("<img src=http://e0.extreme-dm.com", - "/"+EXvsrv+".g?login="+EXlogin+"&", - "jv="+EXjv+"&j=y&srw="+EXw+"&srb="+EXb+"&", - "l="+escape(EXd.referrer)+" height=1 width=1>");//--> - </script><noscript><div id="neXTReMe"><img height="1" width="1" alt="" - src="http://e0.extreme-dm.com/s9.g?login=yzzororg&j=n&jv=n" /> - </div></noscript></div> - <script> - var img = document.getElementById("extremeimg"); - img.width=1; - img.height=1; - </script> - - <!-- Quantcast --> - <!-- Start Quantcast tag --> - <script type="text/javascript" src="http://edge.quantserve.com/quant.js"></script> - <script type="text/javascript"> - _qacct="p-45nKPbm9DJOeE";quantserve();</script> - <noscript> - <img src="http://pixel.quantserve.com/pixel/p-45nKPbm9DJOeE.gif" style="display: none" height="1" width="1" alt="Quantcast"/></noscript> - <!-- End Quantcast tag --> - Modified: personal-site/trunk/static/dark.css =================================================================== --- personal-site/trunk/static/dark.css 2008-01-03 04:52:13 UTC (rev 204) +++ personal-site/trunk/static/dark.css 2008-01-03 09:04:32 UTC (rev 205) @@ -56,7 +56,7 @@ .main { background: #000; border: 3px double #EEE; - border-color: #222; /* #141414 #202020 #222 #202020; */ + border-color: darkgoldenrod; /* #222; /* #141414 #202020 #222 #202020; */ margin: 20px auto 4px auto; text-align: left; width: 600px; @@ -110,7 +110,9 @@ clear: both; padding: 8px 10px; } -.content h1,img { display: none; } +.content h1, img { + display: none; +} .content h2 { /* margin: 0 0 4px; */ text-transform: lowercase; @@ -119,9 +121,6 @@ font-weight: normal; color: silver; } -.content h2 a { - color: silver; -} .content p { /* margin: 0 0 12px; */ } @@ -132,9 +131,13 @@ background: #0A0A0A; color: #666; } +/* TODO fix the spacing .footer p { padding-top: -10px; - padding-bottom: 0px; + padding-bottom: -10px; } +*/ -/* vim:noet:sw=4:ts=4 */ +/* + * vim:noet:sw=4:ts=4 + */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-03 04:52:10
|
Revision: 204 http://assorted.svn.sourceforge.net/assorted/?rev=204&view=rev Author: yangzhang Date: 2008-01-02 20:52:13 -0800 (Wed, 02 Jan 2008) Log Message: ----------- latest assorted-site (published) Modified Paths: -------------- assorted-site/trunk/build.bash assorted-site/trunk/index.txt assorted-site/trunk/main.css Modified: assorted-site/trunk/build.bash =================================================================== --- assorted-site/trunk/build.bash 2008-01-03 03:11:05 UTC (rev 203) +++ assorted-site/trunk/build.bash 2008-01-03 04:52:13 UTC (rev 204) @@ -10,7 +10,7 @@ # main index cp ../main.css . -pandoc -S -c main.css -o index.html ../index.txt +pandoc -s -S --tab-stop=2 -c main.css -H ../header.html -A ../footer.html -o index.html ../index.txt rewrite() { cat << "EOF" @@ -41,7 +41,7 @@ # deploy tar czf - . | -ssh sfs ' +ssh sf ' cd assorted rm -r htdocs-new 2> /dev/null || true mkdir htdocs-new @@ -50,4 +50,4 @@ rm -r htdocs/* mv htdocs-new/* htdocs/ rmdir htdocs-new -' \ No newline at end of file +' Modified: assorted-site/trunk/index.txt =================================================================== --- assorted-site/trunk/index.txt 2008-01-03 03:11:05 UTC (rev 203) +++ assorted-site/trunk/index.txt 2008-01-03 04:52:13 UTC (rev 204) @@ -6,55 +6,57 @@ I've written, and it's imaginatively named "assorted." Most of the code is simply stored in [the Subversion repository] at the -moment, with no web pages or package releases. +moment, with no web pages or package releases. The information here is sparse, +providing only a brief description and the development status. More +information to come later. -- ZDB: simple object database with an emphasis on semantics; under active - development +- ZDB: simple object database with an emphasis on semantics (active) - General-purpose libraries ("commons") for various languages or platforms. - - [Python Commons](python-commons) - - C++ Commons: complements Boost - - Haskell Commons: complements MissingH - - Scala Commons: complements WorkingMouse - - TeX Commons + - [Python Commons](python-commons) (maintained) + - C++ Commons: complements Boost (hiatus) + - Haskell Commons: complements MissingH (active) + - Scala Commons: complements WorkingMouse (active) + - TeX Commons (active) - Shell Tools: programs written in a variety of languages and - oriented toward shell scripting and systems management. - - [AFX](python-afx): extensions (e.g. threading support) for the [AF] - asynchronous programming framework + oriented toward shell scripting and systems management (maintained) + - AFX: extensions (e.g. threading support) for the AF asynchronous + programming framework (active) - UI libraries - - [Scala TUI](scala-tui): a declarative reactive programming toolkit - for constructing text user interfaces - - JFX Table: an editable table (spreadsheet) widget in JavaFX - - LZXGrid: an editable table (spreadsheet) widget in OpenLaszlo + - Scala TUI: a declarative reactive programming toolkit for constructing + text user interfaces (hiatus) + - JFX Table: an editable table (spreadsheet) widget in JavaFX (done) + - LZXGrid: an editable table (spreadsheet) widget in OpenLaszlo (done) - Meta programming - Simple object code generation: currently targets Java serialization, - emphasizing compactness, speed, and simplicity (in that order) - - BattleCode composer: express and mix competitive strategies quickly + emphasizing compactness, speed, and simplicity (done) + - BattleCode composer: express and mix strategies quickly (planning) - TopCoder tools: crawl TopCoder rankings to analyze players. Currently only - produces language statistics. -- Tools for popular websites or services + produces language statistics. (done) +- Tools for various websites or services - [Facebook](facebook-tools): monitor changes in your Facebook network - - Myspace: crawl profiles within n degrees of you for fast searches - - O'Reilly Safari: cache text for offline reading (inactive) + (done) + - Myspace: crawl profiles within n degrees of you for fast searches (done) + - O'Reilly Safari: cache text for offline reading (abandoned) - Youtube: caches videos from your favorites, playlists, and subscriptions + (done) - Configuration resources and desktop tools - [Vim syntax file for - JavaFX](http://www.vim.org/scripts/script.php?script_id=1943) - - Software Configurations: dot files, rc files, bootstrapping, etc. + JavaFX](http://www.vim.org/scripts/script.php?script_id=1943) (done) + - Software Configurations: dot files, rc files, bootstrapping, etc. (done) - Wallpaper Tools: tools for managing wallpapers as they are being rotated - through. + through (done) - Miscellanea - - Subtitle adjuster: for time-shifting SRTs + - Subtitle adjuster: for time-shifting SRTs (done) - Programming Problems: my workspace for solving programming puzzles + (hiatus) - Experimental Sandbox: heap of small test cases to explore (bugs, corner - cases, features, etc.) + cases, features, etc.) (maintained) - Source management: various tools for cleaning up and maintaining a source - code repository, identifying things that might not belong. + code repository, identifying things that might not belong (hiatus) - Websites - - This website - - [My personal website](http://yz.zor.org/) + - This website (maintained) + - [My personal website](http://yz.zor.org/) (maintained) -[AF]: http://af.sf.net/ - Other links: - [SourceForge Project Page](http://sf.net/projects/assorted/): @@ -65,8 +67,7 @@ - [TinyOS](http://tinyos.net/): SF-hosted project I've been involved in - [My homepage](http://yz.zor.org/) -[browse the code repository]: -https://assorted.svn.sourceforge.net/svnroot/assorted +[browse the code repository]: https://assorted.svn.sourceforge.net/svnroot/assorted <!-- vim:nocin:et:sw=2:ts=2 Modified: assorted-site/trunk/main.css =================================================================== --- assorted-site/trunk/main.css 2008-01-03 03:11:05 UTC (rev 203) +++ assorted-site/trunk/main.css 2008-01-03 04:52:13 UTC (rev 204) @@ -39,12 +39,13 @@ color: navy; } -h1, h2, h3, h4, h5, h6 { +h1, h2, h3, h4, h5, h6, h1 a, h2 a { color: #527bbd; font-family: sans-serif; margin-top: 1.2em; margin-bottom: 0.5em; line-height: 1.3; + text-decoration: none; } h1 { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <yan...@us...> - 2008-01-03 03:11:03
|
Revision: 203 http://assorted.svn.sourceforge.net/assorted/?rev=203&view=rev Author: yangzhang Date: 2008-01-02 19:11:05 -0800 (Wed, 02 Jan 2008) Log Message: ----------- new version of site! Modified Paths: -------------- personal-site/trunk/Makefile Added Paths: ----------- personal-site/trunk/README personal-site/trunk/src/ personal-site/trunk/src/dark-epilogue.html personal-site/trunk/src/dark-prologue.html personal-site/trunk/src/header.html personal-site/trunk/src/index.txt personal-site/trunk/src/plain-epilogue.html personal-site/trunk/static/ personal-site/trunk/static/dark.css personal-site/trunk/static/me.jpg personal-site/trunk/static/papers/ personal-site/trunk/static/plain.css personal-site/trunk/static/yang.gpg.asc Removed Paths: ------------- personal-site/trunk/footer.html personal-site/trunk/header.html personal-site/trunk/index.txt personal-site/trunk/main.css personal-site/trunk/me.jpg personal-site/trunk/papers/ personal-site/trunk/yang.gpg.asc Modified: personal-site/trunk/Makefile =================================================================== --- personal-site/trunk/Makefile 2008-01-02 10:08:03 UTC (rev 202) +++ personal-site/trunk/Makefile 2008-01-03 03:11:05 UTC (rev 203) @@ -1,8 +1,29 @@ -all: index.html +MUNGEMAIL := sed 's/><body$$/><body onload="javascript:body_onload();"/' +PLAIN := out/plain.html +DARK := out/dark.html +INDEX := out/index.html +TESTDIR := test -index.html: index.txt header.html footer.html - pandoc -c main.css -s --tab-stop=2 -S -H header.html -A footer.html index.txt | \ - sed 's/><body$$/><body onload="javascript:body_onload();"/' > index.html +all: $(INDEX) $(PLAIN) $(DARK) -clean: index.html - rm index.html +out: + svn export static out + +$(INDEX): $(DARK) + ln -sf dark.html $(INDEX) + +$(PLAIN): src/index.txt src/header.html src/plain-epilogue.html out + pandoc -s -S --tab-stop=2 -H src/header.html src/index.txt \ + -c plain.css -A src/plain-epilogue.html | \ + $(MUNGEMAIL) > $(PLAIN) + +$(DARK): src/index.txt src/header.html src/dark-prologue.html src/dark-epilogue.html out + pandoc -s -S --tab-stop=2 -H src/header.html src/index.txt \ + -c dark.css -B src/dark-prologue.html -A src/dark-epilogue.html | \ + $(MUNGEMAIL) > $(DARK) + +publish: all + scp -r out/* lin:www/ + +clean: + rm -rf $(TESTDIR) out Added: personal-site/trunk/README =================================================================== --- personal-site/trunk/README (rev 0) +++ personal-site/trunk/README 2008-01-03 03:11:05 UTC (rev 203) @@ -0,0 +1,2 @@ +static: images, css files, and other files that are directly copied into the published directory +src: the source files that generate files to be published Deleted: personal-site/trunk/footer.html =================================================================== --- personal-site/trunk/footer.html 2008-01-02 10:08:03 UTC (rev 202) +++ personal-site/trunk/footer.html 2008-01-03 03:11:05 UTC (rev 203) @@ -1,55 +0,0 @@ - <!-- - <div class="footer"> - <p> - Valid XHTML 1.0 (<a href="http://validator.w3.org/check/referer">re-validate</a>) - <br/> - Valid CSS (<a href="http://jigsaw.w3.org/css-validator/check/referer">re-validate</a>) - </p> - </div> - --> - - <!-- Google Analytics --> - <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> - </script> - <script type="text/javascript"> - _uacct = "UA-1322324-1"; - urchinTracker(); - </script> - - <!-- Performance Metrics --> - <script src="http://pmetrics.performancing.com/102.js" type="text/javascript"></script> - <noscript><p><img alt="Performancing Metrics" src="http://pmetrics.performancing.com/102ns.gif" /></p></noscript> - - <!-- Extreme Tracking --> - <div id="eXTReMe"><a href="http://extremetracking.com/open?login=yzzororg"> - <img src="http://t1.extreme-dm.com/i.gif" style="border: 0;" id="extremeimg" - height="38" width="41" id="EXim" alt="eXTReMe Tracker" /></a> - <script type="text/javascript"><!-- - var EXlogin='yzzororg' // Login - var EXvsrv='s9' // VServer - EXs=screen;EXw=EXs.width;navigator.appName!="Netscape"? - EXb=EXs.colorDepth:EXb=EXs.pixelDepth; - navigator.javaEnabled()==1?EXjv="y":EXjv="n"; - EXd=document;EXw?"":EXw="na";EXb?"":EXb="na"; - EXd.write("<img src=http://e0.extreme-dm.com", - "/"+EXvsrv+".g?login="+EXlogin+"&", - "jv="+EXjv+"&j=y&srw="+EXw+"&srb="+EXb+"&", - "l="+escape(EXd.referrer)+" height=1 width=1>");//--> - </script><noscript><div id="neXTReMe"><img height="1" width="1" alt="" - src="http://e0.extreme-dm.com/s9.g?login=yzzororg&j=n&jv=n" /> - </div></noscript></div> - <script> - var img = document.getElementById("extremeimg"); - img.width=1; - img.height=1; - </script> - - <!-- Quantcast --> - <!-- Start Quantcast tag --> - <script type="text/javascript" src="http://edge.quantserve.com/quant.js"></script> - <script type="text/javascript"> - _qacct="p-45nKPbm9DJOeE";quantserve();</script> - <noscript> - <img src="http://pixel.quantserve.com/pixel/p-45nKPbm9DJOeE.gif" style="display: none" height="1" width="1" alt="Quantcast"/></noscript> - <!-- End Quantcast tag --> - Deleted: personal-site/trunk/header.html =================================================================== --- personal-site/trunk/header.html 2008-01-02 10:08:03 UTC (rev 202) +++ personal-site/trunk/header.html 2008-01-03 03:11:05 UTC (rev 203) @@ -1,47 +0,0 @@ - <meta name="no-email-collection" content="http://www.unspam.com/noemailcollection" /> - <meta name="verify-v1" content="d8peXpEYa9lz6TBtLim5WB9X0DP40G5qmNZENCT3rGA=" /> - <meta name="verify-v1" content="xcIyp637+f42aznWePbI2c0qUCVoqQhIDIoKCsQV9fM=" /> - <style> - .footer { - font-size: smaller - } - </style> - <script type="text/javascript"> - // <![CDATA[ - function link( prot, name, domain ) { - addr = name; - if ( domain ) { - addr += '@' + domain; - } - if ( prot != null ) { - html = '<a href="' + prot + escape( addr ) + '">' + addr + '</a>'; - } else { - html = addr; - } - return html; - } - var ul = document.createElement( 'ul' ); - function item( label, arg1, arg2, arg3 ) { - if ( arg3 ) { - html = label + ': ' + link( arg1, arg3, arg2 ); - } else if ( arg2 ) { - html = label + ': ' + link( arg1, arg2 ); - } else { - html = label + ': ' + arg1; - } - var li = document.createElement( 'li' ); - li.innerHTML = html; - ul.appendChild( li ); - } - function writeItems() { - document.getElementById( 'items' ).appendChild( ul ); - } - function hideSpamLink() { - document.getElementById( 'spamlink' ).style.visibility = 'hidden'; - } - function body_onload() { - writeItems(); - hideSpamLink(); - } - // ]]> - </script> Deleted: personal-site/trunk/index.txt =================================================================== --- personal-site/trunk/index.txt 2008-01-02 10:08:03 UTC (rev 202) +++ personal-site/trunk/index.txt 2008-01-03 03:11:05 UTC (rev 203) @@ -1,96 +0,0 @@ -% Yang Zhang -% Yang Zhang - - - -About me --------- - -I'm a grad student who wishes he had more time for his personal website. I -work with Prof. [Sam Madden] in [CSAIL] at [MIT]. I graduated from [UC -Berkeley] in 2005 with a BS in Electrical Engineering and Computer Science. - -[Sam Madden]: http://db.csail.mit.edu/madden/ -[CSAIL]: http://www.csail.mit.edu/ -[MIT]: http://mit.edu/ -[UC Berkeley]: http://berkeley.edu/ - -Contact information -------------------- - -<div> - <noscript> - <p> - <em> - Contact info obfuscated using JavaScript. Please enable JavaScript for correct rendering. - </em> - </p> - </noscript> - <div id="items"></div> - <script type="text/javascript"> - // <![CDATA[ - document.write( '<ul>' ); - item( 'Name', 'Yang Zhang' ); - item( 'Email', 'mailto:', 'mit.edu', 'y_z' ); - item( 'AIM', 'aim:goim?screenname=', 'sorta lame' ); - item( 'MSN', null, 'hotmail.com', 'noneofthegoodnameswereleft' ); - item( 'Yahoo', 'ymsgr:sendIM?', 'overbored' ); - item( 'Jabber (Google)', 'xmpp:', 'gmail.com', 'yaaang' ); - item( 'Skype', 'callto://', 'yaaang' ); - item( 'FreeNode', 'irc://irc.freenode.org/', 'zeeeee' ); // TODO fix - item( 'Office', '<a href="http://whereis.mit.edu/map-jpg?selection=32&Buildings=go">32</a>-<a href="http://www.csail.mit.edu/resources/maps/9G/G920.gif">G920</a>, <a href="callto://+1-617-253-0969">(617) 253-0969</a>' ); - item( 'GPG public key', '<a href="yang.gpg.asc">yang.gpg.asc</a> (<a href="http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xB1E65B60">MIT PKS entry</a>)' ); - document.write( '</ul>' ); - // ]]> - </script> -</div> - -Publicly released projects --------------------------- - -Here are the publicly released software projects in which I've been involved. -More details when I have time! - -- MIT - <!-- - JOSMP: an exokernel for multi-core x86 systems --> - - [Collaborative Filtering for the NetFlix - Prize](http://code.google.com/p/netflix6867/): explored low-rank matrix - factorization and MLE of a flexible mixture model using EM - - [Intermittently Connected Embedded - Database](http://cartel.csail.mit.edu/icedb/) (ICEDB): system for data - management and adaptive data collection in mobile sensor networks - - One-hop shortest paths routing for [Resilient Overlay - Networks](http://nms.lcs.mit.edu/projects/ron/) (RON) - - Guarded Atomic Actions for Haskell -- Berkeley - - Data Triage in [TelegraphCQ](http://telegraph.cs.berkeley.edu/): stream query - processing - - [Technology and Infrastructure for Emerging - Regions](http://tier.cs.berkeley.edu/) (TIER) - - [Recovery-Oriented Computing](http://roc.cs.berkeley.edu/) (ROC) - - [802.15.4 Simulation in TinyOS](http://tinyos.net/) -- Other - - ZDB: a personal data management system - - [Microsoft - Search](http://www.microsoft.com/windows/products/winfamily/desktopsearch/) - and [Microsoft SharePoint Portal - Server](http://www.microsoft.com/sharepoint/) - - [Yi](http://haskell.org/haskellwiki/Yi): text editor written in Haskell - - [Simple Publications Manager](http://pubmgr.sf.net/): publication - management web application - - [Assorted Projects](http://assorted.sf.net/): my code dump - -MIT classes ------------ - -- 6.829 Computer Networks (fall 2005) -- 6.864 Advanced Natural Language Processing (fall 2005) -- 6.431 Probabilistic Systems Analysis (spring 2006) -- 6.875 Cryptography and Cryptanalysis (spring 2006) -- 6.827 Implicit Parallel Programming (fall 2006) -- 6.033 Computer Systems Engineering (TA, spring 2007) -- 6.867 Machine Learning (fall 2007) - -<!-- -vim:ft=mkd:et:sw=2:ts=2:nocin ---> Deleted: personal-site/trunk/main.css =================================================================== --- personal-site/trunk/main.css 2008-01-02 10:08:03 UTC (rev 202) +++ personal-site/trunk/main.css 2008-01-03 03:11:05 UTC (rev 203) @@ -1,291 +0,0 @@ -/* Debug borders */ -p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 { -/* - border: 1px solid red; -*/ -} - -body { - margin:1em 5% 1em 5%; - padding:0; - background-color: white; - color: black; - font-family: Georgia, Verdana, sans-serif; - font-size: medium; - line-height: 1.3em; - color: #333; -} -/*body { - margin: 1em 5% 1em 5%; -}*/ - -a { - color: blue; - text-decoration: underline; -} -/*a:visited { - color: fuchsia; -}*/ - -em { - font-style: italic; -} - -strong { - font-weight: bold; -} - -tt { - color: navy; -} - -h1, h2, h3, h4, h5, h6, h1 a, h2 a { - color: #527bbd; - font-family: sans-serif; - margin-top: 1.2em; - margin-bottom: 0.5em; - line-height: 1.3; - text-decoration: none; -} - -h1 { - border-bottom: 2px solid silver; -} -h2 { - border-bottom: 2px solid silver; - padding-top: 0.5em; -} - -div.sectionbody { - font-family: serif; - margin-left: 0; -} - -hr { - border: 1px solid silver; -} - -p { - margin-top: 0.5em; - margin-bottom: 0.5em; -} - -pre { - padding: 0; - margin: 0; -} - -span#author { - color: #527bbd; - font-family: sans-serif; - font-weight: bold; - font-size: 1.1em; -} -span#email { -} -span#revision { - font-family: sans-serif; -} - -div#footer { - font-family: sans-serif; - font-size: small; - border-top: 2px solid silver; - padding-top: 0.5em; - margin-top: 4.0em; -} -div#footer-text { - float: left; - padding-bottom: 0.5em; -} -div#footer-badges { - float: right; - padding-bottom: 0.5em; -} - -div#preamble, -div.tableblock, div.imageblock, div.exampleblock, div.verseblock, -div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock, -div.admonitionblock { - margin-right: 10%; - margin-top: 1.5em; - margin-bottom: 1.5em; -} -div.admonitionblock { - margin-top: 2.5em; - margin-bottom: 2.5em; -} - -div.content { /* Block element content. */ - padding: 0; -} - -/* Block element titles. */ -div.title, caption.title { - font-family: sans-serif; - font-weight: bold; - text-align: left; - margin-top: 1.0em; - margin-bottom: 0.5em; -} -div.title + * { - margin-top: 0; -} - -td div.title:first-child { - margin-top: 0.0em; -} -div.content div.title:first-child { - margin-top: 0.0em; -} -div.content + div.title { - margin-top: 0.0em; -} - -div.sidebarblock > div.content { - background: #ffffee; - border: 1px solid silver; - padding: 0.5em; -} - -div.listingblock { - margin-right: 0%; -} -div.listingblock > div.content { - border: 1px solid silver; - background: #f4f4f4; - padding: 0.5em; -} - -div.quoteblock > div.content { - padding-left: 2.0em; -} - -div.attribution { - text-align: right; -} -div.verseblock + div.attribution { - text-align: left; -} - -div.admonitionblock .icon { - vertical-align: top; - font-size: 1.1em; - font-weight: bold; - text-decoration: underline; - color: #527bbd; - padding-right: 0.5em; -} -div.admonitionblock td.content { - padding-left: 0.5em; - border-left: 2px solid silver; -} - -div.exampleblock > div.content { - border-left: 2px solid silver; - padding: 0.5em; -} - -div.verseblock div.content { - white-space: pre; -} - -div.imageblock div.content { padding-left: 0; } -div.imageblock img { border: 1px solid silver; } -span.image img { border-style: none; } - -dl { - margin-top: 0.8em; - margin-bottom: 0.8em; -} -dt { - margin-top: 0.5em; - margin-bottom: 0; - font-style: italic; -} -dd > *:first-child { - margin-top: 0; -} - -ul, ol { - list-style-position: outside; -} -ol.olist2 { - list-style-type: lower-alpha; -} - -div.tableblock > table { - border: 3px solid #527bbd; -} -thead { - font-family: sans-serif; - font-weight: bold; -} -tfoot { - font-weight: bold; -} - -div.hlist { - margin-top: 0.8em; - margin-bottom: 0.8em; -} -td.hlist1 { - vertical-align: top; - font-style: italic; - padding-right: 0.8em; -} -td.hlist2 { - vertical-align: top; -} - -@media print { - div#footer-badges { display: none; } -} - -div#toctitle { - color: #527bbd; - font-family: sans-serif; - font-size: 1.1em; - font-weight: bold; - margin-top: 1.0em; - margin-bottom: 0.1em; -} - -div.toclevel1, div.toclevel2 { - margin-top: 0; - margin-bottom: 0; -} -div.toclevel2 { - margin-left: 2em; -} -/* Workarounds for IE6's broken and incomplete CSS2. */ - -div.sidebar-content { - background: #ffffee; - border: 1px solid silver; - padding: 0.5em; -} -div.sidebar-title, div.image-title { - font-family: sans-serif; - font-weight: bold; - margin-top: 0.0em; - margin-bottom: 0.5em; -} - -div.listingblock div.content { - border: 1px solid silver; - background: #f4f4f4; - padding: 0.5em; -} - -div.quoteblock-content { - padding-left: 2.0em; -} - -div.exampleblock-content { - border-left: 2px solid silver; - padding-left: 0.5em; -} - -/* IE6 sets dynamically generated links as visited. */ -div#toc a:visited { color: blue; } Deleted: personal-site/trunk/me.jpg =================================================================== (Binary files differ) Added: personal-site/trunk/src/dark-epilogue.html =================================================================== --- personal-site/trunk/src/dark-epilogue.html (rev 0) +++ personal-site/trunk/src/dark-epilogue.html 2008-01-03 03:11:05 UTC (rev 203) @@ -0,0 +1,2 @@ + </div> +</div> Added: personal-site/trunk/src/dark-prologue.html =================================================================== --- personal-site/trunk/src/dark-prologue.html (rev 0) +++ personal-site/trunk/src/dark-prologue.html 2008-01-03 03:11:05 UTC (rev 203) @@ -0,0 +1,9 @@ +<div class="main"> + <div class="title"><h1>yang zhang</h1></div> + <div class="menu"> + <a href="#about"><span>about</span></a> + <a href="#contact"><span>contact</span></a> + <a href="#projects"><span>projects</span></a> + <a href="#classes"><span>classes</span></a> + </div> + <div class="content"> Copied: personal-site/trunk/src/header.html (from rev 201, personal-site/trunk/header.html) =================================================================== --- personal-site/trunk/src/header.html (rev 0) +++ personal-site/trunk/src/header.html 2008-01-03 03:11:05 UTC (rev 203) @@ -0,0 +1,47 @@ + <meta name="no-email-collection" content="http://www.unspam.com/noemailcollection" /> + <meta name="verify-v1" content="d8peXpEYa9lz6TBtLim5WB9X0DP40G5qmNZENCT3rGA=" /> + <meta name="verify-v1" content="xcIyp637+f42aznWePbI2c0qUCVoqQhIDIoKCsQV9fM=" /> + <style> + .footer { + font-size: smaller + } + </style> + <script type="text/javascript"> + // <![CDATA[ + function link( prot, name, domain ) { + addr = name; + if ( domain ) { + addr += '@' + domain; + } + if ( prot != null ) { + html = '<a href="' + prot + escape( addr ) + '">' + addr + '</a>'; + } else { + html = addr; + } + return html; + } + var ul = document.createElement( 'ul' ); + function item( label, arg1, arg2, arg3 ) { + if ( arg3 ) { + html = label + ': ' + link( arg1, arg3, arg2 ); + } else if ( arg2 ) { + html = label + ': ' + link( arg1, arg2 ); + } else { + html = label + ': ' + arg1; + } + var li = document.createElement( 'li' ); + li.innerHTML = html; + ul.appendChild( li ); + } + function writeItems() { + document.getElementById( 'items' ).appendChild( ul ); + } + function hideSpamLink() { + document.getElementById( 'spamlink' ).style.visibility = 'hidden'; + } + function body_onload() { + writeItems(); + hideSpamLink(); + } + // ]]> + </script> Copied: personal-site/trunk/src/index.txt (from rev 201, personal-site/trunk/index.txt) =================================================================== --- personal-site/trunk/src/index.txt (rev 0) +++ personal-site/trunk/src/index.txt 2008-01-03 03:11:05 UTC (rev 203) @@ -0,0 +1,114 @@ +% Yang Zhang +% Yang Zhang + + + +<a name="about"/> +About me +-------- + +I'm a grad student who wishes he had more time for his personal website. I +work with Prof. [Sam Madden] in [CSAIL] at [MIT]. I graduated from [UC +Berkeley] in 2005 with a BS in Electrical Engineering and Computer Science. + +[Sam Madden]: http://db.csail.mit.edu/madden/ +[CSAIL]: http://www.csail.mit.edu/ +[MIT]: http://mit.edu/ +[UC Berkeley]: http://berkeley.edu/ + +<a name="contact"/> +Contact information +------------------- + +<div> + <noscript> + <p> + <em> + Contact info obfuscated using JavaScript. Please enable JavaScript for correct rendering. + </em> + </p> + </noscript> + <div id="items"></div> + <script type="text/javascript"> + // <![CDATA[ + document.write( '<ul>' ); + item( 'Email', 'mailto:', 'mit.edu', 'y_z' ); + item( 'AIM', 'aim:goim?screenname=', 'sorta lame' ); + item( 'MSN', null, 'hotmail.com', 'noneofthegoodnameswereleft' ); + item( 'Yahoo', 'ymsgr:sendIM?', 'overbored' ); + item( 'Jabber (Google)', 'xmpp:', 'gmail.com', 'yaaang' ); + item( 'Skype', 'callto://', 'yaaang' ); + item( 'FreeNode', 'irc://irc.freenode.org/', 'zeeeee' ); // TODO fix + item( 'Office', '<a href="http://whereis.mit.edu/map-jpg?selection=32&Buildings=go">32</a>-<a href="http://www.csail.mit.edu/resources/maps/9G/G920.gif">G920</a>, <a href="callto://+1-617-253-0969">(617) 253-0969</a>' ); + item( 'GPG public key', '<a href="yang.gpg.asc">yang.gpg.asc</a> (<a href="http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xB1E65B60">MIT PKS entry</a>)' ); + document.write( '</ul>' ); + // ]]> + </script> +</div> + +<a name="projects"/> +Publicly released projects +-------------------------- + +Here are the publicly released software projects in which I've been involved. +More details when I have time! + +- MIT + <!-- - JOSMP: an exokernel for multi-core x86 systems --> + - [Collaborative Filtering for the NetFlix + Prize](http://code.google.com/p/netflix6867/): explored low-rank matrix + factorization and MLE of a flexible mixture model using EM + - [Intermittently Connected Embedded + Database](http://cartel.csail.mit.edu/icedb/) (ICEDB): system for data + management and adaptive data collection in mobile sensor networks + - One-hop shortest paths routing for [Resilient Overlay + Networks](http://nms.lcs.mit.edu/projects/ron/) (RON) + - Guarded Atomic Actions for Haskell +- Berkeley + - Data Triage in [TelegraphCQ](http://telegraph.cs.berkeley.edu/): stream query + processing + - [Technology and Infrastructure for Emerging + Regions](http://tier.cs.berkeley.edu/) (TIER) + - [Recovery-Oriented Computing](http://roc.cs.berkeley.edu/) (ROC) + - [802.15.4 Simulation in TinyOS](http://tinyos.net/) +- Other + - ZDB: a personal data management system + - [Microsoft + Search](http://www.microsoft.com/windows/products/winfamily/desktopsearch/) + and [Microsoft SharePoint Portal + Server](http://www.microsoft.com/sharepoint/) + - [Yi](http://haskell.org/haskellwiki/Yi): text editor written in Haskell + - [Simple Publications Manager](http://pubmgr.sf.net/): publication + management web application + - [Assorted Projects](http://assorted.sf.net/): my code dump + +<a name="classes"/> +MIT classes +----------- + +- 6.829 Computer Networks (fall 2005) +- 6.864 Advanced Natural Language Processing (fall 2005) +- 6.431 Probabilistic Systems Analysis (spring 2006) +- 6.875 Cryptography and Cryptanalysis (spring 2006) +- 6.827 Implicit Parallel Programming (fall 2006) +- 6.033 Computer Systems Engineering (TA, spring 2007) +- 6.867 Machine Learning (fall 2007) + +<div class="footer"> + <p>Styles: <a href="plain.html">Plain</a> | <a href="dark.html">Dark</a></p> + <p>Valid XHTML 1.0 (<a href="http://validator.w3.org/check/referer">re-validate</a>)</p> + <p>Valid CSS (<a href="http://jigsaw.w3.org/css-validator/check/referer">re-validate</a>)</p> +</div> + +<!-- +Links +----- + +- [Pawan Deshpande] + +[Pawan Deshpande]: http://people.csail.mit.edu/pawand/ +--> + +<!-- +vim:ft=mkd:et:sw=2:ts=2:nocin +--> Copied: personal-site/trunk/src/plain-epilogue.html (from rev 201, personal-site/trunk/footer.html) =================================================================== --- personal-site/trunk/src/plain-epilogue.html (rev 0) +++ personal-site/trunk/src/plain-epilogue.html 2008-01-03 03:11:05 UTC (rev 203) @@ -0,0 +1,45 @@ + <!-- Google Analytics --> + <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> + </script> + <script type="text/javascript"> + _uacct = "UA-1322324-1"; + urchinTracker(); + </script> + + <!-- Performance Metrics --> + <script src="http://pmetrics.performancing.com/102.js" type="text/javascript"></script> + <noscript><p><img alt="Performancing Metrics" src="http://pmetrics.performancing.com/102ns.gif" /></p></noscript> + + <!-- Extreme Tracking --> + <div id="eXTReMe"><a href="http://extremetracking.com/open?login=yzzororg"> + <img src="http://t1.extreme-dm.com/i.gif" style="border: 0;" id="extremeimg" + height="38" width="41" id="EXim" alt="eXTReMe Tracker" /></a> + <script type="text/javascript"><!-- + var EXlogin='yzzororg' // Login + var EXvsrv='s9' // VServer + EXs=screen;EXw=EXs.width;navigator.appName!="Netscape"? + EXb=EXs.colorDepth:EXb=EXs.pixelDepth; + navigator.javaEnabled()==1?EXjv="y":EXjv="n"; + EXd=document;EXw?"":EXw="na";EXb?"":EXb="na"; + EXd.write("<img src=http://e0.extreme-dm.com", + "/"+EXvsrv+".g?login="+EXlogin+"&", + "jv="+EXjv+"&j=y&srw="+EXw+"&srb="+EXb+"&", + "l="+escape(EXd.referrer)+" height=1 width=1>");//--> + </script><noscript><div id="neXTReMe"><img height="1" width="1" alt="" + src="http://e0.extreme-dm.com/s9.g?login=yzzororg&j=n&jv=n" /> + </div></noscript></div> + <script> + var img = document.getElementById("extremeimg"); + img.width=1; + img.height=1; + </script> + + <!-- Quantcast --> + <!-- Start Quantcast tag --> + <script type="text/javascript" src="http://edge.quantserve.com/quant.js"></script> + <script type="text/javascript"> + _qacct="p-45nKPbm9DJOeE";quantserve();</script> + <noscript> + <img src="http://pixel.quantserve.com/pixel/p-45nKPbm9DJOeE.gif" style="display: none" height="1" width="1" alt="Quantcast"/></noscript> + <!-- End Quantcast tag --> + Added: personal-site/trunk/static/dark.css =================================================================== --- personal-site/trunk/static/dark.css (rev 0) +++ personal-site/trunk/static/dark.css 2008-01-03 03:11:05 UTC (rev 203) @@ -0,0 +1,140 @@ +/* + * This is loosely based on the 'Blackbox' theme by Viktor Persson + * (http://arcsin.se/). + */ + +/* Standard elements */ +/** { + margin: 0; + padding: 0; +}*/ + +a { + color: skyblue; + text-decoration: none; +} +a:hover { + color: lightcyan; +} +body { + background: black url(img/bg.png) repeat-x fixed left bottom; + color: whitesmoke; + margin: 20px 0; + text-align: center; + font: normal 0.8em sans-serif,Arial; +} +ul { + /* margin: 12px 0; */ + margin-left: -25px; +} +li { + /* list-style: url(img/li.gif); */ + /* margin-left: 18px; */ +} +code { + font: normal 1em "Lucida Sans Unicode",serif; + background: url(img/bgcode.gif); + color: #888; + display: block; + padding: 3px 6px; + white-space: pre; + margin-bottom: 12px; +} + + +/* Misc */ +div.quote { + margin-bottom: 12px; + font: normal 1.1em "Lucida Sans Unicode",serif; + background: url(img/quote.gif) no-repeat; + padding-left: 28px; + color: gray; +} + + +/* Main structure */ +.main { + background: #000; + border: 3px double #EEE; + border-color: #222; /* #141414 #202020 #222 #202020; */ + margin: 20px auto 4px auto; + text-align: left; + width: 600px; +} + +/* Header */ +.title { + float: left; + width: 190px; +} +.title h1 { + color: silver; + font: normal 1.5em sans-serif; + padding-left: 10px; + /* padding: 16px 20px; */ + text-transform: lowercase; +} + + +/* Menu */ +div.menu { + float: right; +} +.menu a { + background: #000; /* url(img/bgmenu.png) repeat-x; */ + /* + border-left: 1px solid #222; + border-right: 1px solid #222; + border-top: 1px solid #222; + */ + color: darkgoldenrod; /* #7799bb; */ + float: left; + padding-top: 4px; + width: 100px; height: 36px; + border-top: 3px solid black; +} +.menu a span { + padding-left: 6px; +} +.menu a:hover { + background-position: left bottom; + color: goldenrod; + border-top: 3px solid goldenrod; +} + + +/* Content */ +.content { + /* border-top: 1px solid darkgoldenrod; */ + background: black; + clear: both; + padding: 8px 10px; +} +.content h1,img { display: none; } +.content h2 { + /* margin: 0 0 4px; */ + text-transform: lowercase; + border-top: 1px solid darkgoldenrod; + font: 1.3em sans-serif; + font-weight: normal; + color: silver; +} +.content h2 a { + color: silver; +} +.content p { + /* margin: 0 0 12px; */ +} + +/* Footer */ +.footer { + padding: 5px; + background: #0A0A0A; + color: #666; +} +.footer p { + padding-top: -10px; + padding-bottom: 0px; +} + +/* vim:noet:sw=4:ts=4 */ Copied: personal-site/trunk/static/me.jpg (from rev 201, personal-site/trunk/me.jpg) =================================================================== (Binary files differ) Copied: personal-site/trunk/static/papers (from rev 201, personal-site/trunk/papers) Added: personal-site/trunk/static/plain.css =================================================================== --- personal-site/trunk/static/plain.css (rev 0) +++ personal-site/trunk/static/plain.css 2008-01-03 03:11:05 UTC (rev 203) @@ -0,0 +1,292 @@ +/* Debug borders */ +p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 { +/* + border: 1px solid red; +*/ +} + +body { + margin:1em 5% 1em 5%; + padding:0; + background-color: white; + color: black; + font-family: Georgia, Verdana, sans-serif; + font-size: medium; + line-height: 1.3em; + color: #333; +} +/*body { + margin: 1em 5% 1em 5%; +}*/ + +a { + color: #0000bb; + text-decoration: underline; +} +/*a:visited { + color: fuchsia; +}*/ + +em { + font-style: italic; +} + +strong { + font-weight: bold; +} + +tt { + color: navy; +} + +h1, h2, h3, h4, h5, h6, h1 a, h2 a { + color: gray; /* #527bbd; */ + font-weight: normal; + font-family: sans-serif; + margin-top: 1.2em; + margin-bottom: 0.5em; + line-height: 1.3; + text-decoration: none; +} + +h1 { + border-bottom: 2px solid silver; +} +h2 { + border-bottom: 2px solid silver; + padding-top: 0.5em; +} + +div.sectionbody { + font-family: serif; + margin-left: 0; +} + +hr { + border: 1px solid silver; +} + +p { + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +pre { + padding: 0; + margin: 0; +} + +span#author { + color: #527bbd; + font-family: sans-serif; + font-weight: bold; + font-size: 1.1em; +} +span#email { +} +span#revision { + font-family: sans-serif; +} + +div#footer { + font-family: sans-serif; + font-size: small; + border-top: 2px solid silver; + padding-top: 0.5em; + margin-top: 4.0em; +} +div#footer-text { + float: left; + padding-bottom: 0.5em; +} +div#footer-badges { + float: right; + padding-bottom: 0.5em; +} + +div#preamble, +div.tableblock, div.imageblock, div.exampleblock, div.verseblock, +div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock, +div.admonitionblock { + margin-right: 10%; + margin-top: 1.5em; + margin-bottom: 1.5em; +} +div.admonitionblock { + margin-top: 2.5em; + margin-bottom: 2.5em; +} + +div.content { /* Block element content. */ + padding: 0; +} + +/* Block element titles. */ +div.title, caption.title { + font-family: sans-serif; + font-weight: bold; + text-align: left; + margin-top: 1.0em; + margin-bottom: 0.5em; +} +div.title + * { + margin-top: 0; +} + +td div.title:first-child { + margin-top: 0.0em; +} +div.content div.title:first-child { + margin-top: 0.0em; +} +div.content + div.title { + margin-top: 0.0em; +} + +div.sidebarblock > div.content { + background: #ffffee; + border: 1px solid silver; + padding: 0.5em; +} + +div.listingblock { + margin-right: 0%; +} +div.listingblock > div.content { + border: 1px solid silver; + background: #f4f4f4; + padding: 0.5em; +} + +div.quoteblock > div.content { + padding-left: 2.0em; +} + +div.attribution { + text-align: right; +} +div.verseblock + div.attribution { + text-align: left; +} + +div.admonitionblock .icon { + vertical-align: top; + font-size: 1.1em; + font-weight: bold; + text-decoration: underline; + color: #527bbd; + padding-right: 0.5em; +} +div.admonitionblock td.content { + padding-left: 0.5em; + border-left: 2px solid silver; +} + +div.exampleblock > div.content { + border-left: 2px solid silver; + padding: 0.5em; +} + +div.verseblock div.content { + white-space: pre; +} + +div.imageblock div.content { padding-left: 0; } +div.imageblock img { border: 1px solid silver; } +span.image img { border-style: none; } + +dl { + margin-top: 0.8em; + margin-bottom: 0.8em; +} +dt { + margin-top: 0.5em; + margin-bottom: 0; + font-style: italic; +} +dd > *:first-child { + margin-top: 0; +} + +ul, ol { + list-style-position: outside; +} +ol.olist2 { + list-style-type: lower-alpha; +} + +div.tableblock > table { + border: 3px solid #527bbd; +} +thead { + font-family: sans-serif; + font-weight: bold; +} +tfoot { + font-weight: bold; +} + +div.hlist { + margin-top: 0.8em; + margin-bottom: 0.8em; +} +td.hlist1 { + vertical-align: top; + font-style: italic; + padding-right: 0.8em; +} +td.hlist2 { + vertical-align: top; +} + +@media print { + div#footer-badges { display: none; } +} + +div#toctitle { + color: #527bbd; + font-family: sans-serif; + font-size: 1.1em; + font-weight: bold; + margin-top: 1.0em; + margin-bottom: 0.1em; +} + +div.toclevel1, div.toclevel2 { + margin-top: 0; + margin-bottom: 0; +} +div.toclevel2 { + margin-left: 2em; +} +/* Workarounds for IE6's broken and incomplete CSS2. */ + +div.sidebar-content { + background: #ffffee; + border: 1px solid silver; + padding: 0.5em; +} +div.sidebar-title, div.image-title { + font-family: sans-serif; + font-weight: bold; + margin-top: 0.0em; + margin-bottom: 0.5em; +} + +div.listingblock div.content { + border: 1px solid silver; + background: #f4f4f4; + padding: 0.5em; +} + +div.quoteblock-content { + padding-left: 2.0em; +} + +div.exampleblock-content { + border-left: 2px solid silver; + padding-left: 0.5em; +} + +/* IE6 sets dynamically generated links as visited. */ +div#toc a:visited { color: blue; } Copied: personal-site/trunk/static/yang.gpg.asc (from rev 194, personal-site/trunk/yang.gpg.asc) =================================================================== --- personal-site/trunk/static/yang.gpg.asc (rev 0) +++ personal-site/trunk/static/yang.gpg.asc 2008-01-03 03:11:05 UTC (rev 203) @@ -0,0 +1,29 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.5 (GNU/Linux) + +mQGiBEOZ3ucRBADL2s3qQuY1/BVAbJZWCeEM+3DSTa3GSJLmH9cVJTWs5ujV4kb2 +BmeTheaG8ZeFamJjKJaaUUoLw+A5Ek1bxyHgtMeS2rTeD8NYNpRSOakFojARkEQD +UK/AHpfbEo9Va25kAD33WeEyh6K9WSlsWvR5a5BY2tmFDtH/qYP9Y/yV1wCgkfpV +UCkki6l5vlobYzuCqn0wvmcD/j4BDjahXwA8kptTmq89v9V2Hu8giXWo++gcTf6B +VjYA1lDpNrb1s3NBZQYPLdf4g2sQJe5f9jbSd8Zp7+2BgUHxS0KuWF+HRQgHRAvV +8FXmFNZACBPajkbfFfcTpr6/hrv6+GBFxI8Ima+H3ujT0gmaIaGUcdF2C+mbWnMo +/yjjBACdNMxSiGiNuHfGovjFuYw0TDc4F+x3QdMTKLJvEtjZPUCM+KjFqNn2qLlg +3h/DNwwdZTOzA0ov4hJl2FyklRllHHlah9xLzTGTyb+y0Hoj18P7BqRfHgrXyJRO +9HBKpDCwh94+U04CL17erY/uSxxOn29vCP0O6pStIaXj+dw9KbQdWWFuZyBaaGFu +ZyA8eWFhYW5nQGdtYWlsLmNvbT6IXgQTEQIAHgUCQ5ne5wIbAwYLCQgHAwIDFQID +AxYCAQIeAQIXgAAKCRCqlejqseZbYKt0AJ49uQOyjC4BjSRmcQrdM301lGEQSgCe +LHvMnMqAs3zXZbC3Cmg+uObMFwy5Ag0EQ5ne+BAIAM+W1DkYOH541ml7TaGFfbZm +oCWQs9kzuzpotdM8SJXRKov2HuERsUk/mk/Y4awI8i/zLaYwNzDCaxbK9VtWXVgB +RTqBCSH2OMEF2gj8oIgDuVHx4RbBda9VAV//0mGAXTXRg7t5heSu+YyEzlcVqGPV +alpDrYQ+fYlrrEX2T2uWJVgIjZ6PI4coOpGlPYC2zy1LpDwGrfLjmEmkd/SLc8Z6 +f0PFnBWw6QnqhZZOWkqzM4vJGlIkzryCXxTTpI11wZAOouGUnFyDSzcu9/mZvVpu +2HStln1TiwyDsNU+XZDY58fsTM4sGd9Z9KGikYC2h8ixxH437YC7CkMCML3/lu8A +AwUH/23iTvUlFBMO5kPAmkJGywt15GTFONqyolT5UMntr4Kemnt90TisYAOcoX2A +xQolgCPznQCfteQ1QmEhKi5X7HZDM0Y51sNeGQ6KS5gHVg5fYRMo/5bOUKCARSi2 +da/GHMP0PAM3fxutim8QLPwE7xUNMua3uH2I3FKpH8fKgm+nT7bcJ1CqmXFHlCnX +UACx+QfueIRmpe5TWScjsI4R/MFX4jHwx6O/9XKQsd1gZhiXJWzYO5MOt/S0zoZ7 +Lycb5Lm4swRnHCDQqkC4rQtXnKoiY9vAZpLqdGSUYcEeoQxU66n+jlvkikgSb+Lh +Q/Pq9Ew2QDew/slWMHdXtlaHMHOISQQYEQIACQUCQ5ne+AIbDAAKCRCqlejqseZb +YEgbAKCNhvPAuN3mj0U7W7ySjAgsUVSn8wCeN2mvvfQIMCtrOmils7gA+fpljQo= +=iik0 +-----END PGP PUBLIC KEY BLOCK----- Deleted: personal-site/trunk/yang.gpg.asc =================================================================== --- personal-site/trunk/yang.gpg.asc 2008-01-02 10:08:03 UTC (rev 202) +++ personal-site/trunk/yang.gpg.asc 2008-01-03 03:11:05 UTC (rev 203) @@ -1,29 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1.4.5 (GNU/Linux) - -mQGiBEOZ3ucRBADL2s3qQuY1/BVAbJZWCeEM+3DSTa3GSJLmH9cVJTWs5ujV4kb2 -BmeTheaG8ZeFamJjKJaaUUoLw+A5Ek1bxyHgtMeS2rTeD8NYNpRSOakFojARkEQD -UK/AHpfbEo9Va25kAD33WeEyh6K9WSlsWvR5a5BY2tmFDtH/qYP9Y/yV1wCgkfpV -UCkki6l5vlobYzuCqn0wvmcD/j4BDjahXwA8kptTmq89v9V2Hu8giXWo++gcTf6B -VjYA1lDpNrb1s3NBZQYPLdf4g2sQJe5f9jbSd8Zp7+2BgUHxS0KuWF+HRQgHRAvV -8FXmFNZACBPajkbfFfcTpr6/hrv6+GBFxI8Ima+H3ujT0gmaIaGUcdF2C+mbWnMo -/yjjBACdNMxSiGiNuHfGovjFuYw0TDc4F+x3QdMTKLJvEtjZPUCM+KjFqNn2qLlg -3h/DNwwdZTOzA0ov4hJl2FyklRllHHlah9xLzTGTyb+y0Hoj18P7BqRfHgrXyJRO -9HBKpDCwh94+U04CL17erY/uSxxOn29vCP0O6pStIaXj+dw9KbQdWWFuZyBaaGFu -ZyA8eWFhYW5nQGdtYWlsLmNvbT6IXgQTEQIAHgUCQ5ne5wIbAwYLCQgHAwIDFQID -AxYCAQIeAQIXgAAKCRCqlejqseZbYKt0AJ49uQOyjC4BjSRmcQrdM301lGEQSgCe -LHvMnMqAs3zXZbC3Cmg+uObMFwy5Ag0EQ5ne+BAIAM+W1DkYOH541ml7TaGFfbZm -oCWQs9kzuzpotdM8SJXRKov2HuERsUk/mk/Y4awI8i/zLaYwNzDCaxbK9VtWXVgB -RTqBCSH2OMEF2gj8oIgDuVHx4RbBda9VAV//0mGAXTXRg7t5heSu+YyEzlcVqGPV -alpDrYQ+fYlrrEX2T2uWJVgIjZ6PI4coOpGlPYC2zy1LpDwGrfLjmEmkd/SLc8Z6 -f0PFnBWw6QnqhZZOWkqzM4vJGlIkzryCXxTTpI11wZAOouGUnFyDSzcu9/mZvVpu -2HStln1TiwyDsNU+XZDY58fsTM4sGd9Z9KGikYC2h8ixxH437YC7CkMCML3/lu8A -AwUH/23iTvUlFBMO5kPAmkJGywt15GTFONqyolT5UMntr4Kemnt90TisYAOcoX2A -xQolgCPznQCfteQ1QmEhKi5X7HZDM0Y51sNeGQ6KS5gHVg5fYRMo/5bOUKCARSi2 -da/GHMP0PAM3fxutim8QLPwE7xUNMua3uH2I3FKpH8fKgm+nT7bcJ1CqmXFHlCnX -UACx+QfueIRmpe5TWScjsI4R/MFX4jHwx6O/9XKQsd1gZhiXJWzYO5MOt/S0zoZ7 -Lycb5Lm4swRnHCDQqkC4rQtXnKoiY9vAZpLqdGSUYcEeoQxU66n+jlvkikgSb+Lh -Q/Pq9Ew2QDew/slWMHdXtlaHMHOISQQYEQIACQUCQ5ne+AIbDAAKCRCqlejqseZb -YEgbAKCNhvPAuN3mj0U7W7ySjAgsUVSn8wCeN2mvvfQIMCtrOmils7gA+fpljQo= -=iik0 ------END PGP PUBLIC KEY BLOCK----- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |