Laravel框架illuminate\support\collection排序问题技术
Laravel 的 Collection 的排序有个问题,前几天折腾了好久,一直怀疑是自己代码有问题。Collection 对象执行 sort 后需要执行 values 方法,否则 Collection 对象的 items 排序结果没有生效。当然手动的 toArray() 是生效的。查看 Collection sort 方法内部实现是调用了 PHP 的 uasort 函数,该函数排序后会维持原来的 key => value 关系。
官方文档截取如下:
Collection values() Reset the keys on the underlying array. Return Value Collection
MacOS使用Web代理调试工具Charles技术
出名的抓包工具有很多,也有很多浏览器插件调试工具,在 Windows 上比较出名的 WEB 调试工具有 Fiddler ,自己曾经抢票的时候用过它做 Auto Response。
在 Mac OS X(罗马字符,发言 ten) 上的 WEB 抓包调试工具 Charles 还是第一次使用,在搜索引擎上也找不到,不过挺好用的。安装后自动配置,然后进入设置齿轮图标 -> Proxy Settings,勾选 HTTP Proxy 下的 Enable transparent http proxying,端口默认,点击 OK,完成。最后点击界面中一个白色圆形的中间含有红色小圆点的图标启动,start recording。
百度统计onunload事件拖慢网页加载速度技术
刚刚开始使用百度统计的时候,有时候查看浏览器对网页的渲染情况,发现在 FireFox 上页面变慢了很多,第一个请求文档加载完毕后,紧接着下一个请求就是百度统计,这一点曾经让我迷惑了很久,一直不清楚是怎么回事,后来清除了百度统计代码后的第二次加载页面就没有了统计请求(清除后的第一次还是有的)。
后来我在百度知道里面提问,问题的内容大概是百度统计是如何做到在文档 onload 之后就立刻发出请求的。过了好几天,最后问题由于没人回复被关闭。
再后来才知道是浏览器的 onunload 事件导致的,自己也专门写过测试网页和脚本证明这点。这个事件不是所有的浏览器都支持的,目前发现 Firefox 是支持的,很奇怪的是,为什么 Firefox 这样设计呢,离开了后导致下一个网页在等待这个请求完成,网页迟迟不渲染。所以一直不太喜欢百度统计,也很少上去看,还是 CNZZ 的界面看的比较舒服,不知道为什么。
来几句励志的文字院内
真正能励志的东西,往往是最真实,最原始的东西。也许一个人的无能,和对自己无能的认知就是最大的励志。
人的痛苦在于错误的追求。
你现在所经历的任何一件事,每一次的呼吸,每一刻的存在都是最好的事情,都应该珍惜。
Always believe that something wonderful will be happen,永远相信美好的事情即将发生。
人的坚持在于睡觉,睡了一觉,形势就会变化 - Jack Ma。
我觉得我找到了我最喜欢的事情,那就是睡觉。
这个世界上的公司只有两种,一种是你痛恨的,一种是你不喜欢的。
ubuntu vps 搭建 VPN server技术
找到一篇比较好的文章,ubuntu 下的 VPS 搭建 VPN server。链接:https://vpnreviewer.com/how-to-install-vpn-server-pptp-debian-ubuntu-linux-vps。
Last login: Sun Mar 29 23:11:05 2015 from 101.231.33.158 root@may:~# vi /etc/pptpd.conf root@may:~# vi /etc/ppp/pptpd-options root@may:~# vi /etc/ppp/chap-secrets root@may:~# sysctl -p net.ipv4.ip_forward = 1 root@may:~# ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:2598 errors:0 dropped:0 overruns:0 frame:0 TX packets:2598 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:157633 (157.6 KB) TX bytes:157633 (157.6 KB) venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:127.0.0.2 P-t-P:127.0.0.2 Bcast:0.0.0.0 Mask:255.255.255.255 UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 RX packets:1072658 errors:0 dropped:0 overruns:0 frame:0 TX packets:1070483 errors:0 dropped:5084 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:317907819 (317.9 MB) TX bytes:306448988 (306.4 MB) venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:107.155.101.65 P-t-P:107.155.101.65 Bcast:107.155.101.65 Mask:255.255.255.255 UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 root@may:~# iptables -t nat -A POSTROUTING -o venet0 -j MASQUERADE root@may:~# iptables -A FORWARD -i venet0 -o ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT root@may:~# iptables -A FORWARD -i ppp0 -o venet0 -j ACCEPT root@may:~# service pptpd restart Restarting PPTP: Stopping PPTP: pptpd. Starting PPTP Daemon: pptpd. or iptables: iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o venet0 -j MASQUERADE // try iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o venet0 -j SNAT --to-source xxx.xxx.xxx.xxx root@may:~# iptables -I FORWARD -s 10.10.0.0/24 -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1300