去年的GNOME社区年度大会GUADEC上, 有一个玩笑在与会者中很受欢迎,这个玩笑称这是最后一届GUADEC。它当然不是真的。今年的GUADEC大会将于8月1日在捷克举行,但许多讲这个笑话 的人真的不会来了,对他们而言笑话变成真话。
桌面用户正越来越多的使用智能手机平板和云服务,Unity遗弃了GTK+,而原来基于GTK+的开源项目则 转向了Qt,其中就包括了Linus Torvald的Subsurface项目。根据Google趋势,GNOME和GTK+正面临无人使用的窘境。
来自:http://www.cnbeta.com/articles/245886.htm
桌面用户正越来越多的使用智能手机平板和云服务,Unity遗弃了GTK+,而原来基于GTK+的开源项目则 转向了Qt,其中就包括了Linus Torvald的Subsurface项目。根据Google趋势,GNOME和GTK+正面临无人使用的窘境。
来自:http://www.cnbeta.com/articles/245886.htm
打造一个产品需要专注与执着,曾经设计出 iPod 的 Tony Fadell 也发挥这种追求极致的精神,开发出可自动调节室内温度的恒温器 Nest。
古老的塑料盒子,几个难看的开关,自 1953 年后,恒温器基本没有发生过太大变化。Nest 赋予恒温器高品质外壳材质与配件,并遵循简约的美学设计,让这一事物变得科技、时尚、现代。
Ars Technica 的 Jacqul Cheng 也买了一个 Nest。经过三个月的使用后,她详细地回顾了这段时间里他使用 Nest 的体验,包括产品的优势与劣势。总的来说, 250 美元的 Nest 值得购买。
那么,除了出色的工业设计以外,Nest 究竟包含了哪些人性化的细节,让人爱不释手?
自动变换的消息提醒样式
Cheng 发现在不同情况下 Nest 的消息提醒样式也会随之发生改变。比如当空调是开启的时候,Nest 的消息背景颜色将变为蓝色;若什么都没有发生,消息的背景颜色就会变为黑色,字体则变为白色。
Nest 的消息提醒方式,有点像我们经常看见的“状态指示灯”,变红变绿就知道机器处于何种状态,以最直接的视觉变化来告诉人们信息——人脑对图像的处理速度要比文字处理速度快,一下子就知道了设备处于何种状态。
自动学习
与传统恒温器最大的不同,Nest 会自动学习,记忆我们的习惯。Cheng 发现 Nest 的“学习时间”大概为一周,如果我们要设置新的温度,那么调整了一周之后,它就会自动记忆。
而且,如果习惯上有一些细微的差别,Nest 也能够分辨出来,并加以记忆。Cheng 以自身为例子,比如希望星期一星期二傍晚 6 点的时候,温度保持在 73 °F;而星期五下午 3 点,星期六下午 4 点时,希望温度保持在 80°F——这些不同时间点不同的要求,Nest 都能够经过一周的学习之后,记忆下来。当下一周来临,便可以放任 Nest 自己去调整,不必自己费心。
自动衡量调温时间
如果你设置了一个新温度,那么 Nest 会计算从现在的气温,调整到预设温度所需要的时间。这个时间的计算在经过几个星期的使用后,会变得非常精确。Cheng 曾经记录几次 Nest 预测的调温时间,然后惊讶地发现,所花的时间相当吻合。
Auto-Away 模式
这也是一个和“自动”有关的功能。如果我们离开自己的家一段时间,不必担心家中的空调会按照恒温器的指示一直运行。Nest 的内部包含一个运动检测器,通过它 Nest 能够知道是否有人在家——如果家中一段时间内没有人,它就会自动关机。
不过,你还可以为恒温器设置最高气温和最低气温。这样,当室温超过多少度的时候,恒温器会自动打开,指示空调调节温度——如果真的有这样的需要。
Cheng 唯一觉得 Auto-Away 模式不好的地方就是,如果我们再家中不经常走动,Nest 可能会自行关机。只不过,这样的情况比较少见。
全平台遥控
由于 Nest 可以和 Wi-Fi 连接,而且公司还开发了移动应用、网页应用,让用户通过 iPhone、Android 设备还有网页来控制温度。意味着,无论你在房间里、沙发上,坐着躺着趴着窝着,都可以设定恒温器的温度,也能够查看恒温器的信息——一个助长懒惰的功能。
总结
从 Cheng 的使用体验,我们可以发现 Nest 最大的优点在于“自动”——自动学习,自动调节温度,自动节省能源——不必费心,它会帮我们将温度调节好,让我们的生活质量更高。它的使用就好像自动洗衣机那样简单,只要经过简单的三两步,设定好条件,它就可以自动帮你完成任务。像这样将高度复杂的任务简单化,才是用户所追求的。
第二个优点“云端化”的遥控方式。在设备严重分裂化的今天,在手机上平板上电脑上都可以查看 Nest 的信息,无疑让人减少了焦虑,只要能够上网的地方,都能够随时查看。Evernote 的经验告诉我,让人摆脱地理、时间的限制,随时随地做某事的体验非常重要。缩短用户达成目标的时间与步骤,这也是产品设计需要考虑的。
来自:http://www.ifanr.com/128459

