﻿<?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++博客-路的尽头-文章分类-工具</title><link>http://www.cppblog.com/tangxinfa/category/5924.html</link><description>开发者之旅</description><language>zh-cn</language><lastBuildDate>Sat, 25 Aug 2012 02:45:34 GMT</lastBuildDate><pubDate>Sat, 25 Aug 2012 02:45:34 GMT</pubDate><ttl>60</ttl><item><title>myql tips</title><link>http://www.cppblog.com/tangxinfa/articles/mysql_tips.html</link><dc:creator>唐新发</dc:creator><author>唐新发</author><pubDate>Mon, 26 Dec 2011 03:05:00 GMT</pubDate><guid>http://www.cppblog.com/tangxinfa/articles/mysql_tips.html</guid><wfw:comment>http://www.cppblog.com/tangxinfa/comments/162824.html</wfw:comment><comments>http://www.cppblog.com/tangxinfa/articles/mysql_tips.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tangxinfa/comments/commentRss/162824.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tangxinfa/services/trackbacks/162824.html</trackback:ping><description><![CDATA[１，mysql_real_connect指定host为localhost和127.0.0.1的区别。<br />　　前者使用unix socket进行连接，即会忽略port参数；后者使用tcp/ip进行连接，不会忽略port参数。<br />２，show processlist显示正在进行中的操作，kill &lt;Id&gt;中止某个操作。<br />３，导出latin1编码utf8数据库乱码，可以通过在mysqldump命令行中指定<font size="2">--default-character-set latin1解决。<br /> 4，mysql_connect的第四个参数为是否强制新建连接，默认情况下mysql_connect会重用使用相同参数打开的连接，本参数置为true，<br />      强制新建连接。当需要建多个不同字符集的连接时，本参数指定为true，这样才不会乱码。<br /></font><img src ="http://www.cppblog.com/tangxinfa/aggbug/162824.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tangxinfa/" target="_blank">唐新发</a> 2011-12-26 11:05 <a href="http://www.cppblog.com/tangxinfa/articles/mysql_tips.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>搭建jabber服务器</title><link>http://www.cppblog.com/tangxinfa/articles/jabber_tips.html</link><dc:creator>唐新发</dc:creator><author>唐新发</author><pubDate>Tue, 03 May 2011 16:32:00 GMT</pubDate><guid>http://www.cppblog.com/tangxinfa/articles/jabber_tips.html</guid><wfw:comment>http://www.cppblog.com/tangxinfa/comments/145549.html</wfw:comment><comments>http://www.cppblog.com/tangxinfa/articles/jabber_tips.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/tangxinfa/comments/commentRss/145549.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tangxinfa/services/trackbacks/145549.html</trackback:ping><description><![CDATA[
		<trustdb>
				<stream:stream to="localhost" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams">
						<presence>
								<message to="jack@localhost">* 编译安装<br />$ wget http://download.jabberd.org/jabberd14/jabberd14-1.6.1.1.tar.gz<br />$ tar xzvf jabberd14-1.6.1.1.tar.gz<br />$ cd jabberd14-1.6.1.1<br />修改代码以通过编译:<br />diff -r jabberd14-1.6.1.1/jabberd/lib/xmlnode.cc tmp/jabberd14-1.6.1.1/jabberd/lib/xmlnode.cc<br />882,884c882,884<br />&lt;     const char *next_step = NULL;<br />&lt;     const char *start_predicate = NULL;<br />&lt;     const char *end_predicate = NULL;<br />---<br />&gt;     char *next_step = NULL;<br />&gt;     char *start_predicate = NULL;<br />&gt;     char *end_predicate = NULL;<br />1836c1836<br />&lt;         ((char*)strchr(lang, '-'))[0] = 0;<br />---<br />&gt;         strchr(lang, '-')[0] = 0;<br />diff -r jabberd14-1.6.1.1/jabberd/log.cc tmp/jabberd14-1.6.1.1/jabberd/log.cc<br />89c89<br />&lt;         pos = (char*)strchr(zone,'.');<br />---<br />&gt;     pos = strchr(zone,'.');<br />diff -r jabberd14-1.6.1.1/jabberd/mio_tls.cc tmp/jabberd14-1.6.1.1/jabberd/mio_tls.cc<br />615c615<br />&lt;         ret = gnutls_certificate_set_openpgp_key_file(current_credentials, pubfile, privfile, GNUTLS_OPENPGP_FMT_BASE64);<br />---<br />&gt;         ret = gnutls_certificate_set_openpgp_key_file(current_credentials, pubfile, privfile);<br />634c634<br />&lt;         ret = gnutls_certificate_set_openpgp_keyring_file(current_credentials, file, GNUTLS_OPENPGP_FMT_BASE64);<br />---<br />&gt;         ret = gnutls_certificate_set_openpgp_keyring_file(current_credentials, file);<br />640a641,657<br />&gt;     }<br />&gt; <br />&gt;     // load GnuPG trustdb<br />&gt;     if (j_strcmp(xmlnode_get_localname(cur), "trustdb") == 0) {<br />&gt;         char const *const file = xmlnode_get_data(cur);<br />&gt; <br />&gt;         if (file == NULL) {<br />&gt;         log_warn(NULL, "Initializing TLS subsystem: &lt;trustdb/&gt; element inside the TLS configuration, that does not contain a file-name.");<br />&gt;         continue;<br />&gt;         }<br />&gt; <br />&gt;         // load the GnuPG trustdb<br />&gt;         ret = gnutls_certificate_set_openpgp_trustdb(current_credentials, file);<br />&gt;         if (ret &lt; 0) {<br />&gt;         log_error(NULL, "Error loading GnuPG trustdb %s: %s", file, gnutls_strerror(ret));<br />&gt;         continue;<br />&gt;         }<br />$ ./configure &amp;&amp; make &amp;&amp; sudo make install  # 需要用新立得安装提示缺少的库<br /><br />* 配置<br />** 按照mysql.sql中的注释配置数据库：<br />$ mysql -uroot -p<br />mysql&gt; CREATE DATABASE jabber CHARACTER SET utf8;<br />mysql&gt; use jabber;<br />mysql&gt; grant all on jabber.* to jabber@localhost identified by 'secret'; <br />mysql&gt; \. mysql.sql<br /><br />* 运行<br />sudo jabberd -h localhost -B<br /><br />* 注册用户1<br />telnet localhost 5222<br />&lt;stream:stream<br />  to='localhost'<br />  xmlns='jabber:client'<br />  xmlns:stream='http://etherx.jabber.org/streams'&gt;<br /><br />&lt;iq id='reg1' type='set'&gt;<br />  &lt;query xmlns='jabber:iq:register'&gt;<br />    &lt;username&gt;jack&lt;/username&gt;<br />    &lt;password&gt;jack&lt;/password&gt;<br />    &lt;name&gt;jack&lt;/name&gt;<br />    &lt;email&gt;&lt;/email&gt;<br />  &lt;/query&gt;<br />&lt;/iq&gt;<br /><br />&lt;/stream:stream&gt;<br /><br />* 登录用户1<br />Empathy菜单-&gt;编辑-&gt;帐户-&gt;添加：<br />协议: Jabber<br />登录ID: jack@localhost<br />记住密码<br />密码: jack<br />登录<br /><br />* 注册用户2<br />telnet localhost 5222<br />&lt;stream:stream<br />  to='localhost'<br />  xmlns='jabber:client'<br />  xmlns:stream='http://etherx.jabber.org/streams'&gt;<br /><br />&lt;iq id='reg1' type='set'&gt;<br />  &lt;query xmlns='jabber:iq:register'&gt;<br />    &lt;username&gt;rose&lt;/username&gt;<br />    &lt;password&gt;rose&lt;/password&gt;<br />    &lt;name&gt;rose&lt;/name&gt;<br />    &lt;email&gt;&lt;/email&gt;<br />  &lt;/query&gt;<br />&lt;/iq&gt;<br /><br />&lt;/stream:stream&gt;<br /><br />* 用户1加用户2为联系人<br />Empathy菜单-&gt;聊天-&gt;添加联系人:<br />帐户：jack@localhost<br />标识符: rose@localhost<br />添加<br /><br />* 登录用户2，并发一个消息给用户1<br />telnet localhost 5222<br />&lt;stream:stream<br />  to='localhost'<br />  xmlns='jabber:client'<br />  xmlns:stream='http://etherx.jabber.org/streams'&gt;<br /><br />&lt;iq id='auth1' type='set'&gt;<br />  &lt;query xmlns='jabber:iq:auth'&gt;<br />    &lt;username&gt;rose&lt;/username&gt;<br />    &lt;password&gt;rose&lt;/password&gt;<br />    &lt;resource&gt;test&lt;/resource&gt;<br />  &lt;/query&gt;<br />&lt;/iq&gt;<br /><br />&lt;presence/&gt;<br /><br />&lt;message to='jack@localhost'&gt;<br />  &lt;body&gt;hello, jack&lt;/body&gt;<br />&lt;/message&gt;<br /><br />&lt;/stream:stream&gt;<br /></message>
						</presence>
				</stream:stream>
		</trustdb>
