分类目录归档:Thinking

NGINX 启用 HTTP/2

HTTP/2 有什么优点?

HTTP/2 简称 h2, 基于 SPDY 演进。与 HTTP/1.1 相比,HTTP/2 最直观最明显的特点就是速度变快了。另外,目前绝大多数浏览器都支持 HTTP/2,因此让网站支持 HTTP/2 是势在必行了。

HTTP/2 浏览器支持列表

目前绝大部分网站都启用了 HTTP/2,比如我们常用的 Google, 知乎,微信,微博等。

NGINX如何配置启用?

NGINX 启用 HTTP/2 很简单,只需在配置文件的 listen 处加入 http2 即可。

listen 443 ssl http2;
listen [::]:443 ssl http2;

修改完成后,重新加载或者重启 NGINX,顺利的话刷新浏览器就可以发现已经成功启用了。

nginx -s reload

HTTP/2 启用失败问题排查

如果重启后发现没有生效,则需要排查一下以下三点:

  • NGINX 版本是否>= 1.9.5
  • NGINX 配置参数是否有 –with-http_v2_module
  • OpenSSL 版本是否 >= 1.0.2

只需查询 NGINX 版本就可以知道是否满足以上三点。

user@host#: nginx -V
nginx version: nginx/1.16.0
built by gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.4)
built with OpenSSL 1.0.1f 6 Jan 2014 (running with OpenSSL 1.0.2n  7 Dec 2017)
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie'

可以看到,我安装的 NGINX 版本只有第三点不满足。其实无论哪一点,只需升级 NGINX 版本就都能解决。

Ubuntu 升级 NGINX 版本

更新 apt 源到文件

echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

更新命令

user@host#: sudo apt update

W: GPG error: http://nginx.org/packages/ubuntu bionic InRelease: The following signatures were invalid: EXPKEYSIG ABF5BD827BD9BF62 nginx signing key <signing-key@nginx.com>

更新出现这个错误,可能是由于 NGINX 的 apt-key 过期了。执行以下命令验证看看:

user@host#: sudo apt-key list
/etc/apt/trusted.gpg
--------------------
pub   rsa2048 2011-08-19 [SC] [expired: 2016-08-17]
      573B FD6B 3D8F BC64 1079  A6AB ABF5 BD82 7BD9 BF62
uid           [ expired] nginx signing key <signing-key@nginx.com>

可以看到 [expired: 2016-08-17] 说明在 2016 年时过期了。现在更新一下 NGINX apt-key:

wget https://nginx.org/keys/nginx_signing.key -O - | sudo apt-key add -

再次执行 sudo apt-key list 可以发现,过期时间变成几年后了。接下来就可以继续升级 NGINX:

sudo apt update
sudo apt install nginx

升级完成后,刷新浏览器就可以发现网站已经启用 HTTP/2 了。

如何查看网站是否启用了 HTTP/2 ?

1.chrome 插件查看:HTTP/2 and SPDY indicator(网站已启用的话,图标显示为蓝色。)

2.直接通过 chrome F12 打开 DevTools -> Network -> protocol,显示 h2 即为已启用。

参考链接

THE END

年轻技术人应该讲点「武德」

工作了这么多年,见识了各种各样做技术的人。总结下来,大部分年轻程序员都不擅长沟通,略显浮躁,甚至一度让我怀疑这是年轻程序员的通病。

近期几次在与第三方外部团队沟通的过程中,问题凸显。

简单说说经过。

项目中需要用到第三方的部分服务,所以他们提供了几份文档。无可厚非,文档写的够详细,不出问题的话,基本上是涉及不到沟通的。

但问题恰恰出在文档上。我个人的习惯是问别人问题时,自己都会查看多遍文档,甚至模糊的地方都会先搜索了解一下。这番操作下来,接口依然跑不通。只能用着谦卑的语气在群里咨询沟通,结果对方技术一看,立马说我提交的参数没几个是对的,让我自己去看文档。

