手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2009年09月的文章

JS找出一串字符中出现最多的字符

本文来自博客园,有点意思。。。
原文地址:http://www.cnblogs.com/kenandalda/archive/2009/09/20/1570617.html

作者认为:

XML/HTML代码
  1. 用数组的sort方法对字符串进行排序,让相同字母都到一起去  
  2. 用正则表达式来匹配两个相邻的不同字符,中间加上逗号  
  3. 以逗号为界把第二步得到的字符串打散成数组  
  4. 按字符串长度排序该数组,得到的第一个元素就是要的答案  

于是写了以下代码:

JavaScript代码
  1. String.Count=function(str){  
  2.     var ret=str.split("")  
  3.                 .sort()  
  4.                 .join("")  
  5.                 .replace(/((.)\2*)/g,"$1,")  
  6.                 .split(",")  
  7.                 .sort(function(a,b){return b.length-a.length});  
  8.     return [ret[0][0],ret[0].length];  
  9. }  
  10.   
  11. var s="&(&$#(JFLSDJFOIWEfdjsklfewosd2378907345asdsdwsdqs";  
  12. alert(String.Count(s));  

作者是谁?他是:Kenneth Chen,据称代码已经修改过了。。

Mediaplay for Firefox

以前是不可想像 的事,现在也终于可以实现了。

Installation Instructions

  1. Installation of the Windows Media Player Firefox Plugin may require administrative access to your PC. It is recommended that you close all other open browser windows before continuing with the installation.
  2. Click the Install button to automatically download and install the Windows Media Player Firefox Plugin.
  3. Depending on your security settings, you may see a Security Warning dialog box. Click Install to install the plugin.

Get answers about Windows Media, Media Player 11 and Windows Vista at Microsoft.com.

支持的平台也不少,当然,only for Windows。。。只是不支持SERVER版的系统,郁闷啊。。

File size: 302K
Platforms:

  • Windows XP SP2 (x86)
  • Windows XP SP2 (x64)
  • Windows Vista (x86)
  • Windows Vista (x64)

远程下载:Download Now

本地下载:wmpfirefoxplugin.rar

Tags: mediaplay, firefox

Haohappy翻译的PHP5.3新特性

PHP5.3现在或许有N多人在研究在测试了。虽然那个namespace长的丑了一点。但不影响其他功能对我的影响。
haohappy在这里作了介绍,有部分资料以前介绍过,我这里就不多介绍,我所转的只是我认为的一些新特性

CLASS相关

1、静态类可以动态调用,即类似于 $aa::$bb($cc) 这样的调用方式,以前只能使用call_user_func(array($aa,$bb),$cc)这样的方式来调用

2、静态类增加了 __callStatic,类似于__call,但这是专为静态类使用的。

3、类中增加了__invoke方法(haohappy没有介绍,我也没有翻手册)

Nowdoc,

说这个nowdoc,恐怕很多人不明白,还有heredoc,还是很多人不明白这是什么,如果说到“定界符”,也许会有人记得。这是在国内被翻译的名词吧?

PHP代码
  1. <?php  
  2. print <<<EOT  
  3.    xxxx  
  4. EOT;  

关于定界符的功能,我不想多说,可以翻手册,nowdoc,的功能和用法是什么呢?以上面的代码为例,是在第一个EOT处,为EOT加上单引号,即 <<<'EOT',在这样的操作下,整个定界符中的变量将不会被解析,比较适合用来处理大段的 PHP 代码

常量定义方式增加

原来的常量定义是:define("XXX",XXX);如今 又增加了一个新的方法: const XXX = "XXX";

三元运算符增加了一个快捷书写方式: ?:【感觉和以前的那种 for 循环的简写有点类似,忽略部分参数。。。】

原本格式为是(expr1) ? (expr2) : (expr3)
如果expr1结果为True,则返回expr2的结果。

PHP5.3新增一种书写方式,可以省略中间部分,书写为expr1 ?: expr3
如果expr1结果为True,则返回expr1的结果


HTTP
状态码在200-399范围内均被认为访问成功

