2015年10月23日 星期五

跟别人都无关

真是越担心什么就来什么,致力避免这样生活的我,还是陷入进去。讨厌的这样的生活。好想回到一个人,从新开始自己的生活。可怜不是爱,当你感觉一个人不再值得可怜的时候,她的声音,听到都会觉得刺耳,她的表情,看到就会觉得恶心。人最大的弱点是有怜悯之心,最后害的只是自己。可怜之人必有可恨之处。对一个人好,得到的不是回报,而是怨恨。不值得,不值得,这是我的人生,跟别人都无关。

2015年09月16日 星期三

Lantern使用技巧

有时候我们需要在CMD下翻墙,比如使用go get下载包时,这时我们只要在CMD执行下面命令就可以了 在window下: set HTTP_proxy=http://localhost:8787 set HTTPS_proxy=http://localhost:8787 再os x下:
export http_proxy=proxy.xxxx:8080 export https_proxy=proxy.xxxx:8080

2015年08月10日 星期一

年庆

4天的年庆活动结束了,一句话就是人外有人,天外有天。看到深圳的小伙伴的节目,很是感动也有很多感触。我们队得了最后一名,这是必然结果。没有用心,是失败的主要原因。像这样的活动,以前很不以为然,现在让我深深体会到,即使是普通人,只要努力也可以做到专业的水准。人还是要全面发展的,因为生活除了工作8小时,还有三分之二的时间要忙其他的。同时也让我看到了自己的不足和固步自封,以后要更加努力全面提升自己。

2015年07月13日 星期一

哭与冷漠

女人哭,可能招来同情,但是我已经习惯了女人哭,并且对于女人哭变的相当冷漠。小时候爸妈吵架,母亲的哭声已记不清楚,后来,大 了招惹了母亲,她还是哭。而我从来也不会因为哭劝解她,我会觉得她无理取闹,只有通过哭来让你无理的要求变的合理罢了。现在结婚了,老婆哭了很多次,歇斯底理。每次我都相当的淡定,就感觉自己是身处是非之外,观看一场表演。同时我内心对其也是一种鄙视和不屑。对待家人和亲人从来不是那种过分的亲热,对亲人或朋友也从来也不会提出什么过分的要求,每个人都有角色,份内的事做好,分外的事就看情面了。作为儿子、老公、爸爸,我一直致力于成为一个他们认为好的人,努力的做好份内之事。可现实并不如意。她们依然对我不满,她们觉得对我额外的好,我就应该额外的对她们好。其他我根本不需要那些有目的的虚情假意,比如,我栽一脚,就说我带你去医院吧。

2015年07月06日 星期一

命运

二个周没见,儿子已经有点不认识我了。后来跟他玩老虎来了,才慢慢的想起我。开始玩我上衣的拉链,抓我的眼镜。想到以后儿子很少见到爸爸,内心就难过起来,本想给他一个温暖的家最后也无法办到。儿子这就是你的命运,也是爸爸的命运。希望你以后勇敢地面对这些。人生在世,难免不碰到这样让人难过的事情。

2015年06月18日 星期四

儿子开始粘我了

早上出门,跟儿子说拜拜,要上班了,儿子伸着手还要我抱,儿子摆手时很开心,可当我要开门离开时,儿子却不高兴了,哼哼直嚷,看来这小子开始懂得粘人了。,

2015年04月17日 星期五

进产房

阔步走进产房,用余光看到一个皱巴巴的婴儿躺在台子上到处看.心中窃喜,但我却径直走到老婆床头,亲切的问,老婆怎么样?疼不疼?完全装作只乎老婆的表情.我压抑着自己的内心,不去问是儿子还是女儿.最后,老婆却忍不住了,告诉我,给你生个儿子,你去看看吧.就这样,我躲过去一劫.

2015年04月01日 星期三

ubuntu server 开启 root 用户,并设置允许 ssh

1.启动root帐号
sudo passed root
根据提示输入root密码 2.允许root 使用ssh
因为新版shs在sshd_config里面有了限制
#vim /etc/ssh/sshd_config
# Authentication:

LoginGraceTime 120

#PermitRootLogin without-password    #找到这里,把它注释

PermitRootLogin yes                  #改为yes  然后重启ssh
StrictModes yes



#service ssh restart
#Tips:这里注意/etc/init.d/ssh restart 用这个方式重启是不成功的。

2015年04月01日 星期三

js动态获取图片长宽尺寸(兼容所有浏览器,速度极快)

