❗️你有0条未读消息

背景

每次博客在写完文章发布之后,邮箱都会收到一封提醒邮件:

The page build completed successfully, but returned the following warning:

Your site’s DNS settings are using a custom subdomain, www.5941740.cn, that’s set up as an A record. We recommend you change this to a CNAME record pointing at zhangjh.github.io. Instructions on configuring a subdomain for use with GitHub Pages can be found at: https://help.github.com/articles/setting-up-a-custom-domain-with-github-pages/

For information on troubleshooting Jekyll see:

https://help.github.com/articles/using-jekyll-with-pages#troubleshooting

If you have any questions you can contact us by replying to this email.

说我的域名dns解析有问题云云。之前也是在github的帮助页面上看的如何将自己的域名解析到gitpages上来。

With your DNS provider, create A records that resolve to the following IP addresses:

192.30.252.153
192.30.252.154
To confirm that your A records have been set correctly, use the dig command:

dig example.com +nostats +nocomments +nocmd
;example.com
example.com. 73 IN A 192.30.252.153
example.com. 73 IN A 192.30.252.154

由于一直也不影响访问就没当回事,奈何每次都发邮件还没法设置取消提醒,很烦。。

阅读全文 »

需求是王道,有需求才有折腾的动力。

昨天在写结婚照分享的页面时,布局采用了一行三章的方式,于是每张照片的宽度定义为33%。

PC下访问一切ok,但是换用手机端访问后发现有问题,三张照片有两张在一行上,另一张就掉到下一行去了。看起来很怪异。
于是想给PC访问和移动端访问做一个自适应设计。移动端屏幕下,一行就显示一张就可以了。

判断方法

判断访问终端是手机还是PC,大体上有以下几种方法:

  1. 终端平台
  2. 操作系统
  3. 浏览器内核
  4. userAgent
    ……
阅读全文 »

  算不上什么高大上的玩意儿,只是记录下最近研究的Chrome扩展开发技术。了解的很还不够,不过爱因斯坦说过:

“没有应用场景的学习都是扯淡!” (爱因斯坦:我™没说过。。)☜☜

背景

  了解灰度发布,A/B实验的同学应该都知道,很多时候在发布新版的时候都不是一蹴而就的,而是默认访问老版本,而将新版本向用户隐藏或是小流量放出,内部人员查看新版本时通常会有”命中参数”(即访问时传入相应的新版本参数可以强制命中新版)。
  然而,页面是有很多内部逻辑的,比如点击跳转之类,这种动作是不会自动将参数带上的,因此实际中面临的问题是经常需要来回复制黏贴参数,再考虑到初始访问的可能是静态页面(静态页面传递参数使用?param=value),跳转后可能是动态页面(动态页面传递参数使用&param=value)。这样来回复制黏贴起来就更加费事了。。
  在多次”惨遭蹂躏”后,开始琢磨是否可以有什么方式能够帮我完成判断页面是动态or静态然后自动添加参数的事情呢?

阅读全文 »

最近对html5萌生了兴趣,起初是因为在学习全栈时见识到了html5的强大威力。如下面这个例子:

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<input type="date">
</body>
</html>

仅仅一个”date”类型的input框就解决了html插入日期控件的工作,而且造型还挺风骚。

阅读全文 »

背景

今天平台在向调用的平台发送回调请求的时候,发现有问题,排查了一会儿发现并不是所有的回调请求都会有问题。基本上纯字母或数字的回调都没有问题,而出问题的请求包含”&”,”-“等特殊字符,于是第一时间想到是不是解析特殊字符的问题。

于是跟接收方约定,我将请求encode后发送,接收方接收后decode后再解析。

TEST1

代码片段:

1
var resParams = {"name":encodeURI(out.name),"blockId":blockId,"total":1,"detail":encodeURI(reportPath)};

发布后,重新触发,查看日志:

1
..."detail":"http://(绿色围墙)/detail?id=1&suffix=1438601805325"...}

