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

<channel>
	<title>研究研究 &#187; 开源工具</title>
	<atom:link href="http://www.yanjiuyanjiu.com/category/open-source/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yanjiuyanjiu.com</link>
	<description>关注互联网和人工智能</description>
	<lastBuildDate>Wed, 04 Jan 2012 04:36:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>推荐给TeX新手的电子书和书籍</title>
		<link>http://www.yanjiuyanjiu.com/2010/04/17/newbie-to-latex/</link>
		<comments>http://www.yanjiuyanjiu.com/2010/04/17/newbie-to-latex/#comments</comments>
		<pubDate>Sat, 17 Apr 2010 10:23:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[开源工具]]></category>
		<category><![CDATA[ctex]]></category>
		<category><![CDATA[latex]]></category>
		<category><![CDATA[tex]]></category>

		<guid isPermaLink="false">http://www.yanjiuyanjiu.com/?p=4128</guid>
		<description><![CDATA[CTEX自带的文档： 1、安装好CTEX后，c:\CTEX\CTeX\ctex\doc\下的两个文档，ctex-faq.pdf和lshort-cn.pdf（即93 分钟学会 LaTeX2e） 2、ftp://ftp.ctex.org/pub/tex/documents/bible/ 下的 LaTeX_manual.zip 对于初学者，上面3个文档足够了，在c:\CTEX\CTeX\ctex\doc\目录下的其他几个文档也非常好。 如果想进一步学习，推荐下面一本书。 3、《LaTeX入门与提高》，陈志杰，2008，高等教育出版社，卓越上有卖的。这里有个PDF扫描版。 网上的免费电子书： 4、A Guide to LaTeX 5、the latex companion，和第2个文档 LaTeX_manual 在同一个ftp目录下,还有另一个下载地址。 6、LaTeX2e使用手册 7、LaTeX2e插图指南 参考资料： 陈志杰老师的《latex入门与提高》这本书怎么样啊？ 中国LaTeX 新用户，LaTeX中文必读教程]]></description>
			<content:encoded><![CDATA[<p><strong>CTEX自带的文档：</strong><br />
1、安装好CTEX后，c:\CTEX\CTeX\ctex\doc\下的两个文档，ctex-faq.pdf和lshort-cn.pdf（即93 分钟学会 LaTeX2e）<br />
2、ftp://ftp.ctex.org/pub/tex/documents/bible/ 下的 LaTeX_manual.zip<br />
对于初学者，上面3个文档足够了，在c:\CTEX\CTeX\ctex\doc\目录下的其他几个文档也非常好。</p>
<p><strong>如果想进一步学习，推荐下面一本书。</strong><br />
3、<a href="http://www.amazon.cn/mn/detailApp/ref=sr_1_1?_encoding=UTF8&amp;s=books&amp;qid=1271499096&amp;asin=B00114JYBU&amp;sr=8-1">《LaTeX入门与提高》</a>，陈志杰，2008，高等教育出版社，卓越上有卖的。<a href="http://ishare.iask.sina.com.cn/f/7485622.html">这里有个PDF扫描版</a>。</p>
<p><strong>网上的免费电子书：</strong><br />
4、<a href="http://gigapedia.com/items/104415/a-guide-to-latex--document-preparation-for-beginners-and-advanced-users--3rd-edition-">A Guide to LaTeX</a><br />
5、the latex companion，和第2个文档 LaTeX_manual 在同一个ftp目录下,还有<a href="http://gigapedia.com/items/3842/the-latex-companion--tools-and-techniques-for-computer-typesetting-">另一个下载地址</a>。<br />
6、<a href="http://ftp.ctex.org/pub/tex/documents/texguru/homepage/guide.html">LaTeX2e使用手册</a><br />
7、<a href="ftp://ftp.ctex.org/pub/tex/documents/bible/LaTeX_graphics.zip">LaTeX2e插图指南</a></p>
<p>参考资料：<br />
<a href="http://bbs.ctex.org/redirect.php?tid=31930&amp;goto=lastpost">陈志杰老师的《latex入门与提高》这本书怎么样啊？</a><br />
<a href="http://bbs.ctex.org/viewthread.php?&amp;tid=1023">中国LaTeX 新用户，LaTeX中文必读教程</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yanjiuyanjiu.com/2010/04/17/newbie-to-latex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>基于Ubuntu Jeos打造自己的精简版Linux服务器</title>
		<link>http://www.yanjiuyanjiu.com/2010/04/14/ubuntu-jeos/</link>
		<comments>http://www.yanjiuyanjiu.com/2010/04/14/ubuntu-jeos/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 14:52:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[开源工具]]></category>
		<category><![CDATA[jeos]]></category>
		<category><![CDATA[ubunt]]></category>

		<guid isPermaLink="false">http://www.yanjiuyanjiu.com/?p=4112</guid>
		<description><![CDATA[1. 下载 Ubuntu Server 官网的地址是：http://www.ubuntu.com/getubuntu/download-server 在这里下载的是标准的服务器版Ubuntu。为什么呢？因为 Ubuntu Jeos 现在已经并入了 Ubuntu Server 的ISO中了，这里有提到： Now part of the standard server ISO image 2. 下载并安装VMware Workstation 当前最新版本是 7.0.1 build-227600 3. 安装 Ubuntu Jeos虚拟机 一般选择默认，直接一路next即可，需要注意的地方本文会给出说明。 这里一定要选择 “I will install the operating system later”，因为如果选择前面两个，就会启用 “Easy Install”功能，即VMWare会很智能的识别这是Ubuntu，自动给你安装，你待会儿就没机会选择选项了。 注意：这里最为关键，按F4，选择 “Install a minimal virtual machine” 一连串的“NO”，一般会探测出你的键盘类型是”us”即美国键盘。 计算机名字，随便取 格式化硬盘 用户的显示名字，随便取 用户名和密码就不能随便取了，不能忘了，否则进不了系统你就杯具了。我一般就把用户名和密码设置为： Hostname:ubuntu-10.04 Full name [...]]]></description>
			<content:encoded><![CDATA[<p><strong>1. 下载 Ubuntu Server </strong></p>
<p>官网的地址是：<a href="http://www.ubuntu.com/getubuntu/download-server">http://www.ubuntu.com/getubuntu/download-server</a></p>
<p>在这里下载的是标准的服务器版Ubuntu。为什么呢？因为 Ubuntu Jeos 现在已经并入了 Ubuntu Server 的ISO中了，<a href="http://www.ubuntu.com/products/whatisubuntu/serveredition/jeos">这里</a>有提到：</p>
<p>Now part of the standard server ISO image</p>
<p><strong>2. 下载并安装VMware Workstation</strong></p>
<p>当前最新版本是 7.0.1 build-227600</p>
<p><strong>3. 安装 Ubuntu Jeos虚拟机</strong></p>
<p>一般选择默认，直接一路next即可，需要注意的地方本文会给出说明。</p>
<p><img src="/images/ubuntu_jeos/1.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap1.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap2.jpg" alt="" /></p>
<p>这里一定要选择 “I will install the operating system later”，因为如果选择前面两个，就会启用 “Easy Install”功能，即VMWare会很智能的识别这是Ubuntu，自动给你安装，你待会儿就没机会选择选项了。<span id="more-4112"></span></p>
<p><img src="/images/ubuntu_jeos/Snap3.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap4.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap5.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap6.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap7.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap8.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap9.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap10.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap11.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap12.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap13.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap14.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap15.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap16.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap17.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap18.jpg" alt="" /></p>
<p><span style="color: #ff0000;">注意：这里最为关键，按F4，选择 “Install a minimal virtual machine” </span></p>
<p><img src="/images/ubuntu_jeos/Snap19.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap20.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap21.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap22.jpg" alt="" /><br />
一连串的“NO”，一般会探测出你的键盘类型是”us”即美国键盘。<br/><br />
<img src="/images/ubuntu_jeos/Snap23.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap24.jpg" alt="" /></p>
<p>计算机名字，随便取</p>
<p><img src="/images/ubuntu_jeos/Snap25.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap26.jpg" alt="" /></p>
<p>格式化硬盘</p>
<p><img src="/images/ubuntu_jeos/Snap27.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap28.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap29.jpg" alt="" /></p>
<p><img src="./images/ubuntu_jeos/Snap30.jpg" alt="" /></p>
<p>用户的显示名字，随便取</p>
<p><img src="/images/ubuntu_jeos/Snap32.jpg" alt="" /></p>
<p>用户名和密码就不能随便取了，不能忘了，否则进不了系统你就杯具了。我一般就把用户名和密码设置为：<br/><br />
Hostname:ubuntu-10.04<br/><br />
Full name for the new user:developer<br/><br />
Username for your account:developer<br/><br />
Chose a password for the new user:developer123<br/><br />
Re-enter password to verify:admin<br/><br />
New password for the MySQL “root” user: root<br/></p>
<p><img src="/images/ubuntu_jeos/Snap33.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap34.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap35.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap36.jpg" alt="" /></p>
<p><span style="color: #ff0000;">选一个国内的源，待会儿下载一些包速度比较快，这里用的地址<a href="http://wiki.ubuntu.org.cn/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E6%88%91%E4%BB%AC%E6%8E%A8%E8%8D%90%E7%9A%84%E6%BA%90">来自这里</a>。</span></p>
<p><img src="/images/ubuntu_jeos/Snap37.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap38.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap39.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap40.jpg" alt="" /></p>
<p>选择需要安装的服务器软件，我选择了4个，<span style="color: #ff0000;">按空格选择</span>。注意，<span style="color: #ff0000;">不要选samba</span>，后面会安装vmware-tools，比samba方便多了。</p>
<p>Ubuntu JDK 默认路径为 /usr/lib/jvm/java-1.6.0-openjdk。</p>
<p><img src="/images/ubuntu_jeos/Snap41.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap42.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap43.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap44.jpg" alt="" /></p>
<p>大公告成，重启！</p>
<p>给刚安装好的机器创建一个快照，免得后面的操作不成功是可以退回。</p>
<p><img src="/images/ubuntu_jeos/Snap59.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap60.jpg" alt="" /></p>
<p><strong>4. 在真机上安装一个SSH客户端</strong></p>
<p>推荐 <a href="http://www.onlinedown.net/soft/20089.htm">SSH Secure Shell Client 3.2.9</a>，下载，安装好后，登陆</p>
<p><img src="/images/ubuntu_jeos/Snap46.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap47.jpg" alt="" /></p>
<p><strong>启动SSH Secure File Transfer</strong>，待会儿传输文件要用到。</p>
<p><img src="/images/ubuntu_jeos/Snap49.jpg" alt="" /></p>
<p><strong>5.升级一下系统，然后清理一下，再建一个快照，命名为 “updated”。</strong></p>
<p>备份源列表：</p>
<p><span style="background-color: #d9d9d9;">hadoop@soulmachine:~$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bk</span></p>
<p>将 /etc/apt/sources.list 下载到本地 d:/tmp/sources.list</p>
<p><img src="/images/ubuntu_jeos/Snap61.jpg" alt="" /></p>
<p>用记事本或UltralEdit打开，清空其中内容，然后用如下内容替换，保存。这个APT源来自<a href="http://wiki.ubuntu.org.cn/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E6%88%91%E4%BB%AC%E6%8E%A8%E8%8D%90%E7%9A%84%E6%BA%90">这里</a>，速度比较快。</p>
<p><span style="background-color: #d9d9d9;"><br />
deb http://ubuntu.srt.cn/ubuntu/ karmic main restricted universe multiverse</span></p>
<p>deb http://ubuntu.srt.cn/ubuntu/ karmic-security main restricted universe multiverse</p>
<p>deb http://ubuntu.srt.cn/ubuntu/ karmic-updates main restricted universe multiverse</p>
<p>deb http://ubuntu.srt.cn/ubuntu/ karmic-proposed main restricted universe multiverse</p>
<p>deb http://ubuntu.srt.cn/ubuntu/ karmic-backports main restricted universe multiverse</p>
<p>deb-src http://ubuntu.srt.cn/ubuntu/ karmic main restricted universe multiverse</p>
<p>deb-src http://ubuntu.srt.cn/ubuntu/ karmic-security main restricted universe multiverse</p>
<p>deb-src http://ubuntu.srt.cn/ubuntu/ karmic-updates main restricted universe multiverse</p>
<p>deb-src http://ubuntu.srt.cn/ubuntu/ karmic-proposed main restricted universe multiverse</p>
<p>deb-src http://ubuntu.srt.cn/ubuntu/ karmic-backports main restricted universe multiverse</p>
<p>上传文件到 /home/hadoop/下，因为直接上传到 /etc/apt/不行，没有权限。</p>
<p><img src="/images/ubuntu_jeos/Snap62.jpg" alt="" /></p>
<p>覆盖系统中的源列表：</p>
<p><span style="background-color: #d9d9d9;">hadoop@soulmachine:~$ sudo cp sources.list /etc/apt/sources.list</span></p>
<p>刷新列表：</p>
<p><span style="background-color: #d9d9d9;">hadoop@soulmachine:~$ sudo apt-get update</span></p>
<p><span style="color: #ff0000;">注意：一定要执行刷新</span></p>
<p>更新已安装的包，这一步要花一点时间。</p>
<p><span style="background-color: #d9d9d9;">hadoop@soulmachine:~$ sudo apt-get upgrade</span></p>
<p>清理无用的包：</p>
<p><span style="background-color: #d9d9d9;"><br />
hadoop@soulmachine:~$ sudo apt-get clean &amp;&amp; sudo apt-get autoclean</span></p>
<p>hadoop@soulmachine:~$ rm sources.list<br />
// 删除用户目录下的这个文件，可选</p>
<p>新建一个快照，取名为”upgraded”。</p>
<p><img src="/images/ubuntu_jeos/Snap63.jpg" alt="" /></p>
<p><strong>6.在ubuntu中安装 vmware-tools</strong></p>
<p>找到 C:\Program Files\VMware\VMware Workstation\linux.iso，解压，得到一个 VMWARETO.TGZ，把它上传到Ubuntu中。</p>
<p><img src="/images/ubuntu_jeos/Snap51.jpg" alt="" /></p>
<p><img src="/images/ubuntu_jeos/Snap52.jpg" alt="" /></p>
<p>解压，命令为 tar -zxvf VMWARETO.TGZ</p>
<p><span style="background-color: #d9d9d9;">hadoop@soulmachine:~$ tar -zxvf VMWARETO.TGZ </span></p>
<p>解压好后，执行 vmware-tools-distrib/vmware-install.pl</p>
<p><img src="/images/ubuntu_jeos/Snap54.jpg" alt="" /></p>
<p>一路回车，YES下去就行了</p>
<p><span style="background-color: #d9d9d9;"><br />
Installing VMware Tools.</span></p>
<p>In which directory do you want to install the binary files?</p>
<p>[/usr/bin]</p>
<p>What is the directory that contains the init directories (rc0.d/ to rc6.d/)?</p>
<p>[/etc]</p>
<p>What is the directory that contains the init scripts?</p>
<p>[/etc/init.d]</p>
<p>In which directory do you want to install the daemon files?</p>
<p>[/usr/sbin]</p>
<p>In which directory do you want to install the library files?</p>
<p>[/usr/lib/vmware-tools]</p>
<p>The path “/usr/lib/vmware-tools” does not exist currently. This program is</p>
<p>going to create it, including needed parent directories. Is this what you want?</p>
<p>[yes] yes</p>
<p>In which directory do you want to install the documentation files?</p>
<p>[/usr/share/doc/vmware-tools]</p>
<p>The path “/usr/share/doc/vmware-tools” does not exist currently. This program</p>
<p>is going to create it, including needed parent directories. Is this what you</p>
<p>want? [yes] yes</p>
<p>The installation of VMware Tools 8.1.4 build-227600 for Linux completed</p>
<p>successfully. You can decide to remove this software from your system at any</p>
<p>time by invoking the following command: “/usr/bin/vmware-uninstall-tools.pl”.</p>
<p>Before running VMware Tools for the first time, you need to configure it by</p>
<p>invoking the following command: “/usr/bin/vmware-config-tools.pl”. Do you want</p>
<p>this program to invoke the command for you now? [yes]</p>
<p>接下来这一处默认是NO，我们也输入NO</p>
<p><span style="background-color: #d9d9d9;"><br />
[EXPERIMENTAL] The VMware FileSystem Sync Driver (vmsync) is a new feature that</span></p>
<p>creates backups of virtual machines. Please refer to the VMware Knowledge Base</p>
<p>for more details on this capability. Do you wish to enable this feature?</p>
<p>[no] no</p>
<p>安装好了，删除安装包，然后关机，因为我们需要设置一个东西，下一步就会看到。</p>
<p><span style="background-color: #d9d9d9;"><br />
hadoop@soulmachine:~/vmware-tools-distrib$ cd ..</span></p>
<p>hadoop@soulmachine:~$ ls</p>
<p><span style="color: #0000ff;">vmware-tools-distrib</span> VMWARETO.TGZ</p>
<p>hadoop@soulmachine:~$ rm -rf ./vmware-tools-distrib/</p>
<p>hadoop@soulmachine:~$ ls</p>
<p>VMWARETO.TGZ</p>
<p>hadoop@soulmachine:~$ rm ./VMWARETO.TGZ</p>
<p>新建一个快照，取名为 “vmware-tools-installed”，然后关机。</p>
<p><span style="background-color: #d9d9d9;">hadoop@soulmachine:~$ sudo shutdown -h now </span></p>
<p><strong>7.设置文件夹共享</strong></p>
<p>点击 Edit virtual machine settings，激活文件夹共享，</p>
<p><img src="/images/ubuntu_jeos/Snap55.jpg" alt="" /></p>
<p>添加本机上的一个文件夹，Name 为linux上显示的名字，</p>
<p><img src="/images/ubuntu_jeos/Snap56.jpg" alt="" /></p>
<p>其他默认，点击“Finish”，然后点击”Power on this virtual machine”，开机，可以在linux里访问这个文件夹了，windows上的这个文件夹会被vmware-tools自动映射 (mount) 到linux下的 <span style="color: #ff0000;">/mnt/hgfs/xpshare </span>。</p>
<p><span style="background-color: #d9d9d9;">hadoop@soulmachine:~$ ls /mnt/hgfs/</span></p>
<p><span style="background-color: #007f00;">xpshare</span></p>
<p><strong>8.将本虚拟机打包。</strong></p>
<p>右击本虚拟机标签，选择 “clone”。</p>
<p><img src="/images/ubuntu_jeos/Snap64.jpg" alt="" /></p>
<p>这一步默认，</p>
<p><img src="/images/ubuntu_jeos/Snap65.jpg" alt="" /></p>
<p>选择 “create full clone”，</p>
<p><img src="/images/ubuntu_jeos/Snap66.jpg" alt="" /></p>
<p>选择存放路径。</p>
<p><img src="/images/ubuntu_jeos/Snap67.jpg" alt="" /></p>
<p>注意：没必要删除之前创建的快照再克隆，因为克隆时不会把快照考虑进去。</p>
<p>接下来可以把这个文件夹用WinRAR压缩，大小大约500M多，我的是 514M。</p>
<p><strong>9.使用别人打包好的虚拟机</strong></p>
<p>如何使用这个打包好后的虚拟机呢？很简单，解压，然后再VMWare Workstation里点击”File-&gt;Open”，浏览到此文件夹，打开.vmx后缀的文件即可。</p>
<p>当打开一个vmx文件时，会跳出一个对话框，一般选择”I copied it”。</p>
<p><img src="/images/ubuntu_jeos/Snap68.jpg" alt="" /></p>
<p><strong>10.VMWare克隆后Ubuntu的 “No such device eth0&#8243; 错误 </strong></p>
<p>其实克隆后的虚拟机，第一个碰到的问题，便是不能上网。用ifconfig命令发现机器没有获得IP，只有一个 127.0.0.1。Google了一下，找到了答案。</p>
<p><strong>原因：</strong></p>
<p>新克隆的虚拟机镜像的网卡mac地址已经变更。打开虚拟机的.vmx文件，ethernet0.generatedAddress项记录了该虚拟机的 mac地址。</p>
<p>查看所有适配器信息</p>
<p>ifconfig -a</p>
<p>发现除了原来的eth0外，Ubuntu已经将新网卡命名为eth1。</p>
<p>Ubuntu保存网卡mac地址和设备名的配置文件在</p>
<p>/etc/udev/rules.d/70-persistent-net.rules</p>
<p>网卡的网络配置保存在</p>
<p>/etc/network/interfaces</p>
<p>该配置文件中只有原来eth0的配置信息。</p>
<p><strong>解决方案：</strong>移动/删除rules文件。（已验证）</p>
<p><span style="background-color: #d9d9d9;"><br />
sudo mv /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/70-persistent-net.rules.old</span></p>
<p>重启后Ubuntu会创建新的rules文件，将新网卡辨认为eth0，沿用原eth0 的网络配置。</p>
<p><strong>参考资料</strong></p>
<p><a href="http://www.ubuntu.com/products/whatisubuntu/serveredition/jeos"> Ubuntu Server Edition JeOS</a></p>
<p><a href="http://fanqiang.chinaunix.net/a1/b1/20020130/21030661.html"> Linux关机命令详解</a></p>
<p><a href="http://wiki.ubuntu.org.cn/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E6%88%91%E4%BB%AC%E6%8E%A8%E8%8D%90%E7%9A%84%E6%BA%90">如何使用我们推荐的源 </a></p>
<p><a href="http://blog.csdn.net/willand1981/archive/2010/04/06/5455521.aspx">Ubuntu Linux系统下apt-get命令详解</a></p>
<p><a href="http://blog.csdn.net/man8848/archive/2009/04/30/4138415.aspx"> Ubuntu 安装VMware-Tools </a></p>
<p><a href="http://blog.csdn.net/dctfjy/archive/2009/06/01/4233284.aspx">VMWare克隆后Ubuntu的 “No such device eth0&#8243; 错误 </a></p>
<p><a href="http://www.yanjiuyanjiu.com/upload/ubuntu_jeos.pdf"><span style="font-size: large;">下载PDF版本</span></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yanjiuyanjiu.com/2010/04/14/ubuntu-jeos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java 读写图像</title>
		<link>http://www.yanjiuyanjiu.com/2010/04/01/java-image-io/</link>
		<comments>http://www.yanjiuyanjiu.com/2010/04/01/java-image-io/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 04:08:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[开源工具]]></category>
		<category><![CDATA[image]]></category>

		<guid isPermaLink="false">http://www.yanjiuyanjiu.com/?p=4110</guid>
		<description><![CDATA[Java中进行图像I/O（即读图片和写图片，不涉及到复杂图像处理）有三个方法： 1. Java Image I/O API，支持常见图片，从Java 2 version 1.4.0开始就内置了。 主页：http://java.sun.com/javase/6/docs/technotes/guides/imageio/index.html 2. JAI 中的 Image I/O Tools，支持更多图片类型，例如JPEG-LS, JPEG2000, 和 TIFF。 主页：https://jai-imageio.dev.java.net/。JAI 是一个关于图像处理的框架，很庞大， 其中仅仅jai-imageio是关于图像I/O的，其他的可以不看。 3. JAI的com.sun.media.jai.codec 也有一定的图像解码能力 当然，还有众多的java开源工具包可以读写图像，例如JIMI, JMagic等，但JDK目前本身能 够读写图片，就用JDK的，开发和部署方便，不需要额外下载jar包。 由于JAI是Java新加入的，很多组件不是正式规范，JDK不自带，因此开发和部署需要额外 安装，安装文件在官网https://jai.dev.java.net/下载得到。 如果你仅仅想读取常见格式的图片，不需要用JAI这么高级这么庞大的东西， 用Java Image I/O API即可。 下面重点介绍 Java Image I/O API。 Java Image I/O API 主要在 javax.imageio 下面。JDK已经内置了常见图片格式的插件， 但它提供了插件体系结构，第三方也可以开发插件支持其他图片格式。 下面这段代码可以展示，JDK内置支持的图片格式。 import javax.imageio.*; import java.util.Arrays; public class [...]]]></description>
			<content:encoded><![CDATA[<p>Java中进行图像I/O（即读图片和写图片，不涉及到复杂图像处理）有三个方法：<br />
1. Java Image I/O API，支持常见图片，从Java 2 version 1.4.0开始就内置了。<br />
主页：<a href="http://java.sun.com/javase/6/docs/technotes/guides/imageio/index.html" target="_blank">http://java.sun.com/javase/6/docs/technotes/guides/imageio/index.html</a><br />
2. JAI 中的 Image I/O Tools，支持更多图片类型，例如JPEG-LS, JPEG2000, 和 TIFF。<br />
主页：<a href="https://jai-imageio.dev.java.net/" target="_blank">https://jai-imageio.dev.java.net/</a>。JAI 是一个关于图像处理的框架，很庞大，<br />
其中仅仅jai-imageio是关于图像I/O的，其他的可以不看。<br />
3. JAI的com.sun.media.jai.codec 也有一定的图像解码能力</p>
<p>当然，还有众多的java开源工具包可以读写图像，例如JIMI, JMagic等，但JDK目前本身能<br />
够读写图片，就用JDK的，开发和部署方便，不需要额外下载jar包。</p>
<p>由于JAI是Java新加入的，很多组件不是正式规范，JDK不自带，因此开发和部署需要额外<br />
安装，安装文件在官网<a href="https://jai.dev.java.net/" target="_blank">https://jai.dev.java.net/</a>下载得到。</p>
<p>如果你仅仅想读取常见格式的图片，不需要用JAI这么高级这么庞大的东西，<br />
用Java Image I/O API即可。</p>
<p>下面重点介绍 Java Image I/O API。</p>
<p>Java Image I/O API 主要在 javax.imageio 下面。JDK已经内置了常见图片格式的插件，<br />
但它提供了插件体系结构，第三方也可以开发插件支持其他图片格式。</p>
<p>下面这段代码可以展示，JDK内置支持的图片格式。<br />
import javax.imageio.*;<br />
import java.util.Arrays;</p>
<p>public class HelloWorld {<br />
public static void main(String args[]) {<br />
String readFormats[] = ImageIO.getReaderFormatNames();<br />
String writeFormats[] = ImageIO.getWriterFormatNames();<br />
System.out.println(“Readers:  ” + Arrays.asList(readFormats));<br />
System.out.println(“Writers:  ” + Arrays.asList(writeFormats));<br />
}<br />
}</p>
<p>主页上有一个文档，<a href="http://java.sun.com/javase/6/docs/technotes/guides/imageio/spec/title.fm.html" target="_blank"><strong>Java Image I/O API Guide</strong></a>，很通俗易懂，可以让你快速上手。以下<br />
内容主要来自这个文档的第3章。</p>
<p><strong>第3章 编写图像I/O程序</strong><br />
<strong>3.1 读写图片</strong><br />
javax.imageio.ImageIO类提供了一组静态方法进行最简单的图像I/O操作。<br />
读取一个标准格式(GIF, PNG, or JPEG)的图片很简单：<br />
File f = new File(“c:\images\myimage.gif”);<br />
BufferedImage bi = ImageIO.read(f);</p>
<p>Java Image I/O API 会自动探测图片的格式并调用对应的插件进行解码，当安装了一个新<br />
插件，新的格式会被自动理解，程序代码不需要改变。</p>
<p>写图片同样简单：<br />
BufferedImage bi;<br />
File f = new File(“c:\images\myimage.png”);<br />
ImageIO.write(im, “png”, f);</p>
<p><strong>3.2 更进一步</strong><br />
上一节谈到的方法对于简单程序已经足够了。不过，Java Image I/O API 提供了为编写复<br />
杂程序的能力。为了利用API的高级特性，应用程序应当直接使用类ImageReader 和<br />
ImageWriter。</p>
<p><strong>3.3 ImageReader 类</strong><br />
与其用ImageIO类来进行所有的解码操作，不如用ImageIO类去得到一个ImageReader对象，<br />
再用这个对象去进行读操作：<br />
Iterator readers = ImageIO.getImageReadersByFormatName(“gif”);<br />
ImageReader reader = (ImageReader)readers.next();</p>
<p>ImageReader对象也可以基于文件内容、文件后缀或MIME类型获得。这个用于查找和初始<br />
化ImageReader对象的机制用到了javax.imageio.spi.ImageReaderSpi类，它可以在不用初<br />
始化插件的情况下获得插件的信息。”service provider interfaces” (SPIs)将会在下一<br />
章详细讨论。一旦获得了一个ImageReader对象，必须给它是指一个输入源。大部分<br />
ImageReader对象可以从ImageInputStream类输入源读取数据，ImageInputStream是Image<br />
I/O API定义的专用输入源。</p>
<p>获得一个ImageInputStream 是简单的。给定一个File或InputStream，一个<br />
ImageInputStream对象可以通过调用如下函数产生：<br />
Object source; // File or InputStream<br />
ImageInputStream iis = ImageIO.createImageInputStream(source);</p>
<p>一旦有了输入源，可以把它与一个ImageReader对象关联起来：<br />
reader.setInput(iis, true);</p>
<p>如果输入源文件包含多张图片，而程序不保证按顺序读取时，第二个参数应该设置为<br />
false。对于那些只允许存储一张图片的文件格式，永远传递true是合理的。</p>
<p>当ImageReader对象有了输入源后，我们就可以获取图片信息而不用把整张图片数据都读入<br />
内存。例如，调用reader.getImageWidth(0)可以让我们获得文件中第一张图片的宽度。一<br />
个好的插件会试图解码文件的必要部分，去获得图片的宽度，而不用读取任何一个像素。</p>
<p>为读取图片，可以调用reader.read(imageIndex), imageIndex是文件（当包含多张图片时）<br />
中图片的索引。这与上一节调用ImageIO.read()产生的结果相同。</p>
<p><strong>3.3.1 ImageReadParam</strong><br />
如果需要更多的控制，可以向read()方法传递一个ImageReadParam类型的参数。一个<br />
ImageReadParam对象可以让程序更好的利用内存。它不仅允许指定一个感兴趣的区域，还<br />
可以指定一个抽样因子，用于向下采样。</p>
<p>例如，为了只解码图片的左上角的1/4，程序可以先获取一个合适的ImageReadParam对象：<br />
ImageReadParam param = reader.getDefaultReadParam();</p>
<p>接下来，指定图片区域：<br />
import java.awt.Rectangle;<br />
int imageIndex = 0;<br />
int half_width = reader.getImageWidth(imageIndex)/2;<br />
int half_height = reader.getImageHeight(imageIndex)/2;<br />
Rectangle rect = new Rectangle(0, 0, half_width, half_height);<br />
param.setSourceRegion(rect);</p>
<p>最后，读取图片：<br />
BufferedImage bi = reader.read(imageIndex, param);</p>
<p>结果是一张新图片，宽和高都只有原图片的一半。</p>
<p>另一个例子，为了读取每三个像素中的一个，产生一个原图片1/9大小的图片，可以用<br />
ImageReadParam指定抽样因子：<br />
param = reader.getDefaultImageParam();<br />
param.setSourceSubsampling(3, 3, 0, 0);<br />
BufferedImage bi3 = reader.read(0, param);</p>
<p><strong>3.3.2 IIOParamController</strong><br />
插件有时会提供一个IIOParamController类，这是可选的。略。</p>
<p><strong>3.3.3 读多图片文件</strong><br />
ImageReader 中所有与图片打交道的方法都有一个imageIndex 参数，这个参数用于读取多<br />
图片文件中的一张。</p>
<p>ImageReader.getNumImages()返回多图片文件中的图片个数。这个方法有一个boolean参数，<br />
allowSearch。有的图片格式，典型的GIF，没有提供任何获取文件中的图片个数方法，除<br />
非读取整个进行解析。这样代价很高，因此设置allowSearch为false可以让方法直接返回<br />
-1，而不是实际的图片个数。如果此参数是true，则该方法总会返回文件中实际的图片个<br />
数。</p>
<p>即使在不知道文件中图片个数的情况下，仍可以调用read(imageIndex); 如果索引值过大，<br />
该方法会抛出IndexOutOfBoundsException异常。因此，程序可以递增索引去获取图片，<br />
直到异常。</p>
<p><strong>3.3.4 读缩略图 </strong><br />
有的图片格式允许一个（或多个）小的预览图，与主图片一起存储在文件中。这些<br />
“缩略图”对于快速识别图片很有用，不用解码整个图片。</p>
<p>程序可以调用如下代码，探测一张图片有多少张缩略图：<br />
reader.getNumThumbnails(imageIndex);</p>
<p>如果存在缩略图，可以调用如下代码获取：<br />
int thumbailIndex = 0;<br />
BufferedImage bi;<br />
bi = reader.readThumbnail(imageIndex, thumbnailIndex);</p>
<p><strong>3.4 ImageWriter 类 </strong><br />
就像我们可以用ImageIO 的一个方法获取某种图片格式的ImageReader对象一样，我们也可<br />
以获取ImageWriter对象：<br />
Iterator writers = ImageIO.getImageWritersByFormatName(“png”);<br />
ImageWriter writer = (ImageWriter)writers.next();</p>
<p>一旦获取了一个ImageWriter对象，必须给它设置一个输出源ImageOutputStream。<br />
File f = new File(“c:\images\myimage.png”);<br />
ImageOutputStream ios = ImageIO.createImageOutputStream(f);<br />
writer.setOutput(ios);</p>
<p>最后，可以把图片写入到输出源：<br />
BufferedImage bi;<br />
writer.write(bi);</p>
<p><strong>3.4.1 写多图片文件</strong><br />
IIOImage类用于存储图片，缩略图或元信息的引用。下一节将讨论Metadata，目前，我们<br />
简单地给Metadata相关参数传递null。<br />
ImageWriter 类有一个方法write()，用于从IIOImage创建一个新文件，还有一个方法<br />
writeInsert()，用于向一个已存在文件添加一个IIOImage对象。通过调用这两者，可以创<br />
建一个多图片文件：<br />
BufferedImage first_bi, second_bi;<br />
IIOImage first_IIOImage = new IIOImage(first_bi, null, null);<br />
IIOImage second_IIOImage = new IIOImage(second_bi, null, null);<br />
writer.write(null, first_IIOImage, null);<br />
if (writer.canInsertImage(1)) {<br />
writer.writeInsert(1, second_IIOImage, null);<br />
} else {<br />
System.err.println(“Writer can&#8217;t append a second image!”);<br />
}</p>
<p><strong>3.5  处理 Metadata </strong><br />
所有与像素无关的信息，都属于在Metadata。javax.imageio.metadata 包含了用于访问<br />
Metadata的类和接口。</p>
<p>Image I/O API 将stream metadata 和image metadata区别对待。stream metadata与一个<br />
文件中存储了多张图片有关，image metadata只与单个图片有关。如果一个文件只包含一张<br />
图片，那么就只存在image metadata。</p>
<p>可以通过调用ImageReader.getStreamMetadata 和 getImageMetadata(int imageIndex)来<br />
获取metadata。这些方法会返回一个实现了IIOMetadata接口的对象，该对象会被向上转化<br />
为ImageReader类型，</p>
<p><strong>3.6 编码转换</strong><br />
略</p>
<p><strong>3.7 事件监听</strong><br />
略</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yanjiuyanjiu.com/2010/04/01/java-image-io/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java质量检测评估工具</title>
		<link>http://www.yanjiuyanjiu.com/2010/03/31/java-qa-tools/</link>
		<comments>http://www.yanjiuyanjiu.com/2010/03/31/java-qa-tools/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 09:17:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[开源工具]]></category>
		<category><![CDATA[QA]]></category>

		<guid isPermaLink="false">http://www.yanjiuyanjiu.com/?p=4102</guid>
		<description><![CDATA[Java代码质量检测评估工具 “五大” 代码分析领域： * 编码风格 * 冗余代码 * 代码覆盖率 * 依赖项分析 * 复杂度监控 一下列举了一些目前比较流行的工具。网址后面列出了其PR值，可以反映此工具的流行度。 1、编码风格 CheckStyle Home page: http://checkstyle.sourceforge.net/ (6) 对应的eclipse插件有多个，其中eclipsecs最常用 Home page: http://eclipse-cs.sourceforge.net/ (6) eclipse插件URL：http://eclipse-cs.sf.net/update/ 2、冗余代码 Simian http://www.redhillconsulting.com.au/products/simian/ (5) PMD 的 CPD http://pmd.sourceforge.net/cpd.html (5) 3、代码覆盖率 EMMA  http://emma.sourceforge.net/ (6) Cobertura  http://cobertura.sourceforge.net/ (6) EclEmma http://update.eclemma.org/ (5) Coverlipse http://coverlipse.sourceforge.net/ (3) 4、依赖项分析 JDepend http://clarkware.com/software/JDepend.html (6) 5、复杂度监控 Metrics http://metrics.sourceforge.net/ [...]]]></description>
			<content:encoded><![CDATA[<p>Java代码质量检测评估工具<br />
“五大” 代码分析领域：<br />
* 编码风格<br />
* 冗余代码<br />
* 代码覆盖率<br />
* 依赖项分析<br />
* 复杂度监控</p>
<p>一下列举了一些目前比较流行的工具。网址后面列出了其PR值，可以反映此工具的流行度。<br />
1、编码风格<br />
CheckStyle<br />
Home page: <a href="http://checkstyle.sourceforge.net/" target="_blank">http://checkstyle.sourceforge.net/</a> (6)<br />
对应的eclipse插件有多个，其中eclipsecs最常用<br />
Home page: <a href="http://eclipse-cs.sourceforge.net/" target="_blank">http://eclipse-cs.sourceforge.net/</a> (6)<br />
eclipse插件URL：<a href="http://eclipse-cs.sf.net/update/" target="_blank">http://eclipse-cs.sf.net/update/</a></p>
<p>2、冗余代码<br />
Simian <a href="http://www.redhillconsulting.com.au/products/simian/" target="_blank">http://www.redhillconsulting.com.au/products/simian/</a> (5)<br />
PMD 的 CPD <a href="http://pmd.sourceforge.net/cpd.html" target="_blank">http://pmd.sourceforge.net/cpd.html</a> (5)</p>
<p>3、代码覆盖率<br />
EMMA  <a href="http://emma.sourceforge.net/" target="_blank">http://emma.sourceforge.net/</a> (6)<br />
Cobertura  <a href="http://cobertura.sourceforge.net/" target="_blank">http://cobertura.sourceforge.net/</a> (6)<br />
EclEmma <a href="http://update.eclemma.org/" target="_blank">http://update.eclemma.org/</a> (5)<br />
Coverlipse <a href="http://coverlipse.sourceforge.net/" target="_blank">http://coverlipse.sourceforge.net/</a> (3)</p>
<p>4、依赖项分析<br />
JDepend <a href="http://clarkware.com/software/JDepend.html" target="_blank">http://clarkware.com/software/JDepend.html</a> (6)</p>
<p>5、复杂度监控<br />
Metrics <a href="http://metrics.sourceforge.net/" target="_blank">http://metrics.sourceforge.net/</a> (4)</p>
<p>具有以上两项或两项以上的综合工具（也称为静态分析工具）：<br />
1、PMD<br />
Home page: <a href="http://pmd.sourceforge.net/cpd.html" target="_blank">http://pmd.sourceforge.net/</a> (6)<br />
eclipse插件URL：<a href="http://pmd.sourceforge.net/eclipse" target="_blank">http://pmd.sourceforge.net/eclipse</a></p>
<p>2、FindBugs <a href="http://findbugs.sourceforge.net/" target="_blank">http://findbugs.sourceforge.net/</a> (6)<br />
eclipse插件URL：<a href="http://findbugs.cs.umd.edu/eclipse" target="_blank">http://findbugs.cs.umd.edu/eclipse</a></p>
<p>FindBugs 检查程序生成的class文件，即分析字节码<br />
PMD 检查源码，分析源代码</p>
<p>3、Jtest <a href="http://www.parasoft.com/jtest" target="_blank">http://www.parasoft.com/jtest</a></p>
<p>4、Jlint <a href="http://artho.com/jlint/" target="_blank">http://artho.com/jlint/</a> (5)</p>
<p>5、Lint4j <a href="http://www.jutils.com/" target="_blank">http://www.jutils.com/</a> (4)</p>
<p>参考资料：<a href="http://blog.csdn.net/cb_121/archive/2009/05/22/4208792.aspx" target="_blank">http://blog.csdn.net/cb_121/archive/2009/05/22/4208792.aspx</a></p>
<p>我个人平时最常用的是Checkstyle，其次是PMD，读者可以参考一下。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yanjiuyanjiu.com/2010/03/31/java-qa-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用pdfbox 抽取PDF文件中的文本</title>
		<link>http://www.yanjiuyanjiu.com/2010/03/28/extrac-text-from-pdf-using-pdfbox/</link>
		<comments>http://www.yanjiuyanjiu.com/2010/03/28/extrac-text-from-pdf-using-pdfbox/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 11:54:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[开源工具]]></category>
		<category><![CDATA[pdfbox]]></category>

		<guid isPermaLink="false">http://www.yanjiuyanjiu.com/?p=4090</guid>
		<description><![CDATA[[code lang="java"] package com.yanjiuyanjiu.search; import java.io.File; import java.io.IOException; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.util.PDFTextStripper; /** * 抽去PDF文件中的文本. * @author soulmachine * */ public final class PDFboxTest { /** 禁止创建对象. */ private PDFboxTest() { } /** * 抽取PDF中的文本. * @param f PDF文件 * @return PDF对应的文本字符串 */ public static String getText(final File f) { String text = &#34;&#34;; try [...]]]></description>
			<content:encoded><![CDATA[<pre><strong></strong>[code lang="java"]
package com.yanjiuyanjiu.search;

import java.io.File;
import java.io.IOException;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.util.PDFTextStripper;

/**
 * 抽去PDF文件中的文本.
 * @author soulmachine
 *
 */
public final class PDFboxTest {
 /** 禁止创建对象. */
 private PDFboxTest() {
 }
 /**
 * 抽取PDF中的文本.
 * @param f PDF文件
 * @return PDF对应的文本字符串
 */
 public static String getText(final File f) {
 String text = &quot;&quot;;
 try {
 PDDocument pdfdocument = PDDocument.load(f);
 PDFTextStripper stripper = new PDFTextStripper();
 stripper.setStartPage(1); // 只抽取第1页和第2页
 stripper.setEndPage(2);
 text = stripper.getText(pdfdocument);
 pdfdocument.close();

 } catch (IOException e) {
 e.printStackTrace();
 }

 return text;
 }

 /** 测试.
 *
 * @param args PDF文件路径
 */
 public static void main(final String[]  args) {
 File file = new File(args[0]);
 System.out.println(PDFboxTest.getText(file));
 }
}

[/code]

<strong><a href="upload/PDFExtractor.zip" target="_blank">eclipse工程文件下载</a></strong>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.yanjiuyanjiu.com/2010/03/28/extrac-text-from-pdf-using-pdfbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在Visual Studio 下编译 sqlite3</title>
		<link>http://www.yanjiuyanjiu.com/2009/04/14/compile-sqlite3-with-vs/</link>
		<comments>http://www.yanjiuyanjiu.com/2009/04/14/compile-sqlite3-with-vs/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 09:11:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[开源工具]]></category>
		<category><![CDATA[sqlite3]]></category>

		<guid isPermaLink="false">http://www.yanjiuyanjiu.com/?p=138</guid>
		<description><![CDATA[首先，sqlite 官方已经有预编译好的DLL下载，如果你不需要特别优化的版本，直接下载官网上的DLL即可。你可以在下载 页面的 “Precompiled Binaries For Windows” 可以找到。 不过你想编译出自己的版本，比如添加优化参数后编译，debug版，或进行一些定制（例如官网这里 有一些预编译宏，允许你定制自己的sqlite），那么你就需要自己编译了。 首先在下载源代码，在页面的第一行就是，如 sqlite-amalgamation-3_6_12.zip ，接着下载编译好的DLL，我们主要是需要这里面的一个 sqlite3.def 文件，因为源代码里没有。一般下拉到  “Precompiled Binaries For Windows”  就可以看到，例如 sqlitedll-3_6_12.zip 。有了这两个压缩包就可以了。 首 先解压 sqlite-amalgamation-3_6_12.zip 到文件夹 sqlite3\，会得到  sqlite3.c，sqlite3.h，sqlite3ext.h 三个文件，然后解压 sqlitedll-3_6_12.zip ，把 sqlite3.def 移动到 sqlite3\ 下面。 打开 visual studio，新建一个空的dll工程，工程名为sqlite3，这样是为了能直接生成名为sqlite3.dll 的dll。然后sqlite3\  下的4个文件文件夹移动到此工程目录下，即与 sqlite3.vcproj 在同一级。 将 sqlite3.c 添加到工程，具体做法是右击“源文件”，选择“添加-&#62;现有项”，浏览到sqlite3.c即可。如下图所示。 然后将sqlite3.def 添加到工程，然后输入给连接器。具体做法是右击工程sqlite3，选择“属性”，在弹出的对话框中选择“连接器-&#62;输入”，在“模块定义文件”中输入sqlite3.def，如下图所示。 好，可以开始编译了，右击sqlite3，选择“生成”，结果链接出错， &#8212;&#8212; 已启动生成: 项目: sqlite3, 配置: Release Win32 [...]]]></description>
			<content:encoded><![CDATA[<p>首先，sqlite 官方已经有预编译好的DLL下载，如果你不需要特别优化的版本，直接下载官网上的DLL即可。你可以在<a id="h._j" title="下载" href="http://www.sqlite.org/download.html" target="_blank">下载</a> 页面的 “Precompiled Binaries For Windows” 可以找到。<br />
不过你想编译出自己的版本，比如添加优化参数后编译，debug版，或进行一些定制（例如官网<a id="uq3r" title="这里" href="http://www.sqlite.org/compile.html" target="_blank">这里</a> 有一些预编译宏，允许你定制自己的sqlite），那么你就需要自己编译了。</p>
<p>首先在下载源代码，在页面的第一行就是，如 <a id="xblx" title="sqlite-amalgamation-3_6_12.zip" href="http://www.sqlite.org/sqlite-amalgamation-3_6_12.zip" target="_blank">sqlite-amalgamation-3_6_12.zip</a> ，接着下载编译好的DLL，我们主要是需要这里面的一个 sqlite3.def 文件，因为源代码里没有。一般下拉到  “Precompiled Binaries For Windows”  就可以看到，例如 <a id="ypnf" title="sqlitedll-3_6_12.zip" href="http://www.sqlite.org/sqlitedll-3_6_12.zip" target="_blank">sqlitedll-3_6_12.zip</a> 。有了这两个压缩包就可以了。</p>
<p>首 先解压 sqlite-amalgamation-3_6_12.zip 到文件夹 sqlite3\，会得到  sqlite3.c，sqlite3.h，sqlite3ext.h 三个文件，然后解压 sqlitedll-3_6_12.zip ，把 sqlite3.def 移动到 sqlite3\ 下面。</p>
<p>打开 visual studio，新建一个空的dll工程，工程名为sqlite3，这样是为了能直接生成名为sqlite3.dll 的dll。然后sqlite3\  下的4个文件文件夹移动到此工程目录下，即与 sqlite3.vcproj 在同一级。<br />
将 sqlite3.c 添加到工程，具体做法是右击“源文件”，选择“添加-&gt;现有项”，浏览到sqlite3.c即可。如下图所示。</p>
<div id="gt0c" style="text-align: center"><img class="picasa" src="http://lh3.ggpht.com/_8SGG9H7xljY/SePhkuuJFxI/AAAAAAAAALU/EEwwmIknjVQ/s400/Snap3.jpg" alt="undefined" /></div>
<p><span id="more-4048"></span><br />
然后将sqlite3.def 添加到工程，然后输入给连接器。具体做法是右击工程sqlite3，选择“属性”，在弹出的对话框中选择“连接器-&gt;输入”，在“模块定义文件”中输入sqlite3.def，如下图所示。</p>
<div id="y.fm" style="text-align: center"><img class="picasa" src="http://lh5.ggpht.com/_8SGG9H7xljY/SePhk5giPjI/AAAAAAAAALc/-R74CogHXlE/s512/Snap6.jpg" alt="undefined" /></div>
<p>好，可以开始编译了，右击sqlite3，选择“生成”，结果链接出错，</p>
<p><span>&#8212;&#8212; 已启动生成: 项目: sqlite3, 配置: Release Win32 &#8212;&#8212;</span><br /><span>正在编译&#8230;</span><br /><span>sqlite3.c</span><br /><span>正在链接&#8230;</span><br /><span>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_database_name</span><br /><span>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_database_name16</span><br /><span>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_origin_name</span><br /><span>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_origin_name16</span><br /><span>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_table_name</span><br /><span>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_table_name16</span><br /><span>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_table_column_metadata</span></p>
<p>看来sqlite3.def 中定义的这几个导出函数找不到定义，什么原因呢，经过一番google，找到<a id="yhfj" title="这篇文章" href="http://source.online.free.fr/Windows_HowToCompileSQLite.html" target="_blank">这篇文章</a> ，需要增加一个预定义宏 SQLITE_ENABLE_COLUMN_METADATA，这个宏是什么意思呢，到<a id="lcli" title="官网" href="http://www.sqlite.org/compile.html" target="_blank">官网</a> 去查一下，<br />
<strong><br />
<span>SQLITE_ENABLE_COLUMN_METADATA</span></strong></p>
<p><span> When this C-preprocessor macro is defined, SQLite includes some additional APIs that provide convenient access to meta-data about tables and queries. The APIs that are enabled by this option are:</span></p>
<p><span> * sqlite3_column_database_name()</span><br /><span> * sqlite3_column_database_name16()</span><br /><span> * sqlite3_column_table_name()</span><br /><span> * sqlite3_column_table_name16()</span><br /><span> * sqlite3_column_origin_name()</span><br /><span> * sqlite3_column_origin_name16()</span><br /><span> * sqlite3_table_column_metadata()</span></p>
<p>原来是只有当启用了这个宏后，c代码中才会后这几个函数的定义，OK，在预处理器中添加 SQLITE_ENABLE_COLUMN_METADATA，如下图所示。</p>
<div id="w-x5" style="text-align: center"><img class="picasa" src="http://lh3.ggpht.com/_8SGG9H7xljY/SePhk-UAexI/AAAAAAAAALk/BfSoZafJ7RQ/s512/Snap7.jpg" alt="undefined" /></div>
<p>再来编译，搞定！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yanjiuyanjiu.com/2009/04/14/compile-sqlite3-with-vs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>qt 4.5 与visual studio 集成</title>
		<link>http://www.yanjiuyanjiu.com/2009/04/09/qt-vs-intergration/</link>
		<comments>http://www.yanjiuyanjiu.com/2009/04/09/qt-vs-intergration/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 09:30:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[开源工具]]></category>
		<category><![CDATA[qt]]></category>

		<guid isPermaLink="false">http://www.yanjiuyanjiu.com/?p=126</guid>
		<description><![CDATA[本文主要讲述将Qt 4.5与 Visual Studio 2008集成，同样适用于Visual Studio 2005, 2003。 Qt 4.5 虽然新增了LGPL协议，但这也阻碍了我们在VS中使用Qt。因为免费开源的版本只提供了GCC编译好的二进制库，而没有VC编译好的二进制库，只有商业版本才有VS编译好的针对Windows的DLL，lib等二进制库（恩，可以理解）。 再者，VC编译器比GCC 还是要强劲很多，并且调试器异常强大。Qt Creator虽然很酷，目前还很粗糙。很多人也更为熟悉VS的界面。 下面我们就自己用VS编译出二进制库，然后就可以跟商业版一样了。 不过，你也可以直接google“qt 4.5 编译好”，找到很多人已经编译好的二进制库，下载下来直接用。下面的内容可以不看了^_^ 1. 下载并安装 qt-sdk-win-opensource-2009.01.exe，安装到默认的 c:\qt\2009.01。它包含了MingGW和 Qt Creator，以及预编译好的二进制文件（用GCC编译的）。你可以直接使用Qt Creator 开始开发工作，不需要任何额外的配置。 2. 将整个目录 c:\qt\2009.01 拷贝一份到 c:\qt\4.5.0-vc。我们将会修改目录c:\qt\4.5.0-vc，使用VC++来编译出所需要的库。这两个目录可以同时存在，Qt使用c:\qt\2009.01，Visual Studio 使用 c:\qt\4.5.0-vc。 3. 修改 C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\下的 vsvars32.bat，在环境变量PATH中添加Qt的目录，如 c:\qt\4.5.0-vc\qt，在INCLUDE 添 加上c:\qt\4.5.0-vc\qt\include ，在LIB添加 c:\qt\4.5.0-vc\qt\include，如： @set PATH=C:\Qt\4.5.0-vc\qt;c:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;c:\Program Files\Microsoft Visual [...]]]></description>
			<content:encoded><![CDATA[<p class="western"><span style="font-family: 宋体,SimSun">本文主要讲述将</span>Qt 4.5<span style="font-family: 宋体,SimSun">与 </span>Visual Studio 2008<span style="font-family: 宋体,SimSun">集成，同样适用于</span>Visual Studio 2005, 2003<span style="font-family: 宋体,SimSun">。</span></p>
<p class="western">Qt 4.5 <span style="font-family: 宋体,SimSun">虽然新增了</span>LGPL<span style="font-family: 宋体,SimSun">协议，但这也阻碍了我们在</span>VS<span style="font-family: 宋体,SimSun">中使用</span>Qt<span style="font-family: 宋体,SimSun">。因为免费开源的版本只提供了</span>GCC<span style="font-family: 宋体,SimSun">编译好的二进制库，而没有</span>VC<span style="font-family: 宋体,SimSun">编译好的二进制库，只有商业版本才有</span>VS<span style="font-family: 宋体,SimSun">编译好的针对</span>Windows<span style="font-family: 宋体,SimSun">的</span>DLL<span style="font-family: 宋体,SimSun">，</span>lib<span style="font-family: 宋体,SimSun">等二进制库（恩，可以理解）。</span></p>
<p class="western"><span style="font-family: 宋体,SimSun">再者，</span>VC<span style="font-family: 宋体,SimSun">编译器比</span>GCC <span style="font-family: 宋体,SimSun">还是要强劲很多，并且调试器异常强大。</span>Qt Creator<span style="font-family: 宋体,SimSun">虽然很酷，目前还很粗糙。很多人也更为熟悉</span>VS<span style="font-family: 宋体,SimSun">的界面。</span></p>
<p class="western"><span style="font-family: 宋体,SimSun">下面我们就自己用</span>VS<span style="font-family: 宋体,SimSun">编译出二进制库，然后就可以跟商业版一样了。</span></p>
<p class="western"><span style="font-family: 宋体,SimSun">不过，你也可以直接</span>google“qt 4.5 <span style="font-family: 宋体,SimSun">编译好”，找到很多人已经编译好的二进制库，下载下来直接用。下面的内容可以不看了</span>^_^<span id="more-4047"></span></p>
<p class="western">
<p class="western">1. <span style="font-family: 宋体,SimSun">下载并安装 </span><span style="color: #0000ff"><span style="text-decoration: underline"><a href="http://www.qtsoftware.com/downloads/sdk-windows-cpp">qt-sdk-win-opensource-2009.01.exe</a></span></span><span style="font-family: 宋体,SimSun">，安装到默认的 </span>c:\qt\2009.01<span style="font-family: 宋体,SimSun">。它包含了</span>MingGW<span style="font-family: 宋体,SimSun">和 </span>Qt Creator<span style="font-family: 宋体,SimSun">，以及预编译好的二进制文件（用</span>GCC<span style="font-family: 宋体,SimSun">编译的）。你可以直接使用</span>Qt Creator <span style="font-family: 宋体,SimSun">开始开发工作，不需要任何额外的配置。</span></p>
<p class="western">
<p class="western">2. <span style="font-family: 宋体,SimSun">将整个目录 </span>c:\qt\2009.01 <span style="font-family: 宋体,SimSun">拷贝一份到 </span>c:\qt\4.5.0-vc<span style="font-family: 宋体,SimSun">。我们将会修改目录</span>c:\qt\4.5.0-vc<span style="font-family: 宋体,SimSun">，使用</span>VC++<span style="font-family: 宋体,SimSun">来编译出所需要的库。这两个目录可以同时存在，</span>Qt<span style="font-family: 宋体,SimSun">使用</span>c:\qt\2009.01<span style="font-family: 宋体,SimSun">，</span>Visual Studio <span style="font-family: 宋体,SimSun">使用 </span>c:\qt\4.5.0-vc<span style="font-family: 宋体,SimSun">。</span></p>
<p class="western">
<p class="western">3. <span style="font-family: 宋体,SimSun">修改 </span>C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\<span style="font-family: 宋体,SimSun">下的 </span>vsvars32.bat<span style="font-family: 宋体,SimSun">，在环境变量</span>PATH<span style="font-family: 宋体,SimSun">中添加</span>Qt<span style="font-family: 宋体,SimSun">的目录，如 </span>c:\qt\4.5.0-vc\qt<span style="font-family: 宋体,SimSun">，在</span>INCLUDE <span style="font-family: 宋体,SimSun">添 加上</span>c:\qt\4.5.0-vc\qt\include <span style="font-family: 宋体,SimSun">，在</span>LIB<span style="font-family: 宋体,SimSun">添加 </span>c:\qt\4.5.0-vc\qt\include<span style="font-family: 宋体,SimSun">，如：</span></p>
<p class="western">
<p class="western"><span>@set PATH=C:\Qt\4.5.0-vc\qt;c:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;c:\Program Files\Microsoft Visual Studio 9.0\VC\BIN;c:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools;c:\Windows\Microsoft.NET\Framework\v3.5;c:\Windows\Microsoft.NET\Framework\v2.0.50727;c:\Program Files\Microsoft Visual Studio 9.0\VC\VCPackages;%PATH%</span></p>
<p class="western"><span>@set INCLUDE=C:\Qt\4.5.0-vc\qt\include;c:\Program Files\Microsoft Visual Studio 9.0\VC\ATLMFC\INCLUDE;c:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE;%INCLUDE%</span></p>
<p class="western"><span>@set LIB=C:\Qt\4.5.0-vc\qt\lib;c:\Program Files\Microsoft Visual Studio 9.0\VC\ATLMFC\LIB;c:\Program Files\Microsoft Visual Studio 9.0\VC\LIB;%LIB%</span></p>
<p class="western">
<p class="western"><span style="font-family: 宋体,SimSun">打开一个</span>cmd<span style="font-family: 宋体,SimSun">命令行窗口，把这个文件拖过来执行，这样，你打开的</span>cmd<span style="font-family: 宋体,SimSun">就具有上面设置的环境变量了，但是这些变量只针对你当前的</span>cmd<span style="font-family: 宋体,SimSun">，不会更改本机配置，所以，不要关闭</span>cmd<span style="font-family: 宋体,SimSun">窗口，你需要在这个</span>CMD<span style="font-family: 宋体,SimSun">窗口中完成接下来的命令。</span></p>
<p class="western"><span style="font-family: 宋体,SimSun"><span style="color: #ff0000">（网上很多没有这一步， 会导致下面的</span></span><span style="color: #ff0000">configure<span style="font-family: 宋体,SimSun">失败）</span></span></p>
<p class="western">
<p class="western" style="color: #000000">4. <span style="font-family: 宋体,SimSun">执行</span></p>
<p class="western" style="color: #000000"><span>c:\&gt; cd c:\qt\4.5.0-vc\qt</span></p>
<p class="western" style="color: #000000"><span>c:\qt\4.5.0-vc\qt&gt; configure -no-sql-sqlite -no-qt3support -no-opengl -platform win32-msvc2008 -no-libtiff -no-dbus -no-phonon -no-phonon-backend -no-webkit</span></p>
<p class="western" style="color: #000000"><span style="font-family: 宋体,SimSun">上面这行命令，你可以按自己的需要修改，但注意一定要指明 </span>-platform <span style="font-family: 宋体,SimSun">后的参数，指明想要配置成那个版本的</span>VS<span style="font-family: 宋体,SimSun">。例如系想要编译成</span>VS2005<span style="font-family: 宋体,SimSun">（当然前提是你已经安装了</span>VS2005<span style="font-family: 宋体,SimSun">），就换成 </span>win32-msvc2005<span style="font-family: 宋体,SimSun">。这一步会生成一个</span>makefile<span style="font-family: 宋体,SimSun">供</span>nmake<span style="font-family: 宋体,SimSun">编译生成所有的库。这一步要花点时间，大概</span>30<span style="font-family: 宋体,SimSun">分钟。</span></p>
<p class="western" style="color: #000000">
<p class="western" style="color: #000000">5. <span style="font-family: 宋体,SimSun">输入 </span>nmake<span style="font-family: 宋体,SimSun">，回车，开始编译。这一步跟漫长，我的大概编译了</span>3<span style="font-family: 宋体,SimSun">个小时</span>~~</p>
<p class="western" style="color: #000000"><span style="font-family: 宋体,SimSun"><strong> 注意：</strong>如果你是</span>Windows 7<span style="font-family: 宋体,SimSun">下，这里多半会失败，因为</span>Win 7 SDK<span style="font-family: 宋体,SimSun">有</span>Bug<span style="font-family: 宋体,SimSun">，在</span>binary<span style="font-family: 宋体,SimSun">没有</span>resouce<span style="font-family: 宋体,SimSun">区域的时候</span>mt<span style="font-family: 宋体,SimSun">程序是不能把</span>manifest<span style="font-family: 宋体,SimSun">添加到</span>binary<span style="font-family: 宋体,SimSun">中的（参考：</span><span style="text-decoration: underline"><a href="http://download.microsoft.com/download/8/8/0/8808A472-6450-4723-9C87-977069714B27/ReleaseNotes.Htm">http://download.microsoft.com/download/8/8/0/8808A472-6450-4723-9C87-977069714B27/ReleaseNotes.Htm</a></span><span style="font-family: 宋体,SimSun">），所以我们需要做一些修改才行，</span></p>
<p class="western" style="color: #000000"><span style="font-family: 宋体,SimSun">第一步，在</span>CMD<span style="font-family: 宋体,SimSun">下执行如下命令</span></p>
<p class="western" style="color: #000000">c:\qt\4.5.0-vc\qt&gt;echo.&gt;hello.rc</p>
<p class="western" style="color: #000000">c:\qt\4.5.0-vc\qt&gt; rc.exe /r hello.rc</p>
<p class="western" style="color: #000000"><span style="font-family: 宋体,SimSun">得到 </span>c:\qt\4.5.0-vc\qt\hello.res <span style="font-family: 宋体,SimSun">资源文件。</span></p>
<p class="western" style="color: #000000"><span style="font-family: 宋体,SimSun">第二步，修改</span>qmake<span style="font-family: 宋体,SimSun">配置文件，使得</span>Makefile<span style="font-family: 宋体,SimSun">的链接命令中会把</span>hello.res<span style="font-family: 宋体,SimSun">一并链接到</span>binary<span style="font-family: 宋体,SimSun">中。修改</span>mkspecs\win32-msvc2005<span style="font-family: 宋体,SimSun">目录下的</span>qmake.conf<span style="font-family: 宋体,SimSun">文件第</span>52<span style="font-family: 宋体,SimSun">行为</span></p>
<p class="western" style="color: #000000"><span> QMAKE_LFLAGS = /NOLOGO C:\Qt\4.5.0-vc\qt\hello.res</span></p>
<p class="western" style="color: #000000">
<p class="western" style="color: #000000"><span style="font-family: 宋体,SimSun">这样任何</span>link<span style="font-family: 宋体,SimSun">命令都必然会链接</span>hello.res<span style="font-family: 宋体,SimSun">文件。</span></p>
<p class="western" style="color: #000000">
<p class="western" style="color: #000000"><span style="font-family: 宋体,SimSun">然后才能输入</span>nmake<span style="font-family: 宋体,SimSun">开始编译。</span></p>
<p class="western" style="color: #000000">
<p class="western" style="color: #000000">6. <span style="font-family: 宋体,SimSun">安装官方的</span>VS<span style="font-family: 宋体,SimSun">插件</span><span style="text-decoration: underline"><a href="http://www.qtsoftware.com/downloads/visual-studio-add-in-beta">qt-vs-addin-1.0.0-beta.exe</a></span><span style="font-family: 宋体,SimSun">，</span></p>
<p class="western" style="color: #000000">
<p class="western" style="color: #000000">7. <span style="font-family: 宋体,SimSun">启动 </span>Visual Studio<span style="font-family: 宋体,SimSun">，选择菜单“</span>Qt-&gt;Qt Options”<span style="font-family: 宋体,SimSun">，在” </span>Qt Verions ”<span style="font-family: 宋体,SimSun">选项卡点击 “</span>Add”<span style="font-family: 宋体,SimSun">，</span>Version Name<span style="font-family: 宋体,SimSun">随便填，例如 “</span>qt4.5.0-vc”<span style="font-family: 宋体,SimSun">，路径则输入 “</span>C:\Qt\4.5.0-vc\qt”<span style="font-family: 宋体,SimSun">。（网上的资料有说要建立环境变量</span>QTDIR= C:\Qt\4.5.0-vc\qt<span style="font-family: 宋体,SimSun">，我个人认为是不必要的）。</span></p>
<p class="western" style="color: #000000">
<p class="western" style="color: #000000">8. <span style="font-family: 宋体,SimSun">现在你的</span>Visual Studio <span style="font-family: 宋体,SimSun">完全具备了</span>Qt<span style="font-family: 宋体,SimSun">的所有功能，新建一个</span>Qt <span style="font-family: 宋体,SimSun">工程编译运行试一试！</span></p>
<p class="western" style="color: #000000"><span style="font-family: 宋体,SimSun">（编译好后，在</span>VS<span style="font-family: 宋体,SimSun">下点击</span>Debug-Debug without debuggine<span style="font-family: 宋体,SimSun">可以看见程序运行的效果，不过</span></p>
<p class="western" style="color: #000000">
<p class="western" style="color: #000000"><span style="font-family: 宋体,SimSun">如果直接到</span>debug<span style="font-family: 宋体,SimSun">目录下双击这个</span>exe<span style="font-family: 宋体,SimSun">文件，会提示找不到</span>QtCore4d.dll<span style="font-family: 宋体,SimSun">，这时你需要把</span>C:\Qt\4.5.0-vc\qt\bin<span style="font-family: 宋体,SimSun">加入到</span>PATH<span style="font-family: 宋体,SimSun">环境变量，这目录下还有</span>QtCore4.dll<span style="font-family: 宋体,SimSun">，都是上面编译出来的）。</span></p>
<p class="western" style="color: #000000">
<p class="western" style="color: #000000"><span style="font-family: 宋体,SimSun">不过你现在的环境是集成了</span>LGPL<span style="font-family: 宋体,SimSun">版</span>Qt<span style="font-family: 宋体,SimSun">的</span>VS<span style="font-family: 宋体,SimSun">，跟商业版的还是有点不同。例如</span>Qt Desiner<span style="font-family: 宋体,SimSun">（资源设计器）不是嵌入到</span>VS<span style="font-family: 宋体,SimSun">得，需要通过菜单“</span>Qt-&gt;Launch Desiner”<span style="font-family: 宋体,SimSun">来执行（商业版直接双击</span>.ui<span style="font-family: 宋体,SimSun">文件就会启动</span>Qt Desiner<span style="font-family: 宋体,SimSun">）。不过这无关紧要，只是多点几下鼠标而已。</span></p>
<p class="western" style="color: #000000">
<p class="western" style="color: #000000"><span style="font-family: 宋体,SimSun">点击“</span>Qt-&gt;Launch Linguist”<span style="font-family: 宋体,SimSun">可以启动</span>Qt Linguist<span style="font-family: 宋体,SimSun">，它是一款本地化工具，也十分有用。</span></p>
<p class="western" style="color: #000000">
<p class="western" style="color: #000000"><span style="font-family: 宋体,SimSun">参考资料：</span></p>
<p class="western"><span style="color: #ff0000"><span style="color: #0000ff"><span style="text-decoration: underline"><a href="http://dcsoft.com/community_server/blogs/dcsoft/archive/2009/03/06/how-to-setup-qt-4-5-visual-studio-integration.aspx">How to: Setup Qt 4.5 Visual Studio Integration</a></span></span></span></p>
<p class="western"><span style="color: #ff0000"><span style="font-family: 宋体,SimSun"><span style="color: #0000ff"><span style="text-decoration: underline"><a href="http://www.qtcn.org/bbs/read.php?tid=16744">在</a></span></span></span><span style="color: #0000ff"><span style="text-decoration: underline"><a href="http://www.qtcn.org/bbs/read.php?tid=16744">Visual Studio 2008<span style="font-family: 宋体,SimSun">中安装</span></a><span style="color: #0000ff"><span style="text-decoration: underline"><a href="http://www.qtcn.org/bbs/read.php?tid=16744">Qt 4.5</a></span></span></span></span></span></p>
<p class="western"><span style="color: #ff0000"><span style="color: #0000ff"><span style="text-decoration: underline"><span style="font-family: 宋体,SimSun"><span style="color: #0000ff"><span style="text-decoration: underline"><a href="http://hi.baidu.com/zhanglei_186/blog/item/33f9c48267b1b9a70cf4d2be.html">【转载】编译</a></span></span></span><span style="color: #0000ff"><span style="text-decoration: underline"><a href="http://hi.baidu.com/zhanglei_186/blog/item/33f9c48267b1b9a70cf4d2be.html">VS<span style="font-family: 宋体,SimSun">的</span></a><span style="color: #0000ff"><span style="text-decoration: underline"><a href="http://hi.baidu.com/zhanglei_186/blog/item/33f9c48267b1b9a70cf4d2be.html">QT</a></span></span></span></span></span></span></span></p>
<p class="western"><span style="color: #ff0000"><span style="color: #0000ff"><span style="text-decoration: underline"><span style="color: #0000ff"><span style="text-decoration: underline"><span style="font-family: 宋体,SimSun"><span style="color: #0000ff"><span style="text-decoration: underline"><a href="http://www.qtcn.org/bbs/read.php?tid=16172">在</a></span></span></span><span style="color: #0000ff"><span style="text-decoration: underline"><a href="http://www.qtcn.org/bbs/read.php?tid=16172">Windows 7 Beta x64<span style="font-family: 宋体,SimSun">下编译</span></a><span style="color: #0000ff"><span style="text-decoration: underline"><a href="http://www.qtcn.org/bbs/read.php?tid=16172">64<span style="font-family: 宋体,SimSun">位</span></a><span style="color: #0000ff"><span style="text-decoration: underline"><a href="http://www.qtcn.org/bbs/read.php?tid=16172">Qt 4.5.0</a></span></span></span></span></span></span></span></span></span></span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yanjiuyanjiu.com/2009/04/09/qt-vs-intergration/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

