好久没更新了,随便写点什么。

刚刚收拾了硬盘准备明天再重做一次系统……虽然仔细想想必要性似乎是没有,但是既然东西都整理好了不收拾下又有点对不起自己。

主要是前阵子帮B站补档装了一堆东西,最近捣鼓各种C的编译器,又把系统折腾的看起来一团糟(Code::Blocks装了两遍……我都不知道自己在想什么)。其实从某些角度上讲系统仍然是挺干净的。不过正准备装VS2012,想了想还是准备个干净点的系统比较好。

————————

Linux那边好久没碰了。awesome配置的比较顺手了。虽然配置文件相比较那些高手写的还是略显杂乱,很多东西也都是抄的依云的,不过总算是成型而且能用了。挂在了GitHub上,但是想来也没什么人会来clone。过两天我大概会写点心得之类的东西。

不过其实我是在打算着不用awesome了的。美观确实是一个角度的考虑。虽然awesome自身平面化的风格其实没什么不好,但是在很多东西的渲染和表现上还是问题比较多,比如窗口的透明和叠加。不能说是awesome的错,毕竟不是一个为美观所考虑的WM。

另外awesome的快捷键略微有一点问题,它对Win键的占用和捕获在用虚拟机的时候略有点头疼。我对顺手有些比较病态的执着,还是挺烦躁的。

碰巧又看到了Razor-qt,于是想要不要跟Compiz搭配着试试看。出于对awesome平铺式布局的怀念我还特意找了找发现compiz有平铺布局的插件。

唉但是基于Qt的好应用又大多是绑了KDE的颇为头疼……

————————

说到Linux就不得不提到Deepin。我是越来越喜欢这个团队了。“免除新手痛苦、节约老手时间”这一条我觉得Deepin真的是做的相当不错。自己开发的音乐播放器和视频播放器也非常符合国人的习惯,简洁而功能可靠。

也许唯一称得上是缺憾的就是,这个团队毕竟不大,做不到像Ubuntu那样开枝散叶的衍生好多版本。包括犹抱琵琶半遮面的KDeepin也不过是团队内的KDE控一时兴起做的。对我来说比较遗憾的就是没有不安装DE的版本,比如Ubuntu的Server或Alternate那样的。别人配好了awesome之后都为各种应用头疼,挑选不绑定Gnome或KDE组件的文件管理器、网络管理器之类的。而我直接拿Nautilus和nm-applet来用就好了,反正已经装好了,我也不差那点硬盘空间。这样也少了点乐趣……看别人的awesome都是配着PCMan来用,只有我用Gnome带的Nautilus也是挺奇怪的=v=

最近搜狗号称要和Deepin合作推出Linux版的输入法,表示非常期待。Deepin前阵子的大会上也有演示,看起来完成度已经蛮高的了。看了视频之后立刻觉得ibus和fcitx之流都不怎么顺手了……

————————

想来真是不爽啊……某人都常年呆在Mac下不出来了,我却至今还是大部分时间呆在Windows底下。不过我对Linux的欲望在VPS上基本得到了满足也是一个因素吧。

————————

浪费了不少银子之后我总算稳定在某KVM的VPS上了。虽然KVM略折腾了(我之前一直没尝试过KVM架构的),但是胜在够便宜,而且配置也精巧合用。GitHub传文件速度其实很慢,所以我打算拿这台做我的代码仓库……他喵的我有什么代码可管理么=。=!

有个私有的服务器的感觉是相当不错的。我在考虑干脆学Node.js也直接在VPS上远程测试好了,反正npm之类的东西还成天被墙……git的官网至少是已经获得xGxFxWx认证了(GitCafe老大语),然后GitCafe自己做了个反向代理的站点来帮助这边的用户访问……嘛这种行为也不知道会不会触到什么霉头。

————————

说回到Windows这边。

最近在捣鼓些VC之外的编译器还有IDE之类的。接触了挺多的好东西。

比如Pelles C。它自带LLC编译器和链接器,支持完整的Win32 API,界面和VC6一样简单但是功能堪比带Visual Assist X的VC。唯一的缺憾或许是它是纯C的。在纯C的开发上我的经验还是不多。比如某些全局共享的配置之类的,C++我知道可以用类的静态成员来实现,而C……难道真的让我用全局变量么=。=?但是对纯Win32 API开发来说,算是个利器了。

再比如MinGW的GCC。我现在手头有三套MinGW……一套nuwen的,两套TDM的(32位和64位)。目前来说比较喜欢nuwen的,因为它集成了可用的git,还整合了大量的可用的库(比如Boost)。遗憾是它的msys实际上是不全的,ls之类的都是没有的,我还是要忍受每次列目录先错打一个ls再重新打一个dir的痛苦……

但是单纯从MinGW的GCC Toolchain来说,和原版似乎是区别不大的。除了它把MinGW本来的mingw-g++.exe这样的文件名只留下了g++.exe……结果导致我要手动修改下Code::Blocks的配置才能正常运作。

