豪翔天下

Change My World by Program

0%

很多人都不喜欢太高调的人,但又有很多人觉得低调的人很虚伪。

大一的时候因为C语言自学得比较早,学得比较刻苦,所以当时有很多同学都叫我“大神”,“大神”这个词我也是到了大学才听过,现在多用于尊称那些技术非常牛逼之人。其
实我第一次看到牛人也会不自觉地用“大神”这个称呼,但之后我就不会这么称呼了,因为我自己也很讨厌这个叫法,我很反感别人叫我“大神”,我知道自己几斤几两,我只是
比下有余,但我比上确实是不足的。大学的前两年里,我接触的东西肯定是比百分之八九十的人都还多吧,但这又能证明什么,我清楚地明白我只是知识面比较广而已,并不代表
我在那些方面有什么很深的研究学习,真正的“大神”应该是对自己的技术有非常高的造诣并且十分热爱该技术之人。其实神也是人,只是他做了普通人做不到的事情,所以人们
才尊称他为“神”。在我看来,无论是对技术的了解,还是对技术的热爱程度,我都比不上真正的大神,而且山外有山,人外有人,你永远不知道还有多少比你强的人。

怕别人叫我“大神”除了因为我配不上这个名号外,还因为有了这个称呼后,压力会更大。众所周知,人怕出名猪怕壮,我不怕别人看不起我,就怕别人看高我。虽然我一向不是
活在别人的眼光里,但对别人对自己的看法多少还是有点关注的。当别人把你看高后,你不得不面对巨大的压力,生怕达不到别人的要求。其实这又何必呢,我学技术不是为了利
益更不是为了别人的认可,只是想获得自己内心的满足而已,就像我博客的小标题一样“Change My World by
Program”。我热爱编程,并愿意为之奋斗终身。

很多人都有一种错觉,总感觉身边的人都在关注自己的一举一动,但经过我的观察发现,其实身边大多数人并没有你想象的那么在意你,有你或没你,对他没有任何的影响。所以
做事别太高调,只有心甘情愿低调的人,才能充分享受生活,活得平心静气、踏踏实实,这样的人才能体会人间的真性情,才能不为外界左右,是最有思想的一群人。

高调生活在自己的世界里,低调生活在别人的世界里。安于低调,享受低调。

封面图片来自Pixebay

《悟空传》——今何在

五百年真的很久吗,或许那只是一个梦。我不明白是否选择任何一个方向,都会游向同一个宿命。

我其实很少看网络文学的,《悟空传》同以前看过的网络作品不一样,一般的网络小说无非就是穿越、无敌什么的,而这本书并没有很强的故事情节,更多的是对人的思考。看完书评,这本书居然已经畅销十年了,影响了多少人的青春,这无疑是像我这种后青春时代的大学生最值得推荐的一本网络文学作品。就像周星驰的《大话西游》一样(以前不了解,百度一下居然是94年的),十年前看我笑了,十年后我看哭了。或许真要等到我们老去的那一天,才能完全懂得其中真谛。

经历十八年的奋斗,今天,我们终于站在了象牙塔下,可在如今的我看来,大学或许更多的是磨掉了我们的锐气。曾经的我们梦想有一天成为科学家,飞行员,英雄,而如今,我们只是希望能找到一个好点的工作。记得我在高考的前几天写了一篇日志,《那一年的梦想》来自网络上的一篇文章,当时我是定时在6月8日下午3:00发表的,也就是高考考试最后的英语的时候。还记得那一天我原本以为最后一堂考完了,会是大肆地庆祝,
放声地高歌,可英语考完那一刹那,我却突然感到异常的平静,没有料想中的那么美好,晚上的散伙饭,我们也吃得没什么激情,或许那时候我们就已经意识到,我们的青春,要走完了,迎接我们的不知道是什么。

