豪翔天下

Change My World by Program

0%

安装wordpress

CentOS 6.x安装wordpress

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 在已经安装了php运行环境的条件下
wget http://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz

# 建立数据库
mysql -u root -p
> CREATE DATABASE wordpress;
> CREATE USER wordpressuser@localhost;
> SET PASSWORD FOR wordpressuser@localhost= PASSWORD("password");
> GRANT ALL PRIVILEGES ON wordpress.* TO wordpressuser@localhost IDENTIFIED BY 'password';
> FLUSH PRIVILEGES;
> exit;

# 配置
cp ~/wordpress/wp-config-sample.php ~/wordpress/wp-config.php
vim ~/wordpress/wp-config.php
修改DB_NAME/DB_USER/DB_PASSWORD

sudo yum install php-gd # 如果启动不了要安装这个

必备插件推荐

  • All-in-One WP Migration: 一件迁移插件,能够直接打包整站所有内容,包括代码、数据库、配置等

  • Crayon Syntax Highlighter:一款在文章中插入特定格式代码的插件,找了很久才找到这么一款可自定义很多功能,并且外观也不错,而且设置还是全中文的

  • CloudFront: 这不是插件,而是我们可以直接将整个页面缓存到AWS的CloudFront中去

  • duoshuo:多说评论

  • Google Analyticator:谷歌的网站行为分析工具,可统计每日浏览量,甚至可以统计用户的浏览器和操作系统等信息

  • JiaThis分享工具:社会化分享工具

  • w3-total-cache: 一个功能非常全的缓存插件,可以做页面缓存、编译缓存、片段缓存、对象缓存、数据库缓存、浏览器缓存、磁盘缓存等,大而全

  • WPCode: 可以给站点添加独立于主题外的脚本或者css,比如添加到全局的header或者footer里面

  • WP-DB-Backup:数据库备份工具,可自定义备份时间和备份位置(网站空间、本地电脑、发送邮件)

  • WPJAM七牛镜像存储:使用七牛云存储实现 WordPress 博客静态文件 CDN 加速

  • WP-PostViews:文章浏览量统计工具:WP-PostViews的功能不仅能统计浏览量,还可根据浏览量的多少来排序,但是我只用来记录浏览量的,网上很多教程都说把那一句代码插入到主题的loop里面去,却没有哪一篇教程说过具体该是哪个地方,虽然wordpress的主题各种各样,但至少可以把自己的插入位置列出来吧。我是将下面这一样代码插入到content.php文件

    1
    2
    3
    4
    <footer class="entry-meta">
    <?php twentytwelve_entry_meta(); ?>          # 这一行是本来的显示文章发布时间的地方   
    <?php if(function_exists('the_views')) { the_views(); } ?>  # 这一行即是要插入的这一行   
    <?php edit_post_link( __( 'Edit', 'twentytwelve' ), '<span class="edit-link">', '</span>' ); ?>

    插入成功后(注:如果出现语法错误,可能会导致一直错误,根本改不过来,此时要重新下载该主题压缩包然后把那个文件的内容通过ftp复制上去,才可以)

  • What WordPress Theme Is That?: 这并不是插件,而是一个很棒的网站,在这里仅需要输入目标wordpress网站的网址,你就知道目标网站所采用的wordpress的主题以及一些能检测到的部分插件。

TroubleShooting

  • 修改固定链接为文章标题后,打开文章变成404: 如果是nginx,那么在配置文件中的location添加一句:

    1
    2
    3
    location / {
    try_files $uri $uri/ /index.php?$args;
    }
  • wordpress无限重定向: 可能是在aws的elb中只发了http请求到后端,但是url访问的却是https,导致wordpress搞不清楚了,可以在nginx这边加上一个fastcgi配置:

    1
    fastcgi_param HTTPS on;
  • 上传文件大小限制或者413 entity too large 错误: 修改配置

    1
    2
    3
    4
    5
    6
    7
    8
    # php.ini
    memory_limit = 1024M
    post_max_size = 1024M
    upload_max_filesize = 1024M
    max_execution_time = 600

    # nginx.conf
    client_max_body_size = 1024M;

