﻿<?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>语源科技BlogJava-Jungleford's Home BlogJava分舵</title><link>http://www.blogjava.net/jungleford/</link><description>Java技术研究，兼探讨历史话题</description><language>zh-cn</language><lastBuildDate>Tue, 28 Apr 2026 19:02:55 GMT</lastBuildDate><pubDate>Tue, 28 Apr 2026 19:02:55 GMT</pubDate><ttl>60</ttl><item><title>SmartCalendar新增JNLP发布！</title><link>http://www.blogjava.net/jungleford/archive/2006/04/05/39487.html</link><dc:creator>jungleford</dc:creator><author>jungleford</author><pubDate>Wed, 05 Apr 2006 14:18:00 GMT</pubDate><guid>http://www.blogjava.net/jungleford/archive/2006/04/05/39487.html</guid><wfw:comment>http://www.blogjava.net/jungleford/comments/39487.html</wfw:comment><comments>http://www.blogjava.net/jungleford/archive/2006/04/05/39487.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jungleford/comments/commentRss/39487.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jungleford/services/trackbacks/39487.html</trackback:ping><description><![CDATA[
		<font size="2">
		</font>
		<div>需要你的机器至少有JRE 5.0以及JWS（即Java Web Start，通常JRE和JDK 1.4以后都会带），程序启动地址：</div>
		<div>
				<a href="http://osdn.dl.sourceforge.net/sourceforge/smartcalendar/smartcalendar.jnlp">
						<font color="#618b2c">http://osdn.dl.sourceforge.net/sourceforge/smartcalendar/smartcalendar.jnlp</font>
				</a>
		</div>
		<div>在弹出的“安全警告”对话框中点“是”。</div>
		<div> </div>
		<div>在我的机器上试验远程启动成功，你愿不愿意试一下？<img src="http://spaces.msn.com/rte/emoticons/smile_regular.gif" /></div>
		<div>
				<table cellspacing="0" border="0">
						<tbody>
								<tr>
										<td valign="top">
												<a href="http://tk.files.storage.msn.com/x1pmAkndzHuOffRRIuJbaqCcfZQk6DSb0CuT6VOouyKe4gumHFaH63HG6uJSZ_N8cbaeAUzGhJjm488PRjvNsyVRpG7cBLBEw6YSFdjl06tH-1ayrmr5kz59y5VcPgcVfoZrgxAjN3wlmc" target="_blank">
														<img src="http://tk.files.storage.msn.com/x1pmAkndzHuOffRRIuJbaqCcfZQk6DSb0CuvdsdYfJ6TpPH8R2Y6MmIZwl5RIsuQtmgV2CF6CPt6SdRSj0angTi4LaG4z5lsNvyci70xW-Gvmw" border="0" />
												</a>
										</td>
										<td width="15">
										</td>
										<td valign="top">
												<a href="http://tk.files.storage.msn.com/x1pmAkndzHuOffRRIuJbaqCcT37l24oY1BFn8f1W2TDOG08h-1J82eRvKpwuRSoHVmJogfVqT6bsbYfYtgMjR8MIejsnzwlhzr5LZIG0mfmWb-aswccLC408POLzZ10xumCHPYFd8OlLic" target="_blank">
														<img src="http://tk.files.storage.msn.com/x1pmAkndzHuOffRRIuJbaqCcT37l24oY1BFExpQyeGWxCH3fYaO3TbNKRsFIRd2HNAXWn8Q7zHGdObyOFXyvRUHO-Kx6fitNg0P68Z9GE8FnZE" border="0" />
												</a>
										</td>
								</tr>
								<tr height="8">
										<td>
										</td>
								</tr>
								<tr>
										<td valign="top">
												<a href="http://tk.files.storage.msn.com/x1pmAkndzHuOffRRIuJbaqCcdIUFBPdOHhXbSda_QnGNPrHGRE_VcdHJjY1at6SCmVaDp45_NWI44iCXEnOrPHFFpn2xE7FRuA40NltNk80xWOqx1AaqMX9zSqVfGA9yPNd" target="_blank">
														<img src="http://tk.files.storage.msn.com/x1pmAkndzHuOffRRIuJbaqCcdIUFBPdOHhXokmE7Fm4VAZ1WcZSVtLhAn4S_3XHvRA0Mg_6Bnf9uP6z_etmKtVfgQo18bkL7k2vf7TZawx8cLM" border="0" />
												</a>
										</td>
								</tr>
						</tbody>
				</table>
		</div>
<img src ="http://www.blogjava.net/jungleford/aggbug/39487.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jungleford/" target="_blank">jungleford</a> 2006-04-05 22:18 <a href="http://www.blogjava.net/jungleford/archive/2006/04/05/39487.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SmartCalendar 0.1 beta released!</title><link>http://www.blogjava.net/jungleford/archive/2006/04/05/39483.html</link><dc:creator>jungleford</dc:creator><author>jungleford</author><pubDate>Wed, 05 Apr 2006 13:59:00 GMT</pubDate><guid>http://www.blogjava.net/jungleford/archive/2006/04/05/39483.html</guid><wfw:comment>http://www.blogjava.net/jungleford/comments/39483.html</wfw:comment><comments>http://www.blogjava.net/jungleford/archive/2006/04/05/39483.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jungleford/comments/commentRss/39483.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jungleford/services/trackbacks/39483.html</trackback:ping><description><![CDATA[
		<font size="2">
		</font>
		<div>经过jungleford几个月业余时间的设计、编码、加工和文档化之后，时钟和日历的可视化组件库SmartCalendar终于发布到了<a href="http://sourceforge.net/"><font color="#618b2c">sourceforge</font></a>上，这是本人做的第一个（估计也可能是最后一个）比较正规化的软件，虽然目前规模很小，但个人觉得还是比较有意义的：某种程度上为JDK没有GUI日历组件的问题提供了一种可选的解决方案——当你在用<a href="http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JFileChooser.html"><font color="#618b2c">JFileChooser</font></a>或<a href="http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JColorChooser.html"><font color="#618b2c">JColorChooser</font></a>的时候，或许会纳闷怎么没有日期选择框呢？当然，这个工作早已有人做了，我的想法只是提高它的可重用性和规范化一些；锻炼了一些建模能力，理解了一些设计模式的思想；熟悉了一些软件设计规范化和文档化的过程；当然，嘿嘿，也锻炼了一把英语作文。</div>
		<div> </div>
		<div>您可以从<a href="https://sourceforge.net/projects/smartcalendar/"><font color="#618b2c">https://sourceforge.net/projects/smartcalendar/</font></a>访问到这个项目的主页。下面是这一版本的intro：</div>
		<div> </div>
		<div>============================================================</div>
		<div> </div>
		<div>-------------------------------------<br /><br />          SMART CALENDAR<br /><br />     for Java(TM) Applications<br /><br />-------------------------------------<br /><br />************<br />* CONTENTS *<br />************<br /><br />0. History<br /><br />1. Introduction<br /><br />2. Features<br /><br />3. Documentation and API Specification<br /><br />4. License and Announcement<br /><br />5. Acknowledgements<br /><br />6. Contact Me<br /><br /><br /><br /><br />0. HISTORY<br />----------<br /><br />The latest version of availability is SmartCalendar 0.1 beta.<br /><br />- SmartCalendar 0.1 beta [Feb 21th, 2006]<br /><br /><br /><br />1. INTRODUCTION<br />---------------<br /><br />1.1 Why do?<br /><br />As we know, class "Date" and "Calendar" in package "java.util" have provided plenty of functions to deal with the requirements related with time and calendar computation. However, we still feel a bean of GUI form in current JDK library is missing to help us fulfil the same kind of tasks, which is exactly my motivation to develop SmartCalendar.<br /><br />1.2 What is it?<br /><br />SmartCalendar is a library of graphical calendar beans, including calculagraph and calendar tools. It is purely Java based，and develop environments are:<br /><br />- SUN Java(TM) 2 Platform Standard Edition 5.0 Development Kit (JDK 5.0)<br /><br />- Eclipse Software Development Kit (SDK) 3.1 with Visual Editor<br /><br />1.3 Pre-Requisites<br /><br />JRE or JDK 5.0 or above and compatible environments. You can get them from<br /><br /><a href="http://java.sun.com/j2se/1.5.0/download.jsp" target="_blank"><font color="#006699">http://java.sun.com/j2se/1.5.0/download.jsp</font></a><br /><br />1.4 Installation<br /><br />- Download the latest version from <a href="http://sourceforge.net/." target="_blank"><font color="#006699">http://SourceForge.net/.</font></a> Current archive is<br /><br />  <em>smartcalendar-0.1beta-bin.zip</em> .............. only binary code and documents<br /><br />  <em>smartcalendar-0.1beta-src.zip</em> .............. only source code and documents<br /><br />  <em>smartcalendar-0.1beta-doc.zip</em> .............. only documents<br /><br />  <em>smartcalendar-0.1beta-all.zip</em> .............. full codes, including binary code, source code, and documents<br /><br />- Decompress the archive into an arbitrary directory, e.g. "SmartCalendar":<br /><br />  For Windows OS, use Winzip or WinRAR or similar tools.<br /><br />  For UNIX OS, use the command "unzip":<br /><br />      <em>unzip smartcalendar-0.1beta-all.zip -d /SmartCalendar</em><br /><br />  Of course you can use OS independent command "jar" as:<br /><br />      <em>jar xvf smartcalendar-0.1beta-all.zip -C SmartCalendar/</em><br /><br />  then the structure is:<br /><br />  SmartCalendar/<br />    |<br />    |_smartcalendar-0.1beta/<br />        |<br />        |_bin/<br />        |   |_   ........................... the binary codes<br />        |<br />        |_doc/<br />        |   |_   ........................... the documents<br />        |<br />        |_example/<br />        |   |_   ........................... some sample codes<br />        |<br />        |_src/<br />        |   |_   ........................... the source codes<br />        |<br />        |_build.xml   ...................... ANT build file<br />        |<br />        |_smartcalendar.jar   .............. the JAR archive of this library<br />        |<br />        |_ChangeLog.txt   .................. the log file of changes<br />        |<br />        |_LICENSE.txt   .................... the LGPL file<br />        |<br />        |_README.txt   ..................... this file<br />        |<br />        |_README-zh_cn.txt   ............... a Chinese version for this file<br />        |<br />        |_ReleaseNote.txt   ................ the release note<br /><br />  In <em>smartcalendar-0.1beta-bin.zip</em>, <em>smartcalendar-0.1beta-src.zip</em>, or <em>smartcalendar-0.1beta-doc.zip</em>, the directory structure is a little different. For example, in <em>smartcalendar-0.1beta-src.zip</em>, you can use the command<br /><br />      <em>ant</em><br /><br />to rebuild the project, of course, you must add a parameter in your environment variable list to indicate where the apache ANT program is. For convenience, I wrote two scripts, and execute the batch file<br /><br />      <em>build.bat</em><br /><br />on Windows, or<br /><br />      <em>chmod +x build.sh</em><br />      <em>./build.sh</em><br /><br />on UNIX-like OS.<br /><br />- Setup your environment variables (may be optional, depending on your JRE installation way):<br /><br />  JAVA_HOME ----------&gt; &lt;your JRE or JDK dir&gt;<br /><br />  ClassPath ----------&gt; .;%JAVA_HOME%\lib<br />                                 or<br />                                 .;%JAVA_HOME%\jre\lib<br /><br />  Path ---------------&gt; %JAVA_HOME%\bin<br /><br />- Launch the sample codes:<br /><br />  For Windows OS, open a command console, enter:<br /><br />      <em>cd SmartCalendar\smartcalendar-0.1beta\example</em><br />      <em>run.bat</em><br /><br />  For UNIX OS:<br /><br />      <em>cd SmartCalendar/smartcalendar-0.1beta/example</em><br />      <em>chmod +x run.sh</em><br />      <em>./run.sh</em><br /><br />If you want to use this library in your own program, just copy smartcalendar.jar to your workspace, and add it to your classpath.<br /><br /><br /><br />2. FEATURES<br />-----------<br /><br />Till now, the development of SmartCalendar is still ongoing, but it already has some basic functionalities including:<br /><br />- A suite of graphical clock interfaces:<br /><br />  * Digital-type clock bean<br /><br />  * Analog-type clock bean and entire extendable APIs<br /><br />- Calendar interfaces:<br /><br />  * Month calendar interface and default implementation<br /><br />  * Year calendar bean, actually it is reusage of month calendar bean<br /><br />For more details, please refer to "doc/manual.html".<br /><br /><br /><br />3. DOCUMENTATION AND API SPECIFICATION<br />--------------------------------------<br /><br />Manuals and APIs in JavaDoc format are archived in directory "<em>doc/</em>". All of them are HTML pages.<br /><br /><br /><br />4. LICENSE AND ANNOUNCEMENT<br />---------------------------<br /><br />This project is licensed under the terms defined in LICENSE.txt, it is a copy of GNU Lesser General Public License (LGPL).<br /><br />SmartCalendar is an open source project. The source code of the software is available upon requests, but must be marked with "Powered by Samuel Lee" whenever it is redistributed, or "With contributions from Samuel Lee" whenever it is modified. The author will NOT be responsible for legal liabilities caused by any redistribution with or without any modification.<br /><br />CAUTION: THIS SOFTWARE MUST NOT BE USED FOR ANY COMMERCIAL PURPOSE WITHOUT THE AUTHOR'S PERMISSION! ANY VIOLATION MAY BE FACED WITH LITIGATION!<br /><br /><br /><br />5. ACKNOWLEDGEMENTS<br />-------------------<br /><br />The codes written by Mitch Goldstein give me lots of ideas and hints, so that I used and modified some of them in my own work. If you are interested in his works, please follow this link:<br /><br /><a href="http://www-128.ibm.com/developerworks/edu/j-dw-java2d-i.html" target="_blank"><font color="#006699">http://www-128.ibm.com/developerworks/edu/j-dw-java2d-i.html</font></a><br /><br />And thanks to my friend Mr. Rong, he revised this document and gave me many advices.<br /><br /><br /><br />6. CONTACT ME<br />-------------<br /><br />If you find any bugs or have any suggestions, please feel free to inform me, and I will appreciate your valuable and selfless help. You can get in touch with me by the following e-mail address:<br /><br /><a href="mailto:smartcalendar@gmail.com">smartcalendar@gmail.com</a><br /><br />Thanks for all, and all the luck in the world! Sincerely and truly,<br /><br />                                              SAMUEL LEE<br /><br />Copyright 2006 The SmartCalendar Project, Samuel Lee</div>
		<div>
				<table class="fixedTable blogpost" cellspacing="0" width="100%" border="0">
						<tbody>
								<tr>
										<td id="msgcns!E733CCEEE4BE0FB2!759">
										</td>
								</tr>
								<tr>
										<td>
												<table cellspacing="0" border="0">
														<tbody>
																<tr height="8">
																		<td>
																		</td>
																</tr>
																<tr>
																		<td valign="top">
																				<a href="http://tk.files.storage.msn.com/x1pmAkndzHuOffRRIuJbaqCcTqo5koQVroRHcj0bWbipgOOWArVHNFJU_InVuJ6VLUP3d7BDqL51aWFNUkOG3DjbuUhI8ub1IeMC2I17tp0rpW0PLaty6fVt_WVPSSz7OXBPMdYL8oHm3k" target="_blank">
																						<img src="http://tk.files.storage.msn.com/x1pmAkndzHuOffRRIuJbaqCcTqo5koQVroR8mpnDJEtt5ZuqZKm3amkvCh7jIIsvMJVxEYV_SXubsLUnj8OMBiB_4qN9kzEcdsAbim2m_quXK8" border="0" />
																				</a>
																		</td>
																		<td width="15">
																		</td>
																		<td valign="top">
																				<a href="http://tk.files.storage.msn.com/x1pmAkndzHuOffRRIuJbaqCccgZQinWmG7XdZL2KnFlIAAQi_OYFW7vFg943QTvtzXQypsuGjsPD90tPndKD-ucNrp_OEuX6z1hZlH82cCAktYVjBAZqtnnlb1PK3fm4DcZs2LGmVDjoVE" target="_blank">
																						<img src="http://tk.files.storage.msn.com/x1pmAkndzHuOffRRIuJbaqCccgZQinWmG7Xr3DseL8wxUTb6flQGhrBw-LEKOlo-Uv2uSxQJ0Di7n8m0Vh3cQbSlBjspvM-IZZB9Ji9D6Pwbjw" border="0" />
																				</a>
																		</td>
																</tr>
																<tr height="8">
																		<td>
																		</td>
																</tr>
																<tr>
																		<td valign="top">
																				<a href="http://tk.files.storage.msn.com/x1pmAkndzHuOffRRIuJbaqCccjTv6azgdBFZ_dFJV6XLwAdyfQsXSN7R5AEVPPqF48i5rZXbICh3wrUZpQJqumcZVvGKVQ3h_zrhKljc9j0Ik-Zs4Scw_TcsZPgeWZowFPpP_8AKr1Wwnc" target="_blank">
																						<img src="http://tk.files.storage.msn.com/x1pmAkndzHuOffRRIuJbaqCccjTv6azgdBFJesdH0abNKmnCkM0r-jkCWNl4eDdPtiLjespNanZunOFa5DjfSMtztA2zhY4OgHqCl3kX501bhg" border="0" />
																				</a>
																		</td>
																		<td width="15">
																		</td>
																		<td valign="top">
																				<a href="http://tk.files.storage.msn.com/x1pmAkndzHuOffRRIuJbaqCcWnSLHobTEQQLd91U6KPaVznr0SwCXAKPDYz9bok_em6s4YD5p_48GR2V6Sc-WzJpEIT68OHrgGgEnSxASr0gpcPcLmGBNTBwnxoxuCHnH2vmzra7-3kbSk" target="_blank">
																						<img src="http://tk.files.storage.msn.com/x1pmAkndzHuOffRRIuJbaqCcWnSLHobTEQQBae6xHtnDod9lt6KjVPhgHNMVEx6hu3X6jfektarhgCQqodx3DMDO7llNcetMhmkao3J55jJTSI" border="0" />
																				</a>
																		</td>
																</tr>
																<tr height="8">
																		<td>
																		</td>
																</tr>
																<tr>
																		<td valign="top">
																				<a href="http://tk.files.storage.msn.com/x1pmAkndzHuOffRRIuJbaqCcdR-y6KeCWdcdEFgzcEg3LNI_wnRUCOeoEii94CInzMAl4r4z1KNeBVCWJ_RTEipf5BnZaIod4MEsZskJbv6DkBXB9Q1VetHAHooPa4AZyYw24qi5gPVYHU" target="_blank">
																						<img src="http://tk.files.storage.msn.com/x1pmAkndzHuOffRRIuJbaqCcdR-y6KeCWdcP2ILbv5Hw9eFGrX1zb9V4oT2d5GafUJ519fDZ6CstzCn4LFaNSv9XARohD-gKboS5cSK1YfRyJw" border="0" />
																				</a>
																		</td>
																</tr>
														</tbody>
												</table>
										</td>
								</tr>
						</tbody>
				</table>
		</div>
