记一次因错误的500页面引发的血案

讲故事,就得先介绍一下背景:

业务上线了某活动页面,但是点击至某固定链接时,页面跳转至首页。

排查过程如下:

  1. 确定是否稳定复现,结果:其他未跳转至首页的用户无此现象。而一旦跳转至首页的用户,则访问相关链接永远跳首页。
  2. http抓包,发现无此链接的请求,而是直接请求到了首页
  3. 怀疑系统缓存,发现缓存内容为:<meta http-equiv=”refresh” content=”0;url=/”>

Meta 背景知识:

http://www.metatags.info/meta_http_equiv_refresh

最终定位:

由于跳转的操作在开发环境永远无法复现,怀疑与生产环境有关。最终对比nginx配置如下:

而生产环境存在50x.html,其内容:

在系统上线时,会进行文件替换及产生新的autoload文件。此时的访问可能会由于文件内容不完全等原因,会产生500错误。so~

结论:

系统可以在500错误时给出相关提示引导。但是上述直接跳转至首页会导致缓存,因此一旦跳转一次后续再访问会直接读取缓存再次跳转。

解决方法:

  1. 在50x.html页面,增加禁止缓存操作,参考:http://www.metatags.info/meta_http_equiv_cache_control
  2. 给一个更友好的500错误提示页面,参考:

理解goroutine

在示例中runtime.Gosched前后各加一条输出果然看得就比较清楚了:

1、启goroutine

2、主线程继续执行say(“hello”)

3、主线程输出 ~~hello

4、主线程遇到runtime.Goshed,切换CPU去执行goroutine——say(“world”)

5、输出 ~~world

6、goroutine遇到runtime.Goshed,切换CPU去执行主线程

7、主线程继续向下执行输出 hello,及2~~hello

8、主线程第一次for循环结束,将i++,并输出 ~~hello

9、主线程遇到runtime.Goshed,切换CPU去执行goroutine

10、输出 world及2~~world,第一次for循环结束,输出~~world

11、goroutine再次遇到runtime.Goshed,切换CPU去执行主线程

12、主线程输出hello及2~~hello,将i++已经>2,主线程结束循环退出

最终输出内容为:

~~ hello
~~ world
hello
2~~ hello
~~ hello
world
2~~ world
~~ world
hello
2~~ hello

周末杂记

周六当天,才知晓还有所谓的白色情人节。跑去万达胡吃了一顿牛排,听隔壁两桌吹的牛B满天,我还是把牛排吃的好像红烧肉,我土故我在!

吃完牛排回到家,翻箱倒柜收拾屋子,最后丫头终于确定,消失了两天的钱包确实是丢了~

经人民公安介绍,身份证原来没有挂失机制,也就是说谁捡到办了信用卡啥的我们只能默默承受~ 看来下周末可能要回趟老家了,补办身份证,顺便了解一下办理护照的流程。话说现在办理身份证已经需要按指纹了,倒是安全了。

又上心头,愁容写在脸上。被丫头好顿教育:多大点儿事,至于的吗?我人不没事吗?那钱包就当为我顶灾了。。 好吧,听后果然心情好了些,其实我只是嫌麻烦!

论地瓜,还得说是格兰那家好吃,倍儿甜!

3.15 晚会后,我决定:扔了家里的暖手宝、以后不买路虎(说的好像我买的起一样)、不再连别人的WIFI(这东西有流量用流量,没流量忍着!)。

完!

不知从什么时候

年,就这么过完了。比想象的要快,要悲伤。

QQ上的个人资料,已经把我的年龄改为了30,再也不能欺骗自己计算周岁。转眼而立!

在家里时,看到爸爸、叔叔、姑姑、岳父、岳母,白发已经再也遮掩不住,时间太匆匆。

给老爸买了一个米4、买了一个小米盒子,老头怎么也鼓动不明白,只是欣喜加无奈的说:买这玩意干啥,能用了几个功能?

离开家时,用纸笔写了一些常见操作的步骤,忽然间眼泪再也止不住。不知从什么时候他们就变老了。

不知从什么时候开始,教会我读书识字的父母,需要我们教他们打电话、上网、使用电视机的遥控器。

不知从什么时候开始,为我扛起一片天的父母,上个三楼都需要歇几歇。

不知从什么时候开始,为我讲故事看我入睡的父母,在聊天的过程中渐渐起了鼾声。

也许就是从昨天开始。

珍惜!

iOS8 本地通知使用方法

在运行脚本时,发现程序在5S虚拟机上一切正常,但是使用iPhone6 Plus虚拟机时报错,根据信息可知是添加本地通知时报错。信息如下:

2015-02-06 17:41:49.369 Demo[6744:1604149] Setting a reminder for 2015-02-06 09:42:00 +0000
2015-02-06 17:41:49.384 Demo[6744:1604149] Attempting to schedule a local notification {fire date = Friday, February 6, 2015 at 5:42:00 PM China Standard Time, time zone = (null), repeat interval = 0, repeat count = UILocalNotificationInfiniteRepeatCount, next fire date = Friday, February 6, 2015 at 5:42:00 PM China Standard Time, user info = (null)} with an alert but haven’t received permission from the user to display alerts
2015-02-06 17:41:51.263 Demo[6744:1604608] Terminating since there is no system app.

继续阅读

ios webview 相关

使用ios ,通过oc 使webview加载页面相关操作,遇到了如下两个问题。解决过程略有心酸,记录如下:

  1. 带登录状态(cookie)请求webview,cookie含有httponly标记
  2. 请求url由url变为url#时,webview的异常表现

继续阅读

热死了

热死了,真心受不了了。这几天京城就像下火一样,在这样的天气下,我不想干活。。:)

为了增加和小伙伴们的谈资,借着最近热播《变形金刚4》的时候。我在看《变形金刚1》,没办法,没看过啊~
继续阅读