梦碎斯京

过去的一年就是一场梦,一场注定会碎掉的梦,然而我却一直欺骗自己,幼稚的以为还有可能。一直以来,我把你当作最重要的朋友,把你的事情当作自己的事情,并放在第一位,当你需要帮助时,我会立刻停下手头的工作为你解决问题,即使在项目任务最紧的时候。我今天得到答复,我作的所有这些都是微不足道的。然而我必须承认这些都是我自愿做的,与任何人都无关系。我已经得到了一个非常明确的否定答案,不论我付出多少,都是徒劳的,甚至可能我们连朋友都不是。这时,我脑子是空白的。

我是一个无趣的人,读书少,不懂音乐,不看电影,只会敲代码,我就是一个机器,别人提供输入,然后我机械地提供输出。这样即使付出再多,也没人会感激。我是一个没有情商的傻子,幼稚、单纯、愚蠢地执着。这就是对我的评价。

当了解了你的一些过去后,我是比较震惊的。我不曾想过你的过去是这样,因此造成你现在的性格。要强、自我、冒险,这些我曾经非常欣赏的特点。然而现在我却有点害怕。想想自己的试图安慰,觉得自己很可笑。

但是,我必须要反省自己,我必须要重新建立自己的价值观了。我以前认为非常自然的观念,现在看来可能都是有问题的。我可能需要重新考虑生命的意义了。人活着不应该有太多的束缚,而需要更多的自由。传统价值观念不能束缚一个人生活的每一个方面。为了随性的生活,可以抛开很多大多数人认为必须的东西,例如婚姻,我多么的震惊。但是如果真是这么想的这么做的,将会留出多少时间可以让我们作一些自己想做的事。一个人可以不断地看书、了解历史哲学、在世界各地旅行,对这个世界的每一个方面都好奇,不想将来,只享受当下。可以不需要一个家,可以在世界各地过着游荡的生活。这是我之前想都没敢想的生活。

我不敢再想今天说过的话,可能我真的被吓着了……

可能我不想就这样突然地戛然而止,就像做了个美梦被惊醒还想继续睡一样,我甚至央求继续保持联系,我真的好幼稚。

谢谢你的照顾,谢谢你的批评。再次见面,你是师姐,我是师弟,仅此而已。

[2017年2月19日晚,斯德哥尔摩]

平凡

我曾经以为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 »