React koa2 同构应用实践
react

React koa2 同构应用实践

最近把重邮镜像源的主页进行了 React 同构化改造, 这里把遇到的问题和解决方案分享一下. 我在 github 上开源了这个 boilerplate, 其实业内对同构应用早有套路, Github 上已经有很多同构渲染的 demo, 我也参考了其中一些的实现和设计思路 同构的优势 首屏性能 SEO / 搜索引擎爬虫支持 无缝的用户体验 实现的细节 目录结构 . ├── app │ ├── actions │ ├── common │ ├── components │ ├── containers │ │ └── App.jsx # React App │ ├── reducers │ ├── routes.js # 路由配置文件

  • zeroling
7 min read
浅谈前端的 Unicode
unicode

浅谈前端的 Unicode

不管作为一个前端还是后端, 经常能在各种地方遇到关于编码的问题. 这里稍微记录一下关于 Unicode 的理解. 啥是 Unicode 大一的时候就在大机课程上学过这个名字, Unicode 又称万国码, 它的目标是把全世界所有的字符都包含在内, 计算机只要支持这一个字符集,就能显示所有的字符,再也不会有乱码了。 Unicode 的编码方式很简单, 就是一一对应. 它从 0 开始, 为每一个符号指定一个唯一的编码, 这个编号就是 码点. 为了保持兼容性, Unicode 的前 128 位与 ASCII 编码相同. \u0000 // null 平面

  • zeroling
8 min read
四六级查询--百万级 Node 服务

四六级查询--百万级 Node 服务

先来看一下数据, 因为26号是出成绩的日子, 所以PV几乎是一个爆炸 Background 先说说背景, 四六级查询其实是瞬时性很高的一块业务, 因为一年只考两次, 然而成绩是在某一天的某一点公布的, 所以注定了那一天的查询量会是一个爆炸. 这一次腾讯微校方面也给予了较大的支持, 赞助提供了腾讯云的资源, 所以我也才能够有信心去支撑如此大的并发量. Why Node? 从 Node 以及其生态圈 (npm) 这几年的迅速发展来看, Node 的程序健壮性, 稳定性都已经得到了很大的提升, 天猫双十一流量的考验至少证明了这一点. Node 的特性: 事件驱动, 异步编程, 非阻塞式 IO 决定了它非常适合做一些高流量, 低逻辑的中间层业务, 而四六级查询完全符合这一点. 之前我提过,

  • zeroling
4 min read

备份迁移ghost博客到hexo

最近hexo很火, 于是乎打算弄一个玩玩. 配合gh-pages, 因为是纯静态的博客服务, 所以还不用担心服务器被攻击的问题. hexo提供了ghost的migrate插件, 所以迁移起来比较容易. 初体验 npm i hexo-cli -g hexo init npm i tip: 怕慢可挂梯或用cnpm 我的hexo版本是3.1.1, 不同的版本配置有稍许差异 然后配置_config.yml文件的deploy部分: # Deployment ## Docs: http://hexo.io/docs/deployment.html

  • zeroling
2 min read

2015年的年终总结

是的,总要怎样有的没的为过去的一年做个纪念,证明好好地过了这一年而不是REP 365 谈起2003年或者200几年,感觉还停留在「哦那是几年前而已嘛」,然而仔细一算,喔那已经是十几年前的事情了。没想到自己也会过来感慨时间,真是没想到。大学生活也过去一大半了,曾经想做的还有不想做的也大都通通都做了,要是仔细想想还真是带点成就感。 说起来这一年对我来说最大的事情就是,确定了自己这几年的大方向。我一直说,最远只能盘算到未来三年,现在看来三年都有点远,三年前我还在准备高考吧,能想到现在就怪了。但是事情总是隐隐约约的串起来的,不可否认高中的折腾经历为自己现在的努力方向做了很多铺垫。 三月份出于试试+跟风的心态投了不少简历,也许没几个大二的会在这个时候去投简历吧,对我一直想做个「与众不同」的人,当然那个时候是抱着纯玩的态度的,也算是能确定自己的水平定位吧。其实我还是挺相信无心插柳柳成荫的故事的,得到不少公司的回应也是喜出望外。

  • zeroling