<img src ="http://www.blogjava.net/jungleford/aggbug/39483.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jungleford/" target="_blank">jungleford</a> 2006-04-05 21:59 <a href="http://www.blogjava.net/jungleford/archive/2006/04/05/39483.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MSNHC居然被人继续开发下去了！</title><link>http://www.blogjava.net/jungleford/archive/2006/04/05/39481.html</link><dc:creator>jungleford</dc:creator><author>jungleford</author><pubDate>Wed, 05 Apr 2006 13:47:00 GMT</pubDate><guid>http://www.blogjava.net/jungleford/archive/2006/04/05/39481.html</guid><wfw:comment>http://www.blogjava.net/jungleford/comments/39481.html</wfw:comment><comments>http://www.blogjava.net/jungleford/archive/2006/04/05/39481.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jungleford/comments/commentRss/39481.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jungleford/services/trackbacks/39481.html</trackback:ping><description><![CDATA[
		<font size="2">
		</font>
		<div>jungleford大大惊讶了一把！啥？什么叫MSNHC？就是<a href="http://spaces.msn.com/jungleford/Blog/cns!1pSE8tZ3x3hxOv2CxSnIJQbw!407.entry"><font color="#618b2c">MSNHistoryCombiner</font></a>，去年做的一个小玩意，只是一个为了解决问题的东东，并没有正儿八经做成软件的意思。后来一位网友有意完成MSN历史记录和gaim聊天记录之间的合并工作，但我对gaim不了解，今天chow chou网友告诉我他的工作做的差不多了，看到这个小东西居然对别人有所帮助，真的很高兴<img src="http://spaces.msn.com/rte/emoticons/smile_regular.gif" /></div>
		<div> </div>
		<div>chow chou网友的工作在<a href="http://svn.redv.com/websvn/log.php?repname=hc&amp;path=/&amp;rev=0&amp;sc=0&amp;isdir=1"><font color="#618b2c">这里</font></a></div>