怎么貌似请求串没有改变?

第一反应,怀疑是不是编码没有成功,但我之前一直都是使用encodeURI编码,并不会别的什么方法,于是百度了下,发现还有个encodeURIComponent以及escape的区别方法。

TEST2

1
var resParams = {"name":encodeURIComponent(out.name),"blockId":blockId,"total":1,"detail":encodeURIComponent(reportPath)};

发布后,重新触发,查看日志:

1
..."detail":"http://(绿色围墙)/detail%3Fid%3D1%26suffix%3D1438601805325"...}

起效了~

总结

javascript中有三种编码的函数,分别是:escape(),encodeURI()以及encodeURIComponent()

  1. escape
    该方法不对ASCII字母和数字编码,也不会对ASCII标点符号编码,除此之外的所有字符均会被编码。
    基本上该方法已经被javascript标准所遗弃,从ECMAScript v3开始,标准就建议使用encodeURI和encodeURIComponent代替。

  2. encodeURI
    该方法不会对字母和数字编码,也不会对这些ASCII标点符号编码: -_.!~*’()
    该方法的目的是对URI进行完整的编码,对URI中具有特殊含义的标点符号不进行转义。
    因此正如我遇到的问题一样,如果URI中含有分隔符,则应当使用encodeURIComponent方法编码。

  3. encodeURIComponent
    该方法不会对字母和数字编码,也不会对这些ASCII标点符号编码: -_.!~*’()
    其他字符,如 ;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号,都会由十六进制转义替换。
    encodeURIComponent除了编码标准的URI之外,对于它的参数也都一并进行处理。

他们对应的解码函数分别是:
unescape(),decodeURI(),decodeURIComponent()

本篇对Git的学习做一个扫尾笔记,主要是标签、配置等一些杂项。
三篇下来,基本上对日常使用中常用到的方法和命令都基本掌握了,以后有需要再查漏补缺了。

4.标签

标签相当于给分支取了一个好记的别名,这在git里称为里程碑。比如我们的代码版本达到了发布版本,可以取个别名叫做v1.0等等。方便后续更容易访问,而不是查看git log找到对应的commitid。

标签即版本库快照。

阅读全文 »

  GFW让国内的码农们要比国外同行们必须多掌握一门必备技能:翻墙
  就为了更好的上网体验,天朝上国的我们要跟移动、联通、电信(死比运营商肆无忌惮搞网络劫持推送广告),工信部(互联网内容审查),GFW作斗争,浪费大好光阴,真是想想就让人想爆粗。这不,大GFW最近技术又牛逼了,goagent已经被墙的半身不遂了。。有这技术研究点别的多好,天朝的网络审查制度典型的”把洗澡水和孩子一起泼了”:翻墙的除了去看法哔功的,也有社会主义现代化建设的我们啊。
  我本身翻墙的时候不多,用上的时候开下goagent基本也能对付了,虽然对限制自由这事很不爽,但也只能不爽了。可最近goagent也总是不能用了,这尼玛还咋玩。。
  租用的国外服务器只部署个博客好像有点浪费,这基本只有我自己看的玩意儿能用多少流量,太浪费了啊。于是想着是否可以自己搭建个代理实现肉身翻墙呢?
  下面是我折腾的通过国外服务器+squid+stunnel+chrome+SwitchOmege实现的代理翻墙方式,照着操作你也可以。

阅读全文 »

背景

我有个网站部署在我linux服务器的自己账户下,我们都知道,如果要以1000以下的端口启动服务需要root权限。而我又没有root权限。
所以我的网站应用启动在8090端口上,然而访问的时候url带端口的方式看起来很山寨,很土贼,能不能不带端口访问到我的服务呢?

iptables端口转发

使用linux的iptables可以设置端口转发,于是百度查了下,可惜试了很多条都没有生效。于是将我尝试可用的做法记录已备忘。

阅读全文 »