﻿<?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>C++博客-暮暮息幕幕新-随笔分类-Other</title><link>http://www.cppblog.com/singohgod/category/2215.html</link><description>每天晚上入睡，都将迎来崭新的明天，这就是梦想！-大宝天天见</description><language>zh-cn</language><lastBuildDate>Wed, 24 Aug 2011 10:59:14 GMT</lastBuildDate><pubDate>Wed, 24 Aug 2011 10:59:14 GMT</pubDate><ttl>60</ttl><item><title>[摘录]Windows7中关机、睡眠和休眠的区别</title><link>http://www.cppblog.com/singohgod/archive/2011/08/24/154217.html</link><dc:creator>大宝天天见</dc:creator><author>大宝天天见</author><pubDate>Wed, 24 Aug 2011 08:13:00 GMT</pubDate><guid>http://www.cppblog.com/singohgod/archive/2011/08/24/154217.html</guid><wfw:comment>http://www.cppblog.com/singohgod/comments/154217.html</wfw:comment><comments>http://www.cppblog.com/singohgod/archive/2011/08/24/154217.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/singohgod/comments/commentRss/154217.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/singohgod/services/trackbacks/154217.html</trackback:ping><description><![CDATA[@import url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
@import url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
<span style="line-height: normal; ">
<div><font size="3">
<p>假设经过一段时间的使用，电脑里运行了很多程序，这些程序有些保留在内存中，有些&#8220;暂存&#8221;在硬盘中。如果这时候我们不打算使用电脑，那么&#8220;关机&#8221;、&#8220;休眠&#8221;，和&#8220;睡眠&#8221;的不同点就可以体现出来了。</p>
<ul>
    <li>如果&#8220;关机&#8221;，这时候Windows会保存所有运行中的程序的状态（例如在Word里写了一半的文档），把所有程序都关闭（可以想像成直接把书合上），并保存到硬盘中，然后彻底切断电脑的电源。</li>
    <li>如果&#8220;休眠&#8221;，这时候Windows也会把运行中的所有程序重新保存到硬盘。但和关机的不同在于，关机时候，Windows会把书&#8220;合上&#8221;，然后放回书柜；但休眠时候，Windows不把书合上，直接放回书柜，并把书桌上的所有东西都清空，然后彻底切断电脑的电源。</li>
    <li>如果睡眠，这时候Windows一样会把书放回书柜，但是书依然保持打开状态，到这一步和休眠时完全相同的。但是在睡眠时，书桌上的内容并不会被清空，Windows会切断除了内存之外其他所有设备的供电，但对内存的供电依然持续，因此内存中的数据不会丢失。</li>
</ul>
<p>这 也就是说，如果要让电脑关机，Windows首先要关闭所有运行中的程序，然后关闭系统后台的服务，接着向主板和电源发出特殊的信号，让电源切断对所有设 备的供电，电脑彻底关闭。下次开机后，电脑完成自检工作，然后将Windows系统载入内存，接着继续加载其他后台服务，并显示登录界面。登录后，才可以 运行自己的程序，开始使用电脑。整个过程因为要彻底关闭并重头开始启动系统和程序，因此所需的时间最常。<br />
<br />
对于待机模式，如果要将电脑放入 待机模式，Windows会自动向电源发出另一种特殊信号，随后电源会切断除了内存外其他设备的供电，内存中依然保存了系统运行中的所有数据，这个过程一 两秒钟就可以完成。当从待机状态进入正常状态时，只要通电，然后Windows就会继续从内存中保存的上一次的&#8220;状态数据&#8221;下运行，这个过程也只需要几秒 钟。<br />
<br />
可见，对于待机状态，完全可以不用关闭自己的程序，如果需要，随时可以待机。而要恢复时也只需要按下电源按钮，几秒钟即可恢复。但这 种模式虽然方便，但有一个致命的缺陷：不能停止对内存的供电。因为内存是一种易失性存储设备，必须在保证供电的情况下才能维持其中的数据。因此一旦电脑在 待机状态下断电，哪怕不到一秒钟，内存中的数据将丢失，下次开机的时候，Windows会像从关机状态下启动那样重新开始。<br />
<br />
休眠模式和待 机模式类似，只不过在休眠状态下，Windows会将内存中的数据保存到硬盘上系统盘根目录下的一个文件中（可以将这个文件理解为内存状态的&#8220;镜像&#8221;）。 而下次开机后则从内存上的休眠文件内读取数据，并载入物理内存。休眠模式可以实现和待机模式类似的功能，只不过恢复速度稍慢，而且需要在硬盘上占据一块和 物理内存一样大的空间来保存休眠文件。物理内存越多，占用的空间就越多，而进入状态和从状态恢复所需的时间也就越长（毕竟需要把文件从硬盘读入内存，而硬 盘的速度一直都是最慢的）。但这种模式的优点也有很多，不怕断电！毕竟断电后硬盘上的数据并不会丢失。<br />
<br />
Windows Vista中开始新增了的一种睡眠模式则结合了待机和休眠模式的所有优点。在进入睡眠模式后，Windows会首先将内存中的数据保存到硬盘上（这一点类 似休眠），同时切断除了内存外其他设备的供电（这一点类似待机）。在恢复时，如果没有断过电，那么系统会从内存中直接恢复，只需要几秒钟；而就算断电，因 为硬盘中还保存有内存的状态镜像，因此还可以从硬盘上恢复，虽然速度要稍微慢一些，但至少不用担心数据丢失。</p>
<div>
<div>收起该表格展开该表格</div>
<table cellspacing="1">
    <tbody>
        <tr>
            <th>&nbsp;</th><th><span style="background-color: yellow; ">进入速度</span></th><th><span style="background-color: yellow; ">恢复速度</span></th><th><span style="background-color: yellow; ">是否耗电</span></th><th><span style="background-color: yellow; ">断电后结果</span></th>
        </tr>
        <tr>
            <td><span style="background-color: yellow; ">睡眠</span></td>
            <td><span style="background-color: yellow; ">几秒钟</span></td>
            <td><span style="background-color: yellow; ">不断电的情况下几秒钟</span></td>
            <td><span style="background-color: yellow; ">需要对内存进行少量供电</span></td>
            <td><span style="background-color: yellow; ">断电后，未保存数据不受损，但恢复速度需要略微延长些</span></td>
        </tr>
        <tr>
            <td><span style="background-color: yellow; ">休眠</span></td>
            <td><span style="background-color: yellow; ">两分钟左右</span></td>
            <td><span style="background-color: yellow; ">两分钟左右</span></td>
            <td><span style="background-color: yellow; ">完全不耗电</span></td>
            <td><span style="background-color: yellow; ">未保存数据不会丢失</span></td>
        </tr>
        <tr>
            <td><span style="background-color: yellow; ">待机</span></td>
            <td><span style="background-color: yellow; ">几秒钟</span></td>
            <td><span style="background-color: yellow; ">几秒钟</span></td>
            <td><span style="background-color: yellow; ">需要对内存进行少量供电</span></td>
            <td><span style="background-color: yellow; ">断电后所有未保存数据都会丢失</span></td>
        </tr>
    </tbody>
