??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲中文字幕无码久久2017,久久99这里只有精品国产,久久丫精品国产亚洲av不卡http://www.shnenglu.com/zdhsoft/category/11845.html不能停止的脚?/description>zh-cnThu, 08 May 2014 12:02:08 GMTThu, 08 May 2014 12:02:08 GMT60“C++的数l不支持多态”?Q{_http://www.shnenglu.com/zdhsoft/articles/206844.html冬瓜冬瓜Tue, 06 May 2014 15:41:00 GMThttp://www.shnenglu.com/zdhsoft/articles/206844.htmlhttp://www.shnenglu.com/zdhsoft/comments/206844.htmlhttp://www.shnenglu.com/zdhsoft/articles/206844.html#Feedback0http://www.shnenglu.com/zdhsoft/comments/commentRss/206844.htmlhttp://www.shnenglu.com/zdhsoft/services/trackbacks/206844.html阅读全文

冬瓜 2014-05-06 23:41 发表评论
]]>
无插件Vim~程技巧(转脓Q?/title><link>http://www.shnenglu.com/zdhsoft/articles/206842.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Tue, 06 May 2014 15:03:00 GMT</pubDate><guid>http://www.shnenglu.com/zdhsoft/articles/206842.html</guid><wfw:comment>http://www.shnenglu.com/zdhsoft/comments/206842.html</wfw:comment><comments>http://www.shnenglu.com/zdhsoft/articles/206842.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/zdhsoft/comments/commentRss/206842.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/zdhsoft/services/trackbacks/206842.html</trackback:ping><description><![CDATA[原文地址Qhttp://coolshell.cn/articles/11312.html<span style="color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">怿大家看过?/span><a title="?Vim lȝ" target="_blank" style="font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px; color: #2970a6; text-decoration: none;">明Vim教程</a><span style="color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">》也玩了?/span><a title="游戏QVIM大冒? target="_blank" style="font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px; color: #2970a6; text-decoration: none;">Vim大冒?/a><span style="color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">》的游戏了,怿大家对Vim都有一个好的入门了。我在这里把我日常用Vim~程的一些技巧列出来l大家看看,希望对大家有用,另外Q也是一个抛砖引玉的q程Q也希望大家把你们的技巧跟贴一下,我会更新到这文章中。另外,q篇文章里的q些技巧全都是vim原生态的Q不需要你安装什么插件?/span><strong style="color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">我的Vim的版本是7.2</strong><span style="color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">?/span><h4>览代码</h4><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;"><span style="line-height: 1.5em;">首先Q我们先从浏览代码开始。有时候,我们需要看多个文gQ所以,传统的做法是Q我们开多个ttyl端Q每个tty里用Vim打开一个文Ӟ然后来回切换。这很没有什么效率。我们希望在一个Vim里打开多个文gQ甚x览程序目录?/span></p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">览目录的命令很单:Q你也可以直接vim一个目录)</p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:E</strong></p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">注意Q是大写。于是,你会看到下面q样的界面:</p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;"></p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;"><img size-full="" wp-image-11314"="" alt="" src="http://coolshell.cn//wp-content/uploads/2014/03/Explorer.png" width="643" height="387" style="border: 0px; display: block; margin-left: auto; margin-right: auto; max-width: 650px;" /></p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">q个界面中,<strong>你可以用 j, k 键上下移动,然后回RQ进入一个目录,或是扑ּ一个文?/strong>。你可以看到上面有一堆命令:</p><ul style="margin: 0px; padding: 0px 0px 10px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;"><li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside;">?– ?CU目?/li><li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside;">【D】删除文Ӟ大写Q?/li><li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside;">【R】改文g名(大写Q?/li><li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside;">【s】对文g排序Q小写)</li><li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside;">【x】执行文?/li></ul><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">当然Q打开的文件会把现有已打开的文件给冲掉——也就是说你只看到了一个文件?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">如果你要改变当前览的目录,或是查看当前览的目录,你可以用和shell一L命oQ?/p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:cd <dir> – 改变当前目录</strong></p><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:pwd  - 查看当前目录</strong></p></blockquote><h4>~冲?/h4><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">其实Q你?E 览打开的文仉没有被关闭,q些文g都在~冲Z。你可以用下面的命o来查看缓冲区Q?/p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:ls</strong></p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">于是Q在你的Vim下,你会看到如下界面Q?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;"><img size-full="" wp-image-11315"="" alt="" src="http://coolshell.cn//wp-content/uploads/2014/03/buffer_ls.png" width="572" height="174" style="border: 0px; display: block; margin-left: auto; margin-right: auto; max-width: 650px;" /></p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">你可以看到Vim打开了四个文Ӟ~号?Q?Q?Q?Q如果你要切换打开的文Ӟq个时候,你不要按回RQ按了也没事Q只不过按了q不到:ls输出的buffer列表了)Q你可以使用下面的命令切换文Ӟbuffer后面?表示切到4h件也是src/http/ngx_http.cQ:</p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:buffer 4</strong></p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">或是Q?/p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:buffer src/http/ngx_http.c</strong></p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">注意Q?/p><ul style="margin: 0px; padding: 0px 0px 10px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;"><li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside;">你可以像在Shell中输入命令按Tab键补全一栯全Vim的命令?/li><li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside;">也可以用像gdb一L最前面的几个字W,只要没有冲突。如Qbuff</li></ul><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">你还可以动用如下命oQ快速切换:</p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;">:bnext      ~写 :bn<br />:bprevious   ~写 :bp<br />:blast  ~写 :bl<br />:bfirst ~写 :bf</p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;"><span style="line-height: 1.5em;">上图中,我们q可以看?有一?aQ这表示当前文gQ相关的标记如下Q?/span></p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">- Q非zd的缓冲区Q?br />a Q当前被Ȁzȝ冲区Q?br />h Q隐藏的~冲区)<br />% Q当前的~冲区)<br /># Q交换缓冲区Q?br />= Q只ȝ冲区Q?br />+ Q已l更改的~冲区)</p><h4>H口分屏览</h4><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">怿你在?a title="Vim的分屏功? target="_blank" style="color: #2970a6; text-decoration: none;">Vim的窗口分?/a>》一文中Q你已经知道了怎么拆分H口了。其实,我更多的不是用拆分窗口的命oQ而是用浏览文件的命o来分隔窗口。如Q?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">把当前窗口上下分屏,q在下面q行目录览Q?/p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:He   全称?:Hexplore  Q在下边分屏览目录Q?/strong></p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">如果你要在上面,你就?:He后面加个 !Q?/p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:He!  Q在上分屏浏览目录)</strong></p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">如果你要左右分屏的话Q你可以q样Q?/p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:Ve 全称?:Vexplore Q在左边分屏间浏览目录,要在双则是 :Ve!Q?/strong></p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">下图是分别用:He ?:Ve搞出来的同时看三个文Ӟ</p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;"><img wp-image-11316"="" alt="" src="http://coolshell.cn//wp-content/uploads/2014/03/WindowsExplorer.png" width="725" height="411" style="border: 0px; display: block; margin-left: auto; margin-right: auto; max-width: 650px;" /></p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">在分屏间的蟩转和切换在?a title="Vim的分屏功? target="_blank" style="color: #2970a6; text-decoration: none;">Vim的窗口分?/a>》一文中提过了:<strong>先按Ctrl + WQ然后按方向键:h j k l</strong></p><h4>分屏同步Ud</h4><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">要让两个分屏中的文g同步UdQ很单,你需要到需要同步移动的两个屏中都输入如下命令(相当于?#8220;铁锁q环”Q:</p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:set scb</strong></p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">如果你需要解开Q那么就输入下面的命令:</p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:set scb!</strong></p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">注:set scb ?nbsp;set scrollbind 的简写?/p><h4>Tab|览目?/h4><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">分屏可能会让你不爽,你可能更喜欢像Chromeq样的分式的浏览,那么你可以用下面的命令:</p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:Te  全称?:Texplorer</strong></p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">下图中,你可以看到我用Te命o打开了三,在端我们可以可以看到有三,其中W一Tab上的数字3表示那一|3个文件?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;"><img size-full="" wp-image-11317"="" alt="" src="http://coolshell.cn//wp-content/uploads/2014/03/TabExplorer.png" width="679" height="236" style="border: 0px; display: block; margin-left: auto; margin-right: auto; max-width: 650px;" /></p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">我们要在多个Tabe中切换Q在normal模式下,你可以用下面三个按键(注意没有冒号Q:</p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;"><strong>gt   – C一个页</strong></p><p style="margin: 0px 0px 10px; padding: 0px;"><strong>gT  - 到前一个页</strong></p><p style="margin: 0px 0px 10px; padding: 0px;"><strong>{i} gt   – i是数字,到指定页Q比如:5 gt 是到第5?/strong></p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">你可以以使用 ?tabm {n}】来切换Tabc?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">gvim应该是:Ctrl+PgDn ?Ctrl+PgUp 来在各个中切换?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">如果你想看看你现在打开的窗口和Tab的情况,你可以用下面的命oQ?/p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:tabs</strong></p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">于是你可以看刎ͼ</p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;"><img size-full="" wp-image-11318"="" alt="" src="http://coolshell.cn//wp-content/uploads/2014/03/Tab01.png" width="392" height="175" style="border: 0px; display: block; margin-left: auto; margin-right: auto; max-width: 650px;" /></p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">使用如下命o可以关闭tabQ(当然Q我更喜Ƣ用传l的:q, :wq来关闭)</p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:tabclose [i]</strong> – 如果后面指定了数字,那就关闭指定,如果没有关闭当前页</p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">最后提一下,如果你在Shell命o行下Q你可以使用 vim ?-p 参数来用Tab늚方式打开多个文gQ比如:</p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;"><strong>vim -p cool.cpp shell.cpp haoel.cpp<br />vim -p *.cpp</strong></p></blockquote><h4>保存会话</h4><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">如果你用Tab或Window打开了好些文件的文gQ还讄了各U滚屏同步,或是行号……Q那么,你可以用下面的命令来保存会话Q(你有兴趣你可以看看你?mysession.vim文g内容Q也是一个批处理文gQ?/p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:mksession ~/.mysession.vim</strong></p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">如果文g重复Qvim默认会报错,如果你想写入的话Q你可以在mksession后加! Q?/p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:mksession! ~/.mysession.vim</strong></p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">于是下次Q你可以q样打开q个会话Q?/p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;"><strong>vim -S ~/.mysession.vim</strong></p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">保存完会话后Q你也没有必要一个一个Tab/Windows的去Close。你可以单地使用Q?/p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:qa   – 退出全?nbsp;</strong></p><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:wqa  -保存全部q出全?/strong></p></blockquote><h4>Quickfix</h4><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">假如我们有一个hello.cpp文g和一个makefileQ于是我们可以直接在vim下输?:make Q?于是可以makeq个hello.cpp文gQ如果出错了Q我们需要按回Rq回Q这个时候,我们可以使用下面的命令来把出错显到在vim的分屏中Q?/p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:cw</strong></p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">于是Q就会出C面右边的那个样子Q(是不是看上去和我一样很帅?Q?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;"><img size-full="" wp-image-11321"="" alt="" src="http://coolshell.cn//wp-content/uploads/2014/03/quickfix.png" width="705" height="385" style="border: 0px; display: block; margin-left: auto; margin-right: auto; max-width: 650px;" /></p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">上图中左Ҏ我的makefileQ右Ҏ我的错误癑և的源代码Q右边下面是quickfixH屏。你可以看到quickfixH屏指向的第一个错误已l定位到我们相就错误的文件行上了?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">你可以用像览文g那样用j, k在quckfixH屏中上下移动到相应的错误上然后按回车,然后可以在上面的窗屏里定位到相应的源文件的代码行。但是,如果是这L话, 你要定位下一条错误还得用Ctrl +W 回到quickfix屏中来然后重复来q?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">你可以用下面的命o而不用回到quickfix中来Q?/p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:cp 跛_上一个错?/strong></p><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:cn 跛_下一个错?/strong></p><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:cl 列出所有错?/strong></p><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:cc 昄错误详细信息</strong></p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">下面我们来看另一个quickfix的功能?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">如果你用qvim的cscope插gQ你q道cscope可以用来查找相当的代码,但cscope需要事先生成一个数据库Q对一些简单的查找Q其实,我们用vim的grep命o可以了Q不需要专门ؓ之生成数据库。vim的grep命o和shell的几乎一栗?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">我们来看个例子:</p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">比如我们正在览nginx的代码,q时Q我想看看哪里用Cnginx的NGX_HTTP_VAR_INDEXED宏。于是,我可以在vim里输入如下的命oQ?/p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;"><strong>:grep -r –include=”*.[ch]” NGX_HTTP_VAR_INDEXED src/</strong></p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">上面q个命o意思是递归查询src目录下所有的.c?h文gQ其中包括NGX_HTTP_VAR_INDEXED宏。然后,你就会看到vim到shell里去执行q找C相关的文Ӟ按回车返回vim后,别忘了用 ?cw 】把grep的输出取回来Q于是我们就有下面的样子Q?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;"><img size-full="" wp-image-11323"="" alt="" src="http://coolshell.cn//wp-content/uploads/2014/03/quickfix_grep.png" width="704" height="386" style="border: 0px; display: block; margin-left: auto; margin-right: auto; max-width: 650px;" /></p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">然后同上面一P你可以用 jQk 键移动quickfix里的光标到相应的行,然后按回车定位文Ӟ或是使用?cn】或?cp】来Ud到定位。(q样Q你会把多个文g打开到缓冲区Q别忘了?ls】来查看~冲区)</p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">你看Q到q里Q一个小的IDEp样生了Q而且Q?strong>最帅的Ӟ我们q一Ҏ仉没有装,也没有在.vimrc文g中配|过什?/strong>?/p><h4>关键字补?/h4><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">我们q是坚持不用M插g。我们来看看是怎么个自动补全的?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">在insert模式下,我们可以按如下快捷键Q?/p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;">?strong>Ctrl +N</strong>? - 当你按下q它Ӟ你会发现Vim开始搜索你q个目录下的代码Q搜索完成了׃出现一个下拉列表(居然是粉紫色的,真是丑死了)</p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">下图是我输入了ngx_http_然后按ctrl+n出现的样子,它已l帮我补全了一个,但是我不惌q个。然后,在Vim的下Ҏ们可以看到状态变成了“关键字补?#8221;Q然后后面有^N^P的提C,意思就是告诉你q有一个Ctrl+P.</p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;"><img wp-image-11325"="" alt="" src="http://coolshell.cn//wp-content/uploads/2014/03/auto_complete_ctrl_n.png" width="635" height="304" style="border: 0px; display: block; margin-left: auto; margin-right: auto; max-width: 650px;" /></p><blockquote style="margin: 5px 0px; padding: 10px 12px 0px; background-color: #fafafa; border-width: 0px; border-color: #e6e6e6; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; line-height: 27.200000762939453px;"><p style="margin: 0px 0px 10px; padding: 0px;">?strong>Ctrl + P</strong>?– 接下来你可以按这个键Q于是回到原点,然后你可以按上下光标键来选择相应的Word?/p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">对于上面那个例子Q我们按下了Ctrl+P后出C面的q个样子。我们可以看刎ͼ光标回到了一开始我输入的位|,然后你可以干两g事,一个是l箋输入Q这可以帮助qo关键词)Q另一个是?#8220;光标?#8221;上移或下UL选择下拉列表中的关键字,选好后回车,p全了?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;"><img size-full="" wp-image-11326"="" alt="" src="http://coolshell.cn//wp-content/uploads/2014/03/auto_complete_ctrl_p.png" width="707" height="337" style="border: 0px; display: block; margin-left: auto; margin-right: auto; max-width: 650px;" /></p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">与此cM的,q有更多的补齐,都在Ctrl +X下面Q?/p><ul style="margin: 0px; padding: 0px 0px 10px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;"><li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside;">Ctrl + X ?Ctrl + D 宏定义补?/li><li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside;">Ctrl + X ?Ctrl + ] 是Tag 补齐</li><li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside;">Ctrl + X ?Ctrl + F 是文件名 补齐</li><li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside;">Ctrl + X ?Ctrl + I 也是关键词补齐,但是关键后会有个文g名,告诉你这个关键词在哪个文件中</li><li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside;">Ctrl + X ?Ctrl +V 是表辑ּ补齐</li><li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside;">Ctrl + X ?Ctrl +L q可以对整个行补齐,变态吧?/li></ul><h4>其它技?/h4><h5>字符相关</h5><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">【guu ?– 把一行的文字变成全小写。或是【Vu?/p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">【gUU?– 把一行的文g变成全大写。或是【VU?/p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">按【v】键q入选择模式Q然后移动光标选择你要的文本,按【u】{写Q按【U】{大写</p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">【ga?–  查看光标处字W的ascii?/p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">【g8?– 查看光标处字W的utf-8~码</p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">【gf? - 打开光标处所指的文g Q这个命令在打到#include头文件时挺好用的Q当Ӟ仅限于有路径的)</p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">?】或?】在当前文g中搜索当前光标的单词</p><h5>~进相关</h5><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">?gt;>】向右给它进当前??lt;<】向左羃q当前行</p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">?? - ~进当前?Q和上面不一L是,它会寚w~进Q?/p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">?%?– 把光标位|移到语句块的括号上Q然后按=%Q羃q整个语句块Q?是括号匹配)</p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">【G=gg?或是 【gg=G? - ~进整个文gQG是到文gl尾Qgg是到文g开_</p><h5>复制_脓相关</h5><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">按【v?键进入选择模式Q然后按h,j,k,lUd光标Q选择文本Q然后按 【y?q行复制Q按 【p?q行_脓?/p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">【dd】剪切一行(前面加个数字可以剪切n行)Q【p】粘?/p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">【yy】复制一行(前面加个数字可以复制n行)Q【p】粘?/p><h5>光标Ud相关</h5><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">【Ctrl + O】向后回退你的光标Ud</p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">【Ctrl + I 】向前追赶你的光标移?/p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">q两个快捷键很有用,可以在Tab和Windows中向前和向后trace你的光标键,q也方便你蟩转光标?/p><h5>dShell命o相关</h5><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">?r!date?插入日期</p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">上面q个命oQ?r ?read的羃写,!是表明要q行一个shell命oQ意思是我要把shell命o的输到vim里来?/p><h4>vim的终U插?/h4><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">CentOS下:yum erase emacs</p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">Ubuntu下:apt-get remove emacs</p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">对了Q以前本站也有一小短文?a target="_blank" style="color: #2970a6; text-decoration: none;">如何在vim中得C最喜爱的IDEҎ?/a>》你也可以看看?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; line-height: 27.200000762939453px;">Q?wqQ?/p><img src ="http://www.shnenglu.com/zdhsoft/aggbug/206842.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/zdhsoft/" target="_blank">冬瓜</a> 2014-05-06 23:03 <a href="http://www.shnenglu.com/zdhsoft/articles/206842.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从Code Review 谈如何做技术(转脓Q?/title><link>http://www.shnenglu.com/zdhsoft/articles/206841.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Tue, 06 May 2014 15:01:00 GMT</pubDate><guid>http://www.shnenglu.com/zdhsoft/articles/206841.html</guid><wfw:comment>http://www.shnenglu.com/zdhsoft/comments/206841.html</wfw:comment><comments>http://www.shnenglu.com/zdhsoft/articles/206841.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/zdhsoft/comments/commentRss/206841.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/zdhsoft/services/trackbacks/206841.html</trackback:ping><description><![CDATA[<h2>原文地址Q?span style="font-size: 14px;">http://coolshell.cn/articles/11432.html<br /></span><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">Q这文章缘由我的微博,我想多说一些,有些杂ؕQ想到哪写到哪)</p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">q两天,在微博上表达了一下Code Review的重要性。因为翻看了阉K内部的Review Board上的记录Q从上面发现Code Review做得好的是一些比较偏技术的团队Q而偏业务的技术团队基本上没有看到Code Review的记录。当Ӟqƈ不能说没有记录他们就没有做Code ReviewQ于是,我就问了一下以前在业务团队做过的同事有没有Code ReviewQ他告诉我不但没有Code ReviewQ而且他认为Code Review没用Q因为:</p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">1Q工期压得太紧,旉qcoding都不够,以上Uؓ目的Q?/p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">2Q需求老变Q代码的生命周期太短。所以,写好的代码没有Q何意义,烂就烂吧Q反正与l效无关?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">我心里非怸认同q样的观点,我觉得我是程序员Q我是工E师Q就像医生一P不是把病人医好就好了Q还要对病h的长期健庯责。对于常见病Q要很快地医好病人很单,下猛药,大量使用抗生素,好得飞快。但大家都知道,q明显是“饮鸩止”?#8220;竭泽而渔”的做法。医生需要有责Q心和ddQ我也觉得程序员工程师也要有相应的责d和相应的修养。东西交l我我必需要负责,我觉得这U负责和修养不是”做出?#8220;׃事了Q而是要到“做漂?#8221;q个U别Q这是“山寨”?#8220;工业”的差别。而只?#8220;做出?#8221;为目的标准,我只能以为,q样的做法只不过?#8220;按部q”的堆砌代码Ş了,和劳动密集型?#8220;装配生U?#8221;?#8220;砌砖?#8221;没有什么差别,在这U环境里呆着q不如离开?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">老实_因ؓd我在业务团队的时候,我的团队也没有做Code ReviewQ原因是多样的。其中一个重要原因是Q我刚来阉KQ所以,需要做的是在适应阉K的文化,M公司都有自己的风格和特点QQ何公司的做法都有他的理由和成因,对于我这L一个初来者,首要的是要适应和观察,不要对团队做太多的改动,跟从、理解和信Q是融入的关键。(注:在徏北京团队和不要专职的试人员上我都受C一些阻力)Q所以跟着团队走没有玩Code Review。干了一q后Q觉得我妥协了很多我以前所坚持的东西,觉得自己的标准在降低Q想一惛_背拔凉拔凉的Q所以我军_坚持Q而且q要坚持高标准?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;"><span id="more-11432"></span></p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">对于Code Review很重要的q个观点Q在微博上抛出来后,被一些阿里的工程师,架构?专家Q甚臌深架构师批评Q我在和他们回复和讨论的q程中,居然发现有个“因ؓҎ用户的设|?#8221;我无法回复了Q我被拉黑了Q还有一些直接就是冷讽和骂h了,微博中我q接删除了Q。这些批评我的阿里工E师/架构师的观点ȝ一下如下:Q?strong>Z说一下,阉K内还是有很多团队坚持做Code Review?/strong>Q?/p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">1Q到业务团队体会一下,倒逼工期的目有多?订好交付日期后再要求提前1个月的有多少Q现在是做到已经不容易,更不谈做得漂亮!?/p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">2QCode Review是一U教条,意义不大Q有试Q只要不出错Q就可以了?/p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">3Q目标都是改q质量,有限的投入d望能有最大的产出Q不同沉湎改q质量的方式不一P业务应用开发忙的跟狗一P而且业务逻辑变化快,通用性差Qcodereviw的成本要比底层高?/p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;"><span style="line-height: 1.5em;">4Q现在的主要矛盾是倒排出来的工期和不靠qE序员之间的矛盾Q我认ؓcr不是解决q个问题的银式V不从实际情况出发光打正义的嘴炮实在太过于自C ?/span></p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;"><strong>我们可以看到Q上面观点其实和Code Review没有太多关系Q其实是在抱怨另外的问题</strong>。这些观点其实是技术团队和业务团队的矛盾,但不知道Z么强加给了我?#8220;Code Review很重?#8221;的这个观点,然后q些观点反过来冲?#8220;Code Reivew”Qƈ?#8220;Code Review无用”。这U讨论问题的方式在很常见Q你说AQ我说BQ本来A、B是两件事Q但是要؜Z谈,然后似是而非的用B来证明你的A观点是错的。(也许Q这些工E师/架构师心存怨气Q需要一个发泄的通道Q?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;"><strong>我觉得,很多时候,人思考问题思考不清楚Q很大一部分原因是因为把很多问题混ؓ一?/strong>Q连我自己有些时候都会这栗引以ؓ戒?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">即然被؜Z谈,那我来拆分一下,也是下面q三个问题:</p><ul style="margin: 0px; padding: 0px 0px 10px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;"><li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside;">Code Review有没有用的问题?/li><li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside;">Code Review做不h的问题?/li><li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside;">业务变化快,速度快的问题Q技术疲于跟命?/li></ul></h2><h4 style="margin: 40px 0px 10px; padding: 10px 0px 10px 10px; font-family: 'Microsoft YaHei', Arial; font-size: 21px; color: #008800; border-left-color: green; border-left-style: solid; border-left-width: thick; background-color: #f8f8f8;">Code Review</h4><h2><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">你Google一下Code Reivewq个关键词,你就会发现Code Review的好处基本上是不存在争议的,有很多很多的文章和博文都在说Code Review的重要性,怎么做会更好Q而且很多公司在面试过E中会加?#8220;Code Review”的问题。打开<a target="_blank" style="color: #2970a6; text-decoration: none;">Wikipedia的词?/a>你会看到q样的描q?#8212;—</p><blockquote style="margin: 5px 0px; padding: 8px 12px 8px 36px; background-image: url(http://coolshell.cn/wp-content/themes/inove/img/blockquote.gif); background-color: #f4f5f7; border: 1px dashed #cccccc; font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', sans-serif; color: #555555; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px; background-position: 3px 3px; background-repeat: no-repeat no-repeat;"><p style="margin: 0px 0px 10px; padding: 0px;">卡珀?#183;琼斯QCapers JonesQ分析了过12,000个Y件开发项目,其中使用正式代码审查的项目,发现潜在~陷率约?0-65%之间Q若是非正式的代码审查,发现潜在~陷率不?0%。大部䆾的测试,发现的潜在缺L会在30%左右?/p><p style="margin: 0px 0px 10px; padding: 0px;">对于一些关键的软gQ例如安全关键系l的嵌入式YӞQ一般的代码审查速度U是一时150行程序码Q一时审查数百行程序码的审查速度太快Q可能无法找到程序中的问题。代码审查一般可以找到及U除U?5%的错误,最高可以到85%?/p><p style="margin: 0px 0px 10px; padding: 0px;">也有研究针对代码审查扑ֈ的缺L型进行分析。代码审查找到的~陷中,?5%是和计算机安全隐患有兟뀂对于品生命周期很长的软g公司而言Q代码审查是很有效的工具?/p></blockquote><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;"><strong>Code Review的好处我觉得不用多说了,主要是让你的代码可以更好的组lv来,有更易读Q有更高的维护性,同时可以辑ֈ知识׃nQ找到bug只是其中的副产品</strong>。这个东西已l不新鲜了,你上|可以找到很多文章,我就不多说了。就像你写程序要判断错误一PCode Review也是最基本的常识性的东西?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">我从2002q开始就在严格的Code Review中,我的个h成长和Code Review有很大的关系Q如果我的成长过E中没有l历qCode Reviewq个事,我完全不敢想像?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;"><strong>我个Z码有q几U别:1Q可~译Q?Q可q行Q?Q可试Q?Q可读,5Q可l护Q?Q可重用。通过自动化测试的代码只能辑ֈW?QQ而通过Code Review的代码少会在W?Q甚至更高?/strong>关于Code ReviewQ你可以参看本站的?a title="Code Review中的几个提示" target="_blank" style="color: #2970a6; text-decoration: none;">Code Review中的几个提示</a>?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">可见QCode Review直接关系C你的工程能力Q?/p></h2><h4 style="margin: 40px 0px 10px; padding: 10px 0px 10px 10px; font-family: 'Microsoft YaHei', Arial; font-size: 21px; color: #008800; border-left-color: green; border-left-style: solid; border-left-width: thick; background-color: #f8f8f8;">Code Review 的问?/h4><h2><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">有下面几个情况会让你的Code Review没有效果?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">首当其冲的是——“<strong>人员能力不</strong>”Q我l历q这L情况QCode Review的过E中Q大家大眼瞪眼Q没有什么好的想法,不知道什么是好的代码Q什么是不好的代码。导致Code Review大多数都在代码风g。今天,我告诉你Q代码风DU事Q是每个E序员自查的事情Q不应该费大家的时间。对此,我有两个Q?Q你团队的h招错了,该换血了?Q让你团队的时候阅M下?a target="_blank" style="color: #2970a6; text-decoration: none;">代码大全</a>》这本书Q当Ӟq要d多基知识的书Q?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">ơ当其冲的是——“<strong>l果更重?/strong>”Q也是_做出来更重要Q做漂亮不重要。因为我的KPI和年l奖based on how many works I’ve doneQ而不是How perfect they are ! q让我想到那些天天在用Spring MVC 做CRUD|页的工E师Q我承认Q他们很熟练。大量的重复力_。其实,仔细想一下好多东西是可以框架化,模板化,或是自动生成的。所以,Z堆出q么多网就停地dQ做的东西是很多Q但是没有Q何成ѝ急功q利Q也许,你做得多Q拿C不错的年l奖Q但是你失去的也多,失去了成Z个卓工E师的机会。你本来可以让你的月薪在1-2q后?-2倍的Q但一q后你只拿到了ؓC多的q终奖?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">然后?#8212;—“<strong>人员的态度问题</strong>”Q一斚w是懒,不想_求精Q只要干完活交差了事。对此,你更要大力开展Code Review了,让这Uh写出来的代码曝光在更多h面前Q让他ؓ质量不好的代码蒙。另一斚wQ有Z觉得那是别h的模块,我不懂,也没旉 LQ不懂他的业务怎么做Code Review? 我只惌Q如果你的团队里q样?#8220;各个自扫门前?#8221;的事多Q那么这个团队也p没主动性,没有d性也p不可能是个好团队Q做的东西也不可能好。而对于个人来_也就不可能有成ѝ?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">接下来是——“<strong>需求变化的问题</strong>”Q有识,需求变得快Q代码的生存周期比较短,不需要好的代码,反正q两天这些代码就会被废弃了。如果是一ơ性的东西Q的质量不需要太高,反正用了扔。但是,我觉得多多少要Review一下这个一ơ性的烂代码不会媄响那些长期在用的代码吧,如果你的目全部都是临时代码Q那么你团队是不是也是一个时团队?关于如果应对需求变化,你可以看看本站的?a rel="bookmark" style="color: #2970a6; text-decoration: none;">需求变化与IoC</a>》?a target="_blank" style="color: #2970a6; text-decoration: none;">Unix的设计思想来应对多变的需?/a>》的文章 Q从q些文章中,我相信你可以看到对于需求变化的代码质量需要的更高?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">最后是——“<strong>旉不够问题</strong>”Q如果是业务逼得紧,让你疲于奔命Q那么这不是Code Review好不好问题,q是需求管理和目理的问题以及别的非技术的问题。下面我会说?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">不管怎么P上述Code Review的问题不应该成ؓ“Code Review无意?#8221;的理由或借口Q这好?#8220;因噎废食”一栗干什么事都会有困隑֒问题的,有的人就q样退~了Q但有的人看得到利大于弊Q还是去坚持Qh与h的不同正在这个地斏V这是Z么运动会受伤Q但q是会h去运动,而有人因为怕受伤就退~了一栗?/p></h2><h4 style="margin: 40px 0px 10px; padding: 10px 0px 10px 10px; font-family: 'Microsoft YaHei', Arial; font-size: 21px; color: #008800; border-left-color: green; border-left-style: solid; border-left-width: thick; background-color: #f8f8f8;">被业务逼得太紧</h4><h2><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">被业务逼得太紧Q需求ؕ变,q其实和Code Review没有多大关系了。对此,我想先讲一个我的故事?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">我去q在阉K的聚矛_Q刚ȝ时候,聚石塔正在做一个很大的重构——Ҏ构的大调整。因此压了很多业务需求,{这个项目花?-3个月做完了后Q一下子涌入?0-50个需求,q规定一个月完成Q搞得团队疲于奔命。在累了两周后,我仔l分析了一下这些需求,发现很多需求是在重复做阉K云已l做q的东西Q还有一些需求是因ؓ聚石塔这个^C规范没有标准所产生的问题。于是,我做了这么三件事Q?/p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">1Q重新定义聚矛_q个产品主要目标和范_定哪些该做Q哪些不该做?/p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">2Qؓ聚石塔制定标?Q让阉K云的API都长得基本一Pq制订云资源的接入标准?/p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">3Q推动重构阿里云的PortalpȝQ不再实现阿里云已经做过的东西,与阿里云紧密l合?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">q些事情推动hq不ҎQ聚矛_的业务方一开始也不理解,我和产品一起做业务方的工作Q而阿里云也被我逼得很惨Q在q里一q感谢,其阉K云的同学Q老实_和阿里云跨团队合作中是我q么多年来感觉最好的一ơ,相当赞)。通过q个事,聚石塔需求一下就有质的下降了。搞得还有几个工E师来和我说Q你q么搞,聚石塔就没事可干了。姑且不说工E师对聚矛_的理解是怎么L?我只惌Q我大量地减了需求,最大可能联合了该联合的人,而不是自己闭门造RQƈ让品的目标和方向更明确了。做了这些事情后Q大家不但不用加班,而且q有旉充电d技术,qؓ聚石塔思考未来的方向和发展。去q公?96的时候,我的团队q在965Q搞得跟异教徒似的)Q而且q有很多旉M研新的东ѝ?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">说这个故事,我不是ؓ了得瑟,而是因ؓ有些人在微博上抨L是一个道貌岸然的只会谈概念讲道理的装逼犯。所以,我告诉大家我在聚矛_是怎么做的Q我公开写在q里Q你也可以向相关的同学去求证我说的是不是真的。也向你证明Q我可能是个装逼犯Q但l不是只会谈概念讲道理的装逼犯?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">被业务方逼得紧不要抱怨,你没有时间被逼得像牲口一样工作,q个时候,你需要的是暂停一下想一惻IZ么会像牲口一P而这正是让你变得聪明的机会?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">我ؓ你ȝ一下,</p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">1Q你有没有去Review业务部门l你的这么多的需求,哪些是合理的Q哪些是不合理的。在AmazonQ开发工E师都会被教育拿到需求后一定要?#8212;—“Z么要做?业务影响度有多大Q有多少用户受益Q?#8221;Q回{不清这个问题,没有数据的支持,׃做。所以,产品l理要做很多数据挖拙和用戯研的工作Q而不是拍拍脑袋,听极数的用h怨就要开需求了?/p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">2Q品经理也要管理和教育的。你要告诉你的品经理:“你是一个好的品经理,因ؓ你不但对用户把握得很好,也会对Y件工艺把握得很好。你不但会开出外在的功能性需求,也同样会开出内在的让Y件系l更完善的非功能性需求。你不是在迁qP而是引导用户。你不会无限制地加功能,而是把握产品灵魂控制q简化功能。你会ؓ自己要做的和不做东西的感到同L自豪?#8221;你要告诉你的产品l理Q?#8220;做一个半成品不如做好半年产品”Q更多这L观点请参看?a title="《Rework》摘录及感想" target="_blank" style="color: #2970a6; text-decoration: none;">Rework摘录和感?/a>》)</p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">3Q做事情是要讲效率的。Amazon里喜Ƣ用一U叫T-Shirt Size Estimation的评估方法来优先做投入小产出大的“Happy Case”。关于什么是效率Q什么是T-Shirt Size EstimationQ你可以看看?a title="加班与效? target="_blank" style="color: #2970a6; text-decoration: none;">加班与效?/a>》一??/p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">4Q需求L会变化的Q不要抱怨需求变化太快。你应该抱怨的是ؓ什么我们没有把握好方向Q老变Q这个事像t球一P你要ȝ地方是球要ȝ地方Q而不是球现在的地斏V你要知道球要去哪里Q你q道球之前是怎么动的Q找Cq动轨迹后,你才知道球要d何方。如果你都不知道球要d何方Q那你就是一只无头苍蝇一P东一下西一下?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;"><strong>当你忙得跟牲口一P你应该停下来Q问一下自己,自己成ؓ牲口的原因,是不是就是因己做事时候像q口一h考?</strong></p></h2><h4 style="margin: 40px 0px 10px; padding: 10px 0px 10px 10px; font-family: 'Microsoft YaHei', Arial; font-size: 21px; color: #008800; border-left-color: green; border-left-style: solid; border-left-width: thick; background-color: #f8f8f8;">其它</h4><h2><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">最后,我在l阿里今q新入职的毕业生?#8220;技塑h?#8221;的分享中Q我l他们布|了5?个HomeworkQ分享几个给大家Q?/p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">1Q重构或写一个模块,把他做成真正的ElegantU别?/p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">2Q与大家分n一或几篇技术文?Qƈ收获10-30个赞?/p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">3Q降低现有至?0%的重复工作或l护工作</p><p style="margin: 0px 0px 10px; padding: 0px 0px 0px 30px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">4Q拒l或化一个需求(需要项目中所有的Stakeholders都同意)</p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">部vq些作业的原因,是我希望新入行的同学们对自己的工作坚持高的标准,我知道你们会因ؓ骨感的现实而妥协,但是我希望你们就在现实中妥协了也要在内心中坚持可能高的标准,不要习惯成自Ӟ最后被C会q个大染~给潜移默化了。因Z臛_要对自己负责?strong>对自p责就是,用脚投票Q如果妥协得受不了了q开?/strong>?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">芝兰生于IQ不以无不芻I君子修n养道Q不以穷困而改志!</p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">谢谢听我唠叨?/p><p style="margin: 0px 0px 10px; padding: 0px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 27.200000762939453px;">Q全文完Q?/p><span style="font-size: 14px;"><br /></span></h2><img src ="http://www.shnenglu.com/zdhsoft/aggbug/206841.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/zdhsoft/" target="_blank">冬瓜</a> 2014-05-06 23:01 <a href="http://www.shnenglu.com/zdhsoft/articles/206841.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python操作Exceld(使用xlrd和xlrt)[转帖]http://www.shnenglu.com/zdhsoft/articles/152482.html冬瓜冬瓜Thu, 04 Aug 2011 15:43:00 GMThttp://www.shnenglu.com/zdhsoft/articles/152482.htmlhttp://www.shnenglu.com/zdhsoft/comments/152482.htmlhttp://www.shnenglu.com/zdhsoft/articles/152482.html#Feedback0http://www.shnenglu.com/zdhsoft/comments/commentRss/152482.htmlhttp://www.shnenglu.com/zdhsoft/services/trackbacks/152482.html
传说中python操作ms office功能最强大的是win32comQ据说只要h工能操作的它都能实现Q未试不知道真假Q,不过对于比较单的需求显得有些小题大作。那么来看下单的Q分别是xlrd和xlwt模块?/div>
xlrd
http://pypi.python.org/pypi/xlrd
单?/div>
导入
import xlrd
打开excel
data = xlrd.open_workbook('demo.xls') #注意q里的workbook首字母是写
查看文g中包含sheet的名U?/div>
data.sheet_names()
得到W一个工作表Q或者通过索引序 ?工作表名U?/div>
table = data.sheets()[0]
table = data.sheet_by_index(0)
table = data.sheet_by_name(u'Sheet1')
获取行数和列?/div>
nrows = table.nrows
ncols = table.ncols
获取整行和整列的|数组Q?/div>
table.row_values(i)
table.col_values(i)
循环?得到索引的列?/div>
for rownum in range(table.nrows):
print table.row_values(rownum)
单元?/div>
cell_A1 = table.cell(0,0).value
cell_C4 = table.cell(2,3).value
分别使用行列索引
cell_A1 = table.row(0)[0].value
cell_A2 = table.col(1)[0].value
单的写入
row = 0
col = 0
ctype = 1 # cd 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
value = 'lixiaoluo'
xf = 0 # 扩展的格式化 (默认?)
table.put_cell(row, col, ctype, value, xf)
table.cell(0,0) # 文本:u'lixiaoluo'
table.cell(0,0).value # 'lixiaoluo'
xlwt
http://pypi.python.org/pypi/xlrd
单?/div>
导入xlwt
import xlwt
新徏一个excel文g
file = xlwt.Workbook() #注意q里的Workbook首字母是大写Q无语吧
新徏一个sheet
table = file.add_sheet('sheet name')
写入数据table.write(??value)
table.write(0,0,'test')
如果对一个单元格重复操作Q会引发
returns error:
# Exception: Attempt to overwrite cell:
# sheetname=u'sheet 1' rowx=0 colx=0
所以在打开时加cell_overwrite_ok=True解决
table = file.add_sheet('sheet name',cell_overwrite_ok=True)
保存文g
file.save('demo.xls')
另外Q用style
style = xlwt.XFStyle() #初始化样?/div>
font = xlwt.Font() #为样式创建字?/div>
font.name = 'Times New Roman'
font.bold = True
style.font = font #为样式设|字?/div>
table.write(0, 0, 'some bold Times text', style) # 使用样式
xlwt 允许单元格或者整行地讄格式。还可以d链接以及公式。可以阅L代码Q那里有例子Q?/div>
dates.py, 展示如何讄不同的数据格?/div>
hyperlinks.py, 展示如何创徏链?(hint: you need to use a formula)
merged.py, 展示如何合ƈ格子
row_styles.py, 展示如何应用Style到整行格子中.
具体的例子可以看Q?/div>
http://scienceoss.com/write-excel-files-with-python-using-xlwt/
google论坛Q?/div>
http://groups.google.com/group/python-excel/


冬瓜 2011-08-04 23:43 发表评论
]]>IT目十大N(转脓)http://www.shnenglu.com/zdhsoft/articles/104571.html冬瓜冬瓜Thu, 31 Dec 2009 09:44:00 GMThttp://www.shnenglu.com/zdhsoft/articles/104571.htmlhttp://www.shnenglu.com/zdhsoft/comments/104571.htmlhttp://www.shnenglu.com/zdhsoft/articles/104571.html#Feedback0http://www.shnenglu.com/zdhsoft/comments/commentRss/104571.htmlhttp://www.shnenglu.com/zdhsoft/services/trackbacks/104571.html作者:吕徏?a >
http://www.amteam.org/k/CIO/2009-10/627126.html


