发现一道很让人不淡定的PHP面试题

发表于 2011-04-13 10:05 | 3 条评论

这题忘了是新浪还是妈妈网的面试题了,挺让人纠结的,在开发中没有处理过不同类型的变量直接进行运算和比较,看到这样的题目真的比较茫然。

Discuz!X2采集程序(火车采集器发布接口)开发完成

发表于 2011-04-12 16:01 | 4 条评论

Discuz!X2 Beta版已经发布了几天,这段时间在把玩X2中,同时也完成了对DX2系列接口的开发。 Discuz!X2接口实现的功能和以往的DX采集接口功能基本上一致,正式版中可能会考虑加入部份SEO功能。以前的版本可以参考:Discuz!X 全能发布接口,最强大的Discuz!X采集程序

ShopEx采集程序,国内最专业的ShopEx采集软件

发表于 2011-04-4 22:38 | 4 条评论

尘缘这次发布的ShopEx采集程序,是国内最专业的ShopEx采集软件。如果你是一位网店主或者网站主,千万不要错过。
这套ShopEx采集程序可以快速采集任何网站、任何商品类型到你的ShopEx商城系统中,让你不再为货源和重复的商品上架问题烦恼。

火车采集器通用OCR识别.NET插件,免费下载

发表于 2011-04-3 10:11 | 没有评论