<img src ="http://www.blogjava.net/jungleford/aggbug/39481.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jungleford/" target="_blank">jungleford</a> 2006-04-05 21:47 <a href="http://www.blogjava.net/jungleford/archive/2006/04/05/39481.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【翻译】仿射变换</title><link>http://www.blogjava.net/jungleford/archive/2005/11/29/21829.html</link><dc:creator>jungleford</dc:creator><author>jungleford</author><pubDate>Tue, 29 Nov 2005 07:43:00 GMT</pubDate><guid>http://www.blogjava.net/jungleford/archive/2005/11/29/21829.html</guid><wfw:comment>http://www.blogjava.net/jungleford/comments/21829.html</wfw:comment><comments>http://www.blogjava.net/jungleford/archive/2005/11/29/21829.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/jungleford/comments/commentRss/21829.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jungleford/services/trackbacks/21829.html</trackback:ping><description><![CDATA[<H3><U><B><FONT color=#ff0000>jungleford如是说</FONT></B></U></H3>开始做模拟时钟的bean了，看<A class=l2 href="http://www-128.ibm.com/developerworks/cn/" target=_blank>dW</A>上Java&nbsp;2D的那个例子很有意思，比JDK自带的applet要简单，因为用到了仿射变换（Affine&nbsp;Transformation），只用简单得多的运算就可以绘制较高质量的动画。乘SUN的<A class=l2 href="http://gceclub.sun.com.cn/chinese_java_docs.html" target=_blank>JavaDoc中文化</A>之东风，先把java.awt.geom.<A class=l2 href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/geom/AffineTransform.html" target=_blank>AffineTransform</A>的API&nbsp;doc之一部分简单翻译一下，只涉及到一点几何和线性代数的小常识：<BR>===============================================================================<BR><BR>&nbsp;AffineTransform类描述了一种二维仿射变换的功能，它是一种二维坐标到二维坐标之间的线性变换，保持二维图形的“平直性”（译注：straightness，即变换后直线还是直线不会打弯，圆弧还是圆弧）和“平行性”（译注：parallelness，其实是指保二维图形间的相对位置关系不变，平行线还是平行线，相交直线的交角不变。大二学过的复变，“保形变换/保角变换”都还记得吧，数学就是王道啊！）。仿射变换可以通过一系列的原子变换的复合来实现，包括：平移（Translation）、缩放（Scale）、翻转（Flip）、旋转（Rotation）和剪切（Shear）。<BR>&nbsp;<BR>此类变换可以用一个3×3的矩阵来表示，其最后一行为(0,&nbsp;0,&nbsp;1)。该变换矩阵将原坐标(x,&nbsp;y)变换为新坐标(x',&nbsp;y')，这里原坐标和新坐标皆视为最末一行为(1)的三维列向量，原列向量左乘变换矩阵得到新的列向量：<BR>&nbsp;<BR>[x']&nbsp;&nbsp;&nbsp;&nbsp;[m00&nbsp;m01&nbsp;m02]&nbsp;[x]&nbsp;&nbsp;&nbsp;&nbsp;[m00*x+m01*y+m02]<BR>[y']&nbsp;=&nbsp;[m10&nbsp;m11&nbsp;m12]&nbsp;[y]&nbsp;=&nbsp;[m10*x+m11*y+m12]<BR>[1&nbsp;]&nbsp;&nbsp;&nbsp;[&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;]&nbsp;[1]&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<BR><BR>&nbsp;<BR>几种典型的仿射变换：<BR><BR>
<P class=codeStyle><B><FONT color=#0000ff>public</FONT></B>&nbsp;<B><FONT color=#0000ff>static</FONT></B>&nbsp;<FONT color=#ff0000>AffineTransform</FONT>&nbsp;<A href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/geom/AffineTransform.html#getTranslateInstance(double, double)">getTranslateInstance</A>(<B><FONT color=#0000ff>double</FONT></B>&nbsp;tx,&nbsp;<B><FONT color=#0000ff>double</FONT></B>&nbsp;ty) </P>平移变换，将每一点移动到(x+tx,&nbsp;y+ty)，变换矩阵为：<BR>[&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;tx&nbsp;&nbsp;]<BR>[&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;ty&nbsp;&nbsp;]<BR>[&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;]<BR>（译注：平移变换是一种“刚体变换”，rigid-body transformation，中学学过的物理，都知道啥叫“刚体”吧，就是不会产生形变的理想物体，平移当然不会改变二维图形的形状。同理，下面的“旋转变换”也是刚体变换，而“缩放”、“错切”都是会改变图形形状的。）&nbsp;<BR>
<P class=codeStyle><B><FONT color=#0000ff>public</FONT></B>&nbsp;<B><FONT color=#0000ff>static</FONT></B>&nbsp;<FONT color=#ff0000>AffineTransform</FONT>&nbsp;<A href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/geom/AffineTransform.html#getScaleInstance(double, double)">getScaleInstance</A>(<B><FONT color=#0000ff>double</FONT></B>&nbsp;sx,&nbsp;<B><FONT color=#0000ff>double</FONT></B>&nbsp;sy) </P>缩放变换，将每一点的横坐标放大（缩小）至sx倍，纵坐标放大（缩小）至sy倍，变换矩阵为：<BR>[&nbsp;&nbsp;&nbsp;sx&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;]<BR>[&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;sy&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;]<BR>[&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;]<BR><BR>
<P class=codeStyle><B><FONT color=#0000ff>public</FONT></B>&nbsp;<B><FONT color=#0000ff>static</FONT></B>&nbsp;<FONT color=#ff0000>AffineTransform</FONT>&nbsp;<A href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/geom/AffineTransform.html#getShearInstance(double, double)">getShearInstance</A>(<B><FONT color=#0000ff>double</FONT></B>&nbsp;shx,&nbsp;<B><FONT color=#0000ff>double</FONT></B>&nbsp;shy) </P>剪切变换，变换矩阵为：<BR>[&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;shx&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;]<BR>[&nbsp;&nbsp;shy&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;]<BR>[&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;]<BR>相当于一个横向剪切与一个纵向剪切的复合<BR>[&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;][&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;shx&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;]<BR>[&nbsp;&nbsp;shy&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;][&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;]<BR>[&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;][&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;]<BR>（译注：“剪切变换”又称“错切变换”，指的是类似于四边形不稳定性那种性质，街边小商店那种铁拉门都见过吧？想象一下上面铁条构成的菱形拉动的过程，那就是“错切”的过程。）&nbsp;<BR>
<P class=codeStyle><B><FONT color=#0000ff>public</FONT></B>&nbsp;<B><FONT color=#0000ff>static</FONT></B>&nbsp;<FONT color=#ff0000>AffineTransform</FONT>&nbsp;<A href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/geom/AffineTransform.html#getRotateInstance(double)">getRotateInstance</A>(<B><FONT color=#0000ff>double</FONT></B>&nbsp;theta) </P>旋转变换，目标图形围绕原点顺时针旋转theta弧度，变换矩阵为：<BR>[&nbsp;&nbsp;&nbsp;cos(theta)&nbsp;&nbsp;&nbsp;&nbsp;-sin(theta)&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;]<BR>[&nbsp;&nbsp;&nbsp;sin(theta)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cos(theta)&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;]<BR>[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;]<BR><BR>
<P class=codeStyle><B><FONT color=#0000ff>public</FONT></B>&nbsp;<B><FONT color=#0000ff>static</FONT></B>&nbsp;<FONT color=#ff0000>AffineTransform</FONT>&nbsp;<A href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/geom/AffineTransform.html#getRotateInstance(double, double, double)">getRotateInstance</A>(<B><FONT color=#0000ff>double</FONT></B>&nbsp;theta,&nbsp;<B><FONT color=#0000ff>double</FONT></B>&nbsp;x,&nbsp;<B><FONT color=#0000ff>double</FONT></B>&nbsp;y) </P>旋转变换，目标图形以(x,&nbsp;y)为轴心顺时针旋转theta弧度，变换矩阵为：<BR>[&nbsp;&nbsp;&nbsp;cos(theta)&nbsp;&nbsp;&nbsp;&nbsp;-sin(theta)&nbsp;&nbsp;&nbsp;&nbsp;x-x*cos+y*sin]<BR>[&nbsp;&nbsp;&nbsp;sin(theta)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cos(theta)&nbsp;&nbsp;&nbsp;&nbsp;y-x*sin-y*cos&nbsp;]<BR>[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<BR>相当于两次平移变换与一次原点旋转变换的复合：<BR>[1&nbsp;&nbsp;0&nbsp;&nbsp;-x][cos(theta)&nbsp;&nbsp;-sin(theta)&nbsp;&nbsp;0][1&nbsp;&nbsp;0&nbsp;&nbsp;x]<BR>[0&nbsp;&nbsp;1&nbsp;&nbsp;-y][sin(theta)&nbsp;&nbsp;&nbsp;cos(theta)&nbsp;&nbsp;0][0&nbsp;&nbsp;1&nbsp;&nbsp;y]<BR>[0&nbsp;&nbsp;0&nbsp;&nbsp;1&nbsp;][&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;][0&nbsp;&nbsp;0&nbsp;&nbsp;1] <BR><img src ="http://www.blogjava.net/jungleford/aggbug/21829.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jungleford/" target="_blank">jungleford</a> 2005-11-29 15:43 <a href="http://www.blogjava.net/jungleford/archive/2005/11/29/21829.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从Jar包获取资源的方法</title><link>http://www.blogjava.net/jungleford/archive/2005/06/11/5907.html</link><dc:creator>jungleford</dc:creator><author>jungleford</author><pubDate>Sat, 11 Jun 2005 04:41:00 GMT</pubDate><guid>http://www.blogjava.net/jungleford/archive/2005/06/11/5907.html</guid><wfw:comment>http://www.blogjava.net/jungleford/comments/5907.html</wfw:comment><comments>http://www.blogjava.net/jungleford/archive/2005/06/11/5907.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/jungleford/comments/commentRss/5907.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jungleford/services/trackbacks/5907.html</trackback:ping><description><![CDATA[<P><FONT face=Verdana color=#ff0000><STRONG><U>jungleford如是说</U></STRONG></FONT></P>
<P><FONT face=Verdana size=2>&nbsp;&nbsp;&nbsp; 可能有不少初学者会有这样的困惑（以前我也有过）：在你的代码里调用了一些资源文件，如图片，音乐等，在调试环境或单独运行的时候可以正常显示或播放，而一旦打包到jar文件中，这些东东就再也出不来了，除非把这个jar放到原来未打包以前的目录下，但通常jar是单独发布的。这里介绍一个解决这类问题的方法。</FONT></P>
<P><FONT face=Verdana color=#ff0000><STRONG><U>getResource和getResourceAsStream</U></STRONG></FONT></P>
<P><FONT face=Verdana size=2>&nbsp;&nbsp;&nbsp; 问题的根源还是在于老生常谈的所谓class path，不信的话你在系统环境变量里的ClassPath加上你的jar文件，这下你就看得到你的图片了！但单独发布jar的话不可能指望每次都让用户为你的jar而专门修改classpath。那么有没有什么办法一劳永逸地搞定它呢？我们需要从类的装载入手。先扯远一点，在开发JSP之类的Web应用程序的时候要用到第三方的库怎么办？通常的做法是把这些库（可以是class，也可以是jar）统统放到WEB-INF/lib/目录下面，为什么这样系统就认了呢？因为Web容器（譬如Tomcat）在装载类的时候有自己的组织方式（可以参考<A href="http://jakarta.apache.org/tomcat/tomcat-4.1-doc/class-loader-howto.html">Tomcat手册</A>）。特别地，jar也是类装载器的一个可访问媒介，ClassLoader提供了两个方法用于从装载的类路径中取得资源：<BR></FONT><FONT face=Verdana size=2></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;URL&nbsp;getResource(String&nbsp;name);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;InputStream&nbsp;getResourceAsStream(String&nbsp;name);</SPAN></DIV></DIV>
<P><BR>这里name是资源的类路径，它是相对与“/”根路径下的位置。getResource得到的是一个URL对象来定位资源，而getResourceAsStream取得该资源输入流的引用保证程序可以从正确的位置抽取数据。<BR>&nbsp;&nbsp;&nbsp; 真正使用的不是ClassLoader的这两个方法，而是Class的getResource和getResourceAsStream方法，因为Class对象可以从你的类得到（如YourClass.class或YourClass.getClass()），而ClassLoader则需要再调用一次YourClass.getClassLoader()方法，但根据JDK文档的说法，Class对象的这两个方法其实是“委托”（delegate）给装载它的ClassLoader来做的，所以只需要使用Class对象的这两个方法就可以了。<BR>&nbsp;&nbsp;&nbsp; 在参考资料中有一篇老外写的文章比较深入介绍了从jar中装载资源的方法。</FONT></P>
<P><FONT face=Verdana color=#ff0000><STRONG><U>一个应用的例子</U></STRONG></FONT></P>
<P><FONT face=Verdana size=2>&nbsp;&nbsp;&nbsp; 以下是在我写的一个小工具MSNHistoryCombiner中用到的一段代码，可以从jar中装载图片和文本信息。譬如，你的jar中根目录下有个img目录，里面放有一些图片，如img1.jpg，你可以这样调用<BR></FONT><FONT face=Verdana size=2></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">Utilities.getImageFromJar(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">/img/img1.jpg</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;YourClass.</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">);</SPAN></DIV></DIV>
<P><BR>注意必须这里是“/img/img1.jpg”而非“img/img1.jpg”。从jar中读文本资源也是类似方法调用getTextFromJar。<BR>&nbsp;&nbsp;&nbsp; 需要说明的是，这段代码也不是我原创的，是从一段别的代码中经过修改得到的，但原代码的来源忘记了，在这里向原作者表示感谢和歉意。</FONT><FONT face=Verdana size=2></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">import&nbsp;java.io.</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>import&nbsp;java.awt.</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;Utilities<BR><IMG id=Codehighlighter1_61_2162_Open_Image onclick="this.style.display='none'; Codehighlighter1_61_2162_Open_Text.style.display='none'; Codehighlighter1_61_2162_Closed_Image.style.display='inline'; Codehighlighter1_61_2162_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_61_2162_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_61_2162_Closed_Text.style.display='none'; Codehighlighter1_61_2162_Open_Image.style.display='inline'; Codehighlighter1_61_2162_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_61_2162_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_61_2162_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG id=Codehighlighter1_65_263_Open_Image onclick="this.style.display='none'; Codehighlighter1_65_263_Open_Text.style.display='none'; Codehighlighter1_65_263_Closed_Image.style.display='inline'; Codehighlighter1_65_263_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_65_263_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_65_263_Closed_Text.style.display='none'; Codehighlighter1_65_263_Open_Image.style.display='inline'; Codehighlighter1_65_263_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_65_263_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</SPAN><SPAN id=Codehighlighter1_65_263_Open_Text><SPAN style="COLOR: #008000">/*</SPAN><SPAN style="COLOR: #008000">*<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;*&nbsp;&lt;p&gt;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;*&nbsp;Description:&nbsp;Return&nbsp;an&nbsp;Image&nbsp;based&nbsp;on&nbsp;the&nbsp;supplied&nbsp;image&nbsp;identifier.&nbsp;The<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;*&nbsp;image&nbsp;is&nbsp;assumed&nbsp;to&nbsp;reside&nbsp;at&nbsp;the&nbsp;defined&nbsp;location&nbsp;within&nbsp;the&nbsp;same<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;*&nbsp;repository&nbsp;as&nbsp;this&nbsp;class.<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;Image&nbsp;getImageFromJar(final&nbsp;String&nbsp;imageId,&nbsp;Class&nbsp;c)<BR><IMG id=Codehighlighter1_336_1519_Open_Image onclick="this.style.display='none'; Codehighlighter1_336_1519_Open_Text.style.display='none'; Codehighlighter1_336_1519_Closed_Image.style.display='inline'; Codehighlighter1_336_1519_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_336_1519_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_336_1519_Closed_Text.style.display='none'; Codehighlighter1_336_1519_Open_Image.style.display='inline'; Codehighlighter1_336_1519_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_336_1519_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_336_1519_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;Image&nbsp;reference&nbsp;initialised&nbsp;to&nbsp;null&nbsp;(the&nbsp;image&nbsp;may&nbsp;not&nbsp;be&nbsp;found).</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Image&nbsp;image&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;Open&nbsp;a&nbsp;resource&nbsp;stream&nbsp;on&nbsp;the&nbsp;supplied&nbsp;image&nbsp;identifier.</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;InputStream&nbsp;inputStream&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;c.getResourceAsStream(imageId);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;If&nbsp;the&nbsp;image&nbsp;data&nbsp;is&nbsp;found<IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(inputStream&nbsp;</SPAN><SPAN style="COLOR: #000000">!=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">)<BR><IMG id=Codehighlighter1_637_1497_Open_Image onclick="this.style.display='none'; Codehighlighter1_637_1497_Open_Text.style.display='none'; Codehighlighter1_637_1497_Closed_Image.style.display='inline'; Codehighlighter1_637_1497_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_637_1497_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_637_1497_Closed_Text.style.display='none'; Codehighlighter1_637_1497_Open_Image.style.display='inline'; Codehighlighter1_637_1497_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_637_1497_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_637_1497_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;Open&nbsp;a&nbsp;byte&nbsp;array&nbsp;output&nbsp;stream&nbsp;so&nbsp;that&nbsp;we&nbsp;can&nbsp;create&nbsp;a&nbsp;byte<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;array&nbsp;with&nbsp;which&nbsp;to&nbsp;create&nbsp;the&nbsp;image.</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;ByteArrayOutputStream&nbsp;byteArrayOutputStream&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;ByteArrayOutputStream();<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;Attempt&nbsp;to&nbsp;copy&nbsp;the&nbsp;source&nbsp;image&nbsp;data&nbsp;into&nbsp;the&nbsp;byte&nbsp;array<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;stream,&nbsp;and&nbsp;then&nbsp;create&nbsp;an&nbsp;image&nbsp;from&nbsp;the&nbsp;result.</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">try</SPAN><SPAN style="COLOR: #000000"><BR><IMG id=Codehighlighter1_985_1402_Open_Image onclick="this.style.display='none'; Codehighlighter1_985_1402_Open_Text.style.display='none'; Codehighlighter1_985_1402_Closed_Image.style.display='inline'; Codehighlighter1_985_1402_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_985_1402_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_985_1402_Closed_Text.style.display='none'; Codehighlighter1_985_1402_Open_Image.style.display='inline'; Codehighlighter1_985_1402_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_985_1402_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_985_1402_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;Read/write&nbsp;image&nbsp;data&nbsp;in&nbsp;1k&nbsp;chunks.</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;</SPAN><SPAN style="COLOR: #0000ff">byte</SPAN><SPAN style="COLOR: #000000">[]&nbsp;bytes&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">byte</SPAN><SPAN style="COLOR: #000000">[</SPAN><SPAN style="COLOR: #000000">1024</SPAN><SPAN style="COLOR: #000000">];<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;read&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">while</SPAN><SPAN style="COLOR: #000000">&nbsp;((read&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;inputStream.read(bytes))&nbsp;</SPAN><SPAN style="COLOR: #000000">&gt;=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">)<BR><IMG id=Codehighlighter1_1163_1228_Open_Image onclick="this.style.display='none'; Codehighlighter1_1163_1228_Open_Text.style.display='none'; Codehighlighter1_1163_1228_Closed_Image.style.display='inline'; Codehighlighter1_1163_1228_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_1163_1228_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1163_1228_Closed_Text.style.display='none'; Codehighlighter1_1163_1228_Open_Image.style.display='inline'; Codehighlighter1_1163_1228_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_1163_1228_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_1163_1228_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byteArrayOutputStream.write(bytes,&nbsp;</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">,&nbsp;read);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;Create&nbsp;an&nbsp;image&nbsp;from&nbsp;the&nbsp;resulting&nbsp;byte&nbsp;array.</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Toolkit.getDefaultToolkit().createImage(<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byteArrayOutputStream.toByteArray());<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">catch</SPAN><SPAN style="COLOR: #000000">&nbsp;(IOException&nbsp;exception)<BR><IMG id=Codehighlighter1_1446_1491_Open_Image onclick="this.style.display='none'; Codehighlighter1_1446_1491_Open_Text.style.display='none'; Codehighlighter1_1446_1491_Closed_Image.style.display='inline'; Codehighlighter1_1446_1491_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_1446_1491_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1446_1491_Closed_Text.style.display='none'; Codehighlighter1_1446_1491_Open_Image.style.display='inline'; Codehighlighter1_1446_1491_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_1446_1491_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_1446_1491_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exception.printStackTrace();<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;image;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;String&nbsp;getTextFromJar(final&nbsp;String&nbsp;filename,&nbsp;Class&nbsp;c)<BR><IMG id=Codehighlighter1_1594_2160_Open_Image onclick="this.style.display='none'; Codehighlighter1_1594_2160_Open_Text.style.display='none'; Codehighlighter1_1594_2160_Closed_Image.style.display='inline'; Codehighlighter1_1594_2160_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_1594_2160_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1594_2160_Closed_Text.style.display='none'; Codehighlighter1_1594_2160_Open_Image.style.display='inline'; Codehighlighter1_1594_2160_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_1594_2160_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_1594_2160_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;text&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">""</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;Open&nbsp;a&nbsp;resource&nbsp;stream&nbsp;on&nbsp;the&nbsp;supplied&nbsp;file&nbsp;name.</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;InputStream&nbsp;inputStream&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;c.getResourceAsStream(filename);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;If&nbsp;the&nbsp;file&nbsp;is&nbsp;found<IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(inputStream&nbsp;</SPAN><SPAN style="COLOR: #000000">!=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">)<BR><IMG id=Codehighlighter1_1808_2139_Open_Image onclick="this.style.display='none'; Codehighlighter1_1808_2139_Open_Text.style.display='none'; Codehighlighter1_1808_2139_Closed_Image.style.display='inline'; Codehighlighter1_1808_2139_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_1808_2139_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1808_2139_Closed_Text.style.display='none'; Codehighlighter1_1808_2139_Open_Image.style.display='inline'; Codehighlighter1_1808_2139_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_1808_2139_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_1808_2139_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;BufferedReader&nbsp;</SPAN><SPAN style="COLOR: #0000ff">in</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;BufferedReader(</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;InputStreamReader(<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inputStream));<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">try</SPAN><SPAN style="COLOR: #000000"><BR><IMG id=Codehighlighter1_1925_2044_Open_Image onclick="this.style.display='none'; Codehighlighter1_1925_2044_Open_Text.style.display='none'; Codehighlighter1_1925_2044_Closed_Image.style.display='inline'; Codehighlighter1_1925_2044_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_1925_2044_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1925_2044_Closed_Text.style.display='none'; Codehighlighter1_1925_2044_Open_Image.style.display='inline'; Codehighlighter1_1925_2044_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_1925_2044_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_1925_2044_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;s;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">while</SPAN><SPAN style="COLOR: #000000">&nbsp;((s&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">in</SPAN><SPAN style="COLOR: #000000">.readLine())&nbsp;</SPAN><SPAN style="COLOR: #000000">!=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">)<BR><IMG id=Codehighlighter1_1997_2036_Open_Image onclick="this.style.display='none'; Codehighlighter1_1997_2036_Open_Text.style.display='none'; Codehighlighter1_1997_2036_Closed_Image.style.display='inline'; Codehighlighter1_1997_2036_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_1997_2036_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1997_2036_Closed_Text.style.display='none'; Codehighlighter1_1997_2036_Open_Image.style.display='inline'; Codehighlighter1_1997_2036_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_1997_2036_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_1997_2036_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text&nbsp;</SPAN><SPAN style="COLOR: #000000">+=</SPAN><SPAN style="COLOR: #000000">&nbsp;s&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">\n</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">catch</SPAN><SPAN style="COLOR: #000000">&nbsp;(IOException&nbsp;exception)<BR><IMG id=Codehighlighter1_2088_2133_Open_Image onclick="this.style.display='none'; Codehighlighter1_2088_2133_Open_Text.style.display='none'; Codehighlighter1_2088_2133_Closed_Image.style.display='inline'; Codehighlighter1_2088_2133_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_2088_2133_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2088_2133_Closed_Text.style.display='none'; Codehighlighter1_2088_2133_Open_Image.style.display='inline'; Codehighlighter1_2088_2133_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_2088_2133_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_2088_2133_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exception.printStackTrace();<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;text;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV>
<P><BR><FONT color=#ff0000 size=3><STRONG><U>参考资料</U></STRONG></FONT></P>
<P><A href="http://java.sun.com/j2se/1.5.0/docs/api/index.html">J2SE API Documentation</A></P>
<P><A href="http://www-128.ibm.com/developerworks/cn/java/j-onejar/">用 One-JAR 简化应用程序交付</A><BR></FONT></P><img src ="http://www.blogjava.net/jungleford/aggbug/5907.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jungleford/" target="_blank">jungleford</a> 2005-06-11 12:41 <a href="http://www.blogjava.net/jungleford/archive/2005/06/11/5907.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MSN历史记录合并工具MSNHistoryCombiner</title><link>http://www.blogjava.net/jungleford/archive/2005/06/11/5906.html</link><dc:creator>jungleford</dc:creator><author>jungleford</author><pubDate>Sat, 11 Jun 2005 04:34:00 GMT</pubDate><guid>http://www.blogjava.net/jungleford/archive/2005/06/11/5906.html</guid><wfw:comment>http://www.blogjava.net/jungleford/comments/5906.html</wfw:comment><comments>http://www.blogjava.net/jungleford/archive/2005/06/11/5906.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/jungleford/comments/commentRss/5906.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jungleford/services/trackbacks/5906.html</trackback:ping><description><![CDATA[<P><FONT size=2></FONT><FONT color=#ff0000><STRONG><U>jungleford如是说</U></STRONG></FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果你是一个MSN的多年用户，是否会有这样的烦恼：可能你在好几个不同的地方上网（家中、学校、公司、使用笔记本移动等等），在每个地方的机器上都保留一套MSN聊天记录，一段时间后也许你就要离开某个地方了（譬如毕业），但又想保存那台机器上的聊天记录，怎么办？一般是把“C:\Documents and Settings\&lt;你的机器帐号&gt;\My Documents\我接收到的文件\&lt;你的MSN帐号再加上一串数字&gt;\历史记录”文件夹拷贝一份备份着，这样时间一长，你可能就有好几个这样的“历史记录”，在MSN Messenger里查看得到的只是你当前机器上的那部分记录，如果想要看其它记录，只好手动打开那些拷贝过来的XML文件了。当然，QQ可能也有类似的问题，但我早就不用它了，所以只能说“可能”<IMG height=19 src="http://www.blogjava.net/Emoticons/regular_smile.gif" width=19 border=0><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 懒汉jungleford于是就想了，能不能把这好几套聊天记录合并成一套，同时又保持记录原有的格式使MSN能够识别呢？于是<A href="http://www.google.com/">google</A>之，找了好久都没有找到，哼，于是自己动手了，趁毕业前的空闲花几天时间写了这么个小工具——MSN历史记录合并器。由于只是玩玩，可能还有一些不尽人意的地方，但大抵可以满足要求了。</FONT></P>
<P><FONT color=#ff0000><STRONG><U>使用方法</U></STRONG></FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 该程序是纯Java编写的，需要你的机器上安装JRE或JDK，如果没有，可以到以下地址下载：</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A href="http://java.sun.com/j2se/1.5.0/download.jsp">http://java.sun.com/j2se/1.5.0/download.jsp</A></FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 安装完后一般直接双击我这个Combiner.jar文件就可以运行了。如果有什么问题，就在“我的电脑→属性→高级→环境变量”里添加一个名为“JAVA_HOME”的环境变量，其值为你安装的JRE或JDK的路径，然后修改“path”环境变量，在其值尾部加一个“%JAVA_HOME%\bin”。然后打开一个命令行方式的控制台，转到Combiner.jar所在的目录，键入<BR></FONT><FONT size=2><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;javaw -jar Combiner.jar<BR><BR>或<BR></FONT><FONT size=2><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java -jar Combiner.jar<BR></FONT><FONT size=2><BR>运行即可。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 本工具可以合并两个历史记录目录（比如一个是你当前机器上的“<FONT style="BACKGROUND-COLOR: #a9a9a9">C:\Documents and Settings\&lt;你的机器帐号&gt;\My Documents\我接收到的文件\&lt;你的MSN帐号再加上一串数字&gt;\历史记录</FONT>”，一个是你从其它机器上拷过来的另一套MSN聊天记录，当然，这两套记录必须都属于你自己的同一个MSN帐号，同时要保证这两个目录里都有<FONT style="BACKGROUND-COLOR: #a9a9a9">MessageLog.xsl</FONT>配置文件），也可以合并两个单独的历史记录XML文件。合并完后把这些新生成的记录拷回到“C:\Documents and Settings\&lt;你的机器帐号&gt;\My Documents\我接收到的文件\&lt;你的MSN帐号再加上一串数字&gt;\历史记录”里去，以后运行MSN就可以看到所有的聊天记录啦~~~如果担心有什么问题，在拷回去之前最好先备份一下你当前的历史记录。工具虽小，但如果能给您帮一点小忙的话，jungleford也很高兴<IMG height=19 src="http://www.blogjava.net/Emoticons/regular_smile.gif" width=19 border=0></FONT></P>
<P><FONT color=#ff0000><STRONG><U>开发工具</U></STRONG></FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A href="http://java.sun.com/j2se/1.5.0/index.jsp">J2SE 5.0 SDK</A>，<A href="http://www.eclipse.org/downloads/index.php">Eclipse 3.01</A></FONT></P>
<P><FONT color=#ff0000><STRONG><U>声明</U></STRONG></FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 本工具主要算法和代码是我写的，但有部分是修改自<A href="http://www.javaalmanac.com/">Java Almanac</A>的例子代码。本工具是完全自由和免费的，在Combiner.jar中已经包含了所有源代码（用jar xf命令或zip解压缩工具就看得到），您尽可以修改这些代码，也欢迎继续传播，但请注名“Powered by JUNGLEFORD”之类的说明来源的字眼。对于您的修改后传播可能产生的任何法律问题，本人概不负责。</FONT></P>
<P><FONT size=2>运行时截图<BR></FONT><FONT size=2><IMG height=419 alt=o_Combiner.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/924/o_Combiner.jpg" width=338 border=0><BR><BR>下载<BR>点<A href="http://www.blogjava.net/Files/jungleford/Combiner.rar">这里</A><BR></FONT></P><img src ="http://www.blogjava.net/jungleford/aggbug/5906.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jungleford/" target="_blank">jungleford</a> 2005-06-11 12:34 <a href="http://www.blogjava.net/jungleford/archive/2005/06/11/5906.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>激情燃烧的岁月 - 经典战争片中的经典旋律（欧战纪念加强版）</title><link>http://www.blogjava.net/jungleford/archive/2005/05/06/4052.html</link><dc:creator>jungleford</dc:creator><author>jungleford</author><pubDate>Fri, 06 May 2005 13:45:00 GMT</pubDate><guid>http://www.blogjava.net/jungleford/archive/2005/05/06/4052.html</guid><wfw:comment>http://www.blogjava.net/jungleford/comments/4052.html</wfw:comment><comments>http://www.blogjava.net/jungleford/archive/2005/05/06/4052.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.blogjava.net/jungleford/comments/commentRss/4052.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jungleford/services/trackbacks/4052.html</trackback:ping><description><![CDATA[<P><FONT size=3><STRONG><SPAN style="FONT-FAMILY: 黑体; mso-hansi-font-family: Verdana">经典战争片中的音乐回顾</SPAN></STRONG><SPAN lang=EN-US style="FONT-FAMILY: Verdana"></SPAN></FONT></P>
<P><FONT color=#cc0000><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #cc0000; FONT-FAMILY: Verdana">
<P><STRONG><FONT color=#cc0000 size=3><U>jungleford如是说</U></FONT></STRONG></P>
<P><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 曾经在水木“军事影视”版连续贴了几段经典战争片的音乐片断，发觉其实电影配乐比一般音乐来得更让人感动。我个人并不热衷于音乐，仅仅对历史有关的东西抱有强烈的兴趣，所以以往一些老片会拿出来反复回味，在电影中特定环境下的音乐恰好是一种极好的调味剂。以下是最近我在militarymovie版贴过的一些军事片配乐。下面很多都是我用</FONT><A href="http://www.onlinedown.net/soft/2300.htm"><FONT color=#0000ff>Advanced MP3 WMA Recorder</FONT></A><FONT color=#000000>直接从影片中裸抓的原声，一时找不到足够大的上传空间，还不能全部提供下载，望见谅，等找到网上的地址一定补上。另外，影片资料基本来自</FONT><A href="http://lib.verycd.com/"><FONT color=#0000ff>VeryCD</FONT></A><FONT color=#000000>和</FONT><A href="http://www.imdb.com/"><FONT color=#0000ff>IMDB</FONT></A><FONT color=#000000>，</FONT><FONT color=#000000>剧照多数是我从片子里抓的，背景资料部分参考原水木清华History版精华区和</FONT><A href="http://www.unitedcn.com/"><FONT color=#0000ff>军神在线</FONT></A><FONT color=#000000>等网上的相关材料，部分来自战史资料和回忆录如《第三帝国兴亡》、《失去的胜利》等，本来都是基本上知道的东东，但为了保证史料的可靠，还是花了两天时间在网上搜。</FONT></P>
<P><BR><FONT color=#cc0000 size=3><STRONG><U>莫斯科保卫战</U></STRONG></FONT></P>
<P><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 毫无疑问是上个世纪最成功的战争影片之一，其风格甚至影响了中国，《大决战》系列就有她的影子在里边。说她成功是因为这基本上是一部“纯战争片”，而不是现在更多看到的那种拿战争当背景来宣扬别的什么人文意义上的主题（尽管有人说是政治战争片），像《Pearl Haber》之类的，相信很多历史爱好者会喜欢这种风格：半故事片半纪录片，情节加旁白解说。导演尤里·奥泽洛夫（Yuri Ozerov）是一个善于拍大场面的高手，除了《莫》，前期拍的《解放》系列也是他的一部杰作，这几部和《斯大林格勒战役》合起来称为奥泽洛夫的《世纪的悲剧》系列，号称卫国战争的“全景式史诗”。由于奥泽洛夫是军人出身，并且亲历过卫国战争，所以《莫》一片中最大的特点就是场面宏大，真实，绝大部分兵器都是按战时的比例造的，而且政治色彩也比《解放》弱一些。俄国著名作曲家亚历山德拉·尼古拉耶夫娜·巴赫姆托娃为该片谱了数首插曲，这些插曲和影片中卫国战争期间的歌曲一样表现了俄国音乐的传统与激情。此外，该片还让一批杰出的配音深入人心，像张云明（朱可夫的配音，在俄国老片《办公室的故事》、《春天的17个瞬间》的风靡时期成长起来的观众一定不会忘记）、李扬（希特勒的配音）、周启勋（斯大林的配音）等。BTW，这部超过5个小时的影片我从初中到现在完整看过6遍以上，差不多两年看一次，差不多了解里面的每一个细节<IMG height=19 src="http://spaces.msn.com/mmm2005-04-13_18.20/RTE/emoticons/smile_wink.gif" width=19></FONT></P>
<P><BR><FONT color=#000000>● 片头曲<BR>开头给一种很凄厉的尖啸的感觉（就像Ju-87俯冲那样，呵呵），很符合影片的气氛。<BR></FONT><FONT color=#000000>短片断（第一部《侵略》的片头）：</FONT><A href="http://www.blogjava.net/Files/jungleford/【莫斯科保卫战】片头曲.rar"><FONT color=#0000ff>下载</FONT></A><BR><FONT color=#000000>长片断（第二部《台风》的片头）：下载</FONT></P>
<P><FONT color=#000000>片头<BR><IMG height=272 alt=o_【莫斯科保卫战】片头.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】片头.jpg" width=576 border=0><BR></FONT><U></U></P>
<P><FONT color=#000000>哈尔德向将领通报Barbarossa计划<BR><IMG height=267 alt=o_【莫斯科保卫战】OKW的Barbarossa计划.JPG src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】OKW的Barbarossa计划.JPG" width=565 border=0><BR></FONT><U></U></P>
<P><FONT color=#000000>梅列茨科夫汇报演习情况<BR><IMG height=264 alt=o_【莫斯科保卫战】大本营的演习总结.JPG src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】大本营的演习总结.JPG" width=563 border=0><BR></FONT><U></U></P>
<P><FONT color=#000000>古德里安的潜水坦克部队准备偷渡布格河<BR><IMG height=265 alt=o_【莫斯科保卫战】古德里安的潜水坦克.JPG src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】古德里安的潜水坦克.JPG" width=563 border=0><BR></FONT><U></U></P>
<P><FONT color=#000000>罗科索夫斯基在日托米尔准备出发<BR><IMG height=265 alt=o_【莫斯科保卫战】罗科索夫斯基.JPG src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】罗科索夫斯基.JPG" width=564 border=0><BR></FONT><U></U></P>
<P><FONT color=#000000>基尔波诺斯、普尔卡耶夫和瓦舒金辩论<BR><IMG height=264 alt=o_【莫斯科保卫战】西南方面军的三位老大.JPG src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】西南方面军的三位老大.JPG" width=563 border=0><BR></FONT><U></U></P>
<P><FONT color=#000000>T-34的反冲击<BR><IMG height=270 alt=o_【莫斯科保卫战】T-34的反冲击.JPG src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】T-34的反冲击.JPG" width=573 border=0><BR></FONT><U></U></P>
<P><FONT color=#000000>朱可夫为铁木辛哥辩护<BR><IMG height=270 alt=o_【莫斯科保卫战】朱可夫和铁木辛哥.JPG src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】朱可夫和铁木辛哥.JPG" width=570 border=0><BR></FONT><U></U></P>
<P><FONT color=#000000>希特勒和布劳希奇听取博克的增援请求<BR><IMG height=270 alt=o_【莫斯科保卫战】希特勒和布劳希奇.JPG src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】希特勒和布劳希奇.JPG" width=575 border=0><BR></FONT><U></U></P>
<P><BR><FONT color=#000000>● 啤酒桶波尔卡<BR>影片中的德国人似乎喜欢通过这首名曲配合着坦克的轰鸣鼓舞部队前进，呵呵。后来古德里安在占领的托尔斯泰的故居里也在钢琴上随手弹过这么一段旋律。<BR></FONT><A href="http://www.blogjava.net/Files/jungleford/【莫斯科保卫战】啤酒桶波尔卡.rar"><FONT color=#0000ff>下载</FONT></A></P>
<P><FONT color=#000000>在圆舞曲伴奏下进攻中的德国装甲部队<BR><IMG height=272 alt=o_【莫斯科保卫战】进攻中的德国装甲部队.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】进攻中的德国装甲部队.jpg" width=576 border=0><BR></FONT><U></U></P>
<P><FONT color=#000000>剽悍的四号坦克<BR><IMG height=272 alt=o_【莫斯科保卫战】四号坦克.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】四号坦克.jpg" width=576 border=0><BR></FONT><U></U></P>
<P><FONT color=#000000>古德里安在托尔斯泰故居弹钢琴<BR><IMG height=272 alt=o_【莫斯科保卫战】古德里安在托尔斯泰故居.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】古德里安在托尔斯泰故居.jpg" width=576 border=0><BR></FONT><U></U></P>
<P><BR><FONT color=#000000>● 朱可夫元帅<BR>出现在斯模棱斯克会战中，西方面军和预备队方面军收复叶里尼亚后朱可夫和众军官走进城内的一幕，是一段节奏铿锵的进行曲。<BR></FONT><A href="http://www.blogjava.net/Files/jungleford/【莫斯科保卫战】朱可夫元帅.rar"><FONT color=#0000ff>下载</FONT></A></P>
<P><FONT color=#000000>收复叶里尼亚<BR><IMG height=272 alt=o_【莫斯科保卫战】朱可夫.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】朱可夫.jpg" width=576 border=0><BR></FONT><U></U></P>
<P><BR><FONT color=#000000>● 波多里斯克步兵学校之歌<BR>我喜欢的不是这首歌，而是发起冲锋前的那一刹那那个军官的高喊：“小伙子们，唱起来！”<BR></FONT><A href="http://www.blogjava.net/Files/jungleford/【莫斯科保卫战】波多里斯克步兵学校之歌.rar"><FONT color=#0000ff>下载</FONT></A></P>
<P><FONT color=#000000>波多里斯克步兵学校的学员兵<BR><IMG height=272 alt=o_【莫斯科保卫战】学员兵.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】学员兵.jpg" width=576 border=0><BR></FONT><U></U></P>
<P><BR><FONT color=#000000>● 红场阅兵<BR>记得一年级上“科学社会主义”的时候老师有这样的评价：“斯大林，这个干过不少坏事的家伙，做过的一件最了不起的事情就是1941年十月革命节的阅兵式”。<BR>下载</FONT></P>
<P><FONT color=#000000>斯大林：愿列宁的旗帜保佑你们！<BR><IMG height=272 alt=o_【莫斯科保卫战】红场阅兵1.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】红场阅兵1.jpg" width=576 border=0><BR></FONT><U></U></P>
<P><FONT color=#000000>11月7日俄国的大佬们在红场：布琼尼、斯大林、莫洛托夫、加里宁<BR><IMG height=272 alt=o_【莫斯科保卫战】红场阅兵2.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】红场阅兵2.jpg" width=576 border=0><BR></FONT></P>
<P><FONT color=#000000>科罗契科夫和316步兵师的战士们高呼“乌拉”<BR><IMG height=272 alt=o_【莫斯科保卫战】红场阅兵3.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】红场阅兵3.jpg" width=576 border=0><BR></FONT></P>
<P><FONT color=#000000>T-34驶过红场<BR><IMG height=272 alt=o_【莫斯科保卫战】红场阅兵4.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】红场阅兵4.jpg" width=576 border=0><BR></FONT></P>
<P><FONT color=#000000>11月15日希特勒向国防军演说：到莫斯科去洗刷你们沾满硝烟的躯体吧！<BR><IMG height=272 alt=o_【莫斯科保卫战】希特勒的演讲.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】希特勒的演讲.jpg" width=576 border=0><BR></FONT></P>
<P><FONT color=#000000>● 神圣的战争<BR>这是在卫国战争中最有名的音乐哦。罗科索夫斯基在恰当的时间恰当的地点使用了电话机，呵呵。我发现俄国人的合唱都体现了一种宏大的气势，听过1977年录制的红军合唱团的俄国国歌</FONT><A href="http://vkpb.narod.ru/USSR_National_Anthem1.mp3"><FONT color=#0000ff>《牢不可破的联盟》</FONT></A><FONT color=#000000>的话，您想必也会有同感。<BR></FONT><A href="http://202.116.140.5/music/gccd/2/CD-0199/01.MP3"><FONT color=#0000ff>下载</FONT></A></P>
<P><FONT color=#000000>词 列别捷夫·库马奇（ВасилииИвановичЛебедев－Кумач，1898－1949）<BR>曲 亚历山大·亚历山德罗夫</FONT></P>
<P><FONT color=#000000>歌词译文</FONT></P>
<P><FONT color=#000000>起来，巨大的国家，做决死斗争，要消灭法西斯恶势力，消灭万恶匪群！<BR>敌我是两个极端，一切背道而驰，我们要光明和自由，他们要黑暗统治！<BR>全国人民轰轰烈烈，回击那刽子手，回击暴虐的掠夺者和吃人的野兽！<BR>不让邪恶的翅膀飞进我们的国境，祖国宽广的田野，不让敌人蹂躏！<BR>腐朽的法西斯妖孽，当心你的脑袋，为人类不肖子孙，准备下棺材！<BR>贡献出一切力量和全部精神，保卫亲爱的祖国，伟大的联盟！<BR>让高贵的愤怒，像波浪翻滚，进行人民的战争，神圣的战争！</FONT></P>
<P><FONT color=#000000>16集团军司令员罗科索夫斯基中将接见亚历山德罗夫和红旗歌舞团的演员们<BR><IMG height=272 alt=o_【莫斯科保卫战】罗科索夫斯基和亚历山德罗夫.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】罗科索夫斯基和亚历山德罗夫.jpg" width=576 border=0><BR></FONT></P>
<P><FONT color=#000000>● 走向胜利<BR>出现在12月6日反攻的场面中，别洛夫的近卫第1骑兵军在冰天雪地里向德国人冲锋。<BR>下载</FONT></P>
<P><FONT color=#000000>列柳申科为夜间攻击出点子<BR><IMG height=272 alt=o_【莫斯科保卫战】列柳申科.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】列柳申科.jpg" width=576 border=0><BR></FONT></P>
<P><FONT color=#000000>别洛夫的近卫第1骑兵军奔驰在旷野<BR><IMG height=272 alt=o_【莫斯科保卫战】别洛夫的骑兵.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】别洛夫的骑兵.jpg" width=576 border=0><BR></FONT></P>
<P><FONT color=#000000>战史记载：12月5日，西方面军司令员朱可夫大将在莫斯科前沿长达200英里的战线上集结了包括步兵、炮兵、装甲兵、骑兵、航空兵组成的一百多个师的兵力发动全线反击<BR><IMG height=272 alt=o_【莫斯科保卫战】12月5日的反攻.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【莫斯科保卫战】12月5日的反攻.jpg" width=576 border=0><BR></FONT></P>
<P><BR><FONT color=#000000>● 片尾曲<BR>由巴赫姆托娃作曲，列夫·列申科演唱的《你是我的欢乐和希望》，很好听。<BR>下载</FONT></P>
<P><FONT color=#006600>影片资料</FONT><BR><FONT color=#000000>【片&nbsp;&nbsp;&nbsp; 名】Bitva za Moskvu (The Fight for Moscow)<BR>【译&nbsp;&nbsp;&nbsp; 名】莫斯科保卫战<BR>【出品公司】莫斯科电影制片厂<BR>【出品年代】1985<BR>【IMDB链接】</FONT><A href="http://us.imdb.com/title/tt0173675"><FONT color=#0000ff>http://us.imdb.com/title/tt0173675</FONT></A><BR><FONT color=#000000>【IMDB评分】7.9/10 (11 votes)<BR>【国　　家】苏联 / 捷克 / 民主德国 / 匈牙利<BR>【语　　言】俄语<BR>【类　　别】剧情 / 战争<BR>【片　　长】358分钟<BR>【导　　演】尤里·奥泽洛夫 Yuri Ozerov<BR>【主　　演】亚·特利波里斯穆 Yakov Tripolsky<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;米哈依尔·乌里扬诺夫 Mikhail Ulyanov<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; Aleksandr Goloborodko<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 弗里茨·吉茨 Bruno Frejndlikh<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 尼古拉·奥里亚林 Nikolai Zasukhin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Anatoli Nikitin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Vladimir Troshin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Stepan Mikoyan</FONT></P>
<P><FONT color=#000000>海报<BR><IMG height=512 alt=o_moscow.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_moscow.jpg" width=300 border=0><BR></FONT></P>
<P><FONT color=#006600>背景资料</FONT><BR><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;1940年12月18日，德国OKW（最高统帅部）下达了第21号作战指令，这就是著名的代号为“Barbarossa”的入侵俄国的方案。该方案计划在东线集结强大的机械化兵力，在普里皮特沼泽地带南北两侧的三个战略方向上同时发动突然袭击，企图将红军的主力歼灭于俄国西部的波罗的海－白俄罗斯－西乌克兰境内，并占领莫斯科以及夺取乌克兰境内的工农业经济区，最后前出至阿尔汉格尔斯克、伏尔加河、阿斯特拉罕一线，几乎是乌拉尔以西的欧俄全部领土。预定于5月15日发起攻击，但由于对巴尔干半岛的征服而拖延了5周时间。<BR>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;1941年6月22日临晨3点半，德国国防军和武装党卫军，协同其盟国意大利、罗马尼亚、匈牙利、保加利亚、芬兰，在从北起北极圈内的摩尔曼斯克，南至黑海海滨的敖德萨——长达3200公里的战线上发动全面突袭。按照Barbarossa计划预定的三个战略方向，冯·莱布的北方集团军群的29个师（含霍普纳的第4装甲集团军）在东普鲁士境内展开，沿波罗的海各小国奔向列宁格勒，第1航空队作为空军支援；冯·博克的中央集团军群的50个师又2个旅（含古德里安的第2装甲集团军和霍斯的第3装甲集团军）沿1812年拿破仑的路线向莫斯科方向行进，由凯塞林的第2航空队支援；冯·伦斯德的南方集团军群的57个师又13个旅（含克莱斯特的第1装甲集团军）在第4航空队和罗马尼亚空军的支援下，从卢布林和喀尔巴阡山出发，瞄准第聂伯河、顿尼茨和基辅。俄国人的卫国战争开始了。尽管事先得到各方面的警告，斯大林没有真正重视，等到下发备战指令时又由于党卫军别动队破坏了通信线路，致使战争爆发俄国边境各大军区也没有做好准备，德国完全达到了战役的突然性，重要渡口的桥梁居然都完好落入德国人手中。在3周之内，博克的摩托化步兵抵达斯摩棱斯克附近，走完从起点到莫斯科的2/3的路程；在北方德国人不到20天就打到了列宁格勒，开始了对这座城市长达900多天的包围，城内死于饥饿的就有近百万人；在基辅方向俄国人一度布置重兵，并不断投入增援，但在克莱斯特和古德里安的两支强大的装甲力量形成的臂膀的包围下终于于9月19日占领了乌克兰的首都，此一役即为号称人类历史上最大规模合围战役的“基辅会战”，俄国西南方面军基本被消灭，66万人被俘。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 经过一系列的惨败，俄国人将战争拖延到了冬季，同时美国的《租借法案》开始生效，对俄国的战时援助起了重要作用。在获知日本不可能在短期内对远东和西伯利亚领土有军事企图，俄国大本营从东部抽调了大量兵力。德国方面10月开始进行代号“台风”的作战，装甲部队前锋首先在布良斯克和维亚济马方向上强攻，布良斯克方面军大部被歼。11月7日十月革命节，斯大林在兵临城下的莫斯科进行阅兵式，极大鼓舞了红军的斗志，12月2日俄国人在罗斯托夫的成功反击揭开了序曲，12月5日以朱可夫的西方面军为主力的各兵种开始进行大规模反攻，德国人在冰天雪地里被击退了100至250公里。第三帝国和德国国防军在1933年纳粹掌权以来遭遇了第一次大失败。</FONT></P>
<P><BR><STRONG><FONT color=#cc0000 size=3><U>斯大林格勒</U></FONT></STRONG></P>
<P><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;德国拍过一些优秀的战争影片，像1977年的《铁十字勋章》（Cross of Iron，与英国和南斯拉夫合拍），1981年的《从海底出击》（Das Boot），1993年的《斯大林格勒》（Stalingrad）都给人留下了深刻的印象，最近又拍了一部《毁灭》（Der Untergang）。和奥泽洛夫的《斯大林格勒战役》不同，这部片更像一部战争的反思片。从更高的视角上看，战争是政治的最高表现（似乎是克劳塞维茨说的？）：领导者的眼光，指挥员的智慧，每个士兵的视死如归的精神……所体现出来的是战役进程；但真实的战争是怎样？一个普通士兵的感受恐怕是怎样克服死亡的恐惧，怎样生存，怎样适应那种被扭曲的人性。《莫斯科保卫战》说的是前者，而德版的《斯大林格勒》则表现的是后者。</FONT></P>
<P><FONT color=#000000>● 片头曲<BR>在一连串急促的节奏中拉开了雄浑的背景音乐。<BR></FONT><A href="http://www.blogjava.net/Files/jungleford/【斯大林格勒】片头曲.rar"><FONT color=#0000ff>下载</FONT></A></P>
<P><FONT color=#000000>片头<BR><IMG height=239 alt=o_【斯大林格勒】片头.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【斯大林格勒】片头.jpg" width=434 border=0><BR></FONT></P>
<P><FONT color=#000000>● 片尾曲<BR>从平缓过渡到高潮部分，是上面主题的反复咏叹，长度有5分多钟。<BR></FONT><A href="http://www.jcwater.net/music/Stalin.rar"><FONT color=#0000ff>下载</FONT></A></P>
<P><FONT color=#000000>两个德国军人在冰天雪地里相拥死去。这座伏尔加河上过去并不怎么显眼的城市在两百天的燃烧下成了上百万德国人和俄国人的坟墓。<BR><IMG height=239 alt=o_【斯大林格勒】片尾.JPG src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【斯大林格勒】片尾.JPG" width=434 border=0><BR></FONT><U></U></P>
<P><FONT color=#006600>影片资料</FONT><BR><FONT color=#000000>【片&nbsp;&nbsp;&nbsp; 名】Stalingrad<BR>【译&nbsp;&nbsp;&nbsp; 名】斯大林格勒<BR>【年&nbsp;&nbsp;&nbsp; 代】1993<BR>【国&nbsp;&nbsp;&nbsp; 家】德国 / 瑞典<BR>【发行公司】皇家巴伐利亚制片厂<BR>【片&nbsp;&nbsp;&nbsp; 长】138Mins<BR>【类&nbsp;&nbsp;&nbsp; 别】战争 / 剧情<BR>【语&nbsp;&nbsp;&nbsp; 言】德语<BR>【IMDB链接】</FONT><A href="http://us.imdb.com/title/tt0108211/"><FONT color=#0000ff>http://us.imdb.com/title/tt0108211/</FONT></A><BR><FONT color=#000000>【IMDB评分】7.0/10 (3,760 votes)<BR>【格&nbsp;&nbsp;&nbsp; 式】XviD + AC3<BR>【尺&nbsp;&nbsp;&nbsp; 寸】576 x 336<BR>【大&nbsp;&nbsp;&nbsp; 小】2CD 49 X 15M<BR>【导&nbsp;&nbsp;&nbsp; 演】Joseph Vilsmaier<BR>【主&nbsp;&nbsp;&nbsp; 演】Dominique Horwitz .... Obergefreiter Fritz Reiser<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 托马斯·克兰特曼恩 Thomas Kretschmann .... Lt. Hans von Witzland<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Jochen Nickel .... Unteroffizier Manfred Rohleder<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sebastian Rudolph .... GeGe Müller<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dana Vávrová .... Irina<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Martin Benrath .... Gen. Hentz<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sylvester Groth .... Otto<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Karel Hermánek .... Capt. Hermann Musk<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Heinz Emigholz .... Edgar Emigholz<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ferdinand Schuster .... Double Edgar<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Oliver Broumis .... HGM</FONT></P>
<P><FONT color=#000000>海报<BR></FONT><IMG height=600 alt=o_stalingrad.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_stalingrad.jpg" width=410 border=0><BR><U></U></P>
<P><FONT color=#006600>背景资料</FONT><BR><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1941年冬季德国在莫斯科的失利并没有从根本上改变俄国的战略防御态势，德国仍然握有战略主动权，在1942年初经过修整德国将战略重点转向东线南翼，并取得了一系列的胜利：曼施坦因的第11集团军席卷克里木半岛，占领刻赤并攻克了塞瓦斯托波尔要塞，解除了俄国方面来自黑海的对罗马尼亚普罗耶什蒂油田（德国重要的战争经济据点）的威胁，并直接面对亚速海和狭窄的刻赤海峡，威胁着塔曼半岛和高加索，而俄国方面红军却损失了30多万人；另外由于判断失误，铁木辛哥的西南方面军于5月贸然发动对哈尔科夫的攻势，结果第一次哈尔科夫会战俄国又有将近30个师被南方集团军群合围，给大本营以不小的打击。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 德国最高统帅部于1942年4月5日下达第41号作战指令，计划在1942年春夏之交发动代号为“蓝色”（Blau，6月30日以后改称为Braunschweig）的进攻计划，“旨在歼灭顿河当面之敌，然后占领高加索油田和通往高加索山脉的主要通道”。这样南翼的战略目标变成了“顿河区域”和“高加索”两个任务，为此，南方集团军群的番号被撤销，被改编成A、B两个集团军群，里斯特的A集团军群向南方的高加索地区推进，博克（后因与希特勒争吵被撤职，由原第2集团军司令维克斯男爵接任）的B集团军群向东扫荡乌克兰东部。6月28日,B集团军群分别从库尔斯克东北、哈尔科夫东北、斯拉维扬斯克、斯大林诺一带发动进攻，南翼德军又一度深入俄境150至400公里，夺取了顿巴斯工业区并侵入顿河大河湾，逼近伏尔加河上的战略要地斯大林格勒。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7月17日，霍斯的第4装甲集团军推进到顿河中游，鲍卢斯的第6集团军也前出到顿河大河湾；A集团军群方面，克莱斯特的第1装甲集团军渡过了顿尼茨河，正向顿河下游的罗斯托夫挺进。这一天拉开了二战中最为惨烈的斯大林格勒会战的序幕。B集团军群当面先后面临的是的是俄国的斯大林格勒方面军（后改称顿河方面军）、西南方面军、沃罗涅日方面军、东南方面军（后改称斯大林格勒方面军）等4个战略集群，而A集团军群在高加索以北的形势不佳，位于北方的斯大林格勒方面军和南方的外高加索方面军的夹击之中。德国第6集团军成为攻坚主力，而俄国负责斯大林格勒城防的是崔可夫的第62集团军和舒米洛夫的第64集团军。7月28日，斯大林以最高苏维埃国防人民委员会的名义下达了著名的第227号训令：“……在所有部队中建立铁的秩序和纪律。这是我们当前致命的弱点。如果我们要挽救局势，捍卫祖国，就必须在我们的军队中建立极严格的秩序和铁的纪律……惊慌失措者和胆小鬼应该就地枪决。从今以后，每个指挥员、红军战士、政工人员都应遵守这个铁的纪律：没有最高统帅部的命令绝不后退一步！”。“绝不后退一步”成了这场战役中最响亮的口号。经过近2个月的战斗，鲍卢斯一度攻入市区，城内展开激烈的巷战，但顽强的62、64集团军一直死守不退，朱可夫也派出大本营预备队投入反扑。和卫国战争初期一样，俄国人虽然牺牲极大，但仍然成功拖到了冬季的到来，缺乏冬季物资的第6集团军虽然攻入了城区却逐渐陷入了被围的困境。朱可夫和华西列夫斯基9月底制定了反攻战役的作战计划，至11月中旬，已在斯大林格勒方向上集结了三个方面军：瓦图京的西南方面军、罗科索夫斯基的顿河方面军和叶廖缅科的斯大林格勒方面军，兵力高达110万，而此时德国的主力部队第6集团军被包围在斯大林格勒，红军面对的仅仅是霍斯的第4装甲集团军和盟国罗马尼亚第3、第4两个战斗力较弱的集团军。11月19日至20日，俄国的三个方面军开始反攻，由于戈林开了空头支票，保证空军可以给鲍卢斯想要得到的一切物资给养，希特勒决定第6集团军坚守，于21日任命曼施坦因为新组建的顿河集团军群的司令，负责“使敌军攻势停顿，并夺回我军原占领的区域”，但又不能给曼施坦因足够的兵力补充。曼施坦因指出这是个“不可能完成的任务”，挽救南翼危局的唯一途经就是第6集团军能够及时向西南方向突围，甚至后来冒险背着希特勒命令鲍卢斯突围，但鲍卢斯始终忠于元首的指示。尽管如此，曼施坦因还是于12月12日发起“冬季风暴”行动，以顿河集团军群和A集团军群的命运为赌注，命令霍斯孤军深入前去解救鲍卢斯，突击的最近离第6集团军仅30英里，但被马利诺夫斯基的近卫第2集团军等部队顽强阻击住了，拯救第6集团军的希望彻底破灭。不仅如此，由于伏尔加河与顿河之间的形势恶化，A集团军群也处于被封锁在高加索的危险境地。1943年1月10日，在鲍卢斯奉命拒绝了罗科索夫斯基的最后通牒后，顿河方面军发起代号为“指环”的最后进攻，31日鲍卢斯投降，2月2日会战以红军胜利告终。<BR>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;经过200天血战，德国第6集团军包括只当了一天元帅的鲍卢斯在内，共有9万1千人被俘，大部分战俘后来还被抓到莫斯科游街示众，送去西伯利亚做苦力，战后只有6千人左右活着回到了德国。此一役德国人失去了一个最强大的战略野战集团，在东线再也没有能力发起如此规模的进攻战役。</FONT></P>
<P><FONT color=#000000></FONT></P>
<P><FONT color=#cc0000 size=3><STRONG><U>盖茨堡战役</U></STRONG></FONT></P>
<P><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 《盖茨堡战役》（Gettysburg）是“美国南北战争三部曲”的第一部作品，1993年出品，一幕全景式的史诗级作品，众多人物，像罗伯特李，张伯伦，汉考克，艾米斯达都栩栩如生。虽然我们以往从历史课本上学到的都是给人一种“北方正义”的形象，但罗伯特李仍然是美国民间广受尊敬的南方将领。很喜欢艾米斯达在冲锋前的呐喊：“Virginians! Virginians! For your land, for your homes, for your sweethearts, for your wives, for ... Virginia! Forward! March!”</FONT></P>
<P><FONT color=#000000>● 片头曲<BR></FONT><A href="http://www.echoesofgettysburg.com/sitebuildercontent/sitebuilderfiles/shortgettysburg.mp3"><FONT color=#0000ff>下载</FONT></A></P>
<P><FONT color=#000000>● 片尾曲<BR>张伯伦和他的副官在落日的余晖中，在尸横遍野的战场上相拥而泣。这是一段长达11分钟的结束。<BR>下载</FONT></P>
<P><FONT color=#006600>影片资料</FONT><BR><FONT color=#000000>【片&nbsp;&nbsp;&nbsp; 名】Gettysburg<BR>【译&nbsp;&nbsp;&nbsp; 名】盖茨堡战役<BR>【导&nbsp;&nbsp;&nbsp; 演】罗纳德·麦克斯韦 Ronald F. Maxwell&nbsp; <BR>【主&nbsp;&nbsp;&nbsp; 演】汤姆·贝伦杰 Tom Berenger<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp; 山姆·艾略特 Sam Elliott<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; 马丁·西恩 Martin Sheen<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 比利·坎贝尔 Bill Campbell<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; Maxwell Caulfield<BR>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 杰夫·丹尼尔斯 Jeff Daniels<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 托马斯·豪威尔 C. Thomas Howell<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 斯蒂芬·朗 Stephen Lang&nbsp; <BR>【出品公司】Turner Pictures [US]<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; Esparza/Katz Productions<BR>【发行公司】新线影业（New Line Cinema）[US]<BR>【上&nbsp;&nbsp;&nbsp; 映】1993年10月08日 (美国)<BR>【地&nbsp;&nbsp;&nbsp; 区】美国<BR>【语&nbsp;&nbsp;&nbsp; 言】英语&nbsp; <BR>【颜&nbsp;&nbsp;&nbsp; 色】彩色&nbsp; <BR>【声&nbsp;&nbsp;&nbsp; 音】70 mm 6-Track，DTS，Dolby SR&nbsp; <BR>【时&nbsp;&nbsp;&nbsp; 长】261 分钟 <BR>【类&nbsp;&nbsp;&nbsp; 型】剧情 / 战争&nbsp; <BR>【分&nbsp;&nbsp;&nbsp; 级】瑞典：15<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; 澳大利亚：PG<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; 英国：PG<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; 美国：PG<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 德国：16<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 芬兰：K-12<BR>【IMDB链接】</FONT><A href="http://www.imdb.com/title/tt0107007/"><FONT color=#0000ff>http://www.imdb.com/title/tt0107007/</FONT></A></P>
<P><FONT color=#000000>海报<BR><IMG height=280 alt=o_gettysburg.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_gettysburg.jpg" width=200 border=0><BR></FONT><U></U></P>
<P><FONT color=#006600>背景资料</FONT><FONT color=#000000>（摘自</FONT><A href="http://lib.verycd.com/"><FONT color=#0000ff>VeryCD</FONT></A><FONT color=#000000>）<BR></FONT><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 盖茨堡战役于一八六三年七月在这个宾夕法尼亚小镇的街上及其周围地区持续了三天之久，此次战役是内战的转折点。这一战不仅是南北战争中双方投入兵力最多、伤亡最大的一场战役，同时也是北美大地上有史记载以来规模最大的一场战斗。在盖茨堡方圆不到25平方英里，人口不足2400人的小镇辖地，集结了双方近172000士兵和634门大炮；总共约569吨火药被消耗在这三天的战斗中，当战斗结束后，残破的战场上还剩下超过5000匹战马的遗体。战斗中双方共伤亡约51000人，其中北方联邦23000人，南方邦联约28000人。尽管这场战斗只属于典型的遭遇战，它既没有实质上结束整个南北战争，也没有达成双方的任何战争意图，但它仍然被历史学家们视为美国内战史上最伟大的战斗之一。</FONT></P>
<P><BR><FONT color=#cc0000 size=3><STRONG><U>众神与将军</U></STRONG></FONT></P>
<P><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; “Gods and Generals”是华纳2003年出的一部Gettysburg的前传，一部影片在相隔10年之后再度续写，可见其影响力，而且大部分主要演员都是第一部的班底，这一部以“石墙将军”托马斯杰克逊为主线，个人感觉稍逊色与第一部。</FONT></P>
<P><FONT color=#000000>● 片头曲<BR>由Mary Fahl演唱的“Going Home”<BR>下载</FONT></P>
<P><FONT color=#006600>影片资料</FONT><BR><FONT color=#000000>【片&nbsp;&nbsp;&nbsp; &nbsp; 名】Gods and Generals<BR>【译&nbsp;&nbsp;&nbsp; &nbsp; 名】众神与将军<BR>【出品公司】华纳兄弟 WarnerBros<BR>【出品年代】2003<BR>【MPAA级别】PG-13级<BR>【IMDB链接】</FONT><A href="http://www.imdb.com/title/tt0279111/"><FONT color=#0000ff>http://www.imdb.com/title/tt0279111/</FONT></A><BR><FONT color=#000000>【IMDB评分】5.9/10 (2,014 votes)<BR>【国　　家】美国<BR>【类　　别】战争<BR>【导　　演】罗纳德·麦克斯韦尔Ronald F. Maxwell<BR>【主　　演】罗伯特·杜瓦尔Robert Duvall<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 杰夫·丹尼尔斯Jeff Daniels<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 斯蒂芬·朗恩Stephen Lang<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 米拉·索维诺Mira Sorvino<BR>【文件格式】XviD + AC3<BR>【视频尺寸】640 x 272<BR>【影片长度】219 Mins<BR>【语&nbsp;&nbsp;&nbsp; &nbsp; 言】英语</FONT></P>
<P><FONT color=#000000>海报<BR><IMG height=350 alt=o_gods_and_generals.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_gods_and_generals.jpg" width=250 border=0><BR></FONT><U></U></P>
<P><U></U>&nbsp;</P>
<P><FONT color=#cc0000 size=3><STRONG><U>坦克大决战</U></STRONG></FONT></P>
<P><FONT color=#000000>&nbsp;&nbsp; 片名直译其实是《突出部作战》，即使不太了解二战史，看过《兄弟连》的也应该知道这是以“阿登森林反击战”为背景的影片，有亨利·方达这样的老牌明星加盟也为片子增色不少。影片中有些历史上的真实场景，譬如101空降师被德国人包围在巴斯通，47装甲军司令鲁特维茨写信向其101师代理师长麦考利夫劝降，得到一封只有一个字的著名的回信：“Nuts！”<IMG height=19 src="http://spaces.msn.com/mmm2005-04-13_18.20/RTE/emoticons/smile_shades.gif" width=19></FONT></P>
<P><FONT color=#000000>● 装甲兵之歌（Panzerlied）<BR>这是德国武装党卫军第1装甲师的战歌。SS第1装甲师称号为“阿道夫·希特勒警卫旗队”，前身是又希特勒亲选的120名贴身警卫人员。尽管党卫军在战争期间恶名昭彰，在纽伦堡法庭已经被宣布为犯罪组织，但多数德国本土的武装党卫军部队（不包括那些从占领地招募来的志愿人员）的作战素质还是极高的，尤其是几个党卫装甲师，如SS第1装甲师，“杀手虎王”米契尔·魏特曼就出身该师。如果不考虑其它非审美因素的话，这首歌的乐感还是相当不错的，体现了德国军歌的激昂雄壮的传统，甚至不输于很多俄国的战时歌曲，如果你看过片子里海斯勒和他的手下的一边跺着脚一边高唱的话，一定会有这样的感觉。<BR></FONT><A href="http://www.wargamer.com/Hosted/Panzer/panzerlied.MP3"><FONT color=#0000ff>下载</FONT></A><BR><BR><FONT color=#000000>作者Von Oblt. Wiehle，作于25. Juni 1933<BR><BR>歌词<BR>Ob\'s stürmt oder schneit, <BR>Ob die Sonne uns lacht, <BR>Der Tag glühend hei?, <BR>Oder eiskalt die Nacht. <BR>Bestaubt sind die Gesichter, <BR>Doch froh ist unser Sinn, <BR>Ja unser Sinn; <BR>Es braust unser Panzer <BR>Im Sturmwind dahin. Mit donnernden Motoren, <BR>So schnell wie der Blitz, <BR>Dem Feinde entgegen, <BR>Im Panzer geschützt. <BR>Voraus den Kameraden, <BR>Im Kampfe ganz allein, <BR>Steh\'n wir allein, <BR>So sto?en wir tief <BR>In die feindlichen Reihn. </FONT></P>
<P><FONT color=#000000>Wenn vor uns ein feindlicher <BR>Panzer erscheint, <BR>Wird Vollgas gegeben <BR>Und ran an den Feind! <BR>Was gilt denn unser Leben, <BR>Für unsres Reiches Heer, <BR>Ja Reiches Heer? <BR>Für Deutschland zu sterben <BR>Ist uns h?chste Ehr. Mit Sperren und Tanks <BR>H?lt der Gegner uns auf, <BR>Wir lachen darüber <BR>Und fahren nicht drauf. <BR>Und droh\'n vor uns Geschütze, <BR>Versteckt im gelben Sand, <BR>Im gelben Sand, <BR>Wir suchen uns Wege, <BR>Die keiner sonst fand. </FONT></P>
<P><FONT color=#000000>Und l??t uns im Stich <BR>Einst das treulose Glück, <BR>Und kehren wir nicht mehr <BR>Zur Heimat zurück, <BR>Trifft uns die Todeskugel, <BR>Ruft uns das Schicksal ab, <BR>Ja Schicksal ab, <BR>Dann ist unser Panzer <BR>Ein ehernes Grab. </FONT></P>
<P><BR><FONT color=#000000>歌词译文</FONT></P>
<P><FONT color=#000000>论面对风暴或是雪花， <BR>还是太阳对我们微笑； <BR>火热的白天， <BR>寒冷的夜晚， <BR>扑面的灰尘， <BR>但我们享受着这种乐趣， <BR>我们享受着这种乐趣。 <BR>我们的坦克轰鸣向前， <BR>伴随着阵阵尘沙。 <BR>当敌人的坦克露出踪影 <BR>我们加大油门全速向前！ <BR>我们生命的价值 <BR>就是为了我们光荣的军队而战！ <BR>为德国而死是至高的荣誉！ <BR>伴随着雷鸣般的引擎， <BR>我们在坚实的装甲板后像闪电一般冲向敌人。 <BR>与同志们一起向前， <BR>并肩战斗， <BR>这就是为什么我们能深扎进敌人的（坦克）队列 <BR>面对敌人所谓的屏障 <BR>我们给予轻蔑的嘲笑 <BR>然后简单的绕过； <BR>如果前面的黄砂之中， <BR>隐藏的是那炮火的威胁， <BR>我们就找寻自己的道路， <BR>跃上那冲向胜利的通途！ <BR>如果我们为命运女神所抛弃 <BR>如果我们从此不能回到故乡 <BR>如果子弹结束了我们的生命 <BR>如果我们在劫难逃， <BR>那至少我们忠实的坦克， <BR>会给我们一个金属的坟墓。</FONT></P>
<P><FONT color=#000000>海斯勒检阅他的坦克连长<BR><IMG height=239 alt=o_【坦克大决战】高唱Panzerlied.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【坦克大决战】高唱Panzerlied.jpg" width=358 border=0><BR></FONT><U></U></P>
<P><FONT color=#006600>影片资料</FONT><BR><FONT color=#000000>【原　　名】：Battle of the Bulge<BR>【译　　名】：坦克大决战<BR>【导　　演】：Ken Annakin<BR>【编　　剧】：Bernard Gordon (front Philip Yordan)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; John Melson<BR>【演　　员】：Henry Fonda .... Lt. Col. Daniel Kiley<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Robert Shaw .... Col. Martin Hessler<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; Robert Ryan .... Gen. Grey<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dana Andrews .... Col. Pritchard<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; George Montgomery .... Sgt. Duquesne<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ty Hardin .... Lt. Schumacher (fake MP)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pier Angeli .... Louise<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Barbara Werle .... Elena (prostitute)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Charles Bronson .... Maj. Wolenski<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hans Christian Blech .... Cpl. Conrad<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Werner Peters .... Gen. Kohler<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; James MacArthur .... Lt. Weaver<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Karl-Otto Alberty .... Maj. von Diepel (as Karl Otto Alberty)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Telly Savalas .... Sgt. Guffy<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Steve Rowland .... Eddy (Sgt. Guffy's gunner)<BR>【类　　型】：战争/动作/剧情<BR>【片　　长】：147 分钟<BR>【上　　映】：1965年<BR>【国　　家】：美国<BR>【语　　言】：英语<BR>【IMDB链接】：</FONT><A href="http://www.imdb.com/title/tt0058947/"><FONT color=#0000ff>http://www.imdb.com/title/tt0058947/</FONT></A><BR><FONT color=#000000>【IMDB评分】：6.4/10 (1,320 votes)</FONT></P>
<P><FONT color=#000000>海报<BR><IMG height=505 alt=o_battle_of_the_bulge.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_battle_of_the_bulge.jpg" width=273 border=0><BR></FONT><U></U></P>
<P><FONT color=#006600>背景资料</FONT><BR><FONT color=#000000>&nbsp;&nbsp;&nbsp; &nbsp; “阿登反击战”是1944年与1945年之交，德国在西线发动的一次较大规模的进攻战役，也是纳粹德国在战争中所发动的最后一次进攻战役，目标是通一次大的行动扭转西线的形势，从而迫使美英与之议和，再腾出手来对付俄国。<BR>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;1944年6月6日美英盟军在法国诺曼底海滩大规模登陆，重新开辟欧洲西线战场，使德国位于两线作战的不利境地。1944年7月20日的刺杀和政变的失败导致希特勒对内部进行一次大清洗，更加削弱了第三帝国的力量。至1944年秋季，德国本土已经面临三面被围的威胁：东线红军已经全线打出国境线，逼近维斯瓦河，开始了对东欧的解放；西线法国基本解放，盟军推进到比利时和荷兰，攻击号称“齐格菲防线”的西部壁垒；南线意大利已于前一年投降，新政府对德宣战。为摆脱困境，OKW于9月底制定代号为“莱茵河上的巡逻兵”（Wacht am Rhein）的攻击计划，企图在比利时阿登山区突破西线盟军防线，分隔包围比利时和荷兰境内的盟军，前出到安特卫普。阿登地区正是霍奇斯的美国第1集团军和巴顿的第3集团军的接合部，但他们的上司，第12集团军群司令布莱德雷不相信德国人会“第三次在同一地区发起突袭”（第一次是一战中的“施利芬计划”，第二次是1940年的“曼施坦因计划”），甚至表示“我倒希望德国人进攻”。由于深陷东线的泥潭，德国的兵员紧张，于是于10月18日开始征召16至60岁的人入伍，最后集结了25个师的兵力，包括武装党卫军的精锐SS第1装甲师（“希特勒警卫旗队”）和SS第2装甲师（“帝国师”），后来还陆续投入了一些精锐部队，由B集团军群司令莫德尔指挥，属西线总司令伦斯德麾下，而这一集团的当面仅有霍奇斯的5个师的兵力。反攻前夕，党卫军的一支别动队化装成美军混入盟军内部，破坏通信线路，并进行暗杀和散布谣言，一度造成美军的恐慌。12月16日，反攻开始，左翼是布兰登堡的第7野战集团军，中央是前“大德意志师”师长曼托菲尔男爵指挥的第5装甲集团军，右翼是塞普·迪特里希的党卫第6集团军。初期由于战役的突然性，美军一度退却，17日，第5装甲集团军在施纳－艾佛尔地区合围了美106师，并俘虏将近8000人，这是美军在欧洲战场上损失最大的一次战斗，其中很多战俘遭到党卫军的枪杀。与此同时，右翼迪特里希的党卫军前锋“派佩尔战斗团”占领了马斯河渡口；左翼布兰登堡的前卫第5空军野战师抵达维尔茨。至20日，德军的攻击矛头在西线形成一个纵深达30至50公里的突出部。17日艾森豪威尔派第82空降师前往圣维特防线，同时命令101空降师驰援阿登地区和马斯河上的重镇巴斯通（Bastogne），101师后来被包围在巴斯通，但在德国人的战线后方始终屹立不倒，极大牵制德军的进攻。12月底，德国人因为燃料的缺乏，终于转入防御，1月3日，霍奇斯从北，巴顿从南对突出部德军采取向心攻击，德军也在阿尔萨斯发动了强大攻势。1月6日，丘吉尔写信向斯大林求援，希望东线红军能够有配合行动，于是俄国提前于1月12日发动了维斯瓦河攻势，德国OKW不得不从西线抽调13个精锐师到东线应战。16日，霍奇斯和巴顿在豪法里兹会师，28日德军全部撤回到战役发起线，阿登森林战役以美国的胜利而结束。</FONT></P>
<P><BR><FONT color=#cc0000 size=3><STRONG><U>桂河大桥</U></STRONG></FONT></P>
<P><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这是一部老片了，很早以前在央视电影频道看过，现在除了主题曲别的印象就不是太深刻了，但记得那个英国军官最后倒下去的姿势很帅<IMG height=19 src="http://spaces.msn.com/mmm2005-04-13_18.20/RTE/emoticons/smile_teeth.gif" width=19>。据说是50年代巨轰动的片（拿过Oscar，哪能不轰动），是大卫雷恩的一部杰作。</FONT></P>
<P><FONT color=#000000>● 勃基上校进行曲<BR>印象最深的就是这段曲子了，那队英国战俘一边吹着口哨一边踏步，酷极了！<BR></FONT><A href="http://homepage.zsedu.net/zuopin_2/wangye/gpzzxxxjyd/xinshang/bjsx.mp3"><FONT color=#0000ff>下载</FONT></A></P>
<P><FONT color=#000000>尼克森和战俘们<BR></FONT><IMG height=261 alt=o_【桂河大桥】尼克森在战俘营.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_【桂河大桥】尼克森在战俘营.jpg" width=340 border=0><BR><U></U></P>
<P><FONT color=#006600>影片资料</FONT><BR><FONT color=#000000>【导&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 演】David Lean<BR>【类&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 型】冒险 / 剧情 / 战争<BR></FONT><FONT color=#000000>【IMDB链接】</FONT><A href="http://www.imdb.com/title/tt0050212/"><FONT color=#0000ff>http://www.imdb.com/title/tt0050212/</FONT></A><BR><FONT color=#000000>【主要演员】William Holden ....&nbsp; Shears<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Jack Hawkins ....&nbsp; Maj. Warden<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Alec Guinness ....&nbsp; Colonel Nicholson<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sessue Hayakawa ....&nbsp; Col. Saito<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; James Donald ....&nbsp; Maj. Clipton<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Geoffrey Horne ....&nbsp; Lt. Joyce<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;André Morell ....&nbsp; Col. Green<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; Peter Williams ....&nbsp; Capt. Reeves<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; John Boxer ....&nbsp; Maj. Hughes<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Percy Herbert ....&nbsp; Pvt. Grogan<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Harold Goodwin ....&nbsp; Pvt. Baker, Sick List Volunteer<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ann Sears ....&nbsp; Nurse at Ceylon hospital<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Heihachiro Okawa ....&nbsp; Capt. Kanematsu<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Keiichiro Katsumoto ....&nbsp; Lt. Miura<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; M.R.B. Chakrabandhu ....&nbsp; Yai<BR>【片&nbsp;&nbsp;&nbsp; 长】161 min <BR>【国&nbsp;&nbsp;&nbsp; 家】英国 / 美国<BR>【年&nbsp;&nbsp;&nbsp; 代】1957<BR>【语&nbsp;&nbsp;&nbsp; 言】英语 / 日语 / 泰语<BR>【颜&nbsp;&nbsp;&nbsp; 色】彩色<BR>【音&nbsp;&nbsp;&nbsp; 频】70 mm 6-Track (70 mm prints) (RCA Sound System)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dolby SR (re-release)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mono (35 mm prints) <BR>【分&nbsp;&nbsp;&nbsp; 级】Argentina:13<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Australia:PG<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Chile:14<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Finland:K-16<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Norway:16<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Spain:T<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UK:PG<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; USA:PG<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; West Germany:12</FONT></P>
<P><FONT color=#000000>海报<BR><IMG height=475 alt=o_bridge_river_kwai.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_bridge_river_kwai.jpg" width=324 border=0><BR></FONT><U></U></P>
<P><FONT color=#006600>背景资料</FONT><FONT color=#000000>（摘自</FONT><A href="http://www.sohu.com/"><FONT color=#0000ff>搜狐</FONT></A><FONT color=#000000>）</FONT><BR><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 真正的桂河大桥位于泰国西部地区，是泰国近年来著名的旅游点之。桂河大桥是日军占领泰境期间，强迫盟军战俘建造铁路连接缅甸及暹逻。由于这条铁路牺牲了无数珍贵的性命才得以完成，故有“死亡铁路”之称，著名的桂河大桥就是其中的一段。在1945年间，桂河大桥是盟军经常空袭的目标，时至今日，该桥不但幸存且仍在使用中，每年12月的桂河桥周，均有灯光及音响表演配合重演区内有关的事迹，以志纪念。桥的南段有日本战争纪念碑，在三公里外，接近火车站的地方就是北碧府战士墓地，此为盟军殉难战士的最大墓地，埋葬了近7千名军士的骸骨。</FONT></P></SPAN></FONT><img src ="http://www.blogjava.net/jungleford/aggbug/4052.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jungleford/" target="_blank">jungleford</a> 2005-05-06 21:45 <a href="http://www.blogjava.net/jungleford/archive/2005/05/06/4052.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的JavaMail客户端 - JExp</title><link>http://www.blogjava.net/jungleford/archive/2005/05/05/4022.html</link><dc:creator>jungleford</dc:creator><author>jungleford</author><pubDate>Wed, 04 May 2005 16:41:00 GMT</pubDate><guid>http://www.blogjava.net/jungleford/archive/2005/05/05/4022.html</guid><wfw:comment>http://www.blogjava.net/jungleford/comments/4022.html</wfw:comment><comments>http://www.blogjava.net/jungleford/archive/2005/05/05/4022.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jungleford/comments/commentRss/4022.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jungleford/services/trackbacks/4022.html</trackback:ping><description><![CDATA[<FONT face=Verdana color=#ff0000><U><STRONG>jungleford如是说</STRONG></U></FONT>
<P><FONT face=Verdana size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;近来实在太忙了，一个邮件客户端写写停停，直到现在还是一个没怎么经过测试的命令行方式的版本，但聊胜于无，通过这个小项目学习了一下JavaMail和POP协议，又实践了一两个设计模式，感觉还是比较有意义的，以后有空会慢慢做好。ICEMail是个相当不错的客户端系统，但我试过以后还是发现它每次接受POP邮件的时候还是从头开始收起，POP协议虽然简单——的确是简单——但方便了服务器的同时却让客户端的开发人员皱眉头：不维护状态的协议需要在客户端考虑太多的东西。JavaMail虽然封装得非常好，但要写一个好的客户端并不是一件easy的事情。我只用了JavaMail本身的API，没有用SUN的provider，中间碰到了不少细节上的问题，有的地方解决方法还是老土，但觉得比啥都copy来得有意思，呵呵……现在这个版本可能有的中文邮件显示成乱码，那是因为根据RFC 822，邮件在发送时可能没有按标准编码，如果指定用中文解码可以得到解决，但在别的字符集下仍然不是一个好的方案，利用Locale可能是一个办法，等我忙完手头的先～～～</FONT></P>
<P><FONT size=2><FONT face=Verdana>JExp 0.1 命令行版本：</FONT><A href="http://www.blogjava.net/Files/jungleford/JExp.rar"><FONT face=Verdana>JExp.rar</FONT></A></FONT></P>
<P><FONT size=2><FONT face=Verdana>环境：JDK 1.4，</FONT><A href="http://java.sun.com/products/javabeans/glasgow/jaf.html"><FONT face=Verdana>JAF</FONT></A><FONT face=Verdana>，</FONT><A href="http://java.sun.com/products/javamail/downloads/index.html"><FONT face=Verdana>JavaMail</FONT></A><FONT face=Verdana>；将activation.jar和mail.jar加入classpath</FONT></FONT></P>
<P><FONT face=Verdana size=2>运行：先解开rar文件，再用 jar -x 解开jar包，在目录下运行 java com.jungleford.jexp.JExp，进入命令行用help命令显示各种命令（仿UNIX的形式）</FONT></P>
<P><FONT face=Verdana size=2>源代码：已经包含在jar包中，是完全公开的，你可以随意修改，如果你能给我一些意见建议的话，我将会非常感激&nbsp; :)</FONT></P>
<P><FONT face=Verdana size=2>截图：<BR><IMG height=431 alt=o_jexp.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/924/o_jexp.jpg" width=668 border=0><BR></FONT></P>
<P><FONT face=Verdana size=2>资料：</FONT></P>
<UL>
<LI><FONT face=Verdana size=2><A href="http://java.sun.com/products/javamail/javadocs/index.html" target=_blank>JavaMail API 文档</A></FONT>
<LI><FONT face=Verdana size=2><A href="http://java.sun.com/products/javamail/FAQ.html">JavaMail FAQ</A></FONT>
<LI><FONT size=2><A href="http://www.icemail.org/" target=_blank><FONT face=Verdana>ICEMail</FONT></A><FONT face=Verdana>&nbsp;project</FONT></FONT></LI></UL><img src ="http://www.blogjava.net/jungleford/aggbug/4022.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jungleford/" target="_blank">jungleford</a> 2005-05-05 00:41 <a href="http://www.blogjava.net/jungleford/archive/2005/05/05/4022.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaMail API FAQ</title><link>http://www.blogjava.net/jungleford/archive/2005/05/05/4021.html</link><dc:creator>jungleford</dc:creator><author>jungleford</author><pubDate>Wed, 04 May 2005 16:26:00 GMT</pubDate><guid>http://www.blogjava.net/jungleford/archive/2005/05/05/4021.html</guid><wfw:comment>http://www.blogjava.net/jungleford/comments/4021.html</wfw:comment><comments>http://www.blogjava.net/jungleford/archive/2005/05/05/4021.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jungleford/comments/commentRss/4021.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jungleford/services/trackbacks/4021.html</trackback:ping><description><![CDATA[<P><U><FONT face=Verdana color=#cc0000 size=3><STRONG>jungleford如是说</STRONG></FONT></U></P>
<P><FONT color=#000000><FONT size=2>&nbsp;&nbsp;&nbsp; 近来在完善一个简单的邮件客户端程序，还好SUN J2EE SDK提供了JavaMail API，我们可以方便地调用它已经封装好的接口而不用理会协议本身的实现。但现在很多mail服务器都提供的是POP协议接收邮件，由于POP3是“无状态”的协议，服务器端不保存诸如标记这样的任何状态，你把一封邮件移到“垃圾箱”里在服务器端看来和其它邮件并没有什么区别，所以所有邮件状态的解析工作全部留给客户端处理，这就是为什么利用JavaMail编写接收邮件的程序要比编写发送邮件的程序要困难不少的原因。尽管JavaMail封装得相当不错，但写一个好的邮件客户端仍需要对基本协议有一定的了解，初次接触JavaMail的朋友可能会有一些困惑，譬如：为什么Message对象不是可序列化的对象，否则我的客户端解析起来可能方便得多；为什么对中文内容的邮件支持得不好，我应当如何实现自己的中文邮件处理方案；……这些问题的答案可以在</FONT><A href="http://java.sun.com/"><FONT color=#618b2c size=2>SUN官方网站</FONT></A><FONT size=2>上提供的</FONT><A href="http://java.sun.com/products/javamail/FAQ.html"><FONT color=#618b2c size=2>JavaMail API FAQ</FONT></A><FONT size=2>找到，它会对你的疑问有一个初步的解释，还有它的</FONT><A href="http://www.huihoo.com/java/javamail/javamail_faq.html"><FONT color=#618b2c size=2>中文译文</FONT></A><FONT size=2>转自</FONT><A href="http://gceclub.sun.com.cn/"><FONT color=#618b2c size=2>SUN中国网站</FONT></A><FONT size=2>。不过清晰的概念还是了解协议和RFC比较好，比如RFC 822等。</FONT></FONT></P><img src ="http://www.blogjava.net/jungleford/aggbug/4021.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jungleford/" target="_blank">jungleford</a> 2005-05-05 00:26 <a href="http://www.blogjava.net/jungleford/archive/2005/05/05/4021.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>因为他们想要找回他们的国家！</title><link>http://www.blogjava.net/jungleford/archive/2005/04/02/2768.html</link><dc:creator>jungleford</dc:creator><author>jungleford</author><pubDate>Sat, 02 Apr 2005 14:19:00 GMT</pubDate><guid>http://www.blogjava.net/jungleford/archive/2005/04/02/2768.html</guid><wfw:comment>http://www.blogjava.net/jungleford/comments/2768.html</wfw:comment><comments>http://www.blogjava.net/jungleford/archive/2005/04/02/2768.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jungleford/comments/commentRss/2768.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jungleford/services/trackbacks/2768.html</trackback:ping><description><![CDATA[<FONT size=2>
<TABLE width="100%">
<TBODY>
<TR>
<TD colSpan=2><PRE><FONT face=Verdana><SPAN class=style2><U><FONT color=#cc0000><STRONG>jungleford 小按：</STRONG></FONT></U></SPAN>

    记得BBC有一个经典保留节目叫“流放荒岛”，邀请的都是一些名流大腕，当然不是真的把你扔到无人岛上去，呵呵，<BR>而是yy你如果只身一人在一个荒岛上，但允许你带一些精神食粮，譬如书籍，CD，影片什么的，你将会选择什么？然后主
