摘要: 相信有不少人和我一样,虽然是做纯linux开发,但并不排斥windows,并且喜欢在windows下面的使用各种好用的工具来让linux的编程工作变得更加方便。实际上每一个系统都有他的过人支持,windows拥有无数的好用的窗口程序,但windows的命令行工具基本算是退化到了和人类指甲盖的一样... 阅读全文
posted @ 2015-12-21 00:22 十二点记 阅读(1477) 评论(2) 推荐(0) 编辑

      相信有很多鞋童和我一个样是一枚Linux码农(我现在还是嵌入式方向). 做Linux开发势必需要一个Linux环境, 大多数开发者会首先选择一个Linux发行版, 其中Ubuntu LTS版本应该是选取最多的一个了, 原因也很简单,  该发行版简单易用的同时足够稳定和普及. 选择完发行版就要选择怎么安装了, 一批人会选择将linux系统直接安装在开发主机上来产生一个纯的Linux环境. 这种环境的优点是纯净和速度快, 不过也有一个明显的缺点:就是Windows上大多数好用的东西都与你无缘了. 为了充分利用windows和liunx两大系统各自的优势, 我想肯定会很有多人和我一样, 最终的选择是Win10(或Win7)主机+Virtualbox(或Vmware)虚拟机的搭配来实现双系统共用, 这种搭配在几年前有一个弊端是虚拟机的性能太差而导致有些人无法接受. 不过这个缺点在近几年已经没有了, 因为在 i5+固态盘+8G内存配置满天飞的今天, 硬件速度已经不再是问题, 加上CPU的虚拟化的支持以及虚拟机在3D方面的强化(安装增强工具包), 只要你不做linux游戏开发, 我想再说虚拟机速度慢就算是个人偏见问题了.

      使用windows+虚拟机搭配的一个小问题是在两个系统间切换并不那么的方便自然, 因为你每次进入虚拟机后键盘就被虚拟机独占了, 想要切回windows主机, 你得先按下一个切换键盘控制权的快捷键(virtualbox里是右边的Ctrl键). 像我这种嵌入式的linux开发人员几乎所有开发活动都是在终端里完成, 为了更加方便在windows和linux之间切换程序(同时也为了使用windows下我看着最顺眼的字体: Microsoft YaHei Mono, 小小的广告一下), 一个很自然选择便是通过 Xshell/Putty/SecureCRT 这类SSH登录软件来在windows上透过网络来登录虚拟机中的Ubuntu.

      用到了SSH, 那就必须配置好虚拟机的网络模式, 怎么配置虚拟机的网络模式就是今天主题了. Net模式肯定是不能用的(单通), 我想大多数小伙伴和我之前一样, 一直使用的模式肯定是桥接模式, 这种模式最大的优点是他的外在表现几乎和实际的网卡没有什么区别, 结果是虚拟机看起来就像是一台完全独立的PC主机插在了同一个路由器上一样. 不过这种模式还是有一些缺点, 其中最关键的缺点就是桥接模式的通畅与否取决于外部的路由是否通畅. 也就是说, 如果你的电脑的有线或无线网络没能正常的连接网络, 那么你的windows主机和Linux虚拟机将没法联通, 结果就是没有外网SSH就无法正常使用, 这也意味着如果你用笔记本在一个没有网络的环境中干活, 你将不能使用SSH登录虚拟机! 另一个缺点也是由这个关键的缺点引起的,  如果你的开发环境在一台笔记本上, 同时联网方式是wifi, 你正常的开了几个SSH连接来做开发, 中午吃饭或者晚上睡觉时, 你的想法将会是:不关机了吧, 一会来又要开机打开一堆软件, 麻烦! 于是你很开心的让电脑睡眠或休眠了, 下午或第二天开机唤醒你的老朋友时一个不太happy的事情可能会发生: 所有SSH连接都断开了, 于是你不得不一个一个的将SSH连接重新关闭再重新打开, 如果你没有用tmux的话, 那么更不爽事情也将会发生:所有你终端上所有打开的软件都关闭了!!! 好了, 我就是这种情况, 虽然我用了tmux, 但还是很不爽每次休眠都要重连SSH. 出现这种情况的原因也比较显而易见: 睡眠后wifi将有可能自动关闭(休眠后wifi必然会关闭), 当你重新启动后wifi将重连, 虽然重连后的ip一般不会变, 但这个连接已经不是睡眠之前的连接了, 对于SSH来说, 连接都变了, 它自然是会罢工的.

       这个问题我忍受了很久, 直接今天闲来无事, 想看看有没有解决办法, 在尝试了几次之后, 还真的找到了一个比较完美的解决办法:

  不论是virtualbox还是vmware, 都有一个网络模式叫Host-only, 这个模式特点是他自己在主机中虚拟一个网卡, 如果你安装了virtualbox, 那么"网络连接"中多出来的"VritalBox Host-only Network" 网卡就是它虚拟出来的网卡, 如果我们在虚拟机中配置使用host-only模式, 则虚拟机中网络将会连接到这个块虚拟的网卡上, 他的IP也将由这个虚拟网卡自动分配, 默认情况下这个host-only虚拟网卡主机IP地址是192.168.56.1, 分配给第一个虚拟机的地址一般是192.168.56.101. 由于虚拟网卡的存在, 在默认情况下的如果通过192.168.56.101去SSH连接虚拟机, 即便主机没有外网连接, 主机和虚拟机之间也总是互通的, 这就解决了上面提到了第一问题, 实现了在没有外网的情况下正常使用SSH登录虚拟机. 怎么样是不是小开心了一下, 更加令人兴奋的是由于该网卡是虚拟的, 因此即便是休眠也不会出现唤醒后断开网络重连的问题, 人家根本不会断开!!! 这又解决了上面提到了第二个问题!

  喔, 我想你肯定会问这个看起来IP比较独特的网卡应该没有外网连接能力吧, 没错, 这货的确不能直接连接外网! 但是, 有两个方法可解决这个问题: 第一个方法是如果你主机的真实网卡是有线网络, 那么可以过在网卡的属性中设置共享网络来解决. 不过这个方法对wifi网卡无效. 第二个方法就比较通用了, 也是像我这种使用笔记本+wifi的唯一解决方法: 在你虚拟机配置项中额外勾选增加第二个网卡, 将其设置为桥接模式! 这样一来启动虚拟机之后Ubuntu将拥有两个连接, 一个是host-only获得的IP,它几乎是固定的192.168.56.101, 另一个则是在外网通畅的情况下外网路由器DHCP分配的IP. 这两个IP都很有用, 192.168.56.101可以用来实现无论何时Windows都可以通过SSH连接虚拟机的需求, 同时由于这个ip比较固定, 因此的SSH软件完全可以写死配置中的IP地址为192.168.56.101, 另外由于这个网卡只和本地主机有关, 因此访问速度永远都是杠杠滴. 第二个IP是从路由器那里得来IP, 用处就和单独的桥接网络一样了, 你访问外网将自动使用这个IP, 同一个路由器局下的域网络中的设备对虚拟机主机访问也可以通过这个IP来实现, 因此, 诸如 FTP/NFS等嵌入式开发需要用到的常用开发方法都是可以正常进行的.

  怎么样, 大声的告诉我, 这个方案完不完美?!

