这次neatpic重新修正了一些BUG,但代码还没有整理,因此暂时不放出下载,等代码整理好后再放出来。
目前测试地址为:http://neatstudio.com/neatpic/
修正:
1、支持中文文件名、目录名(怀疑所有的文件系统都是ansi方式读取而不是UTF8,不能确认)
2、文件名、路径隐藏(采用?file=imagexxxxxxxx)之类的方式,因为只显示缩略图,所以读上几十个缩略图的代价应该还是可以忍受的。
其他没有什么特别的更新,可能也会BUG被改出来,敬请测试
又是basename,其实真的不想谈它,只是这两天在修正neatpic的BUG时,又被它折腾了。
前两天有朋友在回复里说,还是对中文处理一下吧。所以,我想了想,对中文又重新更新了下,结果问题就来了。我明明文件名是:“图片2副本.jpg”,但在cache之后就成了“2副本.jpg”,2前面的图片两个字就没有了。。这个,也太妖异了。得,你说不支持中文吧,干脆连后面的副本也没有就算了。却偏偏把前面的中文去掉了。
后来用pathinfo也测试了一下,同样的问题。。。
但是我在win服务器下却一切正常。后来我检查了一下我的WEB服务器,我的版本是5.2.6,
测试代码:echo basename('E:/test/图片2副本');点击查看测试页。
这个真叫一个妖啊。。。
所以我现在是:str_replace(dirname($filename).DIRECTORY_SEPARATOR,'',$filename);
希望遇到同样问题的能够再次避免吧。。
本文内容全部来自《集体智慧编程》一书,原书采用的是python,因为没有python编程环境,所以用PHP实现
PHP代码
- <?php
-
-
-
-
- $datalist = array(
- 'Lisa Rose' => array(
- 'Lady in the Water' => 2.5,
- 'Snake on a Plane' => 3.5,
- 'Just My Luck' => 3.0,
- 'Superman Returns' => 3.5,
- 'You, Me and Dupree' => 2.5,
- 'The Night Listener'=> 3.0
- ),
- 'Gene Seymour' => array(
- 'Lady in the Water' => 3.0,
- 'Snake on a Plane' => 3.5,
- 'Just My Luck' => 1.5,
- 'Superman Returns' => 5.0,
- 'You, Me and Dupree' => 3.5,
- 'The Night Listener'=> 3.0
- ),
- 'Michael Phillips' => array(
- 'Lady in the Water' => 2.5,
- 'Snake on a Plane' => 3.0,
- 'Superman Returns' => 3.5,
- 'The Night Listener'=> 4.0
- ),
- 'Claudia Puig' => array(
- 'Snake on a Plane' => 3.5,
- 'Just My Luck' =>3.0,
- 'Superman Returns' => 4.0,
- 'You, Me and Dupree' => 2.5,
- 'The Night Listener'=>4.5
- ),
- 'Mick LaSalle' => array(
- 'Lady in the Water' => 3.0,
- 'Snake on a Plane' => 4.0,
- 'Just My Luck' => 2.0,
- 'Superman Returns' => 3.0,
- 'You, Me and Dupree' => 2.0,
- 'The Night Listener'=> 3.0
- ),
- 'Jack Matthews' => array(
- 'Lady in the Water' => 3.0,
- 'Snake on a Plane' => 4.0,
- 'Superman Returns' => 5.0,
- 'You, Me and Dupree' => 3.5,
- 'The Night Listener'=> 3.0
- ),
- 'Toby' => array(
- 'Snake on a Plane' => 4.5,
- 'Superman Returns' => 4.0,
- 'You, Me and Dupree' => 1.0,
- ),
- );
-
-
-
-
-
- function sim_distance ( $datalist , $person1 , $person2)
- {
- $si = array();
- foreach ( $datalist[$person1] as $moviename => $grade ){
- if( array_key_exists( $moviename, $datalist[$person2] )){
- $si[$moviename] = 1;
- }
- }
- if( emptyempty( $si )){
- return 0;
- }
- $powers = 0;
- foreach ( $si as $moviename=>$val ){
- $powers += pow( ($datalist[$person1][$moviename] - $datalist[$person2][$moviename] ), 2 );
- }
- return 1 / (1+ sqrt($powers));
- }
-
-
- echo( sim_distance( $datalist , 'Lisa Rose' , 'Gene Seymour') );
- echo( '<br/>' );
-
-
-
-
-
-
- function sim_person ( $datalist ,$person1 , $person2)
- {
- $si = array();
- foreach ( $datalist[$person1] as $moviename => $grade ){
- if( array_key_exists( $moviename, $datalist[$person2] )){
- $si[$moviename] = 1;
- }
- }
- if( emptyempty( $si )){
- return 1;
- }
- $n = count( $si );
- $sum1 = $sum1Sq = $sum2 = $sum2Sq = $pSum = 0;
- foreach ( $si as $moviename => $val ){
- $sum1 += $datalist[$person1][$moviename];
- $sum1Sq += pow( $datalist[$person1][$moviename], 2 );
- $sum2 += $datalist[$person2][$moviename];
- $sum2Sq += pow( $datalist[$person2][$moviename], 2 );
- $pSum += ( $datalist[$person1][$moviename] * $datalist[$person2][$moviename]);
- }
-
- $num = $pSum - ( $sum1 * $sum2 / $n);
- $den = sqrt( ( $sum1Sq - pow( $sum1, 2 ) / $n) * ( $sum2Sq - pow( $sum2, 2 ) / $n) );
- if ( $den == 0 ){
- return 0;
- }
- return ($num / $den );
- }
-
-
- echo( sim_person( $datalist , 'Lisa Rose' , 'Gene Seymour') );
-
- ?>
有点长,随便看看吧
不管是初学者还是老鸟,了解一下会有很多好处,比如里面介绍的,从URL传递global变量,比如5.26前的mt_rand的BUG等等。比如urldecode处理%2527会变成单引号,比如。。。实在太多了,或许程序真的没问题,但有问题的可能是PHP自己。
了解一下,可以让代码中更少漏洞吧?
原文很长,我这里也只是把目录贴一下,如果你真的有兴趣,不妨去看看全文
如果你有自己的想法,也可以尝试提交你的建议到该项目中去
其实 很多朋友已经在说我的neatpic了。我只是没时间重写。
原来的程序是walkerlee写的,我只是旁边加了一下工。
所以这次我重写的时候压力好大。。。
基本上,大部分功能完成,暂时还没有实现把图片详细地址隐藏起来
已完成功能:
1、单文件(保持不变)
2、生成数据的cache,在目录下图片很多的时候,方便读取(图片信息我没有在初始化的时候生成到Cache里,留着给未来进行处理吧)
3、模版(也是一个模型而已,因为最初的那版是写死的,很多朋友说不方便改进,不过那时候是04年,将就点吧)
4、语言包(语言包只是一个虚幻的概念,测试模型而已)
5、文件名自然排序(原来的程序没有这个功能)
未完成功能:(短时间内不作更新了)
1、中文文件名。。。和操作系统有关啊。如果再改进就用base64处理一下了,这样显示就不太会有问题
2、管理(目前没有管理功能,也就是说不能上传,和人工重建缓存)
3、缩图和原图模式(好象没有什么必要吧?现在模版可以自己做的情况下,用jquery的thickbox或者lightbox,都可以避免这种问题了)
4、其他未知问题(图片详细地址没有隐藏,没有考虑外链,没有打包下载等等)
5、未计算子目录(不过我都在下拉列表里显示全路径了,顺便说一下,目录也没有排序)
目前测试地址为:http://neatstudio.com/neatpic/。
下载地址为:neatpic.rar
注意:1、目前的程序几乎没有任何注释
2、对于目录判断等并没有完善,因此我打包的时候将目录结构都一并打包上来
3、语言包功能几乎无效。
4、更多小问题,目前暂时不作解释和更新(这才是最重要的提醒。。。)
欢迎留下意见,我会在收集完信息后,一并修改