TDM是Code::Blocks以及其它一些Windows下使用GCC的开发工具所喜爱的MinGW版本,尤其是64位。TDM-GCC只是一套纯粹的GCC Toolchain,没有msys和其它一些额外的工具。

要说区别的话,MinGW现在默认使用DW2的exception handling,而TDM默认使用SJLJ的方式。好处是SJLJ模式编译出的程序异常最终能够被Windows捕获,而DW2模式编译出的程序异常无法向上传递至非DW2模式编译的栈帧……但是对于我这种连上面这段话都是翻译来而不太了解具体原理的人来说,就不是那么重要了。

然后还有Code::Blocks。坦白说我只是装上了并且编译了下wxWidgets的测试,对它的具体使用还不是很熟悉。而且用过Pelles C之后CB看起来也真的是……挺复杂的了。不过评价是蛮高的,而且和wx以及GCC整合都比较紧密。

最后总算是尝试了下wxWidgets。一开始用的wxPack但是……问题挺多,程序总是跑不起来。于是还是自己动手编译了一下,顿时好用了。嘛上次MySQL Connector也是一样,还是自己编译的比较好用。wxWidgets教程还是比较详尽的,甚至对我上次用MySQL Connector的某些不太明白的点都搞清楚了。

看了下wxWidgets程序的基本结构,其实和MFC是挺类似的东西。据教程上讲,wx的事件处理函数绑定也是用的MFC的宏方式,而Qt用的则是虚函数方式。

————————

上网络安全编程课,接触了不少socket。又读了读之前买的C++跨平台开发的书。觉得微软真是挺有意思的……M$号称支持POSIX,但是(几乎?)所有的函数之前都加了下划线…………你这有毛用啊!到头来还是不能一份源代码跨系统编译啊!

然后在socket相关的函数上,虽然函数名是统一了……但是函数参数居然在某些地方不同……这就更头疼了。

————————

说到socket又想起来,考虑过wx和WinSock的合作问题。wx提供了一个wxSocket的组件,但是功能相当少。用作简单的TCP连接之类的大概还可以,可是既然不能用原始套接字那对网络安全编程来说价值就不大了。于是还是要include那个winsock2.h才行。

但是MFC可以简单的用WSAAsyncSelect来绑定事件和消息,不知道wx里面该怎么做。

————————

最近还准备继续折腾Node.js看看。想来想去node还是先随手写个博客用用好了……更高级的没什么需求也没那么多精力。

计算机网络课的老师想拉个队伍做个课程站点。想用常见的AMP平台来做……班里有几个没基础的已经去试了,老师让回来自己做点东西。下周我打算也去问问凑个热闹。

坦白说我对PHP的兴致是不大……纯PHP直接开始开发是相当累的一件事情,基于页面的模式也比较落伍。最近几年比较流行的是快速开发的框架,不说Ruby on Rails和Node.js的Express这种生来就是基于路由的,即使是PHP本身也是各种MVC框架层出不穷。说我喜新厌旧也好,但是不追逐那些新的、不断发展的技术是很难获得成功的,即使我如今开始接触RoR和Node,也是属于相当晚的。

Apache我接触的也比较少……nginx倒是比较多。没办法……谁叫VPS的内存都要抠着用呢……

从目前的状况来看,参加这个项目的话,运维是挺适合我的。我现在挺喜欢配置服务器的……前端大概也能接受。CSS和JS我有稍微认真的接触过。后端实在是……如果是PHP的话,好感欠奉啊。

其实纯从知识广度上来讲我有一定的信心做个Leader。但是这种项目扔到我手上,我怎么可能接受不采用git做源代码管理,不用Redmine或至少Bugzilla之类的东西做项目管理和缺陷追踪=。=?虽然软件工程我自己都懂不太多,但是用Issue这种形式管理bug的好处显而易见得我不想不用啊。我没强迫同志们都在Linux下干活就不错了吧大概……

但是看看周围几位的基础……实在是挺头疼。有些基础的概念都搞不清楚,真的是很难指导甚至沟通。

————————

差不多就这些吧。主要还是技术方面最近遇到的一些东西。写博客这件事情对做技术的人来说很重要的一点就是总结遇到的问题,帮助自己梳理知识。说来Blog本身就来源于网站管理员记录管理工作的web log。

乱七八糟写了不少,看字数统计都2k6了……一口气从10点写到现在,赶紧收拾收拾睡觉了。

————————

哦对最后再写几句前阵子想通的问题:

1.“并行”和“并发”是不一样的。假期里在看函数式语言的优势,以及node.js的一些内容的时候,我对这个概念的理解相当的混乱。

2.make的-j选项并不是实现并行计算,而是在执行编译任务的时候,可以利用多核心,同时进行多个编译任务的并行处理。

————————

睡了