我…当时瞬间感觉自己被当成了毫无经验的菜鸟,并且对方可能是工作年限比我小的程序员。要知道这份文档我已经看了不下五遍。

后面他们自查后发现是文档写错了。当然写这些并无他意,只是想说明大部分技术人听到不同的声音时,第一反应总是会觉得肯定不是我的问题,而是别人的问题。

这种盲目自信应尽量避免。

首先有这种想法的时候,别人与你沟通都会觉得很难,总感觉反馈的声音听不进去。

其次,技术大牛都是从菜鸟成长的,技术再牛也不应成为盲目自信的资本。实际上我所知道的一些真正的技术大牛都是很好沟通的。

或许技术人都有一段需要经过时间的沉淀才能进化的过程,但我还是希望年轻的技术人看到后能避免这个问题。

同时也警醒自己吧。

THE END

给计算机专业新生的五点建议

时光荏苒,转眼我都已经毕业五年了。如果从现在的认知角度来分析自己在大学的四年,会觉得自己当时很蠢,没有充分利用在学校近四年的黄金时间。

现在恰好临近入学季,所以你如果打算毕业后从事与互联网技术相关的行业,那么我建议你详细看看我对大学四年的「复盘」。

1.尽早确定目标

如果能回到大一,我一定会先让自己想好毕业后要做什么工作。

尽早确定毕业后要从事的行业,这很重要,只有确定了一个大目标,你才能保持在这个车道上不偏移。如果你对自己的专业没有兴趣,那么请一定要尽快转专业,千万别浪费了四年的时间。

很可惜的是我到大二才逐渐想明白自己毕业后想做什么,但同时也很庆幸当时自己选择了计算机这个专业,因为我对编程是感兴趣的。所谓兴趣是最好的老师,只有感兴趣,你才能学进去。而对于工作来说,只有感兴趣,你才能保持热情。

其次计算机专业就业方面也是很灵活的,可以硬件,可以软件,可以网络,可以运营,甚至只要你有兴趣,非计算机专业也无妨,你总能在互联网行业找到一席之地。所以只要你定下了目标,就可以朝着这个目标不断地修正方向。

2.学好基础课程

虽然大学学的课程在毕业后很少用到,但我还是建议你一定要学好。比如现在大火的人工智能,如果你在大学没有学好线性代数,概率论,高等数学等课程的话,现在入门门槛就比较高,首先就得恶补数学基础。

乔布斯在大学时代偶然间上了书法课,学到了衬线和无衬线两种字体,以及如何改变字母间的间距使其好看。在当时,乔布斯自己也认为学的这些东西,在将来的人生中也许并没有什么实际用途。然而,过了十年他就将学到的字体引入到了 Macintosh 中。如果没有当时的偶然,也许也就没有后来在计算机中看到的字体。

其他一切知识也是同样的道理,也许短期内感觉没有用处,但长期来看,总有一个「奇点」会把这些知识都串联起来。

3.精通一门语言

如果能回到大一,我一定会让自己精通一门语言,不出意外我应该会选择 Java。

因为 Java 是一门不错的语言,也因为从 09 年开始,Android 市场进入指数级增长。Android 开发对于当时来说,是极其稀缺的。当然,这只是针对 09 年来说的,现在已经不适用了,毕竟已经过了这么多年。

现在你也应该精通一门语言,但不是非得 Java 不可。只要你精通了一门语言之后,你在学习新的语言时,虽然做不到无缝衔接,但至少会让你游刃有余,学起来更快。从现在的技术发展情况来看,未来 AI 应该更热门,可以考虑 C++ 、Python。

程序员圈子经常流传着各种鄙视链,当然包括语言的鄙视链。这个我觉得当笑话看看就好了,不必在意,每一门语言都有大神级的人物存在。只要能完成需求,它就是一门好的语言。

4.善用搜索引擎