5 min read

使用C++模块为Nodejs添彩助力

前言 了解node的开发者清楚, node不是一门语言, 而是一个平台. 多亏了libuv屏蔽了操作系统层面的差异, 优秀的js语言特性(有些人不以为然, 不评论)能让node做很多事情. 我们知道node擅长的部分是异步IO, 这里还是要感谢libuv, 但是不擅长的是CPU密集型操作, 这作为解释型脚本语言的弱项, 静态语言则反之表现出色. Node的C/C++模块 在朴老师的深浅node中指出, node with c++ module的fab数列计算数列与c语言不相上下, 当然C/C++作为node这一平台的补充是完全没有问题的, 但是这里朴老师明显是有误导读者的嫌疑("感觉"node的计算速度比得上c). C/C++模块的另一大用处是可以获得系统的完全操作权限,

  • zeroling
5 min read

Ali面经

其实作为大二学生是本不急着找实习的, 是刚从寒假回学校就感受到了周围春招的氛围. 于是三月初就先在阿里校招的网站上投了简历, 也没学过怎么写简历, 常规的博客, github, 项目, 会用的时髦技术尽量往上写, 内容上也并没有什么亮点. 而后也投了一些小公司, 积累了一些面试经验, 中间也拿到了去豆瓣实习的机会, 不过这都不是重点, 转回正题. 阿里的整个面试流程相对于BT要规范的多, 通过在线笔试后(后来得知全国做完前端笔试题的一共有2K多个人), 系统会把你的状态变成待安排面试, 并给你发短信让你进校招系统预约面试时间, 我选择的是成都站的面试, 支持5月5日一整天和5月6日的早上, 一天内又分好几个时间段, 考虑到从学校到成都需要三个多小时, 我选了5号的下午16:40, 然后顺便也会从后台获得一张通关卡, 将条码打印出来这个会在面试当天用到, 这个条码也是确认你身份的方式. 请了假, 定了当天来回的动车票, 一大早上完一二节的计算机网络, 就直接去面试地点. 到成都的时间差不多是下午两点左右,

  • zeroling
7 min read

字体, Web设计中一个最关键的元素

看了很多网站, 个人觉得字体的设计对于一个网站整体面貌的影响, 是巨大的. 但是字体设计, 这个东西应该属于贯穿网页设计到前端开发者的一个难题. 好的字体排版, 可以让人耐心的看完长段的文字内容, 而糟糕的设计, 甚至会影响到阅读者的心情. 废话不多说, 直接上干货. 字体分类 衬线体(serif) 宋体就是一种典型的衬线体 非衬线体(sans-serif) 非衬线体中最典型的就是微软雅黑 不要问我到底这两个有什么区别! 我个人认为非衬线体更适合在电子屏幕上显示, 感觉也更舒服. 字体的选择 如何在网页中选用最合适的字体呢? 也许这个是UI设计师需要考虑的问题, 但是我从前端的角度来说说. 首先是不应该使用华而不实的字体. 文字是人类用来表达某种含义的工具, 如果一个文字不能被正确的识别, 那它的意义也没有了. 但是其实浏览器对于字体的选择, 不是仅仅一条CSS font-family就万事大吉了的, 第一就是用户的系统中需要有那个字体,

  • zeroling
9 min read

给iOS自带日历📅添加课程表

趁着新学期还没开学, 给大伙做了一套 iCal 格式的课表 Api, 利用 iOS 自带的「日历」App,配合「通知中心」的便利,来完成这一简单的需求:一个按时提醒、清晰展示于手机中的课程表。(Android/WP 也是可以支持的, 大家自己摸索233). iOS的日历采用的是国际上的 iCal 标准, google calendar 和 微软的 outlook 也是支持的, 但是鉴于谷歌在国内的现状, 安卓能不能用还要看机器的ROM, WP的话谁有机器来试一试吧. iCalendar是“

  • zeroling
3 min read
js

