易栈网-膘叔

浏览模式: 标准 | 列表 | 图文
JS找出一串字符中出现最多的字符

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

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

作者认为:

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

于是写了以下代码:

String.Count=function(str){
var ret=str.split("")
.sort()
.join("")
.replace(/((.)\2*)/g,"$1,")
.split(",")
.sort(function(a,b){return b.length-a.length});
return [ret[0][0],ret[0].length];
}

var s="&(&$#(JFLSDJFOIWEfdjsklfewosd2378907345asdsdwsdqs";
alert(String.Count(s));

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

Mediaplay for Firefox

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

本地下载:980d8dbe7c0110a840edab19febb3673

Haohappy翻译的PHP5.3新特性

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
print <<<EOT
xxxx
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),并默认启用

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

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

本文首发在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,全部解释完毕。

四步实现客户软件与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中)

写上简单的判断代码:

$code = $_GET['code']; //取得GET回来的code变量

//经过authcode解码后,转化为一个数组,这个数组里其实就有一些简单的验证信息,如:时间,传递过来的操作等
parse_str(authcode($code, ‘DECODE’, UC_KEY), $get);

//如果当前时间大于传递来的时间1小时,返回超时
if(time() – $get['time'] > 3600) {
exit(’Authracation has expiried’);
}

//如果转换出来的$get变量是空值 ,那肯定是出错了
if(emptyempty($get)) {
exit(’Invalid Request’);
}

//获取传递过来的操作
$action = $get['action'];

//写上一个简单的判断
if ($action == ‘test’){
exit(API_RETURN_SUCCEED);
}

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究竟提供了哪些服务,然后写上针对性的代码和判断就可以了。

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

你会愤怒吗?书评?评书

你会愤怒吗?书评?评书

yhustc一大早就很愤青,那是相当的激动啊。顺便还贴了个地址在群里,然后一时间群内议论纷纷。
看了一下,无非就是两票人干架,一方认为有错应该要改,一方认为小错不伤大雅。于是群起纷争。。
记得以前谁说过?技术的事,来不得半点虚假。买过PHP高级编程,haohappy自建了网站,把堪(?)误都列在上面,以期新版再改进。可看这个留言,就让人吃惊了。

【补充】最早的原文在这里:http://www.javaeye.com/topic/474725
以下为部分内容,更多请查看:Yhustc的收藏箱

要学好一门技术,网上有很多免费的资源,搜刮一点确实能入门。但是个人感觉要学好,还是得看书。毕竟书是作者在自己学习的基础上加上一些个人心得或 技巧编著而成,有一些东西也许网上查不到或者不详细,但是书上是有写的。所以真想把一门技术学好,买大于等于一本的经典教程是很有必要的。

但是国内图书市场的情况我想大家都清楚,太过于功利与浮躁。我借阅过很多书,虽然中文作者写出来的确实有很多不错的书籍,但是还有大量的估计是为了 占市场赶工出来的粗糙货,比如是截图与源码对不上一类的错误一堆。再比如两人合著,前一页还是中文版visual studio,一翻页成英文版的了。也许有人觉得这些事情没什么大不了,但是我想下面这篇转载的作者说的有道理,对老鸟也许啥都不是,但对新手这就是一个 坑。

啥都不说了,但愿写书的人都能赚大钱,出版图书的质量也越来越高。

############### 强大的分隔符 ###############

原文链接:http://hax.javaeye.com/blog/474725

直 到今天中午之前,我并没有打算要站出来炮轰这本《JavaScript征途》。因为在目前的技术出版形势下,原创作者面临了很多困难,出书并不易,而且看 得出该书作者(朱印宏,网名css8)技术还是ok的,长久以来在技术社区里也做了不少传播技术的工作。这年头,积攒人品不容易啊!所以一切原本只是停留 在51js论坛上随性而起的 一 些 评 论 而已。