js与php加密、解密函数
Php/Js/Shell/Go jackxiang 2013-7-19 16:13
*********************加密、解密**************
php中加密、解密
用rawurlencode()对字符串加密,代替原始的urlencode():为了保证特殊字符,空格,回车,等操作的正确性
同时用rawurldecode()进行解码,代替urldecode(),同样理由
javascript中加密、解密
用encodeURIComponent()代替encodeURI(),加密
用decodeURIComponent()代替decodeURI(),解密
都是为了防止加密过程中对特殊字符的处理会出错的问题
来自:http://www.songxuemei.com/decode-encode/
php中加密、解密
用rawurlencode()对字符串加密,代替原始的urlencode():为了保证特殊字符,空格,回车,等操作的正确性
同时用rawurldecode()进行解码,代替urldecode(),同样理由
javascript中加密、解密
用encodeURIComponent()代替encodeURI(),加密
用decodeURIComponent()代替decodeURI(),解密
都是为了防止加密过程中对特殊字符的处理会出错的问题
来自:http://www.songxuemei.com/decode-encode/
背景:近来出现让外包演示代码的电脑出现:“cmd.exe被禁用 提示“由于一个软件限制策略的阻止,Windows无法打开此程序 ”,我要用java在cmd下破解zend studio10.1,于是不得不想法解决这个问题。于是按下面的方法解决了该问题,特别是最后一步,在xp下操作后,就能立即打开cmd了,不用重启的。
阅读全文

背景:今天出现了个问题在启用本地共享连接时,出现的错误!以为是vmware下的网卡vmwarfe8导致的,最后证明不是,特作下记录如下,以方便下次使用。这块共享能否实现无线我在想是否对vmware的NAT入网有关系呢,有空实践下,这个问题好久了。
我已经建了一个无线临时网络,来启用共享用来上网的!Internet连接共享访问被启用时,出现了一个错误(null)?而且这错误也会在系统日志里留下记录,都是些莫名其妙的记录。
这个问题怎么办?不要急,下面来告诉你怎么解决这个问题:
这个大多数都是没有启用 windows firewall 导致的 ,因为很多卫士什么的,都会禁用掉,只要启用就行了。启用的方法很简单:
一、点击开始按钮——搜索框中输入:服务,回车打开服务管理界面
二、找到windows firewall ,点击右边的启动即可。
来自:http://www.win7en.com/strive/2672.html
我已经建了一个无线临时网络,来启用共享用来上网的!Internet连接共享访问被启用时,出现了一个错误(null)?而且这错误也会在系统日志里留下记录,都是些莫名其妙的记录。
这个问题怎么办?不要急,下面来告诉你怎么解决这个问题:
这个大多数都是没有启用 windows firewall 导致的 ,因为很多卫士什么的,都会禁用掉,只要启用就行了。启用的方法很简单:
一、点击开始按钮——搜索框中输入:服务,回车打开服务管理界面
二、找到windows firewall ,点击右边的启动即可。
来自:http://www.win7en.com/strive/2672.html
那为何PHP还可以用井号#为注释了呢?
Php/Js/Shell/Go jackxiang 2013-7-17 09:54
背景:看有兄弟用“#”做PHP的注释。
PHP支持以Shell脚本风格的单行注释,这种注释方式使用“#”的形式实现,它的用法与C++语言风格注释方式相似。使用Shell脚本风格进行单行注释的PHP代码是可行的。但是不是主流就不得而知了,呵呵。
阅读全文
PHP支持以Shell脚本风格的单行注释,这种注释方式使用“#”的形式实现,它的用法与C++语言风格注释方式相似。使用Shell脚本风格进行单行注释的PHP代码是可行的。但是不是主流就不得而知了,呵呵。

