php 5.4 E_ALL包含了E_STRICT

为了使用phpDocumentor2在内网安装了新版本的php5.4.3。不过phpDocumentor2安装不成功,于是用了phpDocumentor1.4.4。在生产文档的时候报了Strict的错误,导致生成的文档里面也包含了一堆strict报错的信息。于是想暂时先关掉E_STRICT的报错。查了一下写成

error_reporting = E_ALL & ~E_NOTICE

就可以了,但是我怎么试都还是报错。因为网上查到的:E_ALL – 所有的错误和警告(不包括 E_STRICT)

后来请pc童鞋来帮忙看了下写了个~E_STRICT,就解决了问题。

查了下php5.4原来是E_ALL是包含了E_STRICT的,所以写成

error_reporting = E_ALL & ~E_STRICT

后终于不报Strict的错误了。确实啊E_ALL就是应该包含E_STRICT才叫ALL。

 

注:AppServ的php.ini在C:\Windows\php.ini,而wamp是在X:\wamp\bin\apache\apache2.2.22\bin\php.ini。这个可以通过phpinfo()的Loaded Configuration File查看。

OmniFocus里可以用发送邮件的办法在Windows系统中实现快速收集功能(转)



OmniFocus功能很强大,但只能在Mac系统和iOS系统中运行,在办公室里我一般不带Macbook,在用iPhone实现收集时打字就是一种痛苦,以前我是用这种办法:

打开浏览器用微传把信息发送到iPhone中,再打开iPhone中的微传,复制到剪贴板中,再打开OmniFocus中把粘贴到OmniFocus的Inbox中,收集过程有些辛苦。

现在发现如果用了OmniFocus中的同步服务,可以申请开通Mail Drop功能,将Action直接发送到一个邮件地址中,从而直接同步到你的OmniFocus系统的Inbox中。

配置过程:

1)必须用omniFocus的同步Omni Sync Server功能,当前这个功能是免费的,申请账号后,在iPhone中的omnifocus上配置该同步服务即可

2)登录到Omni Sync Server的WEB网站上,用你的账号登录,申请开通Mail Drop to Inbox功能

2013-01-04 08-06-14

3)当Mail Drop to Inbox开通后,你会收到一封邮件通知,然后你再登录Omni Sync Server,可以得到一个邮件账号xxx@sync.omnigroup.com,然后你就可以往那个账号中发邮件了,Action的名称当作邮件的主题,详细信息放在邮件的正文中,当OmniFocus同步之后,这个Action就会出现在Inbox中了。为了发邮件方便,我直接安装了一个SMTPMailSender小程序,这个小程序支持命令行,配置好发送服务器和收件人地址,直接就可以发送到Inbox了。

SMTPMailSender.exe -f from@mymail.com -t xxx@sync.omnigroup.com



————– Email: slofslb (at) qq.com ————
本文(转载的文章除外)版权归毒龙的程序人生和博客园共有,欢迎转载,原文地址:http://www.cnblogs.com/speeding/archive/2013/01/04/2842656.html
但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。

Sublime Text 2.0.1 Build2217破解方法

Sublime Text 2是一款非常给力的文本编辑软件。个人特别喜欢它默认的主题,在ZendStudio调出来的效果就是没有它里面的好看。而且Zen Coding等插件非常的好用。之前的版本不用注册也不会经常弹购买提示,也就这样用着,后来会经常弹。$59的价格还是扛不住。找了方法来破解一下,这里做一下记录。
1、首先安装它2.0.1的版本(Build2217);
2、你得有一个十六进制编辑器,没有的话在这里下载
3、将你安装好的主程序文件sublime_text.exe备份一个方便还原;
4、用WinHex打开sublime_text.exe,跳到000CBB70那一行,将该行的8AC3修改为B001然后保存。
WinHexEditSublime
说明:1、如果进去找不到这行,请点击offset列,看到左侧的偏移地址是“十六进制”而不是“decimal”就可以了。
WinHexStatus
2、定位行可以用Alt+G(菜单栏:位置->调整到偏移量)来实现。
WinHexLocate
好了,这样就不会要求你购买注册啥啥的了。
SublimeCrackSuccess

$$arr[$key]

因为之前程序里面有些变量是$t_Arr之类的,我们现在svn上传不了,所以就用下面方法解决:
$varName = ‘t_Arr’;
$$varName就是原来的$t_Arr,但是$$varName[$key]时候遇到问题。
[code lang=”php”]
$array = array(0, 1 ,2);
$test = ‘array’;
$a = 1;
$r = "ab";
var_dump($$test[$a]);
输出:string(2) "ab"

$t_Arr = array(
‘key1’=>’val1’ ,
‘key2’=>’val2’ ,
‘key3’=>’val3’
);
$test = ‘t_Arr’;
$key = ‘key2’;
var_dump($$test[$key]);
//输出:NULL