学习过程中,肯定会遇到许多问题。但通常你遇到的问题,90% 以上都能通过搜索找到答案。这时候应该先通过搜索去寻找解决方案,只有搜索不到相关的解决方案时,再考虑咨询比你厉害的大牛。 尽量避免自己不先去搜索找答案,就直接丢个问题去问大牛怎么解决。因为很多大牛都很反感这种情况,这么简单的问题自己都懒得去搜索。

所以务必要多搜索,会搜索。

这里介绍三个常用的搜索技巧:

1.从指定网站搜索关键词

如从 stackoverflow 网站搜索关于jvm相关的问题,输入 「site:stackoverflow.com jvm」 即可。

2.搜索指定文件类型

假如你要搜索一本《三体》的 PDF 类型的书籍,则搜索 「filetype:pdf 三体」。

3.从指定位置搜索

  • intitle: 从网页标题中搜索。例如:「intitle: jvm」
  • intext: 从网页正文中搜索。例如:「intext: jvm」
  • inurl: 从网页链接中搜索。例如:「inurl: jvm」

5.Side Project

动手实践是检验你是否真正掌握一门技术的唯一途径,理论再好,等你真正开始动手实践的时候就会发现还有很多意料之外的问题。

所以我极力推荐你在学习的同时,动手创造一个属于你自己的 Side Project。由项目驱动学习,你不仅能将学习的知识转化成作品,毕业时,你的 Side Project 更可以成为你求职的敲门砖。

比如你喜欢写博客,那么你可以开发一个 CMS,在自己开发的系统里写,你就会自然而然地不断优化这个项目,最终变成一个不错的 Side Project。当然最好的 Side Project 还是你自己想做的,并且能实际解决一些问题。重复造轮子也不是不行,轮子造的多了,你就会产生自己的想法了。


互联网技术的发展总是日新月异,不断推陈出新,所以每个准备从事技术岗的人都应当对新技术保持一定的敏感,不断提升自己。

时间对每个人都是公平的,在当下无法做出最好的选择时,就只能将来投入双倍的时间来弥补。

一万年太久,只争朝夕。

THE END

「深入人心」的 Keep 跑步机

Keep 在 3 月 19 日发布了旗下第一款智能跑步机,作为一个快两年的 Keep 用户,又碰巧在这个时间需要这么一款产品,于是我就顺理成章地在发布当天成为了首批用户。

1.Keep 跑步机的亮点

简单说说这款跑步机吸引我的地方:

  1. 外观相对简洁。外观能给人最直观的感受,Keep 跑步机的外观对比市场上的绝大多数竞品来说,给我留下了深刻的印象。
  2. 占用空间小。这点对于小空间来说至关重要,Keep 跑步机可以说做到极简了。
  3. 可玩性高。Keep 跑步机可单独连接 WIFI,并与手机 APP 联合使用。包括:虚拟路线、跟随课程自动变速以及数据统计。

虚拟路线图

然而用到现在已经快三个月了,Keep 跑步机的槽点也是深入人心。

2.Keep 跑步机的

槽点一:
品控是否做到位?第二次开跑的时候,跑步机的马达就出现了异常噪音。

槽点二:
售后维修不专业。与客服联系后,安排了第三方的维修人员。据说 Keep 有对维修人员统一培训过,但还是出现了一些看起来很不专业的情况。比如内部固定电线的固定点,维修人员都直接剪掉,最后又用 502 将其固定,而这个操作本身是可以避免的。

槽点三:
拆卸与螺丝问题。固定跑步机马达的螺丝尺寸有点尴尬,Keep 官方寄来的螺丝刀加上维修人员自带的工具都无可奈何,最后用刀片配合前后持续了一周左右才成功换上新马达。

槽点四:
贴纸问题。由于换内部零件需要将底部的几颗螺丝拆掉,而螺丝藏在贴纸里面,这就导致了最后还原的时候,贴纸贴不上了,已经没有粘性了。