<img src ="http://www.cppblog.com/tangxinfa/aggbug/145549.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tangxinfa/" target="_blank">唐新发</a> 2011-05-04 00:32 <a href="http://www.cppblog.com/tangxinfa/articles/jabber_tips.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gdb tips</title><link>http://www.cppblog.com/tangxinfa/articles/gdb_tips.html</link><dc:creator>唐新发</dc:creator><author>唐新发</author><pubDate>Wed, 17 Nov 2010 07:51:00 GMT</pubDate><guid>http://www.cppblog.com/tangxinfa/articles/gdb_tips.html</guid><wfw:comment>http://www.cppblog.com/tangxinfa/comments/133886.html</wfw:comment><comments>http://www.cppblog.com/tangxinfa/articles/gdb_tips.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tangxinfa/comments/commentRss/133886.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tangxinfa/services/trackbacks/133886.html</trackback:ping><description><![CDATA[1，在基类的虚拟函数中显示this是哪个派生类：<br>set print object on<br><br>2，以其它带namespace的类型打印一个对象，带namespace的强制转型要加单引号的：<br>p *(('Namespace::Class'*)obj)<br> <img src ="http://www.cppblog.com/tangxinfa/aggbug/133886.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tangxinfa/" target="_blank">唐新发</a> 2010-11-17 15:51 <a href="http://www.cppblog.com/tangxinfa/articles/gdb_tips.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>svn tips</title><link>http://www.cppblog.com/tangxinfa/articles/svn_tips.html</link><dc:creator>唐新发</dc:creator><author>唐新发</author><pubDate>Mon, 01 Nov 2010 10:06:00 GMT</pubDate><guid>http://www.cppblog.com/tangxinfa/articles/svn_tips.html</guid><wfw:comment>http://www.cppblog.com/tangxinfa/comments/132019.html</wfw:comment><comments>http://www.cppblog.com/tangxinfa/articles/svn_tips.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tangxinfa/comments/commentRss/132019.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tangxinfa/services/trackbacks/132019.html</trackback:ping><description><![CDATA[１，linux下让svn忽略某些文件：<br />在~/.subversion/config中加入：<br />global-ignores = *.o *.d cscope.* *.log<br /><br />２，修改SVN中文件的可执行属性：<br />svn propset svn:executable on &lt;文件&gt;<br /><img src ="http://www.cppblog.com/tangxinfa/aggbug/132019.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tangxinfa/" target="_blank">唐新发</a> 2010-11-01 18:06 <a href="http://www.cppblog.com/tangxinfa/articles/svn_tips.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>.emacs</title><link>http://www.cppblog.com/tangxinfa/articles/dotemacs.html</link><dc:creator>唐新发</dc:creator><author>唐新发</author><pubDate>Sun, 18 Jul 2010 06:29:00 GMT</pubDate><guid>http://www.cppblog.com/tangxinfa/articles/dotemacs.html</guid><wfw:comment>http://www.cppblog.com/tangxinfa/comments/120696.html</wfw:comment><comments>http://www.cppblog.com/tangxinfa/articles/dotemacs.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tangxinfa/comments/commentRss/120696.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tangxinfa/services/trackbacks/120696.html</trackback:ping><description><![CDATA[(ansi-color-for-comint-mode-on)<br />(global-font-lock-mode t)<br />(setq font-lock-maximum-decoration t)<br />(setq track-eol t)<br />(setq make-backup-files nil)<br />(setq auto-save-default nil)<br />(if window-system (tool-bar-mode nil))<br />(menu-bar-mode nil)<br />(display-time-mode 1)<br />(hl-line-mode t)<br />(setq display-time-24hr-format t)<br />(setq display-time-day-and-date t)<br />(put 'upcase-region 'disabled nil)<br />(put 'downcase-region 'disabled nil)<br />(defun up-slightly () (interactive) (scroll-up 3))<br />(defun down-slightly () (interactive) (scroll-down 3))<br />(global-set-key [mouse-4] 'down-slightly)<br />(global-set-key [mouse-5] 'up-slightly)<br />(global-set-key (kbd "M-o") 'ff-find-other-file)<br />(global-set-key (kbd "C-c c") 'comment-or-uncomment-region)<br />(global-set-key (kbd "&lt;f9&gt;") 'smart-compile)<br />(global-set-key (kbd "&lt;f5&gt;") 'gdb)<br /><br />(add-to-list 'load-path "~/opensource/go/misc/emacs/" t)<br />(require 'go-mode-load)<br /><br />(setq auto-mode-alist (cons '("\\.h$" . c++-mode) auto-mode-alist))<br />(setq auto-mode-alist (cons '("\\.qrc$" . nxml-mode) auto-mode-alist))<br />(setq auto-mode-alist (cons '("\\.tpl$" . html-mode) auto-mode-alist))<br /><br />-(defun my-c-cpp-mode-common-hook()                                                                 <br />  (c-set-style "linux")                                                                             <br />  (setq c-basic-offset 4)                                                                           <br />  ;(c-toggle-auto-hungry-state 1)                                                                   <br />  (which-function-mode t)                                                                           <br />  (define-key c-mode-base-map [(return)] 'newline-and-indent)                                       <br />  (local-set-key (kbd "RET") 'newline-and-indent)                                                   <br />  (setq c-macro-shrink-window-flag t)                                                               <br />  (setq c-macro-preprocessor "cpp")                                                                 <br />  (setq c-macro-cppflags " ")                                                                       <br />  (setq c-macro-prompt-flag t)                                                                      <br />  (setq abbrev-mode t)                                                                              <br />  (make-local-variable 'skeleton-pair-alist)                                                        <br />  (setq skeleton-pair-alist  '(                                                                     <br />    (?{ &gt; \n &gt; _ \n ?} &gt;)))                                                                         <br />  (setq skeleton-pair t)                                                                            <br />  (local-set-key (kbd "\'") 'skeleton-pair-insert-maybe)                                            <br />  (local-set-key (kbd "\"") 'skeleton-pair-insert-maybe)                                            <br />  (local-set-key (kbd "(") 'skeleton-pair-insert-maybe)                                             <br />  (local-set-key (kbd "{") 'skeleton-pair-insert-maybe)                                             <br />  (local-set-key (kbd "`") 'skeleton-pair-insert-maybe)                                             <br />  (local-set-key (kbd "[") 'skeleton-pair-insert-maybe)                                             <br />  (local-set-key (kbd "C-c m") 'man)                                                                <br />  )<br />(add-hook 'c-mode-common-hook 'my-c-cpp-mode-common-hook)<br />(add-hook 'c++-mode-common-hook 'my-c-cpp-mode-common-hook)<br /><br />(load-file "~/.emacs.d/site-lisp/smart-compile/smart-compile.el")<br /><br />(add-to-list 'load-path "~/.emacs.d/site-lisp/yasnippet")<br />(require 'yasnippet)<br />(yas/initialize)<br />(yas/load-directory "~/.emacs.d/site-lisp/yasnippet/snippets")<br /><br />(require 'xcscope)<br />-(defun cscope-index-sysfiles()                                                                     <br />  (interactive)                                                                                     <br />  (message "cscope find system header files...")                                                    <br />  (shell-command "find /usr/include /usr/local/include -type f &gt; ~/cscope.files")                   <br />  (message "cscope index system header files...")                                                   <br />  (shell-command "cscope -b -q -i ~/cscope.files -f ~/cscope.out")                                  <br />  (message "cscope index system header files finished.")                                            <br />)<br /><br />(load-file "~/.emacs.d/site-lisp/cedet/common/cedet.el")<br />;(semantic-load-enable-minimum-features)                                                            <br />(semantic-load-enable-code-helpers)<br />-;(semantic-load-enable-guady-code-helpers)                                                         <br />;(semantic-load-enable-excessive-code-helpers)                                                      <br />(semantic-load-enable-semantic-debugging-helpers)<br />(global-semantic-idle-local-symbol-highlight-mode 1)<br /><br />-(require 'semantic-ia)                                                                             <br />(require 'semantic-gcc)                                                                             <br />(require 'semantic-idle)<br />(setq global-semantic-idle-scheduler-mode t)<br />(setq semantic-idle-scheduler-work-idle-time 15)<br />(setq semantic-idle-work-parse-neighboring-files-flag t)<br />(setq semantic-idle-scheduler-working-in-modeline-flag t)<br />(require 'semanticdb)<br />(global-semanticdb-minor-mode 1)<br />(global-semantic-show-parser-state-mode 1)<br />(require 'semantic-tag-folding nil 'noerror)<br />(global-semantic-tag-folding-mode 1)<br />(define-key semantic-tag-folding-mode-map (kbd "C-c -") 'semantic-tag-folding-fold-block)<br />(define-key semantic-tag-folding-mode-map (kbd "C-c =") 'semantic-tag-folding-show-block)<br />(define-key semantic-tag-folding-mode-map (kbd "C-c _") 'semantic-tag-folding-fold-all)<br />(define-key semantic-tag-folding-mode-map (kbd "C-c +") 'semantic-tag-folding-show-all)<br /><br />(global-set-key "\C-cj" 'semantic-ia-fast-jump)<br />(global-set-key "\C-cb" 'my-semantic-ia-fast-jump-back)<br />(global-set-key (kbd "C-c TAB") 'semantic-complete-analyze-inline)<br />(eval-after-load "semantic-complete"                                                                <br />  '(setq semantic-complete-inline-analyzer-displayor-class                                          <br />         semantic-displayor-ghost))<br /><br />-(defun my-cedet-hook()                                                                             <br />  (local-set-key "\C-cp" 'semantic-analyze-proto-impl-toggle)                                       <br />  (local-set-key "\C-cr" 'semantic-symref-symbol)                                                   <br />  (local-set-key "\C-cr" 'semantic-symref-symbol)                                                   <br />  (local-set-key "." 'semantic-complete-self-insert)                                                <br />  (local-set-key "&gt;" 'semantic-complete-self-insert)                                                <br />)<br />(add-hook 'c-mode-common-hook 'my-cedet-hook)<br />(add-hook 'c++-mode-common-hook 'my-cedet-hook)<br /><br />-(defun my-semantic-ia-fast-jump-back()                                                             <br />  (interactive)                                                                                     <br />  (if (ring-empty-p (oref semantic-mru-bookmark-ring ring))                                         <br />      (error "Semantic Bookmark ring is currently empty"))                                          <br />  (let* ((ring (oref semantic-mru-bookmark-ring ring))                                              <br />         (alist (semantic-mrub-ring-to-assoc-list ring))                                            <br />         (first (cdr (car alist))))                                                                 <br />    (if (semantic-equivalent-tag-p (oref first tag)                                                 <br />                                   (semantic-current-tag))                                          <br />        (setq first (cdr (car (cdr alist)))))                                                       <br />    (semantic-mrub-switch-tags first)))<br /><br />(global-ede-mode t)<br />(ede-cpp-root-project "apue.2e"                                                                     <br />                :name "apue.2e examples"                                                            <br />                :file "~/learn/apue/apue.2e/Makefile"                                               <br />                :include-path '("/include"                                                          <br />                               )                                                                    <br />                :spp-table '(("LINUX" . "")                                                         <br />                             ("_GNU_SOURCE" . "")))<br /><br />(custom-set-faces                                                                                   <br />  ;; custom-set-faces was added by Custom.                                                          <br />  ;; If you edit it by hand, you could mess it up, so be careful.                                   <br />  ;; Your init file should contain only one such instance.                                          <br />  ;; If there is more than one, they won't work right.                                              <br /> '(semantic-highlight-edits-face ((((class color) (background light)) (:background "#010101")))))<br />(custom-set-variables                                                                               <br />  ;; custom-set-variables was added by Custom.                                                      <br />  ;; If you edit it by hand, you could mess it up, so be careful.                                   <br />  ;; Your init file should contain only one such instance.                                          <br />  ;; If there is more than one, they won't work right.                                              <br /> )<br /><br /><img src ="http://www.cppblog.com/tangxinfa/aggbug/120696.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tangxinfa/" target="_blank">唐新发</a> 2010-07-18 14:29 <a href="http://www.cppblog.com/tangxinfa/articles/dotemacs.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>emacs使用笔记</title><link>http://www.cppblog.com/tangxinfa/articles/89687.html</link><dc:creator>唐新发</dc:creator><author>唐新发</author><pubDate>Thu, 09 Jul 2009 14:16:00 GMT</pubDate><guid>http://www.cppblog.com/tangxinfa/articles/89687.html</guid><wfw:comment>http://www.cppblog.com/tangxinfa/comments/89687.html</wfw:comment><comments>http://www.cppblog.com/tangxinfa/articles/89687.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tangxinfa/comments/commentRss/89687.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tangxinfa/services/trackbacks/89687.html</trackback:ping><description><![CDATA[１，svn-status下如何删除选中（mark）的未受版本控制（unknow）的文件？<br />　　为svn-status-rm提供强制删除参数<br />　　M-u 1<br />　　M-x svn-status-rm<br />2，同时开多个shell<br />　　M-x shell                     ;开个SHELL先<br />    M-x rename-buffer             ;改成*shell*以外的名字<br />                                  ;继续上面的步骤， 同理可实现开多个gdb多个telnet。<br />3, 以其它编码方式打开文件或执行命令<br />    C-x Ret c &lt;命令&gt;<br /><br />4，protobuf-mode出现错误：error: `c-lang-defconst' must be used in a file  <br />  删除emacs的cc-mode.elc文件。<br />  不行则尝试将.emacs中该mode的load語句移到后面<br /><br />5，emacs的跳转<br />　C-M-f和C-M-b是forward-sexp和backward-sexp，在括号后则匹配括号，否则匹配一个词。<br />　C-M-n和C-M-p是forward-lise和backward-list，专用于括号间跳转。<br /><br />6，花括号补齐时自动换行并缩进<br />　(defun my-c-cpp-mode-common-hook()<br />  (c-set-style "linux")<br />  (setq c-basic-offset 4)<br />  ;(c-toggle-auto-hungry-state 1)                             <br />  (which-function-mode t)<br />  (define-key c-mode-base-map [(return)] 'newline-and-indent)<br />  (local-set-key (kbd "RET") 'newline-and-indent)<br />  (setq c-macro-shrink-window-flag t)<br />  (setq c-macro-preprocessor "cpp")<br />  (setq c-macro-cppflags " ")<br />  (setq c-macro-prompt-flag t)<br />  (setq abbrev-mode t)<br />  (make-local-variable 'skeleton-pair-alist)<br />  (setq skeleton-pair-alist  '(<br />    (?{ &gt; \n &gt; _ \n ?} &gt;)))<br />  (setq skeleton-pair t)<br />  (local-set-key (kbd "\'") 'skeleton-pair-insert-maybe)<br />  (local-set-key (kbd "\"") 'skeleton-pair-insert-maybe)<br />  (local-set-key (kbd "(") 'skeleton-pair-insert-maybe)<br />  (local-set-key (kbd "{") 'skeleton-pair-insert-maybe)<br />  (local-set-key (kbd "`") 'skeleton-pair-insert-maybe)<br />  (local-set-key (kbd "[") 'skeleton-pair-insert-maybe)<br />  )<br />(add-hook 'c-mode-common-hook 'my-c-cpp-mode-common-hook)<br />(add-hook 'c++-mode-common-hook 'my-c-cpp-mode-common-hook)<br /><br />７，获得快捷键的文本表示。<br />样板语句为(kbd "")，将光标放在""之间，然后执行M-x edmacro-insert-key，然后按照提示开始按键就产生了完整的文本表示。<br /><br />８，让cedet的跳转更精确<br />cedet是基于源代码解析来运作的，所以非常精确，对于一个稍具规模（多目录层次）的程序，cedet会因为不能定位到include让效果大打折扣，<br />而<code>ede-cpp-root-project</code>用于解决这个问题：<br />#Project.ede<br />(ede-cpp-root-project "tempproject":file "~/learn/tempproject/Project.ede"<br />    :include-path '( "/common" )<br />    :spp-table '( ("_DEBUG" . "")))<br /><br />"tempproject"　　是项目名称，随便填一个<br />"~/learn/tempproject/Project.ede"　是项目根目录下的一个文件，仅用于标记项目根目录<br /> "/common"　是项目的包含路径，最开始是"/"表示的是项目根目录（这里是"~/learn/tempproject/"）。<br />                     如果使用system-include-path，则最开始的/表示的就是系统根目录了。<br />　　　　　　  不以"/"开始的目录则表示是当前buffer（需要展开include路径的源文件buffer）所在目录。<br />"_DEBUG"　　是定义的宏<br /><br />9，xshell中compile时，编译输出的中文导致界面内容显示错乱，不输出中文就可以了．<br />(setq compile-command "LANG=en_US make")<br /><br />10，长句子总是自动换行显示<br />(custom-set-variables<br />'(truncate-partial-width-windows nil))<br /><br />11，内联函数缩进过多<br />  (c-set-offset 'inline-open 0)<br /><br />12，不让光标闪烁<br />(blink-cursor-mode nil)<br />如果在gnome-terminal中运行emacs时：<br />　　运行gconf-editor，取消/desktop/gnome/interface/cursor_blink<br />如果在linux text mode中运行时：<br />　　~/.bashrc中添加: alias emacst="echo -e '\033[?17;0;64c' &amp;&amp; TERM=vt100 emacs -nw"<br />　　然后以emacst启动emacs，注意：退出emacs后光标也不再闪烁。<br />13，ediff-directories默认显示同时存在于两个目录中的文件，要显示不同时存在于两个目录中的文件，按D即可。<br />14，gnus中当我进入一个组，所有的已读消息都没有了，我如何再看到它们？<br />当你通过 `RET' 进入一个 Summary buffer 时，只有未读邮件和标记的邮件<br />    被加载。用 `C-u RET' 来取得所有可用邮件。如果只想读最新的300 个，用<br />    `C-u 300 RET'。<br />参考：http://zoomquiet.org/res/scrapbook/ZqFLOSS/data/20101130102435/index.html<br /><br /><img src ="http://www.cppblog.com/tangxinfa/aggbug/89687.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tangxinfa/" target="_blank">唐新发</a> 2009-07-09 22:16 <a href="http://www.cppblog.com/tangxinfa/articles/89687.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>firefox使用记录</title><link>http://www.cppblog.com/tangxinfa/articles/83254.html</link><dc:creator>唐新发</dc:creator><author>唐新发</author><pubDate>Mon, 18 May 2009 01:40:00 GMT</pubDate><guid>http://www.cppblog.com/tangxinfa/articles/83254.html</guid><wfw:comment>http://www.cppblog.com/tangxinfa/comments/83254.html</wfw:comment><comments>http://www.cppblog.com/tangxinfa/articles/83254.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tangxinfa/comments/commentRss/83254.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tangxinfa/services/trackbacks/83254.html</trackback:ping><description><![CDATA[Q: 最新的版本不能直接查看c++源代码文件内容了。<br>A: 安装<a href="https://addons.mozilla.org/zh-CN/firefox/addon/8207">Open in Browser</a>插件。<br><br>Ｑ: 使用emacs快捷键<br>A: 之前用的是firefox官方插件firemacs，但功能不全用起来总有卡壳的时候，后来经朋友介绍用上了KeySnail，<br>　效果不错，用起来很流畅。C-x l聚焦到网址输入框，C-x g聚焦到搜索输入框，怎么聚焦回网页呢：C-g。<br>　默认的切换tab网页的快捷键和ubuntu系统快捷键冲突，改为：C-x f和C-x b吧。<br><br> <img src ="http://www.cppblog.com/tangxinfa/aggbug/83254.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tangxinfa/" target="_blank">唐新发</a> 2009-05-18 09:40 <a href="http://www.cppblog.com/tangxinfa/articles/83254.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ubuntu使用记录</title><link>http://www.cppblog.com/tangxinfa/articles/83226.html</link><dc:creator>唐新发</dc:creator><author>唐新发</author><pubDate>Sun, 17 May 2009 15:26:00 GMT</pubDate><guid>http://www.cppblog.com/tangxinfa/articles/83226.html</guid><wfw:comment>http://www.cppblog.com/tangxinfa/comments/83226.html</wfw:comment><comments>http://www.cppblog.com/tangxinfa/articles/83226.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tangxinfa/comments/commentRss/83226.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tangxinfa/services/trackbacks/83226.html</trackback:ping><description><![CDATA[Q, 怎么让它默认为经典的文本模式启动。<br />A, 修改/etc/default/grub<br />   GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 改为 GRUB_CMDLINE_LINUX_DEFAULT="text"<br />  
<strong>sudo update-grub</strong><br />    好了重启一下，看看效果，很怀旧吧。<br /><br />Q，虚拟机连网最佳方案<br />A，设置网卡1为Host-Only方式，这样模拟出了一个内部局域网，Host与Guests之间互通，适于做实验。<br />　  设置网卡2为NAT方式，方便访问互联网。<br /><br />Q，firefox打开网页很慢，状态栏上长时间显示Looking up ...<br />A，禁用firefox的ipv6。地址栏上输入about:config，过滤栏中输入ipv6，显示记录的Value值改为true。<br /><br />软件选择<br />_____类型__________软件___________理由__________________________________<br />chm查看程序　　xchm 　　支持页面的查找功能<br />    <br />Q，手工安装nvidia驱动时显示：Unable to load the kernel module 'nvidia.ko'<br />A，主要是启动时使用的内核与安装的头文件包不匹配（可能表面名称是一样的），启动时选个旧一点的内核。<br />　　禁用系统自带的显卡驱动：在文件/etc/modprobe.d/blacklist.conf 后添加两行：<br />　　blacklist nouveau<br />　　blacklist vga16fb<br />Ｑ，配置语音朗读<br />A ，参照<a title="文章" href="http://www.chrisspen.com/blog/how-to-install-mbrola-voices-for-use-with-festival-on-ubuntu.html">文章</a>安装mbrola，建议<span style="color: #007800;">VOICE</span>=us1<br />　　~/.festivalrc中加上：(set! voice_default 'voice_us1_mbrola)<br />　　如果adobe reader中的朗读选项被禁用，则尝试重装adobe reader，并安装附加的GNOME text-to-speech library。<br />Q，Ibus中文输入法不能用<br />A，系统菜单-&gt;System-&gt;Administration-&gt;Language Support-&gt;Keyboard input method system: ibus<br />　　emacs里Ctrl+space无法激活输入法:　~/.bashrc中添加LANG=zh_CN.UTF-8或LC_ALL=zh_CN.UTF-8<br />Q，添加开机启动项<br />A，运行gnome-session-properties<br />Q，更新系统时提示/boot空间不足<br />A，命令行uname -r确定内核版本，打开新立得软件包管理器搜索linux-image，将旧版本的内核选中删除，以腾出空间。<br /><img src ="http://www.cppblog.com/tangxinfa/aggbug/83226.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tangxinfa/" target="_blank">唐新发</a> 2009-05-17 23:26 <a href="http://www.cppblog.com/tangxinfa/articles/83226.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windbg使用点滴</title><link>http://www.cppblog.com/tangxinfa/articles/82675.html</link><dc:creator>唐新发</dc:creator><author>唐新发</author><pubDate>Tue, 12 May 2009 05:15:00 GMT</pubDate><guid>http://www.cppblog.com/tangxinfa/articles/82675.html</guid><wfw:comment>http://www.cppblog.com/tangxinfa/comments/82675.html</wfw:comment><comments>http://www.cppblog.com/tangxinfa/articles/82675.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tangxinfa/comments/commentRss/82675.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tangxinfa/services/trackbacks/82675.html</trackback:ping><description><![CDATA[１，查看GetLastError()的值：<br>　　使用命令： !gle<br><img src ="http://www.cppblog.com/tangxinfa/aggbug/82675.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tangxinfa/" target="_blank">唐新发</a> 2009-05-12 13:15 <a href="http://www.cppblog.com/tangxinfa/articles/82675.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Boost.Build: 安装</title><link>http://www.cppblog.com/tangxinfa/articles/57357.html</link><dc:creator>唐新发</dc:creator><author>唐新发</author><pubDate>Mon, 28 Jul 2008 08:07:00 GMT</pubDate><guid>http://www.cppblog.com/tangxinfa/articles/57357.html</guid><wfw:comment>http://www.cppblog.com/tangxinfa/comments/57357.html</wfw:comment><comments>http://www.cppblog.com/tangxinfa/articles/57357.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tangxinfa/comments/commentRss/57357.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tangxinfa/services/trackbacks/57357.html</trackback:ping><description><![CDATA[1，Boost.Build需要Boost.Jam，从sourceforge上<a  href="http://sourceforge.net/projects/boost/">下载Boost.Build及Boost.Jam包</a>，先编译Boost.Jam，然后将编译出的bjam.exe放入%PATH%相关目录中．<br>2，设置环境变量<code class="envar">BOOST_BUILD_PATH环境变量，值为Boost.Build包解压后的目录路径名．</code><img src ="http://www.cppblog.com/tangxinfa/aggbug/57357.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tangxinfa/" target="_blank">唐新发</a> 2008-07-28 16:07 <a href="http://www.cppblog.com/tangxinfa/articles/57357.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>emacs shell无法捕获程序崩溃前的输出</title><link>http://www.cppblog.com/tangxinfa/articles/56865.html</link><dc:creator>唐新发</dc:creator><author>唐新发</author><pubDate>Tue, 22 Jul 2008 07:36:00 GMT</pubDate><guid>http://www.cppblog.com/tangxinfa/articles/56865.html</guid><wfw:comment>http://www.cppblog.com/tangxinfa/comments/56865.html</wfw:comment><comments>http://www.cppblog.com/tangxinfa/articles/56865.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tangxinfa/comments/commentRss/56865.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tangxinfa/services/trackbacks/56865.html</trackback:ping><description><![CDATA[操作系统: windows xp<br>emacs版本: 23.0.0.1<br>演示代码:<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;p&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">before&nbsp;crash\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">p&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">crash</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br>}<br></span></div>
在emacs的shell中运行上面的程序将出现一个崩溃对话框, 但shell中没有任何输出.<br>如果直接在windows shell中执行则可以看到输出.<br><br>不知道这是不是emacs shell的一个BUG.<br><br><img src ="http://www.cppblog.com/tangxinfa/aggbug/56865.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tangxinfa/" target="_blank">唐新发</a> 2008-07-22 15:36 <a href="http://www.cppblog.com/tangxinfa/articles/56865.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VNC开源项目</title><link>http://www.cppblog.com/tangxinfa/articles/54974.html</link><dc:creator>唐新发</dc:creator><author>唐新发</author><pubDate>Mon, 30 Jun 2008 10:12:00 GMT</pubDate><guid>http://www.cppblog.com/tangxinfa/articles/54974.html</guid><wfw:comment>http://www.cppblog.com/tangxinfa/comments/54974.html</wfw:comment><comments>http://www.cppblog.com/tangxinfa/articles/54974.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tangxinfa/comments/commentRss/54974.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tangxinfa/services/trackbacks/54974.html</trackback:ping><description><![CDATA[公司产品需要集成远程桌面功能，所以最近花了点时间找了找VNC开源项目。<br>最终锁定在UltraVNC和TightVNC，这两个东西都是基于RealVNC开发的。<br>UltraVNC的一个特点是全面支持Vista，你可以远程进行操作系统登录；而TightVNC在Vista上就有点问题了，它在服务模式下运行不正常，最好在用户模式下运行，这样登录、登出Vista操作系统会相当不方便。<br>UltraVNC有一个文本聊天功能。<br>UltraVNC服务端只能运行在Windows操作系统上，而TightVNC服务端则可以在Windows和Unix上运行。<br><br><img src ="http://www.cppblog.com/tangxinfa/aggbug/54974.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tangxinfa/" target="_blank">唐新发</a> 2008-06-30 18:12 <a href="http://www.cppblog.com/tangxinfa/articles/54974.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Mantis-1.1.1安装配置实录</title><link>http://www.cppblog.com/tangxinfa/articles/43794.html</link><dc:creator>唐新发</dc:creator><author>唐新发</author><pubDate>Thu, 06 Mar 2008 01:20:00 GMT</pubDate><guid>http://www.cppblog.com/tangxinfa/articles/43794.html</guid><wfw:comment>http://www.cppblog.com/tangxinfa/comments/43794.html</wfw:comment><comments>http://www.cppblog.com/tangxinfa/articles/43794.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tangxinfa/comments/commentRss/43794.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tangxinfa/services/trackbacks/43794.html</trackback:ping><description><![CDATA[1，下载mantis安装包<br>2，解压<br>3，运行mantis<br>&nbsp; 双击imstart.cmd<br>4，中文设置<br>&nbsp; 4.1，修改root/mantis/config_default_inc.php中的变量值：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $g_default_language&nbsp;&nbsp;&nbsp; = 'chinese_simplified_utf8';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $g_complete_date_format = $g_normal_date_format;<br>&nbsp; 4.2，数据库的字符集设置为utf-8：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.2.1，命令行下登录数据库:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server\mysql-4.1.16-win32\bin\mysql -P 3360 -uroot<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.2.2，删除默认的数据库:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; drop database mantis;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.2.3，创建utf8数据库<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE DATABASE mantis DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;<br>&nbsp; 4.3，安装mantis数据库<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 打开http://localhost:8008/admin/install.php<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 点击Install/Upgrade Database<br>5，使用mantis<br>&nbsp; http://localhost:8008<br>6，进一步配置<br>&nbsp; 6.1，配置smtp发送通知邮件<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6.1.1，修改root/mantis/config_default_inc.php中的变量值：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $g_phpMailer_method = 2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $g_smtp_host&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; = 'smtp.sina.com';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $g_smtp_username&nbsp;&nbsp;&nbsp; = 'username';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $g_smtp_password&nbsp;&nbsp;&nbsp; = 'password';<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; $g_administrator_email = 'username@sina.com';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $g_webmaster_email = $g_administrator_email;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $g_return_path_email = $g_administrator_email;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $g_from_email = $g_administrator_email;<br> <img src ="http://www.cppblog.com/tangxinfa/aggbug/43794.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tangxinfa/" target="_blank">唐新发</a> 2008-03-06 09:20 <a href="http://www.cppblog.com/tangxinfa/articles/43794.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>