持人就会跟你侃这些东东。对于我来说，JFK大概是我所看过的近半个世纪以来最好的美国影片了，号称美国最大胆的导
演Oliver Stone却没能在次年Oscar折桂，惜败于中国观众耳熟能详的恐怖片《沉默的羔羊》，据说在进入提名的时候就
受到来自美国官方的压力，最终只得了个最佳摄影和最佳剪辑奖，这不能不说是对美国民主的一个莫大讽刺。在大学三年
级第一次看这个片的时候，有一种堂吉柯德的感觉，检察官Garrison向美国政府的挑战如同堂吉柯德冲向大风车那样，他
知道总要有人出来说，如果没有人能站出来，那就是美国民主上百年以来最大的悲哀，所以他站出来了，他知道这一次必
定会失败，但他站出来这个行动的本身就证明了正义本身并没有死掉！Kevin Costner似乎是一个过气的明星了，美国人
对渠的牛仔形象大概也有些腻味，但Garrison依然是Costner所演过的最出色的角色。
    最欣赏的就是那30分钟的慷慨</FONT><A href="#speech"><FONT face=Verdana color=#009933>陈词</FONT></A><FONT face=Verdana>（在下面将贴出菁华部分的中英文对照版）以及影片结尾时，一大堆记者包围着胜