然而这本书的作者对于善意批评所作出的连番回应,却令我大吃一惊,他对自己犯的多处低级错误不仅不以为耻、百般狡辩,还发出“没有其他意思……不是广告”,还不止一处,连参与讨论的一向儒雅和气的爱民,都唯有疯笑以对。尤其是今天上午因为china-pub上一位“5级评论员”提及了51js上的讨论,这有可能影响到该书的销售前景,于是css8就坐不住了,明着或暗着说我“危言耸听”、“不厚道”、“偏激”、“动机不纯”、“扣硕大的黑帽子”、“无知傲慢”……还大喊冤枉。这种无耻行径使我感到不能不把这个争论公诸于众,以正视听。

既然决定要对作者及其书进行公开批评,不得不牵涉到那些给此书写推荐书评的人。包括:

* 蓝色理想网站站长曾沐阳
* 《JavaScript王者归来》作者月影
* 51js超级版主Winter

------OVER----

鸡肋一般的wps插件:PDF查看

鸡肋一般的wps插件:PDF查看

鸡肋者,食之无味,弃之可惜。
这是杨修被杀前说的话。

PDF查看插件是最新WPS里提供的,使用后,打开PDF,可以很完整的看到书签,然而,内容却全部变成了乱码。

在使用福昕打开后,一切正常。并没有乱码出现。

由此可见,这个PDF查看的插件,还不如没有。

但是,WPS导出PDF的功能还是不错的。至少我挺喜欢。首先不用担心别人再修改我的文档了:其次,如果按照规范做的文档,还能够按层次自动生成书签。

可惜了这个PDF查看插件。

怎么,不相信?有图为证

WPS截图:

b2e705b9f04c0fc752a24324beba72a9

福昕截图:

86bca4b50817d021ebbb7944653482e3

开通52cd.net的多用户博客

开通了52cd.net的多用户博客,皮肤我也去官方下载了不少,欢迎申请试用(当然是有限额的)

试用可以在本站留言,经申请通过后会帮你建立一个初始帐号和一个简短域名,例如:http://g.52cd.net

不提供注册。

当然,目前在52cd.net也没有象博客园那样搞首页聚合,本来就是一个随意的博客而己。

只是请不违反国家有关政策即可。

【特别申明:这两天关闭是因为备案问题。。。我都准备了N多国庆拍的照片了。结果,我现在自己也没办法访问】

备案下来了。重新开通了。。。。。

PHP分词索引

PHP分词索引

  众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思。例如,英文句子I am a student,用中文则为:“我是一个学生”。计算机可以很简单通过空格知道student是一个单词,但是不能很容易明白“学”、“生”两个字合起来 才表示一个词。把中文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词。我是一个学生,分词的结果是:我是 一个 学生。
目前主流的中文分词算法有:

1、 基于字符串匹配的分词方法

这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功 (识别出一个词)。按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最 短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。常用的几种机械分词方法如下:
1)正向最大匹配法(由左到右的方向);
2)逆向最大匹配法(由右到左的方向);
3)最少切分(使每一句中切出的词数最小)。
还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。由于汉语单字成词的特点,正向最小匹配和逆向 最小匹配一般很少使用。一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1/169, 单纯使用逆向最大匹配的错误率为1/245。但这种精度还远远不能满足实际的需要。实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各 种其它的语言信息来进一步提高切分的准确率。
一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明 显特征的词,以这些词作为断点,可将原字符串分为较小的串再来进机械分词,从而减少匹配的错误率。另一种方法是将分词和词类标注结合起来,利用丰富的词类 信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率。
对于机械分词方法,可以建立一个一般的模型,在这方面有专业的学术论文,这里不做详细论述。

2、 基于理解的分词方法

这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义 现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义 进行判断,即它模拟了人对句子的理解过程。这种分词方法需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可 直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。

3、 基于统计的分词方法

从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反映 成词的可信度。可以对语料中相邻共现的各个字的组合的频度进行统计,计算它们的互现信息。定义两个字的互现信息,计算两个汉字X、Y的相邻共现概率。互现 信息体现了汉字之间结合关系的紧密程度。当紧密程度高于某一个阈值时,便可认为此字组可能构成了一个词。这种方法只需对语料中的字组频度进行统计,不需要 切分词典,因而又叫做无词典分词法或统计取词方法。但这种方法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例如“这一”、“之 一”、“有的”、“我的”、“许多的”等,并且对常用词的识别精度差,时空开销大。实际应用的统计分词系统都要使用一部基本的分词词典(常用词词典)进行 串匹配分词,同时使用统计方法识别一些新的词,即将串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识 别生词、自动消除歧义的优点。