人生之路越走越远,改变是避免不了的。我们努力去理解命运,但这并不是我们任命的借口。我不想我以后的人生就在一个一个的写字间里度过,我不会,三藏也不会,“我要这天,再遮不住我眼;要这地,再埋不了我心;要这众生,都明白我意;要那诸佛,都烟消云散”。紧箍咒永远锁不了我的心。五百年能改变什么?五百年前,悟空要天下再无他战不胜之物!五百年后,他要战胜的却是被金箍禁锢的自己!五百年前,三藏与如来赌这世间世人的命运是否皆由众神控制!五百年后,他依旧不相信那西天真经是他要找寻的答案!

成败不重要,重要的是我们用于去拼,哪怕百般阻挡,也不要自己先投降。

西游不死,传说不灭。齐天大圣孙悟空永远留在我的心中!

语录

**我要这天,再遮不住我眼;要这地,再埋不了我心;要这众生,都明白我意;要那诸佛,都烟消云散 ** **如果失去是苦,你还怕不怕付出/如果坠落是苦,你还要不要幸福/如果迷乱是苦,该开始还是结束/如果追求是苦,这是坚强还是执迷不悟 **

**我心中爱你美丽,又怎能嘴上装四大皆空 **

**这个世界有你不能到达的地方,有你不应到达的地方,有你一辈子也不会去到达的地方,你的世界并不如你想象的那么大,界限也许就在你身边,可你却以为你可以去任何地方。 **

**只因心高嫌地窄,立心端要破瑶天 **

**负尽千重罪,练就不死心 **

**若是不悟,千里万里,也是枉然;若是悟了,脚下便是灵山 **

**天下万物,皆来于空,可这众生爱痴,从何处来?天下万物,又终归于空,那人来到尘世浮沉,为的又是什么 **

是不是选择任何一个方向,都会游向同一个宿命?

本教程来源于goagent项目
具体步骤如下:

1.申请Google App Engine并创建appid,由于我早已经申请好,所以就不再赘述,详细申请过程上面那个网站上有的

2.下载最新版的goagent并解压,就在刚才那网站上面下载

3.编辑local/proxy.ini,把其中的appid = goagent,password = 你的密码
中的goagent改成你之前申请的应用的appid

4.安装依赖:

sudo apt-get install python-dev python-greenlet python-gevent python-vte
python-openssl python-crypto python-appindicator
网站上说要安装gevent1.0其实用apt安装已经是1.0了,所以不用做那一步了5.上传
在解压后的server目录下执行python uploader.zip

6.运行客户端
在local目录下赋予proxy.py可执行权限chmod +x proxy.py,然后就可以双击执行了,运行过程中请不要关闭

7.设置为开机启动
就在这个local目录下执行
python addto-startup.py

8.安装浏览器插件
在谷歌应用中心搜索Proxy SwitchySharp并安装

9.配置Proxy SwitchySharp插件:
选项 -> 导入/导出 -> 从文件恢复 -> local目录下的SwitchyOptions.bak -> 确认

10.安装证书:进入谷歌浏览器的设置 -> 高级设置 -> HTTPS/SSL的管理证书选项 -> 进到授权中心 -> 点击导入 ->
选择local文件夹里面的CA.crt -> 此时会弹出一个选项框,将该框的三种信任方式都勾选上然后确定

10.终于完成了,现在在浏览器上面的switchsharp插件选择GoaGent代理,然后推特和facebook等应该都能正常访问了,别忘了关注我的twit
ter:豪翔天下

封面图片来自Pixebay

《C和指针》——Kenneth A.Reek

这本书应该是我最后一次买盗版的经典书籍了,买了这本书后我就写下了学生应尽量购买正版,发誓以后都在正规的书店(包括网上书店)买书。

本来以为这本书的内容挺少的,但当读到指针的部分发现我以前了解的真的很少,还好我上学期认真学过《数据结构》这门课,对指针的使用还算熟练,不然光靠以前自学的谭浩强的C语言和课堂上教的,根本就只能算是一个只知道C语言这个东西的人。

