产生file_get_contents的问题有很多,除了有网络环境本身的因素之外,还跟两个点的协议交流有关。
一些http server 针对非browser请求会产生阻塞,因此推荐在php配置内加入user_agent配置项,就可以解决这类问题了。
user_agent = “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)”
产生file_get_contents的问题有很多,除了有网络环境本身的因素之外,还跟两个点的协议交流有关。
一些http server 针对非browser请求会产生阻塞,因此推荐在php配置内加入user_agent配置项,就可以解决这类问题了。
user_agent = “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)”
特别是大一点的公开会议,基本上都要延迟半个小时左右。
浪费时间
都没有一点时间感念。
javascript不是什么高深的东西,也不是什么特别的东西。 他就一门很多浏览器都支持内部解析的解析性语言而已。
人们用javascript的目的并不是用来替代什么什么其他技术或者显示起来多么多么先进之类的。
用javascript只不过是能让浏览器里面的内容用起来更加人性化,更加符合人体工程学。当然一小部分也为前端系统架构带来了一些好处。
除了这点之外是在想不出javascript的更伟大的地方了。
因此,想学javascript?那就在用户体验(UED)这块多花点精力吧。 纯粹的javascript 在实际的产品中没有多大的意义。
本次的JavaScript库折腾了蛮久的,与上一个版本相比,本次的库的最大变化就是加入了YS这个命名空间,同时也占用了YoushangJSF这个别名(就是在YS被占用的时候可以使用YoushangJSF这个包名。主要专注的一个开发思想就是:能够让前端使用JavaScript更加方便快捷,使用方法也可以更加清晰明了。
对常用的对DOM的操作的一些方法,例如addEvent,removeClass之类的方法,全部分装在getEl函数返回的对象之中。因此也就是说等于扩展了原有的DOM对象的方法(没有覆盖原来的方法),这样用起来就非常方便了,例如 YS.getEl(‘#obj’).addClass(‘hello’).show(); YS.getEl()返回的也是一个DOM对象,DOM原有的方法都没有改变,这点不像Jquery,必须使用[0]下标来调用。
相比上一个版本,这次的getEl()增强了很多,支持多种模式的query string。详细的匹配模式如下:
tag = [-- rule $1 --][-- rule $2 --][-- relation simbol --][-- rule $1 --]…
tag = object + property || limitor > non-ID
rule $1: #div || span.class || .class <==> *.class || *
rule $2: [attribute_name = value] || :first || :last
rule$2.1: :input || :text || :password || :radio || :checkbox || :submit || :reset
更多相关的说明文档以及程序的下载可以在这里看到:http://aisoyo.com/jstest/
在使用call_user_func之类的函数时,如果采用的代码是:
<?php @call_user_func('foo'); ?>
产生的结果是:foo内实际的环境为error_reporting(0);
这样的后果就是foo函数里面无法进行错误抛出.
针对一个完整的程序(框架)来说,配置是不可以避免的。配置架构好了,后面很多开发工作都可以遵循某一些指定的规则进行,这样会省很多苦力活,程序的精简在维护上面也更加方便。
一般说来一个程序必须具备三套以上的配置变量才可以算得上比较灵活
主要有:
[------ 用户顶层配置 ------]
[------ 程序默认配置 ------]
[------ 底层默认配置 ------]
这样三层结构才能在常见的程序架构中实现灵活的配置系统。
底层默认配置主要负责的是底层框架的配置。这个配置一般与实际程序所在的环境,或者跟大多接入这个框架的程序的环境都无关,也就是说,这个配置必须把握到最高程度的灵活性。打个比方,这个就好像是HK的《基本法》一样,定义的是整个HK的相关的法律配置,具体的HK公民是一般不会与基本法打交道的,只有在议会这个层面上才会调用到《基本法》里面的配置,或者更改里面的配置
对于程序默认配置主要的实施的目的就是最大程度对一个具体的(或者一类)应用系统所调用的变量进行定义。再延伸到一个普通的系统程序,可以最大程度上面无需更改太多配置就可以满足实际的运行要求。这个配置还需要注意的就是后期的扩展接口之类的了。如果一个程序不需要考虑到后期的扩展,则这个配置可以写的固定一些。针对一般的WEB应用程序来说,接口还是要的 :D,因此说这个配置最好还是考虑到后期的兼容性等。
最后一个就是与用户(最小模块程序)打交道的用户层配置环境了,实施这部分环境配置一般会采用覆盖程序默认配置来进行的。这个用于满足程序在变化的环境变量的调用。这部分完全不需要考虑到后期的接口扩展的事情。
上面说到的三个配置可以举一个简单的例子来说明:
css 框架
针对于一套css框架的底层,我们可以写的东西有:
注意,除非是非常常用的命名规则或者非常固定的样式,才会在这里使用class方式进行命名的,其他的只使用tagname方式进行定义。如 reset 里面的 body,hx, ul,ol等,向clear这种class名称放这里还可以接受
针对某一个具体的系统来说,拥有上面的配置当然还不够,这个时候我们需要下面的css配置进行补充:
这个配置里面一般还是采用class方式进行定义,在命名上可以做一些简要的暗示为默认的配置。例如table 的样式名称定义为tbl,form的样式名称定义为frm等。
再深入到某一个具体的页面,例如首页,我们则可以针对这个首页定制一个 index.css来满足首页的额外配置,这个css就不需要考虑到扩展性了,因此里面一般可以使用ID进行样式定义。
也不仅仅CSS系统才可以使用这一套思想,其他类似于javascript、php、java、html也可以使用这一套思想进行相对应的架构。
再举一个本人之前实现的javascript editor的配置架构:
—-> 底层:fckeditor.js,这一套必须是使用最灵活的配置,那当然是官方的配置了。 因此这一部分直接采用官方的配置保持不变,日后fck版本更新也不需要对这一部分进行维护,直接更新fck和后面的接口即可
—->中间层:loader.js,这个文件实现fck同步加载,默认配置环境的导入功能,同时也实现一般程序里面使用fck的默认配置(特别是早期的fck的安全问题,在这一层进行完全的关闭等控制)。同时这一层还会分离出一个默认的配置文件default_config.js便于日后的维护
—->顶层:使用 javascript:src方式直接导入loader.js,如果没有特别的配置说明,则采用默认的配置即可实现fck功能。
如果还需要具体的配置,使用js文件(HTML页面嵌入也可以)实现对上面default_config.js里面的配置项进行覆盖处理。
使用到现在,这个还可以正常使用,在fck官方版本更新的时候,除了更改loader.js里面的一些接口方法,其他的都没有改动过。
其他的领域就不一一举例了。在PHP方面的配置,本人也采用了这一套的规则,需要范例的话可以直接联系我
做系统的配置架构时候,特别需要把握我觉得有两个:一个是命名空间问题,任何语言都存在这个问题。 另外一个就是配置控制粒度的问题了。如果是底层的配置,如果这个能够实现全覆盖当然是最好的。 :D
出处 http://hi.baidu.com/handt03
===========================================
解决办法:关掉360或相应的杀毒软件再重新装一次!
事件记录:
中午在小众软件看到QTTabBar的介绍,发现是个好东西,于是下下来准备把玩一番。
刚开始没看说明,安装完后发现 任务管理器 没有任何变化,于是又装了一遍,还是没看到变化。我以为是360把它给屏蔽了。于是关掉360再装,还是没反应。重新看了介绍,才发现在查看菜单中要勾选上才会出现。勾选后发现那个它出现的位置很难看,可是没法调整。又以为是程序没装好,再卸掉。还试过注销、清理注册表等方法来解决,都无果。
后来看到有个“查看 – 工具栏 – 锁定工具栏”,勾选上就可以自己拖动来布局工具栏了。
但是这个时候再重装就发现了一个错误“Error Registering Assembely”,字面意思是“注册程序集失败”,在.net中程序集(assembly)可以是dll或者exe。去了安装目录查看,发现都是 dll,看来是dll注册失败了,google之,发现.net framework sdk中有个regasm程序可以手动注册assembely,于是一个个注册,还是没用。就在无比愤怒的时候,突然想到,是不是360之类的程序在后台把它给kill了?推出360,重试。
ok,注册成功了。
原因分析:
qqtabbar 在内部实现时,估计会hook windowns的一些消息,既然还是hook,那么360就可能阻止,而且是悄无声息的阻止,于是,注册dll就失败了。
如果上面的方法还不行,则可以尝试安装高版本的.net framework。例如我的机器上面的是2.0,一直安装不成功,结果升级了.net framework 3.5就可以安装成功了。
QTTable 推荐理由:
1.打开文件夹后有一个“搜索”框,可以用来过滤显示的文件夹,支持 wildcard。
2.可以用不同的颜色来显示相邻行。
3.双击后可以直接回到上层文件夹。
MD5为一字串哈希(摘要)算法,原理是:通过定长拆分原文,并进行二进制异或、与、非运算进行迭代,
最终获得一个128位散列摘要序列。128位二进制一般被转换成ascii码便于记录。
所谓的md5 16位是不存在的。网上说的16位仅仅是在md5 32位结果里面截取16位作为伪结果。
16位字串相对于32位产生碰撞的几率大几个数量级,但是在一个小系统里面这种概率还是很小的,因此可以使用16位作为一种散列算法结果使用。
换句话说,md5 本身也是在一个范围里面的不产生碰撞而已。对于广域,严格不产生碰撞是不可能的。
附加:
md5碰撞产生器:,王小云证明MD5数字签名算法可以产生碰撞
现有已经有相关的程序可以用于md5同步工具,用于产生两个相同的md5而内容不一样的文件。
不过由于这些算法仅仅是在正序逻辑上的,现在还没有看到逆序的算法,因此md5还是比较安全的(爆破就另当别论啦)