支持嵌套处理异常(Exception

新的垃圾收集器(GC),并默认启用

 

Tags: haohappy

康盛系列中同步登录的注意事项

本文首发在www.ucapi.com,康盛系列中同步登录的注意事项,呵呵。在这里 也留一份啦

康盛目前的产品基本上都使用了ucenter,甚至一些已经卖掉的产品中也有使用ucenter的,比如Ecmall等。

其实很多时候你会发现,你明明在A系统中登录了。但是却没有登录到B系统。这其中有一部分是网页在跳转的时候,代码没有来得及执行完毕导致,但也有一部分是因为这几个系统中的接口有点小小的问题。

现在,我们来还原一下问题产生的情景。

1、到论坛注册一个用户,登录。理论上,这时候康盛所有的产品应该都能够登录了,因此这个注册用户已经在ucenter的用户表中了。

2、打开supesite,你会发现,他会提示您需要登录。再打开uchome,也是如此的提示。一个冷冰冰的登录窗口依然显示在那里。

3、打开ecmall,你会发现,咦,怎么登录了?真奇怪啊。为什么有两个系统没有登录,一个系统登录了?

4、现在,我们重新一一登录supesite和uchome。然后退出系统。再在论坛登录,你会发现,咦。怎么都登录了?原来显示登录窗口的supesite和uchome都已经登录了,这是什么呢?

5、现在我们打开这两个系统的接口仔细分析一下,同时再打开这两个程序的登录程序。突然间,你就恍然大悟。原来这两个系统在登录的时候,都会有一个 判断,如果该系统自身的用户表里没有这条记录,那么他们都会先判断用户是否存在,如果确实存在,则往自身的用户表里插入一条记录。然后再进行登录。

6、然而这两个系统的接口文件uc.php中的同步登录函数中,却没有这一条。而只是仅仅的判断是否存在session库中,来判断是否登录。 supesite中还会注册一个activetyuser这样一个cookie,以期你在打开supesite的时候,如果有这个cookie就自动插入 一条记录【然而,这只是虚晃一枪,根本就没有执行过】

7、再回首,我们看一下ecmall,人家写的就简单了。同样的原理,生成一个cookie,在打开页面时,如果有cookie存在,就生成用户【它是确确实实执行了】。

现在明白问题所在了吧?知道这些问题,你其实可以自己在这个同步登录的函数里加上相应的代码就行了【这里就不写了,看官们,自己练练手吧】

最后再说一点小问题,这个其实说的是uchome,uchome除了用户名密码登录外,还有一个自定义问题。所以即使你同步登录了,但如果设置了自定义问题,进入uchome的时候,还是需要再回答一下这个自定义问题。

Over,全部解释完毕。

Tags: 同步登录, ucapi, 康盛

四步实现客户软件与ucenter通讯

本文首发于www.ucapi.com,下篇预告:supesite与uchome等应用在同步登录时注意事项

原文如下:

如果你写了一个WEB程序,你又想与ucenter共用一个用户库,你会怎么做?

来吧,让我告诉你,只要几个简单的步骤就行了。

1、先到ucenter administrator建一个应用,在应用里配置完你的项目的地址,在UC_KEY那里随便输入一些字符串,越长越好。【在这里有配置通讯文件的名 称,好象是提示你在api目录下,你可以定义一个,默认是uc.php】。然后你会一直发现应用列表中,该应用一直是通讯失败。

2、生成应用后,在应用详情的最下方有一个textarea框,这个就是系统帮你生成的连接ucenter的配置文件 。

3、在您的项目根目录下建立一个api目录,里面放上刚才说的通讯文件,默认是uc.php

在通讯文件里定义一些常量,可以从uchome、supesite、等里面拷贝出来,其实就是一些返回值 的常量。

加载刚才ucenter administrator所生成的配置文件。

到comsenz的任何一个程序中拷贝一下authcode函数(一般在common.inc.php或者global.inc.php中)

写上简单的判断代码:

PHP代码
  1. $code = $_GET['code'];   //取得GET回来的code变量  
  2.   
  3. //经过authcode解码后,转化为一个数组,这个数组里其实就有一些简单的验证信息,如:时间,传递过来的操作等  
  4. parse_str(authcode($code, ‘DECODE’, UC_KEY), $get);  
  5.   
  6. //如果当前时间大于传递来的时间1小时,返回超时  
  7. if(time() – $get['time'] > 3600) {  
  8.     exit(’Authracation has expiried’);  
  9. }  
  10.   
  11. //如果转换出来的$get变量是空值 ,那肯定是出错了  
  12. if(emptyempty($get)) {  
  13.     exit(’Invalid Request’);  
  14. }  
  15.   
  16. //获取传递过来的操作  
  17. $action = $get['action'];  
  18.   
  19. //写上一个简单的判断  
  20. if ($action == ‘test’){  
  21.     exit(API_RETURN_SUCCEED);  
  22. }  

 

4、写完这样的代码后,去ucenter管理中心看一下应用列表,是不是通讯成功了?

其实那个通讯成功,就是发送了一个 action = test过来。所以当返回1的时候就直接成功了。

不过,由于exit();函数自身的状态,如果参数是字符串,则会直接输出,而如果参数是整数,则仅仅用来表示退出程序,而整数则代表了error code。

If status is an integer, that value will also be used as the exit status. Exit statuses should be in the range 0 to 254, the exit status 255 is reserved by PHP and shall not be used. The status 0 is used to terminate the program successfully.

这时候,你就会发现,你必须得使用exit(”1″);才会真正的输出1。【当然,这是PHP的基础,与通信问题不大,在这里提出来,只是为了防止你明明写了exit(1),却不会输出而在那里拼命调试】

OK,到现在为止,一个简单的通讯就完成了。如果你需要更多的功能,可以参考一下server究竟提供了哪些服务,然后写上针对性的代码和判断就可以了。

本文没图,但我相信,说的应该够明白了吧?

Tags: ucenter, ucapi