值此,放上收藏的三篇文章和程序
1、yhustc的分词词库(采用sqlite,无词频分析,下载地址为:http://www.neatcn.com/dict/dict.tar.gz,在http://www.neatcn.com/dict/有简单的试用,也可以通过http://www.neatcn.com/dict/test.php?type=json&encode=gbk&contents=xxx等调用返回),

2、dede的分词,(织梦的算法:http://www.dedecms.com/html/chanpinxiazai/20061229/3.html#,该页同时有演示,采用CSV文件)

3、一篇比较老的分词程序:http://www.neatcn.com/show-592-1.shtml

网站性能、安全监控

网站性能、安全监控

前两天有人就告诉我,监控宝不错,于是,我就申请了一个帐号,然而不知道是出于岐视还是啥,反正我的YAHOO邮箱并没有收到激活邮件。今天一大早,朋友就发来了使用图片,看上去不出,只是需要打开snmp服务,并添加一个只读帐号。(搞半天,原来是通过这个帐号来对信息进行处理并发送到该网站啊?)

老王说,360还有一个挂马监视中心,欣欣然转贴一下下

网站监控对任何一个严肃的网站而言,都是必不可少的。有实力的网站往往会由专门的运维人员来负责这部分工作,不过对于多数中小网站而言,这部分开支往往是拿不出来了,为了满足这些网站的需求,就有了很多第三方网站提供在线网站监控功能,比如说:360挂马检测中心,监控宝等等,你只要注册了,就能用非常Easy的方法打造非常Cool的网站监控。

360挂马监控中心:

f0d766ba7a6e86829a347ef54348a599


监控宝:

0a7c41fd916830d14171ad8e57db7937


这两个网站提供的网站监控选项非常丰富,从木马到CPU,内存,磁盘占用率等等,应有尽有,只要注册了,这一切都能免费使用,并且在网站出现异常的时候会 自动发送电子邮件通知你。看到仅仅是电子邮件通知,很多读者肯定要失望了,毕竟这不能保证我们立刻知道网站发生故障,最好还是通过短信通知,懂技术的站长 们或许已经通过飞信之类的软件实现了这个功能,但至少对我来说,这太复杂了,如果你也是这么想的,接着看下面:

如果你是移动的手机用户,那么就注册一个139.com的邮箱,当有新邮件到达时,会自动给你的手机免费发送一条短信;如果你是联通的手机用户,那么就注册一个m165.com的邮箱,有同样的功能,不过和移动邮箱相比,联通邮箱每个月有几块钱的使用费,虽然不多,但还是感觉有点不爽。手机邮箱的名字缺省是你的手机号,不过为了防止你的手机号被泄露,移动和联通都提供了别名的功能,建议使用。

有了可以免费发短信的手机邮箱后,剩下的就简单了,修改注册360木马监控中心和监控宝时的账号信息,把电子邮件换成你的手机邮箱即可。

当然,你也可以自己写一些监控脚本,一旦发现问题,就往手机邮箱里发邮件,同样也可以得到短信通知。至于如何发邮件,可以自己安装sendmail之类的东西,如果你和我一样讨厌sendmail,可以使用Gmail之类的邮箱通过SMTP发信,恕不详述。

---EOF--

老王说的发邮件、发短信的事情,这个我在之前也有提过。139固然可以提醒,但现在也还有飞信可以使用。网上也有一些飞信的PHP接口。当然还可以购买SP的短信服务,自己通过SP的接口来给自己发短信【如果您能够为我提供一个好的思路,如果被采用了,我将免费赠送1000条短信给您使用(如何利用更大限度的利用短信服务而不会使人反感)】

本人已经有一些思路,为避免冲突,我可以列出一小部分:

1、短信提醒(139邮箱好象已经有类似功能)
2、对于网站主来说,对于安全字或者有人在尝试注入的时候,通过程序发短信
3、如果是论坛用户,在用户量并不特别大的时候,可以考虑短信祝福生日,以加强互动
4、短信订阅站内通知。(这个就需要有限度了。。。)

其实还有一些想法,只是意义不大就不列出来了