诉后洋洋得意的Clay Shaw，背景是Garrison牵着妻儿孤独离去的背影越走越远，铿锵顿挫的旋律骤然响起，以及，最后
一行简练但却意味深长的字幕：
</FONT></PRE>
<TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc border=1>
<TBODY>
<TR>
<TD><PRE><FONT face=Verdana><FONT color=#0000ff size=4><B>Dedicated to the young in whose spirit the search for truth marches on.</B></FONT>
</FONT></PRE></TD></TR></TBODY></TABLE><PRE><FONT face=Verdana>    “<FONT color=#0000ff>谨以本片，献给勇于探索真理的年轻的人们！</FONT>”

<SPAN class=style2><U><FONT color=#cc0000><STRONG>影片资料：</STRONG></FONT></U></SPAN>

From </FONT><A href="http://www.verycd.com/" target=_blank><FONT face=Verdana color=#009933>VeryCD</FONT></A>

<FONT face=Verdana>【片名】：JFK
【译名】：刺杀肯尼迪
【年代】：1991
【类别】：罪案/剧情/惊悚

【导演】：Oliver Stone （奥立弗·斯通）
【主演】：Kevin Costner （凯文·科斯特纳） ...... Jim Garrison
　　　　　Kevin Bacon （凯文·贝肯） ............ Willie O'Keefe
　　　　　Tommy Lee Jones （汤姆·李·琼斯） .... Clay Shaw
　　　　　Gary Oldman （加里·奥德曼） .......... Lee Harvey Oswald
　　　　　Laurie Metcalf ........................ Susie Cox
　　　　　Beata Pozniak ......................... Marina Oswald
　　　　　Michael Rooker ........................ Bill Broussard
　　　　　Jay O. Sanders ........................ Lou Ivon
　　　　　Sissy Spacek .......................... Liz Garrison
　　　　　Brian Doyle-Murray .................... Jack Ruby
　　　　　Gary Grubbs ........................... Al Oser
　　　　　Wayne Knight .......................... Numa Bertel
　　　　　Jo Anderson ........................... Julia Ann Mercer
　　　　　Vincent D'Onofrio ..................... Bill Newman
　　　　　Pruitt Taylor Vince ................... Lee Bowers