为梦想而受伤,永远值得骄傲

本书作者是微博和facebook上比较出名的一位叫”冒牌生“的留学生,是”惊点语录“粉丝团的版主。我和他一样,都十分热爱海贼王,也一直为着梦想在奋斗。

当然对于这本书的语言,我觉得并没什么亮点,或许有一些文化上的差异吧,也或许是我看微博上的段子看得太多了,觉得作者的语言很多都是堆砌式的,而且并没有什么逻辑,并没有什么深度。这也或许是作者的风格,毕竟作者是“惊点语录”的版主,语录嘛,就是一句一句经典的话,而不是像写书这样一篇一篇的长篇大论,作者说他从小就梦想当一个作家,我当然觉得他的梦想能够实现,因为他热爱海贼王,热爱海贼王的人都能实现自己的梦想,这是我一直坚信的。

看完本书,学到最大的一点就是遇到问题,先想想:”如果是路飞遇到这样的事,他会怎么做?“作为故事的主人公路飞,或许在外人看来他有些疯,但懂他的人都知道他的智慧和聪明才智绝对是海贼王里最高的。继续追《海贼王》,继续追我的梦,或许当我看完《海贼王》,学到其中真正的智慧后,我的梦想也实现了。

最后,请记住路飞的名言:”能在这片大海自由自在翱翔的人,就是海贼王!“

语录:

与其在等待中浪费青春,不如在追求中燃烧生命!

人生短暂无常,如果你曾遇到过一个”有点疯“的朋友,请好好珍惜你们在一起的日子!

时间总在火烧屁股中流逝,而人则是在火烧屁股中燃烧殆尽

你不知道自己要什么,是不是因为你要的东西太多,超出自己的能力范围?

关于梦想,重要的不是你想做什么,而是你可以做什么,还有实际上你愿意做什么。

人生可以追求平凡,但不可以认命,更不能没有梦想。

即使蓦然回首,自己终究没有成为小时候想成为的人,那又何妨?!

现实会让你不得不舍弃一个梦想,可是别让它抹杀你所有的梦想。

扯到钱的友情并非复杂,把它搞得复杂的是人。

朋友就是用来麻烦的,你不麻烦我,我才生气呢

”认清现实“和”怀抱梦想“并没有冲突

人最容易犯的错,就是”因为害怕自己会犯错,而选择什么都不做“。

平淡不是不爱,而是换了一种方式去爱。

人的一生也许可以爱很多次。然而,总有一个人可以让你笑得最灿烂,哭得最透彻,想得最深刻。只是你往往嘴硬不愿承认。

爱了以后失去爱,也比从未爱过来得好。

真正忘记一个人,并非不再想起,而是偶尔想起,也没有关系。

想要忘记一段感情 ,方法永远只有一个:时间和新欢 。如果时间和新欢也不能让你忘记一段感情,原因只有一个——时间不够长,新欢不够好。

时间不会让人忘记很多事情,只会让人习惯很多事情。

有时候,我们不得不假装很快乐,只是为了不让别人问:”你好好吗?”

有时候,人之所以紧抓着回忆不放,是因为回忆是唯一不会变的东西,就算一切都已经沧海桑田。

我们常常手里拿着一张梦想的藏宝图,为自己的人生做了许多规划,却忘了出发的重要性,以致许多年后,仍然在原地踏步。

每个人都是梦想家,有时候梦醒了,就只剩下想家了。

作者:卢思浩

嘴上说说的人生

那年我在离家的时候一个劲地往自己的硬盘里拷《灌篮高手》,我妈一副嗤之以鼻的表情看着我,似乎是在说:“这么大的人了,居然还这么喜欢看动漫。”

我不知道怎么回应她,只好耸耸肩,因为我实在无法对我亲爱的娘亲说明这部动漫对我的意义。

你知道,有些歌有些东西就是有那种力量。哪怕它在你的手机里藏了好几年,哪怕它早就过了黄金期,哪怕越来越少的人会提起它。你就是知道,当你一听起这首歌,当你一看起那些漫画的时候,你就会想到以前的自己,你就会获得一种莫名的力量。这种力量能够让你感受到自己的节奏,让你以跟世界不同的方式独自运转着,让你能听到自己。

