<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>随风飞扬</title>
	<atom:link href="http://pugongying.ca/blog/adamwang/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://pugongying.ca/blog/adamwang</link>
	<description>Just do it.</description>
	<lastBuildDate>Wed, 03 Mar 2010 18:03:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>c# List sorting</title>
		<link>http://pugongying.ca/blog/adamwang/?p=142</link>
		<comments>http://pugongying.ca/blog/adamwang/?p=142#comments</comments>
		<pubDate>Wed, 03 Mar 2010 18:03:31 +0000</pubDate>
		<dc:creator>adamwang</dc:creator>
				<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://pugongying.ca/blog/adamwang/?p=142</guid>
		<description><![CDATA[reference: http://www.codeproject.com/KB/cs/DelegatesOMy.aspx
Example:
List&#60;Employee&#62; employeeList = GetEmployeeListSomeWhere();
employeeList.Sort((x,y)=&#62;Compare&#60;string&#62;.Default.Compare(x.Name, y.Name));
]]></description>
			<content:encoded><![CDATA[<p>reference: <a href="http://www.codeproject.com/KB/cs/DelegatesOMy.aspx">http://www.codeproject.com/KB/cs/DelegatesOMy.aspx</a></p>
<p>Example:</p>
<p>List&lt;Employee&gt; employeeList = GetEmployeeListSomeWhere();</p>
<p>employeeList.Sort((x,y)=&gt;Compare&lt;string&gt;.Default.Compare(x.Name, y.Name));</p>
]]></content:encoded>
			<wfw:commentRss>http://pugongying.ca/blog/adamwang/?feed=rss2&amp;p=142</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Deploying ASP.NET MVC to IIS 6</title>
		<link>http://pugongying.ca/blog/adamwang/?p=140</link>
		<comments>http://pugongying.ca/blog/adamwang/?p=140#comments</comments>
		<pubDate>Mon, 25 Jan 2010 23:45:33 +0000</pubDate>
		<dc:creator>adamwang</dc:creator>
				<category><![CDATA[IT]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Deploying ASP.NET MVC applications to IIS 6 always causes confusion at first. You’ve been coding in Visual Studio 2008, seeing your lovely clean URLs work nicely in the built-in web server, you stick the code on some Windows Server 2003 machine, and then wham! It’s all like 404 Not found&#160; and you’re like hey dude [...]]]></description>
			<content:encoded><![CDATA[<p>Deploying ASP.NET MVC applications to IIS 6 always causes confusion at first. You’ve been coding in Visual Studio 2008, seeing your lovely clean URLs work nicely in the built-in web server, you stick the code on some Windows Server 2003 machine, and then wham! It’s all like <em>404 Not found</em>&#160; and you’re like <em>hey dude that’s not cool</em>. </p>
<p><a href="http://blog.codeville.net/wp-content/uploads/2008/07/image.png"><img height="327" alt="image" src="http://blog.codeville.net/wp-content/uploads/2008/07/image-thumb.png" width="604" border="0" /></a></p>
<p>This happens because IIS 6 only invokes ASP.NET when it sees a “filename extension” in the URL that’s mapped to <strong>aspnet_isapi.dll</strong> (which is a C/C++ ISAPI filter responsible for invoking ASP.NET). Since routing is a .NET <strong>IHttpModule</strong> called <strong>UrlRoutingModule</strong>, it doesn’t get invoked unless ASP.NET itself gets invoked, which only happens when <strong>aspnet_isapi.dll</strong> gets invoked, which only happens when there’s a <strong>.aspx</strong> in the URL. So, no <strong>.aspx</strong>, no <strong>UrlRoutingModule</strong>, hence the 404.</p>
<p>I’d say you’ve got four ways around this:</p>
<h6>Option 1: Use a wildcard mapping for aspnet_isapi.dll</h6>
<p>This tells IIS 6 to process <em>all </em>requests using ASP.NET, so routing is always invoked, and there’s no problem. It’s dead easy to set up: open IIS manager, right-click your app, go to <em>Properties</em>, then <em>Home Directory </em>tab, then click <em>Configuration</em>. Under <em>Wildcard application maps</em>, click <em>Insert</em> (not <em>Add</em>, which is confusingly just above),&#160; then enter <strong>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll</strong> for “Executable”, and uncheck <em>Verify that file exists</em>. </p>
<p>Done! Routing now just behaves as it always did in VS2008’s built-in server.</p>
<p>Unfortunately, this also tells IIS to use ASP.NET to serve <em>all</em> requests, including for static files. It will work, because ASP.NET has a built-in <strong>DefaultHttpHandler</strong> that does it, but <a href="http://sticklebackplastic.com/2006/10/9/The+continuing+saga+of+StaticFileHandler++meet+DefaultHttpHandler.aspx">depending on what you do during the request</a>, it might use StaticFileHandler to serve the request. StaticFileHandler is much less efficient than IIS natively. You see, it <em>always</em> reads the files from disk for every request, not caching them in memory. It doesn’t send Cache-Control headers that you might have configured in IIS, so browsers won’t cache it properly. It doesn’t do HTTP compression. However, if you can avoid interfering with the request, DefaultHttpHandler will pass control back to IIS for native processing, which is much better.</p>
<p>For small intranet applications, wildcard mappings are probably the best choice. Yes, it impacts performance slightly, but that might not be a problem for you. Perhaps you have better things to worry about.</p>
<p>For larger public internet applications, you may need a solution that delivers better performance.</p>
<p><i><b>Update:</b> It turns out that you can <a href="http://blog.codeville.net/?p=96">disable wildcard maps on selected subfolders</a>, which may give you the best of both worlds.</i></p>
<h6>Option 2: Put .aspx in all your route entries’ URL patterns</h6>
<p>If you don’t mind having .aspx in your URLs, just go through your routing config, adding .aspx before a forward-slash in each pattern. For example, use <strong>{controller}.aspx/{action}/{id}</strong> or <strong>myapp.aspx/{controller}/{action}/{id}</strong>. <em>Don’t </em>put .aspx inside the curly-bracket parameter names, or into the ‘default’ values, because it isn’t really part of the controller name &#8211; it’s just in the URL to satisfy IIS.</p>
<p>Now your application will be invoked just like a traditional ASP.NET app. IIS still handles static files. This is probably the easiest solution in shared hosting scenarios. Unfortunately, you’ve spoiled your otherwise clean URL schema.</p>
<h6>Options 3: Use a custom filename extension in all your URL patterns</h6>
<p>This is the same as the above, except substituting something like <b>.mvc</b> instead of <b>.aspx</b>. It doesn’t really create any advantage, other than showing off that you’re using ASP.NET MVC. </p>
<p>Just update your route entries as described above, except putting .mvc instead of .aspx. Next, register a new ISAPI mapping: Open IIS manager, right-click your app, go to <em>Properties</em>, then <em>Home Directory </em>tab, then click <em>Configuration. </em>On the <em>Mappings</em> tab, click <em>Add</em>, then enter <strong>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll</strong> for “Executable”, <strong>.mvc</strong> (or whatever extension you’re using) for “Extension”, and uncheck <em>Verify that file exists</em>. Leave <em>Script engine</em> checked (unless your app has <em>Execute</em> permission) and leave <em>All verbs</em> selected unless you specifically want to filter HTTP methods.</p>
<p>That’s it &#8211; you’re now using a custom extension. Unfortunately, it’s still a bit of an eyesore on your otherwise clean URL schema.</p>
<h6>Option 4: Use URL rewriting</h6>
<p>This is a trick to make IIS think there’s a filename extension in the URL, even though there isn’t. It’s the hardest solution to implement, but the only one that gives totally clean URLs without any significant drain on performance.</p>
<p>Ben Scheirman came up with <a href="http://www.flux88.com/UsingASPNETMVCOnIIS6WithoutTheMVCExtension.aspx">a great post on this subject</a>, but I’m adapting the technique slightly so as to avoid needing to change my routing configuration in any way. Here’s how it works for me:</p>
<blockquote><p>1. As an extensionless request arrives, we have a 3rd-party ISAPI filter that rewrites the request to add a known extension: .aspx.</p>
<p>2. IIS sees the extension, and maps it to aspnet_isapi.dll, and hence into ASP.NET</p>
<p>3. Before routing sees the request, we have an Application_BeginRequest() handler that rewrites the URL <em>back</em> to its original, extensionless form</p>
<p>4. Routing sees the extensionless URL and behaves normally.</p>
</blockquote>
<p>Since the URL gets un-rewritten in step 3, you don’t have to do anything funny to make outbound URL generation work.</p>
<h6>How to do it</h6>
<p>First, download and install Helicon’s <a href="http://www.isapirewrite.com/">ISAPI_Rewrite</a>. You can use the freeware edition, version 2, though beware this will affect <strong>all</strong> the sites on your server. If you need to localize the rewriting to a particular app or virtual directory, you’ll need one of the paid-for editions.</p>
<p>Now edit ISAPI_Rewrite’s configuration (Start -&gt; All programs -&gt; Helicon -&gt; ISAPI_Rewrite -&gt; httpd.ini), and add:</p>
<pre># If you're hosting in a virtual directory, enable these lines,
# entering the path of your virtual directory.
#UriMatchPrefix /myvirtdir
#UriFormatPrefix /myvirtdir

# Add extensions to this rule to avoid them being processed by ASP.NET
RewriteRule (.*)\.(css|gif|png|jpeg|jpg|js|zip) $1.$2 [I,L]

# Normalizes the homepage URL to /
RewriteRule /home(\?.*)? /$1 [I,RP,L]
RewriteRule / /home [I] 

# Prefixes URLs with &quot;rewritten.aspx/&quot;, so that ASP.NET handles them
RewriteRule /(.*) /rewritten.aspx/$1 [I]</pre>
<p>This excludes known, static files (CSS, GIF etc.), but for the rest, it prefixes the URL with <strong>/rewritten.aspx</strong>, making ASP.NET kick in. As a bonus, it normalizes any requests for /home to simply / via a 301 redirection, helping out with your SEO. Save this file, and restart IIS (run iisreset.exe).</p>
<p>That’s implemented step 1. Now, to implement step 3, add the following handler to your Global.asax.cs file:</p>
<pre>protected void Application_BeginRequest(Object sender, EventArgs e)
{
    HttpApplication app = sender as HttpApplication;
    if (app != null)
        if (app.Request.AppRelativeCurrentExecutionFilePath == &quot;~/rewritten.aspx&quot;)
            app.Context.RewritePath(
                app.Request.Url.PathAndQuery.Replace(&quot;/rewritten.aspx&quot;, &quot;&quot;)
            );
}</pre>
<p>This detects rewritten URLs, and un-rewrites them. That does it! (Or at least it works on my machine &#8211; please share your experiences.) </p>
<p>Now you’ve got clean, extensionless URLs on IIS 6 (and probably on IIS5, though I haven’t tried), without using a wildcard map, and without interfering with IIS’s efficient handling of static files.</p>
<h6>Bonus option 5: Upgrade to Windows Server 2008 and IIS 7</h6>
<p>Of course, it’s <em>much</em> easier with IIS 7, because it natively supports .NET IHttpModules, so by default you’ll have UrlRoutingModule plugged right into the server, and you don’t have to do anything weird to make it work perfectly.</p>
<p><strong><strong></p>
]]></content:encoded>
			<wfw:commentRss>http://pugongying.ca/blog/adamwang/?feed=rss2&amp;p=140</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The analysis model</title>
		<link>http://pugongying.ca/blog/adamwang/?p=136</link>
		<comments>http://pugongying.ca/blog/adamwang/?p=136#comments</comments>
		<pubDate>Wed, 11 Nov 2009 16:54:16 +0000</pubDate>
		<dc:creator>adamwang</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Modelling]]></category>

		<guid isPermaLink="false">http://pugongying.ca/blog/adamwang/?p=136</guid>
		<description><![CDATA[The use-case model(System Model)
The use-case model provides detailed information about the behaviors of the system or application that you are developing. It contains use-case diagrams and activity diagrams that describe how users interact with the system.
The use-case model identifies the requirements of the system in terms of the functionality that must exist to achieve the [...]]]></description>
			<content:encoded><![CDATA[<h3>The use-case model(System Model)</h3>
<p>The use-case model provides detailed information about the behaviors of the system or application that you are developing. It contains use-case diagrams and activity diagrams that describe how users interact with the system.</p>
<p>The use-case model identifies the requirements of the system in terms of the functionality that must exist to achieve the goals set out by the user or to solve a problem identified by the user. Uses cases describe the major behaviors that you identify in the requirements and describe the value that the results give the users; they do not describe how the system operates internally. Actors are the users of the system and represent the different roles that people and other systems play when they interact with the system.</p>
<p>Use-case diagrams depict the relationships between the uses cases and actors, and activity diagrams describe the flow of objects and control in each identified behavior.</p>
<p>&#160;</p>
<h3>The Analysis model</h3>
<p>The analysis model describes the structure of the system or application that you are modeling. It consists of class diagrams and sequence diagrams that describe the logical implementation of the functional requirements that you identified in the use case model.</p>
<p>The analysis model identifies the main classes in the system and contains a set of use case realizations that describe how the system will be built. Class diagrams describes the static structure of the system by using stereotypes to model the functional parts of the system. Sequence diagrams realize the use cases by describing the flow of events in the use cases when they are executed. These use case realizations model how the parts of the system interact within the context of a specific use case.</p>
<p>You can think of the analysis model as the foundation of the design model since it describes the logical structure of the system, but not how it will be implemented.</p>
<p>&#160;</p>
<h3>The design model</h3>
<p>The design model builds on the analysis model by describing, in greater detail, the structure of the system and how the system will be implemented. Classes that were identified in the analysis model are refined to include the implementation constructs.</p>
<p>The design model is based on the analysis and architectural requirements of the system. It represents the application components and determines their appropriate placement and use within the overall architecture.</p>
<p>In the design model, packages contain the design elements of the system, such as design classes, interfaces, and design subsystems, that evolve from the analysis classes. Each package can contain any number of subpackages that further partition the contained design elements. These architectural layers form the basis for a second-level organization of the elements that describe the specifications and implementation details of the system.</p>
<p>Within each package, sequence diagrams illustrate how the objects in the classes interact, state machine diagrams to model the dynamic behavior in classes, component diagrams to describe the software architecture of the system, and deployment diagrams to describe the physical architecture of the system.</p>
]]></content:encoded>
			<wfw:commentRss>http://pugongying.ca/blog/adamwang/?feed=rss2&amp;p=136</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SimGallery Problem-Solving</title>
		<link>http://pugongying.ca/blog/adamwang/?p=134</link>
		<comments>http://pugongying.ca/blog/adamwang/?p=134#comments</comments>
		<pubDate>Mon, 20 Jul 2009 22:55:05 +0000</pubDate>
		<dc:creator>adamwang</dc:creator>
				<category><![CDATA[Joomla]]></category>

		<guid isPermaLink="false">http://pugongying.ca/blog/adamwang/?p=134</guid>
		<description><![CDATA[
Problem: SIMGallery uses the latest Mootools version (1.2) for its javascript features. This can cause some trouble if your     template uses Mootools 1.1      
Solution: See”Disabling Previous Mootools Version 1.1” in document.

Problem: In&#160; IE8, picture can’t be enlarged.       
Solution: Add following [...]]]></description>
			<content:encoded><![CDATA[<ol>
<li>Problem: SIMGallery uses the latest Mootools version (1.2) for its javascript features. This can cause some trouble if your     <br />template uses Mootools 1.1      </p>
<p>Solution: See”Disabling Previous Mootools Version 1.1” in document.</li>
<li>
<div align="left">Problem: In&#160; IE8, picture can’t be enlarged.       </p>
<p>Solution: Add following code into /components/com_simgallery/shadowbox/skin/classic/skin.css        </p>
<p>#shadowbox_title {        <br />&#160; border: 0px solid;        <br />}        <br />#shadowbox_info {        <br />&#160; border: 0px solid;        <br />}</div>
<div align="left"></div>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://pugongying.ca/blog/adamwang/?feed=rss2&amp;p=134</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Intergrated Development Environment Installation</title>
		<link>http://pugongying.ca/blog/adamwang/?p=133</link>
		<comments>http://pugongying.ca/blog/adamwang/?p=133#comments</comments>
		<pubDate>Wed, 08 Jul 2009 20:12:08 +0000</pubDate>
		<dc:creator>adamwang</dc:creator>
				<category><![CDATA[IT]]></category>

		<guid isPermaLink="false">http://pugongying.ca/blog/adamwang/?p=133</guid>
		<description><![CDATA[Components: Trac, Cruisecontrol, Subversion
Essential Reference:
1. http://trac.edgewall.org/wiki/TracOnWindows#Subversion
2. http://trac.edgewall.org/wiki/TracOnWindows/Python2.5
Steps:

Install Python 2.5 on Windows 

Add C:\Python25 and C:\Python25\Scripts to PATH environment variable.

Instal Genshi for Python 2.5 by running Windows installer 

Download location: http://genshi.edgewall.org/wiki/Download#Zippackage

Install Setuptools for Python 2.5 

The download point is in “Method1: Using Installers” section of Ref #2.

Install Trac 0.11 for Python 2.5 

The download point is [...]]]></description>
			<content:encoded><![CDATA[<p>Components: Trac, Cruisecontrol, Subversion</p>
<p>Essential Reference:</p>
<p>1. <a href="http://trac.edgewall.org/wiki/TracOnWindows#Subversion">http://trac.edgewall.org/wiki/TracOnWindows#Subversion</a></p>
<p>2. <a href="http://trac.edgewall.org/wiki/TracOnWindows/Python2.5">http://trac.edgewall.org/wiki/TracOnWindows/Python2.5</a></p>
<p>Steps:</p>
<ol>
<li>Install Python 2.5 on Windows </li>
</ol>
<p>Add C:\Python25 and C:\Python25\Scripts to PATH environment variable.</p>
<ol start="start">
<li>Instal Genshi for Python 2.5 by running Windows installer </li>
</ol>
<p>Download location: <a href="http://genshi.edgewall.org/wiki/Download#Zippackage">http://genshi.edgewall.org/wiki/Download#Zippackage</a></p>
<ol start="start">
<li>Install Setuptools for Python 2.5 </li>
</ol>
<p>The download point is in “Method1: Using Installers” section of Ref #2.</p>
<ol start="start">
<li>Install Trac 0.11 for Python 2.5 </li>
</ol>
<p>The download point is in “Method1: Using Installers” section of Ref #2</p>
<p>Running Trac standalone with command:</p>
<p>tracd –port 8000 c:\TracProjects\Myproject</p>
<p>Test Trac within browser via <a href="http://mysite:8000/">http://mysite:8000</a></p>
<p>If you have existing projects working on older versions, you need to upgrade your projects by running command:</p>
<p>trac-admin c:\ TracProjects\Myproject upgrade</p>
<ol start="start">
<li>Install Gantt Charts Plugin </li>
</ol>
<p>Download Gantt Charts 0.3.2a plugin source from: </p>
<p><a href="http://willbarton.com/code/tracgantt/">http://willbarton.com/code/tracgantt/</a></p>
<p>Fix the plugin to fit Python 2.5 by following the instruction at </p>
<p><a href="http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/126112">http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/126112</a></p>
<p>Compile Gantt Charts plug in by running command under source code directory</p>
<p>python setup.py bdist_egg</p>
<p>easy_install –always-unzip TracGantt-0.3.2.a-py2.5.egg</p>
<ol start="start">
<li>Install ClearSilver.egg </li>
</ol>
<p>Download clearsilver.egg for Python 2.5 from <a href="http://www.clearsilver.net/downloads/">http://www.clearsilver.net/downloads/</a></p>
<p>The egg file is download as .zip file extension, change it to .egg and install it with easy_install.</p>
<ol start="start">
<li>Install Subversion </li>
</ol>
<p>Reference Link: <a href="http://blogs.vertigosoftware.com/teamsystem/archive/2006/01/16/Setting_up_a_Subversion_Server_under_Windows.aspx">http://blogs.vertigosoftware.com/teamsystem/archive/2006/01/16/Setting_up_a_Subversion_Server_under_Windows.aspx</a></p>
<p>Download subversion binary package from:</p>
<p><a href="http://subversion.tigris.org/files/documents/15/45600/svn-win32-1.6.1.zip">http://subversion.tigris.org/files/documents/15/45600/svn-win32-1.6.1.zip</a></p>
<p>Unpack the package to C:\Program Files\subversion</p>
<p>Add C:\Program Files\subversion to PATH environment variables.</p>
<p>Install subversion Python Binding with command:</p>
<p>easy_install –Z <a href="http://subversion.tigris.org/files/documents/15/45607/svn-python-1.6.1.win32-py2.5.exe">http://subversion.tigris.org/files/documents/15/45607/svn-python-1.6.1.win32-py2.5.exe</a></p>
<p>Download SVNService from <a href="http://gda.utp.edu.co/pub/svn/SVNService.zip">http://gda.utp.edu.co/pub/svn/SVNService.zip</a></p>
<p>Copy svnservice.exe to C:/Program Files/subversion/bin/</p>
<p>Run following commands under command line:</p>
<pre>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; svnservice -install --daemon --root &quot;C:\Repository&quot;</pre>
<pre>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; sc config svnservice start= auto</pre>
<pre>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; net start svnservice</pre>
<ol start="start">
<li>Add Trac to Service </li>
</ol>
<p>Reference Link:<a href="http://trac.edgewall.org/wiki/TracOnWindowsStandalone">http://trac.edgewall.org/wiki/TracOnWindowsStandalone</a></p>
<ul>
<li>download the Windows Server 2003 Resource Kit at <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9D467A69-57FF-4AE7-96EE-B18C4790CFFD&amp;displaylang=en">Microsoft</a></li>
<li>run &quot;InstSrv &lt;servicename&gt; c:\path\to\resourcekit\SrvAny.exe&quot;, where you insert your own service name (without angle brackets, e.g. tracd) and the full path to the SrvAny.exe. </li>
<li>open HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\&lt;servicename&gt; in RegEdit </li>
<li>create subkey *Parameters*, below which you will create 2 string values: </li>
<li>create string value *Application* with the full path to <strong>python.exe</strong></li>
<li>create string value *AppParameters* with the set of desired tracd parameters, e.g. &quot;c:\Python25\Scripts\<strong>tracd-script.py</strong> &#8211;port 8080 c:\path\to\trac&quot; (without the quotes) </li>
<li>open the Services tool (somewhere in the administrative tools in the Windows control panel) and start your service </li>
</ul>
<ol start="start">
<li>Install CruiseControl.NET </li>
</ol>
<p>Download CruiseControl.NET from <a href="http://sourceforge.net/project/downloading.php?group_id=71179&amp;filename=CruiseControl.NET-1.4.3-Setup.exe&amp;a=58074311">http://sourceforge.net/project/downloading.php?group_id=71179&amp;filename=CruiseControl.NET-1.4.3-Setup.exe&amp;a=58074311</a></p>
<p>Install CruiseControl.NET and configure it with the source control and compilation information.</p>
<p>Download and install libxml2-python package.</p>
<p>Download Cruise Control Trac plugin TracCC-0.2.4dev_r31-py2.5.egg, install it from project Admin Panel.</p>
<p>This version is working with CruiseControl.Net, add CruiseControl section to project Trac configuration file trac.ini:</p>
<p>[cruisecontrol]</p>
<p>ccpath = C:\Program Files\CruiseControl.NET\server\Sanjel eService R2 Unit Tests\Artifacts\log</p>
<p>buildstatusfile = SanjelEServiceR2UnitTests.state</p>
<p>xslfile = C:\Program Files\CruiseControl.NET\server\xsl\header.xsl</p>
<ol start="start">
<li>Add Subersion Repository setting to Trac </li>
</ol>
<p>Update trac.ini in your project conf folder, adding subversion repository and authentication information to the [trac] section. You may link to your source control system natively with Trac.</p>
<ol start="start">
<li>Add additional plugings </li>
</ol>
<ol start="start">
<ol>
<li>ChangeLogPlugin </li>
</ol>
</ol>
<p>Reference Link: <a href="http://trac-hacks.org/wiki/ChangeLogPlugin">http://trac-hacks.org/wiki/ChangeLogPlugin</a></p>
<p>Adds a Wiki macro that displays a change log for a repository path</p>
<p>Track Links format [[ChangeLog(/path/to/project/repository, 5)]]</p>
]]></content:encoded>
			<wfw:commentRss>http://pugongying.ca/blog/adamwang/?feed=rss2&amp;p=133</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Disable &#8220;View Full-Size Image&#8221; in VitueMart product view</title>
		<link>http://pugongying.ca/blog/adamwang/?p=125</link>
		<comments>http://pugongying.ca/blog/adamwang/?p=125#comments</comments>
		<pubDate>Thu, 08 Jan 2009 05:45:41 +0000</pubDate>
		<dc:creator>adamwang</dc:creator>
				<category><![CDATA[Joomla]]></category>

		<guid isPermaLink="false">http://pugongying.ca/blog/adamwang/2009/01/08/disable-view-full-size-image-in-vituemart-product-view/</guid>
		<description><![CDATA[When we use full size image to show product instead of thumbnail, we don’t need “View Full-Size Image” link. But there is no configuration options to disable this. We have to change code to do this.
The code file is shop.products_details.php.
Or we have another easy cheating way to do this by change language file:
var $_PHPSHOP_FLYPAGE_ENLARGE_IMAGE = [...]]]></description>
			<content:encoded><![CDATA[<p>When we use full size image to show product instead of thumbnail, we don’t need “<a href="http://www.calgaryfaq.com/site2/components/com_virtuemart/shop_image/product/FALL_494ef87062b52.jpg">View Full-Size Image</a>” link. But there is no configuration options to disable this. We have to change code to do this.</p>
<p>The code file is <b>shop.products_details.php</b>.</p>
<p>Or we have another easy cheating way to do this by change language file:</p>
<p>var $_PHPSHOP_FLYPAGE_ENLARGE_IMAGE = &#8221;;</p>
<p>For other unwanted link such like “vendor information”, may do in same way.</p>
]]></content:encoded>
			<wfw:commentRss>http://pugongying.ca/blog/adamwang/?feed=rss2&amp;p=125</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Change Display Limit Box</title>
		<link>http://pugongying.ca/blog/adamwang/?p=124</link>
		<comments>http://pugongying.ca/blog/adamwang/?p=124#comments</comments>
		<pubDate>Thu, 08 Jan 2009 05:14:57 +0000</pubDate>
		<dc:creator>adamwang</dc:creator>
				<category><![CDATA[Joomla]]></category>

		<guid isPermaLink="false">http://pugongying.ca/blog/adamwang/2009/01/08/change-display-limit-box/</guid>
		<description><![CDATA[While using VirtualMart component, we may display other than 5 items per row. Using default pagination setting as 5, 10, 15, 20, 25, 30, 50, 100, all may cause alignment problem. In this case we would like use 4, 8, 12, 16, 20, 40, 80, all for 4 items per row. 
Because this is hard-coded, [...]]]></description>
			<content:encoded><![CDATA[<p>While using VirtualMart component, we may display other than 5 items per row. Using default pagination setting as 5, 10, 15, 20, 25, 30, 50, 100, all may cause alignment problem. In this case we would like use 4, 8, 12, 16, 20, 40, 80, all for 4 items per row. </p>
<p>Because this is hard-coded, we have to hack it in code. </p>
<p>file: libraries\joomla\html\pagination.php</p>
<p>In function getLimitBox(), line 324:</p>
<p>// Make the option list   <br />for ($i = 5; $i &lt;= 30; $i += 5) {    <br />&#160;&#160;&#160; $limits[] = JHTML::_(&#8217;select.option&#8217;, &quot;$i&quot;);    <br />}    <br />$limits[] = JHTML::_(&#8217;select.option&#8217;, &#8216;50&#8242;);    <br />$limits[] = JHTML::_(&#8217;select.option&#8217;, &#8216;100&#8242;);    <br />$limits[] = JHTML::_(&#8217;select.option&#8217;, &#8216;0&#8242;, JText::_(&#8217;all&#8217;)); </p>
<p>Change it to:</p>
<p>// Make the option list   <br />for ($i = 4; $i &lt;= 20; $i += 4) {    <br />&#160;&#160;&#160; $limits[] = JHTML::_(&#8217;select.option&#8217;, &quot;$i&quot;);    <br />}    <br />$limits[] = JHTML::_(&#8217;select.option&#8217;, &#8216;40&#8242;);    <br />$limits[] = JHTML::_(&#8217;select.option&#8217;, &#8216;80&#8242;);    <br />$limits[] = JHTML::_(&#8217;select.option&#8217;, &#8216;0&#8242;, JText::_(&#8217;all&#8217;)); </p>
<p>This will make global change for everywhere.</p>
]]></content:encoded>
			<wfw:commentRss>http://pugongying.ca/blog/adamwang/?feed=rss2&amp;p=124</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JFusion phpBB Dual Login Issue</title>
		<link>http://pugongying.ca/blog/adamwang/?p=122</link>
		<comments>http://pugongying.ca/blog/adamwang/?p=122#comments</comments>
		<pubDate>Wed, 07 Jan 2009 21:34:34 +0000</pubDate>
		<dc:creator>adamwang</dc:creator>
				<category><![CDATA[Joomla]]></category>

		<guid isPermaLink="false">http://pugongying.ca/blog/adamwang/2009/01/07/jfusion-phpbb-dual-login-issue/</guid>
		<description><![CDATA[Firstly, Create a new user for testing purposes using the JFusion Login Module.   Note: The Admin user will not sync for any software which is why we need to create a test user.    Dual Login from Joomla! side:-    In Joomla, go to Components &#62; JFusion &#62; Plugin [...]]]></description>
			<content:encoded><![CDATA[<p>Firstly, Create a new user for testing purposes using the JFusion Login Module.   <br />Note: The Admin user will not sync for any software which is why we need to create a test user.    <br />Dual Login from Joomla! side:-    <br />In Joomla, go to Components &gt; JFusion &gt; Plugin Configuration &gt;    <br />Make sure there is a green check under &#8216;Dual Login&#8217; for the phpbb3 plugin.    <br />In Joomla, go to Components &gt; JFusion &gt; Plugin Configuration &gt; Edit phpbb3    <br />1. Put a dot ( . ) infront of &#8216;Cookie Domain&#8217; example: .yourdomain.com    <br />2. Note the name of the &#8216;Cookie Prefix&#8217; so you can match it in the cookie setting in phpbb. Or you can change this to whatever you want but it must match the settings in phpbb.    <br />3. Make sure &#8216;Cookie Path&#8217; and &#8216;Allow Login Cookie&#8217; have a forward slash ( / ).    <br />In phpbb3, go to General &gt; Server Configuration &gt; Cookie Settings    <br />1. Put a dot ( . ) infront of &#8216;Cookie Domain&#8217; example: .yourdomain.com (The domain must match the domain used in &#8216;JFusion phpbb plugin&#8217; and of course must be your actual domain.    <br />2. Name the &#8216;Cookie name&#8217; exactly the same as the settings in the JFusion phpbb plugin.    <br />3. Make sure the &#8216;Cookie path&#8217; has a forward slash ( / ).    <br />Delete all your browser cookies.    <br />Login with your test user.    <br />Dual Login from phpBB side:-    <br />As JFusion does not modify or hack the integrated software, the default component allows for a setup where when one logs into or out of the Joomla side, he/she is automatically logged into the phpBB side.    <br />One of the JFusion community member has developed a phpBB auth plugin which allows dual login to take place even from the phpBB side i.e. when a person logs in or out of phpBB the same takes place on the Joomla side.    <br />Follow the following steps for the same.    <br />1. Download the file <a href="http://www.jfusion.org/index.php/component/option,com_download/download,10/id,3/">here</a>.    <br />2. Copy the downloaded file to {your_forum_directory}/includes/auth directory.    <br />3. Proceed to the phpBB ACP. Search for the &#8216;Client Communication&#8217; Category in the left column. Click the &#8216;Authentication&#8217; under it.    <br />4. On the &#8216;Authentication&#8217; page set &#8216;Select an authentication method&#8217; to &#8216;Db_joomla&#8217; from the drop down box. Save the changes.    <br />5. Dual Login from phpBB has been setup.    <br />For any issues with phpBB dual login please post it in this thread. </p>
]]></content:encoded>
			<wfw:commentRss>http://pugongying.ca/blog/adamwang/?feed=rss2&amp;p=122</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2008年十大消费者Web应用(ZT)</title>
		<link>http://pugongying.ca/blog/adamwang/?p=121</link>
		<comments>http://pugongying.ca/blog/adamwang/?p=121#comments</comments>
		<pubDate>Mon, 22 Dec 2008 04:09:40 +0000</pubDate>
		<dc:creator>adamwang</dc:creator>
				<category><![CDATA[转帖收藏]]></category>

		<guid isPermaLink="false">http://pugongying.ca/blog/adamwang/2008/12/21/2008%e5%b9%b4%e5%8d%81%e5%a4%a7%e6%b6%88%e8%b4%b9%e8%80%85web%e5%ba%94%e7%94%a8zt/</guid>
		<description><![CDATA[国外媒体今天发表文章，公布了“2008年十大消费者Web应用”。    其中既包括大名鼎鼎的Twitter、Firefox，也包括目前名头还不太响的Cooliris。    1、Twitter Twitter是微博客界事实上的领头羊，今年6月份获得了Amazon创始人杰夫·贝索斯(Jeff Bezos)的投资。在美国大选中，Twitter成为了决定性的辩论论坛。    2、Firefox     走过4个春秋的Firefox是最成功的开放源代码项目之一。今年10月份，Firefox在浏览器市场上的份额达到了20%。    3、IntenseDebate     由于被当选总统巴拉克·奥巴马(Barack Obama)的change.gov网站选用为评论系统，IntenseDebate受到了公众关注。目前已经有数千人在使用IntenseDebate。    4、Hulu     Hulu的问世表明，主流媒体公司已经开始关注网络视频了。今年Hulu的营收将达到9000万美元。在美国大选期间，许多网民都通过Hulu获取政治新闻。    5、Ning     Ning可以帮助用户创建社交网络，每30秒就有一个利用Ning创建的社交网络诞生。截至今年10月份，利用Ning创建的社交网络已经达到了50万个。除了普通用户外，Ning还开始受到名人的追捧。    6、Last.fm    [...]]]></description>
			<content:encoded><![CDATA[<p><b>国外媒体今天发表文章，公布了“2008年十大消费者Web应用”。</b>    <br />其中既包括大名鼎鼎的Twitter、Firefox，也包括目前名头还不太响的Cooliris。    <br /><b>1、Twitter</b> Twitter是微博客界事实上的领头羊，今年6月份获得了Amazon创始人杰夫·贝索斯(Jeff Bezos)的投资。在美国大选中，Twitter成为了决定性的辩论论坛。    <br /><b>2、Firefox</b>    <br /> 走过4个春秋的Firefox是最成功的开放源代码项目之一。今年10月份，Firefox在浏览器市场上的份额达到了20%。    <br /><b>3、IntenseDebate</b>    <br /> 由于被当选总统巴拉克·奥巴马(Barack Obama)的change.gov网站选用为评论系统，IntenseDebate受到了公众关注。目前已经有数千人在使用IntenseDebate。    <br /><b>4、Hulu</b>    <br /> Hulu的问世表明，主流媒体公司已经开始关注网络视频了。今年Hulu的营收将达到9000万美元。在美国大选期间，许多网民都通过Hulu获取政治新闻。    <br /><b>5、Ning</b>    <br /> Ning可以帮助用户创建社交网络，每30秒就有一个利用Ning创建的社交网络诞生。截至今年10月份，利用Ning创建的社交网络已经达到了50万个。除了普通用户外，Ning还开始受到名人的追捧。    <br /><b>6、Last.fm</b>    <br /> 音乐推荐服务Last.fm成功的原因有两个：用户创作内容和易用性。Last.fm未来将获得更多音乐粉丝的喜爱。    <br /><b>7、Meebo</b>    <br /> Meebo是一个集中式即时通讯平台，支持任何一款浏览器。Meebo 10月份推出了一项合作伙伴计划，使其它消费者网站可以提供其功能。    <br /><b>8、Mogulus</b>    <br /> Mogulus是一款网络广播应用服务。今年9月份，问世刚16个月的Mogulus的独立访问用户量就达到了580万。显然，其用户数量将继续增长。    <br /><b>9、Qik</b>    <br /> 用户可以利用Qik从手机向Web传输视频，目前支持一些普通手机和智能手机。尽管还没有受到消费者的广泛关注，但Qik无疑将会获得成功。    <br /><b>10、Cooliris</b>    <br /> Cooliris是一款浏览器插件，能够提供3D环境，提高用户浏览网站时的趣味性，这也是它必将获得成功的原因所在。Cooliris是可视化浏览领域的领头羊。</p>
]]></content:encoded>
			<wfw:commentRss>http://pugongying.ca/blog/adamwang/?feed=rss2&amp;p=121</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>《商业周刊》:2008年最佳科技产品(ZT)</title>
		<link>http://pugongying.ca/blog/adamwang/?p=120</link>
		<comments>http://pugongying.ca/blog/adamwang/?p=120#comments</comments>
		<pubDate>Mon, 22 Dec 2008 04:08:22 +0000</pubDate>
		<dc:creator>adamwang</dc:creator>
				<category><![CDATA[转帖收藏]]></category>

		<guid isPermaLink="false">http://pugongying.ca/blog/adamwang/2008/12/21/%e3%80%8a%e5%95%86%e4%b8%9a%e5%91%a8%e5%88%8a%e3%80%8b2008%e5%b9%b4%e6%9c%80%e4%bd%b3%e7%a7%91%e6%8a%80%e4%ba%a7%e5%93%81zt/</guid>
		<description><![CDATA[&#160;
商业周刊撰文说道，2008年是中国的鼠年，但对全球来说，2008年是属于智能手机的一年。   因此，在商业周刊记者和编辑选出的2008年最佳的科技产品中，和智能手机相关的产品几乎占了半壁江山。以下为其排名列表：     1，苹果应用程序商店

苹果的iPhone可以完成所有智能手机能做的事情，不过这一切要归功于苹果的应用程序商店。仅仅5个月时间，iPhone的用户就从应用程序商店中下载了超过3亿个应用。它们中的大部分是免费的，一些仅仅需要几个美元。商业周刊指出，&#34;不是硬件，而正是软件，使得iPhone有别于其它智能手机。应用程序商店会将这个差距进一步拉大&#34;。    2，RIM黑莓Storm

RIM今年11月推出的Storm给黑莓带来了基于触摸屏的新产品系，不过Storm并没有放弃黑莓一贯以商务人士为中心的宗旨，其在触摸屏上模拟的物理触键，依然方便信息输入，完美继承了黑莓的风格。&#34;Storm不是也不想是iPhone的杀手，和黑莓其它产品一样，Storm精准地瞄准了那些移动商务人士&#34;。    3，苹果iPhone 3G

 iPhone 3G作为iPhone推出一周年的第二代新品有着其独特的地方：3G网络便于快速浏览网页和收发邮件、更薄的外观设计、更大的容量还有GPS功能。这也难怪苹果在08年第三季度就售出700万台iPhone 3G，是以往iPhone销售的两倍多。此外，苹果还大幅降低了生产成本，据iSuppli估计，iPhone 3G物料成本不到53美元。    4，Pure Digital的超小型随身摄像机Flip Mino

在线视频分享网站的热门也促进了视频制作爱好者对视频录制的痴迷，而Pure Digital超小型随身摄像机Flip Mino正好迎合了这种需求。11月，继今年6月推出Flip Mino后，Pure Digital公司再次推出能摄制高清晰影像的Flip Mino HD。在节日购物季里，该两项产品占了亚马逊最畅销商品前三甲中的两名。目前Pure Digital已经占得24%的摄像机市场份额，仅次于索尼。    5，MacBook Air笔记本

 MacBook Air真的实现了苹果CEO斯蒂夫•乔布斯在今年1月Macworld大会上关于可以将笔记本塞进一个标准信封的描述。目前MacBook Air是世界上最薄最轻的笔记本，而且还支持多点触摸等功能。    6,Chrome浏览器

Chrome是Google 2008年在搜索之外做的成功尝试之一。Chrome和其它浏览器不同的地方在于其有内置任务管理系统可跟踪用户所运行的网页应用。尽管Chrome的份额仍低于1%，但Google的眼光是长远的：&#34;显然，Chrome的目标在于操作系统&#34;。    7，Twitter网站

 虽然Twitter早在2006年就诞生了，但2008年是属于Twitter的一年。今年在Twitter上张贴消息的用户增长了6倍，超过 300万。不管大小公司，包括百思买、Comcast都开始在Twitter上进行客户支持和广告宣传。而且在危机时刻，比如中国5月份的大地震、11月印度的恐怖袭击都是先从Twitter开始传播消息。  [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p>商业周刊撰文说道，2008年是中国的鼠年，但对全球来说，2008年是属于智能手机的一年。   <br /><b>因此，在商业周刊记者和编辑选出的2008年最佳的科技产品中，和智能手机相关的产品几乎占了半壁江山。以下为其排名列表： </b>    <br />1，苹果应用程序商店</p>
<p><img alt="" src="http://photocdn.sohu.com/20081211/Img261139723.jpg" border="0" /></p>
<p>苹果的iPhone可以完成所有智能手机能做的事情，不过这一切要归功于苹果的应用程序商店。仅仅5个月时间，iPhone的用户就从应用程序商店中下载了超过3亿个应用。它们中的大部分是免费的，一些仅仅需要几个美元。商业周刊指出，&quot;不是硬件，而正是软件，使得iPhone有别于其它智能手机。应用程序商店会将这个差距进一步拉大&quot;。   <br /> 2，RIM黑莓Storm</p>
<p><img alt="" src="http://photocdn.sohu.com/20081211/Img261139724.jpg" border="0" /></p>
<p>RIM今年11月推出的Storm给黑莓带来了基于触摸屏的新产品系，不过Storm并没有放弃黑莓一贯以商务人士为中心的宗旨，其在触摸屏上模拟的物理触键，依然方便信息输入，完美继承了黑莓的风格。&quot;Storm不是也不想是iPhone的杀手，和黑莓其它产品一样，Storm精准地瞄准了那些移动商务人士&quot;。   <br /> 3，苹果iPhone 3G</p>
<p><img alt="" src="http://photocdn.sohu.com/20081211/Img261139725.jpg" border="0" /></p>
<p> iPhone 3G作为iPhone推出一周年的第二代新品有着其独特的地方：3G网络便于快速浏览网页和收发邮件、更薄的外观设计、更大的容量还有GPS功能。这也难怪苹果在08年第三季度就售出700万台iPhone 3G，是以往iPhone销售的两倍多。此外，苹果还大幅降低了生产成本，据iSuppli估计，iPhone 3G物料成本不到53美元。   <br /> 4，Pure Digital的超小型随身摄像机Flip Mino</p>
<p><img alt="" src="http://photocdn.sohu.com/20081211/Img261139726.jpg" border="0" /></p>
<p>在线视频分享网站的热门也促进了视频制作爱好者对视频录制的痴迷，而Pure Digital超小型随身摄像机Flip Mino正好迎合了这种需求。11月，继今年6月推出Flip Mino后，Pure Digital公司再次推出能摄制高清晰影像的Flip Mino HD。在节日购物季里，该两项产品占了亚马逊最畅销商品前三甲中的两名。目前Pure Digital已经占得24%的摄像机市场份额，仅次于索尼。   <br /> 5，MacBook Air笔记本</p>
<p><img alt="" src="http://photocdn.sohu.com/20081211/Img261139727.jpg" border="0" /></p>
<p> MacBook Air真的实现了苹果CEO斯蒂夫•乔布斯在今年1月Macworld大会上关于可以将笔记本塞进一个标准信封的描述。目前MacBook Air是世界上最薄最轻的笔记本，而且还支持多点触摸等功能。   <br /> 6,Chrome浏览器</p>
<p><img alt="" src="http://photocdn.sohu.com/20081211/Img261139728.jpg" border="0" /></p>
<p>Chrome是Google 2008年在搜索之外做的成功尝试之一。Chrome和其它浏览器不同的地方在于其有内置任务管理系统可跟踪用户所运行的网页应用。尽管Chrome的份额仍低于1%，但Google的眼光是长远的：&quot;显然，Chrome的目标在于操作系统&quot;。   <br /> 7，Twitter网站</p>
<p><img alt="" src="http://photocdn.sohu.com/20081211/Img261139729.jpg" border="0" /></p>
<p> 虽然Twitter早在2006年就诞生了，但2008年是属于Twitter的一年。今年在Twitter上张贴消息的用户增长了6倍，超过 300万。不管大小公司，包括百思买、Comcast都开始在Twitter上进行客户支持和广告宣传。而且在危机时刻，比如中国5月份的大地震、11月印度的恐怖袭击都是先从Twitter开始传播消息。   <br /> 8，Peek手机</p>
<p><img alt="" src="http://photocdn.sohu.com/20081211/Img261139730.jpg" border="0" /></p>
<p> 虽然大部分智能手机致力于为用户做所有能做的事情，Peek手机却仅仅专注于一件事情，并将它做得很好。价格便宜的Peek削减了大多在一些用户觉得没用的功能，专注于方便用户收发电子邮件。   <br /> 9，火狐3浏览器</p>
<p><img alt="" src="http://photocdn.sohu.com/20081211/Img261139731.jpg" border="0" /></p>
<p> 仅在发布的头一天，火狐3的下载量就超过800万次，再次刷新记录。更智能、更安全的火狐3帮助Mozilla巩固了20%的浏览器份额。   <br /> 10，SlingCatcher机顶盒</p>
<p><img alt="" src="http://photocdn.sohu.com/20081211/Img261139732.jpg" border="0" /></p>
<p> 很多人喜欢从YouTube那样的视频网站上在线收看电影和电视剧，使用SlingCatcher机顶盒可以从计算机中将那些在线视频传到电视机上播放。11月，Sling公司的Sling.com站点上线，用户可以通过该网站和SlingCatcher机顶盒观看所有MGM、华纳兄弟、 CBS、NBC的电影和电视剧。   <br /> 11，任天堂的Wii Fit</p>
<p><img alt="" src="http://photocdn.sohu.com/20081211/Img261139733.jpg" border="0" /></p>
<p> 从2006年开始，任天堂的运动感应型游戏就开始推出。其今年5月推出的Wii Fit游戏套件将人体互动游戏推到一个新阶段。玩家站在一块很小的板子面前，Wii Fit可以感应玩家的平衡、弯曲，将他们在游戏中类似滑雪的动作表现出来。Wii Fit一经推出就广受欢迎，仅第三季度销售就超过200万套。   <br /> 12，惠普TouchSmart电脑IQ506</p>
<p><img alt="" src="http://photocdn.sohu.com/20081211/Img261139734.jpg" border="0" /></p>
<p> IQ506在居家使用中很受欢迎，可以在将一个屏幕放在厨房、一个放在卧室，便于家庭成员间进行娱乐及游戏。商业周刊的评价：&quot;很高兴看到惠普这样的公司能进行如此的创新&quot;。   <br /> 13，微软Zune 3.0音乐播放器</p>
<p><img alt="" src="http://photocdn.sohu.com/20081211/Img261139735.jpg" border="0" /></p>
<p> 尽管在音乐播放器上微软越来越跟不上苹果的步伐，但对Zune3.0来说仍然是一款和苹果iPod进行抗衡的产品。9月，微软宣布对Zune提供新的软件更新，以使用户在收听收音机的时候将音乐标记下来，用于日后购买或无线下载。并且在11月推出每月定制15美元即可享受免费收录10个音乐专辑的服务。   <br /> 14，Netflix Player机顶盒</p>
<p><img alt="" src="http://photocdn.sohu.com/20081211/Img261139736.jpg" border="0" /></p>
<p> 用户只要凭借Netflix Player机顶盒和无线宽带，再加上一台电视，就可以无限观看在线电影，当然前提是要和Netflix签有定制服务。   <br /> 15，日本Harmonix 的Rock Band 2音乐套件</p>
<p><img alt="" src="http://photocdn.sohu.com/20081211/Img261139737.jpg" border="0" /></p>
<p> 受益于在线摇滚乐社区的成熟，用户可以从可以社区里下载新歌并在社区中寻找伙伴组成自己的乐团，Rock Band 2成为摇滚乐迷们在节日季里的热门商品。   <br /> 16，联想ThinkPad X200</p>
<p><img alt="" src="http://photocdn.sohu.com/20081211/Img261139738.jpg" border="0" /></p>
<p> 销量跟在惠普和戴尔之后，设计跟在苹果之后的联想需要在2008年推出自己的创新产品，那就是ThinkPad X200。   <br /> 17，视频微博客网站Seesmic</p>
<p><img alt="" src="http://photocdn.sohu.com/20081211/Img261139739.jpg" border="0" /></p>
<p> 受益于Twitter，视频微博客网站Seesmic也受到欢迎。每天大约5万名Seesmic用户通过网络摄像头广播自己的视频片段。   <br /> 18，夏普限量版65英寸超薄液晶电视Aquos LC-65XS1U-S</p>
<p><img alt="" src="http://photocdn.sohu.com/20081211/Img261139740.jpg" border="0" /></p>
<p> 这款售价1.6万美元的液晶电视是夏普的最新产品，面板只有1英寸厚，具有互联网连接功能，并能根据环境光线自动调节背光亮度的功能。   <br /> 19，网络保险箱网站Drop.io</p>
<p><img alt="" src="http://photocdn.sohu.com/20081211/Img261139741.jpg" border="0" /></p>
<p> Drop.io允许用户免费上传小于100M的各种私密文件，只有拥有钥匙的用户才可以访问这些私密文件。最近，该网站增加了语音留言功能，可以将Drop.io设为一个录音电话，可以将录音文件在线存放。   <br /> 20，NeatDesk扫描仪</p>
<p><img alt="" src="http://photocdn.sohu.com/20081211/Img261139742.jpg" border="0" /></p>
<p> 这款售价500美元的扫描仪，不仅小巧，而且可以进行批量扫描，并将扫描后的电子记录自动归档。</p>
]]></content:encoded>
			<wfw:commentRss>http://pugongying.ca/blog/adamwang/?feed=rss2&amp;p=120</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