槽点五:
噪音与晃动。跑步过程中,跑步机会轻微晃动,并且声音在也有点大。

吐槽使人进步,虽然槽点满满,但是最后大部分问题都通过售后得到了解决。Keep 跑步机至少目前还是最接近我心目中一款出色跑步机的标准。

3.跑步机的未来

后期产品迭代升级如果能够加入坡度控制,再配合虚拟路径,让用户身临其境的在任何地方跑步,这样的体验更能吸引到我。

这里做个大胆的预测,未来单一功能的跑步机将会消失,最终会被 VR + 跑步机 结合的方式取代。这种集娱乐健身于一体的跑步机才能更容易被大众所接受,这样的方式是不是更符合 Keep Slogon 所说的 「自律给我自由」 。

THE END

2018 GDS 之旅

上周有幸得到了由阿里云赠送的 GDS 2018 峰会门票,这么难得的机会必然不能错过。

GDS(Global Digital Summit)2018全球数字峰会,围绕互联网数字领域及行业热点展开,通过大会分享、论坛对话、项目路演等会议模块,打造数字领域互联互通、共享共治、共创共赢的国际化分享、社交平台。

GDS 主会场

早上是主会场,根据众多大佬分享提炼成以下几点:

  1. 数字经济增长的比例越来越大,将在2030年达到全国GDP的50%;
  2. 互联网时代域名对企业来说很重要,而移动互联网时代域名仍然重要,并不会过时;
  3. 百度未来流量将会向熊掌号倾斜,今年这个比例将达到50%,到了2020年这个比例将会上升到80%,所以未来将不在需要SEO;
  4. 区块链已经上升至国家战略,将在未来20-30年深入到各行各业;
  5. 短视频的火热带动了大多数新媒体从图文音频到短视频的升级尝试。

区块链、新媒体与域名

下午则分为三个分会场同时进行,分别为区块链峰会、新媒体峰会以及域名峰会。

比较戏剧性的是参会人数很好地展现了当前三个行业各自的发展趋势。

区块链刚开始人数众多,而随着会议的进行人数陆续减少。正如区块链目前的火热,以及各种美好的应用场景。然而目前区块链技术存在着一些问题,限制了它的发展,比如吞吐量。一旦解决了这个问题,应用场景可能将呈爆发式增长。

新媒体会场一开始就呈现出火热的人气,现场座无虚席,甚至后排还站满了人。新媒体近几年的发展态势呈指数增长,微信公众号、头条号、百家号、熊掌号以及各种短视频类应用衍生出的自媒体,长期吸引及占用着用户的注意力。

域名峰会则是一片「荒凉」,现场为数不多的铁杆观众,代表着域名这个已经成熟透了的市场被少部分的人掌握着。大多数优质的域名早已被少部分人所抢占,后来者只能是花重金买入。

很遗憾下午由于时间关系没有听完后面的分享,但同时也很幸运的参加了这次峰会,学习了业内大佬们对于各自所在行业发展的看法,这就够了吧,不虚此行。

THE END

2018你好,2017再见

1.前言

也许是随着心智的成熟,也许是将近而立之年而产生的一种错觉,总觉得时间过得很快。转眼又到了该给自己一个交代的时候了,也该梳理一下自己在过去一年的「得与失」。

2.再见2017

2016 年的这个时候立下要在 2017 实现的小目标,如今多多少少肯定有几个没能完成的,比如写作。2016 年的计划是在 2017 年一周写一篇,而实际上却只写了八篇,平均下来一个月一篇都没能达到。这是 2017 年度我做得相对比较不好的一件事。

而 2017 年度对我来说比较满意的事情就是:

  • 与 2016 年一样,又坚持骑行了一年。(一个月大约 200 公里)
  • 健身从 2017 下半年开始,坚持了 12 周,后面由于天气问题停止,计划等到春末夏初再开始。
  • 一天背 20 个单词从 2017 年 11 月中旬开始,至今坚持了 49 天。
  • 2017 年已经坚持看书 24 周了,阅读量相比去年有所增加。