posted @ 2017-10-13 17:18 十二点记 阅读(1843) 评论(3) 推荐(1) 编辑
摘要: 这几天开始使用firefox+pentadactyl来搭建一个开源、可扩展、完全绿化的浏览器环境,以便随身带着使用,其中firefox的使用了24.0的长期支持版, 这边版本稳定, 快速, 兼容性好, 重点是pentadactyl最高只支持到24.0。在网络上找了半天, 终于找到了一个真正完绿化... 阅读全文
posted @ 2014-12-28 01:45 十二点记 阅读(1029) 评论(0) 推荐(0) 编辑
摘要: supertab是vim的一个出名的插件, 相信会vim的人没几个不知道的, 我在之前的>中首先说明的也是它, supertab实现的功能简单的说就是用tab来来调用vim的补全功能, 这和linux的终端操作习惯完全一致, 并且方便而合理. supertab是我最早接触的vim插件, 保留至今而没有抛弃, 当然很多人可能已经不再使用这个插件, 因为更加自动化的nerocachecomplete和youcompleteme插件完全可以取而代之, 不过个人保留supertab的理由是用它来实现就近补全, 也就是vim自带的ctrl+p补全, 关于为何这么做我已经在>中用相当多的话解释 阅读全文
posted @ 2014-01-13 00:38 十二点记 阅读(1763) 评论(0) 推荐(2) 编辑
摘要: 在之前我写的>中最后提到将vim和tags成和更新的全部集中到一个键上来. 这在实践中证明是相当方便的, 不过依然村庄几个问题如下:1->由于需要顺序生成ctags和cscope的tag,之前的映射使用执行每条命令之后增加一个的方式来继续向下执行, 这样在按下之后终端会立刻出现的三个"请按Enter键继续的字样", 当然这个其实不算是一个真正的问题, 只是每次看这个它们闪过还是会感到晃眼.2->当vim中有超过一个buffer的时候按下f12更新tags结束的时候当前编辑的位置会莫名其妙的跳转一个位置, 这个时候需要使用ctrl+o才能回到更新之前的位置. 阅读全文
posted @ 2014-01-12 20:35 十二点记 阅读(1421) 评论(0) 推荐(0) 编辑
摘要: 最近我的vim又让我闹心了. 问题出现在supertab的补全速度上, 有时候按下tab键半天才弹出补全列表, 即便是弹出了列表在列表上下移动也变得的相当缓慢, 这让我的很是蛋疼. 在完全无法接受这个问题之后决定再一次踏上折腾vim之路(已经没有折腾vim好长一段时间了). 之前有一次vim出现tab补全的卡死问题折腾了好几个小时才把原因找到, 这次这个更加诡异, 没有折腾之前就觉得一定不简单. 后来果然应验, 这个问题足足花掉了我一整天的时间! 首先是缩小问题的范围, supertab在我这里是为了实现就近补全而用的, 也就是指supertab这里充当了ctrl+p的映射的功能. 这个... 阅读全文
posted @ 2014-01-06 18:15 十二点记 阅读(3284) 评论(0) 推荐(0) 编辑
摘要: 在我之前的>和>中曾经成功的将vim的supertab和UltiSnips共用一个tab键, 这样做的优点的两种补全的触发都变得比较方便, 存在的问题有如下几点:1. supertab不能使用最新版本, 必须使用vim.org中出现的2.0版.2. UltiSnips虽然可以和supertab正常的共用的tab键, 但由于两个插件的共同作用导致tab键在正常的supertab(保持默认的模式)触发后是上选功能但在其他补全方式中却神奇的变成的下选功能. 重点是shift+tab键也变成的下选功能.3. 两者共用的tab键有时候还是会出现相互误用的问题.综合上面的问题, 现在决定两二者 阅读全文
posted @ 2014-01-06 11:26 十二点记 阅读(3016) 评论(0) 推荐(0) 编辑
摘要: 关于补全的方面要说的的确很多, 这里选择分为两个章叙述. 如果你想学vim, 你需要有很强的耐心, 如果你想锻炼这种耐心, 你可以试着先看完我之前的文章. 好了, 下面继续我们的vim补全吧. vim补全1中曾经提及到supertab在更换版本后和UltiSnips成功共用tab的解决方案, 在此之前主要的叙述主要在做一件事情:将vim的tags补全和字典补全从supertab的补全功能中分离出来, 让supertab只负责一件事情:就近补全. 这样子做似乎没有必要, 因为我们完全可以将他们全部放到supertab接管的tab键上来, 下面要说的就是为什么我们需要这样做. 从最初的叙述... 阅读全文
posted @ 2013-12-12 22:56 十二点记 阅读(5771) 评论(1) 推荐(1) 编辑
摘要: 关于vim的补全最初的感觉是蛋疼, 真正的蛋疼! 由于在接触linux之前曾经在windows下面学过一段时间软件开发, 那时使用的是vs2010, 现在看来虽然vs启动相当的慢, 编辑器的定制和配置能力有限. 但vs在编程环境上的操作便捷性的确是一个优点, 毕竟我们都是普通的程序员, 达到使用记事本也照样写代码的大牛级水平, 这辈子估计希望都不大. 所以虽然我知道vim原始操作上的原子特性如果熟练之后将具备最为灵活的编辑能力, 我还是的选择的将vim配置的向IDE靠近. 关于vs现在留给我印象最深的是他的VAX插件. 这个有tomato公司出品的第三方补全插件, 让VS拥有了相当高效的补.. 阅读全文
posted @ 2013-12-12 20:18 十二点记 阅读(1585) 评论(4) 推荐(0) 编辑
摘要: 好长时间没有上来更新了, 今天趁老板不再上来休闲一下. 本章要说的是和vim的tags相关的内容. 之所以在跳转之后就说明tags是因为这个功能相当的重要和实用. 好的东西自然是需要提前分享的. 首先, 要说的是关于vim使用ctags, cscope的相关教程, 网络上已经有相当详尽的文章可以搜索到. 这里不会在重复大多数网络上可以搜索到的入门教程了. 并且在此提醒阅读本篇博客的读者, 如果你现在对ctags和cscope等并不了解, 那么请先在网络里google所有和他们相关的教程, 花上大约至少一天上的时间认真研究他们的基本用法. 等到对他们有了基本的了解之后再回来看这里的说明你将... 阅读全文
posted @ 2013-12-03 19:12 十二点记 阅读(4401) 评论(1) 推荐(4) 编辑
点击右上角即可分享
微信分享提示