﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-jing</title><link>http://www.cnitblog.com/jing/</link><description /><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 10:14:09 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 10:14:09 GMT</pubDate><ttl>60</ttl><item><title>web service concepts</title><link>http://www.cnitblog.com/jing/archive/2007/07/17/29952.html</link><dc:creator>jing</dc:creator><author>jing</author><pubDate>Tue, 17 Jul 2007 01:15:00 GMT</pubDate><guid>http://www.cnitblog.com/jing/archive/2007/07/17/29952.html</guid><wfw:comment>http://www.cnitblog.com/jing/comments/29952.html</wfw:comment><comments>http://www.cnitblog.com/jing/archive/2007/07/17/29952.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/jing/comments/commentRss/29952.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/jing/services/trackbacks/29952.html</trackback:ping><description><![CDATA[<a href="http://java.sun.com/webservices/jaxrpc/index.jsp">JAX-RPC</a>
is the Java API for XML-based Remote Procedural Calls. You might
recognize the acronym RPC right away -- it's been around for years. A
Remote Procedural Call (RPC) occurs when a component on one system
passes a message to a component on a remote system, over the network.
This long-distance communication technique lies very near the heart of
the Enterprise JavaBeans (EJB), Java Management eXtensions (JMX), and
Java Remote Method Invocation (RMI) APIs.
<br><img src ="http://www.cnitblog.com/jing/aggbug/29952.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/jing/" target="_blank">jing</a> 2007-07-17 09:15 <a href="http://www.cnitblog.com/jing/archive/2007/07/17/29952.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript Escape Character</title><link>http://www.cnitblog.com/jing/archive/2007/06/13/28403.html</link><dc:creator>jing</dc:creator><author>jing</author><pubDate>Wed, 13 Jun 2007 07:29:00 GMT</pubDate><guid>http://www.cnitblog.com/jing/archive/2007/06/13/28403.html</guid><wfw:comment>http://www.cnitblog.com/jing/comments/28403.html</wfw:comment><comments>http://www.cnitblog.com/jing/archive/2007/06/13/28403.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/jing/comments/commentRss/28403.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/jing/services/trackbacks/28403.html</trackback:ping><description><![CDATA[<table border="1" cellspacing="0" width="460">
    <tbody>
        <tr>
            <td><tt>\b</tt></td>
            <td>Backspace</td>
        </tr>
        <tr>
            <td><tt>\f</tt></td>
            <td>Form feed</td>
        </tr>
        <tr>
            <td><tt>\n</tt></td>
            <td>New line</td>
        </tr>
        <tr>
            <td><tt>\r</tt></td>
            <td>Carriage return</td>
        </tr>
        <tr>
            <td><tt>\t</tt></td>
            <td>Tab</td>
        </tr>
        <tr>
            <td><tt>\'</tt></td>
            <td>Single quote or apostrophe (')</td>
        </tr>
        <tr>
            <td><tt>\"</tt></td>
            <td>Double quote (")</td>
        </tr>
        <tr>
            <td><tt>\\</tt></td>
            <td>Backslash (\)</td>
        </tr>
        <tr>
            <td valign="top">
            <tt>\<em>XXX</em></tt></td>
            <td><tt><em>XXX</em></tt> is an octal number (between 0 and 377) that represent
            the Latin-1 character equivalent.  For example
            <tt>\251</tt> is the octal code for the
            copyright symbol.</td>
        </tr>
        <tr>
            <td valign="top">
            <tt>\x<em>XX</em></tt></td>
            <td><tt><em>XX</em></tt> is a hexadecimal number (between 00 and FF) that represent
            the Latin-1 character equivalent.  For example
            <tt>\xA9</tt> is the hexadecimal code for the
            copyright symbol.</td>
        </tr>
        <tr>
            <td valign="top">
            <tt>\u<em>XXXX</em></tt></td>
            <td><tt><em>XXXX</em></tt> is a hexadecimal number (between 00 and FF) that represent
            the Unicode character equivalent.  For example
            <tt>\u00A9</tt> is the hexadecimal code for the
            copyright symbol. <br><font size="1">(<font color="red">Note:</font> Unicode is only supported by JavaScript 1.3)</font></td>
        </tr>
    </tbody>
</table>
<p>
<font face="arial">The string
<tt>"\tTom said \"Hello to everyone!\"\nSo did Mary."</tt> would print:
</font></p>
<ul><font face="arial">
    <tt>
    &nbsp; &nbsp; &nbsp; Tom said "Hello to everyone!"<br>
    So did Mary.
    </tt></font></ul>
    <br><img src ="http://www.cnitblog.com/jing/aggbug/28403.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/jing/" target="_blank">jing</a> 2007-06-13 15:29 <a href="http://www.cnitblog.com/jing/archive/2007/06/13/28403.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DOM appendChild doesn't work for mutiple append?</title><link>http://www.cnitblog.com/jing/archive/2007/06/01/27884.html</link><dc:creator>jing</dc:creator><author>jing</author><pubDate>Thu, 31 May 2007 18:14:00 GMT</pubDate><guid>http://www.cnitblog.com/jing/archive/2007/06/01/27884.html</guid><wfw:comment>http://www.cnitblog.com/jing/comments/27884.html</wfw:comment><comments>http://www.cnitblog.com/jing/archive/2007/06/01/27884.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/jing/comments/commentRss/27884.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/jing/services/trackbacks/27884.html</trackback:ping><description><![CDATA[I do like<br>var oj = document.createTextNode("append list") <br>&nbsp;&nbsp; &nbsp; var newN2 = document.createElement("li")<br>&nbsp;&nbsp; &nbsp; var theBR = document.createElement("br");<br>&nbsp;&nbsp; &nbsp;&nbsp; var newN3 = document.createElement("li")<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; var newN4 = document.createElement("li")<br>&nbsp;&nbsp; &nbsp;y = x.appendChild(newN2)<br>&nbsp;&nbsp; &nbsp;x.appendChild(theBR)<br>&nbsp;&nbsp; &nbsp;x.appendChild(oj)<br>&nbsp;&nbsp; &nbsp;x.appendChild(theBR)<br>&nbsp;&nbsp; &nbsp;x.appendChild(oj)<br>&nbsp;&nbsp; &nbsp;y.appendChild(oj)
<br>-------------only shows<br><br><br><img src ="http://www.cnitblog.com/jing/aggbug/27884.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/jing/" target="_blank">jing</a> 2007-06-01 02:14 <a href="http://www.cnitblog.com/jing/archive/2007/06/01/27884.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Use regular expressions to validate/format a string</title><link>http://www.cnitblog.com/jing/archive/2007/05/30/27758.html</link><dc:creator>jing</dc:creator><author>jing</author><pubDate>Tue, 29 May 2007 22:54:00 GMT</pubDate><guid>http://www.cnitblog.com/jing/archive/2007/05/30/27758.html</guid><wfw:comment>http://www.cnitblog.com/jing/comments/27758.html</wfw:comment><comments>http://www.cnitblog.com/jing/archive/2007/05/30/27758.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/jing/comments/commentRss/27758.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/jing/services/trackbacks/27758.html</trackback:ping><description><![CDATA[<h4>Use regular expressions to validate/format a string</h4>
This is an impressive collection (that I found somehere on the Net) of various
functions to validate or format string in Javascript. The code is very compact.
<p>
</p>
<div class="howtocode">
<pre>/****************************************************************<br>FILE: RegExpValidate.js<br><br>DESCRIPTION: This file contains a library of validation functions<br>  using javascript regular expressions.  Library also contains <br>  functions that reformat fields for display or for storage.<br><br><br>  VALIDATION FUNCTIONS:<br><br>  validateEmail - checks format of email address<br>    validateUSPhone - checks format of US phone number<br>    validateNumeric - checks for valid numeric value<br>  validateInteger - checks for valid integer value<br>    validateNotEmpty - checks for blank form field<br>  validateUSZip - checks for valid US zip code<br>  validateUSDate - checks for valid date in US format<br>  validateValue - checks a string against supplied pattern<br><br>  FORMAT FUNCTIONS:<br><br>  rightTrim - removes trailing spaces from a string<br>  leftTrim - removes leading spaces from a string<br>  trimAll - removes leading and trailing spaces from a string<br>  removeCurrency - removes currency formatting characters (), $<br>  addCurrency - inserts currency formatting characters<br>  removeCommas - removes comma separators from a number<br>  addCommas - adds comma separators to a number<br>  removeCharacters - removes characters from a string that match <br>  passed pattern<br><br><br>AUTHOR: Karen Gayda<br><br>DATE: 03/24/2000<br>*******************************************************************/<br><br>function validateEmail( strValue) {<br>/************************************************<br>DESCRIPTION: Validates that a string contains a<br>  valid email pattern.<br><br> PARAMETERS:<br>   strValue - String to be tested for validity<br><br>RETURNS:<br>   True if valid, otherwise false.<br><br>REMARKS: Accounts for email with country appended<br>  does not validate that email contains valid URL<br>  type (.com, .gov, etc.) or valid country suffix.<br>*************************************************/<br>var objRegExp  =<br> /(^[a-z]([a-z_\.]*)@([a-z_\.]*)([.][a-z]{3})$)|(^[a-z]([a-z_\.]*)@<br>  ([a-z_\.]*)(\.[a-z]{3})(\.[a-z]{2})*$)/i;<br><br>  //check for valid email<br>  return objRegExp.test(strValue);<br>}<br><br>function validateUSPhone( strValue ) {<br>/************************************************<br>DESCRIPTION: Validates that a string contains valid<br>  US phone pattern.<br>  Ex. (999) 999-9999 or (999)999-9999<br><br>PARAMETERS:<br>   strValue - String to be tested for validity<br><br>RETURNS:<br>   True if valid, otherwise false.<br>*************************************************/<br>  var objRegExp  = /^\([1-9]\d{2}\)\s?\d{3}\-\d{4}$/;<br><br>  //check for valid us phone with or without space between<br>  //area code<br>  return objRegExp.test(strValue);<br>}<br><br>function  validateNumeric( strValue ) {<br>/*****************************************************************<br>DESCRIPTION: Validates that a string contains only valid numbers.<br><br>PARAMETERS:<br>   strValue - String to be tested for validity<br><br>RETURNS:<br>   True if valid, otherwise false.<br>******************************************************************/<br>  var objRegExp  =  /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;<br><br>  //check for numeric characters<br>  return objRegExp.test(strValue);<br>}<br><br>function validateInteger( strValue ) {<br>/************************************************<br>DESCRIPTION: Validates that a string contains only<br>    valid integer number.<br><br>PARAMETERS:<br>   strValue - String to be tested for validity<br><br>RETURNS:<br>   True if valid, otherwise false.<br>**************************************************/<br>  var objRegExp  = /(^-?\d\d*$)/;<br><br>  //check for integer characters<br>  return objRegExp.test(strValue);<br>}<br><br>function validateNotEmpty( strValue ) {<br>/************************************************<br>DESCRIPTION: Validates that a string is not all<br>  blank (whitespace) characters.<br><br>PARAMETERS:<br>   strValue - String to be tested for validity<br><br>RETURNS:<br>   True if valid, otherwise false.<br>*************************************************/<br>   var strTemp = strValue;<br>   strTemp = trimAll(strTemp);<br>   if(strTemp.length &gt; 0){<br>     return true;<br>   }<br>   return false;<br>}<br><br>function validateUSZip( strValue ) {<br>/************************************************<br>DESCRIPTION: Validates that a string a United<br>  States zip code in 5 digit format or zip+4<br>  format. 99999 or 99999-9999<br><br>PARAMETERS:<br>   strValue - String to be tested for validity<br><br>RETURNS:<br>   True if valid, otherwise false.<br><br>*************************************************/<br>var objRegExp  = /(^\d{5}$)|(^\d{5}-\d{4}$)/;<br><br>  //check for valid US Zipcode<br>  return objRegExp.test(strValue);<br>}<br><br>function validateUSDate( strValue ) {<br>/************************************************<br>DESCRIPTION: Validates that a string contains only<br>    valid dates with 2 digit month, 2 digit day,<br>    4 digit year. Date separator can be ., -, or /.<br>    Uses combination of regular expressions and<br>    string parsing to validate date.<br>    Ex. mm/dd/yyyy or mm-dd-yyyy or mm.dd.yyyy<br><br>PARAMETERS:<br>   strValue - String to be tested for validity<br><br>RETURNS:<br>   True if valid, otherwise false.<br><br>REMARKS:<br>   Avoids some of the limitations of the Date.parse()<br>   method such as the date separator character.<br>*************************************************/<br>  var objRegExp = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/<br> <br>  //check to see if in correct format<br>  if(!objRegExp.test(strValue))<br>    return false; //doesn't match pattern, bad date<br>  else{<br>    var strSeparator = strValue.substring(2,3) <br>    var arrayDate = strValue.split(strSeparator); <br>    //create a lookup for months not equal to Feb.<br>    var arrayLookup = { '01' : 31,'03' : 31, <br>                        '04' : 30,'05' : 31,<br>                        '06' : 30,'07' : 31,<br>                        '08' : 31,'09' : 30,<br>                        '10' : 31,'11' : 30,'12' : 31}<br>    var intDay = parseInt(arrayDate[1],10); <br><br>    //check if month value and day value agree<br>    if(arrayLookup[arrayDate[0]] != null) {<br>      if(intDay &lt;= arrayLookup[arrayDate[0]] &amp;&amp; intDay != 0)<br>        return true; //found in lookup table, good date<br>    }<br>    <br>    //check for February (bugfix 20050322)<br>    //bugfix  for parseInt kevin<br>    //bugfix  biss year  O.Jp Voutat<br>    var intMonth = parseInt(arrayDate[0],10);<br>    if (intMonth == 2) { <br>       var intYear = parseInt(arrayDate[2]);<br>       if (intDay &gt; 0 &amp;&amp; intDay &lt; 29) {<br>           return true;<br>       }<br>       else if (intDay == 29) {<br>         if ((intYear % 4 == 0) &amp;&amp; (intYear % 100 != 0) || <br>             (intYear % 400 == 0)) {<br>              // year div by 4 and ((not div by 100) or div by 400) -&gt;ok<br>             return true;<br>         }   <br>       }<br>    }<br>  }  <br>  return false; //any other values, bad date<br>}<br><br>function validateValue( strValue, strMatchPattern ) {<br>/************************************************<br>DESCRIPTION: Validates that a string a matches<br>  a valid regular expression value.<br><br>PARAMETERS:<br>   strValue - String to be tested for validity<br>   strMatchPattern - String containing a valid<br>      regular expression match pattern.<br><br>RETURNS:<br>   True if valid, otherwise false.<br>*************************************************/<br>var objRegExp = new RegExp( strMatchPattern);<br><br> //check if string matches pattern<br> return objRegExp.test(strValue);<br>}<br><br><br>function rightTrim( strValue ) {<br>/************************************************<br>DESCRIPTION: Trims trailing whitespace chars.<br><br>PARAMETERS:<br>   strValue - String to be trimmed.<br><br>RETURNS:<br>   Source string with right whitespaces removed.<br>*************************************************/<br>var objRegExp = /^([\w\W]*)(\b\s*)$/;<br><br>      if(objRegExp.test(strValue)) {<br>       //remove trailing a whitespace characters<br>       strValue = strValue.replace(objRegExp, '$1');<br>    }<br>  return strValue;<br>}<br><br>function leftTrim( strValue ) {<br>/************************************************<br>DESCRIPTION: Trims leading whitespace chars.<br><br>PARAMETERS:<br>   strValue - String to be trimmed<br><br>RETURNS:<br>   Source string with left whitespaces removed.<br>*************************************************/<br>var objRegExp = /^(\s*)(\b[\w\W]*)$/;<br><br>      if(objRegExp.test(strValue)) {<br>       //remove leading a whitespace characters<br>       strValue = strValue.replace(objRegExp, '$2');<br>    }<br>  return strValue;<br>}<br><br>function trimAll( strValue ) {<br>/************************************************<br>DESCRIPTION: Removes leading and trailing spaces.<br><br>PARAMETERS: Source string from which spaces will<br>  be removed;<br><br>RETURNS: Source string with whitespaces removed.<br>*************************************************/<br> var objRegExp = /^(\s*)$/;<br><br>    //check for all spaces<br>    if(objRegExp.test(strValue)) {<br>       strValue = strValue.replace(objRegExp, '');<br>       if( strValue.length == 0)<br>          return strValue;<br>    }<br><br>   //check for leading &amp; trailing spaces<br>   objRegExp = /^(\s*)([\W\w]*)(\b\s*$)/;<br>   if(objRegExp.test(strValue)) {<br>       //remove leading and trailing whitespace characters<br>       strValue = strValue.replace(objRegExp, '$2');<br>    }<br>  return strValue;<br>}<br><br>function removeCurrency( strValue ) {<br>/************************************************<br>DESCRIPTION: Removes currency formatting from<br>  source string.<br><br>PARAMETERS:<br>  strValue - Source string from which currency formatting<br>     will be removed;<br><br>RETURNS: Source string with commas removed.<br>*************************************************/<br>  var objRegExp = /\(/;<br>  var strMinus = '';<br><br>  //check if negative<br>  if(objRegExp.test(strValue)){<br>    strMinus = '-';<br>  }<br><br>  objRegExp = /\)|\(|[,]/g;<br>  strValue = strValue.replace(objRegExp,'');<br>  if(strValue.indexOf('$') &gt;= 0){<br>    strValue = strValue.substring(1, strValue.length);<br>  }<br>  return strMinus + strValue;<br>}<br><br>function addCurrency( strValue ) {<br>/************************************************<br>DESCRIPTION: Formats a number as currency.<br><br>PARAMETERS:<br>  strValue - Source string to be formatted<br><br>REMARKS: Assumes number passed is a valid<br>  numeric value in the rounded to 2 decimal<br>  places.  If not, returns original value.<br>*************************************************/<br>  var objRegExp = /-?[0-9]+\.[0-9]{2}$/;<br><br>    if( objRegExp.test(strValue)) {<br>      objRegExp.compile('^-');<br>      strValue = addCommas(strValue);<br>      if (objRegExp.test(strValue)){<br>        strValue = '(' + strValue.replace(objRegExp,'') + ')';<br>      }<br>      return '$' + strValue;<br>    }<br>    else<br>      return strValue;<br>}<br><br>function removeCommas( strValue ) {<br>/************************************************<br>DESCRIPTION: Removes commas from source string.<br><br>PARAMETERS:<br>  strValue - Source string from which commas will<br>    be removed;<br><br>RETURNS: Source string with commas removed.<br>*************************************************/<br>  var objRegExp = /,/g; //search for commas globally<br><br>  //replace all matches with empty strings<br>  return strValue.replace(objRegExp,'');<br>}<br><br>function addCommas( strValue ) {<br>/************************************************<br>DESCRIPTION: Inserts commas into numeric string.<br><br>PARAMETERS:<br>  strValue - source string containing commas.<br><br>RETURNS: String modified with comma grouping if<br>  source was all numeric, otherwise source is<br>  returned.<br><br>REMARKS: Used with integers or numbers with<br>  2 or less decimal places.<br>*************************************************/<br>  var objRegExp  = new RegExp('(-?[0-9]+)([0-9]{3})');<br><br>    //check for match to search criteria<br>    while(objRegExp.test(strValue)) {<br>       //replace original string with first group match,<br>       //a comma, then second group match<br>       strValue = strValue.replace(objRegExp, '$1,$2');<br>    }<br>  return strValue;<br>}<br><br>function removeCharacters( strValue, strMatchPattern ) {<br>/************************************************<br>DESCRIPTION: Removes characters from a source string<br>  based upon matches of the supplied pattern.<br><br>PARAMETERS:<br>  strValue - source string containing number.<br><br>RETURNS: String modified with characters<br>  matching search pattern removed<br><br>USAGE:  strNoSpaces = removeCharacters( ' sfdf  dfd',<br>                                '\s*')<br>*************************************************/<br> var objRegExp =  new RegExp( strMatchPattern, 'gi' );<br><br> //replace passed pattern matches with blanks<br>  return strValue.replace(objRegExp,'');<br>}</pre>
</div>
<small>You can try it <a href="http://64.18.163.122/rgagnon/examples/jsregexp.html">here</a>.</small>
<p>If you want to know more about these MSDN pages :<br>
<a href="http://msdn.microsoft.com/scripting/jscript/doc/jsobjregexp.htm" target="_top">RegExp Object</a><br>
<a href="http://msdn.microsoft.com/scripting/jscript/doc/jsgrpregexpsyntax.htm" target="_top">Regular Expression Syntax</a>
</p>
<h1>Common expressions</h1>
<pre><strong> Date</strong> <br>   /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/     mm/dd/yyyy<br>   <br><strong> US zip code</strong> <br>  /(^\d{5}$)|(^\d{5}-\d{4}$)/             99999 or 99999-9999<br>  <br><strong> Canadian postal code</strong> <br>  /^\D{1}\d{1}\D{1}\-?\d{1}\D{1}\d{1}$/   Z5Z-5Z5 orZ5Z5Z5<br>  <br><strong> Time</strong> <br>  /^([1-9]|1[0-2]):[0-5]\d(:[0-5]\d(\.\d{1,3})?)?$/   HH:MM or HH:MM:SS or HH:MM:SS.mmm<br>  <br><strong> IP Address(no check for alid values (0-255))</strong> <br>  /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/ 999.999.999.999<br>  <br><strong> Dollar Amount</strong> <br>  /^((\$\d*)|(\$\d*\.\d{2})|(\d*)|(\d*\.\d{2}))$/ 100, 100.00, $100 or $100.00<br>  <br><strong> Social Security Number</strong> <br>  /^\d{3}\-?\d{2}\-?\d{4}$/   999-99-9999 or999999999<br>  <br><strong> Canadian Social Insurance Number</strong> <br>  /^\d{9}$/ 999999999</pre>
<br><img src ="http://www.cnitblog.com/jing/aggbug/27758.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/jing/" target="_blank">jing</a> 2007-05-30 06:54 <a href="http://www.cnitblog.com/jing/archive/2007/05/30/27758.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dvd Rip 字幕使用</title><link>http://www.cnitblog.com/jing/archive/2007/04/28/26316.html</link><dc:creator>jing</dc:creator><author>jing</author><pubDate>Sat, 28 Apr 2007 00:24:00 GMT</pubDate><guid>http://www.cnitblog.com/jing/archive/2007/04/28/26316.html</guid><wfw:comment>http://www.cnitblog.com/jing/comments/26316.html</wfw:comment><comments>http://www.cnitblog.com/jing/archive/2007/04/28/26316.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/jing/comments/commentRss/26316.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/jing/services/trackbacks/26316.html</trackback:ping><description><![CDATA[<p>完成下载相应的字幕文件之后，需要把下载的字幕文件和电影文件放到同一个目录下面。然后需要把字幕文件和电影文件改成同一文件名称，这其中不包括文
件的扩展名。例如下载某电影为abc.avi，相应的字幕文件为abc.srt(或者abc.idx和abc.sub)。</p>
<p>有时下载的字幕与电影在时间上有偏差！或者字幕分为两集！电影分成三集！前者还好办一些！只要调整播放软件设置中字幕的同步时间就可以！其他一些可以调整字幕时间的软件！如Kmplayer !也可以用软件直接编辑字幕！vobsub</p>
后者比较麻烦！则需要字幕编辑软件来完成！例如vobsub。这个软件就是一款字幕编辑软件！可以分割和合并字幕！！<img src ="http://www.cnitblog.com/jing/aggbug/26316.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/jing/" target="_blank">jing</a> 2007-04-28 08:24 <a href="http://www.cnitblog.com/jing/archive/2007/04/28/26316.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转载 google acquisitions</title><link>http://www.cnitblog.com/jing/archive/2007/04/16/25754.html</link><dc:creator>jing</dc:creator><author>jing</author><pubDate>Sun, 15 Apr 2007 17:57:00 GMT</pubDate><guid>http://www.cnitblog.com/jing/archive/2007/04/16/25754.html</guid><wfw:comment>http://www.cnitblog.com/jing/comments/25754.html</wfw:comment><comments>http://www.cnitblog.com/jing/archive/2007/04/16/25754.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/jing/comments/commentRss/25754.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/jing/services/trackbacks/25754.html</trackback:ping><description><![CDATA[<span id="BlogViewId" be:sortmode="Normal" be:sortkey="" be:firsthandle="cns!722111D9ED7FA0BE!433" be:lasthandle="cns!722111D9ED7FA0BE!394">
<h4 style="margin-bottom: 0px;" class="TextColor1" id="subjcns!722111D9ED7FA0BE!433">转载 google acquisitions</h4>
<div id="msgcns!722111D9ED7FA0BE!433">
<p>(中文链接 http://tech.sina.com.cn/i/2007-04-14/13421465519.shtml )<br></p>
<p>With all of the recent acquisitions by Yahoo! and Google, I decided
to take a closer look at some of the companies that Google has
purchased. I&#8217;m glad I did. I came across a couple of papers I hadn&#8217;t
seen before, and learned a little more about some of Google&#8217;s employees
that I didn&#8217;t know.
</p>
<p><strong>Doubleclick</strong> (Added 4/14/2007)
</p>
<p>Google&#8217;s largest acquisition at this point in terms of cost (for $3.1 billion in cash) was <a  href="http://googleblog.blogspot.com/2007/04/next-step-in-google-advertising.html">announced at the Official Google Blog</a>.
</p>
<p>I&#8217;ve posted about some of the patent filings that Doubleclick has made over the past few years in <a  href="http://www.seobythesea.com/?p=578">Doubleclick + Google: Looking at Some of the Doubleclick Patent Filings</a>.  It&#8217;s going to be interesting to see how Google moves forward with this purchase.
</p>
<p><strong>Gapminder&#8217;s Trendalyzer Software</strong> (Added 3/17/2007)
</p>
<p>An announcement from Google&#8217;s Marissa Mayer on the official Google Blog titled <a  href="http://googleblog.blogspot.com/2007/03/world-in-motion.html">A World in Motion</a>
tells us of the acquisition of some new software by Google, as well as
the hiring of team members who worked for the foundation that developed
the software.
</p>
<p>The software adds a <a  href="http://tools.google.com/gapminder/">visualization element</a> to the presentation of data, &#8221; in the display of facts, figures, and statistics in presentations.&#8221;   According to the <a  href="http://www.gapminder.org/">Gapminder</a> pages:
</p>
<blockquote>
<p>Trendalyzer&#8217;s developers have left Gapminder to join
Google in Mountain View, where Google intends to improve and scale up
Trendalyzer, and make it freely available to those who seek access</p>
</blockquote>
<p><strong>Adscape Media</strong> (Added 2/17/2007)
</p>
<p>This company has been around under the name BiDamic since 2002, and
as Adscape Media since 2006. Details are supposedly still being worked
out, but it&#8217;s sounds like this in-game advertising company has been
purchased by Google. One of the news reports included a quote from a
Adscape employee who stated that they owned 15 patents.
</p>
<p>I found 30 published patent applications, and a granted patent.  Links to those and more details about the company at: <a  href="http://www.seobythesea.com/?p=512">Google Acquires Adscape Media: Interactive Online Gaming Advertisement and Gaming System Developers</a>
</p>
<p>A couple of those patent filings are for full blown, interactive, online gaming systems.
</p>
<p>update - 3/17/2007 -Google publishes a press release on the <a  href="http://www.google.com/press/annc/annc_adscape.html">Adscape Media acquisition</a>
</p>
<p><strong>Jotspot, Inc.</strong> (Added 10/31/2006)
</p>
<p>Founded by Joe Kraus and Graham Spencer, who had worked together at
Excite.com, Jotspot is a wiki with a number of collaborative tools for
business users, and includes applications such as spreadsheets,
calendars, and forms, unlike most wiki software. I&#8217;ve written a longer
post on the acquisition at <a  href="http://www.seobythesea.com/?p=346">Google Acquires Jotspot, Inc. &amp; Wiki Patent Application</a>
</p>
<p>Financial terms of the purchase were not disclosed, but Jotspot had
just had a patent application published at the US Patent and Trademark
Office:
</p>
<p><a  href="http://appft1.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&amp;Sect2=HITOFF&amp;u=/netahtml/PTO/search-adv.html&amp;r=1&amp;p=1&amp;f=G&amp;l=50&amp;d=PG01&amp;S1=20060235984.PGNR.&amp;OS=dn/20060235984&amp;RS=DN/20060235984">Collaborative web page authoring </a>
</p>
<p><strong>YouTube, Inc.</strong> (added 10/9/2006)
</p>
<p>YouTube was founded in February, 2005, and quickly grew to one of
the busiest online destinations on the web. The site is community
driven, and allows people to post and share videos. Viewers can tag
videos, comment upon them, and display them upon their own web sites.
</p>
<p>The <a  href="http://investor.google.com/releases/20061009.html">Google Press Release</a>
issued on October 9, 2006, tells us that the sale price was $1.65
Billion in a stock for stock transaction. There are no planned changes
to the YouTube brand identity. The company will continue to be based in
San Bruno, CA, and all of the YouTube employees will remain with the
company.
</p>
<p>As of this update, there isn&#8217;t a press release on the YouTube site
about the Google acquisition, but there are three releases dated today
about content and distribution deals with <a  href="http://www.youtube.com/press_room_entry?entry=iXG7e1g-BWI">CBS</a> (Strategic Content and Advertising Partnership), <a  href="http://www.youtube.com/press_room_entry?entry=2cwCau7cKsA">Sony BMG Music Entertainment</a> (Content License Agreement ), and <a  href="http://www.youtube.com/press_room_entry?entry=JrYdNx45e-0">Universal Music Group</a> (Strategic Partnership).
</p>
<p><strong>Neven Vision</strong> (added 8/15/2006)
</p>
<p>Neven Vision, or Nevenengineering, Inc., has a strong background in
facial and object recognition technologies, and has been broadening
their offerings by focusing upon mobile technology, including two
patent application filed over the past couple of years for image-based
search on a mobile device equiped with a camera. I&#8217;ve written a little
about the acquisition, and the company and its technology (including
patents) in this post: <a  href="http://www.seobythesea.com/?p=267">Google Acquires Neven Vision: Adding Object and Facial Recognition Mobile Technology</a>.
</p>
<p><strong>@Last Software</strong> (added 3/14/2006)
</p>
<p><a  href="http://www.sketchup.com/">@Last Software</a> (<a  href="http://googleblog.blogspot.com/2006/03/new-home-for-last-software.html">March, 2006</a>) - 3D design software, with a plugin for Google Earth.  <a  href="http://aecnews.com/articles/1212.aspx">Rumors of the purchase</a> started circulating as early as October of last year.   A <a  href="http://www.sketchup.com/index.php?id=1440">Frequently Asked Questions</a> section on the purchase describes changes resulting from the purchase.
</p>
<p>The company does hold a US Patent:
</p>
<p><a  href="http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&amp;Sect2=HITOFF&amp;d=PALL&amp;p=1&amp;u=/netahtml/srchnum.htm&amp;r=1&amp;f=G&amp;l=50&amp;s1=6,628,279.WKU.&amp;OS=PN/6,628,279&amp;RS=PN/6,628,279"> System and method for three-dimensional modeling</a>
</p>
<p>Abstract:
</p>
<blockquote>
<p>A three-dimensional design and modeling environment
allows users to draw the outlines, or perimeters, of objects in a
two-dimensional manner, similar to pencil and paper, already familiar
to them. The two-dimensional, planar faces created by a user can then
be pushed and pulled by editing tools within the environment to easily
and intuitively model three-dimensional volumes and geometries.</p>
</blockquote>
<p><strong>Writely</strong> (added 3/10/2006)
</p>
<p><a  href="http://www2.writely.com/info/WritelyOverflowWelcome.htm">Writely</a> (<a  href="http://writely.blogspot.com/2006/03/google-yep-google.html">March 2006</a>)  Web-based word processing that allows online collaboration on documents.
</p>
<p>The buzz is on with this acquisition that Google is going to take on
Microsoft, and that company&#8217;s hold on desktop publishing applications.
Except that this isn&#8217;t just a desktop publishing application. The
program allows you to organize documents by tags, which makes it a web
2.0 styled application, and it provides offline storage and backups. It
can also be used to create blog posts for a blog, and allows for
rollbacks to previous versions.
</p>
<p><strong>Measure Map</strong> (added 3/10/2006)
</p>
<p><a  href="http://www.measuremap.com/">Measuremap</a>(<a  href="http://googleblog.blogspot.com/2006/02/here-comes-measure-map.html">February, 2006</a>)
A statistics and analytics package geared more towards blogs than other
web sites, the acquistion of this company by Google was something of a
surprise, especially since Google purchased Urchin, which makes a
pretty good analytics program. But the beauty or Measuremap is
supposedly in the User Interface and design. Hard to tell at the time
of the purchase, since it was invitation-only pre-release mode, and I
never received the invitation I signed up for.
</p>
<p><strong>dMarc Broadcasting</strong> (added 3/10/2006)
</p>
<p><a  href="http://www.dmarc.net/">dMarc Broadcasting</a>(<a  href="http://www.google.com/press/pressrel/dmarc.html">January, 2006</a>)
Radio advertising company, allowing for highly automated advertising
campaigns. This acquisition brought Google a whole new way to reach out
to consumers with advertisements.
</p>
<p><strong>Android</strong>
</p>
<p><a  href="http://www.engadget.com/entry/1234000780054854/">Android</a> (August 2005), software for mobile telephones<br>
Founded by Andy Rubin, accompanied by Andy McFadden, Richard Miner, and Chris White.
</p>
<p><strong>Reqwireless, Inc.</strong> (added 3/10/2006)
</p>
<p><a  href="http://www.reqwireless.com/">Reqwireless</a> (<a  href="http://www.canada.com/nationalpost/financialpost/story.html?id=c4f6f084-d72f-43ea-8a82-affe38df3830&amp;k=58579">July, 2006</a>)
Maker of popular mobile applications for email and the web on wireless
devices. The presumption is that the technology developed by the
ReqWireless folks, and the chance to gain a foot hold in the Waterloo,
Ont. area is what led to this acquisition. The purchase wasn&#8217;t
uncovered until January 6, 2006.
</p>
<p><strong>Transformic, Inc.</strong> (added 9/20, 2006)
</p>
<p>I&#8217;ve written a full blog post about this acquisition - <a  href="http://www.seobythesea.com/?p=305">Google&#8217;s Quiet Acquisition of Transformic, Inc.</a>
</p>
<p>Tranformic was a small company, focusing upon building search
engines for the deep web, where major commercial search engines had
difficulties crawling, and had developed a site that showed off their
technology in Everyclassified.com, which collected information from
hundreds of classifieds sites on the web. The main reason for this
purchase appears to have been to get Dr. Alon Halevy, the man behind
Transformic, to work at Google.
</p>
<p><strong>Akwan Information Technologies</strong>
</p>
<p><a  href="http://www.akwan.com.br/">Akwan Information Technologies</a> (July 2005)<br>
Google Press Release: <a  href="http://www.google.com/press/pressrel/latam_office.html">Google Continues International Expansion, Opens Offices in Latin America</a>
</p>
<blockquote>
<p>The office in Sao Paulo, Brazil follows the acquisition
of Brazil&#8217;s Akwan Information Technologies Inc. in July of this year.
Akwan has become Google&#8217;s R&amp;D centre in Brazil.</p>
</blockquote>
<p>An example of the type of research being conducted by the people at Akwan: <a  href="http://hdir2005.isti.cnr.it/camera-ready/5.Badue.pdf">Distributed Processing of Conjunctive Queries</a> (pdf)
</p>
<p><strong>Dodgeball</strong>
</p>
<p><a  href="http://www.dodgeball.com/aboutus_dball_google.php">Dodgeball</a> (May 2005), social-networking software for mobile devices
</p>
<p>Founders Dennis Crowley and Alex Rainert, see: <a  href="http://www.internetnews.com/wireless/article.php/3504781">Google Buys Social Networking Firm</a> and <a  href="http://www.corante.com/vision/wireless/dodgeball.php">The Future of Wireless</a>
</p>
<p><strong>Urchin Software</strong>
</p>
<p><a  href="http://battellemedia.com/archives/001360.php">Urchin Software</a> (March 2005), Web Analytics software<br>
Google Press Release: <a  href="http://www.google.com/intl/en/press/pressrel/urchin.html">Google Agrees To Acquire Urchin</a>
</p>
<blockquote>
<p> Urchin is a web site analytics solution used by web
site owners and marketers to better understand their users&#8217;
experiences, optimize content and track marketing performance.</p>
</blockquote>
<p>Patent Applications:
</p>
<p><a  href="http://appft1.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&amp;Sect2=HITOFF&amp;d=PG01&amp;p=1&amp;u=/netahtml/PTO/srchnum.html&amp;r=1&amp;f=G&amp;l=50&amp;s1=%2220030208594%22.PGNR.&amp;OS=DN/20030208594&amp;RS=DN/20030208594">System and method for tracking unique visitors to a website</a>
</p>
<p>Abstract:
</p>
<blockquote>
<p>A system and method for analyzing traffic to a website
is provided that is based on log files and that uses both server-side
and client-side information channeled through one source to create a
more complete picture of activity to a website. In one preferred
embodiment, a sensor code is embedded in a requested web page, and
sends information back to the web server where the website resides.
This additional information is logged along with normal requests.</p>
</blockquote>
<p><a  href="http://appft1.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&amp;Sect2=HITOFF&amp;d=PG01&amp;p=1&amp;u=/netahtml/PTO/srchnum.html&amp;r=1&amp;f=G&amp;l=50&amp;s1=%2220050165889%22.PGNR.&amp;OS=DN/20050165889&amp;RS=DN/20050165889">System and method for monitoring and analyzing internet traffic</a>
</p>
<p>Abstract:
</p>
<blockquote>
<p>A system and method for monitoring and analyzing
Internet traffic is provided that is efficient, completely automated,
and fast enough to handle the busiest websites on the Internet,
processing data many times faster than existing systems. The system and
method of the present invention processes data by reading log files
produced by web servers, or by interfacing with the web server in real
time, processing the data as it occurs. The system and method of the
present invention can be applied to one website or thousands of
websites, whether they reside on one server or multiple servers. The
multi-site and sub-reporting capabilities of the system and method of
the present invention makes it applicable to servers containing
thousands of websites and entire on-line communities. In one
embodiment, the system and method of the present invention includes
e-commerce analysis and reporting functionality, in which data from
standard traffic logs is received and merged with data from e-commerce
systems. The system and method of the present invention can produce
reports showing detailed &#8220;return on investment&#8221; information, including
identifying which banner ads, referrals, domains, etc. are producing
specific dollars.</p>
</blockquote>
<p><strong>Zipdash</strong>
</p>
<p><a  href="http://www.zipdash.com/">Zipdash</a> (December 2004) Provides navigation assistance for road traffic on mobile in real time by GPS.<br>
See: <a  href="http://www.paloaltoonline.com/weekly/morgue/2004/2004_04_28.zipdash28ja.shtml">Navigating by phone</a> and  <a  href="http://www.siliconbeat.com/entries/2005/03/30/google_acquires_traffic_info_startup_zipdash.html">Google acquires traffic info start-up Zipdash</a>
</p>
<p><strong>Where 2 Technologies</strong>
</p>
<p>Where 2 Technologies (October 2004), Internet mapping
</p>
<p>Brothers Lars Eilstrup Rasmussen and Jens Eilstrup Rasmussen are
from Google&#8217;s Sydney office, and have been actively involved in the
patent applications behind Google Maps, and using Geographic location
information. Before then, they were with Where 2 technologies. See: <a  href="http://zdnet.com.au/news/software/soa/Take_browsers_to_the_limit_Google/0,2000061733,39204515,00.htm">Take browsers to the limit: Google</a>, and <a  href="http://www.cincomsmalltalk.com/userblogs/rowanb/blogView?showComments=true&amp;entry=3300246376">Google Maps and AJAX vs WithStyle - the Australian Legacy</a>, and <a  href="http://www.cre8asiteforums.com/forums/index.php?showtopic=26893">Assigning Geographic Locations to Web Pages</a>.
</p>
<p><strong>Keyhole</strong>
</p>
<p><a  href="http://earth.google.com/">Keyhole</a> (October 2004), imagery by satellite<br>
Google Press Release: <a  href="http://www.google.com/press/pressrel/keyhole.html">Google Acquires Keyhole Corp</a>
</p>
<blockquote>
<p>Keyhole&#8217;s technology combines a multi-terabyte database
of mapping information and images collected from satellites and
airplanes with easy-to-use software.</p>
</blockquote>
<p><strong>Picassa</strong>
</p>
<p><a  href="http://picasa.google.com/index.html">Picasa</a> (July 2004), software of management of photographs on line<br>
Google Press Release: <a  href="http://www.google.com/press/pressrel/picasa.html">Google Acquires Picasa</a>
</p>
<blockquote>
<p>Google Inc. today announced it acquired Picasa, Inc., a Pasadena, Calif.-based digital photo management company</p>
</blockquote>
<p><strong>Ignite Logic</strong>
</p>
<p><a  href="http://battellemedia.com/archives/000653.php">Ignite Logic</a> (May 2004), design of turn key legal sites.  Puzzling acquisition, though founder David Ferguson has an interesting past.
</p>
<p><strong>Genius Labs</strong>
</p>
<p><a  href="http://www.bizstone.com/archive/2003_10_01_archive.html#106553958799049227">Genius Labs</a> (October 2003), Biz Stone was Genius Labs.  He is <a  href="http://bizstone.com/2005/09/thank-you-and-good-night.html">no longer with Google</a>.
</p>
<p><strong>Sprinks</strong>
</p>
<p><a  href="http://www.clickz.com/news/article.php/3098631">Sprinks</a> (October 2003), paid advertising
</p>
<p><strong>Kaltix</strong>
</p>
<p>Kaltix (September 2003), Research on personalized search, from Taher Haveliwala, Glen Jeh, and Sepandar Kamvar.<br>
Google Press Release: <a  href="http://www.google.com/press/pressrel/kaltix.html">Google Acquires Kaltix Corp.</a>
</p>
<blockquote>
<p>Kaltix Corp. was formed in June 2003 and focuses on
developing personalized and context-sensitive search technologies that
make it faster and easier for people to find information on the web.</p>
</blockquote>
<p>Patent application:
</p>
<p><a  href="http://appft1.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&amp;Sect2=HITOFF&amp;d=PG01&amp;p=1&amp;u=/netahtml/PTO/srchnum.html&amp;r=1&amp;f=G&amp;l=50&amp;s1=%2220050038775%22.PGNR.&amp;OS=DN/20050038775&amp;RS=DN/20050038775">System and method for presenting multiple sets of search results for a single query</a>
</p>
<p>Abstract:
</p>
<blockquote>
<p>A system and a method that manages a user query by a
single interaction between a server and a client. A plurality of
clients send queries for search results to a server. The server
receives these queries and performs multiple searches to generate
multiple sets of search results. These sets of search results are
ranked, consolidated and passed to the requesting client. The client
stores these multiple sets of search results. The client then displays
these search results in accordance to the boundary defined by the user.
This boundary defines the portions of the search results that the user
desires to view. The user may re-define the boundary. The client
identifies the search results corresponding to the boundary and
displays them. </p>
</blockquote>
<p><strong>Applied Semantics</strong>
</p>
<p><a  href="http://www.appliedsemantics.com/">Applied Semantics</a> (April 2003), contextual advertising<br>
Google Press Release: <a  href="http://www.google.com/press/pressrel/applied.html">Google Acquires Applied Semantics</a>
</p>
<blockquote>
<p>Applied Semantics&#8217; products are based on its patented
CIRCA technology, which understands, organizes, and extracts knowledge
from websites and information repositories in a way that mimics human
thought and enables more effective information retrieval.</p>
</blockquote>
<p>Patents:
</p>
<p><a  href="http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&amp;Sect2=HITOFF&amp;d=PALL&amp;p=1&amp;u=/netahtml/srchnum.htm&amp;r=1&amp;f=G&amp;l=50&amp;s1=6,816,857.WKU.&amp;OS=PN/6,816,857&amp;RS=PN/6,816,857">Meaning-based advertising and document relevance determination</a>
</p>
<p>Abstract:
</p>
<blockquote>
<p>The present invention is directed to a system in which a
semantic space is searched in order to determine the semantic distance
between two locations. A further aspect of the present invention
provides a system in which a portion of semantic space is purchased and
associated with a target data set element which is returned in response
to a search input. The semantic space is created by a lexicon of
concepts and relations between concepts. An input is associated with a
location in the semantic space. Similarly, each data element in the
target data set being searched is associated with a location in the
semantic space. Searching is accomplished by determining a semantic
distance between the first and second location in semantic space,
wherein this distance represents their closeness in meaning and where
the cost for retrieval of target data elements is based on this
distance.</p>
</blockquote>
<p><a  href="http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&amp;Sect2=HITOFF&amp;d=PALL&amp;p=1&amp;u=/netahtml/srchnum.htm&amp;r=1&amp;f=G&amp;l=50&amp;s1=6,453,315.WKU.&amp;OS=PN/6,453,315&amp;RS=PN/6,453,315">Meaning-based information organization and retrieval</a>
</p>
<p>Abstract:
</p>
<blockquote>
<p>The present invention relies on the idea of a
meaning-based search, allowing users to locate information that is
close in meaning to the concepts they are searching. A semantic space
is created by a lexicon of concepts and relations between concepts. A
query is mapped to a first meaning differentiator, representing the
location of the query in the semantic space. Similarly, each data
element in the target data set being searched is mapped to a second
meaning differentiator, representing the location of the data element
in the semantic space. Searching is accomplished by determining a
semantic distance between the first and second meaning differentiator,
wherein this distance represents their closeness in meaning. Search
results on the input query are presented where the target data elements
that are closest in meaning, based on their determined semantic
distance, are ranked higher.</p>
</blockquote>
<p><strong>Neotonic Software</strong>
</p>
<p><a  href="http://www.neotonic.com/">Neotonic Software</a> (April 2003), email customer support <a  href="http://www.neotonic.com/trakken/customers/case-google.cst">Case Study</a>
from neotonic, about how they helped Google in the days before the
purchase. Google also hired David Jeske, who was the co-founder of
Neotonic and the former director of engineering for eGroups.
</p>
<p><strong>Pyra Labs</strong>
</p>
<p><a  href="http://www.blogger.com/about">Pyra Labs</a> (February 2003), editor of Blogger, blogging platform
</p>
<p><strong>Outride</strong>
</p>
<p><a  href="http://www.cs.usfca.edu/%7Ewolber/blogs/slsTalk/000555.html">Outride</a> (September 2001), a Xerox PARC spinoff, data-mining and semantic analysis.  See: <a  href="http://www.ischool.utexas.edu/%7Edonturn/papers/cacm2002/turnbull-cacm09-2002.pdf">Personalized Search: A contextual computing approach may prove a breakhrough in personalized search efficiency</a> (pdf) and <a  href="http://www.beyondvc.com/2004/03/personalized_se.html">Personalized Search</a>
</p>
<p>Google Press Release: <a  href="http://www.google.com/press/pressrel/outride.html">Google Acquires Technology Assets of Outride Inc.</a>
</p>
<blockquote>
<p>Outride, a spin-off from Xerox Palo Alto Research Center
(PARC), was created to apply state-of-the-art model-based relevance
technology to the challenge of online information retrieval.</p>
</blockquote>
<p><strong>Deja</strong>
Deja.com (February 2001), Purchase of their usenet archive and other assets, which become Google Groups.</p>
</div>
</span><img src ="http://www.cnitblog.com/jing/aggbug/25754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/jing/" target="_blank">jing</a> 2007-04-16 01:57 <a href="http://www.cnitblog.com/jing/archive/2007/04/16/25754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>