THINKPAD故障现象:
ThinkPad笔记本所有或个别FN热键失效,按下后完全没有反应。
解决方案:
方法一:针对没有安装优化软件,或者上述操作后依然无法解决问题的处理方法。
1、请确保用户笔记本已经正确安装,ACPI电源驱动、显卡驱动、热键驱动。
2、检查系统配置实用程序中,热键启动项Tposdovc和Pwrmgrtr是否启动。如果未被选择,请手动选中,如果找不到启动项,请确认程序是否安装?如果未安装请重新安装,如果已经安装,请手动添加为启动项。如果使用VISTA或WIN7系统,请查看ThinkPad Power Manager 和On screen display启动项目
3、确认系统服务Power Manager DBC Service、On Screen Display是否已经开机启动运行。若为VISTA或WIN7系统,请注意需要查看的是On Screen Display和 ThinkPad PM Service服务
查看服务站状态是否停用?如果停用,请更改为自动,将服务状态设置为已启动。
4、如果上述操作后热键恢复正常使用,但是亮度和音量的进度条依然无法显示,请通过显示属性–高级设置–屏幕显示,将启屏幕显示功能选中确定后再观察。
二:可以重新下载并重新安装下电源管理驱动试试。
ACPI电源驱动、显卡驱动、热键驱动有没有安好呢。
ThinkPad笔记本所有或个别FN热键失效,按下后完全没有反应。
解决方案:
方法一:针对没有安装优化软件,或者上述操作后依然无法解决问题的处理方法。
1、请确保用户笔记本已经正确安装,ACPI电源驱动、显卡驱动、热键驱动。
2、检查系统配置实用程序中,热键启动项Tposdovc和Pwrmgrtr是否启动。如果未被选择,请手动选中,如果找不到启动项,请确认程序是否安装?如果未安装请重新安装,如果已经安装,请手动添加为启动项。如果使用VISTA或WIN7系统,请查看ThinkPad Power Manager 和On screen display启动项目
3、确认系统服务Power Manager DBC Service、On Screen Display是否已经开机启动运行。若为VISTA或WIN7系统,请注意需要查看的是On Screen Display和 ThinkPad PM Service服务
查看服务站状态是否停用?如果停用,请更改为自动,将服务状态设置为已启动。
4、如果上述操作后热键恢复正常使用,但是亮度和音量的进度条依然无法显示,请通过显示属性–高级设置–屏幕显示,将启屏幕显示功能选中确定后再观察。
二:可以重新下载并重新安装下电源管理驱动试试。
ACPI电源驱动、显卡驱动、热键驱动有没有安好呢。
[转] URI与URL的区别
Php/Js/Shell/Go jackxiang 2013-1-23 15:18
步骤一:系统桌面上先按住“Shift”键,单击鼠标右键出现的菜单,选择“在此处打开命令行窗口”后,就出现速打开命令提示符.
步骤二: 由于我常常要在CMD 进入指定目录,如"D:\aaa\bbb\ccc ” 经常要输入一大串字符,真烦够,google 了一下有没有“快速打指定目录的方法”,结果大部分都是加环境变来解决。在CDM中 还是要输变量名,还变量名还要输“%” 还不够方更。有没有更方便的呢?
最终想起了一个办法在C:\WINDOWNS 写了一个批理文件,代码如下:
D:
cd D:\aaa\bbb\ccc
存为 a.bat
然后在CMD中输入a(存的BAT文件名)即可。
我的:
xdebug.bat
最后,当然你也可以不放在windows下(有时重装系统什么的),直接在d盘符里建立一个文件夹后,把PATH指向这个文件夹,在这个文件夹里放bat文件即可,直接ctrl+R后在运行里输入cxdebug即可打开这个文档。
来自:http://cw2cw.blog.163.com/blog/static/16603899201042534721142/
http://support1.lenovo.com.cn/lenovo/wsi/htmls/detail_13142270381093677.html
步骤二: 由于我常常要在CMD 进入指定目录,如"D:\aaa\bbb\ccc ” 经常要输入一大串字符,真烦够,google 了一下有没有“快速打指定目录的方法”,结果大部分都是加环境变来解决。在CDM中 还是要输变量名,还变量名还要输“%” 还不够方更。有没有更方便的呢?
最终想起了一个办法在C:\WINDOWNS 写了一个批理文件,代码如下:
D:
cd D:\aaa\bbb\ccc
存为 a.bat
然后在CMD中输入a(存的BAT文件名)即可。
我的:
xdebug.bat
最后,当然你也可以不放在windows下(有时重装系统什么的),直接在d盘符里建立一个文件夹后,把PATH指向这个文件夹,在这个文件夹里放bat文件即可,直接ctrl+R后在运行里输入cxdebug即可打开这个文档。
来自:http://cw2cw.blog.163.com/blog/static/16603899201042534721142/
http://support1.lenovo.com.cn/lenovo/wsi/htmls/detail_13142270381093677.html
[转载]PHP如何为函数执行设置超时
Php/Js/Shell/Go jackxiang 2013-1-20 17:01
如何防止一个函数执行时间过长呢?在PHP里可以用pcntl时钟信号+异常来实现。
代码如下:
root@192.168.137.158:~/php/swoole_study_codes# php timeout.php
PHP Exception: in /root/php/swoole_study_codes/timeout.php on line 19
PHP Stack trace:
PHP 1. {main}() /root/php/swoole_study_codes/timeout.php:0
PHP 2. a() /root/php/swoole_study_codes/timeout.php:26
PHP 3. sig() /root/php/swoole_study_codes/timeout.php:5
timeout
Stop
a finishi
Stop
原理是在函数执行前先设定一个时钟信号,如果函数的执行超过规定时间,信号会被触发,信号处理函数会抛出一个异常,被外层代码捕获。这样就跳出了原来函数的执行,接着执行下面的代码。如果函数在规定的时间内,时钟信号不会触发,在函数结束后清除时钟信号,不会有异常抛出。
来源自rango兄弟的博客:http://swoole.sinaapp.com/archives/64
代码如下:
root@192.168.137.158:~/php/swoole_study_codes# php timeout.php
PHP Exception: in /root/php/swoole_study_codes/timeout.php on line 19
PHP Stack trace:
PHP 1. {main}() /root/php/swoole_study_codes/timeout.php:0
PHP 2. a() /root/php/swoole_study_codes/timeout.php:26
PHP 3. sig() /root/php/swoole_study_codes/timeout.php:5
timeout
Stop
a finishi
Stop
原理是在函数执行前先设定一个时钟信号,如果函数的执行超过规定时间,信号会被触发,信号处理函数会抛出一个异常,被外层代码捕获。这样就跳出了原来函数的执行,接着执行下面的代码。如果函数在规定的时间内,时钟信号不会触发,在函数结束后清除时钟信号,不会有异常抛出。
来源自rango兄弟的博客:http://swoole.sinaapp.com/archives/64
21andy这兄弟,还说备份呢,没有想到这两天他vps没挂,好像blog估计是挂了吧,这篇文章来自百度的快照,如下,值得参考和实践。
阅读全文
阅读全文
[实践Ok]PHP用memcache作为session的存放时遇到的问题备案。
Php/Js/Shell/Go jackxiang 2013-1-18 18:06
Session其实是和cookie有联系的,通过session_id()作为浏览器里的cookie发送给浏览器,下次浏览器就像PHP客户端发送这个session_id(Cookie)后,服务器于是就知道这个用户是谁,通过session_id获取到所有的当前用户设置的session数组,因session是隐私,所以,在一个PHP里是没法获取到所有用户的session的,只能获取到当前,要想获取所有的,得记录到文件中(有session的用户访问)才行获取到程序设置的session值,否则,只能从服务器里的session文件中去提取(可能要对文件进行破解)。
阅读全文
阅读全文
在XML文档中使用类似"<" 的字符, 那么解析器将会出现错误,因为解析器会认为这是一个新元素的开始,组合XML字符串时遇到了< 。需要转义。
PHP5自带的simplexml_load_file对这个xml解析内容为空是因内容里包含:
<![CDATA[标题3]]> 内容里有 <> 特殊字符,所以,解析不到值。
又是一个鸡肋,为什么要说又呢?呵呵。
XML 的 CDATA,即 <![CDATA[ 与 ]]> 之间可以放 <、>、&、'、" 字符,由于 CDATA 中的内容不会被解析,所以上述字符在 CDATA 中不会造成 XML 的错误,否则“<”会被当作一个标签的开始。
但是,重要了。CDATA 中仍然不能放一些东西:
一是放特殊符号危险,比如“”,可能某些解析器认识,某些解析器不认识,解决办法:XmlTextReader 解析 XML 时遇到特殊字符出错。
二是不能放 <![CDATA[ 和 ]]>。像我们的 IT 类文章中可能经常出现这些字符,出现了,若写在 XML 势必出错,解决办法是用 System.Web.HttpUtility.HtmlEncode 将 <、>、&、'、" 进行编码,取值时再解码。那问题来了,既然已经编码了,还要 CDATA 做什么?
最后,在一个兄弟那儿看到是支持CDATA的PHP也可以解析,如下:
http://hi.baidu.com/yinqinlong502/item/e4dfc900a977ed1acc34eae9
php 解析xml遇到cdata怎么办
用$rss = simplexml_load_file ( '11111.xml', 'SimpleXMLElement', LIBXML_NOCDATA );哎就为了这么个函数我还去写正则准备替换了,白白废了我两小时,shit!!!以后多注意下那些函数的可选参数吧。长点教训.
直接输入xml内容为参数的也支持CDATA的解析,如下:
阅读全文
PHP5自带的simplexml_load_file对这个xml解析内容为空是因内容里包含:
<![CDATA[标题3]]> 内容里有 <> 特殊字符,所以,解析不到值。
又是一个鸡肋,为什么要说又呢?呵呵。
XML 的 CDATA,即 <![CDATA[ 与 ]]> 之间可以放 <、>、&、'、" 字符,由于 CDATA 中的内容不会被解析,所以上述字符在 CDATA 中不会造成 XML 的错误,否则“<”会被当作一个标签的开始。
但是,重要了。CDATA 中仍然不能放一些东西:
一是放特殊符号危险,比如“”,可能某些解析器认识,某些解析器不认识,解决办法:XmlTextReader 解析 XML 时遇到特殊字符出错。
二是不能放 <![CDATA[ 和 ]]>。像我们的 IT 类文章中可能经常出现这些字符,出现了,若写在 XML 势必出错,解决办法是用 System.Web.HttpUtility.HtmlEncode 将 <、>、&、'、" 进行编码,取值时再解码。那问题来了,既然已经编码了,还要 CDATA 做什么?
最后,在一个兄弟那儿看到是支持CDATA的PHP也可以解析,如下:
http://hi.baidu.com/yinqinlong502/item/e4dfc900a977ed1acc34eae9
php 解析xml遇到cdata怎么办
用$rss = simplexml_load_file ( '11111.xml', 'SimpleXMLElement', LIBXML_NOCDATA );哎就为了这么个函数我还去写正则准备替换了,白白废了我两小时,shit!!!以后多注意下那些函数的可选参数吧。长点教训.
直接输入xml内容为参数的也支持CDATA的解析,如下:
阅读全文
Jquery 模糊匹配ID
Php/Js/Shell/Go jackxiang 2013-1-14 13:07
[属性名称] 匹配包含给定属性的元素
[att=value] 匹配包含给定属性的元素 (大小写区分)
[att*=value] 模糊匹配
[att!=value] 不能是这个值
[att$=value] 结尾是这个值
[att^=value] 开头是这个值
[att1][att2][att3]... 匹配多个属性条件中的一个
===========================================下面举例================================
<UL id=comparePro>
<li id=compare_prod_list_001>信用卡贷款活动产品1-中国建设银行</li>
<li id=compare_prod_list_002>信用卡贷款活动产品2-中国建设银行</li>
<li id=compare_prod_list_003>信用卡贷款活动产品3-中国建设银行</li>
<li id=other>其他</li>
</UL>
要取到所有 id以compare_prod_list_开头的<li> : var list=$('li[id^=compare_prod_list_]');
来自:http://cyxu2004.blog.163.com/blog/static/457687182011112851043/
<tr align="center" id="_tr_809401de-0f4b-11e1-b237-001e0bdc11a2" class="odd">
这样的没有时刷新页面的判断(后面的Id值是每一个不一样的):
[att=value] 匹配包含给定属性的元素 (大小写区分)
[att*=value] 模糊匹配
[att!=value] 不能是这个值
[att$=value] 结尾是这个值
[att^=value] 开头是这个值
[att1][att2][att3]... 匹配多个属性条件中的一个
===========================================下面举例================================
<UL id=comparePro>
<li id=compare_prod_list_001>信用卡贷款活动产品1-中国建设银行</li>
<li id=compare_prod_list_002>信用卡贷款活动产品2-中国建设银行</li>
<li id=compare_prod_list_003>信用卡贷款活动产品3-中国建设银行</li>
<li id=other>其他</li>
</UL>
要取到所有 id以compare_prod_list_开头的<li> : var list=$('li[id^=compare_prod_list_]');
来自:http://cyxu2004.blog.163.com/blog/static/457687182011112851043/
<tr align="center" id="_tr_809401de-0f4b-11e1-b237-001e0bdc11a2" class="odd">
这样的没有时刷新页面的判断(后面的Id值是每一个不一样的):
WP Evernote Site Memory:
Evernote面向站长提供了Site Mmeory,以方便网站的访客能够方便的将当前页面的内容收藏到Evernote里。主要通过调用一个JS脚本来实现,但对于站长来讲并不方便,尤其是Wordpress博主,一旦添加之后,全站所有文章将都会有这个按钮。
通过Evernote Site Memory插件,可以:
1、只在添加有特定标签的文章后面显示按钮;
2、方便快捷的编辑Site Memory的设置;
3、不需要修改任何代码;
版本:0.9
插件介绍:http://chensd.com/plugins
发布日期:2010-11-13
下载地址:http://wordpress.org/extend/plugins/evernote-sitememory/
Evernote面向站长提供了Site Mmeory,以方便网站的访客能够方便的将当前页面的内容收藏到Evernote里。主要通过调用一个JS脚本来实现,但对于站长来讲并不方便,尤其是Wordpress博主,一旦添加之后,全站所有文章将都会有这个按钮。
通过Evernote Site Memory插件,可以:
1、只在添加有特定标签的文章后面显示按钮;
2、方便快捷的编辑Site Memory的设置;
3、不需要修改任何代码;
版本:0.9
插件介绍:http://chensd.com/plugins
发布日期:2010-11-13
下载地址:http://wordpress.org/extend/plugins/evernote-sitememory/
注意:要修改一下VMware里的DHCP分配值才能生效,其余到也没什么:
细节: 在修改注册表的IP后,再次修改vmware里的dhcp一次(变化下值),然后就是下面的第二点(二),这个二要不弄好,还是上不了网的,特别注意。
把笔记本上的Vmware下安的Centos6.3移植到台式机上,新安vmware后,想同一个ip(Vmware8),出现:
Start IP addresss is invalid.It must be greater than the subnet IP address.
比如:比如以前是192.168.98.2重装之后就变成了192.168.255.2,后想修改为98.2,就出现了上面的提示。
实际遇到的情况在Vmware6.0上:
下在操作是对的,但同时要注意操作后通过DHCP获取IP时还是原来的,这时你需要重新修改一下(显示是变了,但是没有生效)在vmware server控制台的Host-Virtual Network Settings...里面的DHCP Vmware8下的IP:如由:192.168.137.128 修改为:192.168.137.138,后再Linux下运行:service network restart 即可,这样就变为了:192.168.137.138 ,否则还是原来的:192.168.244.128.
二:那个GateWayIp也就是Vmware下的Linux的DNS设定值:/etc/resolv.conf nameserver 192.168.137.1 这个值是在Vmware里有设置的地方的(不设置会没法上网的),在这儿:在vmware server控制台的Host-Virtual Network Settings...里面的NAT,VMnet8,Edit,由:192.168.137.2 修改为:192.168.137.1 (就是Vmware8的虚拟网卡的IP地址)。
阅读全文
细节: 在修改注册表的IP后,再次修改vmware里的dhcp一次(变化下值),然后就是下面的第二点(二),这个二要不弄好,还是上不了网的,特别注意。
把笔记本上的Vmware下安的Centos6.3移植到台式机上,新安vmware后,想同一个ip(Vmware8),出现:
Start IP addresss is invalid.It must be greater than the subnet IP address.
比如:比如以前是192.168.98.2重装之后就变成了192.168.255.2,后想修改为98.2,就出现了上面的提示。
实际遇到的情况在Vmware6.0上:
下在操作是对的,但同时要注意操作后通过DHCP获取IP时还是原来的,这时你需要重新修改一下(显示是变了,但是没有生效)在vmware server控制台的Host-Virtual Network Settings...里面的DHCP Vmware8下的IP:如由:192.168.137.128 修改为:192.168.137.138,后再Linux下运行:service network restart 即可,这样就变为了:192.168.137.138 ,否则还是原来的:192.168.244.128.
二:那个GateWayIp也就是Vmware下的Linux的DNS设定值:/etc/resolv.conf nameserver 192.168.137.1 这个值是在Vmware里有设置的地方的(不设置会没法上网的),在这儿:在vmware server控制台的Host-Virtual Network Settings...里面的NAT,VMnet8,Edit,由:192.168.137.2 修改为:192.168.137.1 (就是Vmware8的虚拟网卡的IP地址)。
阅读全文
[随意调侃]erlang,golang,nodejs 都为html5来奔跑之我见。
Unix/LinuxC技术 jackxiang 2013-1-11 17:22
node.js解决了异步问题,但没解决并行问题,于是有疯子想把node.js用C扩展方式做成并行,为什么呢?
是因为Erlang和Golang是未来的主流语言,而nodejs是单线程而不能很好利用多核CPU的问题,于是有人想给它增强能力(尽管有cluster),
也想学go和erlang从语言层面上来解决问题。
但是现在GO语言和erlang已经在语言层面解决了并行问题,我觉得主要是多核心的利用,并行是必然趋势。
自己要做这些事情得自己学会进程调度,队列,信号等,像erlang和go,程序员不需要关心进程线程调度的问题,它在底层就封装好了。
之所以node.js有很多人学是因为,node.js主要是语言是JS。这让很多有前端经验的人可以很空易掌握。但是node.js也有些问题的,比如网络模块缓冲区总是64k。
如果要对核心的东西做调整还是挺麻烦的。你可用js写游戏可以跨所有的手机平台包括网页版,所以node.js也是个工具,不是语言。不是node.js火,是js火,搭了html5的顺风车。
新在啊儿呢,这个Nodejs:js基本上一个有任意语言经验的coder可以在一周内上手做项目。只要提供好项目管理,把规范之类的做好。成本之低。如果是c++:c++我花了两周一路是坑。
都是在html5上下功夫,不过问题是, html5游戏的商业模式好像不太清晰。个人觉得吧,做终端, 老老实实用原生语言去做, html5带来的好处好像意义没那么大。
现在html5这个工作组在做一个事情就是给-x绑定一个js引擎。用c++提供图形渲染。js处理业务逻辑。我跑过几个demo,性能还不错。
所以,我一直对html5持谨慎态度,技术也不热衷,看了看概念,大概了解了下。然后结论是:观望,还不成熟。
有人说最近几年游戏火,lua脚本就火了,和js一样很像python那样的胶水语言,能在线更新更能兼容浏览器,lua跟我刚说的Js一样的概念。 lua去调原生的c++,lua只是执行逻辑处理。他也是在app里集成了一个lua的引擎,还给lua绑定了一些cocos2d的接口,。lua现在用的已经很成熟了,多如牛毛,不多讲。
Writen by :jackxiang 2013-01-11 17:30:00
附录:
嗯,node.js可以实现那个http王浏览器推数据么?
跟nodejs没太大关系吧。都可以实现
那前端怎么搞?取数据时我一直觉得是个难题。
一个长链接挂着。
有数据来就处理罗
浏览器那边也这样子搞?
websocket 向浏览器推 后端可以使用nodejs 加前端使用socket.io 可以实现
如果php用的多 后端可以使用 https://github.com/bergie/dnode-php 也是事件模型 跟node一样
也可以使用 https://github.com/cboden/Ratchet 用php实现的websocket server,通信协议使用wamp
http://socketo.me/ http://wamp.ws/ 可以看看
如果真的要实现 server->client传数据,不建议直接采用socket.me上面的js库,desktop上面浏览器对web socket支持的不错,但是无法兼容android浏览器,所以可以使用socket 支持flash socket.
socket.io
启一个socket tcp 也没什么,XMPP的server,openfire 号称单机支持30万长连接
看到composer.json了吗
去查查 是什么东西
一个php的标准库
很好很强大的
这是个好玩意儿,比pear 强几百倍
现在多数优秀开源库都能用 composer 装
我还没用完全采用composer
是用libevent + stream扩展函数来实现底层的
网络编程不熟悉的 建议还是不要使用事件模型写程序
几个核几个worker,就像nginx一样。
好好研究下nginx source
我主要是从 下面的员工说的 因为事件的机制不好控制,没有顺序执行起来方便易编写,需要员工的水平比较高。
的nodejs 用了下,有好的地方 也有让人很不爽的地方。感觉不是很稳定,多线程fork出来的程序,采用net网络操作时,经常会崩掉
写一个高性能的Server还是挺困难的,像Nginx都用了很多atomic库操作,还有内嵌很多汇编
目前不需要高性能,用做游戏服务端,维护一二千人在线。
足够了
go语言看起来不错,没有广泛使用案例呀。
个人感觉,server再强悍,如果后面挂的业务逻辑卡一点,优势一下就木有了
Go底层是基于epoll的全异步模式,但上层是同步的语法,阻塞时自动切换协程
像我写的swoole这个Server,虽然性能很高,其实极端情况下可能会出错。node.js问题也是有的,这里坑很多的。什么时候把这些填平了,才比较安全 socket都是带缓存区的,假设某个fd缓冲区满了,就要丢数据了
这里缓冲区设大会有问题,设小了丢数据。
呵呵,事件通知机制在更高并发的Server里就是累赘了
所以我们有的Server是直接轮询的,不做通知机制
是因为Erlang和Golang是未来的主流语言,而nodejs是单线程而不能很好利用多核CPU的问题,于是有人想给它增强能力(尽管有cluster),
也想学go和erlang从语言层面上来解决问题。
但是现在GO语言和erlang已经在语言层面解决了并行问题,我觉得主要是多核心的利用,并行是必然趋势。
自己要做这些事情得自己学会进程调度,队列,信号等,像erlang和go,程序员不需要关心进程线程调度的问题,它在底层就封装好了。
之所以node.js有很多人学是因为,node.js主要是语言是JS。这让很多有前端经验的人可以很空易掌握。但是node.js也有些问题的,比如网络模块缓冲区总是64k。
如果要对核心的东西做调整还是挺麻烦的。你可用js写游戏可以跨所有的手机平台包括网页版,所以node.js也是个工具,不是语言。不是node.js火,是js火,搭了html5的顺风车。
新在啊儿呢,这个Nodejs:js基本上一个有任意语言经验的coder可以在一周内上手做项目。只要提供好项目管理,把规范之类的做好。成本之低。如果是c++:c++我花了两周一路是坑。
都是在html5上下功夫,不过问题是, html5游戏的商业模式好像不太清晰。个人觉得吧,做终端, 老老实实用原生语言去做, html5带来的好处好像意义没那么大。
现在html5这个工作组在做一个事情就是给-x绑定一个js引擎。用c++提供图形渲染。js处理业务逻辑。我跑过几个demo,性能还不错。
所以,我一直对html5持谨慎态度,技术也不热衷,看了看概念,大概了解了下。然后结论是:观望,还不成熟。
有人说最近几年游戏火,lua脚本就火了,和js一样很像python那样的胶水语言,能在线更新更能兼容浏览器,lua跟我刚说的Js一样的概念。 lua去调原生的c++,lua只是执行逻辑处理。他也是在app里集成了一个lua的引擎,还给lua绑定了一些cocos2d的接口,。lua现在用的已经很成熟了,多如牛毛,不多讲。
Writen by :jackxiang 2013-01-11 17:30:00
附录:
嗯,node.js可以实现那个http王浏览器推数据么?
跟nodejs没太大关系吧。都可以实现
那前端怎么搞?取数据时我一直觉得是个难题。
一个长链接挂着。
有数据来就处理罗
浏览器那边也这样子搞?
websocket 向浏览器推 后端可以使用nodejs 加前端使用socket.io 可以实现
如果php用的多 后端可以使用 https://github.com/bergie/dnode-php 也是事件模型 跟node一样
也可以使用 https://github.com/cboden/Ratchet 用php实现的websocket server,通信协议使用wamp
http://socketo.me/ http://wamp.ws/ 可以看看
如果真的要实现 server->client传数据,不建议直接采用socket.me上面的js库,desktop上面浏览器对web socket支持的不错,但是无法兼容android浏览器,所以可以使用socket 支持flash socket.
socket.io
启一个socket tcp 也没什么,XMPP的server,openfire 号称单机支持30万长连接
看到composer.json了吗
去查查 是什么东西
一个php的标准库
很好很强大的
这是个好玩意儿,比pear 强几百倍
现在多数优秀开源库都能用 composer 装
我还没用完全采用composer
是用libevent + stream扩展函数来实现底层的
网络编程不熟悉的 建议还是不要使用事件模型写程序
几个核几个worker,就像nginx一样。
好好研究下nginx source
我主要是从 下面的员工说的 因为事件的机制不好控制,没有顺序执行起来方便易编写,需要员工的水平比较高。
的nodejs 用了下,有好的地方 也有让人很不爽的地方。感觉不是很稳定,多线程fork出来的程序,采用net网络操作时,经常会崩掉
写一个高性能的Server还是挺困难的,像Nginx都用了很多atomic库操作,还有内嵌很多汇编
目前不需要高性能,用做游戏服务端,维护一二千人在线。
足够了
go语言看起来不错,没有广泛使用案例呀。
个人感觉,server再强悍,如果后面挂的业务逻辑卡一点,优势一下就木有了
Go底层是基于epoll的全异步模式,但上层是同步的语法,阻塞时自动切换协程
像我写的swoole这个Server,虽然性能很高,其实极端情况下可能会出错。node.js问题也是有的,这里坑很多的。什么时候把这些填平了,才比较安全 socket都是带缓存区的,假设某个fd缓冲区满了,就要丢数据了
这里缓冲区设大会有问题,设小了丢数据。
呵呵,事件通知机制在更高并发的Server里就是累赘了
所以我们有的Server是直接轮询的,不做通知机制
[前端兼容]IE6,IE7下按钮(BUTTON)变宽的解决方法
Php/Js/Shell/Go jackxiang 2013-1-11 17:05
IE6,IE7下按钮(BUTTON)变宽的解决方法:
来自:http://niutuku.com/tech/css/250633.shtml
或则单独写死在style里:
写在Html页面里宽和高:
来自:http://niutuku.com/tech/css/250633.shtml
或则单独写死在style里:
写在Html页面里宽和高:
最近装装了Windows 7,他想知道有没有人动用他的电脑,问我有没有办法。办法当然有,只需要设置一下就行了,详细步骤如下:
首先启动Windows 7,在搜索栏(控制面板)中输入编辑组,马上就搜索到了编辑组策略,点击即可启动程序编辑组策略。依次展开组策略左侧树形列表的计算机配置/管理模板/Windows组件/Windows登录选项,双击右侧在用户登录期间显示有关以前登录的信息项,弹出在用户登录期间显示有关以前登录的信息对话框,默认状态是未配置,选择已启用单选项,点确定按钮。
点击窗口右上角的关闭按钮退出编辑组策略后,重新启动一下计算机,这样系统就会在进入系统桌面前提示上次的登录情况,包括登录是否成功,以及详细的登录时间。以后,有没有人动用你的电脑就一目了然了。
实践Ok。
来源:http://gzm2000.blog.163.com/blog/static/104311620101913751989/
开始 运行 输入cmd
再输入systeminfo
回车
可以了
点击Win7桌面左下角圆形的开始菜单按钮,在搜索框中输入:gpedit.msc ,点击搜索出来的程序,进入组策略设置窗口。进入以后Win7桌面下方的任务栏会出现一个红色工具箱的图标。在Win7搜索框中输入:gpedit.msc ,进入组策略设置窗口,在Win7组策略设置窗口中,选择左边的树形结构,进入“组策略→计算机配置→管理模块→Windows 组件→Windows 登录选项”,点击“在用户登录期间显示有关登录以前的信息”,将这个项目的设置状态改为”已启用“。
透过系统日志 查看win7启动时间
很多人使用windows7的时候,都觉得windows7的启动速度慢,和windowsXP基本上没得比。笔者认为,windows7慢得有理,毕竟是他的服务和功能要强于XP很多。不过这个也不是肯定的,有的说win7的启动速度和winxp启动相差无几,当然这个也得看配置。到底如何查看windows7的启动时间呢?我们可以通过系统日志来查看。
其实,我们可以在Windows 7系统下直接查看系统的启动时间。右击桌面上的“计算机”图标,从快捷菜单中选择“管理”,打开“计算机管理”窗口,依次选择“系统工具→事件查看器 →Windows日志→系统”,在右侧窗格中,根据显示的时间(建议选择间隔一天的事件)选择一个事件,在下面的窗格中就可以查看到精确到秒的系统启动时间(如图所示)。
如果你觉得手工定位比较麻烦的话,那么可以对“来源”进行排序,只在“EventLog”项中进行查找,这样不仅可以查看系统的启动时间,还可以比较在一段时间内的系统启动速度快慢,感兴趣的朋友可以一试。
如我的:
信息 2013/1/9 8:46:12 Kernel-General 12 无
Microsoft-Windows-Kernel-General
操作系统已在系统时间 2013-01-09T00:46:12.375199800Z 启动。
首先启动Windows 7,在搜索栏(控制面板)中输入编辑组,马上就搜索到了编辑组策略,点击即可启动程序编辑组策略。依次展开组策略左侧树形列表的计算机配置/管理模板/Windows组件/Windows登录选项,双击右侧在用户登录期间显示有关以前登录的信息项,弹出在用户登录期间显示有关以前登录的信息对话框,默认状态是未配置,选择已启用单选项,点确定按钮。
点击窗口右上角的关闭按钮退出编辑组策略后,重新启动一下计算机,这样系统就会在进入系统桌面前提示上次的登录情况,包括登录是否成功,以及详细的登录时间。以后,有没有人动用你的电脑就一目了然了。
实践Ok。
来源:http://gzm2000.blog.163.com/blog/static/104311620101913751989/
开始 运行 输入cmd
再输入systeminfo
回车
可以了
点击Win7桌面左下角圆形的开始菜单按钮,在搜索框中输入:gpedit.msc ,点击搜索出来的程序,进入组策略设置窗口。进入以后Win7桌面下方的任务栏会出现一个红色工具箱的图标。在Win7搜索框中输入:gpedit.msc ,进入组策略设置窗口,在Win7组策略设置窗口中,选择左边的树形结构,进入“组策略→计算机配置→管理模块→Windows 组件→Windows 登录选项”,点击“在用户登录期间显示有关登录以前的信息”,将这个项目的设置状态改为”已启用“。
透过系统日志 查看win7启动时间
很多人使用windows7的时候,都觉得windows7的启动速度慢,和windowsXP基本上没得比。笔者认为,windows7慢得有理,毕竟是他的服务和功能要强于XP很多。不过这个也不是肯定的,有的说win7的启动速度和winxp启动相差无几,当然这个也得看配置。到底如何查看windows7的启动时间呢?我们可以通过系统日志来查看。
其实,我们可以在Windows 7系统下直接查看系统的启动时间。右击桌面上的“计算机”图标,从快捷菜单中选择“管理”,打开“计算机管理”窗口,依次选择“系统工具→事件查看器 →Windows日志→系统”,在右侧窗格中,根据显示的时间(建议选择间隔一天的事件)选择一个事件,在下面的窗格中就可以查看到精确到秒的系统启动时间(如图所示)。
如果你觉得手工定位比较麻烦的话,那么可以对“来源”进行排序,只在“EventLog”项中进行查找,这样不仅可以查看系统的启动时间,还可以比较在一段时间内的系统启动速度快慢,感兴趣的朋友可以一试。
如我的:
信息 2013/1/9 8:46:12 Kernel-General 12 无
Microsoft-Windows-Kernel-General
操作系统已在系统时间 2013-01-09T00:46:12.375199800Z 启动。
PHP中比较两个值是否一样大,用== ===都相等的诡异问题
Php/Js/Shell/Go jackxiang 2013-1-8 10:01
测试一下:
如果用双引号引起来:
string(18) "450311199001010516"
string(18) "450311199001010517"
显然是不相等的!
但如果用get方式传入呢?经测试get是相等的:
我很想知道你的get为什么是等的。。。
哎。
有人认为:
最初用户输入时候,进行处理,也就是当字符串了。
这有啥结论的?
就两个知识点:
1、POST GET的,PHP默认都转为字符串处理
2、PHP脚本中,定义的int型,如果超出范围,会被转为float型而失去精度
[框架用到]PHP在配置文件里直接return,return 一定要在函数里面吗的探讨。
Php/Js/Shell/Go jackxiang 2013-1-8 09:42
在很多框架里有这样的情况,一个config文件里直接就return了(return array("name"=>"jack","info"=$infoArr)),但是没有一个函数,于是觉得纳闷了,怎么能这样呢,其实往往这个文件可能是一个共公的return文件,于是就写成这样了,再由其它文件包含进来,如:
自己实践Ok版本:
因为包含的内容里有:
<?php defined('SYS_PATH') or die('No direct script access.');
所以加了一行:
define('SYS_PATH', $this->_domain_path . 'libraries' . DIRECTORY_SEPARATOR);
才能读出来。
return 一定要在函数里面吗
没有这么规定吧
中庸就是春江 10:00:27
确实没有这么规定,但你在函数之外使用return就会报错
单曲 10:03:55
php在哪里都可以return的~~
天枫 10:05:27
没有吧
现在一般config文件一般都直接return array
单曲 10:05:46
e你。
嗯。
天枫 10:06:13
反正我这么写
不会报错啊
前程似锦 10:06:23
因为现在的config 都是inc进来的
单曲 10:06:35
inc?
前程似锦 10:06:37
老子的框架也这么搞的
中庸就是春江 10:06:38
js里面是这样的,php不报错?
天枫 10::
include
单曲() :06:47
$config = 'config.php';
这个config.php return一个数组
天枫 10:06:56
意思是直接运行这个config文件会报错?
单曲 10:06:59
$config 就能得到这个数组了。
前程似锦 10:07:04
$config = include 'config.php';
中庸就是春江 10:07:04
还能这样?
这个还差不多
写在最后,在新的版本里是不会报错的,确实这样搞有点违反规则,直接就return,想到main里去么?但框架里往往有这么玩的客观存在。
自己实践Ok版本:
因为包含的内容里有:
<?php defined('SYS_PATH') or die('No direct script access.');
所以加了一行:
define('SYS_PATH', $this->_domain_path . 'libraries' . DIRECTORY_SEPARATOR);
才能读出来。
return 一定要在函数里面吗
没有这么规定吧
中庸就是春江 10:00:27
确实没有这么规定,但你在函数之外使用return就会报错
单曲 10:03:55
php在哪里都可以return的~~
天枫 10:05:27
没有吧
现在一般config文件一般都直接return array
单曲 10:05:46
e你。
嗯。
天枫 10:06:13
反正我这么写
不会报错啊
前程似锦 10:06:23
因为现在的config 都是inc进来的
单曲 10:06:35
inc?
前程似锦 10:06:37
老子的框架也这么搞的
中庸就是春江 10:06:38
js里面是这样的,php不报错?
天枫 10::
include
单曲() :06:47
$config = 'config.php';
这个config.php return一个数组
天枫 10:06:56
意思是直接运行这个config文件会报错?
单曲 10:06:59
$config 就能得到这个数组了。
前程似锦 10:07:04
$config = include 'config.php';
中庸就是春江 10:07:04
还能这样?
这个还差不多
写在最后,在新的版本里是不会报错的,确实这样搞有点违反规则,直接就return,想到main里去么?但框架里往往有这么玩的客观存在。