【片长】：189分钟/206分钟（导演剪辑版）
【国家】：美国/法国
【语言】：英语
【发行公司】：华纳（</FONT><A href="http://www.warnerbros.com/" target=_blank><FONT face=Verdana color=#009933>Warner Bros.</FONT></A><FONT face=Verdana>）
【制作公司】：华纳（</FONT><A href="http://www.warnerbros.com/" target=_blank><FONT face=Verdana color=#009933>Warner Bros.</FONT></A><FONT face=Verdana>）
【首映日期】：1991年12月20日
【MPAA定级】：R 级
【首映票房】：$5,200,000
【全美票房】：$70,405,498
【海外票房】：$135,000,000
【评分】：7.8/10 (22,244 votes)
【链接】：</FONT><A href="http://www.imdb.com/title/tt0102138/" target=_blank><FONT face=Verdana color=#009933>http://www.imdb.com/title/tt0102138/</FONT></A>

<FONT face=Verdana>【格式】：Div3+AC3
【尺寸】：576x240
【大小】：701.79MB+701.80MB

【简介】：
　　该片从约翰·肯尼迪总统在达拉斯访问时被刺杀开始，地方检查官加里森着手调查此案。办案过程中他排除各种阻力，
逐渐发现这是一场精心不置、蓄谋已久的政治暗杀。加里森不顾阻拦和误解，为了坚持真理，起诉了其中的一名参与者。
虽然最终败诉，但他坚信这一真相终归有一天会水落石出的。

