搬家了

新家地址
http://www.learnenjoy.cn/blog

Posted in PhP | Leave a comment

判断一个数是偶数还是基数

这原本是一个简单的问题,按照正常的逻辑来写:
var num = 10;
var isEven;
if ( num%2 == 0 ){
isEven = true;
} else {
isEven = false;
}

如果用三元运算,可以把代码写得更简练:
var isEven = (num%2==0) ? true : false;

有没有更简练的呢?有!
var isEven = !(num%2);

Posted in javascript | Tagged | Leave a comment

javascript获取用户选择的文字


/* attempt to find a text selection */
function getSelected() {
// support by FF,OP,CH,
if(window.getSelection) { return window.getSelection(); }
// support by FF,OP,CH,
else if(document.getSelection) { return document.getSelection(); }
// support by IE,OP
else {
var selection = document.selection && document.selection.createRange();
if(selection.text) { return selection.text; }
return false;
}
return false;
}

OP居然能全部支持,赞一个

Posted in javascript | Tagged | Leave a comment

判断某元素是否存在某数组里(忽略大小写)

看CI的源码

判断某元素是否存在某数组里(忽略大小写)的写法

in_array( strtolower($needle), array_map( 'strtolower', $arr) );

Posted in PhP | Tagged , | Leave a comment

使用Date对象要注意的问题

前几天asp.net部门的同事问我关于Date对象的一些问题,他在调试项目关于一个日历空间的js遇到了问题。我看了一下
关于Date对象的问题。记下来
[code]
var HT = 1000*60*60*24;
var now = new Date();
var yesterday = now - HT;
alert(new Date(yesterday));

var tomorrow = now + HT;
alert(new Date(tomorrow));
[/code]

对于第一个
var yesterday = now - HT;
js会把now自动转换成 “减” 操作,
但是第二个
var tomorrow = now + HT;
js只会认为是字符串连接。

Posted in javascript | Tagged | Leave a comment

也谈数字国际格式转换

做别人没想过的,想别人没做过的,看到一道腾讯的招聘题目--数字国际格式转换。

大概看了要求自己也动手写了起来:

//代码1:
function addComment( testInt,splitNum ){
testInt += '';
var len = testInt.length;
var testInt = testInt.split('').reverse().join('');
var newVal = '';
for ( var i=0,left=len; i
if ( left <= splitNum ) {
newVal = newVal + testInt.slice(i);
} else {
newVal = newVal + testInt.slice(i,i+splitNum) + ',';
}
left -= splitNum;
}
newVal = newVal.split('').reverse().join('');
return newVal;
}

写完后在firefox下用firebug测试效率,20000次循环。

addComment花费的时间是600+左右。

chen0908(因为不熟悉,所以暂时用这个称呼^_^)写的changeNumber,花费时间是700左右,也许是递归效率的问题。

测试正则所花费的时间也是差不多600+。

到了这里想和chen0908交流一下,于是便准备留言,发现chen0908的blog无法留言。

再次回顾自己写的程序,发现自己当时一定是脑子打结了,为什么要反转在反转,于是就修改了代码,最后代码如下:

function addComment2( testInt, splitNum ) {
testInt += '';
var len = testInt.length;
var newVal = '';
for ( var i=0,left=len; i<= 3 ) { newVal = testInt.slice( 0, left ) + newVal; } else { var offset = left-splitNum; newVal = ',' + testInt.slice( offset, left ) + newVal; } left -= splitNum; } return newVal; }

测试速度居然是 100+,心中很是惊讶,于是边有了这篇文章。
最后说一下,在google的chrome下测试,正则和addComment2居然是50+,另外两个也只需要100+,chrome实在太快了。
算法流程图如下

千分符算法流程图

千分符算法流程图

Posted in 算法 | Tagged | Leave a comment

强制浏览器使用IE8兼容模式(IE7)浏览网站

公司的项目在IE8下速度很慢,主要是javascript运行效率的问题,平时只能用IE8的兼容模式来浏览,不过让客户每次浏览都去点击一下“使用兼容模式浏览”的确不是上策。今天日本总共是提出了一个解决方案:在服务器端强制用户使用IE8兼容模式或IE7模式浏览

实现方法是修改apache的配置文件:hpptd.conf

添加mod_headers模块
LoadModule headers_module modules/mod_headers.so

在网站目录配置添加
Header set X-UA-Compatible "IE=EmulateIE7"

讲相应头设置为IE7

当然,这也是中策而已,有人这么说:修改程序,使其从根本上兼容IE8才对

Posted in PhP | Tagged , | Leave a comment

用“+”对数组进行合并

要合并的数组必须有一个为关联数组:例如

$arr1 = array(1,2,3,4);
$arr2 = array(5);
$sum = $arr1+$arr2;//这是失败的

$arr1 = array(1,2,3,4);
$arr2 = array('4'=>5);
$sum = $arr1+$arr2;//成功

Posted in PhP | Tagged | 1 Comment

mysql的CONCAT() 函数

在 “网站开发日志” 的一篇日志里看到 CONCAT这个函数,想起了项目里一个愚蠢的处理方式

http://www.61dh.com/blog/2009/09/mysql-select.html

数据库里有一个表
holidays,记录假期的数据
原本有字段如下
id, y, m, d, tt
因为某些原因,程序在想用户展示数据的时候显示完整日期,我原来的做法是往数据库里多添加一个字段fulldate,在保存ymd之后自动生成fulldate(这样现在想起来真的很多余)

今天才知道CONCAT这个函数,轻松地解决了我的需求。sql是这样的:

SELECT tt, CONCAT(y,'/',m,'/',d) as fulldate from tableName

基础差,真可怕

Posted in mysql | Tagged , , | Leave a comment

MYSQL的find_in_set()函数

今天见到有网友提问这么一个问题
select * from table where id in (1,2,3)

按照这样的sql语句查询出来的顺序应该是 id升序排序

可这位网友不知道什么原因,希望按照 1 ,3 ,2来排序。

自己以前没有想过这个问题,看到有网友解答

使用find_in_set()函数,具体实现如下:
select * from table where id in (1,2,3) order by find_in_set('id', '1,3,2')

Posted in mysql | Tagged , | Leave a comment