在记忆里最让你印象深刻的,一定是当年的自己。因为只有在你嚷嚷着“时间变化太快”的同时,才会发现在那些所谓的“物是人非”里,变化最多的人是你自己。我不知道
怎么样的人生是最可怕的,但是我知道当你有一天你回头看,当你发现你曾经所说的一切,你曾经信誓旦旦的一切变成说说而已的时候,一定不会好受到哪里去。

好像人一长大,就会把很多东西给弄丢了。比如那些简单却能让自己充实开心的东西,比如让自己肆意哭和笑的能力,还有那些曾经一起结伴同行的人。最可怕的不是弄丢了这些
东西,而是你变得心安理得。你开始安慰自己,这就是成长,这就是我们最终会变成的样子。你只是找了个借口继续这样的生活,对以前的自己嗤之以鼻。

只是每当你听起以前的歌的时候,当你看到某个人在他自己的道路坚持下去的时候,你都会像被自己扇了一记耳光。

** 看着别人的努力羡慕一下,然后转身回去过自己的生活的你,又凭什么去过自己想要的人生?**

努力,是为了给自己交代

曾经跟好友为了商谈一个项目去北京,对方是一个标准的“80后”,北漂。这是他漂着的第三年,这是他这一年换的第3份工作。他说:“这些年我看过了很多人,有些人不用
做什么就可以有很好的前景,有些人拼死拼活还是没有办法在这个城市里生存。”

认识一个小姑娘,她曾经差点为了男朋友去国外陪读,可是后来他们偏偏分手了。后来她决定一个人去上海,最艰难的时候连饭都没得吃,就躲在地铁站里,不知道去哪里。

曾经我总是无法理解他们,明明回到爸妈身边工作更好,何必在大城市里摸爬滚打,还得不到一个很好的结果。然而当我有一天面临选择的时候,我终于明白他们做决定时的心情

那个北漂着的哥们说过,哪怕自己奋斗了一辈子也还是个“屌丝”,但至少这样子自己不会再有借口了,不会在老的时候悔不该当初。

其实所有漂泊的人,不过是为了有一天能够不再漂泊,能用自己的力量撑起身后的家。你觉得最好的生活状态是什么?我觉得最好的生活状态莫过于,在你年轻时傻傻地为了理想
坚持过,最后回归平淡用现实的方法让自己生活下去。能实现梦想自然是最好,但没能实现梦想那也没有什么可惜的。成长的第一步就是接受这个世界的多样性,认识到现实的不
美好,然后还是决定要坚持最初的坚持。

小时候我总嚷嚷着,努力是了改变世界,然而现在的我会觉得,也许我们始终都只是一个小人物,但这并不妨碍我们选择用生活的方式。窃以为,那些在看透了生活的无奈之后,
还是选择不敷衍、不抱怨、不自卑,依旧热爱生活,依旧努力做好身边事的人,努力便是他们对自己的交代。

就像我曾经跟朋友讨论去哪里工作,最后我们得出结论:其实无论在哪个城市生存都不容易,但无论过成什么样子,都要自己承担得起。

我有勇气做选择,自然要有本事承担后果。

只有行动,才能解除你所有的不安

你说你想要当自由撰稿人,可从不见你努力写稿;你说你想考研,可从不见你背单词、做习题;你看到学霸出没便嗤之以鼻,说这样活着没意思;你看到有人旅行,又不屑一顾说
这只是随大流。我便开始怀疑你挂在嘴边的是不是逃避现实的借口,我开始怀疑你是不是在一次次的逃避和自我安慰中变得惴惴不安。

于是你慢慢屈服于自己的欲望。明明在几年以后能有更好的生活,却一定要在现在买上最新款的包。每个人都想要达到一定的社会地位和物质条件,似乎结果才是最重要的。然而
,你有没有想过,你所谓的所有努力,是为了满足你的欲望还是真的追求上进?就像那首歌里面唱的:“多少人走着却困在原地,多少人活着却如同死去,多少人爱着却好似分离
,多少人笑着却满含泪滴。”