利用数字公司 CDN 解决 GoogleApi 无法访问的问题

因为 google 被 GXW 屏蔽,所以很多运用了 fonts.googleapis 的网站都打开很慢,会直到加载 fonts.googleapis 超时才能打开网页。 根本的解决方法是在天朝下载谷歌的字体文件到本地,而不使用它的云服务,然而这显然是不现实的方法。 数字公司这回还是挺厚道的提供了常用前端公共库和谷歌公共库的代理服务,地址在下面 http://libs.useso.com/ 我的方法是通过 Chrome 插件,将谷歌字体等链接替换成 360 的国内 CDN 链接, 解决 google 在中国访问时常抽风影响到了

  • zeroling
3 min read
XSS

hey 接好了, 小王同学的XSS栗子

又是一个神清气爽的假日上午, 慵懒地睡到12点自然醒的感觉真是舒服. 正准备起床刷个牙, 慢悠悠的去学校外面吃点好的~ 这个时候, QQ上收到了小王同学的求助消息: 大婶, 帮个忙, ajax没法用了也0.0 (省略balabala代码一坨) (爷还没起床呢, 哪凉快哪呆着去- -) 我先刷个牙, ~等会嘛 好嘞 赖了会床, 洗漱完毕又顺带跟对门寝室搞了会ji之后, 于电脑前, 坐毕, 开始看小王童鞋发来的东西. (我去, 这神马玩意儿, jQ 跟原生 js 各种搞基... 阅毕, 无法忍... ) (遂让小王同学给个网址过来慢慢品翔..) hey, 大婶,

  • zeroling
5 min read
PJAX

Ajax真的只能用来局部刷新吗?

端午六一休息三天宅了一天, 独自去市中心里转了一天, 就剩下一天了[惊恐]. 压根就没有马上要考试了的感觉嘛! 文章也是好久没更新了, 浑浑噩噩过下去曾的好嘛>.O. 好嘛, 那就来写点干货好了, 也是最近在搞Ghost, 把这个主题的逻辑 (原先是 jQ ) 用原生 js 重写了一遍 (还顺便搞了个小项目 GhostBot 来处理站内搜索), 总结总结研究出了些什么好了, 废话讲得多, 直接进正题吧. PJAX 关于题目抛出的这个问题, 我既然都这么问了, 正常人都知道答案肯定是不是咯. 其实AJAX这个东西一直以来都是被当做只能处理小范围的, 异步的页面更新, 它的优点就在于可以实现页面的无刷新操作. 但是这也会造成一些问题, 比如对搜索引擎兼容性不好啦

  • zeroling
6 min read
Linux

解决在Parallels中无法使用Ubuntu 14.04的问题

上个月就听说Ubuntu 14.04 LTS版发布了, 从12, 13一直用ubuntu做我的主用Linux系统, 长支持版本想必是应该比较稳定了, 于是乎下了一个丢到Parallels去, 装完tools之后死活进不去桌面, 一直保持假死状态, 重装几遍都是一样的, 于是暂时退回13.10用着, 等Parallels的版本升级. 然后也就是今天听说官方给出了暂时的解决办法. 我就给翻译翻译, 以下是方法. 在Parallels里启动你的Ubuntu 14.04, 然后按下Ctrl+Alt+F2激活控制台 输入你的用户名和密码 找到 xorg.conf.XXXXXXXX (XXXXXXXX 指的是这个文件被创建的时间) ls -l /etc/

  • zeroling
1 min read
VPS

让Apache2使用不同的用户创建文件

在配置合租VPS的时候, 我们通常把每个用户的文件限制在/home/$USERNAME/目录下面, 这个目录下面的文件都拥有各自的用户和组, 如果这个时候我们的Apache2使用www-data用户来运行, 那么对于类似php的file_put_contents函数创建的文件, 它们的属主是www-data, 这样一来使用ftp来管理的时候是无法操作的. 大概是我语文表达不好.. 使用中文搜索引擎一直找不到答案, 在google搜索找到了一个提示: Apache的MPM-ITK模块. 由于我的Apache2是在Ubuntu环境下apt-get默认安装的, 在/etc/apache2/mods-enabled/目录下面看到的默认启用的是mpm_prefork模块. 我们把 mpm_prefork.conf和 mpm_prefork.load的软链接删除, 对应换成mpm_itk cd

  • zeroling