因此坚持就成为了我 2017 的年度关键词,以坚持来告别 2017,用学习来迎接 2018。

3.你好2018

最近几年「终身学习」这个词像智能推荐似的常出现在我的视野里,这个时代变化得太快了,我希望自己能在风口中抓住机会,迎难而上,而不是因为所谓的「中年危机」而迷茫。

对于「终身学习」这个词我深有感触。想学的东西很多,想做的事情更多,所以努力让自己更加自律。

2018 我的计划是:

  • 至少写 12 篇文章
  • 学习 OpenCV
  • 入门机器学习

计划学习 OpenCV 与机器学习倒不是因为某一门技术的火热而跟风学习,而是之前在接触到相关的技术时就感觉很有意思,所以计划在业余时间扩展相关技术深度。

我觉得人最难能可贵的是在人生的每个阶段都知道自己的目标是什么,并为之奋斗。 我希望能成为这样的人。

你可能还想看:

THE END

2017你好,2016再见

故事的开头往往是先从过去讲起,2016 即将成为过去,这一年对我来说是充实的,是我人生当中一个重要的转折点。

婚姻

2016,正如我开头所说的,是的!我结婚了,一辈子一次的那种。一直以为,婚姻对我来说相当遥远,没想到这一天这么快已经过去了。

2017 及余下的人生就是等待与另一半共同书写,一起慢慢变老。

运动

2016,我尝试过多种不同的运动,包括有氧运动跟无氧运动:

  • 骑行
  • 跑步
  • 哑铃
  • 篮球
  • 羽毛球
  • 俯卧撑 / 仰卧起坐

上述种种运动,却只有骑行是我唯一坚持一年多的运动,除了下雨没骑外,几乎每个工作日上下班都是骑车。

粗略算了一下,一天平均 8 公里,一年单单骑车就可以绕地球 1/20 圈,这样想想还是蛮惊人的。

而坚持骑行给我带来的好处也很明显,有氧运动把我多余的脂肪都燃烧了,现在我的体重、体脂率都很稳定的停留在标准水平,我坚信好处不只如此。

2017,我计划继续骑行,继续健身,继续保持有氧+无氧运动结合的方式运动,等下一次体检的时候希望没有一点问题。

足迹

2016,我走过了中国的 5 个城市,不论因公因私,这都丰富了我的视野。

对我来说印象最为深刻的就是《从你的全世界路过》拍摄地——重庆。重庆的地形很有趣,坡地很多,很多地方都是明显的高低起伏,公路上几乎看不到自行车,不由自主地脑补了一下在这里骑车的场景,想想都觉得好累。还有一个就是吃,基本都是面,基本都是麻辣,简直就是麻辣爱好者的天堂。

2017,我计划去更多没去过的城市。

成长

2016,我阅读了几本书,听了几次直播课程,也订阅了几个「得到」专栏,还有无数次的碎片化阅读。不能说这些行为能改变我什么,但至少有在潜移默化的影响我,对我是有帮助的,学习的过程总是在短期内看不到效果,而长期来说又是有助于个人成长的一种行为

2017,我计划继续大量的阅读并输出。

目前我的阅读方式主要为数字化阅读,数字化阅读意味着我经常盯着屏幕看,而且内容不比纸质来的系统。所以之后至少保证一年读 12 本的纸质图书,除了减少盯屏幕的时间外,还能保证系统性阅读。

输出则是为了证明自己已经理解了知识,并且对于所阅读的东西有自己的见解。我的输出渠道则是公众号(现代晓说)、博客简书

总结中的总结

2017 代表着明天,对于明天我永远保持着憧憬。

