菜菜博士

博士在网络的家

模板多态

需求 jack 正在实现一个 avhttp , 并且也已经相当的可用了。 他在实现http协议的时候,就对 HTTPS 和 HTTP 的实现做了一个相当重要的决定 —– HTTPS和HTTP必须是统一的代码。 那么,要优雅的做到这一点,显然只有一个办法:多态。 但是很不幸的是,SSL 需要 asio::ssl::ssl_stream , 而 TCP 则用的是 asio::ip::tcp...

深入理解C++

说一下我为何回归 C++ 了吧 : 简单: 生命有限。 用 C , 固然是只有一个范式, 学起来容易, 上手简单, 可是需要操心的问题太多了: 内存泄露, 野指针, 各种断错误。 可能你会说, 内存管理,小心点就可以了。 但我觉得,如果你总是用 200% 的精力去避免内存泄露,你就没有精力开发正常的软件了。你会对软件的逻辑进行折中,因为你实在没有精力开发需要你花很多时间写逻辑的代码了。 于...

随机编程

这个想法由来已久, 是从和 Jack 的多次交谈中逐渐悟出来的天朝程序员惯用编程模式. 所谓随机编程, 就是 _随机的_ 改动一些代码, 以求程序运行通过. 但是并不知道为啥这样修改程序就能工作了. 随机编程严重的依赖于单元测试. 给测试人员带来极大的负担. 随机编程的程序员, 对问题不求甚解. 以通过测试为编程目标. 出现问题就一头扎进 改代码 的 重复性 随机性 工作中 为啥一...

使用 boost 执行 base64 解码

base64 编码最初是为了电子邮件开发的。因为电子邮件是个文本协议,不能传输二进制数据,甚至中文也无法进行传输。只能传输ascii编码的文本。这样一来就诞生了多种将二进制数据编码到ascii里的编码方案,base64是其中之一。 base64是一种非常简单的编码,只要进行一次迭代即可完成解码。 什么?一次迭代??? 这就让我们有机会借助 Boost 提供的迭代器非常简洁的写出base...

在高处编程

C++之父在一个讲座上说过,C++是一门轻量级的抽象语言。轻量级,意味着C++尽量减小因为多加的抽象带来的负担。抽象语言,意味着C++有着很强的抽象能力,C++的抽象能力,有了BOOST这样的库之后被极大的提升了,配合着BOOST, 我将 C++称呼为 编译型脚本。 C++是一门抽象语言,使用C++的时候,千万不要去思考编译器到底是如何安排内存的。认真你就输了。使用C++的时候,千万不要去...

无栈协程