终于有一天,你发现你拥有了当初所要的结果,可是在那之后,你却再也不知道要怎么继续了。

二十岁出头的时候,请把自己摆在二十岁出头的位置上。你没有理由、也没能力去拥有一个40岁的人所拥有的阅历和财富,你除了青春一无所有,但就是你拥有的这为数不多的东西,能决定你是一个什么样的人。

我不知道这个世界上是不是真的有所谓的安全感,我对安全感的定义只有两个:一是别人给你的能量总有一天会消失,只有自己给自己的安全感最可靠,只有行动才会给你带来安
全感;二是要记得,不管你是一个什么样的人,你都是你父母的安全感的来源。

所以当你觉得不安的时候,请想一想身后的父母,请想一想自己的初衷,然后抬起头继续坚强地走下去。

唯有行动,才能解除你所有的不安。

有梦想,不抱怨

** 时间一天天过去,我们终会因我们的努力或堕落变得丰富或苍白。**

有时间我就每天花两小时看书,没时间就睡前看20分钟。做题一遍做不好我就做两遍,文稿要求我写一万字我就写将近两万字然后删。写出一篇好文是运气,如果一个人一直在
写的话,那就是靠努力。更多时候,世界对你的态度取决于你对世界的态度,没什么好抱怨的。

为什么有人一再受打击还是要继续前行?为什么明明很失望了我们也不愿意放弃一个人和一个理想?

只是因为他想要向前走,只是因为他还不愿意向世界投降。也许没有人跟你完全一样,也没有人可以时时刻刻地陪在你身边,也许我们很久以后回过头来看,会连现在珍惜的人的
样貌都记不清了。可是我们最大的幸运却是,即便如此,还是有人愿意在有限的时间里用心地陪自己走过这一段,一起为了梦想努力,经历那些孤单流离。

这样一想,人生也还真是不错呢。

当你看书看到头痛、两眼通红的时候,当你按着遥控器不停转台的时候;,你翻着通讯录不知道打给谁的时候,当你独自穿越人群、看着两岸灯火找不到归属感的时候,你就应该
听起一首歌或看一本书,想想自己最初的坚持和理由,然后抬起头勇敢地走下去。

你现在一无所有,但你却拥有一切,因为你还有梦想。只要路是自己选的,就不怕走远,生活总会留点什么给对它抱有信心的人的。

——摘自《读者》2014年第9期

很多时候,我们走着走着,就忘了前行的目的。

去年今日,我放弃了和同伴们一起去西藏的旅途,没错,那时候,我真的觉得自己是一个彻彻底底的loser,一个男人,连这点毅力都没有。

2013年7月21日,我和同伴们(BOSS、大强、喉咙)一起,开始我们的足藏行(大足——西藏)。

还记得第一天的骑行,大足到内江,一百多公里,虽然我确实挺喜欢骑自行车的,但也从来没有骑过这么远,也从来没有骑山地车的经验,第一天就精疲力竭了。呵呵,说来可笑
,第一天就产生了放弃的想法,当时我想,这只是第一天,可能只是不适应而已。第二天又骑了很远很远,更重要的是我们还赶了几小时的夜路,在郊外骑夜路真的太危险了,那
天我们好像十点才找到住宿的地方,那天开始我就发现自己身体不行了。第三天,也就是去年的今天,早上,我们在路边休息的时候,喉咙突然问了句,“我们当初为什么要来呢
”。这句话我不小心就听进去了,一直想一直想。那天中午,路过眉山的时候,他们都骑了很远很远,只有我一个人还在后面,灰尘、烈日、高温,真的吃不消了,有几次都差点
晕过去。我找到路边一处树荫处躺在了地上,从树叶间的缝隙看着太阳,阳光很刺眼,我不敢看。转向地下的泥土,泥土还有点湿润。当时真想快点回家吹空调,发誓回去后一定
要好好热爱生活,一定要好好学习,一定要。。。等等,我当初到底是为什么来的呢?是因为很多人都去了我也想去?是因为我想挑战自己?是因为我想去看美丽的风景?是因为
我想逃避?我忘了,我真的忘了此行的目的了。我要回家!我想,这次的放弃这辈子可能就没有下次了,这次放弃我肯定会后悔一辈子的,但是,我还是放弃了。其实那天下午,
太阳一阴下来我就开始后悔了,但是我不好意思跟队友说,其实,算了吧,我都想不出继续前进的理由了,哪怕是一个借口我也找不到。