q篇文章Q搞信息化的企业IT部门的h多来看看Q或者{发给他的大领导或业务部门领导来看看?

    1没有目核心目标Q没有明目标,没有目完结后的效益评估Q没有明要解决的核心问题,没有目边界。反正合同也{了Q过去遇到的所有问题,都希望这一个项目这一ơ都能解冟뀂把IT斚w目h员尽量留在企业当企业的劳工用,没有上线旉限制Q没有资源h数限Ӟ一个劲的提要求让IT方h员干?/p>

    2客户本n都没有尝试过Q自己想着应该挺好Q也没有l想Q就非让IT化?/p>

    3开会老没人。都有充理由。来的h都决定不了。总负责h不?。能的了的人,反而不。别够的,都不深入参与目。只是来表示慰问Q或者阶D|ȝ会上出现 。领导^时不参与Q几个业务部门在讨论会上打架打的不可开交,让领导来拍板。领导来了,听了双方各个理由Q就拍板了。最后细惻Iq样的决{结果落地成IT肯定有问题。但大领导都军_了,谁也不敢d大领导反?/p>

    4客户Ҏ有IT人员参与Q是客户业务部门和IT方直接交。各用各的思维Q都惛_d位,捏不在一赗?/p>

    5IT人员在过E中w事Q能不做׃做,都扔lITҎ做,而且有什么业务与IT之间的矛盾,都让IT方尽量满뀂开各种参数开养I满各种情况Q不情冉|否正常或合理。Y件既复杂又不ҎE_?/p>

    6客户IT方主导项目需求,最后上U的时候在业务部门真正q行Q发现客hIT部门理解的业务需求也不对Q再重头攏V?/p>

    7目基础数据混ؕQ还不想整理Q想l箋使用。或者是q期数据Q不一致的数据Q重复的数据Q缺q数据Q异常数据。整理这些数据就非常花时间?/p>

    8报表各个指标l合Q又不用BI展示工具。开发工作量、开发工作难度、速度、报表准性都受挑战?/p>

    9客户说的Q在{֍前销售h员都{应Q模׃可觉得可以这栯冟뀂真正签了合同执行落实时发现几经努力都达不到Q费了牛劲浪费了大量旉q是达不到?/p>

    10客户方内部斗争,IT方内部斗争,影响目q程和项目讨论结果。你同意的,另一方就肯定反对Q最l出来的讨论l果几经妥协已经变得很畸形,q让IT方实现?/p>

    我们发现Q我们有好的目理ҎQ也有相应配合h数和能力的项目团队,也有l一的项目模板,但每个项目回儡时候都发现异常癑ևQ当时没有有效控制。每ơ项目ȝQ都说下ơ如何做Q但是到了下个项目,那h那地那景Q出C问题Q上ơȝ的补救办法居然无法套上?/p>

    我们再仔l分析一下,看看能不能个个击破?/p>

    1 我们惛_定一个有明确边界限制的目标和可数的问题,客户{应吗?所以我们要多树立自׃业的目理形象Q取得客户信仅R?/p>

    2客户都没有尝试过的,自己臆想的,q种业务Q我们不IT化,也不打击客户Q而是和客户一h考业务流E细节和业务表格、岗位职能调_考核Q先让他们自己尝试h工去做。确实有效益而且业务E_了再IT化?/p>

    3 惌有别真正管人的领导深度参与目。可能吗Q想让管事的人都到齐Q可能吗Q一般不可能。所以只能邮件和短信来群发及时汇报。能影响目的,都要拉进q䆾发名单中?/p>

    4?? 我们来领导客户IT斏V客户业务部门,我们来d调总规划。客L应吗Q客户ؓ什么不{应。ؓ什么我们领导就擅长呢?l个理由先。所以要加强我们的行业分析、业务模型咨询分析、行业观点能力。让客户信QQ相信我们有先进能力?/p>

    7 基础数据Q客h意自己先整理明白吗?很难。这是特别花旉׃h工的Q双方谁也不惌己扛下来q个zd。这个矛盾怎么解决Q?/p>

    8 独立上套数据分析pȝ。但企业往往又不上。IT方也不想免费l上。这个矛盾怎么解决Q?/p>

    9 我们曄试让技术部门的目l理充当售前Q把达不到的技术问题消灭在前期。但是,销售和老板Z得单子,不让说实话,不让说做不了Q宁可尝试最后确实达不到Q也不能说达不到。这个矛盾怎么解决Q?/p>

    10客户内部不斗争,目团队内部不斗争。可能吗Q好像不太可能。明着执行力很好,但实际都是糊弄,推委。这个问题不好解冟뀂这个矛盾怎么解决Q?/p>

    q篇文章Q搞信息化的企业IT部门的h多来看看Q或者{发给他的大领导或业务部门领导来看看。因为抱怨问题的人往往是问题的Ҏ?/p>

    但是q个Ҏ实现吗?不容易。看blogLU的一般都是小c而IT部门领导Q一般都是拍胸脯向大领导保证肯定能完成。而小兵呢Q根本无法逾越直接转给大领对{大领导qx也接触不到这些信息?/p>

冬瓜 2009-12-31 17:44 发表评论
]]>
C语言的演变史(转脓)http://www.shnenglu.com/zdhsoft/articles/103740.html冬瓜冬瓜Tue, 22 Dec 2009 16:08:00 GMThttp://www.shnenglu.com/zdhsoft/articles/103740.htmlhttp://www.shnenglu.com/zdhsoft/comments/103740.htmlhttp://www.shnenglu.com/zdhsoft/articles/103740.html#Feedback0http://www.shnenglu.com/zdhsoft/comments/commentRss/103740.htmlhttp://www.shnenglu.com/zdhsoft/services/trackbacks/103740.html引用来源Q?a >http://coolshell.cn/?p=1984

1972 – C语言的先驱——B语言Q被贝尔实验室开发。B语言是一个很快速的Q容易维护的Q而且对于从系l到应用开发是很好用的。设计这门语a的整个团队被马上解雇了,因ؓ他们q了一件和电话通讯不相q的事情。最后这个项目{l了 Dennis Ritchie。他把这个语a变得不容易理解,很难l护Q而且Q只能用于系l方面的~程。而且Q他q设计了一个指针系l,保让每一个程序都过500行,q可以用操作系l的指针?/p>

1982 – 大家发现?7% 的CE序调用产生?#8220;~冲区溢?#8221;问题。于是,C E序员们开始意识到Q就是不必要也必需要初始化变量。然而,强制性的变量初始化这个明智的军_Q很隑֪响了当时已经写成了的97%的CE序Q所以结果什么也没有发生?nbsp;

1984 – 操作pȝ出现?#8220;错误指针”的问题数量开始戏剧性地增涨?nbsp;

1985 – 一pd的让C语言有面向对象能力的解决Ҏ出现了,一个叫“C With Classes”正准备商业化。然而,大家觉得名字“C With Classes”太清楚和Ҏ被理解了Q所以,最l的商业版本叫做—?C++?/p>

1986 – C语言成ؓ最行的语句,其被很多业界分析师推荐于业务应用。他们向全世界宣U——由C语言写成的应用将可以q行在很多不同的q_上的Q是跨^台的。目前看来,q些众多的分析者在当时有可能是因ؓ某种q而导致其大脑被所蛊惑了?/p>

1988 – 业界的这些分析家们因?#8220;摇头?#8221;吃完了。所以,在他们的q觉q去以后Q他们注意到Q用C语言来开发业务应用会增加5倍以上的开发时_q且E序也不具备可移植性。他们开始停止向大众推荐使用C语言来开发业务应用了Q只能很一部服用可卡因的h开始{向推荐大众用C++语言写业务应用程序,他们_“那是面向对象的,所以,代码是很Ҏ重用?#8221;?/p>

1990 – 在这个时候,所有的C~译器都转到了C++~译器上。但是,因ؓ大多数的C++E序员ƈ没有使用C++中那些面向对象的语言Ҏ。也是_在实际上来说Q那UQ肿的代码l构加上操作pȝ指针的代码被一U叫面向对象的编译器~译?/p>

1990 – 在雇佣了一些{?#8220;吸胶?#8221;的分析师后,Sun军_要创造一U叫Oak的语aQ这U语a主要用于电视的机盒。因为当时几乎所有的E序员的DNA中都有C语的基因Q所以,q个语言向C和C++中大量地借鉴了很多它们的语法和编E思\。然而,机顶盒上没有操作pȝQ也׃存在指针Q所以,他们把指针从q门语言里给L了?/p>

1994 – Sun公司里的某个人意识到Z个机盒开发一个语a是多么愚蠢的事情。于是,q个语言更名为JavaQƈ且ؓ其注入了“Internet”的特征,从而让其成Z个真正可以被UL的语a。其市场营销上相当成功,而那时有3%的业内h士开始明白什么是InternetQ同Ӟ那些_不正常的分析师们q在不停地嗑药ƈ向大众鼓吹他们的话—?#8220;跨^台移植?#8221;?/p>

1995 – Sun 向业界的分析师们提供了免费蘑菇迷汤Q导致那些分析师在喝下汤后,马上开始写?#8220;Java是一门未来的可移植的和Ineternet高度可集成的语言”?/p>

1996 ?– 17,468,972 文章出玎ͼ描述了Java是怎么一门未来的语言。这也是Java Applet开始进入Web늚时代?/p>

1996 ?#8211; E序员开始用Java applet创徏他们的Web面Q然后他们开始因为挫折和沮开始集体自杀。此Ӟ那些分析师开始增大蘑菇迷汤的剂量?/p>

1997 – 因ؓ接受了生觉分析师的徏议,Corel 军_重写他们的应用,包括 WordPerfectQ当Ӟ是用Java写的。最l的l果是,q是q今为止?#8220;打字?#8221;q慢的字处理软g?/p>

1998 –  在意识到applet已在快速枯萎,Sun又一ơ的重新配置了JavaQ这ơ,他们叫SeverletQ这是一个服务器的程序语a。这个设计在抄袭了Microsoft Transaction Server Qƈ且,他们说服所有hq个设计是他们创造的?/p>

1999 – 业内那些喝多了的分析师们用一U咆哮的方式向大众介l了Java 2 Enterprise Edition ?21,499,512 文章被写出来。但是,实际上ƈ没有Z用,因ؓJ2EE太不成熟Q而又太贵了?/p>

2000 – J2EE 最l还是运转v来了Q一点点Q。而且Q所有的Java卖主们开始准备向其砸钱,与此同时QMicrosoft 宣布?NETQ这是一个包括了所有的J2EE功能但没那么늚产品。实际上来说Q?Microsoft 军_让Windows的用户免费?NET ?Scott McNealy 很愤怒,其对Microsoft开展了相关的法律诉讹{?/p>

.NET 包括了最新的C家族语言Q叫C#Q发x“C-pound”Q承最家族的传l,使用着一个愚蠢的名字?/p>

2001 – Microsoft 的市场部意识刎ͼ在市面上没有Z们的产品Q他们找了其中一个程序员一起吃中饭Q才发现Q他们把C#叫做 “C sharp”?/p>

2002 – C# 成ؓ Microsoft .NET的一部分?C++ 的开发者在 Microsoft q_上ؓ “managed code”而欢呼雀跃,也就是说Q他们最l得C一个内存自动管理的功能Q这一功能正是1991q的Visual Basic ?995q的Java所创徏??/p>

copyright (C) 1996-2006 by Billy S. Hollis, originally posted on dotnetmasters.com 13 January 2006



冬瓜 2009-12-23 00:08 发表评论
]]>
C++Builder 2010 Memory Manager is now FastMM[转脓]http://www.shnenglu.com/zdhsoft/articles/FASTMM.html冬瓜冬瓜Sat, 19 Sep 2009 15:22:00 GMThttp://www.shnenglu.com/zdhsoft/articles/FASTMM.htmlhttp://www.shnenglu.com/zdhsoft/comments/96736.htmlhttp://www.shnenglu.com/zdhsoft/articles/FASTMM.html#Feedback0http://www.shnenglu.com/zdhsoft/comments/commentRss/96736.htmlhttp://www.shnenglu.com/zdhsoft/services/trackbacks/96736.html引用:http://andy.jgknet.de/blog/?p=649
C++Builder’s CRTL now uses FastMM as built-in memory manager. You can see this in “source\cpprtl\Source\memory\_fastmm.c”. It has also AUTO_SHARE_MEMORYMANAGER defined what means that it can work with the Delphi FastMM memory manager and the BorlndMM.dll isn’t necessary anymore.

There are also some optimized c-string and memory functions in the CRTL code. Looks like somebody got rid of the 1992/93 implementations.



冬瓜 2009-09-19 23:22 发表评论
]]>
þ97þ97Ʒӿϼ| ŷձþùʵҶ԰| þþƷav鶹ͼƬ | þ99Ʒþ99С˵| 97þþƷƷ| ɫۺϺϾþۿ| þ99Ʒþþþþþþþ| ޹þþۺ| ɫۺϾþþþר| ҹAVëƬþ| þþþþAVר| ޹þþþƷ| þþƷ99͵| 69SEXþþƷ鶹| þþƷav| Ʒþþþþùţţapp| AVվþþƷ| 99þùۺϾƷ| þþƷһ| պһþ| vaþþþúݺ| þseƷһƷ| Ʒþøһ| ˾þô߽avӰԺ| ˾þþƷavһ| ƷˮҾþþþþþ| þۺŷ| 99þֻоƷ| ƷþþþĻձ | ҹþþƷ| ձձȾþþƷ| 18պҹþó | þþþ뾫Ʒ| ŷþþþþ| þþù׾Ʒ| ͵þþþƷר| þþþAVվ| ŷ˾þۺ| þþۺϾɫۺϾ| ٸþĻ | ɫþþۺ|