在开始之前,先来看一段代码  void pop3::operator() ( const boost::system::error_code& ec, std::size_t length ) { using namespace boost::asio; ip::tcp::endpoint endpoint; std::string status; std::stri...

Why ubuntu sucks and everyone should not use it

这篇文章早就应该发了,但是我太自私,只管自己躲在Gentoo的树阴下乘凉,不为那些在ubuntu的刀山祸害里挣扎的人提供援助。 所以,我觉得为他们提供无偿的援助——告诉他们,ubuntu很烂很烂。 ubuntu的烂要分两个部分,其一是debian的烂,其二是ubuntu的烂。 # debian之烂 debian的烂,体现在包管理器上,特别是debian特色的拆包习俗。 debian的...

博客迁移到 github pages

越来越觉得花钱买一个 VPS 是个太浪费钱的事情了,而且也没那么多精力去维护服务器,于是将博客迁移到 github 就成了上上选择。 现在终于完成迁移了,并且也开启了评论功能,真的是非常不错。可以使用 vim 编写博客了,这真的是太爽的事情了。 目前的 url 是 http://microcai.org, 支持 RSS Feed, url是 RSS Feed 每篇文章都可以使用评论功能...

2012 年总结

过去一年里,啥事情没干。 2012年来的时候,唔说,世界末日到来前不拼命工作。于是就每天宅家里啥也不做了。 要说啥都没做也不对。 乘宅在家里不用工作的机会,把很久以前丢下的C++重新学习了。 重新学习C++是一个机缘巧合的事情,jack 一直是一个C++程序员,重度Boost粉丝。一直向我灌输boost。不过,我一直和云风一样,总是黑C++,说只用C开发。 不过C++11的发布让我...

avplayer 开源软件组织成立,域名 avplayer.org

avplayer.org 项目组成立了。 avplayer 的宗旨是开发易于使用的跨平台 AV播放器框架。avplayer自带一个用 AV播放器框架写的AVPLAYER播放器。 依托于 AVPLAYER本组织还开发了用于成员沟通的 AVBOT (原 QQBOT)。 AVBOT 实现了 QQ/IRC/XMPP的互通。 为了更科学的上网,本群再次发力,开发了 AVSOCKS 科学操长城软件。...

python是个渣语言

一直以来我都表达 python 是个糟糕语言的观点,但是没有深入的解释。 计算机一直都是“工具”,意味着我们是拿它干活的,也就是所谓的提高生产力。 指挥计算机干活的重要工具就是编程语言。计算机并不是训练来干活的,是编程来干活的。编程语言的效率有2个指标:编写干活指南的效率和机器人执行的效率。 在人力成本低于硬件的时候,人追捧的是执行效率。 人力成本越来越高的时候,人开始追求编程的效率...

内存管理随笔

思考一: 任何一个程序,只要不是 helloworld 那样的简单程序,必然会用到内存管理。内存管理是写程序不可避免的过程。C程序员最大的恶魔就是野指针和内存泄漏。这是每个C程序员的噩梦。C++继承了C的缺陷,基本上半斤八两。而且C++还可以自由重载new操作符,给内存管理更加重了复杂性。 我常常在想,写BASH脚本的时候,我们有管理过内存么?即便是java那样的语言,内存管理也是后台进...

C++ 王者归来

曾几何时,学会了C语言。安装了VC6这个神叉IDE。 然后被迫开始CPP路程。由于C++兼容C,所以一直在以C的方式写C++。然后慢慢的开始学写C++代码。写C++代码是从MFC开始的。慢慢的,我学会了用class,感觉是个比struct好用的多的结构体。再慢慢的,我学会了继承,还有… 多重继承。 MFC 就是我的导师。开始不停的向MFC学习。既然用了c++的继承,就认识到了继承的陷阱。...

善待笔记本,启用intel集显的节能模式

在 XP 下用的时候,用计量插座,空闲功耗大概在 13W ~ 14W 之间。 在 Gentoo 下用的时候,空闲功耗也在 20W 之上。 很头痛。 CPU 的节能已经打开,一直在 800M 最低频率运行呢! 恩,应该是 GPU 费电啊~~~ 有什么办法能让 intel 的 GPU 工作在节能模式呢? 答案是添加隐含的内核引导参数 i915.lvds_downclock=1 i91...

i7 拯救了 Gentoo

好多年以前,我开始了 Linux 之旅。 我频繁的切换发行版,从 RedFlag 5 到 RedFlag 6 再到 ubuntu 8.10 马上又切到 Fedora 8 然后是 9 10 , 期间又重回 RedFlag 7 过,间或也使用过 debian 和 puppy。 如此频繁的切换发行版,只不过是我觉得它们都没有满足我的要求。我不停的切换,企图寻找到一个可以一劳永逸的满足我的需求的...

别了 AMD . 来了 Intel.

刚开始接触到电脑的时候,正是 K8 无限风光, P4 高频低能的时候。那个时候起心里就有了 amd 的 U 便宜又好,低频高能的种子了。 到自己 DIY 的时候,就买了 AMD 的 U . NVIDIA 的芯片组。 那个时候扣肉还没有出, AMD 的 K8 余光依旧,K10 风头正好。AMD 率先推出双核,intel 还是伪双核, etc . 当时买的是入门双核 4200+ . 配合 M...

给老婆的 F41M (注意后面有个M ... M M M M (都是回音)) 升级到 T9300 CPU 和 4G 内存

上回说道,老婆大人换到 ubuntu 后突然觉得电脑好慢好慢 。。。 。。。 慢到蜗牛都吃到葡萄了这 Unity 界面还没显示出来。 嗯嗯,言归正传。 老婆大人的电脑是 08 年买的,好早(老)保护的比较好,外观还很新。不过,鲜丽的外表掩饰不了那落后的奔腾的芯。 废话不说,晒一下配置 CPU: T2330 内存: 1G 硬盘: 160G@5400RPM@50-30MB/s 芯片...

原来 Linux 已经慢到这种地步了啊

因为特别喜欢 Gentoo , 所以自从2年前的一次偶然,我用上了 Gentoo 后就在也没有换过系统。 Gentoo 的好处非常多,多到数不清。 连老婆大人的系统我都给折腾成了 Gentoo. 不过,由于疏于维护,老婆大人的 Gentoo 出了些许毛病,主要是 Gnome 3 太不稳定,太不给力,太容易崩溃。 老婆坚持下,换了 Ubuntu 一直以为老婆大人的破硬件不给力,所以进...

从 RedFlag 到 Gentoo, 多少年,一瞬间

很久很久以前,在我还认为米国人生活在水生火热之中的时候,我认识了 Linux , 于是在买了电脑前就去亚马逊买了 Fedora 8 的DVD … 等我的电脑 DIY 好了,我立刻就安装了 Fedora 8 但是… 似乎连个 mp3 都播放不了。 就在我寻找如何解决的时候,我发现了 RedFlag 6。 于是,我试试看的态度安装上了 RedFlag, 呵呵,果然 mp3 啊,rmvb 什...

定期发布 Release 不适合现代 Linux Distro

我想说,定期发布 Release 这种模式已经过时了! 想想看 ubuntu 的 LTS 版本是如何在生命周期结束前就过时的吧! 上一个 ubuntu TLS 版本,居然不包含 gtk3 , 如果要实用一点,基本上要添加一 大堆的 PPA. 而使用 PPA 基本上就和 TLS 的理念背道而驰了。 dabian 这样的发行版,基本上的发布前就过时了。 ! 没错。 glibc, cor...