在眉山住了一晚,想想在四川的所见所闻,真的怀念在路上的感觉,可以体会一个地方的风土人情,更重要的还有美食,好久没去四川,那个地方菜是真正保留了辣味原滋原味的
地方。我以后肯定会再去眉山的。(PS:貌似每次在亚马逊买书,都是从眉山那个仓库送过来的)。

一个人回到重庆,到菜园坝已经是晚上了,打算把车子放在一个车行,但居然关门了,一个人把车子从车站抬到了两路口这上面来,没有坐那个皇冠大扶梯。看到它关门后,不知
道该什么,就一个人在街头游荡。更倒霉的是,在一次过马路的时候,车子居然散架了,我操,辛辛苦苦捡到了马路边,一个人坐在那儿发呆,好无助,当时很想买瓶酒一醉方休
。过了一会儿,有个大哥过来问了下我的情况,然后就帮了我一下,把车寄放到他那里,当然,第二天,我是直接回家而没有去取的,现在想来,我最对不起的是我那辆车,磨砂
的黑色,美利达,具体型号忘了,还好这儿还有张特写:

那晚,我独自走上菜园坝长江大桥,走过来又走过去,和以前的女朋友们打了电话,他们都很好,呵呵,挺羡慕他们的生活的,唉。

白岩松(好像是他说的)曾经说过:“不要因为我们走得太远,就忘记了我们当初出发的目的。”这一年里,我改变了很多东西,也发现了自己很多的缺点,唯一不变的
是仍然坚持做一个梦想家,心中的梦永远做不完。我知道,我王豪绝不是一个半途而废的人,只是有些时候我们会忘记前行的目的,没有了目的,那前行还有什么动力,没有终点
,前行还有什么意义。写这篇文章的时候,音乐播放器正好播放到郑智化的一首歌“有再多的悲,有再多的伤,我不怕我不怕啊,再多的悲伤只为证明幸福的代价;有再多的痛,
有再多的苦,我不怕我不怕啊,再多的痛苦掩盖不住梦想的伟大。“有了目标并坚定目标,严寒、酷暑,这些挫折算个屁呀。

我想创业,我知道路上有很多未知的东西,但我也知道我的小伙伴会一直相信我、鼓励我,这次,我绝不会忘记自己前行的目的。人这辈子虽然有几十年,但我们真的追过的梦想
又有几个。很多人说现实太残酷了,别他妈以为只有心里想想就能称得上是梦想,没有付出,没有痛苦,那梦想有什么价值,不要说你的梦想就是出去吃二两小面,吃二两小面还
要给钱呢。

无论怎样,调整好心态,找回曾经的梦想,一切,都还来得及。

318,辉煌的最后一年:

一年了,虽然这一年里我没有碰过自行车,但是我依然很崇拜那些真正能够骑车到西藏的人,大强就是这样,他们绝对是为了目标能够不顾一切,心中永远坚持那个目标的人。我
不知道以后还能不能再次踏上这段路,但是听说,今年是318最后一年,也高尔寺山,剪子弯山垭口的风景只能在一集中搜索了,漫步云端从此将成为传说,就是说,以后再走
318,再也不能看到那充满原始魅力的318了。如果前行的路被铺得那么好,那真正的行者还能有几个。希望所有曾踏上过这条路的人,无论是否到达过拉萨,都能为曾经的
”冲动“感到骄傲!318,再见!

正如小说第一部分标题“起飞”一样,这部小说也是我走向计算机这条路不可或缺的一个影响因素,在高中时候就看过了,一直到大学,中间大概看了三四次吧,每次看都让我热血沸腾。记得最近一次是在看雪上,一位大神提到的,也是表达它对他有多大的影响。我很少看小说,这是最激励我的一部了,或许没有它,我也不会走上程序员这条道路,没有它,或许现在我也不会对程序员这一职业有着不一般的感情。