我的 2017 小目标:

  1. 至少阅读 12 本纸质书籍
  2. 规律的写作,一周写一篇
  3. 运动,一周至少三次
  4. 至少去一个没去过的城市
  5. 给自己的职业生涯做一份规划
THE END

给自己的大脑编程

引言

最近看完了李笑来老师的《把时间当作朋友》,这本书集结了李笑来老师多年的经验,涵盖了许多提升自我的方法,从而帮助你开启你的「心智」。书中的许多观点都能让人产生共鸣,更能引发人的思考与自省。

1.适当「跨域」

每个人都有一块难以走出的舒适区,在这个区域内你会很自在,而一旦走出你就会感觉浑身不舒服,甚至产生抗拒。例如,一般情况下,大部分职场白领业余时间经常会用来玩游戏或者看各类综艺影视之类的节目。当然这无可厚非,这就是你的舒适区,你可以继续「任性」,亦可尝试改变。

作为程序员,至少要拿出一半的时间用在其他地方,比如:读书,运动,公开课,或者编程。在这个不进则退的时代,虽说这会减少我们的娱乐时间,但同时也会使我们的生活更加积极,无形中就获得了更多的知识,谈资,健康,甚至更多。万能的上帝总是会在关上一扇门的同时打开一扇窗。

2.给自己写一个「死循环」

都说一个习惯的养成需要21天,我想说一个兴趣的培养也至少需要21天。当你走出自己的舒适区后,考验你的就是时间。如果你能连续21天以上重复做一件事,也许你还没养成习惯,那么至少你已经能控制自己的大脑了。

一个人如果没有什么兴趣爱好,那无论做任何事情都会索然无味,缺乏激情。编程理应是程序员的一种兴趣爱好,否则从事软件开发这个行业就会异常痛苦,以至于没有目标,不够深入。归纳起来就是一定要让自己进入一个「死循环」的状态,直至兴趣养成。

3.立即「执行」

种一棵树最好的时间是十年前,其次是现在。

程序写完想要得到预期结果,最快的方法是什么?就是立即编译执行。虽说在大脑里像计算机一样思考运行一遍也很快,但这种方式并不总是可靠,所以通过计算机编译->链接->执行程序来印证结果是既快又稳妥的办法。同理,我们想要知道自己做一件事之后的预期结果,最好的方式就是立即执行。

小结

以上就是我想时刻鞭策自己的。简言之:
从现在就开始控制自己的大脑,只有自己才能决定这个大脑运行程序的执行过程与结果。

THE END

重新定位网站

一个网站的定位决定了这个网站未来的模样,所以我觉得做网站,一定要先找准定位,否则最终有很大机率会演变成一个「垃圾站」。

举个例子,我在2010年时就注册了这个域名,之后便以站长的身份开始了维护这个网站。但那时我并没有意识到自己创建这个网站的目的究竟是什么,所以那时网站的内容有一小部分是伪原创,另外一大部分虽说是原创的,但其实并没有什么价值。期间也折腾了N个不同的模板,一个模板用一段时间就开始觉得不满意,于是乎又要准备换一个。

之所以会出现这样的情况我觉得倒不是这些年来价值观发生了变化,而是没有定位好网站,所以网站的内容就会感觉很杂,甚至「四不像」。

这篇文章的发布距离上一篇近九个月,这期间我常常会思考这个网站的未来,要将它定位成什么样子。这篇文章发布,意味着我已经想好了。因此我重新定位了我的网站,我心目中它应该是这样子的:

1.具有自己思想的原创内容

目前互联网上充斥着大量一样的内容,这肯定不是大家想看到的。所以首先不能为了发文章而发文章,即使没有什么可写的也不能去搞伪原创,这样就保证了内容的原创性。

2.尽量保持简洁

一个网站的UI确实重要,但不是全部,内容才是灵魂因此我认为应该尽量保持简洁,不能有太多影响阅读的因素。

以上就是我对网站定位的理解。

 

注:本文提到的网站特指博客类型的网站。

THE END