</table>
</div>
<p><br />
综上所述，这几种模式各有利弊，但只要Windows和所用硬件支持，则<span style="background-color: yellow; ">强烈建议使用睡眠功能代替以往习惯的关机操作</span>。毕竟睡眠功能的优势显而易见，不仅可以避免漫长的启动过程，而且完全可以把电脑当作电视一样的一般电器，随开随关，完全不用担心丢失数据。</p>
</font></div>
</span>
@import url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);<img src ="http://www.cppblog.com/singohgod/aggbug/154217.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/singohgod/" target="_blank">大宝天天见</a> 2011-08-24 16:13 <a href="http://www.cppblog.com/singohgod/archive/2011/08/24/154217.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]linux下automake用法</title><link>http://www.cppblog.com/singohgod/archive/2011/08/01/152224.html</link><dc:creator>大宝天天见</dc:creator><author>大宝天天见</author><pubDate>Mon, 01 Aug 2011 09:40:00 GMT</pubDate><guid>http://www.cppblog.com/singohgod/archive/2011/08/01/152224.html</guid><wfw:comment>http://www.cppblog.com/singohgod/comments/152224.html</wfw:comment><comments>http://www.cppblog.com/singohgod/archive/2011/08/01/152224.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/singohgod/comments/commentRss/152224.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/singohgod/services/trackbacks/152224.html</trackback:ping><description><![CDATA[<div>
<div>作为Linux下的程序开发人员，大家一定都遇到过Makefile，用make命令来编译自己写的程序确实是很方便。一般情况下，大家都是手工写一个简单Makefile，如果要想写出一个符合自由软件惯例的Makefile就不那么容易了。&nbsp;</div>
</div>
<div>
<p><br />
在本文中，将给大家介绍如何使用&nbsp;autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Makefile，这样就可以象常见的GNU程序一样，只要使用&#8220;./configure&#8221;，&#8220;make&#8221;，&#8220;make install&#8221;就可以把程序安装到Linux系统中去了。这将特别适合想做开放源代码软件的程序开发人员，又或如果你只是自己写些小的Toy程序，那么这个文章对你也会有很大的帮助。</p>
<p>编译一个简单的源文件main.c,需要自动生成一个makefile,以下是步骤：</p>
<p>第一步：</p>
<p>----------</p>
<p>在/root/project/main目录下创建一个文件main.c,其内容如下：</p>
<p>------------------------------------------------</p>
<p>#include &lt;stdio.h&gt;</p>
<p>int main(int argc, char** argv)</p>
<p>{</p>
<p>printf("Hello, Auto Makefile!\n");</p>
<p>return 0;</p>
<p>}</p>
<p>------------------------------------------------</p>
<p>此时状态如下：</p>
<p>[root@localhost main]#&nbsp;<strong>pwd</strong></p>
<p>/root/project/main</p>
<p>[root@localhost main]#&nbsp;<strong>ls</strong></p>
<p><strong>main.c</strong></p>
<p>[root@localhost main]#</p>
<p>第二步：</p>
<p>----------</p>
<p>运行&nbsp;<strong>autoscan</strong>&nbsp;, 自动创建两个文件： autoscan.log configure.scan</p>
<p>此时状态如下：</p>
<p>[root@localhost main]#&nbsp;<strong>autoscan</strong></p>
<p>[root@localhost main]#&nbsp;<strong>ls</strong></p>
<p><strong>autoscan.log configure.scan</strong>&nbsp;main.c</p>
<p>[root@localhost main]#</p>
<p>第三步：</p>
<p>----------</p>
<p>修改configure.scan的文件名为configure.in</p>
<p>查看<strong>configure.in</strong>的内容：</p>
<p>------------------------------------------------</p>
<p># -*- Autoconf -*-</p>
<p># Process this file with autoconf to produce a configure script.</p>
<p>AC_PREREQ(2.61)</p>
<p>AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)</p>
<p>AC_CONFIG_SRCDIR([main.c])</p>
<p>AC_CONFIG_HEADER([config.h])</p>
<p># Checks for programs.</p>
<p>AC_PROG_CC</p>
<p># Checks for libraries.</p>
<p># Checks for header files.</p>
<p># Checks for typedefs, structures, and compiler characteristics.</p>
<p># Checks for library functions.</p>
<p>AC_OUTPUT</p>
<p>------------------------------------------------</p>
<p>解读以上的文件：</p>
<p>------------------------------------------------</p>
<p># -*- Autoconf -*-</p>
<p># Process this file with autoconf to produce a configure script.</p>
<p># AC_PREREQ:</p>
<p># 确保使用的是足够新的Autoconf版本。如果用于创建configure的Autoconf的版</p>
<p># 本比version 要早，就在标准错误输出打印一条错误消息并不会创建configure。</p>
<p>AC_PREREQ(2.61)</p>
<p>#</p>
<p># 初始化,定义软件的基本信息,包括设置包的全称,版本号以及报告BUG时需要用的邮箱地址</p>
<p>#</p>
<p>AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)</p>
<p>#</p>
<p># 用来侦测所指定的源码文件是否存在，来确定源码目录的有效性</p>
<p>#</p>
<p>AC_CONFIG_SRCDIR([main.c])</p>
<p>#</p>
<p># 用于生成config.h文件，以便autoheader使用</p>
<p>#</p>
<p>AC_CONFIG_HEADER([config.h])</p>
<p># Checks for programs.</p>
<p>AC_PROG_CC</p>
<p># Checks for libraries.</p>
<p># Checks for header files.</p>
<p># Checks for typedefs, structures, and compiler characteristics.</p>
<p># Checks for library functions.</p>
<p>#</p>
<p># 创建输出文件。在`configure.in'的末尾调用本宏一次。</p>
<p>#</p>
<p>AC_OUTPUT</p>
<p>------------------------------------------------</p>
<p>修改动作:</p>
<p>1.修改AC_INIT里面的参数: AC_INIT(main,1.0, pgpxc@163.com)</p>
<p>2.添加宏AM_INIT_AUTOMAKE, 它是automake所必备的宏，也同前面一样，PACKAGE是所要产生软件套件的名称，VERSION是版本编号。</p>
<p>3.在AC_OUTPUT后添加输出文件Makefile</p>
<p>修改后的结果:</p>
<p>------------------------------------------------</p>
<p># -*- Autoconf -*-</p>
<p># Process this file with autoconf to produce a configure script.</p>
<p>AC_PREREQ(2.61)</p>
<p><strong>AC_INIT(main, 1.0, pgpxc@163.com)</strong></p>
<p>AC_CONFIG_SRCDIR([main.c])</p>
<p>AC_CONFIG_HEADER([config.h])</p>
<p><strong>AM_INIT_AUTOMAKE(main,1.0)</strong></p>
<p># Checks for programs.</p>
<p>AC_PROG_CC</p>
<p># Checks for libraries.</p>
<p># Checks for header files.</p>
<p># Checks for typedefs, structures, and compiler characteristics.</p>
<p># Checks for library functions.</p>
<p><strong>AC_OUTPUT([Makefile])</strong></p>
<p>------------------------------------------------</p>
<p>第四步:</p>
<p>运行&nbsp;<strong>aclocal</strong>, 生成一个&#8220;<strong>aclocal.m4</strong>&#8221;文件和一个缓冲文件夹<strong>autom4te.cache</strong>，该文件主要处理本地的宏定义。</p>
<p>此时的状态是：</p>
<p>[root@localhost main]#&nbsp;<strong>aclocal</strong></p>
<p>[root@localhost main]#&nbsp;<strong>ls</strong></p>
<p><strong>aclocal.m4 autom4te.cache</strong>&nbsp;autoscan.log configure.in configure.in~ main.c</p>
<p>[root@localhost main]#</p>
<p>第五步：</p>
<p>运行&nbsp;<strong>autoconf</strong>, 目的是生成 configure</p>
<p>此时的状态是：</p>
<p>[root@localhost main]#&nbsp;<strong>autoconf</strong></p>
<p>[root@localhost main]#&nbsp;<strong>ls</strong></p>
<p>aclocal.m4 autoscan.log configure.in main.c</p>
<p>autom4te.cache&nbsp;<strong>configure</strong>&nbsp;configure.in~</p>
<p>[root@localhost main]#</p>
<p>第六步：</p>
<p>运行&nbsp;<strong>autoheader</strong>，它负责生成config.h.in文件。该工具通常会从&#8220;acconfig.h&#8221;文件中复制用户附加的符号定义，因此此处没有附加符号定义，所以不需要创建&#8220;acconfig.h&#8221;文件。</p>
<p>此时的状态是：</p>
<p>[root@localhost main]#&nbsp;<strong>autoheader</strong></p>
<p>[root@localhost main]#&nbsp;<strong>ls</strong></p>
<p>aclocal.m4 autoscan.log configure configure.in~</p>
<p>autom4te.cache&nbsp;<strong>config.h.in</strong>&nbsp;configure.in main.c</p>
<p>[root@localhost main]#</p>
<p>第七步：</p>
<p>下面即将运行&nbsp;<strong>automake</strong>, 但在此之前应该做一下准备工作!</p>
<p>首先</p>
<p>创建一个&nbsp;<strong>Makefile.am</strong>.这一步是创建Makefile很重要的一步，automake要用的脚本配置文件是Makefile.am，用户需要自己创建相应的文件。之后，automake工具转换成Makefile.in。</p>
<p>这个Makefile.am的内容如下：</p>
<p>------------------------------------------------</p>
<p>AUTOMAKE_OPTIONS=foreign</p>
<p>bin_PROGRAMS=main</p>
<p>main_SOURCES=main.c</p>
<p>------------------------------------------------</p>
<p>下面对该脚本文件的对应项进行解释。</p>
<p>其中的AUTOMAKE_OPTIONS为设置automake的选项。由于GNU（在第1章中已经有所介绍）对自己发布的软件有严格的规范，比如必须附 带许可证声明文件COPYING等，否则automake执行时会报错。automake提供了三种软件等级：foreign、gnu和gnits，让用 户选择采用，默认等级为gnu。在本例使用foreign等级，它只检测必须的文件。</p>
<p>bin_PROGRAMS定义要产生的执行文件名。如果要产生多个执行文件，每个文件名用空格隔开。</p>
<p>main_SOURCES定义&#8220;main&#8221;这个执行程序所需要的原始文件。如果&#8221;main&#8221;这个程序是由多个原始文件所产生的，则必须把它所用到的所有原 始文件都列出来，并用空格隔开。例如：若目标体&#8220;main&#8221;需要&#8220;main.c&#8221;、&#8220;sunq.c&#8221;、&#8220;main.h&#8221;三个依赖文件，则定义 main_SOURCES=main.c sunq.c main.h。要注意的是，如果要定义多个执行文件，则对每个执行程序都要定义相应的file_SOURCES。</p>
<p>其次</p>
<p>使用automake对其生成&#8220;configure.in&#8221;文件，在这里使用选项&#8220;&#8212;adding-missing&#8221;可以让automake自动添加有一些必需的脚本文件。</p>
<p>运行后的状态是：</p>
<p>------------------------------------------------</p>
<p>[root@localhost main]#&nbsp;<strong>automake --add-missing</strong></p>
<p>configure.in:8: installing `./missing'</p>
<p>configure.in:8: installing `./install-sh'</p>
<p>Makefile.am: installing `./depcomp'</p>
<p>[root@localhost main]#&nbsp;<strong>ls</strong></p>
<p>aclocal.m4 config.h.in configure.in~ main.c Makefile.in</p>
<p>autom4te.cache configure&nbsp;<strong>depcomp</strong>&nbsp;<strong>Makefile.am</strong>&nbsp;<strong>missing</strong></p>
<p>autoscan.log configure.in&nbsp;<strong>install-sh</strong>&nbsp;Makefile.am~</p>
<p>[root@localhost main]#</p>
<p>------------------------------------------------</p>
<p>第八步</p>
<p>运行<strong>configure</strong>，在这一步中，通过运行自动配置设置文件configure，把Makefile.in变成了最终的Makefile。</p>
<p>运行的结果如下：</p>
<p>------------------------------------------------</p>
<p>[root@localhost main]#&nbsp;<strong>./configure</strong></p>
<p>checking for a BSD-compatible install... /usr/bin/install -c</p>
<p>checking whether build environment is sane... yes</p>
<p>checking for a thread-safe mkdir -p... /bin/mkdir -p</p>
<p>checking for gawk... gawk</p>
<p>checking whether make sets $(MAKE)... yes</p>
<p>checking for gcc... gcc</p>
<p>checking for C compiler default output file name... a.out</p>
<p>checking whether the C compiler works... yes</p>
<p>checking whether we are cross compiling... no</p>
<p>checking for suffix of executables...</p>
<p>checking for suffix of object files... o</p>
<p>checking whether we are using the GNU C compiler... yes</p>
<p>checking whether gcc accepts -g... yes</p>
<p>checking for gcc option to accept ISO C89... none needed</p>
<p>checking for style of include used by make... GNU</p>
<p>checking dependency style of gcc... gcc3</p>
<p>configure: creating ./config.status</p>
<p><strong>config.status: creating Makefile</strong></p>
<p>config.status: creating config.h</p>
<p>config.status: executing depfiles commands</p>
<p>[root@localhost main]# ls</p>
<p>aclocal.m4 config.h.in configure.in main.c Makefile.in</p>
<p>autom4te.cache config.log configure.in~ Makefile&nbsp;<strong>missing</strong></p>
<p>autoscan.log config.status&nbsp;<strong>depcomp</strong>&nbsp;Makefile.am&nbsp;<strong>stamp-h1</strong></p>
<p><strong>config.h</strong>&nbsp;configure&nbsp;<strong>install-sh</strong>&nbsp;Makefile.am~</p>
<p>[root@localhost main]#</p>
<p>------------------------------------------------</p>
<p>第九步</p>
<p>运行&nbsp;<strong>make</strong>，对配置文件Makefile进行测试一下</p>
<p>此时的状态如下:</p>
<p>------------------------------------------------</p>
<p>[root@localhost main]#&nbsp;<strong>make</strong></p>
<p>cd . &amp;&amp; /bin/sh /root/project/main/missing --run aclocal-1.10</p>
<p>cd . &amp;&amp; /bin/sh /root/project/main/missing --run automake-1.10 --foreign</p>
<p>cd . &amp;&amp; /bin/sh /root/project/main/missing --run autoconf</p>
<p>/bin/sh ./config.status --recheck</p>
<p>running CONFIG_SHELL=/bin/sh /bin/sh ./configure --no-create --no-recursion</p>
<p>checking for a BSD-compatible install... /usr/bin/install -c</p>
<p>checking whether build environment is sane... yes</p>
<p>checking for a thread-safe mkdir -p... /bin/mkdir -p</p>
<p>checking for gawk... gawk</p>
<p>checking whether make sets $(MAKE)... yes</p>
<p>checking for gcc... gcc</p>
<p>checking for C compiler default output file name... a.out</p>
<p>checking whether the C compiler works... yes</p>
<p>checking whether we are cross compiling... no</p>
<p>checking for suffix of executables...</p>
<p>checking for suffix of object files... o</p>
<p>checking whether we are using the GNU C compiler... yes</p>
<p>checking whether gcc accepts -g... yes</p>
<p>checking for gcc option to accept ISO C89... none needed</p>
<p>checking for style of include used by make... GNU</p>
<p>checking dependency style of gcc... gcc3</p>
<p>configure: creating ./config.status</p>
<p>/bin/sh ./config.status</p>
<p>config.status: creating Makefile</p>
<p>config.status: creating config.h</p>
<p>config.status: config.h is unchanged</p>
<p>config.status: executing depfiles commands</p>
<p>cd . &amp;&amp; /bin/sh /root/project/main/missing --run autoheader</p>
<p>rm -f stamp-h1</p>
<p>touch config.h.in</p>
<p>make all-am</p>
<p>make[1]: Entering directory `/root/project/main'</p>
<p>gcc -DHAVE_CONFIG_H -I. -g -O2 -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.c</p>
<p>mv -f .deps/main.Tpo .deps/main.Po</p>
<p>gcc -g -O2 -o main main.o</p>
<p>cd . &amp;&amp; /bin/sh ./config.status config.h</p>
<p>config.status: creating config.h</p>
<p>config.status: config.h is unchanged</p>
<p>make[1]: Leaving directory `/root/project/main'</p>
<p>[root@localhost main]#&nbsp;<strong>ls</strong></p>
<p>aclocal.m4 autoscan.log config.h.in config.status configure.in depcomp&nbsp;<strong>main main.o</strong>&nbsp;Makefile.am Makefile.in stamp-h1</p>
<p>autom4te.cache config.h config.log configure configure.in~ install-sh main.c Makefile Makefile.am~ missing</p>
<p>[root@localhost main]#</p>
<p>------------------------------------------------</p>
<p>第十步</p>
<p>运行生成的文件 main：</p>
<p>------------------------------------------------</p>
<p>[root@localhost main]#&nbsp;<strong>./main</strong></p>
<p>Hello, Auto Makefile!</p>
<p>[root@localhost main]#</p>
<p>------------------------------------------------</p>
<p>我用的是ubuntu</p>
<p>以上就是全文了.但有一处要改:用aclocal</p>
<p>全报有一个m4文件有错.找到报错的那一行.把变量加个中括号就可以了</p>
</div>
@import url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);<img src ="http://www.cppblog.com/singohgod/aggbug/152224.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/singohgod/" target="_blank">大宝天天见</a> 2011-08-01 17:40 <a href="http://www.cppblog.com/singohgod/archive/2011/08/01/152224.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]Flex 4里的fx、mx以及s命名空间</title><link>http://www.cppblog.com/singohgod/archive/2011/06/27/149595.html</link><dc:creator>大宝天天见</dc:creator><author>大宝天天见</author><pubDate>Mon, 27 Jun 2011 10:09:00 GMT</pubDate><guid>http://www.cppblog.com/singohgod/archive/2011/06/27/149595.html</guid><wfw:comment>http://www.cppblog.com/singohgod/comments/149595.html</wfw:comment><comments>http://www.cppblog.com/singohgod/archive/2011/06/27/149595.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/singohgod/comments/commentRss/149595.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/singohgod/services/trackbacks/149595.html</trackback:ping><description><![CDATA[<p>Flex 4带给我们的，是全新的命名空间。了解这些命名空间必定是一件好事情。Flex 4有三个非常重要的命名空间，分别是：</p>
<p><strong>xmlns:fx=&#8221;http://ns.adobe.com/mxml/2009&#8243; <br />xmlns:mx=&#8221;library://ns.adobe.com/flex/halo&#8221; <br />xmlns:s=&#8221;library://ns.adobe.com/flex/spark&#8221;</strong> <br /><br /><strong>1、xmlns:fx=&#8221;http://ns.adobe.com/mxml/2009&#8243;</strong><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fx命名空间下包含ActionScript顶级元素和内建到MXML编译器里的标签。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 前者ActionScript顶级元素就是指 Object、Number、Boolean以及Array对象等等，在《Adobe Flex 4 Beta Language Reference》的顶级包（Top Level）里可以查看完整的顶级元素。后者内建到MXML编译器里的标签包括&lt;fx:Script&gt;、&lt;fx:Declarations&gt;和&lt;fx:Style&gt;等等，在《Adobe Flex 4 Beta Language Reference》附录（Appendixes）里的&#8220;MXML Only Tags&#8221;可以查看完整的编译器元素。值得注意的是，这个命名空间并不包含 Halo 和 Spark 组件（Halo是以前版本的组件库，而Spark是Flex 4新出的组件库）。在Flash Builder安装目录下可以找到&#8220;mxml-2009-manifest.xml&#8221;文件（例如我的电脑是C:\Program Files\Adobe\Flash Builder Beta\sdks\4.0.0\frameworks\mxml-2009-manifest.xml），这个xml文件描述了完整的 ActionScript顶级类。不过你可以注意到，它并没有包含MXML编译器标签，那是因为这些标签是内建到MXML编译器。</p>
<p><br /><strong>2、xmlns:mx=&#8221;library://ns.adobe.com/flex/halo&#8221;</strong><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mx命名空间包含着放在 mx.* 包里那些组件，Flex图表、Flex数据可视化组件等等。对Flex 3很熟悉的话，mx包里的组件你也不陌生了。在Flex 4 SDK的安装目录下可以找到&#8220;halo-manifest.xml&#8221;文件（例如我的电脑是C:\Program Files\Adobe\Flash Builder Beta\sdks\4.0.0\frameworks\halo-manifest.xml），这个XML文件列出了所有组件了。</p>
<p><br /><strong>3、xmlns:s=&#8221;library://ns.adobe.com/flex/spark&#8221;</strong><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s命名空间可真是新鲜事了，spark.* 包里的组件都在这个命名空间里，不只spark包，flashx.*包的text framework类也在这个命名空间里。这个命名空间包含不少RPC类，例如 WebService、HTTPService和RemoteObject组件，这些组件同时也在mx命名空间下，也就是说，创建这些组件时，你不但可以使用&#8220;S:&#8221;前缀，也可以使用&#8220;mx:&#8221;前缀。其实不只这些RPC组件共用两个命名空间，像graphics、effect和state类也是共用 s 和 mx 命名空间的。在Flex 4 SDK安装目录下打开spark-manifest.xml文件来看看完整的spark组件吧。</p>
<p><a href="http://www.fengfly.com/plus/view-172216-1.html"></a>&nbsp;</p>
<p>&nbsp;</p><img src ="http://www.cppblog.com/singohgod/aggbug/149595.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/singohgod/" target="_blank">大宝天天见</a> 2011-06-27 18:09 <a href="http://www.cppblog.com/singohgod/archive/2011/06/27/149595.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]Flex是咋回事</title><link>http://www.cppblog.com/singohgod/archive/2011/06/27/149591.html</link><dc:creator>大宝天天见</dc:creator><author>大宝天天见</author><pubDate>Mon, 27 Jun 2011 09:58:00 GMT</pubDate><guid>http://www.cppblog.com/singohgod/archive/2011/06/27/149591.html</guid><wfw:comment>http://www.cppblog.com/singohgod/comments/149591.html</wfw:comment><comments>http://www.cppblog.com/singohgod/archive/2011/06/27/149591.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/singohgod/comments/commentRss/149591.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/singohgod/services/trackbacks/149591.html</trackback:ping><description><![CDATA[<p><strong>Flex是咋回事之一 集CS和BS之大成的RIA</strong><br /></p>
<p>用了一年多Flex，感触多多。偶尔有同行的朋友问我啥是Flex，说实话，一时半会儿我还真说不清楚。尤其是对于一个从未接触过Flex的朋友，想要由浅入深地只用嘴巴不用电脑给他讲明白，这确实难为一个整天只跟机器打交道的程序员了。后来我想了一个办法，我说你知道开心农场吧，那就是拿Flex做的。这下子很多人有兴趣了，呵呵，如果你也有兴趣，请继续往下看。失言未察之处，欢迎拍砖。</p>
<p>&nbsp;</p>
<p>一般来说，一项技术的产生都是为了解决业界的重大难题而出现的。那么说到Flex我们就不得不先说一下RIA。RIA这个概念其实早就出现了，我最初是07年在《程序员》杂志上关于Ajax技术的介绍时看到的。到了08年，伴随着网络视频的飞速发展，RIA应用已经搞得有声有色热火朝天了，其实翻译过来就是个富客户端（Rich Internet Application），相较于BS的瘦客户端，也可以称之为胖客户端。当然如果你已经被这些名词概念熏得焦头烂额，请连跳四段（小黑好心提示，本部分仅余四段。。。）。</p>
<p>&nbsp;</p>
<p>RIA简单的说，就是CS+BS的开发部署模式。CS和BS大家都很熟悉，CS的全拼是Client/Server，它的优点在于借助局域网的信息安全和带宽优势，充分利用客户机器的运算能力从而降低服务器压力，缺点就是安装部署更新麻烦，比如老板让我跑到一千公里外的客户那安装一千台机器的客户端，过几天我回来了，老板说那边有几台机器运行有问题，你去维护一下~！过几个月，老板说你去把那一千台机器全部升级一遍，他们自己不会装。。。呵呵，这些痛苦我当然不曾经历，我杜撰的。</p>
<p>&nbsp;</p>
<p>那么在1998年，互联网风起云涌的时候，BS，Browser/Server，逢时而生。BS充分利用互联网的优势，解决了CS安装部署更新的一大难题。通过把业务逻辑处理放在服务器端，然后解析为HTML，利用HTTP协议传输到客户的浏览器上就万事大吉。看起来很美，其实干过就知道也很痛苦。哪儿痛呢，痛的当然是我们这些开发者。安装部署更新倒是省事儿了，装个IE，给个网址就能让客户登录了。但是，基于HTML+JavaScript的技术让人很崩溃。JavaScript我好久不用了，在以前毕业实习的时候，感觉开发和调试都不方便，而且还面临着不同浏览器不兼容的噩梦（据说现在上述问题随着Ajax的风行有所改善，我不太了解）。另外，BS还有一些潜在的缺点。比如，客户端体验简单，不易开发丰富的效果来展示数据（这和当时的网络带宽也有关系）；必须联网才能运行，信息安全无法保障；应用程序需要通过其他技术辅助才能操作客户端资源；服务器负载过高而客户机运算能力未充分使用等。</p>
<p>&nbsp;</p>
<p>综合来讲，BS仍然是一个不错的解决方案，它的Web应用程序和CS的桌面应用程序曾一度二分天下，各领风骚数十年。从解耦角度来看，CS以数据库的方式把数据从程序中分离，BS以浏览器页面的方式把界面和逻辑再次分离，然而第二次分离是不彻底的。表面上只是代码结构的分离，从实质上看表现层仍然是逻辑层的附庸，前台UI完全和后台实现技术绑死（把已有项目后台从C#换成JAVA是不可能的。。。）为了解决这个问题，RIA出现了（顺便搞定了一些其他问题，比如页面异步刷新，前台UI不够丰富等等），RIA基本实现了不依赖于特定后台技术，能与多种服务端搭配使用。</p>
<p>&nbsp;</p>
<p>在2002年，MacroMedia公司（简称MM，05年被Adobe收购）首先在Flash Player6中引入了RIA概念。2004年，MM正式发布Flex1.0（汗，终于说到Flex了），随着Ajax的火爆，RIA开始受到广泛关注。RIA主要有两个方面的含义，一是用户界面的丰富即富客户端，二是数据模型的智能，服务器已经变成了支持客户端正常运行的数据服务，并提供了异步数据传输和脱机缓存机制等复杂的数据处理能力。前面提到，RIA本质上就是CS+BS，它想集大成，想搞总结，想终结CS和BS二分天下的局面。说浅显点就是，如果以前的CS程序现在能在网络上运行，并且保持了原来的功能和特征，那么这就是一个RIA。关于RIA的详细介绍GOOGLE上一搜一大把，在此就不继续作详细展开。回到当下，RIA各种技术一番拼杀，现在广为人知的只剩下四个NB小伙：Ajax、Flex、SilverLight、JavaFx。在本文第二部分中，我将简要介绍一下Flex（貌似进度有点儿慢，多谢支持。。。）</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>Flex是咋回事之二 前世今生</strong>&nbsp;</p>
<p>&nbsp;</p>
<p>先说一下Flash Player（简称FP）。经常上网的朋友一定遇到过Flash Player版本升级的提示吧，这东西其实就是浏览器插件，据说已经有了98%的安装普及率，没办法，谁让咱们这么爱看视频呢（FP具体介绍请见<a href="http://baike.baidu.com/view/1585492.htm">http://baike.baidu.com/view/1585492.htm</a>）。Flex生成的页面主要是通过Html包装一下生成的swf文件，和Flash生成的swf一样，它也靠FP才能完美运行，这有点类似JVM虚拟机和.NET FRAMEWORK（FP里内嵌了AVM虚拟机）。FP又分调试版和产品版，总体来讲，咱们只管用FP提供的API，以及及时关注最新版本的功能，其余不会过多接触（我对FP10关于3D方面的支持很感兴趣，不过貌似其支持效果不太理想）。</p>
<p>&nbsp;</p>
<p>再说一下Flash的历史。在1996年,小软件公司FutureWave Software为了给Netscape开发一个全新的网页浏览插件，创建了名为Future Splash Animator的动态小程序，该产品基于Java，是由一个称为SmartSketch的产品演化而来，这就是Flash的老祖了。具有讽刺意味的是，这家FutureWave的公司本来是打算把这项技术卖给Adobe的，但在那个时候Adobe根本不睬它。而Macromedia（简称MM）却很有兴趣，就这样在1996年11月,MM在拥有了FutureWave这家公司的技术后，把FutureSplash重新命名为Flash Player 1.0。在随后的许多年间，Flash被打包为Studio套件的一部分，并与其他Studio产品（如Dreamweaver和Fireworks）一起发布，世人称网页三剑客。。。三剑客横行无敌，到了05年4月18日这天，ADOBE实在看不下去了，阔绰出手，又以34亿美元天价收购MM。。。ADOBE大叔估计很后悔当年没收购Future Splash，搞到现在，被MM给做大了（Flash具体历史介绍参见<a href="http://flash.9ria.com/viewthread.php?tid=13194">http://flash.9ria.com/viewthread.php?tid=13194</a>和<a href="http://space.flash8.net/space/?625743/viewspace-350122">http://space.flash8.net/space/?625743/viewspace-350122</a>）</p>
<p>&nbsp;</p>
<p>如同今年4月Oracle收购Sun一样，MM嫁入ADOBE豪门，在当时的业界也是一片哗然炸雷。许多MM的忠实粉丝觉得，那三剑客就是被ADOBE大叔招安了啊，依据其收购产品的一贯猥琐恶行，这几位剑侠估计很快就会被不声不响地给整掉了（当时Flex还是襁褓，大家都没注意到。。。）Fireworks是PhotoShop的老对头了，肯定是斩立决；Dreamweaver要不就是改装变身，要不就是各种理由直接缓死；Flash日子会好过些，但其一贯的MM风格是否能延续也很难保证。</p>
<p>&nbsp;</p>
<p>然而ADOBE这次出乎意料的善良，三剑客无一遗弃，相反还忍痛把自己推行多年的SVG死缓（个人也很喜欢SVG，无奈和FLASH冲突，出于商业策略，这孩子被牺牲了）。在最新的CS4（Creative Suite 4）产品系列中，三剑客依然活力四射地与其他成员工具们和谐奋进。那么事隔收购事件四年多之后，我们已经渐渐接受了MM产品前面强行加上的ADOBE标签。可以说，ADOBE充分吸纳整合了MM的精神和风格，无论是FP还是三剑客，ADOBE一直都在努力地做得更好更和谐。（本人现在已经是ADOBE FANS了，哈哈，不过还是挺怀念Flash MX2004 和Dreamweaver2004那个时代的，尽管当时也没闪出啥东西来。。。）</p>
<p>&nbsp;</p>
<p>说了这么多关于Flash的事情，其实是因为Flash比Flex更出名，ADOBE也察觉到这一点，所以在预备推出FLEX4时，又将其更名为Flash，只是SDK仍然沿用FLEX的名号。FLEX和FLASH并没有本质区别，它们最终都是转为ActionScript源文件，然后被编译为二进制的swf文件（就和JAVA文件被编译成class一样），再交由FP（FP就像JVM虚拟机一样）来执行。不同的是，FLASH更偏向于设计人员，它有时间轴和帧的概念，能更好地实现动画、特效、短片等美工效果。Flex是面向开发者的，隐藏了时间轴的概念（只有两帧），更专注于解决企业应用的表现层方案，提供了大量的通用组件用于构建前端页面、通过数据服务技术能更好的分离界面和逻辑业务层。</p>
<p>&nbsp;</p>
<p>从04年3月MM手中的Flex1.0，到05年10月ADOBE手中的Flex2.0，再到07年1月伴随着强大的面向对象语言ActionScript3出现的Flex3.0,再到明年初发布的强力Flex4.0。借着RIA的春风，Flex在不断走向成熟的同时，也被更多的业界开发者和企业用户所关注接受。如果看到这里你很感兴趣，推荐在GOOGLE上搜索一把，现在不是08年了，网上已经涌现出大量的简易教程供我们参考学习。当然如果你有些闲钱，或是想系统地学习一下，也可以买几本书。（有时间我会整理些网站博客和书籍推荐的）</p>
<p>&nbsp;</p>
<p>在本文第三部分中，我将结合项目经验谈一下Flex的优缺点和使用心得。没用过Flex的可能无法共鸣吧，那就直接跳过不看了，呵呵</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>Flex是咋回事之三　谁用谁知道</strong></p>
<p>&nbsp;</p>
<p>一项技术，从概念提出到技术研发到商业发布，再到实际应用，最终将产品呈现在用户面前，这是一个漫长而复杂的过程。在这当中，很多有创意有生命力的技术因为各种原因小小遗憾地不幸夭折了。Flex能走到今天确实不易，下面让我们从不同的角度来看一下它是如何过关斩将，赢得众多青睐的。</p>
<p>&nbsp;</p>
<p>技术角度：</p>
<p>（１）具备了RIA时代富客户端的优点（C/S+B/S）</p>
<p>（２）支持多种服务器语言（JAVA、.NET、PHP）及主流框架（Spring、Hibernate）</p>
<p>（３）与Java结合后相当强大，能充分利用Java的资源背景</p>
<p>（４）拥有丰富的组件和第三方组件，对企业级的数据汇总和业务流程展现力较强悍</p>
<p>（５）借助开源的力量，拥有众多民间组织和牛人支持</p>
<p>（６）Adobe公司（还有MM多年积累）的强大背景</p>
<p>（７）源于Flash的天生丽质，轻松使用多媒体资源，动态交互性强</p>
<p>（８）借助FlashPlayer的安装普及度，轻松实现跨浏览器跨平台</p>
<p>（９）良好的架构设计和制作精良的文档示例（明年FLEX４同步推出中文版）</p>
<p>（１０）借助于插件丰富的Eclipse开发平台并拥有独立的IDE</p>
<p>（１１）框架设计重用性高，有利于模块化设计</p>
<p>（１２）近几年发展态势良好，获得了广泛认可，产品和技术也越发成熟</p>
<p>&nbsp;</p>
<p>开发者角度：</p>
<p>（１）开源，透明（国人没有不喜欢开源的，哈哈）</p>
<p>（２）基于Eclipse开发平台，易上手，且插件丰富（巨人的肩膀啊~）</p>
<p>（３）基于Eclipse平台，开发调试方便(FB4中的条件断点）</p>
<p>（４）ActionScript语言与Java的融合度和相似度较高，易学易用</p>
<p>（５）MXML标签与XML相似，逻辑清晰可读性强</p>
<p>（６）架构设计良好，耦合度低，有利于组件重用</p>
<p>（７）无需针对不同浏览器编写代码，摆脱编写和调试的噩梦（针对JS说的）</p>
<p>（８）类似VB的可视化拖拽组件，快速创建界面</p>
<p>（９）方便定制及使用第三方的皮肤和样式，无需美工也有好效果</p>
<p>（１０）支持多媒体资源，轻易开发动态交互性强的界面</p>
<p>（１１）众多的RPC组件保障对后台数据访问的安全性和效率</p>
<p>（１２）文档示例丰富，通过网络可以获取大量的学习资源</p>
<p>（１３）近两年发展态势良好，前景光明</p>
<p>&nbsp;</p>
<p>企业角度：</p>
<p>（１）开源，免费（其实很多时候还是直接用破解的。。。）</p>
<p>（２）具备了RIA时代富客户端的优点（C/S+B/S）（潮流啊~！）</p>
<p>（３）项目和组件的重用性高，易于资源积累和快速构建</p>
<p>（４）Flex提供了与其他语言的结合，能广泛利用已有的资源</p>
<p>（５）界面华丽，客户认可度高</p>
<p>（６）学习曲线一般，培训成本低</p>
<p>&nbsp;</p>
<p>用户角度：</p>
<p>（１）部署和更新方便</p>
<p>（２）界面漂亮，交互性强</p>
<p>（３）安全</p>
<p>&nbsp;</p>
<p>说了这么多好话，再来综合说一下缺点。鉴于我着迷于Flex的光环效应，没有看到的缺点还请诸位多多提出。</p>
<p>缺点：</p>
<p>（１）不擅长处理复杂的业务流程，主要还是适合展现（Flex不是万能的）</p>
<p>（２）继承了Flash的诸多优点，却唯独丢掉了Flash的小巧轻盈（减肥是永恒的话题）</p>
<p>（３）目前尚没有比较好的减肥策略，带宽较好时这不是问题（不是一般的卡。。。）</p>
<p>（４）对服务器和客户端的硬件设备都有一定要求（CPU和内存占用很生猛。。。）</p>
<p>（５）运行期内存泄露状况严重，尽管可以通过一定手段改善（这个很崩溃）</p>
<p>（６）对一些较专业的领域涉及较少，需要第三方组件支持（比如地质方面的）</p>
<p>（７）Adobe公司对中国分部的支持不够（感觉宣讲和文档都做得不够）</p>
<p>（８）搜索引擎对swf文件的支持不够（Adobe一直在努力）</p>
<p>（９）与以往浏览习惯不同，比如右键被屏蔽，图片无法保存（可以改善）</p>
<p>&nbsp;</p>
<p>鉴于Flex生成的swf文件太肥是其主要缺点（加载慢，运行慢，内存占用多），我就主要从减肥和优化的角度来说一下使用心得。</p>
<p>使用心得：</p>
<p>（１）Flex只是前台展现，需要搭配强大的后台（注意前后台的均衡和优化）</p>
<p>（２）考虑异步加载（比如分步加载外部资源）</p>
<p>（３）界面推荐使用相对布局，合理组合，避免多余嵌套</p>
<p>（４）界面加载图片推荐使用外部加载方式，尽可能多使用矢量图形</p>
<p>（５）规范CSS样式表，尤其注意使用的外部字体大小</p>
<p>（６）使用额外的皮肤和特效时需要综合考虑生成的文件大小和执行效率</p>
<p>（７）适当地考虑延时加载策略，主界面只显示必要的内容</p>
<p>（８）规范编码，提高执行效率，避免内存泄露</p>
<p>（９）使用RSL和Module和其他有效方式努力减肥</p>
<p>（１０）尽可能重写一些继承底层类的组件，执行效率更好</p>
<p>（１１）慎重使用重量级组件（比如DataGrid，AdvancedDataGrid）</p>
<p>&nbsp;</p>
<p>原文来自：雨枫技术教程网 <a href="http://www.fengfly.com">http://www.fengfly.com</a><br /></p><img src ="http://www.cppblog.com/singohgod/aggbug/149591.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/singohgod/" target="_blank">大宝天天见</a> 2011-06-27 17:58 <a href="http://www.cppblog.com/singohgod/archive/2011/06/27/149591.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]大型上市游戏公司重要职能架构</title><link>http://www.cppblog.com/singohgod/archive/2010/09/17/126834.html</link><dc:creator>大宝天天见</dc:creator><author>大宝天天见</author><pubDate>Fri, 17 Sep 2010 02:40:00 GMT</pubDate><guid>http://www.cppblog.com/singohgod/archive/2010/09/17/126834.html</guid><wfw:comment>http://www.cppblog.com/singohgod/comments/126834.html</wfw:comment><comments>http://www.cppblog.com/singohgod/archive/2010/09/17/126834.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/singohgod/comments/commentRss/126834.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/singohgod/services/trackbacks/126834.html</trackback:ping><description><![CDATA[<strong>大型上市游戏公司重要职能架构 - 新好<br><br></strong>作者：新好<br>博客：<a href="http://blog.sina.com.cn/u/1054908282?retcode=0" target=_blank><u><font color=#0000ff>http://blog.sina.com.cn/u/1054908282?retcode=0</font></u></a>
<p>&#160;</p>
<p><strong>首席执行官【CEO】</strong></p>
<p>美国人在20世纪60年代进行公司治理结构改革创新时的产物、它的出现在某种意义上代表着将原来董事会手中一些决策权过渡到经营层手中、CEO概念最早出现在一些网络企业。在那里CEO往往是自封的、也很少有人去研究这一称谓对企业到底意味着什么。但是，当&#8220;CEO&#8221;在中国叫得越来越响时候、高层人员称谓改变不是一件小事、设立CEO职位不仅仅是对时尚追赶。事实上，CEO做的事情重点在于&#8220;执行&#8221;。大多数中国公司往往CEO做的事情恰恰不是&#8220;执行&#8221;，更像是&#8220;董事长&#8221;。</p>
<p><br><strong>首席财政官或财务总监【CFO】</strong></p>
<p>现代公司中最重要、最有价值顶尖管理职位之一、掌握着企业神经系统(财务信息)和血液系统(现金资源)灵魂人物。做一名成功CFO需要具备丰富金融理论知识和实务经验。公司理财与金融市场交互、项目估价、风险管理、产品研发、战略规划、企业核心竞争力识别与建立及洞悉信息技术及电子商务对企业冲击等都是CFO职责范围内事。大型公司运作中CFO是穿插在金融市场操作和公司内部财务管理之间角色。担当CFO人才大多是拥有多年在金融市场驰骋经验的人。在美国优秀的CFO常常在华尔街做过成功基金经理人。</p>
<p><br><strong>首席营运官【COO】</strong></p>
<p>负责公司日常营运、辅助CEO工作。一般来讲COO负责公司职能管理组织体系建设、并代表CEO处理企业日常职能事务。如公司未设有总裁职务则COO还要承担整体业务管理职能、主管企业营销与综合业务拓展、负责建立公司整个销售策略与政策、组织生产经营、协助CEO制定公司业务发展计划、对公司经营绩效进行考核。也有把运营总监称呼为COO的。</p>
<p><br><strong>首席市场官【CMO】</strong></p>
<p>指市场总监</p>
<p><br><strong>首席技术官【CTO】</strong></p>
<p>技术总监</p>
<p><br><strong>销售总监【CSO】</strong></p>
<p>渠道销售总监</p>
<p><br><strong>公关总监【CPO】</strong></p>
<p>政府事务、媒体、重要公司与人物公共关系，主要是搞定人。</p>
<p><br><strong>首席信息官【CIO】</strong></p>
<p>大多数公司把这个职位变成了盯人盯票，有点象明朝时候的&#8220;东厂&#8221;，所以说中国是个很神奇的国家。</p>
<p><br><strong>开发总监【CDO】</p>
<p>人事总监 【CHO】</p>
<p>首席品牌官【CBO】</p>
<p>首席文化官【CCO】</p>
<p>首席知识官【CKO】</p>
<p>首席谈判官【CNO】</p>
<p>质量总监【CQO】</p>
<p>评估总监【CVO】</p>
<p><br>首席发言人【CAO】</strong></p>
<p>专门负责解答媒体、债权人和用户等有关问题询问。</p>
<p><br><strong>首席商业计划官【CBO】</strong></p>
<p>首席财务官助理之一、专门针对不同投资人制订相应BP。</p>
<p><br><strong>首席成本控制官【CCO】</strong></p>
<p>凡超过XXXX元以上支出必须由CC0批准。</p>
<p><br><strong>首席域名官【CDO】</strong></p>
<p>负责公司域名注册、网站清盘时域名拍卖、域名法律纠纷等相关问题。</p>
<p><br><strong>首席交换官【CEO】</strong></p>
<p>一般由国际CEO自由联盟随时更换、常设短期职能岗位、类似足球教练。</p>
<p><br><strong>首席方针制订官【CGO】</strong></p>
<p>规划公司宏伟蓝图、一般是5年以后目标。</p>
<p><br><strong>首席协调官【CHO】</strong></p>
<p>调解投资者和经营者之间的冲突、确保公司内部矛盾不要泄露。</p>
<p><br><strong>首席检查官【CIO】</strong></p>
<p>检查公司内部工作状况、监督员工工作态度。</p>
<p><br><strong>首席执法官【CJO】</strong></p>
<p>解决内部劳资纠纷、包括员工对降薪、辞退补偿等所引起问题。</p>
<p><br><strong>网络连接专员【CKO】</strong></p>
<p>最繁忙的岗位之一、当中国电信网络连接中断时及时向员工通报。</p>
<p><br><strong>首席律师【CLO】</strong></p>
<p>负责公司被控侵权时应诉以及各种合同文本审核。主要是灭人的打手。</p>
<p><br><strong>首席媒体官【CMO】</strong></p>
<p>保持和媒体之间友好关<span style="DISPLAY: none; FONT-SIZE: 0px">[来源：GameRes.com]</span>系为公司随时发布新闻做准备，类似首席代表。</p>
<p><br><strong>首席新闻官【CNO】</strong></p>
<p>向媒体披露公司被黑、裁员、被收购等重大新闻。一般由公司市场总监担任，类似政府部门新闻发言人，主要由司长级部门领导担任，公司声音的统一出口。</p>
<p><br><strong>首席隐私官【CPO】</strong></p>
<p>负责公司内部员工Email、ICQ、OICQ等通信内容监控。</p>
<p><br><strong>数量指标编造专家【CQO】</strong></p>
<p>负责注册用户数量、页面浏览、营业收入等指标编造。</p>
<p><br><strong>首席裁员官【CRO】</strong></p>
<p>负责与裁员有关事务、直接向股东大会负责、包括董事长在内都不得干预工作。</p>
<p><br><strong>首席战略官【CSO】</strong></p>
<p>由已经退位公司主要创建人担任，在政府机关一般称为调研员或顾问。</p>
<p><br><strong>首席联盟官【CUO】</strong></p>
<p>以战略联盟名义专门寻找有收购自己意向的公司。</p>
<p><br><strong>投资者关系【CVO】</strong></p>
<p>首席财务官另一重要助理。</p>
<p><br><strong>首席网络写手【CWO】</strong></p>
<p>负责将小事扩大化、通过炒作达到扩大公司名度目的，御用文人，比如给陈天桥，史玉柱编故事，造神。</p>
<p><br><strong>形象代言人【CXO】</strong></p>
<p>（中国特有）一般由学历不高且没有什么网络知识的年轻人担任。</p>
<p><br><strong>公司元老【CYO】</strong></p>
<p>荣誉称号授予在公司工作满X年员工（通常空缺）。<br></p>
<img src ="http://www.cppblog.com/singohgod/aggbug/126834.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/singohgod/" target="_blank">大宝天天见</a> 2010-09-17 10:40 <a href="http://www.cppblog.com/singohgod/archive/2010/09/17/126834.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]网游数据解释</title><link>http://www.cppblog.com/singohgod/archive/2010/09/17/126833.html</link><dc:creator>大宝天天见</dc:creator><author>大宝天天见</author><pubDate>Fri, 17 Sep 2010 02:38:00 GMT</pubDate><guid>http://www.cppblog.com/singohgod/archive/2010/09/17/126833.html</guid><wfw:comment>http://www.cppblog.com/singohgod/comments/126833.html</wfw:comment><comments>http://www.cppblog.com/singohgod/archive/2010/09/17/126833.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/singohgod/comments/commentRss/126833.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/singohgod/services/trackbacks/126833.html</trackback:ping><description><![CDATA[<strong>做网游的,当然要懂点这些知识<br><br>网游数据解释<br><br></strong>作者：新好<br>博客：<a href="http://blog.sina.com.cn/u/1054908282?retcode=0" target=_blank><u><font color=#0000ff>http://blog.sina.com.cn/u/1054908282?retcode=0</font></u></a>
<p>&#160;</p>
<p><font color=#ff0000>【用户数量--注册用户】</font>不同项目注册用户质量完全不同，运营商给出不真实数据，那数据调查报告真实性呢？根本没有明白用户质量的意义。<br><br><font color=#ff0000>【在线人数】【最高在线】</font>某个时间能达到的最高在线。<br><br><font color=#ff0000>【活跃人数】</font>具有欺骗性的数字，必须是&#8220;每日活跃用户&#8221;&#8220;每周活跃用户&#8221;&#8220;每月活跃用户&#8221;&#8220;每季活跃用户&#8221;&#8220;最近多少天内活跃用户&#8221;等。在这段时间内进入游戏的人。<br><br><font color=#ff0000>【每个活跃用户平均在线时间】</font>上面说了活跃用户数，如果没有本数据上面那个也没有意义、每个用户都在线2分钟马上就下线，活跃用户价值是多少呢？能和上线就十几个小时在线玩家等值么？</p>
<p><br><font color=#ff0000>【游戏平均在线人数】</font><br>1、24小时内平均在线人数，数据采样时间越密集越精确。</p>
<p>2、不同游戏每个平均在线是由不同数量用户造就的。一个好游戏可以大量粘住玩家长时间舍不得下线。</p>
<p>3、如果活跃用户每次上线平均在线6小时，那么需要4个活跃用户增加1个平均在线，如每次只让用户玩游戏5分钟就走了，哪怕游戏非常好用户每天都上来5分钟，那么必须有60/5*24=288个活跃用户才能达到1个平均在线人数。要根据情况判断推广活跃用户容易，还是增加游戏粘着更容易。</p>
<p><br><font color=#ff0000>【平均在线、总注册用户、活跃人数及最高在线比例】</font><br>曾经有专家说是xxxx是4%，xxxx是8.7%等，他们可能针对某款能接触到的网游数据而来，如果不知道数据是在什么条件下产生的，每款产品都不一样、比例随着不同市场、不同产品、不同渠道、不同服务会导致精确数据和比例完全不一样。哪怕一模一样产品都可能完全不一样数据，别人注册100万用户能有3万在线，不代表你宣传注册100万也有3万。各方面细节太多，资本家很少全面看成功创业者所付出的努力。</p>
<p><br><font color=#ff0000>【Arpu值定义之争】</font><br>1、有人说是每个消费用户的每日花费。<br>2、有人说是每个活跃用户的每月花费。<br>3、上市公司财报数据定义：产品毛收益=平APA/arpu，要么增加APA数量，要么增加ARPU。对于运营商要根据多少平均在线确定服务器、带宽、客户服务、需要多少推广成本才能累计平均在线等运营成本。<br><br><font color=#ff0000>【收费模式固定值】</font><br>很好算：每小时4毛（或点卡定价）*24小时*30天=288元/月，一款百万在线收费网游大致收入是1000000*288，每月2.88亿毛收入（有很多小数字，如免费使用期用户比例导致真实值减少、各种因素导致免费游戏用户比例导致真实收入减少、用户购买点卡很多人没用完导致真实收入增多，渠道压了货最后没有退导致收入增多等）。</p>
<p><br><font color=#ff0000>【免费制动态arpu值】</font><br>1、大多数网游都在学习免费模式，利用收费道具等盈利，arpu值大小关系到生存的重要指标。</p>
<p>2、很多愣头青听见大师宣传免费模式，连免费模式数据都不清楚情况下凭感觉坚定认为免费模式是潮流、趋势。陈天桥不看产品数据，道具收费增加到可替代收费模式，就凭灵光一闪把每季度几亿时间点卡给扔了？看到这两年来盛大从免费模式赚取超过收费模式还是有瑕疵的，至少在线人数没有按盛大想象的大幅度增加。</p>
<p><br><font color=#ff0000>【收费制】</font><br>推广1个收费制游戏在线用户远比推广N个免费游戏在线用户更加困难，免费模式arpu值大于收费模式时，自然免费模式要比收费模式更好。<br><br><font color=#ff0000>【推广成本】</font><br>1、打算花多少钱宣传推广产品。<br>2、除了资金还要考虑人力成本和时间成本。<br>3、仔细计算每个在线用户推广成本，花多少钱才能增加1个平均在线。<br>4、大部分情况下1个平均在线arpu值低于1个平均在线推广成本。如能找到廉价推广方式增加在线，费用低于用户arpu值，别犹豫赶紧推广吧。<br><br><font color=#ff0000>【推广效果】</font><br>1、作为市场人员是掌握每种营销方式效果数据。有多少人能看到广告A，有多少目标用户看到广告、引起多少目标用户记住、让多少目标用户感兴趣、多少用户尝试、剩下是产品本身和客户服务的事。对个市场来说撒谎不是缺点、无法让更多用户来尝试产品才是失败。</p>
<p>2、注意以上部分数据，不要轻易相信广告商瞎吹，自己掌握的数据才是最真实不会欺骗你的。</p>
<p>3、精确掌握各种营销方式效果数据，相信你不会随便乱花钱，拍着脑瓜子就上一些性价比不合适的广告。</p>
<p><br><font color=#ff0000>【市场潜力分级】</font><br>不要定义一个遥不可及的市场目标，例如全世界有多少人，每个人都需要住房，而你是个有房地产想法的年轻人，你告诉别人你的市场目标是多少亿亿全球用户的房产。这样目标是没有意义的。可执行的目标是很重要的，只要是可执行哪怕在旁人眼里看起来很狂妄，也没有什么不可以。</p>
<p><br><font color=#ff0000>【运营网络游戏一定要知道分级】</font><br>1. 可以直接推广到的那些人？手把手，或者通过你的个人媒体（言传身教）<br>2. 能在你所拥有预算内控制哪些媒体，做哪些事情，有多少用户会因为怎样宣传内容而尝试<br>3. 还有哪些资源，哪些朋友支持，帮助，在你所拥的预算内能帮你打开哪些市场。<br>4. 人才，能否找到比你更优秀的人才、专家帮助你宣传、推广扩大市场</p>
<p><br><font color=#ff0000>【用户群分级举例】</font><br>1、非常关注你的产品网游用户最可能成为你的用户<br>2、宣传推广并引起他们注意的网络游戏用户<br>3、到处寻找新游戏的网络游戏用户<br>4、同类网络游戏的用户<br>5、异类网络游戏的用户</p>
<p><br><font color=#ff0000>【所有人】</font>以上分级不一定准确，不一定适合你，对于你很可能每级需要投入成本不一样，没有史玉柱两个亿就不要开始把目标用户定义为所有人而去打全国广告，否则会发现投入成本一定收不回来。</p>
<p><br><font color=#ff0000>【目标市场定义】</font><br>1、每个人都想产品占领最大最多市场，由各方面条件有限必须按对市场分级，分析目前阶段能覆盖目标市场。</p>
<p>2、近两年很火红海和蓝海概念。<br><br>3、准确定位市场、细分市场目的是降低市场推广成本，增加推广有效程度。如果有足够的推广成本，你自然可以多做泛媒体，广大增加知名度，宣传面。</p>
<p><br><font color=#ff0000>【流失率】</font>很容易被遗忘却异常重要，决定游戏生死重要数据，市场推广好不容易拉的玩家留不留得住。<br><font color=#ff0000>【初期流失率】</font>尝试用户转变为成熟活跃用户，所需耗费的时间<br><font color=#ff0000>【自然流失率】</font>成熟活跃用户自然流失率，产品好坏，内涵丰富最大程度决定着自然流失率高低。</p>
<p><br>1、产品本身有很多问题将会带来非常高自然流失率，产品的画面、操作、各方面细节都是关系到产品品质直接开发因素。</p>
<p>2、很多游戏人都分析《梦幻西游》从技术<span style="DISPLAY: none; FONT-SIZE: 0px">[来源：GameRes.com]</span>层面完全没有优势产品为何黏着度那么高，流失率那么低。游戏内涵是最重要的因素，这关系到游戏生命周期。如果玩家把所有内容都全部玩到需要5个月，那么5个月就是网络游戏每个用户生命周期，当玩家感觉没有可玩内容时他自然会离开。有的游戏是可以让玩家玩几年还有新内容，有的游戏虽然好但是生命周期短。现在有越来越多游戏学会利用循环任务，或随即生成任务增加生命周期<br>3、网游开发者不要冲着简单新概念做游戏，不是做噱头，做有内涵的好游戏，充分利用你的技术团队实现效果，而不是盲目专门搞效果搞噱头，让用户乐意留在游戏里面。</p>
<p><br><font color=#ff0000>【客户服务】</font>很重要作用是减少流失率，没有客户服务游戏将不可避免扩大流失率，流失率大神仙也没得救。盛大第一笔收入用来建立客户服务中心为了什么？商业数据上说就是降低流失率。</p>
<p><br><font color=#ff0000>【线上活动】</font>通过活动（可能是新任务、策划活动、客服执行活动）临时性增加拉高在线，减缓或阻止短时间内玩家流失。</p>
<p><br><font color=#ff0000>【用户自然增长率】</font>在推广下增加1个平均在线成本低于【用户arpu值】*【平均每个用户生命周期】。可以不断持续增加用户情况下、新进入玩家大于产品流失率就进入滚雪球效应了。大多数产品一停止大规模推广成本投入流失率都远大于增长率。很多项目在初期炒作后很快用户数量陆续流失，最后不得不倒闭的原因。</p>
<p><br><font color=#ff0000>【收入潜力值】</font>和arpu值矛盾的值，arpu值越低证明潜力越大，arpu值越高反而说明相同用户数量下收入增长潜力小。有些公司（还没找到盈利模式却有较多用户的网站或游戏）把这个作为他们的未来卖点。</p>
<p><br><font color=#ff0000>【更多细节数据】</font>做好游戏不仅仅看结果型数据，更多对于开发策划要看过程走向型数据。</p>
<p><br><font color=#ff0000>【例如】</font><br>1、有些数据可以告诉你在推广过程中哪个环节流失用户最多。<br><br>2、有些数据可以告诉你、玩家喜欢哪些系统，讨厌什么。无论喜爱还是讨厌都比不过【态度失败】漠不关心、死鸭子嘴硬。玩家对精心策划的内容漠不关心，这是最失败的策划。</p>
<p>3、有些数据可以告诉哪些收费是玩家能够接受的（尽管有些收费内容，玩家可能永远会骂，但每天都有大量用户在付费，有些收费看起来没人骂，实际上根本没有人使用，都要通过运营数据分析）。<br><br>4、有些数据可以很清楚告诉你用户在刷钱、在作弊、在利用漏洞、在用外挂、修改封包。如果有自动化数据分析技术几乎可以发现众多玩家作弊。注意只是发现，能否解决还取决于高层重视态度及技术人员能力和速度，要知道而这些问题几乎导致了大量游戏死亡。</p>
<p>5、数据很清楚告诉你游戏经济体制是否稳固，游戏中不断增加的金钱奖励，道具销售是否造成通货膨胀等更多的细节问题。</p>
<img src ="http://www.cppblog.com/singohgod/aggbug/126833.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/singohgod/" target="_blank">大宝天天见</a> 2010-09-17 10:38 <a href="http://www.cppblog.com/singohgod/archive/2010/09/17/126833.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]很有参考意义的显卡性能排行榜</title><link>http://www.cppblog.com/singohgod/archive/2010/05/17/115566.html</link><dc:creator>大宝天天见</dc:creator><author>大宝天天见</author><pubDate>Mon, 17 May 2010 02:40:00 GMT</pubDate><guid>http://www.cppblog.com/singohgod/archive/2010/05/17/115566.html</guid><wfw:comment>http://www.cppblog.com/singohgod/comments/115566.html</wfw:comment><comments>http://www.cppblog.com/singohgod/archive/2010/05/17/115566.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/singohgod/comments/commentRss/115566.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/singohgod/services/trackbacks/115566.html</trackback:ping><description><![CDATA[貌似采集于2009年10月左右，还不包括ati5xxx系列<br><br>
<p><font color=#ff6600><font size=3><strong>全部按3DMARK06默认分辨率得分计算.游戏内实际帧数不计算在内(因为NVIDIA和ATI对游戏优化造成得分不公正)</strong></font><font size=3><strong>排名120后的显卡因时间过长无法测试.只按历年来网上评分排名.(所有排名显卡均为官方公板频率测试).</strong></font></font></p>
<p><font color=#ff0000 size=3><strong>001 NVIDIA GTX295<br>002 ATI HD4870X2<br>003 NVIDIA GTX285</strong></font><font color=#ff0000 size=3><strong><br>004 ATI HD4850X2<br>005 NVIDIA GTX280<br>006 ATI HD4870<br>007 NVIDIA GTX260<br>008 ATI HD3870X2<br>009 ATI HD4850<br>010 NVIDIA 9800GTX+=NVIDIA GTX250<br>011 NVIDIA 8800Ultra<br>012 NVIDIA 8800GTX<br>013 NVIDIA 9800GTX<br>014 ATI HD4830<br>015 NVIDIA 8800GT=NVIDIA 9800GT <br>016 NVIDIA 8800GTS<br>017 NVIDIA 8800GS 768M=NVIDIA 9600GSO 768M<br>018 NVIDIA 9600GT 512<br>019 NVIDIA 7950GX2<br>020 ATI HD2900XT<br>021 ATI HD3870<br>022 NVIDIA 8800GS 384M=NVIDIA 9600gso 384M<br>023 ATI X1950XTX <br>024 NVIDIA 7900GTX<br>025 ATI HD3850<br>026 ATI HD4670<br>027 9600GSO 512M<br>028 NVIDIA 9600GT 256<br>029 ATI X1900XTX<br>030 ATI X1950XT <br>031 NVIDIA 7950GT&nbsp;&nbsp;&nbsp;&nbsp; <br>032 ATI 1900XT<br>033 ATI HD3690<br>034 NVIDIA 8600GTS<br>035 NVIDIA 7900GT <br>036 ATI X1800XT <br>037 ATI X1950Pro<br>038 NVIDIA 7800GTX<br>039 NVIDIA 7900GS<br>040 ATI X1950GT <br>041 ATI X1900GT <br>042 ATI X1800XL <br>043 NVIDIA 7800GT <br>044 ATI X850XT/XTPE<br>045 ATI HD3670<br>046 ATI HD4650<br>047 NVIDIA 9500GT<br>048 NVIDIA 8600GT<br>049 ATI HD3650<br>050 ATI X1800GTO <br>051 ATI X800XT/XTPE<br>052 NVIDIA 7600GT&nbsp;&nbsp;&nbsp;&nbsp; <br>053 ATI HD2600XT<br>054 ATI X1650XT<br>055 NVIDIA 6800Ultra<br>056 NVIDIA 6800GT <br>057 NVIDIA 6800GS <br>058 ATI X800XL<br>059 ATI X850Pro <br>060 NVIDIA 6800<br>061 ATI X1650 Pro <br>062 ATI X800pro/GTO <br>063 ATI X1600XT <br>064 NVIDIA 7600GS<br>065 ATI X800SE<br>066 ATI X1300XT<br>067 NVIDIA 8500GT=NVIDIA 9400GT <br>068 ATI X1600Pro&nbsp;&nbsp; <br>069 NVIDIA 7300GT <br>070 NVIDIA 6800XT/LE <br>071 NVIDIA 6600GT <br>072 ATI X700Pro <br>073 ATI 9800XT <br>074 ATI 9800Pro <br>075 ATI 9700Pro <br>076 ATI 9800 <br>077 S3 Chrome S27 <br>078 ATI X700 <br>079 NVIDIA 5950Ultra <br>080 ATI 9700 <br>081 NVIDIA 5900Ultra <br>082 NVIDIA 5800Ultra <br>083 NVIDIA 5900<br>084 NVIDIA 5800 <br>085 ATI X1300Pro <br>086 NVIDIA 8400GS<br>087 ATI HD2400Pro<br>088 NVIDIA 7300GS <br>089 NVIDIA 6600 <br>090 NVIDIA 5900XT <br>091 ATI X1300 <br>092 ATI X600XT <br>093 NVIDIA 7300LE<br>094 NVIDIA TI4800 <br>095 NVIDIA TI4600 <br>096 ATI 9600XT <br>097 NVIDIA TI4800SE <br>098 NVIDIA 5700Ultra <br>099 ATI 9500 256bit <br>100 9800SE 128bit <br>101 ATI X600 <br>102 ATI X550<br>103 ATI 9600Pro <br>104 NVIDIA TI4400 <br>105 ATI 9500Pro<br>106 NVIDIA 6600LE <br>107 ATI X1300SE <br>108 NVIDIA 5700 <br>109 ATI 9600 <br>110 NVIDIA 6200 <br>111 NVIDIA TI4200 <br>112 NVIDIA 5600<br>113 ATI 9550<br>114 NVIDIA 5600XT <br>115 ATI 9600SE <br>116 NVIDIA 5500 <br>117 NVIDIA 7100GS <br>118 ATI X300 <br>119 ATI 9550SE<br>120 NVIDIA 6200A<br>121 ATI 9200Pro <br>122 ATI 9000Pro <br>123 ATI 8500Pro <br>124 NVIDIA GeForce3 TI500 <br>125 ATI 8500 <br>126 ATI 8500LE <br>127 NVIDIA 5200Ultra <br>128 ATI 9200 <br>129 ATI 9250 <br>130 NVIDIA GeForce4 MX460 <br>131 NVIDIA 5200 <br>132 ATI 9000 <br>133 ATI 9200SE <br>134 NVIDIA GeForce3 TI200 <br>135 NVIDIA GeForce3 <br>136 NVIDIA GeForce4 MX 440 <br>137 ATI 7500 <br>138 ATI 7200 <br>139 NVIDIA GeForce2 Ultra <br>140 ATI 7000 <br>141 NVIDIA GeForce2 GTS <br>142 NVIDIA GeForce4 MX 420 <br>143 ATI Radeon <br>144 Voodoo5 5500 <br>145 NVIDIA GeForce2 MX 400 <br>146 NVIDIA GeForce256 <br>147 NVIDIA GeForce2 MX <br>148 Voodoo4 4500 <br>149 NVIDIA TNT2 <br>150 ATI Rage128 Pro <br>151 Voodoo3 <br>152 TNT <br>153 ATI Rage128 <br>154 NVIDIA Riva128 <br>155 ATI Rage3D Pro <br>156 Voodoo Banshee <br>157 Voodoo2 <br>158 NVIDIA Riva <br>159 ATI Rage3D <br>160 Voodoo</strong></font></p>
<img src ="http://www.cppblog.com/singohgod/aggbug/115566.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/singohgod/" target="_blank">大宝天天见</a> 2010-05-17 10:40 <a href="http://www.cppblog.com/singohgod/archive/2010/05/17/115566.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]如果你觉得svn慢，不妨试试git吧</title><link>http://www.cppblog.com/singohgod/archive/2010/04/23/113350.html</link><dc:creator>大宝天天见</dc:creator><author>大宝天天见</author><pubDate>Fri, 23 Apr 2010 09:23:00 GMT</pubDate><guid>http://www.cppblog.com/singohgod/archive/2010/04/23/113350.html</guid><wfw:comment>http://www.cppblog.com/singohgod/comments/113350.html</wfw:comment><comments>http://www.cppblog.com/singohgod/archive/2010/04/23/113350.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/singohgod/comments/commentRss/113350.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/singohgod/services/trackbacks/113350.html</trackback:ping><description><![CDATA[好处就是分布式，版本库在本地，速度快，很适合开源项目使用，也很适合喜欢做点小改动就提交的人，如果是自己的小项目就更适合了<br>而且还可以使用git-svn，两个一起用~
<img src ="http://www.cppblog.com/singohgod/aggbug/113350.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/singohgod/" target="_blank">大宝天天见</a> 2010-04-23 17:23 <a href="http://www.cppblog.com/singohgod/archive/2010/04/23/113350.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]推荐轻量级的很易部署和使用的项目管理和bug跟踪工具Redmine</title><link>http://www.cppblog.com/singohgod/archive/2010/04/23/113348.html</link><dc:creator>大宝天天见</dc:creator><author>大宝天天见</author><pubDate>Fri, 23 Apr 2010 09:18:00 GMT</pubDate><guid>http://www.cppblog.com/singohgod/archive/2010/04/23/113348.html</guid><wfw:comment>http://www.cppblog.com/singohgod/comments/113348.html</wfw:comment><comments>http://www.cppblog.com/singohgod/archive/2010/04/23/113348.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/singohgod/comments/commentRss/113348.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/singohgod/services/trackbacks/113348.html</trackback:ping><description><![CDATA[下载几个程序，安装，简单的配置一下，就可以部署，用起来也非常渐变，麻雀虽小五脏俱全，公司近来尝试使用，效果还不错，比部署庞大的project server好多了。
<img src ="http://www.cppblog.com/singohgod/aggbug/113348.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/singohgod/" target="_blank">大宝天天见</a> 2010-04-23 17:18 <a href="http://www.cppblog.com/singohgod/archive/2010/04/23/113348.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]程序员每天每周每月每年该做的事</title><link>http://www.cppblog.com/singohgod/archive/2007/05/18/24322.html</link><dc:creator>大宝天天见</dc:creator><author>大宝天天见</author><pubDate>Fri, 18 May 2007 03:03:00 GMT</pubDate><guid>http://www.cppblog.com/singohgod/archive/2007/05/18/24322.html</guid><wfw:comment>http://www.cppblog.com/singohgod/comments/24322.html</wfw:comment><comments>http://www.cppblog.com/singohgod/archive/2007/05/18/24322.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/singohgod/comments/commentRss/24322.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/singohgod/services/trackbacks/24322.html</trackback:ping><description><![CDATA[<p>看了觉得非常不错，所以我决定在我即将买了PPC之后列上详细的日月年计划，照章执行！！！<br><br></p>
<p><span style="COLOR: #0000ff">　　<strong><font size=4>程序员每天该做的事</font></strong></span></p>
<p><br><span style="COLOR: red">　　1、总结自己一天任务的完成情况</span><br>　　最好的方式是写工作日志，把自己今天完成了什么事情，遇见了什么问题都记录下来，日后翻看好处多多。</p>
<p><span style="COLOR: #ff0000">　　2、考虑自己明天应该做的主要工作</span><br>　　把明天要做的事情列出来，并按照优先级排列，第二天应该把自己效率最高的时间分配给最重要的工作。</p>
<p><span style="COLOR: #ff0000">　　3、考虑自己一天工作中失误的地方，并想出避免下一次再犯的方法</span><br>　　出错不要紧，最重要的是不要重复犯相同的错误，那是愚蠢。</p>
<p><span style="COLOR: #ff0000">　　4、考虑自己一天工作完成的质量和效率能否还能提高</span><br>　　一天只提高1%，365天你的效率就能提高多少倍你知道吗？ (1+0.01)^365 = 37 倍。</p>
<p><span style="COLOR: #ff0000">　　5、看一个有用的新闻网站或读一张有用的报纸，了解业界动态</span><br>　　闭门造车是不行的，了解一下别人都在做什么，对自己能带来很多启示。</p>
<p><span style="COLOR: #ff0000">　　6、记住一位同事的名字及其特点</span><br>　　你认识公司的所有同事吗？你了解他们吗？</p>
<p><span style="COLOR: #ff0000">　　7、清理自己的代码<br></span>　　今天完成的代码，把中间的调试信息，测试代码清理掉，按照编码风格整理好，注释都写好了吗？</p>
<p><span style="COLOR: #ff0000">　　8、清理自己的桌面</span><br>　　当日事当日毕，保持清洁干劲的桌面才能让你工作时不分心，程序员特别要把电脑的桌面清理干净。</p>
<p>&nbsp;</p>
<p><span style="COLOR: #0000ff">　　<strong><font size=4>程序员每周该做的事</font></strong></span></p>
<p><br><span style="COLOR: #ff0000">　　1、向你的老板汇报一次工作</span><br>　　让你的老板知道你在做什么，这很重要。可以口头、书面、邮件，看你老板的工作方式而定。</p>
<p><span style="COLOR: #ff0000">　　2、进行一次自我总结（非正式）<br></span>　　这周之内自己表现得怎么样？该加分还是扣分？</p>
<p>　　3、制定下周计划<br>　　把下周要做的事情列出来，一样要分清楚优先级。</p>
<p><span style="COLOR: #ff0000">　　4、整理自己的文件夹、书柜和电脑文件</span><br>　　把桌面以外的地方也要清理干净，电脑的文件夹，收到的邮件，把过时的垃圾全部清理掉。</p>
<p><span style="COLOR: #ff0000">　　5、与一个非公司的朋友沟通</span><br>　　它山之石，可以攻玉。</p>
<p><span style="COLOR: #ff0000">　　6、看一本杂志</span><br>　　找一本适合自己的专业杂志。</p>
<p><span style="COLOR: #ff0000">　　7、纠正自己或同事一个细节上的不正确做法</span><br>　　《细节决定成败》看过了吗？没看过强烈建议先看看。</p>
<p>&nbsp;</p>
<p><span style="COLOR: #0000ff">　　<strong><font size=4>程序员每月该做的事</font></strong></span></p>
<p><br><span style="COLOR: #ff0000">　　1、至少和一个同事一起吃饭或喝茶</span><br>　　不光了解自己工作伙伴的工作，还要了解他们的生活。</p>
<p><span style="COLOR: #ff0000">　　2、自我考核一次</span><br>　　相对正式地考核自己一下，你对得起这个月的工资吗？</p>
<p><span style="COLOR: #ff0000">　　3、对你的同事考核一次</span><br>　　你的同事表现怎么样？哪些人值得学习，哪些人需要帮助？ </p>
<p><span style="COLOR: #ff0000">　　4、制定下月的计划，确定下月的工作重点</span></p>
<p><span style="COLOR: #ff0000">　　5、总结自己工作质量改进状况</span><br>　　自己的质量提高了多少？ </p>
<p><span style="COLOR: #ff0000">　　6、有针对性地对一项工作指标做深入地分析并得出改进的方案</span><br>　　可以是对自己的，也可以是对公司的，一定要深入地分析后拿出自己的观点来。要想在老板面前说得上话，做的成事，工作上功夫要做足。</p>
<p><span style="COLOR: #ff0000">　　7、与老板沟通一次</span><br>　　最好是面对面地沟通，好好表现一下自己，虚心听取老板的意见，更重要的是要了解老板当前关心的重点。</p>
<p>&nbsp;</p>
<p><span style="COLOR: #0000ff">　　<strong><font size=4>程序员每年该做的事</font></strong></span></p>
<p><br><span style="COLOR: #ff0000">　　1、年终总结</span><br>　　每个公司都会做的事情，但你真正认真地总结过自己吗？</p>
<p><span style="COLOR: #ff0000">　　2、兑现给自己、给家人的承诺</span><br>　　给老婆、儿子的新年礼物买了没有？给自己的呢？</p>
<p><span style="COLOR: #ff0000">　　3、下年度工作规划</span><br>　　好好想想自己明年的发展目标，争取升职/加薪、跳槽还是自己出来干？</p>
<p><span style="COLOR: #ff0000">　　4、掌握一项新技术</span><br>　　至少是一项，作为程序员一年要是一项新技术都学不到手，那就一定会被淘汰。掌握可不是看本书就行的，要真正懂得应用，最好你能够写一篇教程发表到你的blog 。</p>
<p><span style="COLOR: #ff0000">　　5、推出一种新产品</span><br>　　可以是一个真正的产品，也可以只是一个类库，只要是你创造的东西就行，让别人使用它，也为世界作点贡献。当然如果真的很有价值，收点注册费也是应该的。</p>
<p><span style="COLOR: #ff0000">　　6、与父母团聚一次</span><br>　　常回家看看，常回家看看。</p>
<img src ="http://www.cppblog.com/singohgod/aggbug/24322.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/singohgod/" target="_blank">大宝天天见</a> 2007-05-18 11:03 <a href="http://www.cppblog.com/singohgod/archive/2007/05/18/24322.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]一个程序员的奋斗</title><link>http://www.cppblog.com/singohgod/archive/2006/07/16/10138.html</link><dc:creator>大宝天天见</dc:creator><author>大宝天天见</author><pubDate>Sun, 16 Jul 2006 13:37:00 GMT</pubDate><guid>http://www.cppblog.com/singohgod/archive/2006/07/16/10138.html</guid><wfw:comment>http://www.cppblog.com/singohgod/comments/10138.html</wfw:comment><comments>http://www.cppblog.com/singohgod/archive/2006/07/16/10138.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/singohgod/comments/commentRss/10138.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/singohgod/services/trackbacks/10138.html</trackback:ping><description><![CDATA[
		<p>
				<font style="BACKGROUND-COLOR: #ffffff" color="#ff3300">这是我收藏的一篇文章，每每在遇到挫折的时候就拿出来读一读，总是能给我动力！</font>
				<br />
				<br />这些日子我一直在写一个实时操作系统内核，已有小成了，等写完我会全部公开，希望能够为国内IT的发展尽自己一份微薄的力量。最近看到很多学生朋友和我当年一样没有方向 ，所以把我的经历写出来与大家共勉，希望能给刚如行的朋友们一点点帮助。 一转眼我在IT行业学习工作已经七年多了，这期间我做过网页，写过MIS、数据库，应用程序，做过通信软件、硬件驱动、协议栈，到现在做操作系统内核和IC相关开发，这中间走了很多弯路，也吃了不少苦。 </p>
		<p>我上的是一个三流的高校，就连同一个城市的人多数都不知道。因为学校不好也就没 有指望能靠学校名气找一个好工作。所有的希望都寄托在自己的努力上了，大一开学前的假期我就开始了学习，记得我买的第一本书是《计算机基础DOS3.0》，大家别吓着了，其实当时已经普及了DOS6.22了，只是我在书店里看到了DOS4.0，5.0，6.0的书，以为像英语那样是第四、五、六册，记得当时到处找DOS1.0，现在想想也幸好我没有找到：）开学前我学完了PASCAL，那时既没有计算机也没有人可以请教，我连程序是什么的概念都没有， 只好死记硬背代码，然后拿纸写，我一直到大三才有了一台486，在这之前用纸写了多少程序我也记不清楚了，只知道最长的一个我拿A4大小的草稿纸写了30多页，我的C语言、C++ 、VC都是在这样的条件下入门的。所以说条件是可以克服的，希望我的经历多少给条件艰苦的同学们一点信心。第一次上机是在我姐夫的机房，我的心情激动的无与伦比，但是一上机我立刻傻了眼，他们用的是英文版的Win3.1，我的那点DOS知识都见了鬼，上机提心吊胆的一阵瞎摸，一不小心把Word弄成了全屏，怎么都还不了原，当时真是心急如焚，我以为机器被我弄坏了。第一个C语言程序，就是那个经典的HelloWorld，我调了几个星期，上机机会非常少，也没有书告诉我开发环境（TC2.0）需要设置，而且开始我都不知道有编译器，我甚至自作聪明把写好的程序扩展名从.c改成.exe，结果可想 <br />而知。大一学完了C、X86的汇编、数据结构、C++。由于精力都花在自学上了，大一下四门课挂了彩，三类学校就是这点好，挂上一二十门也照样毕业。不过扯远点说，我那么刻苦都及不了格，可见我们国家的计算机教育有多死板。 </p>
		<p>大二准备学VC和BC，当时难以取舍，后来选了VC，不为别的，只为书店里两本书，VC 那本便宜6块钱。我的努力在班上无人能及，学的日夜不分，大三有了计算机后更是如此， 很多次父亲半夜教训我说我不要命了，我一直觉得自己基础差，记忆又不行，条件也不好 ，所以觉得只有多花点时间才能赶上别人。居然后来有许多朋友说我有学计算机的天赋， 让我哭笑不得。我用的是486，16M内存，1G硬盘，当时同学们的配置都是P166MMX，我安装 一个Windows NT4.0需要一个通宵，编译一个BC5.0向导生成的程序需要近两个小时，我的显示器是个二手的，辐射非常大，开机屏幕冒火花，看起来很酷的：），有一次程序写的太久，觉得怎么白色的编辑器背景变成了紫色，以为显示器坏了，后来才发现眼睛不行了，不过说来也奇怪，到今天我的视力还能保持1.5，真是个奇迹。但是就是那台破机器陪伴了我两年，让我学会了VC、Delphi、SQLServer等。后来那台机器给我阿姨打字用，据她说一天她正打的开心，一股青烟夹着火苗从显示器钻出来，之后它才寿终正寝。 </p>
		<p>大三假期找了个机会在一个计算机研究所实习，与其说实习不如说是做义工，工作了两个月一分钱没有拿。但是这两个月对我的发展帮助很大，让我早一步了解了社会，刚去的时候我当然是一窍不通，在那里我熟悉了网络，学会了Delphi和Oracle。由于工作很认真， 得到了比较好的评价，在一位长者的引荐下，我开始和他们一起做项目，这使我在大三大四就有了自己的收入，大四又找了两家MIS公司兼职，虽然钱不多，但是在学生期间有1000多的收入我已经非常满足了，我终于用自己赚的钱把计算机换了。大四下开始找工作，这时我的工作经验已经比较多（当然现在想想非常幼稚），开始听父母的想去那个研究所， 实习过那个部门也希望我能去，但是不知道为什么最后不了了之，这种单位就是比较官僚 ，我一气之下就到了我兼职的一个公司做MIS的TeamLeader。在大三到毕业一年的时间，做过了各种MIS，从煤气、烟厂、公安、铁路、饮食到高校，什么有钱做什么，工作也很辛苦 ，经常加班和熬通宵，从跟客户谈需求到设计、编码、测试、交付都要上。那时觉得很有成就感，觉得自己还不错，现在想想真是很肤浅。 </p>
		<p>刚走上工作岗位的学生很容易被误导，各种开发工具让人眼花缭乱，同时也觉得很受 公司器重，但这样工作永远是一个低层次的开发者。不要跟我说什么系统分析有多么多么重要，多么多么难。你以为自己跟用户谈需求做设计就是系统分析和设计了吗，国内又有几个公司能够做的很到位很规范？我是ISO9000内审员，也在Rational公司受过多次培训，拿了4个证书，还有一个公司让我去做CMM。这些我听过很多，但是很多事情到国内就变了性质，一个公司不是通过了ISO9000或者CMM就能规范了，我现在在一家有几十年历史的外企工作，里面的管理不是一般国内企业能及的。作为一个毕业不久以前没有步入过社会的学生，几乎不可能在很短的时间掌握系统分析和设计，面向对象、UML只是一个工具，关键是人本身的思想，不是说你熟悉了C++、Rose就能够做出好的设计，相反如果你具备了很高的素质，你可以用C写出比别人用C++更加模块化的程序。 </p>
		<p>话说远一些，国内软件开发行业有一个怪圈，很多人觉得VC &gt; Delphi &gt; VB，真是很搞笑。这几个软件我都做过开发，说白了他们都是工具，应该根据应用的需要选择采用哪个，而不是觉得哪个上层次。如果你因为用某个开发工具很有面子而选择的话，只能说明你很浅薄。如果说层次，那么这些工具都不上层次，因为它们用来用去都是一些系统的API，微软的朋友不会因为你记住他们多少个API或者多少个类就会觉得你很了不起，你永远只是他们的客户，他们看重的是你口袋里的银子。我也做过系统内核，我也封装过很多API，同样我也不会看重那些使用这些API做二次开发的客户，除非他能够作出自己独到的设计。</p>
		<p>至于有人认为C++ &gt; C那更是让人笑掉大牙，不妨你去打听一下，现在有几个操作系统内核是用C++写的，又有几个实时系统用的是C++，当然我也不是说C++不好，但是目前的内核和实时系统中C++还无法与C匹敌，至于说C++适合做应用系统的开发那是另外一回事。所以我的观点是不在于你用什么工具和语言，而在于你干什么工作。你的设计体现了你的技术层次。 </p>
		<p>这样干了一年我觉得非常苦闷，做的大多数都是熟练工种的活，个人技术上没有太多 的提高也看不到方向。所以决定离开这个城市去上海，寻求更好的发展，并且打算放弃我以前的MIS转到通信行业。 </p>
		<p>写到这里不能不提到我女朋友，我们是在来上海前半年认识的，她大四在我公司实习，公司派她给我写文档，我们的感情发展的很快。她告诉我很多事情，她家原本是改革开放的第一批暴发户，她母亲爱打牌，输掉了几百万，还欠了很多债，她有男朋友，但是她对他没有感情，只因为他给了她母亲两万多块钱，后来还强迫她写了四万块的借条，她男朋友背叛过她并且不止一次打她，现在逼她结婚不然就要她还钱。这人居然还是一个高校的老师！她母亲把父亲给她的学费花了，因为拖欠学费她没有办法拿到毕业证。她母亲现在有病需要钱，我拿出了自己的一点积蓄并且跟朋友们接了一些，替她交了学费并给她母亲看 病（后来才知道看病的钱又不知所终，就连她母亲是不是有病我都不知道，但她也是没有办法）。这个时候我家知道了一些事情，坚决反对我和她在一起，她原来的男朋友也极力破坏。无奈之下我们决定早一定离开这个伤心的城市，并且瞒着我们家。由于时间仓促，我只准备了4000块钱，她仅有的几百块钱也被她母亲要去了，我买了三张票，一张是中午的，两张是晚上的，中午我的家人把我送上船，他们一离开我就下了船，我和她乘坐晚上的船离开了这个我和她生活了很多年的城市，带走的只是一身债务。没有来过上海的我们两个性倔强，都不愿意去麻烦同学和朋友。来到上海是傍晚6点半，我们都不知道该去哪里，我们找了一个20块钱的旅馆，这个房间连窗户都没有，7月份的天气酷热难耐，房间里非常闷热。第二天我们开始租房子，因为身上的钱不多，我们基本都是步行，花了一个星期时间，不知道在浦东转了多少圈后找到了一个400块的房子，但是我们都不了解上海是付三压一，还要付半个月的中介费，买了一些锅碗瓢盆后，我们身上只有800块钱了，工作都还没有着落，这800块钱要支持到我们拿到第一个月工资，为了省钱我们 <br />自己做饭，每天买菜只花两块钱，她非常喜欢吃（也可能她在大学经常挨饿的愿意），看到她现在这样省吃俭用我真的很不忍心。她以前的男朋友也没有放过她，经常打电话来骚扰，并且来上海看她，还说了不少恐吓她的话，她过于善良，说他以前毕竟帮助过她，叫我不要与他一般见识。以后的每天在家就是苦等面试通知，原本我想迅速找一家MIS公司解决眼前的困难，但是她坚持让我不要放弃自己的理想，终于功夫不负有心人，我找到了一家通信公司，4000块的工资虽然赶不上MIS公司给我开出的价位，但也够在上海生存。她也找到了工作，第一天上班她哭了，这是她来上海第一次流泪，我心里很难受也很感动。</p>
		<p>由于是全新的行业，我把自己降到了零点，我学的VC、Delphi、数据库派不上用场， 摆在我面前的是嵌入式、协议、信令一些我从未接触过的知识。我知道我没有退路，于是拼命的学习，我把自己当做一个应届毕业生一样，一分努力一分收获，半年过去我终于熟悉了工作，并且得到了公司的表彰，薪水也加了一级。后面的日子里我们省吃俭用，把欠朋友的1万多块钱还了，日子终于上了正轨。这时女朋友告诉我她想考研究生，我也很支持，于是她辞职在家备考。 </p>
		<p>另外，在这里我要感谢我的ProjectManager，他原来是一个大通信公司的产品经理， 对人非常和善，我从他那里学到了很多知识，而且他也给了我许许多多无私的帮助。在工作上他给我充分的空间和信任。记得公司安排我维护一个接入服务器软件，由于代码量不算太小（5万行），资料和文档都不齐全，我维护起来非常吃力，所以想重新把它做一遍， 公司领导不太支持，可能觉得工作量太大，但是他极力支持我，私下里他让我放手去做， 我的维护工作他挤时间做。在他的支持下，我花了半年时间完成了接入服务器的软件，并且实现了一个相对完整的TCP/IP协议栈。在这里我学会了嵌入式系统设计、驱动开发、TCP/IP和很多通信的知识，我花了一年时间终于使自己从MIS开发转到了通信行业，并且站稳了脚跟。我的开发大量是对硬件的直接操作，不再受微软的操作系统，VC、Delhpi这些开发工具的约束，我终于看到了另外一片天空。 </p>
		<p>我做事情喜欢追根问底，随着开发的深入，软件开发与硬件联系越来越紧密，硬件知 识的匮乏又对我的发展产生了障碍，而且芯片技术基本上掌握在国外公司的手里，这对做系统级设计是一个非常大的制约，一个新产品出来，第一道利润（也往往是最丰厚的利润）常常都被IC公司如Intel、Motorola赚去了，国内的厂商只能喝点汤。所以我决心解决自己的硬件技术障碍，并打算离开通信行业，进入IC设计相关领域。 </p>
		<p>当然我明白如果我对硬件了解的非常少，没有哪家IC公司会仁慈到招我这样一个一窍不通的人来培训。所以我必须努力打好基础，学一些相关知识为以后做准备。就像我开始从MIS转到通信一样，我看过大量通信方面的书，并且给一个ISP做过RADIUS计费分拣台，在这样的背景下这家通信公司才给了我这个机会。我在的通信公司是做系统设计的，有不少PCB Layout硬件人员，平常我就注意向他们学习，由于我做的是软件，在公司看硬件资料不好意思，所以开始只好在家看，刚来上海工作我连续一年都在加班，后来不加了，因为我要挤出时间学习，通常我12点左右睡，第二天5点半起，我上班比较早，地铁上如果人不多我也用来看书。学习当然不会是一帆风顺的，有些实在不懂的问题就积累起来问硬件人员，他们的帮助使我学习进度快了很多，因为在没有人点拨的情况下自学，我的一半时间是花在解决疑难问题上，但这种问题经常是别人的一句话就可以让我豁然开朗，我非常庆幸我有这样的学习环境。在后面的一年里，我学会了看硬件原理图，学会了简单的硬件设计（模拟电路方面还有不小的差距），事情就是这样的，当你安安份份做软件，别人永远认为你是软件开发人员，在你开始学习硬件时别人未必会认同，有位中兴通讯的朋友还对我说过，一个人不可能把所有东西都学完。我也明白这一点，但我希望自己做的更好。但当你熟悉硬件后大家又会觉得你好像原本就是软硬件都懂的，同事们也都习以为常了。这个时候我可以把硬件资料堂堂正正的拿到公司看，没有人再大惊小怪了。 让我比较自豪的是我通过自己的努力做了一个IAD（软交换的终端设备）系统方案，包含软硬件的选型、设计等内容，这个方案得到了公司和同事们的认同，让我感到非常欣慰。 </p>
		<p>技术是相辅相成的，当我的硬件有了一定的进步后，我的软件设计也有了很大的提高 ，我可以从更深层次理解问题，我做的接入服务器CPU是Motorola PowerPC860，熟悉的朋友都知道860 QMC与软件的批量数据传输通常采用BD表的方式，硬件人员做驱动的时候习惯采用固定BD表，每接收或发送数据都将数据从BD表拷贝到用户Buffer，或从用户Buffer拷贝到BD表，由于理解的比较深入，我自己重新实现了这个过程，采用动态BD表的方式，驱动从一个网口接收数据，提交给我的软件进行三层交换，直至从另外的接口发送出去，没有进行一次拷贝。这样的设计大大提高了性能，使系统的指标接近理论值。软硬件的结合使我的设计水平上了一个台阶。我现在写的这个操作系统，编译后我把程序反编译成汇编，找出其中不优化的代码，然后在C程序中进行调整。举个例子，很多CPU没有专门的乘法指令，这个大家应该都知道，在这种CPU上进行一个乘法操作常常会花费大量的指令周期， 有的朋友会说这个我知道，我会尽量避免采用×号，但是事情往往不是那么简单，你知道 <br />C语言中数组的下标操作是怎么实现的吗？仔细看看反汇编的代码你就会明白，同样是通过下标的定位操作，C编译器会有时候会产生位移指令，但有时候会用乘法实现，两者效率往往是天壤之别，所以明白这些问题你才能将系统性能提升到极致。? <br />些问题就不多说了，有兴趣的话以后可以共同探讨。 </p>
		<p>话说远一点，我由衷的希望在软件上做的比较深入的朋友们有机会学学硬件以及其它 相关知识，尤其是做底层开发和嵌入式设计的。这对软件技术的提高有非常大的帮助，否则很多事情你只知道该这样但不会明白为什么该这样。我这个观点在我现在的IC公司Project Manager那里也得到了验证。他告诉我们公司现在的802.11芯片产品的软件经理原本是做该芯片硬件设计的，某某某原本是做软件的，现在在做IC，类似的例子还有很多，只是在国内这样的风气不是非常流行。 </p>
		<p>我有一些心得体会与大家分享，只有当我干好本职工作后，我才会学习与工作关系不 大的技术，这样公司的上司才不至于反感，在入门阶段的问题我通常不去问那些资深人士 ，而是问一些资历比较浅的朋友，比如刚毕业不久的学生，因为他们往往会跟你详细的讲解，而资深人士通常觉得你的问题太简单，所以回答的也很简单，我又不好意思多问。等技术上了一定的层次后我才会问他们，他们也能给你比较深入的回答。另外，有些朋友说我机会比较好，他们也希望能从事新的工作可惜没有机会，我听了只有苦笑，我的机会了解的人都应该知道，我没有出生在什么IT世家：）也没有谁一路提拔我，所有的路都是自己走出来的，我母亲去世比较早，我的后母（我叫她阿姨）看着我努力过来的，一次她看我大年30还在写程序，她说像我这样努力木头都能学出来。 </p>
		<p>我的最终目的是IC而不是PCB，所以我下一步的准备开始学习IC设计的知识。公司的同事没有懂IC设计的，后面的路又要靠自己了，我买了不少相关的书，在网上也查了很多的资料，我花了大量的时间去学习VHDL，并且用软件进行了一些简单的设计和仿真（没有设计ASIC，只是针对FPGA），随着学习的深入，我渐渐明白了IC设计的基本流程，同时也明白了这条路的艰辛。这个时候我已经做好了跳槽的准备，我向一家业界又一定知名度的IC设计公司投了简历，并通过了漫长的面试（4个多小时）。其他的一切我都比较满意，唯独薪资差强人意，我也明白原因，因为我是这个行业的新人，我没有经验，我再一次将自己清零了。公司老板问我6000多一个月能不能接受，我知道他也是照章办事。想想我通信行业的朋友们，基本上都是年薪10万以上，月薪过万的也比比皆是，朋友们也帮我介绍了不少待遇不错的公司，我该怎么选择，当时我很犹豫，我热爱我的事业，我向往我的追求， 但我也是一个普通的人，我也需要养家糊口，我也想早一点买房买车。生活给我出了一道难题。 </p>
		<p>爱因斯坦在63岁时说过“一个人没有在30岁以前达成科学上的最大成就，那他永远都不会有。”这句话给了我很大的压力和震动，我马上就26岁了，离30只有四年时间，我必须抓紧这几年宝贵的时间，努力达到我技术上的最高峰。为了这个理想，为了能离自己的梦更近一些，我选择了这家IC公司，我明白自己的薪资和公司刚进来的硕士研究生相差无几， 但为了今后的发展只能忍受，一切又得重新开始。换行业是一个非常痛苦的过程，尤其从一个春风得意的位置换到一个陌生的岗位，感觉象从温暖的被子里钻出来跳进冰水中，让人难以接受。在原来那家通信公司，我是唯一两年时间涨了五次工资的员工，公司和同事都给了我极大的认可，工作上也常常被委以重任。但现在这一切都成了过去，在新的公司我只是一个新人,没有人知道也没有人在意我过去的成绩。我决定重新开始，我把自己看作新毕业的学生，我要用自己的努力得到公司的认可。进入新的行业是非常痛苦的，我告诉自己必须忍受这一切，虽然外面有很多诱惑，但是既然作出了选择我就不允许自己轻易放弃。 </p>
		<p>我现在已经在这家新公司上了一个多月的班，开始非常艰难，现在慢慢适应了。第一 个月结束时，Team Leader找我谈话，说我是新进员工中最优秀的一个，我心里很欣慰，这也算对我努力的一个肯定吧。在这里还要感谢我的女朋友，她给了我很大的支持和鼓舞， 每次在我动摇的时候她都在鼓励我，让我坚持自己的理想，刚来上海是她让我不要勉强去做MIS，这次也是她让我顶住了月薪过万的诱惑，没有她我可能不会有今天的成绩。 现在的公司有自己的操作系统，自己的CPU、DSP和其它芯片，在这里我能学到世界上最先进的技术，我们的设计开发不再完全依赖别人的硬件和系统，这让我很开心。我打算等工作步入正轨后，全力学习新的知识，实现我的理想。 <br />在后面的两年里我给自己定下了几个目标： <br />一.努力做好本职工作，在工作上得到公司和同事们的认同； <br />二.努力学习IC硬件设计知识，多向同事请教，并利用一切机会多实践； <br />三.实现我的实时操作系统的主要部分，完成TCP/IP协议栈模块，并免费发布源代码； <br />四.和我女朋友结婚并买一套小房子，这是最重要的，因为我明白事业是可以重来的，但是珍贵的感情很难失而复得。 </p>
		<p>在这里提一下我现在开发的操作系统，它是一个实时嵌入式系统，目前支持以下特性： </p>
		<p>a.支持时间片轮转调度和基于优先级调度，最多64个优先级； <br />b.抢占式实时内核； <br />c.为了便于移植，主体用标准C实现； <br />d.汇编代码非常少，不到100行； <br />e.支持任务管理，各任务有独立的堆栈； <br />f.进程同步和通信目前完成了Semaphore，Message Queue正在调试； <br />g.实现了定时系统调用； <br />h.可以在windows上仿真调试 <br />我还打算下一步实现优先级反转保护，Event Flag，Data Pipe，内存管理（以前实现过）、驱动接口等。 在这之后我还会努力完善它，比如加入文件系统，协议栈、调试接口等。希望朋友们提出自己的意见和建议，在此不胜感激！ </p>
		<p>后记： </p>
		<p>就像有的朋友说的，我的经历或许会给一些朋友产生误导，在这里我必须说明一下。 我来上海以前学习过于拼命，常常晚上只睡3个多小时，我身高1米71，那时只有108斤（我现在130多），家人也说我这样拼命活不过60岁，但是当时的我太固执，我对他们说只要能实现理想活50岁我就够了。那时的拼命使我的身体受到了影响，有一次早上突然腰肌剧痛难忍，痛的我倒在床上站不起来。虽然我现在已经比较注意，但有时候还会隐隐作痛。后来在女朋友说服了我，来上海以后我不再如此。我经常引用父亲的一句话“身体是革命的本钱”。 </p>
		<p>而且我也发现拼命不是办法，我可以熬一两个通宵，最多的一次我连续工作了三天三夜， 但是我半个月都没有恢复过来，这样是不是得不偿失？学习工作应该是一个长期的过程， 像马拉松而不是百米冲刺。我现在非常注意调整学习和工作的强度，我要保证每天尽量有相对充沛的精力，一些年轻的朋友觉得自己也应该拼命努力，这让我多少有些担心，如果我的故事能让你在学习工作上多一点兴趣，我会感到很开心，但如果误导了某些朋友，让你做一些不值得的付出，我会感到很内疚。 </p>
		<p>技术没有贵贱只分，我以前换行业是因为自己的兴趣所致，而不是对哪个行业有什么 偏见。我希望我的经历不要给朋友一个错误的导向，觉得我始终向更高的技术发展。其实各行各业做到顶尖都是很困难的。话又说回来虽然技术没有贵贱，但是门槛是有高低的， 无论如何，做IC的门槛要比做网页的高，这一点无可否认。国家各种人才都是需要的，但是作为个人奋发向上的想法还是应该有的，努力在自己喜欢的行业上做的更好，而不应该停留在比较肤浅的层次上。 </p>
		<p>我是一个自己觉得比较有自知之明的人，或许我最大的优点就是知道自己有很多缺点 ：）。我的故事中很多的曲折和错误都是由我的缺点造成的，希望大家用审慎的眼光看待我的经历，不要被我的“花言巧语”所迷惑。我学习有些随心所欲，这给我带来了无尽的麻烦，也大大阻碍的我的发展。记得我小时候成绩比较出色，但是后来学习严重偏科，导致我中学成绩一再滑坡，也没有考上什么好的学校，小时候的一个朋友，当时的成绩和我相仿，但是没有我这个缺点，她上了清华，后来在去了美国深造，在一个著名导师手下研究理论科学，这未尝不是一条更好的出路。另外我的学习方法也是在不断改善中的，过去 的学习过于讲究数量和时间，那样学习既苦而已效率不高，现在我非常注意学习的效率和技巧，这样才是学习的捷径（当然不是指投机取巧），比如说学一相对陌生的技术，如果有条件，不妨问一问有经验的人，不需要问很多，往往他不经意的几句话会给你非常大的帮助，甚至超过你看一个星期的书。带着这样的思想再去学习你会节省很多时间，这样何乐不为呢？这些年中我学了不少的东西，由于开始非常盲目，所以学的东西杂乱无章，现在回想起来让我啼笑皆非，我把大量的时间浪费在一些没有必要深入了解的知识上，毕竟一个人的精力是有限度的。很多朋友很我一样都背过五笔字形，的确它是个不错的输入法，但是对一个研发人员它绝对不值得你去背，你的时间应该花在有价值的地方。我这样的事情还做过很多，我背过CCED、WPS的命令和快捷键，在dBase基本退出历史舞台后我还花了很多时间去学习它的使用。所以我的学习在前期缺乏规划，没有明确的短期目的、中期目标，只有一个虚无飘渺的长期的理想。这就像做设计一样，好的设计是从需求抽象到代码有很多过程，而不能得到了需求就立刻开始开始编码。 </p>
		<p>当然这么些年的学习和工作多多少少有些收获，下面我说说我的一些学习的心得，这 些方法未必正确，我也在不断探索和改进中。我的学习和工作有相对明确的目标，我不会一时心动而去学习某一技术，在下决定之前我会考虑很多，包括长期的发展，个人路线的规划，需要付出的代价、可能遇到的困难及解决的办法等等，在决定后还会制定更加明确的计划，包括短期、中期和长期的，身边可以利用到的资源（包括好的书籍、资料、软硬件环境，也包括有经验的朋友或者师长），以及每一个阶段是怎么过渡到高一阶段的计划，往往在一个学习阶段一旦上路后会走的相对顺利，但是跨阶段通常比较麻烦，比如从学习基础知识转到实践。另外我买书也有自己的方法，现在世面上高质量的书远不如低质量书多，对于一个陌生的技术，往往在第一次买书会选择错误，即使买到一本好书但是它的方向也未必适合你，所以我通常会先在网上查找一些该技术的介绍，有了一点点概念后再去买一本比较薄、相对便宜并且内容相对泛泛而谈的书，这是国内作者最善于写的书：） ，再把它浏览一遍后我就会基本明白这门技术的要点，后面买书和制定计划就会明确的多。否则一开始就想找本好书往往比较困难，而且买回来后努力学习，有时候学了一半才发现是本低质量的书或者是相对过时技术，让人非常懊恼。另外让有经验的人帮你介绍，通常也是一个不错的选择。 </p>
		<p>有些朋友想学通信、嵌入式开发，但总觉得自己没有软硬件环境，我就按我的了解给 大家介绍一下怎么建立这样的环境，当然我了解的只是我学习和工作的方向。通信我做的是数据网方面的工作，包括TCP/IP、二三层交换、对接入网、H.323和软交换也有一点认识。这些软硬件环境都是可以在PC上构建的。你甚至可以在一个没有网卡的PC上建立一个包含多个路由器、接入服务器、VoIP网关、网守、主机等的仿真网络环境，而且与实际的网络相当接近，当然这需要你有清晰的网络概念和一定的网络知识，我一直在努力开发一套软件将这个过程简化，目前试验已经做完，我可能会将它融入我的操作系统外围扩展软件中。这样的方法我无法用简单的语句讲的很清楚，我可以说一下大概的思想，就是在PC上实现仿真网卡，（知道Windows怎么在没有网卡的机器实现虚拟网卡技术的朋友都应该会明白），然后每一个仿真网卡对应一个虚拟设备，如路由器或者主机。你也可以借助第三方工具完成部分工作，如VmWare等。我现在就是利用一个仿真网卡做自己的开发的。 </p>
		<p>至于嵌入式开发环境更加容易实现，PC就是一个非常大的硬件平台，现有的嵌入式操 作系统通常都支持X86，你可以在上面做开发，通过软盘Boot或者使用虚拟机装载，我用VxWorks做了试验，在一台PC上跑Windows和VxWorks两个系统。另外Windows上的兼容DOS的16位仿真X86环境也为很多操作系统提供了绝佳的试验环境，我的操作系统在Windows上就是这样实现的。Linux在嵌入式中应用也比较广泛，它在网上有大量的资料，而且也相对比较容易实践。同时很多完善的嵌入式开发环境支持软件仿真，如Tornado、WinCE等。 </p>
		<p> </p>
		<p> </p>
		<p> </p>
		<p> </p>
		<p>前段时间处理了很多事情，一直没有写下去，花光了所有的积蓄买了一套房子，同时把户口的事情也基本办完了，这几天稍微缓口气。昨天跟我的一个老上司见面聊了半天，心里感慨万千。他从外在条件看让不少外人羡慕，二十多岁做过到了863项目的负责人，博士毕业的爱人单位也非常好。现在三十出头的他在一个通信公司做产品经理，工资虽然不算高但也有一两万，而且还持有股份。但是我们了解的人才理解他的艰辛。“白领”这个词在一些人看来是仿佛是一个动人的光环，但是在我看来是一个无奈的名字，每天行走在大街上，来来往往的车流中有多少是“白领”的？又有几个“白领”住的起高档的住宅？在上海一套别墅300万不足为奇，按揭贷款下来总额接近600万，年薪二十万在上海算是一个中高级“白领”，高额的税金去掉了你百分之几十的收入后，这样算下来不吃不喝也要四十多年，加上生活的其他开支，注定了你与这样的住宅无缘。看着外面一套套别墅，一辆辆好车，我不知道它们是谁的，但我知道其中没有什么白领。我觉得自己很渺小，在这个喧闹的都市中我如同一只蚂蚁，但我有不甘于平凡，我不愿做一个单纯的“白领”。</p>
		<p>　　其实很多朋友并不了解我，我不是一个追逐时尚技术的人，我只是不愿意做一个所谓的“白领”，更加不愿意做一个单纯的“程序员”。我不甘愿平凡的生活一辈子。我在不断的努力，我的方向非常明确，我要做多数人不做和做不到的事情，很多朋友对我这样频繁的换方向不理解，觉得一个人只要熟悉一种技术就可以了，对于这样的看法我只能说你浅薄，现在的大的系统和产品往往都是软件、硬件和应用相结合的，我要做的不是哪个方面的专家，而是希望能够成为系统设计师。我不相信一个只精通发动机的专家能够设计一辆好车，同样我也不相信对硬件一窍不通的人能做出一个操作系统，或者一个对财会没有一点概念的人能设计出一个优秀的财务软件。在工作中我发现社会上非常缺乏边缘人才，尤其是在国内。在国外一个人软硬件兼修非常普遍。如果设计产品的人只了解他的专业那么是很难有出色的设计。所以我必须趁着自己年轻学的更加广泛一些，这样才能提高自己的综合素质，这也是为什么高校那么多非专业课程。学习工作了这些年，实际上都没有脱离IT这个行业，我现在的公司开发一个系统时，先是将最终功能列举清楚并分析可行性，然后划分哪些是用芯片实现，哪些是用硬件电路实现，哪些是用软件实现，这样的设计才能做出最好的系统。如果一个设计者单纯只懂一个方面是不可能做到这一点的。</p>
		<p>　　自负常常伴随着无知，记得我大学毕业时，论文答辩会上我和专家组组长争起来了，因为我对自己的设计非常得意，而他虽然是鸡蛋里挑骨头，但是由于知识非常有限，我无法回答他的问题，所以有些“恼羞成怒”。我原来一直喜欢用“所谓”最好的开发工具，记得做过一个愚蠢的设计，一个排课表的软件我用VC+Oracle开发。这些经历我牢记在心，时刻提醒自己学会谦虚。我的亲身经历加上我对一些身边朋友的观察发现这样一个现象。当一个人只会他认为最好的技术，而对其他的一无所知，这样的人经常是目空一切。<br />从第一个“Hello World”到今天的操作系统，前前后后写了很多代码，从这中间我也积累了很多心得。由于我是在没有人指导的情况下自学编码的，所以走了很多弯路，也犯了不少错误。最初我写程序全凭自己的感觉，写一个新程序对结构设计不很重视，以为学好语言，数据结构就可以写出好的程序，其实远不是这样的。没有设计的情况下，也可以写，但是程序无法写的很大、很复杂。我个人的经验是这样的系统超过8000行我就无法控制了，以前我用VC写过一个Windows下的应用程序，大概8000行左右我对它失去了控制，整个代码一团糟，这8000行倒是可以相对稳定的运行，但是我没有能力再增加什么新的代码，动辄前后冲突，要么就是新代码与旧设计格格不入，需要调整旧的程序。最开始我写程序喜欢追求代码的精巧，别人很多行写出来的代码自己只写很少就可以实现，感觉那样比较酷。其实这样也是非常错误的，我现在写程序非常注重结构设计，为了结构清晰我愿意牺牲一点效率。</p>
		<p>　　下面一段话是我写程序的座右铭，希望与大家共勉：</p>
		<p>　　Make it right before you make it faster.<br />　　Keep it right when you make it faster.<br />　　Make it clear before you make it faster.<br />　　Do not sacrifice clarity for small gains in efficiency.<br />　　Brian Kernighan</p>
		<p>　　另外补充一点：我和我的女朋友现在非常好，双方的家人都认可了，我们决定在近期结婚。<br /></p>
<img src ="http://www.cppblog.com/singohgod/aggbug/10138.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/singohgod/" target="_blank">大宝天天见</a> 2006-07-16 21:37 <a href="http://www.cppblog.com/singohgod/archive/2006/07/16/10138.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>纪念开张</title><link>http://www.cppblog.com/singohgod/archive/2006/07/13/9791.html</link><dc:creator>大宝天天见</dc:creator><author>大宝天天见</author><pubDate>Thu, 13 Jul 2006 04:53:00 GMT</pubDate><guid>http://www.cppblog.com/singohgod/archive/2006/07/13/9791.html</guid><wfw:comment>http://www.cppblog.com/singohgod/comments/9791.html</wfw:comment><comments>http://www.cppblog.com/singohgod/archive/2006/07/13/9791.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/singohgod/comments/commentRss/9791.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/singohgod/services/trackbacks/9791.html</trackback:ping><description><![CDATA[
		<p>早上发了申请，很快就收到了通过的邮件，站长工作真是负责。特此发表一文以做纪念！</p>
<img src ="http://www.cppblog.com/singohgod/aggbug/9791.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/singohgod/" target="_blank">大宝天天见</a> 2006-07-13 12:53 <a href="http://www.cppblog.com/singohgod/archive/2006/07/13/9791.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>