【海报】：
<IMG title=JFK宣传海报 height=136 alt=o_jfk.jpg src="http://www.blogjava.net/images/blogjava_net/jungleford/926/o_jfk.jpg" width=160 border=0>

【简评】：
　　1991年，奥立弗·斯通执导的描写肯尼迪遇刺内幕的政治惊怵片《刺杀肯尼迪》犹如一块惊天之石，在美国民众中掀起
千层巨浪：到底是谁杀了肯尼迪？观众走出影院为此展开了激烈的争论。《刺》片唤醒了他们日渐淡漠的记忆，迫使人们回
溯历史，重新审视、思考美国的民主政治。这也使《刺》片的上映同它讲述的内容一样成了一起政治事件，不得不让人钦服
斯通过人的魄力与胆识。

　　肯尼迪作为美国历史上最年轻的总统，他的遇刺被认为是美国历史上最黑暗恐怖的一幕。很多人坚信如果他没被暗杀，
美国就会从越南抽身而退，从而避免那一代人终生无法愈合的战争创伤。斯通无疑也持这种政治观点。在《刺》片中的肯尼
迪形象被拔高为自由派政治理念的完美化身，斯通借片中人物之口道出肯尼迪的遇刺使“美国人民一夜之间成了失去父王的
哈姆雷特”，足见其对肯尼迪的崇敬爱戴。同时，斯通建立在查阅大量史实与亲身试验基础上（斯通亲赴现场作的枪击试验
号称比当年政府部门还要细致）进行的推理判断使很多政要元老无法接受，前国防部长麦克纳马拉就曾对本片提出批评，认
为他把副总统约翰逊列为幕后主谋完全是主观臆断。（有趣的是，目前已公布的材料显示约翰逊正是阴谋的主使之一）对此，
年轻一代观众则会加以斥问：如果这些都是不着边际的推测，那为什么政府长期以“国家安全”为名封锁调查文件？！又为
什么到1983年为止累计有188名重要证人以各种原因相继辞世呢？