1 min read
VPS

修改PHP-FMP的运行用户

今天又折腾了一下VPS. 把php-fpm的运行用户改成了每个子用户, 而不是统一使用www-data用户, 这样的好处就是解决了php动态创建的文件属主和属主都是www-data, 普通用户反而没法删除这个文件的尴尬. 流程如下... 进入php5-fpm的配置目录/etc/php5/fpm/pool.d/为每个用户添加一个conf文件, 内容大概如下.(要替换$USERNAME) [username] user = $USERNAME group = $USERNAME listen = /tmp/$USERNAME-fpm.sock listen.owner = $USERNAME listen.group = $USERNAME listen.mode

  • zeroling
2 min read
nodejs

Nodejs之Crypto模块的使用

好吧。好久没更新了,最近也是忙着考国二C语言,各种临时抱佛脚,也没心思写东西了。上礼拜日也是跟学长组队去参加了一个校内的CTF,神奇的是还拿了个第二名~其实我们是去纯打酱油的> <。 其中一道题挺有意思的,题设就记不清了,大概就是给了你一个IP和端口,我们telnet上去就显示这样: Welcome to game space Your ip: 172.16.37.125 There have a question for you If you pass

  • zeroling
2 min read

一个网页被显示的前生今世(二)

Go to 一个网页被显示的前生今世(一) 接上文 服务器处理请求 前台处理 当一个请求发送至服务器的时候, 应该由一个前台程序来接收这个请求并选择直接响应静态资源(静态站)还是交给后台程序进一步处理(动态网站). 这里常用的软件有Apache(阿帕奇)/Nginx, 对于大并发的应用, nginx有天然的优势. 我们来举个栗子, Apache2的默认并发连接数是200, 而nginx是直接开到65535(linux文件系统的极限). 虽然在安全性上面阿帕奇优势明显, 不过业内各种大牛(taobao/tencent)基本上都是采用直接改造nginx来满足高并发需求的. 后台处理 动态网站的后台程序通常能够接受刚才发送的header信息, 并对数据库(通常是SQL当然还有NoSQL)进行读取啦, 添加修改删除等等操作, 并返回适当的响应.

  • zeroling
7 min read
前端

一个网页被显示的前生今世(一)

作为一个前端开发人员, 首先对于浏览器, 以及各种WEB服务的工作机理要有一个清楚的认识. 从你在地址栏输入网址的那一刻起到网页显示在你的显示器上, 这期中到底发生了什么, 本文将浅显地讨论这方面的机理. 先来讲点题外话.URI(URL) 什么是URI 就中文翻译通用资源标识符(URI)来讲, 或者我更喜欢叫它统一资源定位器(URL), 似乎很难把它与网址挂上钩. 实际上, 网址就是一种基本的URL. 不知道有多少人思考过, 我们经常输入的网址格式一般都是www.xxxx.com, 或者再加上协议名 http https 端口以及路径什么的 或者再加上账号密码!如下图: 第一部分:协议名(以单个冒号结束) 第二部分:用户信息

  • zeroling
7 min read
寒假

没什么好总结的寒假的寒假总结

好吧, 那我还是来装作总结一下把. 看的书 犀牛 看样子ECMA核心要经常翻才行 正则 (进度10%, 还无法实战...) Nodejs/Npm(这里指各种module的)/MongoDB的文档 (这也算?算吧)... 好像没了0.0 够少了把... 写的东西 ok, 那没看什么大概都去写什么了把, 看看github的contributions还算有点 NB-Git: 这是一个用nodejs写的blog, 还不是特别完善 The Good Parts: 这个是用PHP写的老套路博客系统, 没后台, 但是对这个style风格还算满意 CoverFlow: 模仿Apple的CoverFlow效果的图库页面 还有什么.

  • zeroling
1 min read