﻿<?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++博客-Sheppard Y-随笔分类-工具</title><link>http://www.cppblog.com/yangsf5/category/8447.html</link><description>keep thinking keep coding.</description><language>zh-cn</language><lastBuildDate>Sat, 16 Jul 2016 07:03:01 GMT</lastBuildDate><pubDate>Sat, 16 Jul 2016 07:03:01 GMT</pubDate><ttl>60</ttl><item><title>Docker应用调研</title><link>http://www.cppblog.com/yangsf5/archive/2014/04/26/206724.html</link><dc:creator>Sheppard Y</dc:creator><author>Sheppard Y</author><pubDate>Sat, 26 Apr 2014 08:05:00 GMT</pubDate><guid>http://www.cppblog.com/yangsf5/archive/2014/04/26/206724.html</guid><wfw:comment>http://www.cppblog.com/yangsf5/comments/206724.html</wfw:comment><comments>http://www.cppblog.com/yangsf5/archive/2014/04/26/206724.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yangsf5/comments/commentRss/206724.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yangsf5/services/trackbacks/206724.html</trackback:ping><description><![CDATA[<div><div></div><fieldset><legend><span style="color: #ff0000;">2016-07-12 日更新&nbsp;</span></legend><div><span style="color:red;">此篇博客已经迁移到新博客，并做行文检查和优化排版：</span></div><div></div><a href="http://blog.clawz.me/2014/04/26/14-docker-usage-research/"><div><span style="color:red;">http://blog.clawz.me/2014/04/26/14-docker-usage-research/</span></div></a></fieldset><a href="http://blog.clawz.me/2014/04/26/14-docker-usage-research/"><div></div></a><br />&nbsp;一、背景 <div>&nbsp; &nbsp; &nbsp;项目里编译打包客户端程序时经常出现问题，有环境不一致问题或者代码冲突问题。</div><div>&nbsp; &nbsp; &nbsp;之前了解过<a href="https://www.docker.io/">docker</a>可以应用环境作为一个一体化的服务来使用，所以想看看docker是否能给我们客户端同学提供些方便。</div><div></div><div>二、主要关注点</div><div>（一）docker能运行在哪些操作系统，mac、linux、windows？</div><div>&nbsp; &nbsp; &nbsp;都可以，docker现在release到0.10.0版了，还没到1.0的正式版。官方不推荐将当前的docker运用在生产环境中。</div><div>&nbsp; &nbsp; &nbsp;docker内部开发是在ubuntu上进行了，所以ubuntu上支持最好。mac和windows这些的docker运行方式，现在是在操作系统上装虚拟机（如VirtualBox），再在虚拟机里运行使用docker。</div><div></div><div>（二）docker容器里能运行什么环境，mac、linux、windows？</div><div>&nbsp; &nbsp; &nbsp;docker里能运行的系统称为image，目前image大多是linux。这也挺正常的，mac os x和windows都是商业收费的，怎么可能随便让搭建image。</div><div>&nbsp; &nbsp; &nbsp;所以我想用docker来服务我们客户端环境搭建的话，image的事情还得自己搞下。</div><div></div></div><img src ="http://www.cppblog.com/yangsf5/aggbug/206724.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yangsf5/" target="_blank">Sheppard Y</a> 2014-04-26 16:05 <a href="http://www.cppblog.com/yangsf5/archive/2014/04/26/206724.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软硬件工具诡异事件集锦</title><link>http://www.cppblog.com/yangsf5/archive/2013/11/26/204447.html</link><dc:creator>Sheppard Y</dc:creator><author>Sheppard Y</author><pubDate>Tue, 26 Nov 2013 01:58:00 GMT</pubDate><guid>http://www.cppblog.com/yangsf5/archive/2013/11/26/204447.html</guid><wfw:comment>http://www.cppblog.com/yangsf5/comments/204447.html</wfw:comment><comments>http://www.cppblog.com/yangsf5/archive/2013/11/26/204447.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yangsf5/comments/commentRss/204447.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yangsf5/services/trackbacks/204447.html</trackback:ping><description><![CDATA[<div></div><fieldset><legend><span style="color: #ff0000;">2016-07-11 日更新&nbsp;</span></legend><div><span style="color:red;">此篇博客已经迁移到新博客，并做行文检查和优化排版：</span></div><p><a href="http://blog.clawz.me/2013/11/26/13-few-tool-debug/"><span style="color:red;">http://blog.clawz.me/2013/11/26/13-few-tool-debug/</span></a></p></fieldset><p><a href="http://blog.clawz.me/2013/11/26/13-few-tool-debug/"><br /></a><br /></p><div><p style="font-family: 微软雅黑; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2; margin-right: 0px; margin-left: 0px;"></p><div><div style="font-family: 微软雅黑; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2; font-size: medium;">一、操作系统相关</div><div style="font-family: 微软雅黑; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2; font-size: medium;">（1）win7的任务栏的自动隐藏偶尔会失效</div><div style="font-family: 微软雅黑; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2; font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;工作机器上，不想被IM、邮件等随时干扰，将win7上的任务栏设置了自动隐藏，集中工作结束才集中处理IM和邮件等消息。</div><div style="font-family: 微软雅黑; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2; font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;早上发生了任务栏不再自动隐藏。没搜索到什么可靠的解决办法。</div><div style="font-family: 微软雅黑; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2; font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;自己想到右边的托盘图标有消息的时候会临时弹出任务栏。想想试试来个托盘消息，刚好我的AKG耳机插入的音频孔的时候会弹喇叭，拔插下耳机，点掉那个喇叭图标，任务栏再次隐藏了。搞定。</div><div style="font-family: 微软雅黑; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2; font-size: medium;"></div><div style="font-family: 微软雅黑; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2; font-size: medium;">二、软件</div><div style="font-family: 微软雅黑; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2; font-size: medium;">（1）tmux的pane切来切去会吃掉一列字符</div><div style="font-family: 微软雅黑; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2; font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;解决：将tmux从1.6升级到1.8就不会了。</div><div style="font-family: 微软雅黑; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2; font-size: medium;">（2）chrome里登录github.com一直不成功</div><div style="font-family: 微软雅黑; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2; font-size: medium;">&nbsp; &nbsp; &nbsp;问题描述：工作机chrome里从github.com logout后，再次登录时一直重定向到首页，开启隐身模式是可以的。家里机器上普通模式的chrome都logout/login没问题。</div><div style="font-family: 微软雅黑; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2; font-size: medium;">&nbsp; &nbsp; &nbsp;解决：最开始以为是github官网挂了，隐身模式能登就否定了这个猜测。之后以为是系统装了什么东西，等重新启动后还是不行。如是ctrl+shift+j打开控制台看了下http的返回，response里表示session not found。应该是cookie错乱，清了github的cookie，再一登就OK了。</div><div style="font-family: 微软雅黑; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2; font-size: medium;">&nbsp; &nbsp; &nbsp;感想：NND，作为了一个程序员好不专业，早应该开控制台来debug了。debug还没深入骨髓。</div></div></div><p>&nbsp;</p><img src ="http://www.cppblog.com/yangsf5/aggbug/204447.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yangsf5/" target="_blank">Sheppard Y</a> 2013-11-26 09:58 <a href="http://www.cppblog.com/yangsf5/archive/2013/11/26/204447.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IncrediBuild编译问题</title><link>http://www.cppblog.com/yangsf5/archive/2013/06/25/201288.html</link><dc:creator>Sheppard Y</dc:creator><author>Sheppard Y</author><pubDate>Tue, 25 Jun 2013 04:53:00 GMT</pubDate><guid>http://www.cppblog.com/yangsf5/archive/2013/06/25/201288.html</guid><wfw:comment>http://www.cppblog.com/yangsf5/comments/201288.html</wfw:comment><comments>http://www.cppblog.com/yangsf5/archive/2013/06/25/201288.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/yangsf5/comments/commentRss/201288.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yangsf5/services/trackbacks/201288.html</trackback:ping><description><![CDATA[<div></div><fieldset><legend><span style="color: #ff0000;">2016-07-08 日更新&nbsp;</span></legend><div><span style="color:red;">此篇博客已经迁移到新博客，并做行文检查和优化排版：</span></div><div></div><a href="http://blog.clawz.me/2013/06/25/13-incredibuild-problem/"><div><span style="color:red;">http://blog.clawz.me/2013/06/25/13-incredibuild-problem/</span></div></a></fieldset><a href="http://blog.clawz.me/2013/06/25/13-incredibuild-problem/"><div></div><p>&nbsp;</p></a><p><br />&nbsp; &nbsp; 自己工作机在vc点incredibuild编译时总是显示fail to create  process，周围同事却都没问题。这里记下解决的过程。</p> <p>&nbsp;</p> <p>一、fail to create process</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&#8203;这个错误提示，第一反应就是用户没权限，查看了用户之后，提示这个用户就是管理员。后来各种倒腾都无果。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&#8203;权限的问题一时没解决，想别的办法&#8230;&#8230;</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;试出一个办法：点开任务栏右下角的IncrediBuild  Agent，右键选择Build-&gt;open后打开的Batch Build里编译是完全没有问题的，没有那个创建进程失败的问题。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8203;所以想，是不是因为vc的插件运行时的编译配置有问题，而在Agent独立进程里的Batch  Build里的编译配置比较纯净（例如不用搞那个cmake之类的检查）。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;于是找到Agent开启Batch  Build时的进程为BatchFile.exe，但是在自己写的bat里单独启动BatchFile，启动后弹出Batch  Build，选择编译后却也还是创建不了进程错误。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;偶然在vc的工具栏的IncrediBuild选项里也发现了Batch Build选项，弹出的Batch  Build也是不能创建线程。再次扫兴。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&#8203;所以想，是不是因为做为vc的插件和bat里启动运行时没有创建进程的权限。而在Agent独立进程里运行时能拿到权限？</p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&#8203;最后某此搜什么东西，憋见一个说法，&#8220;右键菜单win7管理员身份运行&#8221;。如果就特么搞定了。&nbsp;</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff0000">解决办法大概是：<span style="color: #000000">win7启动vc时以管理员身份运行，程序鼠标右键有那个选项。另外也可以看看快捷方式里设置。之后从vc里load你的项目。</span>更方便的是将你的vc程序，打开属性的兼容性标签，特权等级里勾上以管理员身份运行此程序。<span style="color: #000000">（设置之后我在TC里不能直接双击启动**.sln，只好右键选择vc来启动）</span></span></p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&#8203;随后想是不是TotalCommand里起的进程没管理员权限，后来试了试不是这样的&#8230;&#8230;</p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&#8203;总结，我的win7用户不是真宗的管理员，虽然控制面板里提示了是！</p> <p>&nbsp;</p> <p>二、其他问题</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&#8203;有时编译完后不能自动stop build，还得手动点。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&#8203;这个看看进程管理器里好多僵死的build相关进程，全干掉。</p><img src ="http://www.cppblog.com/yangsf5/aggbug/201288.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yangsf5/" target="_blank">Sheppard Y</a> 2013-06-25 12:53 <a href="http://www.cppblog.com/yangsf5/archive/2013/06/25/201288.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>调试笔记集锦</title><link>http://www.cppblog.com/yangsf5/archive/2013/05/31/200714.html</link><dc:creator>Sheppard Y</dc:creator><author>Sheppard Y</author><pubDate>Fri, 31 May 2013 03:48:00 GMT</pubDate><guid>http://www.cppblog.com/yangsf5/archive/2013/05/31/200714.html</guid><wfw:comment>http://www.cppblog.com/yangsf5/comments/200714.html</wfw:comment><comments>http://www.cppblog.com/yangsf5/archive/2013/05/31/200714.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yangsf5/comments/commentRss/200714.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yangsf5/services/trackbacks/200714.html</trackback:ping><description><![CDATA[<p>一、gcc</p> <p>&nbsp;</p> <p>二、msvc<br />1.【msvc调试】server初始化时卡在某个点：<a href="http://www.cppblog.com/yangsf5/archive/2013/06/21/201195.html">http://www.cppblog.com/yangsf5/archive/2013/06/21/201195.html</a></p><div>2.【msvc调试】客户端某个流程后server卡住：<a href="http://www.cppblog.com/yangsf5/archive/2013/06/21/201196.html">http://www.cppblog.com/yangsf5/archive/2013/06/21/201196.html</a></div><div>&nbsp;</div> <p>&nbsp;</p><p>三、golang</p> <p>&nbsp;</p><p>1. json文件映射到内存失败</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;json文件里的字符串必须用双引号。<a title="" href="http://www.json.org/json-zh.html" target="_self" data_ue_src="http://www.json.org/json-zh.html">官方标准json</a>的字符串就只能双引号，只是js这种允许单引号，所以之前js的程序里可以解析单引号的json配置文件。</p><p>&nbsp;</p><p>&nbsp;</p><img src ="http://www.cppblog.com/yangsf5/aggbug/200714.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yangsf5/" target="_blank">Sheppard Y</a> 2013-05-31 11:48 <a href="http://www.cppblog.com/yangsf5/archive/2013/05/31/200714.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>msvc编译问题集锦</title><link>http://www.cppblog.com/yangsf5/archive/2013/05/10/200165.html</link><dc:creator>Sheppard Y</dc:creator><author>Sheppard Y</author><pubDate>Fri, 10 May 2013 09:12:00 GMT</pubDate><guid>http://www.cppblog.com/yangsf5/archive/2013/05/10/200165.html</guid><wfw:comment>http://www.cppblog.com/yangsf5/comments/200165.html</wfw:comment><comments>http://www.cppblog.com/yangsf5/archive/2013/05/10/200165.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yangsf5/comments/commentRss/200165.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yangsf5/services/trackbacks/200165.html</trackback:ping><description><![CDATA[<p>&nbsp;</p><p>1.  链接libprotobuf.lib时，报与系统某库冲突，vc建议忽略系统库。这个有可能会出现别的问题。解决办法就是将protobuf的编译&#8220;运行库&#8221;设置和自己工程的设置成同一个，例如均为/MDd时就ok了。</p> <p>&nbsp; &nbsp;这个还是linux下gcc舒服。</p> <p>2. IncrediBuild编译问题：<a href="http://www.cppblog.com/yangsf5/archive/2013/06/25/201288.html">http://www.cppblog.com/yangsf5/archive/2013/06/25/201288.html</a></p> <p>3. Debugging information for *.exe cannot be found or does not match：</p> <p><a href="http://www.cnblogs.com/ustcwhc/archive/2012/04/05/2432829.html">&nbsp;&nbsp;&nbsp;&nbsp;&#8203;&#8203;http://www.cnblogs.com/ustcwhc/archive/2012/04/05/2432829.html</a></p><p><a href="http://www.cppblog.com/yangsf5/archive/2013/06/25/201288.html"><br /></a></p><img src ="http://www.cppblog.com/yangsf5/aggbug/200165.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yangsf5/" target="_blank">Sheppard Y</a> 2013-05-10 17:12 <a href="http://www.cppblog.com/yangsf5/archive/2013/05/10/200165.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cmake用cotire设置gcc的预编译头</title><link>http://www.cppblog.com/yangsf5/archive/2013/04/23/199658.html</link><dc:creator>Sheppard Y</dc:creator><author>Sheppard Y</author><pubDate>Tue, 23 Apr 2013 06:10:00 GMT</pubDate><guid>http://www.cppblog.com/yangsf5/archive/2013/04/23/199658.html</guid><wfw:comment>http://www.cppblog.com/yangsf5/comments/199658.html</wfw:comment><comments>http://www.cppblog.com/yangsf5/archive/2013/04/23/199658.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yangsf5/comments/commentRss/199658.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yangsf5/services/trackbacks/199658.html</trackback:ping><description><![CDATA[<div></div><fieldset><legend><span style="color: #ff0000;">2016-07-08 日更新&nbsp;</span></legend><div><span style="color:red;">此篇博客已经迁移到新博客，并做行文检查和优化排版：</span></div><div></div><a href="http://blog.clawz.me/2013/04/23/13-cmake-gcc-precompile/"><div><span style="color:red;">http://blog.clawz.me/2013/04/23/13-cmake-gcc-precompile/</span></div></a></fieldset><a href="http://blog.clawz.me/2013/04/23/13-cmake-gcc-precompile/"><div></div><p>&nbsp;</p></a><p><br /><br />一、预编译头</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;当工程大了，单机编译速度会很慢。预编译头会提高很大的速度。相关原理这里不赘述，网上很多。（或者老夫有空的时候再补充）</p> <p>&#8203;</p> <p>二、cmake设置gcc的预编译头</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;一开始google到一个国内同行写的cmake宏，用了下，貌似不是很好用。另外作者也表示还是有bug。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;后来找到cotire。目前使用良好。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;</p> <p>三、cotire（compile time reducer）</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;项目地址<a href="https://github.com/sakra/cotire" data_ue_src="https://github.com/sakra/cotire">https://github.com/sakra/cotire</a>。具体使用方式github里对应项目主页已经写的很清楚了（主页man看不明白的可以去看他的src里那个例子），这里只做下快捷备忘。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;步骤：</p> <p>1. clone这个git。</p> <p>2. 将cotire里的CMake/cotire.cmake拷到咱们自己工程的顶层CMakeLists.txt同级目录下。</p> <p>3. 往这个顶层CMakeLists.txt里设置一个变量并include：</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;(CMAKE_MODULE_PATH&nbsp;"${CMAKE_SOURCE_DIR}/CMake")</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;include(cotire)</p> <p>4. 在具体的CMakeLists.txt的add_executable后边再cotire下，如：</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&#8203;add_executable(MyExecutable&nbsp;${MyExecutableSources})<br />&nbsp;&nbsp;&nbsp;&nbsp;&#8203;target_link_libraries(MyExecutable&nbsp;${MyExecutableLibraries})<br />&nbsp;&nbsp;&nbsp;&nbsp;&#8203;cotire(MyExecutable)</p> <p>5. 上边是自动寻找预编译头，也可以自己设置，例如我们从vc跨平台过来的项目，显示设置stdafx.h，只用在cotire前边设置下即可：</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&#8203;set_target_properties(MyExecutable&nbsp;PROPERTIES&nbsp;COTIRE_CXX_PREFIX_HEADER_INIT&nbsp;"stdafx.h")<br />&nbsp;&nbsp;&nbsp;&nbsp;&#8203;&#8203;cotire(MyExecutable)</p><img src ="http://www.cppblog.com/yangsf5/aggbug/199658.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yangsf5/" target="_blank">Sheppard Y</a> 2013-04-23 14:10 <a href="http://www.cppblog.com/yangsf5/archive/2013/04/23/199658.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ssh免密码的访问git服务器bitbucket/github</title><link>http://www.cppblog.com/yangsf5/archive/2013/04/15/199463.html</link><dc:creator>Sheppard Y</dc:creator><author>Sheppard Y</author><pubDate>Mon, 15 Apr 2013 09:46:00 GMT</pubDate><guid>http://www.cppblog.com/yangsf5/archive/2013/04/15/199463.html</guid><wfw:comment>http://www.cppblog.com/yangsf5/comments/199463.html</wfw:comment><comments>http://www.cppblog.com/yangsf5/archive/2013/04/15/199463.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yangsf5/comments/commentRss/199463.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yangsf5/services/trackbacks/199463.html</trackback:ping><description><![CDATA[<div></div><fieldset><legend><div><span style="color: red;">2016-07-08 日更新&nbsp;</span></div></legend><div><span style="color: red;">此篇博客已经迁移到新博客，并做行文检查和优化排版：</span></div><div></div><a href="http://blog.clawz.me/2013/04/15/13-ssh-visit-github/"><div><span style="color:red;">http://blog.clawz.me/2013/04/15/13-ssh-visit-github/</span></div></a></fieldset><a href="http://blog.clawz.me/2013/04/15/13-ssh-visit-github/"><div></div><p>&nbsp;</p></a><p>&nbsp;</p><p>一、安装配置步骤</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这里主要介绍windows下的，linux下类似。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;git服务器github或者bitbucket的代码签出和签入通常有https和ssh两种方式。前者每次操作都要密码，只适合代码修改少的项目。后者是否程序猿们的常规开发。</p> <p>&#8203;</p> <p>1.&nbsp;首先安装git-xx-preview，这是git客户端的命令行方式。</p> <p>2.&nbsp;打开git&nbsp;bash，在命令行里输入ssh-keygen.exe&nbsp;-C"邮箱地址"&nbsp;-t&nbsp;rsa。然后一路回车，不要输入密码。然后把id_rsa.pub加到bitbucket的ssh&nbsp;key里。</p> <p>3.&nbsp;之后clone直接用对用项目的ssh访问方式的地址。</p> <p>&#8203;</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;官方手册：</p> <p><a href="https://confluence.atlassian.com/display/BITBUCKET/How+to+install+a+public+key+on+your+Bitbucket+account" data_ue_src="https://confluence.atlassian.com/display/BITBUCKET/How+to+install+a+public+key+on+your+Bitbucket+account">https://confluence.atlassian.com/display/BITBUCKET/How+to+install+a+public+key+on+your+Bitbucket+account</a></p> <p><a href="https://help.github.com/articles/generating-ssh-keys" data_ue_src="https://help.github.com/articles/generating-ssh-keys">https://help.github.com/articles/generating-ssh-keys</a></p> <p>&#8203;</p> <p>ps:&nbsp;windows下GUI形式的git客户端TortoiseGit。TortoiseGit的安装需要时OpenSSH,&nbsp;Git&nbsp;default&nbsp;SSH&nbsp;Client方式安装，否则不能使用ssh这种免密码的方式了。</p> <p>&#8203;</p> <p>二、会出现的一些问题</p> <p>1. 升级TortoiseGit后，发现pull之前的代码出现错误：</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8203;Disconnected:  no&nbsp;supported&nbsp;authentication&nbsp;methods&nbsp;available</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&#8203;这是因为升级后的TortoiseGit将ssh  client指向了自己的那个plink客户端。这个升级后的客户端不是之前ssh-keygen生成密钥对应的那个，所以建立不了ssh链接。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&#8203;解决办法两个：</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&#8203;&nbsp;&nbsp;&nbsp;&nbsp;&#8203;（1）最简单的办法，将TortoiseGit-&gt;Settings-&gt;Network-&gt;SSH的地址更改为那个git-xx-preview里的，我的改为了E:\dev-tool\Git\bin\ssh.exe。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&#8203;&nbsp;&nbsp;&nbsp;&nbsp;&#8203;（2）自己重新按上边的流程重新设置一遍吧。</p><p>&nbsp;&nbsp;</p> <p>2. 多个git账号共存的配置：</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&#8203;&#8203;<a href="http://4simple.github.io/docs/multipleSSHkeys/">http://4simple.github.io/docs/multipleSSHkeys/<br /></a>&nbsp; &nbsp; </p><p>注意事项：</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;.ssh/config里的配置要注意，</p> <p>Host xxx.xxx.com<br />Hostname xxx.xxx.com <br />IdentityFile  /c/Users/username/.ssh/xxx_rsa</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;这里host和hostname最好完全一致为你对应的git仓库网站的全域名，否则偶尔仍提示需要输入密码，即仍不通过。</p><p>&nbsp;</p><img src ="http://www.cppblog.com/yangsf5/aggbug/199463.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yangsf5/" target="_blank">Sheppard Y</a> 2013-04-15 17:46 <a href="http://www.cppblog.com/yangsf5/archive/2013/04/15/199463.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>$export LANG=C</title><link>http://www.cppblog.com/yangsf5/archive/2008/11/21/67449.html</link><dc:creator>Sheppard Y</dc:creator><author>Sheppard Y</author><pubDate>Fri, 21 Nov 2008 01:44:00 GMT</pubDate><guid>http://www.cppblog.com/yangsf5/archive/2008/11/21/67449.html</guid><wfw:comment>http://www.cppblog.com/yangsf5/comments/67449.html</wfw:comment><comments>http://www.cppblog.com/yangsf5/archive/2008/11/21/67449.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yangsf5/comments/commentRss/67449.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yangsf5/services/trackbacks/67449.html</trackback:ping><description><![CDATA[<p>vim看源码，shell这句，就可以看中文注释了。<br>暂时不知道啥意思，有空再看看shell方面的书。</p>
<img src ="http://www.cppblog.com/yangsf5/aggbug/67449.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yangsf5/" target="_blank">Sheppard Y</a> 2008-11-21 09:44 <a href="http://www.cppblog.com/yangsf5/archive/2008/11/21/67449.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>