　　诚然，《刺》片只是一部阐述斯通个人观点的电影，它与真实的历史无疑是存在距离的，可你又不得不承认它的确具有
一种无法抗拒的盅惑力。斯通用剪辑与摄影不断强化他的推理分析，让观众感觉是在看一部引人入胜的悬疑侦探片。全片大
量采用抽格的特效摄影手法，瞬息间传达的信息量使入目眩。片中黑白与彩色胶片穿插，黑白片段交错在一起，不断击着观
众的视觉。人们顺着他的思路逐步认识到沃伦委员会报告的荒谬悖理，从而很自然地接受了他的观点。

　　此外，斯通对调查人员加里森的描写别有意义。片中加里森由于工作同妻子渐生矛盾的情节，暗示了调查工作决不仅仅
是寻找真相，它关系到下一代将要面对怎样的生存环境：让他们生活在一个谎言掩盖一切的世界中是有责任感的人们所不能
容忍的。加里森对儿子讲述的道理：好人太胆小了，坏人就会统治这个世界——浅显中不乏深刻尖锐，值得每一个人警醒。

　　本片音乐由大师约翰·威廉姆斯担纲。他为影片铺设了两个主题。一条线阴暗沉重，象征探索真理的崎岖艰难，也表现
出肯尼迪深处政敌环伺下的力不从心。另一条线则洋溢着正义的光辉，宛若被重重迷雾裹挟透出的希望之火。在起诉克雷·
肖败诉的一刻，这个主题悄然响起，让人感到坚持真理需要人们前赴后继去为之奋斗。上海资料馆配音版音乐背景中时常有
一段杰瑞·戈德史密斯为影片《全面回忆》谱写的主题音乐。这首充满金属质感的乐曲给影片注入一种铿锵顿挫的节奏感，
凸现了强劲的剧情张力，收到了意想不到的艺术效果。

　　以凯文·科斯特纳为首的演员阵容为影片增添了无限神采。这种正气凛然极具内省批判精神的角色，似乎只有凯文能胜
任。法庭陈词堪称同类影片近十年来最激动人心的场面。凯文激情奔涌、挥洒自如的气度令观众审为之夺。长达40分钟的独
白每一个字似都重如千斤，敲击着观者的心扉，让人沉思回味。加里·奥德曼扮演杀手李·哈维·奥斯瓦尔德，扮演历史人
物是加里的长项。片中他的表演与导演要表达的意图完全一致，使观众真实可信的感到：奥斯瓦尔德并不是真正的凶手，他
只是这场政治阴谋的替罪羊。 

<SPAN class=style2><A name=speech></A><U><FONT color=#cc0000><STRONG>Garrison经典陈词回顾：</STRONG></FONT></U></SPAN>

中英文对照版
</FONT></PRE></TD></TR>
<TR>
<TD vAlign=top width="50%">
<TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc border=1>
<TBODY>
<TR>
<TD><PRE><FONT face=Verdana>We've all become Hamlets in our country, 
children of a slain father-leader...
...whose killers still possess the throne.

The ghost of John F. Kennedy confronts us with
the secret murder at the heart of the American Dream.
He forces on us the appalling questions:
Of what is our Constitution made?
What are our lives worth?
What is the future of a democracy where a President
can be assassinated under suspicious circumstances
while the machinery of legal action scarcely trembles?
How many more political murders disguised as
heart attacks suicides, cancers, drug overdoses?
How many plane and car crashes will occur
before they are exposed for what they are?

"Treason doth never prosper," wrote an English poet.
What's the reason?
For if it prosper, none dare call it treason.
The American public has yet to see the Zapruder film.
Why?
The American public has yet to see
the real X-rays and autopsy photographs.
Why?
Hundreds of documents could help prove this conspiracy.
Why are they being withheld or burned by the government?
When my office or you, the people,
asked those questions, demanded evidence...
...the answer from on high has always been:
national security.
What kind of national security do we have
when we're robbed of our leaders?
What national security permits the removal...
...of fundamental power from the people and
validates the ascendancy of an invisible government
in the Unite States?
The kind of national security is...
...when it smells like it,
feels like it,
and looks like it...
you call it what it is: Fascism!

I submit to you that
what took place on November 22,1963 was a coup d'etat.
Its most direct and tragic result...
...was the reversal of Kennedy's decision
to withdraw from Vietnam.
The war is the biggest business in America...
...worth $80 billion a year.
President Kennedy was murdered
by a conspiracy planned
at the highest levels of our government...
...carried out
by fanatical and disciplined cold warriors...
...in the Pentagon and CIA's covert-operationapparatus.
Among them, Clay Show, here before you.
It was a public execution,
and it was covered up by like-minded people
in the Dallas Police，
the Secret Service, 
the FBI, 
and the White House up to and including
J. Edgar Hoover, and Lyndon Johnson
who were accomplices after the fact.
The assassination
reduced the President to a transient official.
His job is to speak as often as possible
of the nation's desire for peace
while he acts as a business agent in the Congress
for the military and their contractors.

Some people say I'm crazy.
Southern caricature seeking higher office.
There's a simple way to determine if I am paranoid.
Ask the two men who profited most
from the assassination former President Johnson
and your new President, Nixon...
...to release the 51 CIA documents
pertaining to Lee Oswald and Jack Ruby.
Or the secret CIA memo on Oswald's activities in Russia
that was destroyed while being Photo copied.
These documents are yours.
The people's property.
You pay for it.
But as the government sees you as children...
...who might be too disturbed to face this reality...
...or because you might lynch those involved...
...you cannot see these documents for another 75 years.

I'm in my 40s...
...so I'll have "shuffled off this mortal coil" by then.
But I'm telling my eight-year-old son
to keep himself physically fit...
...so that one glorious September morning, in 2038...
...he can go to the National Archives
and learn what the CIA and FBI knew.
They may push it back then.
It may become a generational affair.
Questions passed from parent to child.
But someday,
somewhere,
someone may find out the damn truth.
We better.
Or we might just as well build
ourselves another government...
...like the Declaration of Independence says to,
when the old one don't work.
Just a bit farther out West.

An American naturalist wrote:
"A patriot must always be ready to defend his country...
...against its government."
I'd hate to be in your shoes today.
You have a lot to think about.
You've seen evidence the public hasn't seen.


Going back to when we were children...
...I think most of us in this courtroom
thought justice came automatically.
That virtue was its own reward.
That good triumphs over evil.
But as we get older we know this isn't true.
Individual human beings have to create justice,
and this is not easy...
...because the truth often poses a threat to power...
...and one often has to fight power
at great risk to themselves.
People like
S.M. Holland Lee Bowers...
...Jean Hill, Willie O'Keefe...
...have all taken that risk
and they've all come forward.
I have here some $8,000 in these letters...
...sent from all over the country.
Quarters, dimes, dollars from housewives...
...plumbers, car salesmen, teachers, invalids.
These are people
who cannot afford to send money but do.
People who drive cars...
...who nurse in hospitals...
...who see their kids go to Vietnam.
Why?
Because they care.
Because they want to know the truth.
Because they want their country back.
Because it still belongs to us
as long as the people have the guts to
fight for what they believe in.
The truth is the most important value we have,
because if it doesn'tendure...
...if the government murders truth...
...if we cannot respect these people...
...then this is not the country I was born in,
or the country I want to die in.

Tennyson wrote: "Authority forgets a dying king."
This was never more true than for John F. Kennedy
whose murder was probably one of the most terrible moments
in the history of our country.
We, the people,
the jury system sitting in judgment on Clay Show...
...represent the hope...
...of humanity against government power.
In discharging your duty...
...to bring a first conviction
in this house of cards against Clay Shaw...
"...ask not what your country can do for you...
...but what you can do for your country."
Do not forget...
...your dying king.
Show this world...
...this is still a government
"of the people,by the people and for the people."
Nothing as long as you live will ever be more important.
It's up to you.</FONT></PRE></TD></TR></TBODY></TABLE></TD>
<TD vAlign=top width="50%">
<TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc border=1>
<TBODY>
<TR>
<TD><PRE><FONT face=Verdana>我们都变成了我们国家的哈姆雷特，
父亲被人谋杀，杀手却仍然掌权。


在我们内心的美国梦中，
肯尼迪的鬼魂与我们相遇，
他逼我们悚然质问：
我们的宪法奠定了什么？
我们生命的价值是什么？
总统在可疑的环境下被暗杀，
司法机构却无动于衷，
这种民主的未来是什么？
有多少更多的政治谋杀，
会被掩饰成心脏病、自杀、癌症和吸毒过量？！
有多少飞机汽车会失事在事情暴露的前夜？！


一首英国的诗中写道：“背信弃义绝不会成功。”
什么原因？
因为如果成功就没有人敢称之为背信弃义。
美国民众还从没有看过Zapruder影片，
为什么？
美国民众还从没看到真的X光片和验尸照片，

为什么？
几百份有助于证实这个阴谋的资料
为什么被官方扣押烧毁？
当本办事处和人民问到这些问题并要求证实的时候，

高层的回答永远是：“国家安全。”

当我们的领袖都惨遭横祸，
还会有什么样的国家安全？！
什么样的国家安全允许改变
来自人民的基本权利，
和认同一个看不见的美国政府的权势存在？

那样的国家安全，
当它闻起来如此，
感觉上如此，
看起来如此，
你们就可以称它为：法西斯主义！

我要提出的就是，
1963年11月22日发生的事件是一场政变，
它最直接和最具悲剧性的后果是
驳回了肯尼迪从越南撤军的决定。

战争是美国最大的生意，
它价值一年八百亿美元
肯尼迪总统被由官方层层策划的阴谋所杀害


由狂热受训的冷战战士执行，

他们来自国防部和中情局掩饰行动组
而他们之中，就有我们面前的克莱·萧。
这是一场公然执行的枪决，
由来自于
达拉斯警察局、
秘密勤务局、
联邦调查局
和白宫的人所掩盖，
包括胡佛，约翰逊，
我相信他们在该事件后成为共犯。
暗杀使总统成为过渡官员，

新总统的任务就是
每当他在国会扮演厂商、军事或承包人代理时
尽可能地高谈国家对和平的渴望。


有人说我发了疯，
一个南方小丑在捞政治本钱。
这里有个简单的方法来决定我是否有偏执狂。
让两位从暗杀得利最多的人，

前总统约翰逊和现任总统尼克松
公布51号中情局档案
包括李·奥斯瓦尔德和杰克·鲁比
或翻照时毁损的中情局有关奥斯华在俄活动的秘密备忘录。

这些文件是你们的，
是人民的财产，
你们付了钱的！
但官方视你们为小孩子
认为你们面对真相会受到困扰
或因为你们会制裁那些牵涉
所以你们需要另一个75年之后才能看到这些资料。

我已经四十多岁了
到那时候我将不在这个世上，
但我告诉我八岁的儿子，
要他保持健康
以便在2038年9月一个灿烂的早上
走进国家档案库找出中情局和调查局所知道的真相。

但他们或许把时间再次延后
变成代代相传的事，
疑问由父母传给子女
但总有一天有一个人会在什么发现那该死的真相！


最好是这样
不然我们或许只好自己建立另一个政府

像独立宣言所说当旧的政府妨害人民时，
就需要取而代之。


一位美国自然主义者写过
爱国者要经常准备为保卫国家
而对抗政府
我很不情愿处在你们今天的位置，

因为你们看到了公众看不到的证据。


回想起童年（所受的教育）
我想大多数人认为正义是自然降临的，

善有善报，
正义必然会战胜邪恶。
但我们越长大就越知道这不是真的
每个人都要树立正义，
而这并不容易
因为真理常常受到权势的威胁，
我们经常要冒很大风险与权势战斗。

有很多人，
像霍兰，李·鲍尔
珍·希尔，威里·欧奇夫
都是冒着极大的风险前来作证

我这里有个信封，里面大约有八千美元
是从全国各地寄来的，
有两毛五，一毛，一元……来自家庭主妇，
水管工，汽车销售员，老师，残疾人。
他们掏不起钱但他们却掏了。

这里面有人是开车的
有在医院当护士的
他们看着自己的儿子被送去越南
为什么？
因为他们在乎。
因为他们要知道真相
因为他们想要找回他们的国家
因为只要我们仍然为自己的信仰而斗争，
这个国家就仍是属于我们的。

真理是我们拥有的最重要的价值，
因为如果它不再存续
如果政府掩盖事实
如果我们不能尊敬这些人
那么这不是我愿意生于斯死于斯的国家。


丹尼逊写道： 当权者遗忘了垂死的国王
可以真切地说，
肯尼迪的谋杀是我们国家历史中最恐怖的一刻。

我们，
人民陪审团，坐在这里审判克莱·萧
代表着人性的希望
来对抗政府权势。
来尽我们的义务

对克莱·萧 作第一次的定罪
不要问你的国家能为你做些什么
要问问你能为你的国家做些什么
不要忘记
你们垂死的国王
让全世界知道
这仍然是一个民有、民治、民享的政府。

在我们的有生之年，没有比这更重要的了。
全看你们的了。
</FONT></PRE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><B><BR></B></FONT><img src ="http://www.blogjava.net/jungleford/aggbug/2768.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jungleford/" target="_blank">jungleford</a> 2005-04-02 22:19 <a href="http://www.blogjava.net/jungleford/archive/2005/04/02/2768.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>