lightbox类效果为了让图片居中显示而使用预加载,需要等待完全加载完毕才能显示,体验不佳(如filick相册的全屏效果)。javascript无法获取img文件头数据,真的是这样吗?本文通过一个巧妙的方法让javascript获取它。 这是大部分人使用预加载获取图片大小的例子:
01 var imgLoad = function (url, callback) {
02     var img = new Image();
03
04     img.src = url;
05     if (img.complete) {
06         callback(img.width, img.height);
07     else {
08         img.onload = function () {
09             callback(img.width, img.height);
10             img.onload = null;
11         };
12     };
13
14 };
可以看到上面必须等待图片加载完毕才能获取尺寸,其速度不敢恭维,我们需要改进。 web应用程序区别于桌面应用程序,响应速度才是最好的用户体验。如果想要速度与优雅兼得,那就必须提前获得图片尺寸,如何在图片没有加载完毕就能获取图片尺寸? 十多年的上网经验告诉我:浏览器在加载图片的时候你会看到图片会先占用一块地然后才慢慢加载完毕,并且不需要预设width与height属性,因为浏览器能够获取图片的头部数据。基于此,只需要使用javascript定时侦测图片的尺寸状态便可得知图片尺寸就绪的状态。 当然实际中会有一些兼容陷阱,如width与height检测各个浏览器的不一致,还有webkit new Image()建立的图片会受以处在加载进程中同url图片影响,经过反复测试后的最佳处理方式:
01 // 更新:
02 // 05.27: 1、保证回调执行顺序:error > ready > load;2、回调函数this指向img本身
03 // 04-02: 1、增加图片完全加载后的回调 2、提高性能
04
05 /**
06  * 图片头数据加载就绪事件 - 更快获取图片尺寸
07  * @version 2011.05.27
09  * @param   {String}    图片路径
10  * @param   {Function}  尺寸就绪
11  * @param   {Function}  加载完毕 (可选)
12  * @param   {Function}  加载错误 (可选)
13  * @example imgReady('http://www.google.com.hk/intl/zh-CN/images/logo_cn.png', function () {
14         alert('size ready: width=' + this.width + '; height=' + this.height);
15     });
16  */
17 var imgReady = (function () {
18     var list = [], intervalId = null,
19
20     // 用来执行队列
21     tick = function () {
22         var i = 0;
23         for (; i < list.length; i++) {
24             list[i].end ? list.splice(i--, 1) : list[i]();
25         };
26         !list.length && stop();
27     },
28
29     // 停止所有定时器队列
30     stop = function () {
31         clearInterval(intervalId);
32         intervalId = null;
33     };
34
35     return function (url, ready, load, error) {
36         var onready, width, height, newWidth, newHeight,
37             img = new Image();
38
39         img.src = url;
40
41         // 如果图片被缓存,则直接返回缓存数据
42         if (img.complete) {
43             ready.call(img);
44             load && load.call(img);
45             return;
46         };
47
48         width = img.width;
49         height = img.height;
50
51         // 加载错误后的事件
52         img.onerror = function () {
53             error && error.call(img);
54             onready.end = true;
55             img = img.onload = img.onerror = null;
56         };
57
58         // 图片尺寸就绪
59         onready = function () {
60             newWidth = img.width;
61             newHeight = img.height;
62             if (newWidth !== width || newHeight !== height ||
63                 // 如果图片已经在其他地方加载可使用面积检测
64                 newWidth * newHeight > 1024
65             ) {
66                 ready.call(img);
67                 onready.end = true;
68             };
69         };
70         onready();
71
72         // 完全加载完毕的事件
73         img.onload = function () {
74             // onload在定时器时间差范围内可能比onready快
75             // 这里进行检查并保证onready优先执行
76             !onready.end && onready();
77
78             load && load.call(img);
79
80             // IE gif动画会循环执行onload,置空onload即可
81             img = img.onload = img.onerror = null;
82         };
83
84         // 加入队列中定期执行
85         if (!onready.end) {
86             list.push(onready);
87             // 无论何时只允许出现一个定时器,减少浏览器性能损耗
88             if (intervalId === null) intervalId = setInterval(tick, 40);
89         };
90     };
91 })();
调用例子:
2     alert('size ready: width=' this.width + '; height=' this.height);
3 });
Demo  (通过测试的浏览器:Chrome、Firefox、Safari、Opera、IE6、IE7、IE8)

2015年04月01日 星期三

在windows上用netsh动态配置端口转发

使用多个虚拟机,将开发环境和工作沟通环境分开(即时通,办公系统都只能在windows下使用…),将开发环境的服务提供给外部访问时,需要在主机上通过代理配置数据转发。
在windows上用netsh动态配置端口转发 - 傲风 - 0与1构筑世界,程序员创造时代
VirtualBox提供了端口转发的功能,可以将主机中的端口转发至指定IP的虚拟机中的端口,支持TCP协议和UDP协议。但有一个缺点:需要重启虚拟主机才生效。
在windows上用netsh动态配置端口转发 - 傲风 - 0与1构筑世界,程序员创造时代
其实在Windows中,如果想做端口转发,可以使用Windows自身携带的服务:netsh,使用netsh interface portproxy指令,新增和修改配置信息后,即时生效,并且重启系统后配置信息仍然存在,非常方便。适用于WindowsXP、Windows7,其他的版本还没有试过,支持IPv4和IPv6,但是只支持TCP协议。

新增端口转发

1、命令