$t_Arr = array (
‘key1’=>’val1’ ,
‘key2’=>’val2’ ,
‘key3’=>’val3’
);
$test = ‘t_Arr’;
$test2 = $$test;
$key = ‘key2’;
var_dump($$test);
var_dump($test2[$key]);
//输出:string(4) "val2"
[/code]
所以$$arr[$key] = $($arr[$key]),而不是($$arr)[$key]

又一个IE下JS的问题:substr

substr在不同浏览器下问题

[code lang=”js”]
var str="Hello world!"
document.write(str.substr(-1, 1));
[/code]



chrome,firefox下是’!’

IE下是’H’

就是说IE下是不支持负值的offset的。

w3school上有以下提示,不过我用的是IE8还有这个问题。

重要事项:在 IE 4 中,参数 start 的值无效。在这个 BUG 中,start 规定的是第 0 个字符的位置。在之后的版本中,此 BUG 已被修正。

Javascript中函数定义方式的区别

最近做项目的时候发现一个已经定义过的Js函数在调用的时候居然报错:
Uncaught TypeError: Property ‘fn1’ of object [object Window] is not a function

记得之前曾经问过var fnc = function () {}和function fuc () {}两种方式有什么区别,被告知的答案是没有区别。不过通过这次遇到的问题,发现这两种方式确实是有区别的。看下下面两个例子

例1:

[code lang=”js”]
fn1();
var fn1 = function ()
{
alert(1);
}
[/code]

例2:

[code lang=”js”]
fn1();
function fn1()
{
alert(2);
}
[/code]

例2能调到fn1函数,而例1则报错。



前者只有在代码执行到那一行的时候才会有定义 ,后者函数会在代码执行以前被加载到作用域中。

函数声明会给函数指定一个名字,而函数表达式则是创建一个匿名函数,然后将这个匿名函数赋给一个变量。

IE下Array.splice()的bug

之前一直用chrome来测试:

[code lang=”js”]
var a = [1,2,3,4,5,6,7,8,9];

b = a.splice(4);

alert(a);a = [1,2,3,4];

alert(b);b = [5,6,7,8,9];

[/code]

一直以为没有问题,调试了很久。后来才想起来是不是IE的问题,用IE测试了一下果然结果:a = [1,2,3,4,5,6,7,8,9];b为空。

Splice函数在IE下使用务必加上第二个参数,就是删除之后几个元素,虽然手册上是说不加的话就删除后面所有的。

IE6下+与push效率对比

IE6一直都是一个令开发者们头大的东西,下面一个例子说明IE6下+拼接符与数组push()方法的效率对比。

[code lang=”js”]

var str, arr, i, dateObj, startStamp, endStamp;
str = ‘’;

startStamp = (new Date()).valueOf();
for(i=0; i<80000; i++) {
str += ‘abcdefg’;
}
endStamp = (new Date()).valueOf();
alert(endStamp - startStamp);

&nbsp;

arr = Array();
startStamp = (new Date()).valueOf();
for(i=0; i<80000; i++) {
arr.push(‘abcdefg’);
}
endStamp = (new Date()).valueOf();
alert(endStamp - startStamp);
[/code]

经以上测试,第一个alert值:17730;第二个alert值:211。IE6下push()方法是+的 84倍。

而在IE7,8下却是+比较快,对于测试数据分别为42,62;45,71。

Chrome17,数据基本稳定在14,2。

Firefox两个数据都稳定在比较小的一个一位数。

Javascript类中变量的赋值问题

本文主要记录下工作中遇到的一个简单的问题,关于Javascript中object.prop和object[prop]赋值的区别。

举一个简单的例子,比如要从stocks中获取出开盘价的信息,组成一个openList对象。实现代码如下:

[code lang=”js”]

var stocks = {
‘600000’: {‘name’:’浦发银行’, ‘open’:’9.67’, ‘new’:’9.54’},
‘600004’: {‘name’:’白云机场’, ‘open’:’6.82’, ‘new’:’6.77’},
‘600005’: {‘name’:’武钢股份’, ‘open’:’3.23’, ‘new’:’3.19’},
‘600006’: {‘name’:’东风汽车’, ‘open’:’3.96’, ‘new’:’3.86’}
};

var openList = {
‘600000’: ‘9.67’,
‘600004’: ‘6.82’,
‘600005’: ‘3.23’,
‘600006’: ‘3.96’
};

var result = {};
var i;
//获得开盘价数据对象
for (i in stocks) {
//方法1
// result[i] = stocks[i][‘open’];
//方法2
result.i = stocks[i][‘open’];
}
[/code]

这里方法1,能获取到想要的结果。

但是方法2获取的结果:{i: “3.96”}。

所以对象.属性,这个属性不能是个变量,像这里的i就成了对象的一个属性被覆盖了。

|