菜菜博士

博士在网络的家

使用 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...

为什么你应该让你的项目使用 autotools 而不是别的编译系统

编写软件离不开编译。 简单的编译,无外乎直接调用 gcc 去编译。 简单又不简单,当源文件不止一个的时候,麻烦的事情就随之而来。 当然,这个时候你可以选择 Makefile 但是,如果要求你的 Makefile 支持很多标准化操作,比如 make install DESTDIR=…. make dist-bzip2 你怎么打算呢? 自然,你需要一个自动创建 Makefile ...

BIOS 是如何访问在内存还没有的时候检测并初始化内存的

首先必须明确的一点是, BIOS 运行初期,CPU 其实是不能访问内存的。 BIOS 所在的 FLASH 是那种可以被 CPU 直接寻址的 FLASH 芯片。被都固定在 0x4FFFF (记不清具体地址了) 地址上了。类似 ARM 使用的 NOR FLASH。 uboot 就在 NOR FLASH上。 然后,BIOS 初始化代码开始通过寄存器和北桥芯片沟通。 因为 BIOS 就是版...

chroot to arm on an x86 Gentoo

在早上的邮件中,我指出 Gentoo 是如何方便的构筑交叉环境的。 现在,我要指出,我还要运行里面的arm程序! 在 chroot 环境中,真正的把它当 作一个发行版! 我使用的是 crossdev -t arm-unknow-linux-gnueabi 编译的 arm 交叉工具链。 这时候 arm 其实被安装到了 /usr/arm-unknow-linux-gnueabi/ /usr...