“程序员“和”码农“不一样,虽然这两个称呼都是我们IT人士对自己的一种调侃的说法,但我觉得这两个称呼还是有些许区别的。码农更像是农民工一样,日复一日重复的垒着代码,而程序员这是一个更好听的称呼,所有和程序有关的东西都是程序员的杰作。手机、电脑、飞机、卫星,一切和现代科技有关的东西都和程序有关,没有程序就没有程序员,没有程序员就没有程序。

不得不说,《程序员法则》的作者确实有一些专业功底,这部小说不仅表达了题目所说的“程序员法则”,让我们这些对计算机,对黑客技术有着一腔热血的人向着正确的方向发展,同时也让我们对未来感到憧憬、热血澎湃。我也曾期望着我有许毅一样的头脑,像许毅一样有那么多的机遇,在这个庞大的世界里,我不会有主角光环,但我知道我能做自己人生的主角,所以这条路,我会继续走。

这部小说唯一的遗憾就是只更新到八十几章,在06年就停止更新了,我不知道为什么,网络上的说法不一,作者庄庄也未曾对此做过任何说明。不过,或许这也从另一方面给了我启示,踏上计算机这条路没有捷径,也没有终点,一直走下去,总有一天会找到属于我自己的结局。

语录

无私奉献不是天方夜谭,有时候,我们也可以做到

编程中我们会遇到多少挫折?表放弃,沙漠尽头必是绿洲

非优秀的程序员常常把空间和时间消耗殆尽,优秀的程序员则总是有足够的空间和时间去完成编程任务,而且配合近乎完美

**我们应该重视团队的精神,一个人作用再大,也不过时一碗水中比较大的一粒水珠而已 **

**一个函数始终无法调试通过,是暂时放着还是坚持把他调试出来,我认为使你的心理状态比较好,放的下就放下,否则还是老老实实把他想出来 **

**用程序创造激情,激情汇聚友谊 **

**你的一个程序有时正常有时不正常,而你已经完全遵循变成的规则,为什么?事实上我认为相信只要遵循别人所说就能得到想当然的结果的人其实是个傻瓜 **

**iF(BOOL学习==FALSE) BOOL 落后=TRUE;不断的学习,我们才能不断的前进 **

**按照你心里最真实的想法去做决定,即使是错的,也不会后悔 **

**退一步开阔天空,这是一种应有的心境 **

**如果你喜欢底层开发,千万不要面前自己去搞VC,找到你最真实的想法,程序员最不能忍受的就是万精油 **

**最累的时候,家人是你最好的归宿 **

**这句话不是很文雅,彻底鄙视那些害怕别人超越自己而拒绝回答别人问题的程序员 **

**如果调试一个程序让你很苦恼,千万不要放弃,成功永远在拐角之后,除非你走到拐角,否则你永远不知道你离他多远,所以,请记住,坚持不懈,知道成功 **

**就算我们站在群山之巅,也别忘记雄鹰依旧能从我们头顶飞过,骄傲是比用JAVA进行底层开发更可笑的东西 **

**调试完一个动态链接函数,固然值得兴奋,但真正的成功远还在无数个函数之后 **

**程序是我的声明,但我相信爱她甚过爱我的生命 **

**信念和目标,必须永远洋溢在程序员内心 **

**一个100行的代码调试都可能会让程序员遇到很多挫折,所以,面对挫折,我们永远不能低头 **

**没有情调,不懂浪漫,也许这是程序员的一面,但拥有朴实无华的爱是他们的另一面 **

**编程是一种单调的生活,因此程序员比普通人需要更多的关怀,更多的友情 **

**程序不是年轻的专利,但是,他属于年轻 **

**作为一个真正的程序员,首先应该尊重编程,热爱你所写下的程序,他是你的伙伴,而不是工具 **

程序员可以让步,却不可以退缩,可以羞涩,却不可以软弱,总之,程序员必须是勇敢的

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

大一的时候因为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 _));在一个已经排好序的数组中用二分法查找一个特定的元素