至于这本书的阅读时间,我觉得我的时间并不正确,这本书应该是在C语言基础学完后,在数据结构之前来学习,不仅可以深入理解一下C语言的精髓,还可以顺利过渡到数据结构的学习。

在这里就以前我不了解的一些C语言知识做一些归纳(不过这里很多都是一些以前没见过的函数以及一些用法,当然这些函数或者是用法并不是罕见的,只是在学生中比较罕见罢了,我在网上看过很多高手的代码,发现有一些还是挺常用的)。

  1. 要从逻辑上删除一段C代码,更好的办法是使用#if指令。这样可以防止在一段内部已经有注释的代码外面加上注释所引起的注释不匹配的问题:

    1
    2
    3
    #if 0
    statements
    #endif
  2. EOF是一个整型值,在很多读入字符的情况下,如果要判断输入是否结束,需要把字符读入为整型值,这样可以判断输入是否结束。

  3. 程序会使用一个运行时堆栈,它用于存储函数的局部变量和返回地址。程序同时也可以使用静态内存,存储与静态内存中的变量在程序的整个执行过程中将一直保留着他们的值。

  4. 标准规定了几个特殊的三字母词,比如??(代表[,不过这个应该很少见,至少我之前一直没碰到这种情况

  5. 如果要创建新的类名,应该使用typedef而不是#define,因为后者无法正确处理指针类型,例如:

    1
    2
    #define ptr char*
    ptr a,b;

    上面代码会使a成为一个char指针,而b却被声明为一个char

  6. 在定义常量的时候我们应该使用#define而不是const:

    1
    2
    #define MAX_ELEMENTS 50
    int const max_elements 50;

    因为只要允许使用字面值的地方都可以使用前者,比如声明数组的长度,const变量只能用于允许使用变量的地方。

  7. 链接属性:分为3种——external(外部)、internal(内部)和none(无)。没有链接属性的标识符(none)总是被当作单独的个体,也就是说该标识符被当作独立不同的实体。属于internal链接属性的标识符在同一个源文件内的所有声明都指同一个实体,但位于不同源文件的多个声明则分属不同的实体。最后,属于external链接属性的标识符不论声明多少次,位于几个源文件都表示同一个实体。

  8. 凡是在任何代码块之外声明的变量总是存储于静态内存中,也就是不属于堆栈的内存,这类变量称为静态变量。

  9. 标准说明无符号值的所有移位操作都是逻辑移位,但对于有符号值,到底是采用逻辑移位还是算术移位取决于编译器。也就是说一个程序如果所使用了有符号数的移位操作,他就是不可移植的。

  10. C函数可以理解为所有的参数均以“传值调用”的方式进行传递,传递数组时也传递的是指针的值。

  11. 只要有可能,函数的指针形参都应该声明为const

  12. 不要使用strlen来相减,因为strlen是无符号数,那么相减的结果必然也是无符号数,所以像if( strlen(x) - strlen(y)= 0 )这种用法就是错的,因为结果永远都是大于等于零

  13. 注重可移植的程序应该避免使用位段。任何可以用位段实现的任务都可以使用移位和屏蔽来实现。

  14. 编译器为一个结构变量的成员分配内存时要满足他们的边界对齐要求。在实现结构存储的边界对齐时,可能会浪费一部分内存空间。根据边界对齐要求降序排列结构成员可以最大限度地减少结构存储中浪费的内存空间。

  15. 在程序中,数组的长度一般是根据运行后决定的,所以最好使用动态内存分配。

  16. 几个预定义符号:
    FILE: 进行编译的源文件名
    LINE: 文件当前行的行号
    DATE: 文件被编译的日期
    TIME: 文件被编译的时间
    STDC: 如果编译器遵循ANSI C,其值就为1,否则未定义

  17. 如果相同的代码需要出现在程序的几个地方,通常的做法是将它实现为一个函数,而不是宏#define

  18. 条件编译:可以允许选择某条语句或某组语句进行翻译或者被忽略,这常用语本地调试:

    1
    2
    3
    #if constant-expression
    statements
    #endif
  19. 文件包含:如果是库文件一般用<>,如果是本地文件一般用””

  20. 删除多重包含引发的危险:

    1
    2
    3
    4
    5
    6
    #ifndef _HEADERNAME_H
    #define _HEADERNAME_H 1
    /*
    ** All the stuff that you want in the header file
    */
    #endif
  21. 绝大多数流是完全缓冲的,意味着“读取”和“写入”实际上是从一块被称为缓冲区的内存区域来回赋值数据。用于输出流的缓冲区只有当它写满时才会被刷新到设备或文件中。也可使用fflush迫使缓冲区的数据立即写入,不管它是否已满。

  22. 函数库为I/O所提供的接口称为流。

  23. fgets函数比gets函数更为安全,它把缓冲区长度作为参数之一,可以保证一个长输入行不会溢出缓冲区,gets函数会去除它所读取的行的换行符,puts函数在写入到缓冲区的文本后面加上一个换行符。

  1. strcpy: 复制字符串,char * strcpy(char _dst, char const _src);
    如果字符串比数组长,多余的字符仍被复制,它们将覆盖原先存储于数组后面的内存空间的值。strcpy无法解决这个问题,因为它无法判断目标字符数组的长度

  2. strncpy: 复制指定长度的字符串,比strcpy安全,char _strncpy(char _dst, char const _src, size_t len);

  3. 其它的和上面两口子类似的有:
    剪切: char _strcat(char _dst, char const _src);

    比较: int strcmp(char const _s1, char const _s2);
    int strncmp(char const _s1, char const _s2, size_t len);

  4. 字符串查找

    1
    2
    3
    4
    5
    6
    char _strchr(char const _str, int ch);第二个参数其实是字符  
    char _strrchr(char const _str, int ch);这是查找字符最后一次出现的位置
    char _strpbrk(char const _str, char const_group);这是在查找str中第一个匹配group中任何一个字符的字符位置
    char _strstr(char const _s1, char const_s2);在s1中查找整个s2第一次出现的起始位置,并返回一个指向该位置的指针
    size_t strspn(char const _str, char const _group);对字符计数
    size_t strcspn(char const _str, char const _group);
  5. 上面这些都只能处理字符串,下面的可以处理任意的字节序列

    1
    2
    3
    4
    5
    void _memcpy(void _dst, void const _src, size_t length);  
    void _memmove(void _dst, void const _src, size_t length);
    void _memcmp(void const _a, void const _b, size_t length);
    void _memchr(void const _a, int ch, size_t length);
    void _memset(void _a, int ch, size_t length);
  6. 动态内存分配:

    1
    2
    3
    4
    5
    void _malloc(size_t size);动态内存分配  
    void free(void _pointer);内存释放
    如果操作系统无法向malloc提供更多的内存,malloc就返回一个NULL指针
    void _calloc(size_t num_elements, size_t element_size);与malloc的区别是能够在返回指向内存的指针之前把它初始化为零,参数表示所需元素的数量和每个元素的字节数
    void realloc(void _ptr, size_t new_size);用于新修改一个原先已经分配的内存块的大小
  7. ungetc: 撤销字符I/O,int ungetc( int character, FILE * stream );,把一个先前读入的字符返回到流中,这样它可以在以后被重新读入

  8. fflush: 迫使一个输出流的缓冲区内的数据进行物理写入,不管它是否已经写满,int fflush(FILE _stream)

  9. 文件指针的定位

    1
    2
    3
    4
    5
    long ftell( FILE _stream );返回流的当前位置,即下一个读取或写入将要开始的位置距离文件起始位置的偏移量  
    int fseek( FILE _stream, long offset, int from);在一个流中定位。
    void rewind( FILE * stream );将读/写指针设置回指定流的起始位置
    int fgetpos( FILE _stream, fpos_t _position );在这个位置存储文件的当前位置
    int fsetpos( FILE _stream, fpos_t const _position );把文件位置设置为存储在这个位置的值
  10. 改变缓冲方式

1
2
void setbuf( FILE _stream, char _buf);设置了另一个数组,用于对流进行缓冲,为一个流自行指定缓冲区可以防止I/O函数库为它动态分配一个缓冲区  
int setvbuf( FILE _stream, char _buf, int mode, size_t size );参数中mode用于指定缓冲的类型
  1. 临时文件
1
2
FILE _tmpfile(void);会创建一个文件,当文件被关闭或程序终止时这个文件便自动删除  
char _tmpnam(char _name);临时文件的名字
  1. 删除文件
1
2
int remove(char const _filename);删除文件  
int rename(char const _oldname, char const _newname);文件重命名
  1. 随机数<stdlib.h>
1
2
3
4
int rand(void);  
void srand(unsigned int seed);
// 上面两句会产生伪随机数,如果实现真正的随即需要再加一句:
srand( (unsigned int)time( 0 ) );
  1. 字符串与数值的相互转换
1
2
3
4
5
6
int atoi(char const _string);转换为十进制  
long int atol(char const _string);转换为十进制
long int strtol(char const string, char * __unused, int base);可指定基数
unsigned long int strtoul( char const string, char * __unused, int base);可指定基数
double atof(char const _string);转换为float
double strtod(char const string, char _***unused);转换为double
  1. 执行系统命令(stdlib.h),void system( char const _command );可以执行cmd的命令

  2. 排序和查找

1
2
void qsort(void base, size_t n_elements, size_t el_size, int (compare)(void const _, void const _));第一个参数指向需要排序的数组,第二个参数指定数组中元素的数目,第三个参数指定每个元素的长度,第四个参数是一个比较函数  
void _bsearch(void const _key, void const _base, size_t n_elements, size_t el_size, int (_compare)(void const _, void const _));在一个已经排好序的数组中用二分法查找一个特定的元素

没错,对于指针,我确实只能摘取书上的少许内容,因为我在数据结构的时候已经弄明白了很多,所以这一部分并没有仔细的看,还有后面的用C语言实现抽象数据类型,数据结构里也有讲,所以我建议还是先看《C和指针》再去学数据结构。

  1. 在声明指针变量时,可以为它指定初始值,如:

    1
    char *message = “Hello World!”;
  2. 指向整型常量的指针,可以修改指针的的值,但不能修改它所指向的值:int const * p;

    指向整型的常量指针,指针本身无法被修改,但是可以修改它说指向的整型的值:int * const p;

  3. 指针变量可以作为左值,如*d = &a;并不是因为他们是指针,而是因为他们是变量,左值必须要能找到确切的位置

  4. 指针其实也可以相减,前提是他们都指向同一个数组中的元素,而且减法的结果是经过了调整的,会除以元素类型的长度

  5. 数组(指针)也可以用负来访问,如a[-1],但是这和其它语言的负索引并不一样,它是指a这个指针前面的一个元素。数组甚至可以用诸如2[array]访问,因为他们都会被翻译为#( 2 + (array) )

  6. 之所以我们在函数声明中包含二维数组的时候必须把第二维的数目声明,是因为我们传递进去的是一个指针数组

  7. 在建立指向函数的指针的时候可以建立一个转换表,就是一个函数指针数组

  8. 在数组不够用的时候要学会使用动态内存分配,一般初始用malloc,之后如果发现不够用,就用realloc

  9. 字符串常量也是一个指针,如”123″+1表示的并不是123,而是123这个字符串的指针加1即元素2的指针,也可以这样烦我呢”123″[1],他就是元素2

《看见》——柴静

说实话,这本书居然是我初恋送给我的。不过早已经分手了,她现在在和一个警官学院的男生谈恋爱,挺好的。

柴静的这本书不仅仅记述了自己的成长历程,还表达了一个新闻工作者应该有的操守,更谱写了对生命的赞歌。我觉得每一个新闻工作者都应该看一看这本书,当然,普通人也可以看看,体会下社会不同层面的人的生活,以此来审视自己。

我是一个经常刷微博的人,特别是微博打击大V之前,那时候的新浪微博,有很多很多批评社会、揭露社会阴暗面的言论,当然,其中不乏谣言,不过很多事情,网民都宁愿相信,为什么呢?这很清楚,国内最权威的新闻应该是CCAV了,可是他们几十年如一日地对ZF歌功颂德,同时还不忘夸张地形容下外国人是生活在怎样的水深火热的情况。相比新闻联播,我更愿意看我们重庆的“天天630”,虽然重庆人也经常骂他“大事不敢播,小事起倮倮”,但是至少他更加真实,更加接地气。而CCAV却只会敷衍谄媚,即使偶尔报道下基层的文章,也是漏洞多多,完全不能让人联想到摆拍的嫌疑。现在很多新闻工作者对某些事情不敢采访,采访了也不敢播,当然,这或许并不是他们的错,毕竟体制在这儿,一时半会儿也改不了。但是希望你们能尽量的摸着自己的良心来工作。

《看见》一书,主要是写了柴静的职业生涯的几件自己映像比较深刻的事,让我体会到了很多人的平凡与伟大。说的更实际点,就是伟大总是蕴涵于平凡之中。如果一个人一辈子都能甘于平凡而绝不平庸,那这个人绝对是一个成功、伟大之人。每个人的生活都不可能完全平顺,每个人都会在生命的特定时候遇到难以避免的挫折,“加入生活欺骗了你”,不要悲伤,不要愤慨,漫漫人生路,没有过不去的坎,伤心的时候不妨去外面走走,没有抽不完的烟,悲伤总会过去。

“宽容不是道德,而是认识。唯有深刻地认识事物,才能对人和世界的复杂性有了解和体谅,才有不轻易责难和赞美的思维习惯。”这是我特别喜欢的一句话,我深有体会。很多人说我没脾气,呵呵,真的是没脾气吗,我的宽容不是天性也不是道德,而是我对事物的认识,我只是觉得在很多事情上发脾气没有用。当然我也还是一个“愤青”,对事物认识不全面,缺乏对客观事物的正确把握。

最后,每个人都有追求幸福的权利,希望作者能够成就自己,我也能够找到自己的幸福。

语录

如果那么容易的话,还要这么漫长的人生干什么呢

我就生活在这里,没有完美新世界,没有需要等待的未来,没有要向外界索求的理解,也不需要跟谁比较才能判断自己,要做的就是此时,就在此地,就是此身

失败不是悲剧,放弃才是

宽容不是道德,而是认识。唯有深刻地认识事物,才能对人和世界的复杂性有了解和体谅,才有不轻易责难和赞美的思维习惯

有的笑容背后是咬紧牙关的灵魂

保持对不同论述的警惕,才能保持自己的独立性。探寻就是要不断相信、不断怀疑、不断幻灭、不断摧毁、不断重建,为的只是避免成为偏见的附庸。或者说,煽动各种偏见的互殴,从而取得平衡,这是我所理解的“探寻”

天空一无所有,为何给我安慰——海子

人是一样的,对幸福的愿望一样,对自身完整的需要一样,只是她生在这儿,这么活着,我来到那儿,那么活着,都是偶然。万物流变,千百万年,谁都是一小粒,嵌在世界的秩序当中,采访是什么?采访是生命间的往来,认识自己越深,认识他人越深,反之亦然

生和死,苦难和苍老,都蕴涵在每一个人的体内,总有一天我们会与之相逢。我们终将浑然难分,像水溶于水中。

《浮生六记》——沈复
也忘了当初是出于什么原因买了这本书了。书中内容并不多,但是我还是看了一些时间,主要是书中的生字,文言倒没有多大的问题,毕竟这清代的。
读完本书,我很欣赏作者的生活和写作的态度。在古代,很少看到这种详细描述了和妻子生活的作品,即使是十年生死两茫茫之类的作品只是反映了对妻子的牵挂而已。看完作者的一生,也着实为他的生活感到遗憾。一个修为如此高的人,一个只想做一个平凡人的人,怎么会经历这么多不幸的事呢。
读完本书,最大的感慨就是体会到了作者那种出世的心态。虽然作为一个21世纪的新青年,但我也有这种心态。或许,每一个程序猿都有这么一种心态吧。当然,我绝不会像古人那样做一个隐士的,我的隐,是大隐隐于朝野的隐。教我们老庄与道家思想的老师也说过,大隐隐于朝野,既能实现自己的愿望,又能做一个独立的人,一个不与世俗同流合污的人。我最大的愿望也是过上平平凡凡的生活,得一人心,白首不分离。

语录

_浮生若梦,为欢几何 _
_蜣螂团粪而化蝉,以其欲修高举也 _
_情之所钟,虽丑不嫌 _
_当日浑闲事,而今尽可怜 _
_人大言,我小语;人多烦,我少记;人悸怖,我不怒;淡然无为,神气自满,此长生之药 _
且从来拂意之事,自不读书者见之

总算把这学期最忙的一段时期度过了。前一阵子的事情真的太多了,而且几乎都是不可推辞的,妈的。

其实这学期从最开始打算不考研开始我的事情就多起来了,以前一直都想考研,所以就没怎么找事情做,感觉自己这样没事干做做自己喜欢的事情多好的,但现在却有了不考研,
毕业就找工作的想法,那我就不得不给自己找一些事情做了。

跟着两个导师学习不同的东西,其实光这一点就很累了,一个模式识别,天天都在看论文,一个是信息安全,要逆向一个软件也不是那么容易的。最烦的事是突然来一个班级网页
设计的比赛,偏偏又是叫的每一个班的科创委员来负责。我郁闷啊,这个肯定不能推脱。我们班上能做出来网站的也只有那一个人而已,但偏偏她也很忙,所以也就草草地做了个
出来。然后更郁闷的事情出来了,居然以倒数第二的成绩进了决赛,而且决赛偏偏又是周五晚上,正好我们那晚又聚餐,艹。反正聚餐,所有人都不想推迟了,决赛如果弃权又不
好得,所以硬着头皮做了PPT,还准备了一下下,最后在比赛的时候我们得了三等奖(进决赛的都有奖,哈哈,我们的分数还是倒数第一)。不过也没关系嘛,这种东西本来就
是给我们自己看的,网站以黑色为主题,这才狂拽炫酷嘛,你们懂什么。

就要分班了,昨晚我们全班去大金鹰下的农家乐晚了一晚上。虽然我也没玩到什么,喝完酒就上床了,但是重要的是能和这样一群朋友待上两年,真好,真的很好。我们班的大多
数选择计算机科学与技术专业的应该都还能分到一个班上,而我这种选信安的人就只有远离大家啦,没什么,我永远不会忘记大家的。

这是第十一周周末,在十四周之前应该没多少事情做了,哈哈,终于可以放松一下下了。

(封面图片来自Pixabay)

好想有这样一个人,在我想玩的时候,可以尽力阻止我

好想有这样一个人,会在我想学习的时候,全身心地支持我陪着我。每次去上自习,我会给她买点吃的,每晚送她回寝室的时候,我都会拉着她的小手告诉她,你看,天上的星星
也没你美

好想有这样一个人,周末可以陪着我出去玩一玩、走一走、谈谈人生、谈谈理想

好想有这样一个人,让我可以为了她的幸福可以不顾一切地奋斗

好想有这样一个人,可以包容我偶尔的懒散、颓废

好想有这样一个人,让我可以为之改变,变得更优秀、更阳光、更积极

好想有这样一个人,爱着爱着,她就成了我生命中的一部分

其实已经忘了这几句话写于什么时候了,只记得是在一个寂寞的晚上,上晚自习后,一个人回寝室,看到路上一对一对的情侣突发此感慨的。呵呵,那时的我还年少!