找回丢失的“显示桌面”(现提示两种方法)
方法一:点“开始”菜单→运行→输入“regsvr32 /n /i:u shell32”→确定。
这样你的“显示桌面”又在“任务栏”出现了。
方法二:
新建一个文本文件,复制下面的代码到新建的文件中:
[Shell]
Command=2
IconFile=explorer,3
[Taskbar]
Command=ToggleDesktop
最后保存时选择“文件类型”为“所有文件”,“文件名”选择“显示桌面.scf”,这时在新建文本文件的地址“显示桌面”就找回了,拖到任务栏的快速启动中即可。
桌面任务栏程序程序图标没有了的解决办法:
解决的问题很简单:我们可以打开任务管理器,杀掉windows桌面的进程“explorer”,然后再重新运行(win + R组合键或者任务管理器的“文件-->运行”输入explorer命令)即可。不过与此同时,也会产生一些无关紧要的副作用,比如之前打开的几个文件浏览的窗口会关闭掉。
来自:http://www.2cto.com/os/201209/158469.html
方法一:点“开始”菜单→运行→输入“regsvr32 /n /i:u shell32”→确定。
这样你的“显示桌面”又在“任务栏”出现了。
方法二:
新建一个文本文件,复制下面的代码到新建的文件中:
[Shell]
Command=2
IconFile=explorer,3
[Taskbar]
Command=ToggleDesktop
最后保存时选择“文件类型”为“所有文件”,“文件名”选择“显示桌面.scf”,这时在新建文本文件的地址“显示桌面”就找回了,拖到任务栏的快速启动中即可。
桌面任务栏程序程序图标没有了的解决办法:
解决的问题很简单:我们可以打开任务管理器,杀掉windows桌面的进程“explorer”,然后再重新运行(win + R组合键或者任务管理器的“文件-->运行”输入explorer命令)即可。不过与此同时,也会产生一些无关紧要的副作用,比如之前打开的几个文件浏览的窗口会关闭掉。
来自:http://www.2cto.com/os/201209/158469.html
[接口传值]request.getParameter("变量名")获取的字符串中原来的加号变成了空格,url传值。此时往往会出现没说需要urlencode带来的系列问题。
Php/Js/Shell/Go jackxiang 2013-7-15 16:07
今天我在调程序时,遇到了见郁闷的事,我用ajax从前台显示页面传字符串变量给处理页面,出现了件怪事,我想传的内容是abc+,但接收以后用System.out.println()输出是abc空格。反复测试好几遍,都是这个结果,真是令人郁闷。在网上搜了搜,找到了原因。
原因: url中有些字符被转义,比如空格被编码成加号,于是传的参数明明是加号,获取的值却成了空格。如何解决呢?如果是通过url传递参数,应该对其进行必要的编码。
解决办法:
在javascript中加入
对字符串进行处理.如:var str=URLencode("abc+")
综上,即url里有如下四个特殊字符时:(1)加号:+ (2)双引号:" (3)单引号:' (4)斜杠:/时,既要进行特殊处理。
搞自:http://www.blogjava.net/juhongtao/archive/2009/07/31/168639.html
更多参考:http://blog.csdn.net/aragorn_177/article/details/2612974
背景:
对方部门给一接中,没说明是urlencode直接给一个get参数过来,于是对生成的+这样的,通过get后没了,变成了空格(特别是指浏览器里),
于是得这样:
输出:
---------- 调试PHP ----------
x3LCVymudOXKl40YwZledetlpbOmC0wS823N3tptZ54JeWS38pInvk3VkRBzTXyJvqSCd9JZHTgfnRsguGyjI4p5ejA8+KhXTZlA4rQ6rmpDczbbxGfsZj+J1tC+R9hH
x3LCVymudOXKl40YwZledetlpbOmC0wS823N3tptZ54JeWS38pInvk3VkRBzTXyJvqSCd9JZHTgfnRsguGyjI4p5ejA8%2BKhXTZlA4rQ6rmpDczbbxGfsZj%2BJ1tC%2BR9hH
输出完成 (耗时 0 秒) - 正常终止
最后,其实通过测试,Curl命令行里也会对+进行urldecode进行了转码后变成了空格后进入到PHP程序变量里,于是加号没了,这种情况要想加号还在,得先通过工具urlencode一把,再传入也就出来加号了Ok了,后再一次urlencode一把就变成了%2B的+了:
相当于想通过浏览器传入urlencode的%2B,则需要在浏览器里输入对对+进行编码为%2B的码,后浏览器解码一次,还原成+号后,再编码,也就是原来输入的编码了,串还是那个串,传入编码后的被解开,再被编码的一个过程。
常常在post进行发送时用的是:
在此时,这个函数相当于一个urlencode功能,它有一个默认的参数:
int $enc_type = PHP_QUERY_RFC1738
如果 enc_type 是 PHP_QUERY_RFC1738,则编码将会以 » RFC 1738 标准和 application/x-www-form-urlencoded 媒体类型进行编码,空格会被编码成加号(+)。
-----------------------------------------
同样,那个+会变成%2B,呵呵。
原因: url中有些字符被转义,比如空格被编码成加号,于是传的参数明明是加号,获取的值却成了空格。如何解决呢?如果是通过url传递参数,应该对其进行必要的编码。
解决办法:
在javascript中加入
对字符串进行处理.如:var str=URLencode("abc+")
综上,即url里有如下四个特殊字符时:(1)加号:+ (2)双引号:" (3)单引号:' (4)斜杠:/时,既要进行特殊处理。
搞自:http://www.blogjava.net/juhongtao/archive/2009/07/31/168639.html
更多参考:http://blog.csdn.net/aragorn_177/article/details/2612974
背景:
对方部门给一接中,没说明是urlencode直接给一个get参数过来,于是对生成的+这样的,通过get后没了,变成了空格(特别是指浏览器里),
于是得这样:
输出:
---------- 调试PHP ----------
x3LCVymudOXKl40YwZledetlpbOmC0wS823N3tptZ54JeWS38pInvk3VkRBzTXyJvqSCd9JZHTgfnRsguGyjI4p5ejA8+KhXTZlA4rQ6rmpDczbbxGfsZj+J1tC+R9hH
x3LCVymudOXKl40YwZledetlpbOmC0wS823N3tptZ54JeWS38pInvk3VkRBzTXyJvqSCd9JZHTgfnRsguGyjI4p5ejA8%2BKhXTZlA4rQ6rmpDczbbxGfsZj%2BJ1tC%2BR9hH
输出完成 (耗时 0 秒) - 正常终止
最后,其实通过测试,Curl命令行里也会对+进行urldecode进行了转码后变成了空格后进入到PHP程序变量里,于是加号没了,这种情况要想加号还在,得先通过工具urlencode一把,再传入也就出来加号了Ok了,后再一次urlencode一把就变成了%2B的+了:
相当于想通过浏览器传入urlencode的%2B,则需要在浏览器里输入对对+进行编码为%2B的码,后浏览器解码一次,还原成+号后,再编码,也就是原来输入的编码了,串还是那个串,传入编码后的被解开,再被编码的一个过程。
常常在post进行发送时用的是:
在此时,这个函数相当于一个urlencode功能,它有一个默认的参数:
int $enc_type = PHP_QUERY_RFC1738
如果 enc_type 是 PHP_QUERY_RFC1738,则编码将会以 » RFC 1738 标准和 application/x-www-form-urlencoded 媒体类型进行编码,空格会被编码成加号(+)。
-----------------------------------------
同样,那个+会变成%2B,呵呵。
[网页查找]MacBook下面chrome搜索快捷键Option+Command+F,全屏快捷键Control+Command+f,访问大网站如何在源代码中搜索JS函数查找其调用,fiddler2里查找所有请求的contents内容的某字符串的方法,Httpwatcher也有该功能,对于web页面里的所有的js函数在Firebug、fiddler2及Httpwatcher和chrome开发者模式下查找方法备案,重发JS请求。
Php/Js/Shell/Go jackxiang 2013-7-15 10:40
下面的快捷键记不住怎么办?新的插件搜索位置在:
Windows下面的F12打开开发者工具后,右侧有下个竖着的点,然后,下拉中有一项:More Tools-》新的下拉:Search就打开了Chrome在所有资源文件源码中搜索Ctrl+Shift+F。 来自:https://www.cnblogs.com/wsytl/p/5039032.html
MacBook下面chrome全屏快捷键Control+Command+F。
一、在源代码中搜索:也就是想在整个工程下,查找一段源代码呢?
Windows下Ctrl+Shift+F更多技巧:http://www.cnblogs.com/giggle/p/5966991.html
MacBook下的Chrome打开网址里的全网页包括CSS/JS的搜索快捷键:Option+Command+F。 #Mac上:Option+Command+F
二)快速查找文件:
Ctrl+P(Mac上Cmd + P)
三)跳到某行:
Ctrl+G(Mac上Cmd+L),然后输入你指定的行数即可。
四)多光标:(快速查找文件后,可多光标编辑,对于一行压缩的代码,展开格式化后,不能在里面修改)
通过按住Ctrl(Mac上Cmd)。
有时想查找整个页面里的某个函数在哪个文件里,往往这些函数在输出时是压缩的js,且有多个,此时查找很不太方便定位文件。
为此,介绍两种办法:
1.通过firebug查找功能(较弱):
有了Firebug,查找页面上的HTML元素(尤其是 比较深层的)非常之简单!更重要的是,一旦你 找到你要的元素,Firebug...
一款快速查找页面元素的Firefox插件——FireFinder:http://www.kuqin.com/webpagedesign/20090613/56307.html
Firefox的Firebug扩展:FireScope:http://www.webjx.com/javascript/jsajax-10665_2.html
2.通过fiddler2进行查找。
当经过fiddler2访问完一个网页后,在fiddler2里ctrl+a选中所有访问的Url后,点右键,选:Decode Selected Sessions...(否则:会找不到的,因为变成的是乱码什么的。)
(代理firefox下的网络访问,后在fiddler2下进行ctrl+F查找字符中,于是可以查到这个函数、字符串在哪个文件里,很是方便).
3.Httpwatcher查找:
1)Filter->enabling Filtering->[勾选]contents is:下面什么也不选->content contains:输入查找的内容。就能查到所有请求中包含有关键字的js,html了,然后再选自己要找的某个js,再进行find查找即可。
4.chrome浏览器:F12 Ctrl+Shift+F(IOS:Cmd+Opt+F),还支持正则表达式。
摘自:http://toutiao.com/item/6205065039238889986/?iid=3127152027&app=news_article&tt_from=android_share&utm_medium=toutiao_android&utm_campaign=client_share
===============
谷歌浏览器怎么重发请求_使用Chrome浏览器实现请求的重放即复制某个请求?
Chrome可以通过控制台实现对某个请求的重放,即复制某个请求,然后自己实现对该请求的多次发送。这个功能有什么用呢?在web开发中,调试代码或者调试找bug的时候就派上用场了。使用方法如下:
在Chrome上按f12打开控制台,切到Network标签页。之后进行你正常的页面操作把你想要复制的请求先通过页面发送一遍(如果页面有自动刷新的话,为了避免刷新后请求丢失的情况出现,建议勾选上Preserve log)
通过鼠标在请求的列表中找到我们需要复制的请求,右键——Copy——Copy as fetch(我这里直接使用我的首页请求进行演示)
到这里我们的请求已经被复制下来了,那怎么实现重新请求呢?很简单,还是刚才的页面,我们切换到Console页面,直接粘贴回车即可,需要多次请求则粘贴多次。
解释:fetch其实是javascript中一个网络请求的函数或者工具,Chrome在我们Copy as fetch的时候帮我们把请求的各种参数转换成了使用fetch请求的代码,所以我们可以直接在控制台上直接执行从而达到请求重放的效果。
Windows下面的F12打开开发者工具后,右侧有下个竖着的点,然后,下拉中有一项:More Tools-》新的下拉:Search就打开了Chrome在所有资源文件源码中搜索Ctrl+Shift+F。 来自:https://www.cnblogs.com/wsytl/p/5039032.html
MacBook下面chrome全屏快捷键Control+Command+F。
一、在源代码中搜索:也就是想在整个工程下,查找一段源代码呢?
Windows下Ctrl+Shift+F更多技巧:http://www.cnblogs.com/giggle/p/5966991.html
MacBook下的Chrome打开网址里的全网页包括CSS/JS的搜索快捷键:Option+Command+F。 #Mac上:Option+Command+F
二)快速查找文件:
Ctrl+P(Mac上Cmd + P)
三)跳到某行:
Ctrl+G(Mac上Cmd+L),然后输入你指定的行数即可。
四)多光标:(快速查找文件后,可多光标编辑,对于一行压缩的代码,展开格式化后,不能在里面修改)
通过按住Ctrl(Mac上Cmd)。
有时想查找整个页面里的某个函数在哪个文件里,往往这些函数在输出时是压缩的js,且有多个,此时查找很不太方便定位文件。
为此,介绍两种办法:
1.通过firebug查找功能(较弱):
有了Firebug,查找页面上的HTML元素(尤其是 比较深层的)非常之简单!更重要的是,一旦你 找到你要的元素,Firebug...
一款快速查找页面元素的Firefox插件——FireFinder:http://www.kuqin.com/webpagedesign/20090613/56307.html
Firefox的Firebug扩展:FireScope:http://www.webjx.com/javascript/jsajax-10665_2.html
2.通过fiddler2进行查找。
当经过fiddler2访问完一个网页后,在fiddler2里ctrl+a选中所有访问的Url后,点右键,选:Decode Selected Sessions...(否则:会找不到的,因为变成的是乱码什么的。)
(代理firefox下的网络访问,后在fiddler2下进行ctrl+F查找字符中,于是可以查到这个函数、字符串在哪个文件里,很是方便).
3.Httpwatcher查找:
1)Filter->enabling Filtering->[勾选]contents is:下面什么也不选->content contains:输入查找的内容。就能查到所有请求中包含有关键字的js,html了,然后再选自己要找的某个js,再进行find查找即可。
4.chrome浏览器:F12 Ctrl+Shift+F(IOS:Cmd+Opt+F),还支持正则表达式。
摘自:http://toutiao.com/item/6205065039238889986/?iid=3127152027&app=news_article&tt_from=android_share&utm_medium=toutiao_android&utm_campaign=client_share
===============
谷歌浏览器怎么重发请求_使用Chrome浏览器实现请求的重放即复制某个请求?
Chrome可以通过控制台实现对某个请求的重放,即复制某个请求,然后自己实现对该请求的多次发送。这个功能有什么用呢?在web开发中,调试代码或者调试找bug的时候就派上用场了。使用方法如下:
在Chrome上按f12打开控制台,切到Network标签页。之后进行你正常的页面操作把你想要复制的请求先通过页面发送一遍(如果页面有自动刷新的话,为了避免刷新后请求丢失的情况出现,建议勾选上Preserve log)
通过鼠标在请求的列表中找到我们需要复制的请求,右键——Copy——Copy as fetch(我这里直接使用我的首页请求进行演示)
到这里我们的请求已经被复制下来了,那怎么实现重新请求呢?很简单,还是刚才的页面,我们切换到Console页面,直接粘贴回车即可,需要多次请求则粘贴多次。
解释:fetch其实是javascript中一个网络请求的函数或者工具,Chrome在我们Copy as fetch的时候帮我们把请求的各种参数转换成了使用fetch请求的代码,所以我们可以直接在控制台上直接执行从而达到请求重放的效果。
让EditPlus支持PHP5的函数列表和C/C++函数列表。
Unix/LinuxC技术 jackxiang 2013-7-14 11:58
在“工具-》首选项-》语法”设置函数模式。
其实就是匹配函数的正则表达式。
一:让EditPlus支持PHP5的函数列表:
将函数模式改为:
^[ \t]*[a-z| ]*function[ \t].*\([^;]*$
二:C/C++
默认:^[A-Za-z_].*\([^;]*$ 这个匹配还成。
有兄弟说这个,实践感觉好像匹配多了点如else给匹配上了,如下:
^[\t ]*[a-zA-Z]+[\t ]+[a-zA-Z_][a-zA-Z0-9_]*[\t ]*\(.*\)[/t ]*\{?[\t ]*[\r\n$]
其实就是匹配函数的正则表达式。
一:让EditPlus支持PHP5的函数列表:
将函数模式改为:
^[ \t]*[a-z| ]*function[ \t].*\([^;]*$
二:C/C++
默认:^[A-Za-z_].*\([^;]*$ 这个匹配还成。
有兄弟说这个,实践感觉好像匹配多了点如else给匹配上了,如下:
^[\t ]*[a-zA-Z]+[\t ]+[a-zA-Z_][a-zA-Z0-9_]*[\t ]*\(.*\)[/t ]*\{?[\t ]*[\r\n$]
Linux下查看某个函数在哪个动态库里的简单方法
Unix/LinuxC技术 jackxiang 2013-7-14 11:35
PHP array_keys() 函数和PHP shuffle() 函数。
Php/Js/Shell/Go jackxiang 2013-7-12 17:11
背景:近来看有兄弟用PHP shuffle() 函数,PHP array_keys() 函数做随机,
好像是混合用的,就查下手册了解下PHP array_keys() 函数和PHP shuffle() 函数。
-----------------------------------------------------------------------------------------------------------------------
一)array_keys定义和用法
array_keys() 函数返回包含数组中所有键名的一个新数组。
如果提供了第二个参数,则只返回键值为该值的键名。
如果 strict 参数指定为 true,则 PHP 会使用全等比较 (===) 来严格检查键值的数据类型。
输出:
---------- 调试PHP ----------
Array
(
[0] => a
[1] => b
[2] => c
)
输出完成 (耗时 0 秒) - 正常终止。
二)shuffle定义和用法
shuffle() 函数把数组中的元素按随机顺序重新排列。
若成功,则返回 TRUE,否则返回 FALSE。
注释:本函数为数组中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。
注释:自 PHP 4.2.0 起,不再需要用 srand() 或 mt_srand() 函数给随机数发生器播种,现已被自动完成。
语法
shuffle(array)
参数 描述
array 必需。规定要使用的数组。
输出:
---------- 调试PHP ----------
Array
(
[0] => Dog
[1] => Horse
[2] => Cat
)
输出完成 (耗时 0 秒) - 正常终止。
好像是混合用的,就查下手册了解下PHP array_keys() 函数和PHP shuffle() 函数。
-----------------------------------------------------------------------------------------------------------------------
一)array_keys定义和用法
array_keys() 函数返回包含数组中所有键名的一个新数组。
如果提供了第二个参数,则只返回键值为该值的键名。
如果 strict 参数指定为 true,则 PHP 会使用全等比较 (===) 来严格检查键值的数据类型。
输出:
---------- 调试PHP ----------
Array
(
[0] => a
[1] => b
[2] => c
)
输出完成 (耗时 0 秒) - 正常终止。
二)shuffle定义和用法
shuffle() 函数把数组中的元素按随机顺序重新排列。
若成功,则返回 TRUE,否则返回 FALSE。
注释:本函数为数组中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。
注释:自 PHP 4.2.0 起,不再需要用 srand() 或 mt_srand() 函数给随机数发生器播种,现已被自动完成。
语法
shuffle(array)
参数 描述
array 必需。规定要使用的数组。
输出:
---------- 调试PHP ----------
Array
(
[0] => Dog
[1] => Horse
[2] => Cat
)
输出完成 (耗时 0 秒) - 正常终止。
PHP的DES加解密函数 与JAVA兼容
Php/Js/Shell/Go jackxiang 2013-7-11 12:16
PHP可以使用mcrypt_encrypt进行DES加密与解密,但实际上操作,你会发现它与JAVA的DES加密出来的字符串,有些不同。基本上是前半段一样,后半段不一样。找到PHP官方网站上对这个函数的文档,有人回复了,并给出了代码。经测,这样加密解密就跟JAVA中的兼容了。
If you want to be interoperable with other PKCS #7 padding implementations, like the Legion of the Bouncy Castle Java cryptography APIs, you should always pad, that is a 8-byte (block size) padding should be added, even if not necessary
来自:http://it.oyksoft.com/post/4831/
If you want to be interoperable with other PKCS #7 padding implementations, like the Legion of the Bouncy Castle Java cryptography APIs, you should always pad, that is a 8-byte (block size) padding should be added, even if not necessary
来自:http://it.oyksoft.com/post/4831/
Apache启动错误解决
Unix/LinuxC技术 jackxiang 2013-7-10 21:13
[Wed Jul 10 21:12:46.109914 2013] [unique_id:alert] [pid 3870] (EAI 2)Name or service not known: AH01564: unable to find IPv4 address of "jackxiang.localdomain"
添加:
127.0.0.1 jackxiang.localdomain
添加:
127.0.0.1 jackxiang.localdomain
[常用命令]xargs的i参数
Unix/LinuxC技术 jackxiang 2013-7-10 19:51
xargs与find经常结合来进行文件操作,平时删日志的时候只是习惯的去删除,比如 # find . -type f -name "*.log" | xargs rm -rf *就将以log结尾的文件删除了,如果我想去移动或者复制就需要使用参数来代替了。 xargs -i 参数或者-I参数配合{}即可进行文件的操作。 -I replace-str
Replace occurrences of replace-str in the initial-arguments with names read from standard input. Also, unquoted blanks do not terminate
input items; instead the separator is the newline character. Implies -x and -L 1.
--replace[=replace-str], -i[replace-str]
This option is a synonym for -Ireplace-str if replace-str is specified, and for -I{} otherwise. This option is deprecated; use -I instead.
man了一下看的还是不太懂,通过例子,做作实验将我的理解写一下。 ############### 操作的目录下的文件###############[root@test05 ab]# ls
1kk.zip 3kk.zip 5kk.zip b.rar d.rar f.rar h.rar j.rar mini.txt ni.txt
2kk.zip 4kk.zip a.rar c.rar e.rar g.rar i.rar k.rar nii.txt###################使用 i 参数 ##################
[root@test05 ab]# find . -type f -name "*.txt" | xargs -i cp {} /tmp/k/
[root@test05 ab]# ls ../k/
mini.txt nii.txt ni.txt
[root@test05 ab]# ################### 使用 I 参数 ################
[root@test05 ab]# find . -type f -name "*.txt" | xargs -I {} cp {} /tmp/n/
[root@test05 ab]# ls ../n/
mini.txt nii.txt ni.txt 结果出来了, 加-i 参数直接用 {}就能代替管道之前的标准输出的内容; 加 -I 参数 需要事先指定替换字符
来自:
http://hi.baidu.com/xmflycat/item/359efb2dbc490799b6326358
---------------------------------------------------------------------------------------------------------------------
如下实践,更容易理解:
Replace occurrences of replace-str in the initial-arguments with names read from standard input. Also, unquoted blanks do not terminate
input items; instead the separator is the newline character. Implies -x and -L 1.
--replace[=replace-str], -i[replace-str]
This option is a synonym for -Ireplace-str if replace-str is specified, and for -I{} otherwise. This option is deprecated; use -I instead.
man了一下看的还是不太懂,通过例子,做作实验将我的理解写一下。 ############### 操作的目录下的文件###############[root@test05 ab]# ls
1kk.zip 3kk.zip 5kk.zip b.rar d.rar f.rar h.rar j.rar mini.txt ni.txt
2kk.zip 4kk.zip a.rar c.rar e.rar g.rar i.rar k.rar nii.txt###################使用 i 参数 ##################
[root@test05 ab]# find . -type f -name "*.txt" | xargs -i cp {} /tmp/k/
[root@test05 ab]# ls ../k/
mini.txt nii.txt ni.txt
[root@test05 ab]# ################### 使用 I 参数 ################
[root@test05 ab]# find . -type f -name "*.txt" | xargs -I {} cp {} /tmp/n/
[root@test05 ab]# ls ../n/
mini.txt nii.txt ni.txt 结果出来了, 加-i 参数直接用 {}就能代替管道之前的标准输出的内容; 加 -I 参数 需要事先指定替换字符
来自:
http://hi.baidu.com/xmflycat/item/359efb2dbc490799b6326358
---------------------------------------------------------------------------------------------------------------------
如下实践,更容易理解:
[实践OK]在linux中查看线程数的三种方法
Unix/LinuxC技术 jackxiang 2013-7-5 16:49
查看线程的方法:
ps -efL, 其中的LWP是线程ID(why是这个), nlwp是线程数.
UID PID PPID LWP C NLWP STIME TTY TIME CMD
也就是第四位,是它的线程ID,而第二位则是进程的PID,第三位是子进程号:
ps -T -p 9613
PID SPID TTY TIME CMD
9613 9613 pts/1 00:00:00 thread01
9613 9712 pts/1 00:00:00 thread01
9613 9795 pts/1 00:00:00 thread01
9613 9853 pts/1 00:00:00 thread01
看线程PID:
ps -efL|grep logstash|awk '{print $4}'|wc
148 148 888
查看进程28740是主进程,28741是子进程,28265则是程序的主进程来自:
[root@iZ25dcp92ckZ ~]# ps aux|grep 28265
root 28265 0.0 0.3 116648 3412 pts/0 Ss 21:29 0:00 -bash:
也就是bash终端~
列名分别是:
UID PID PPID LWP C NLWP STIME TTY TIME CMD
其中
UID为User ID.
PID为processid,进程标识符
PPID为 parent processid,父进程标识符2,
LWP为light weight process orthread, 轻量级进程,即线程标识符
NLWP为,number oflwps(threads) in the process, 线程的数量
摘自:http://blog.csdn.net/jiafu1115/article/details/19070015
——————————————————————————————————————————————————————
48属于www用户的id,这儿我这个没有添加,所以没有显示www,对上面这些线程进行跟踪:
————————————————————————————————
1、 cat /proc/${pid}/status
Threads: 2 //这个是核心,2个线程!如下:
[root@test multepoolserver]# cat /proc/26202/status
Name: multipepollserv
State: S (sleeping)
SleepAVG: 58%
Tgid: 26202
Pid: 26202
PPid: 18260
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 256
Groups: 0 1 2 3 4 6 10
VmPeak: 26036 kB
VmSize: 26036 kB
VmLck: 0 kB
VmHWM: 1144 kB
VmRSS: 1144 kB
VmData: 10508 kB
VmStk: 84 kB
VmExe: 16 kB
VmLib: 3052 kB
VmPTE: 80 kB
StaBrk: 03103000 kB
Brk: 03124000 kB
StaStk: 7fff73219100 kB
Threads: 2
SigQ: 1/70656
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001000
SigCgt: 0000000180004407
CapInh: 0000000000000000
CapPrm: 00000000fffffeff
CapEff: 00000000fffffeff
Cpus_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,000000ff
Mems_allowed: 00000000,00000003
2、pstree -p ${pid}
[root@test multepoolserver]# pstree -p 26202
multipepollserv(26202)─┬─multipepollserv(26203)
└─{multipepollserv}(26204)
26204 就是一个线程。
[root@test multepoolserver]# ps aux|grep httpmut
root 26202 0.0 0.0 26036 1144 pts/10 Sl+ 17:35 0:00 [httpmut: master process] H?????5r%
www 26203 0.0 0.0 15840 468 pts/10 S+ 17:35 0:00 [httpmut: worker process] H?????5r%
3、top -p ${pid} 再按H 或者直接输入 top -bH -d 3 -p ${pid}
[root@test multepoolserver]# top -p 26202
按大写的H(shift+h),就能看到有几个线程:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
26202 root 18 0 26036 1144 984 S 0.0 0.0 0:00.00 multipepollserv
26204 root 20 0 26036 1144 984 S 0.0 0.0 0:00.00 multipepollserv
top -bH -d 3 -p 26202 //3秒刷新一次
[root@test multepoolserver]# top -bH -d 3 -p 26202
top - 17:39:34 up 650 days, 3:35, 10 users, load average: 1.04, 1.01, 1.01
Tasks: 2 total, 0 running, 2 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.9%us, 0.3%sy, 0.0%ni, 97.8%id, 0.9%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8180460k total, 7648040k used, 532420k free, 1269016k buffers
Swap: 8385920k total, 218976k used, 8166944k free, 4855668k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
26202 root 18 0 26036 1144 984 S 0.0 0.0 0:00.00 multipepollserv
26204 root 20 0 26036 1144 984 S 0.0 0.0 0:00.00 multipepollserv
top -H
手册中说:-H : Threads toggle
加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。
4、ps xH
手册中说:H Show threads as if they were processes
这样可以查看所有存在的线程。
5、ps -mp <PID>
手册中说:m Show threads after processes
这样可以查看一个进程起的线程数。
http://liulinxia02.blog.163.com/blog/static/268687720111129103740947/
[root@test multepoolserver]# ps aux|grep httpmut
root 26202 0.0 0.0 26036 1144 pts/10 Sl+ 17:35 0:00 [httpmut: master process] H?????5r%
www 26203 0.0 0.0 15840 468 pts/10 S+ 17:35 0:00 [httpmut: worker process] H?????5r%
root 26206 0.0 0.0 61172 748 pts/14 S+ 17:35 0:00 grep httpmut
[root@test multepoolserver]# ps -mp 26202
PID TTY TIME CMD
26202 pts/10 00:00:00 multipepollserv
- - 00:00:00 -
- - 00:00:00 -
[root@test multepoolserver]# ps -mp 26203
PID TTY TIME CMD
26203 pts/10 00:00:00 multipepollserv
- - 00:00:00 -
——————————————————————————————————————————
在linux中查看线程数的三种方法
在linux中查看线程数的三种方法
www.2cto.com
1、top -H
手册中说:-H : Threads toggle
加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。
2、ps xH
手册中说:H Show threads as if they were processes
这样可以查看所有存在的线程。
3、ps -mp <PID>
手册中说:m Show threads after processes
这样可以查看一个进程起的线程数。
来源:http://www.2cto.com/os/201212/177103.html
更多:http://www.360doc.com/content/13/0512/13/9085503_284797175.shtml
ps -efL, 其中的LWP是线程ID(why是这个), nlwp是线程数.
UID PID PPID LWP C NLWP STIME TTY TIME CMD
也就是第四位,是它的线程ID,而第二位则是进程的PID,第三位是子进程号:
ps -T -p 9613
PID SPID TTY TIME CMD
9613 9613 pts/1 00:00:00 thread01
9613 9712 pts/1 00:00:00 thread01
9613 9795 pts/1 00:00:00 thread01
9613 9853 pts/1 00:00:00 thread01
看线程PID:
ps -efL|grep logstash|awk '{print $4}'|wc
148 148 888
查看进程28740是主进程,28741是子进程,28265则是程序的主进程来自:
[root@iZ25dcp92ckZ ~]# ps aux|grep 28265
root 28265 0.0 0.3 116648 3412 pts/0 Ss 21:29 0:00 -bash:
也就是bash终端~
列名分别是:
UID PID PPID LWP C NLWP STIME TTY TIME CMD
其中
UID为User ID.
PID为processid,进程标识符
PPID为 parent processid,父进程标识符2,
LWP为light weight process orthread, 轻量级进程,即线程标识符
NLWP为,number oflwps(threads) in the process, 线程的数量
摘自:http://blog.csdn.net/jiafu1115/article/details/19070015
——————————————————————————————————————————————————————
48属于www用户的id,这儿我这个没有添加,所以没有显示www,对上面这些线程进行跟踪:
————————————————————————————————
1、 cat /proc/${pid}/status
Threads: 2 //这个是核心,2个线程!如下:
[root@test multepoolserver]# cat /proc/26202/status
Name: multipepollserv
State: S (sleeping)
SleepAVG: 58%
Tgid: 26202
Pid: 26202
PPid: 18260
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 256
Groups: 0 1 2 3 4 6 10
VmPeak: 26036 kB
VmSize: 26036 kB
VmLck: 0 kB
VmHWM: 1144 kB
VmRSS: 1144 kB
VmData: 10508 kB
VmStk: 84 kB
VmExe: 16 kB
VmLib: 3052 kB
VmPTE: 80 kB
StaBrk: 03103000 kB
Brk: 03124000 kB
StaStk: 7fff73219100 kB
Threads: 2
SigQ: 1/70656
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001000
SigCgt: 0000000180004407
CapInh: 0000000000000000
CapPrm: 00000000fffffeff
CapEff: 00000000fffffeff
Cpus_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,000000ff
Mems_allowed: 00000000,00000003
2、pstree -p ${pid}
[root@test multepoolserver]# pstree -p 26202
multipepollserv(26202)─┬─multipepollserv(26203)
└─{multipepollserv}(26204)
26204 就是一个线程。
[root@test multepoolserver]# ps aux|grep httpmut
root 26202 0.0 0.0 26036 1144 pts/10 Sl+ 17:35 0:00 [httpmut: master process] H?????5r%
www 26203 0.0 0.0 15840 468 pts/10 S+ 17:35 0:00 [httpmut: worker process] H?????5r%
3、top -p ${pid} 再按H 或者直接输入 top -bH -d 3 -p ${pid}
[root@test multepoolserver]# top -p 26202
按大写的H(shift+h),就能看到有几个线程:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
26202 root 18 0 26036 1144 984 S 0.0 0.0 0:00.00 multipepollserv
26204 root 20 0 26036 1144 984 S 0.0 0.0 0:00.00 multipepollserv
top -bH -d 3 -p 26202 //3秒刷新一次
[root@test multepoolserver]# top -bH -d 3 -p 26202
top - 17:39:34 up 650 days, 3:35, 10 users, load average: 1.04, 1.01, 1.01
Tasks: 2 total, 0 running, 2 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.9%us, 0.3%sy, 0.0%ni, 97.8%id, 0.9%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8180460k total, 7648040k used, 532420k free, 1269016k buffers
Swap: 8385920k total, 218976k used, 8166944k free, 4855668k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
26202 root 18 0 26036 1144 984 S 0.0 0.0 0:00.00 multipepollserv
26204 root 20 0 26036 1144 984 S 0.0 0.0 0:00.00 multipepollserv
top -H
手册中说:-H : Threads toggle
加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。
4、ps xH
手册中说:H Show threads as if they were processes
这样可以查看所有存在的线程。
5、ps -mp <PID>
手册中说:m Show threads after processes
这样可以查看一个进程起的线程数。
http://liulinxia02.blog.163.com/blog/static/268687720111129103740947/
[root@test multepoolserver]# ps aux|grep httpmut
root 26202 0.0 0.0 26036 1144 pts/10 Sl+ 17:35 0:00 [httpmut: master process] H?????5r%
www 26203 0.0 0.0 15840 468 pts/10 S+ 17:35 0:00 [httpmut: worker process] H?????5r%
root 26206 0.0 0.0 61172 748 pts/14 S+ 17:35 0:00 grep httpmut
[root@test multepoolserver]# ps -mp 26202
PID TTY TIME CMD
26202 pts/10 00:00:00 multipepollserv
- - 00:00:00 -
- - 00:00:00 -
[root@test multepoolserver]# ps -mp 26203
PID TTY TIME CMD
26203 pts/10 00:00:00 multipepollserv
- - 00:00:00 -
——————————————————————————————————————————
在linux中查看线程数的三种方法
在linux中查看线程数的三种方法
www.2cto.com
1、top -H
手册中说:-H : Threads toggle
加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。
2、ps xH
手册中说:H Show threads as if they were processes
这样可以查看所有存在的线程。
3、ps -mp <PID>
手册中说:m Show threads after processes
这样可以查看一个进程起的线程数。
来源:http://www.2cto.com/os/201212/177103.html
更多:http://www.360doc.com/content/13/0512/13/9085503_284797175.shtml