平凡

我曾经以为C++(或者其它的计算机的东西)是一把剑,或者是一种什么独门绝技,有了它就可以行走江湖。所以这几年我看了很多计算机编程方面的书,自学了各种编程语言,甚至计算机的书就是我的课外书(我的专业是物理)。但当我埋头看所谓兴趣的计算机的时候,它也榨干了我灵魂。曾经为自己会一点小小的周围的人可能不会的计算机技能而沾沾自喜,殊不知多少次,它也成了我逃避生活的借口,一路走来,我错失了多少生命中非常珍贵的东西。

生命的本质是什么?我曾经以为,在我面前永远有着我还未开发的东西,并且等待着我去开发,并以此作为自己生命的动力,就像电影《国家宝藏》中的情景,每个人都是一座宝藏。这是一个多么幼稚的想法。我在初中的时候,我还学过一些素描,想着要学学电子琴,在特定的时间会给朋友送些礼物,写下自己真诚的祝福,初中毕业时我记得我也曾经给了我的几个最要好的朋友各画了一幅素描画。但经过三年的高中,我整个人都变了,变得非常的冷血和无趣。在大学的时候,曾经看到一个同学的书架,有各种小说、下棋、绘画、音乐方面的书,我还在心里嘲笑他:“怎么和我初中的时候一样”。殊不知,我错了,这些东西才是生命中珍贵的东西,是我本不该抛弃的东西。生命远不止不断地让自己强大,满足自己的虚荣心,那都是在课堂时期、应试教育时期留下的病。工作是生存之需要,一个人有足够的能力才能有一个比较体面的工作,但对整个生命历程来说,这并不是重点。工作之外的生活才是生命的本质,不要嘲笑所谓的文人,其实他们的生活才是最充实的。人毕竟是有情感的,一个人孤苦伶仃,哪怕他再厉害,也是可悲的。

Continue reading »

GCC 常用编译选项及相关工具

这篇文章是对 gcc/g++ 经常使用的编译选项和有关工具的一个简单记录,包括静态库和共享库的生成和使用,以便备忘。

1、编译选项

-E 只进行预处理,不进行编译和连接,其输出默认是到终端。(x.c => x.i , x.cpp => x.ii)
-S 编译后仅生成汇编语言文件(x.cpp , x.ii => x.s),不生成目标文件。
-c 编译后生成目标文件(x.cpp , x.ii , x.s => x.o),不连接程序。
-save-temps 保留所有中间过程生成的文件,即 x.ii , x.s , x.o 文件。
-o 输出到文件,指定输出文件名。
-Wall 显示编译过程中的所有警告信息。
-g 在可执行文件中加入标准调试信息,用于程序调试。
-On 进行编译优化,n为优化级别,范围是0~3,在gcc-4.8中还可以用g,即-Og,有利于调试。
-Idir 将目录dir添加到头(Include)文件搜索范围
-Ldir 将目录dir添加到库(Library)文件搜索范围
-lmylib 连接时使用共享库libmylib.so(如果没有,就使用静态库libmylib.a),一般被调用者在调用者之后。
-Dname[=var] 定义宏变量name[=var]

Continue reading »

UEFI + GPT

在之前的文章《Linux on ASUS N550JK4700》中的系统分区那一节,由于当时我对UEFI不了解,我曾在BIOS中打开了[Launch CSM]选项,意在不使用UEFI,实际上这是一个很糟糕的选择。相比于UEFI,传统的BIOS实在是太落后了。具体的内容可以Google一下或查看Wikipedia,关于 BIOS + MBR 和 UEFI + GPT 的比较,下面作一个简单地介绍。

现代磁盘的内部区块定位一般都采用 LBA 机制,每一个(逻辑)区块又称作一个 Logical Sector(有别于 Physical Sector),区块的编址为一个整数,起始为 0 ,即 LBA 0、LBA 1、LBA 2 …… 每一个逻辑区块的大小为 512B 。磁盘的分区与格式化都是在这个基础上的。先看看大家都熟知的 BIOS + MBR 方案,传统的 BIOS 是运行在 16 位实模式下的,寻址能力十分有限而且运行缓慢,磁盘的分区采用 Master boot record,即在整个磁盘的第一个逻辑扇区(LBA 0)的只有512B的空间里包含了主引导程序和分区表。由于空间的限制,MBR是有很多局限性的:只能有四个主分区,磁盘总大小不能超过2TiB等。UEFI是由Intel公司引入的固件接口,它要比传统BIOS先进得多,它与传统BIOS有一些根本的区别:(1)UEFI直接运行在64位保护模式下;(2)UEFI能直接识别FAT32文件系统,并能读取里面的文件(之所以是FAT格式,是因为历史原因导致FAT格式的跨平台兼容性最好);(3)系统引导程序文件在分区(ESP分区)中,而不是在第一个逻辑扇区中;(4)磁盘分区方案采用GUID Partition Table,即GPT,相对于MBR,这种分区表有很多优势,如主分区的个数(几乎)不受限制。

Continue reading »

Linux on ASUS N550JK4700

实际上,ASUS N550JK对Ubuntu 14.04的兼容性是相当好的,包括无线网卡、蓝牙、键盘背光的调节、触摸板的开关、音量的键盘调节都是安装后无需配置直接可以使用的,这是出乎意料的,因为这些功能在Windows中都是只能在安装上华硕的官方驱动后才可以正常使用的,而在Ubuntu中则都是"Works out of the box"。但还有一些其他的细节问题需要调整解决,下面将作一个简要的总结。

1、硬件软件信息

(1)ASUS N550JK4700 (8G/1T) : 2014年3月出厂

  • Intel Core i7 4700HQ Processor
  • Integrated Intel HD Graphics 4600 + NVIDIA GeForce GTX850M with 4GB DDR3 VRAM
  • 15.6" 16:9 IPS FHD (1920x1080) LED Backlight Non-Glare LCD Panel
  • Keyboard backlight

(2)Ubuntu 14.04 LTS : 2014年4月18日(北京时间)发布

Continue reading »

生而为赢

——摘自《新东方-生而为赢》

人皆生而为新,为前所未有之存在;人皆生而能赢。人皆有其特立独行之方式去审视、聆听、触摸品味及思考,因而都具备独特潜质——能力和局限。人皆能举足轻重,思虑明达,洞察秋毫,富有创意,成就功业。

“成者”与“败者”含义颇多。淡及成者,我们并非指令他人失意之人。对我们而言,成者必为人守信,值得信赖,有求必应,态度诚恳,或为个人,或为社会一员皆能以真诚回应他人。

成者行事并不拘泥于某种信条,即便是他们认为应为其奉献一生的理念;而是本色行事,所以并不把精力用来表演,保持伪装或操控他人。他们明了爱与装爱,愚蠢与装傻,博学与卖弄之间迥然有别。成者无须藏于面具之后。

成者敢于利用所学,独立思考,区分事实与观点,且并不佯装通晓所有答案。他们倾听、权衡他人意见,但能得出自己的结论。尽管他们尊重、敬佩他人,但并不为他所局限、所推翻、所束缚,也不对他人敬若神灵。

成者既不佯装“无助”,亦不抱怨他人。相反,他们对人生总能独担责任,也不以权威姿态凌驾于他人之上。他们主宰自己,而且能意识到这点。

Continue reading »