继火车头通用OCR识别/验证码识别演示程序 发布之后,我们将该技术做成通用插件,引用到火车采集器中来,供舰版及企业版用户直接免费使用 1、特殊注意:该插件需要 Microsoft Visual C++ 2008 SP1 Redistributable 支持。 Visual C++ 2008 SP1 Redistributable下载地址:http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=a5c84275-3b97-4ab7-a40d-3802b2af5fc2 2、该压缩包只是火车采集器插件,如果需要配置插件需要的xml配置文件,请使用火车头通用OCR识别/验证码识别演示程序(http://board.locoy.com/?post=69 )进行测试识别和配置xml。 3、安装使用方法(火车采集器2010版以上适用): 安装方法:将压缩包里面的System目录及Plugins目录覆盖到火车采集器程序目录内           该ocr也能识别部分非常简单的汉字,如果测试程序配置后可以识别,需要将测试程序里面的chi_sim.traineddata复制到采集器目录下System/tessdata目录下。 使用方法:1.使用火车头通用OCR识别/验证码识别演示程序(http://board.locoy.com/?post=69 )进行测试识别并保存xml配置文件到火车采集器Plugins目录,文件名必须包含识别二字, 如:口碑验证码识别.xml,58同城验证码识别.xml。           2.假设您已经识别测试成功,开始添加图片地址标签,该标签名为您刚刚保存的xml文件的文件名 如:口碑验证码识别,58同城验证码识别。           3.测试识别效果或正式采集。 旗舰版企业版用户可以直接免费使用,点击下载火车采集器通用OCR识别.NET插件。

LNMP服务器安全及优化指南

发表于 2011-03-31 12:05 | 2 条评论

LNMP的安全问题真是多呀,网站一迁移到LNMP就出了娄子,讨厌。 这是给集团运维写的PHP安全优化,配合着做下WebServer的安全,估计其它人也用得着,所以整理成手册了,请各位领导过目。 By the way,我发现做机房运维的工程师,在Web服务器安全和优化的经验,可能会比较短缺,建议和PHP软件工程师做正面沟通,共同制定整体的安全策略。 作者:杨树海 QQ:130775 博客:www.4wei.cn 点击下载手册版:服务器安全及优化建议.docx

这几天都在紧张的学习中,头皮发麻~~

发表于 2011-03-30 00:14 | 没有评论

下个月有新的项目要上,为了做这个项目还临时学起了ThinkPHP的RBAC和DWZ框架。 不知道为什么,学的东西越多,发现自己人的东西越少,心里不免有一些发毛的感觉。于是不断强迫自己去学习。 这周在当当买的C#的书还看150页,这两天又没有时间看下去了。取代的是LampBrother的视频教程、ThinkPHP的手册、DWZ的使用文档。 ThinkPHP的教程看到最后,猛然发现TP传说中的RBAC并不能完全解决项目的需求,也就是说,还得进行扩展,也就是说,这几天学习的时间多少有一些浪费了。 每天都在忙。 新项目,做需求;旧项目,做维护;新技术,要学习;老代码,要重构。 一天的时间一下就不见了,灰常大的压力,担心项目周期周转不开,担心不可控因素太多,巴拉巴拉如是。 DX2要出了,PW8.5也出了,接口应该要升级了,额,打个哈欠,洗洗睡了。 明天又是淫荡的一天~ : mrgreen:

Nginx+ThinkPHP不支持PathInfo的解决办法

发表于 2011-03-28 14:04 | 3 条评论

应集团要求,公司的服务器全收到集团机房统一管理了,失去了服务器的管理配置权限。 杯具就此开始。 首先要解决文件大小写的问题。哥在开发的时候,比较注意大小写、文件名、相对路径的问题,程序整体迁移没有遇到任何问题。 其次是WebServer不支持PathInfo的问题。集团的运维同事,在所有服务器上都跑着Linux+Nginx,导致Apache开发的PathInfo模式出现艰难的迁移问题。 由于Nginx+Pathinfo有一定的不安全因素,要求开启PathInfo的请求被拒绝,找到TP论坛,发现官方的同志是这样解决问题的。

ThinkPHP中RBAC数据库详解

发表于 2011-03-27 18:25 | 没有评论

    许多人提到有关ThinkPHP都会对它的高效,方便为之折服。但与很多朋友交流后,都对它当中的RBAC权限控制,感到头疼不已。看完这个文档,相信大家一定会有很清晰的了解。并且,以后关于这个框架的权限控制非常熟析,并且能熟练掌握。    RBAC许多人听到后会觉得很头疼,不知道这是什么东西。用英文来讲的话就是Role-Based Access Control,用中文来说就是——基于角色的权限访问控制。呵呵,是不是听的头晕了?没那么复杂。你只需要了解一点,它是来控制用户组权限的就得了,有的用户组的用户可以添加,但是有的用户组的用户却可以,就是这样一个简单的东西。如果再搞得大家头晕一点的话,他还包括什么:安全拦截器,认证管理器...等等概念咯。我觉得如果仅仅是要使用的话,这些东西在最开始的时候其实没必要了解。只要清楚,怎么用的,以后对于这些概念即可以一看就懂,一用就通。    大家在电影当中看到过一种场景吗?——需要两个人的密码卡,指纹和眼球扫描才能够打开金库。    或者说是在现实生活中:一个营业人员能进行一些操作,但是输入错误或者一些特殊情况下面,会叫“经理,权限不够”。这个时候,他们的经理就会拿着自己的IC卡过来,然后输入密码,该营业员就能够进行该项操作了。    类似于这样一种两个身份登陆认证才能进行操作的功能,目前ThinkPHP2.0版本中,还不能实现。如果想使用这样的功能,只有大家自己写一个操作类或者是在ThinkPHP进行修改或者扩展了。    废话不多说,我们先去下载一个ThinkPHP的框架(注:在1.5版本以后ThinkPHP关于RBAC等扩展类就不包含在核心包当中了,如果大家要下载的话可以去下载最新的ThinkPHP2.0带扩展、示例和文档完整包)。下载地址如下:http://www.thinkphp.cn/Down/(别下成核心包了哦!)    下载解压完成,将其放入我们的根目录或者子目录下。    我们先跳过去这一段,讲一个权限化分中最重要,大家最容易弄混的地方,就是RBAC需要用到的表和字段。我们先来了解一下RBAC需要用到的数据表。将建立一个五张表,这五张表分别是:    1.    用户表(包含三个字段用户编号,用户名和用户密码)    2.    用户组表(用户组编号和名字)    3.    用户与组的对应关系表(组编号和用户编号)    4.    节点表(节点编号,名字,注释,父路径编号,等级)(注:这个表很容易将人搞晕)    5.    权限表(组编号,节点编号,父路径编号,等级)     以下五个表,我现在写好演示用的SQL执行语句帮助大家建表,大家在实验建表的过程中只需要复制使用下面的SQL语句即可:    看着是不是又晕了?呵呵,没关系,我们来用一个简单的图表和简易图来像大家说明:    表Think_access:    Role_ID       Node_id        pid            level    用户组的编号    节点表    节点表中的父ID项    节点表中的等级项    注:如果用户组id和对应的节点id存在这张表中,就表示用户所在的用户组有权限进行对应的操作权限。    表Think_node    id    name    title    pid    level    节点编号,用来产生关联关系,主键,自增方便索引    项目,模块或者动作的名字(严格区分大小写)    项目或模块的备注,方便管理员认识和了解    注①    只能为1,2,3分别代表项目,模块,操作动作    注①    :    1)如果是项目名称则项目是顶级的,它上面没有父路径编号(pid),因此pid则为0;例如,网站下有一个Admin项目,它是顶级的。因此没有父路径编号(pid),此处应填0,如果它为第一次插入数据库的,它的id则为1。全字段插入数据库应为:    id    name    title    pid    [...]