netsh interface portproxy add v4tov4 - 添加通过 IPv4 的 IPv4 和代理连接到的侦听项目。 netsh interface portproxy add v4tov6 - 添加通过 IPv6 的 IPv4 和代理连接到的侦听项目。 netsh interface portproxy add v6tov4 - 添加通过 IPv4 的 IPv6 和代理连接到的侦听项目。 netsh interface portproxy add v6tov6 - 添加通过 IPv6 的 IPv6 和代理连接到的侦听项目。

2、命令语法

netsh interface portproxy add v4tov4为例,其语法格式如下:

netsh interface portproxy add v4tov4 [listenport=]<integer>|<servicename> [connectaddress=]<IPv4 address>|<hostname> [[connectport=]<integer>|<servicename>] [[listenaddress=]<IPv4 address>|<hostname>] [[protocol=]tcp] 参数: 标记            值 listenport      - IPv4 侦听端口。 connectaddress  - IPv4 连接地址。 connectport     - IPv4 连接端口。 listenaddress   - IPv4 侦听地址。 protocol        - 使用的协议。现在只支持 TCP。 说明: 添加通过 IPv4 的 IPv4 和代理连接到的侦听项目。

3、使用示例

netsh interface portproxy add v4tov4 listenport=8080 connectaddress=192.168.56.101 connectport=8080 将本地的8080端口的数据转发至192.168.56.101上的8080端口。
netsh interface portproxy add v4tov4 listenport=9090 connectaddress=192.168.56.101 connectport=9090
将本地的9090端口的数据转发至192.168.56.101上的9090端口。

显示所有的端口转发配置信息

1、命令

netsh interface portproxy show all - 显示所有端口代理参数。 netsh interface portproxy show v4tov4 - 显示 IPv4 代理连接到另一个 IPv4 端口的参数。 netsh interface portproxy show v4tov6 - 显示 IPv4 代理连接到 IPv6 的参数。 netsh interface portproxy show v6tov4 - 显示 IPv6 代理连接到 IPv4 的参数。 netsh interface portproxy show v6tov6 - 显示 IPv6 代理连接到另一个 IPv6 端口的参数。

2、使用示例

netsh interface portproxy show all 控制台显示如下信息: 侦听 ipv4:                 连接到 ipv4: 地址            端口        地址            端口 --------------- ----------  --------------- ---------- *               8080        192.168.56.101  8080 *               9090        192.168.56.101  9080

修改端口转发配置

1、命令

netsh interface portproxy set v4tov4     - 更新通过 IPv4 的 IPv4 和代理连接到的侦听项目。 netsh interface portproxy set v4tov6     - 更新通过 IPv6 的 IPv4 和代理连接到的侦听项目。 netsh interface portproxy set v6tov4     - 更新通过 IPv4 的 IPv6 和代理连接到的侦听项目。 netsh interface portproxy set v6tov6     - 更新通过 IPv6 的 IPv6 和代理连接到的侦听项目。

2、命令语法

netsh interface portproxy set v4tov4为例,其语法格式如下:

netsh interface portproxy set v4tov4 [listenport=]<integer>|<servicename> [connectaddress=]<IPv4 address>|<hostname> [[connectport=]<integer>|<servicename>] [[listenaddress=]<IPv4 address>|<hostname>] [[protocol=]tcp]

参数: 标记            值 listenport      - IPv4 侦听端口。 connectaddress  - IPv4 连接地址。 connectport     - IPv4 连接端口。 listenaddress   - IPv4 侦听地址。 protocol        - 使用的协议。现在只支持 TCP。 说明: 更新通过 IPv4 的 IPv4 和代理连接到的侦听项目。

3、使用示例

netsh interface portproxy set v4tov4 listenport=9090 connectaddress=192.168.56.101 connectport=9080

将本地9090端口改成转发至192.168.56.101的9080端口中。

删除端口转发配置

1、命令

netsh interface portproxy delete v4tov4  - 删除通过 IPv4 的 IPv4 和代理连接到的侦听项目。 netsh interface portproxy delete v4tov6  - 删除通过 IPv6 的 IPv4 和代理连接到的侦听项目。 netsh interface portproxy delete v6tov4  - 删除通过 IPv4 的 IPv6 和代理连接到的侦听项目。 netsh interface portproxy delete v6tov6  - 删除通过 IPv6 的 IPv6 和代理连接到的侦听项目。

2、命令语法

netsh interface portproxy delete v4tov4为例,其语法格式如下:

netsh interface portproxy delete v4tov4 [listenport=]<integer>|<servicename> [[listenaddress=]<IPv4 address>|<hostname>] [[protocol=]tcp] 参数: 标记             值 listenport     - 要侦听的 IPv4 端口。 listenport     - 要侦听的 IPv4 地址。 protocol       - 要使用的协议。当前仅支持 TCP。 注释: 删除要侦听的 IPv4 的项并通过 Ipv4 代理连接。

3、使用示例

netsh interface portproxy delete v4tov4 listenport=9090 删除本地端口9090的端口转发配置