Windows7试用

这几天折腾了一下Windows7,总体的感觉不错。从体验上来说,各方面的设置都和XP类似,即使是有变化也是过渡的非常平稳。唯一感觉不太好的是Windows7的画面感觉不太舒服,看起来非常的累,我的显卡是蓝宝4830的,应该不是卡的问题,舍友安装后也觉得电影的画面看起来有格子的感觉,可能是驱动的问题。

可能是因为我刚换的4核CPU,感觉windows7的操作似乎比xp还要流畅。

折腾了许久WP,终于找到了比较好的高亮方案

WP固然强大,但是其编辑器一直是比较鸡肋的。今晚折腾了挺久终于放弃了WP自带的编辑器,而改用强大的FCK。之后就可以不使用代码高亮插件了,方法如下:

1.本地将IDE编写的代码复制进WORD

2.拷贝WORD的代码,如浏览器有访问剪切板的提示则选择允许,OK,代码高亮了。

限制:某些IDE的代码拷贝到WORD后颜色会丢失(基于Java开发的貌似都不会,而DW之内的则会丢失)

 

 

javascript之setTimeout使用详解

setTimeout的第一个参数为函数名或者以""包含的js代码如果是第一种情形当函数带有参数时往往不能达到我们预期需要的效果文字说明比较抽象我们来看代码: (全文…)

第一次工作月总结

工作已经两个月, 有一些汗水, 有一些收获, 有一些欢乐, 有一些郁闷. 前方的路依然光明, 我要继续走下去.

整理一下两个月的收获和问题,说的不全,完全以这段时间的实践为主线。

一 面向对象 VS 面向过程
1.我们的选择
项目开始时,技术经理那边决定使用面向过程作为我们的主要开发方式,当时主要的考虑点是效率和项目人员对OO和面向过程的熟悉程度。
我们的项目是一个交易平台,预计并发、高负载、快速响应会是项目最重要的问题,再结合PHP本身的特点,我们觉得面向过程应该是我们的更好选择。
另外,项目中,除了我本人接触的OO较多外,其他人对于OO的理解还仅仅位于“对象”上, 对OOA/OOD/Design Pattern等基本无概念,而由于我们的时间和现有资源的问题,我们也不可能进行这方面的入职培训。 所以最终我们决定使用面向过程。

2.如何选择
很多人大谈OO或者面向过程的好处,互相攻击对方的方法缺陷。就讨论本身而言,辩论有利于更好的交流以及对知识更深层次的理解。但也容易带来一些偏见,这些往往是由于个人的阅历经验、对新事物的心态以及是否辩证看待事物有关。每个人的工作环境、项目要求等等都不尽相同,而OO和面向过程都不是万能的解决方案,他们有各自的优缺点,有各自的适应环境(所以不能一概而论, 不能断定哪种方式绝对的好),同时也有重叠的部分(既然有重叠,那么在某些情况下使用OO和面向过程皆可,具体使用哪一种,主要取决于个人的偏好)。
因而我们讨论两种方法,重点在于分析他们各自的利弊、适应环境,而不是打败对方。我们的目的在于赢得真理, 而不是赢得讨论。无论枪有多好,刀也不会淘汰;同时枪也的确比刀强大很多—某些情况下。 (全文…)

FF和IE对js保留字class的支持

ff支持 var class(只测试了class), 而ie则不支持这样的写法. 备忘.

js关键字和保留字列表

1. 关键字
break,  case,  catch,  continue,  default, delete,  do,  else, finally  , for, function, if, in, instanceof, new, return, switch, this, throw, try, typeof, var, void, while, with

2. 保留字
abstract
boolean
byte
char
class
const
debugger
double
enum
export
extends
fimal
float
goto
implements
import
int
interface
long
mative
package
private
protected
public
short
static
super
synchronized
throws
transient
volatile

自己写的日期联动菜单

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

    <head>

        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

        <title>Untitled Document</title>

        <script type="text/javascript">

            var yearBegin = 1900;

            var today = new Date(); 

            var yearEnd = Number(today.getFullYear()); 

            var monthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

            var monthDaysP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

            window.onload = function init()

            {

            initYear();

            initMonth();

            initDay();

            }

            function writeDate(year, month, day)//

            {

            if (year < yearBegin)

            {

            year = yearBegin;

            }

            else if (year > yearEnd)

            {

            year = yearEnd;

            }

            if (month >12 || month <1)

            {

            month = 1;

            }

            //做个日期合法检查

            if (IsPinYear(year))

            {

            if (monthDaysP[month-1] < day)

            {

            day = monthDaysP[month-1];

            }

            }

            else

            {

            if (monthDays[month-1] < day)

            {

            day = monthDays[month-1];

            }

            }

            var yearObj = document.getElementById(‘year’);

            var monthObj = document.getElementById(‘monthSelect’);

            var dayObj = document.getElementById(‘daySelect’);

            yearObj.selectedIndex = year - yearBegin;

            monthObj.selectedIndex = month-1;

            dayObj.selectedIndex = day-1;

            }

            

            function initYear()

            {

            var yearObj = document.getElementById(‘year’);

            var monthObj = document.getElementById(‘monthSelect’);

            var dayObj = document.getElementById(‘daySelect’);

            for(i=yearBegin; i<=yearEnd; i++)

            {

            yearObj.options.add(new Option(i, i));

            }

            }

            function initMonth() //

            {

            var yearObj = document.getElementById(‘year’);

            var monthObj = document.getElementById(‘monthSelect’);

            var dayObj = document.getElementById(‘daySelect’);

            for(i=1; i<=12; i++)

            {

            monthObj.options.add(new Option(i, i));

            }

            }

            function initDay()//设置日期

            {

            var dayObj = document.getElementById(‘daySelect’);

            var month = getSelMonth();

            var year = getSelYear();

            dayObj.options.length = 0;

            if (IsPinYear(year))

            {

            days = monthDaysP[month-1];

            for(i=1; i<=days; i++)

            {

            dayObj.options.add(new Option(i, i));

            }

            }

            else

            {

            days = monthDays[month-1];

            for(i=1; i<=days; i++)

            {

            dayObj.options.add(new Option(i, i));

            }

            }

            }

            function monthChange()

            {

            initDay();

            }

            function yearChange()//年份发生改变

            {

            initDay();

            }

            function getSelYear()//获得当前选择的年

            {

            var yearObj = document.getElementById(‘year’);

            var yearIndex=yearObj.selectedIndex;

            return yearObj.options[yearIndex].value;

            }

            function getSelMonth()//获得当前选择的月份

            {

            var monthObj = document.getElementById(‘monthSelect’);

            var monthIndex=monthObj.selectedIndex;

            return monthObj.options[monthIndex].value;

            }

            function IsPinYear(year)//判断是否闰平年

            { return(0 == year%4 && (year%100 !=0 || year%400 == 0))}

        </script>

    </head>

    <body>

        <select name="year" id="year" onchange="yearChange();">

        </select>

        <select name="monthSelect" id="monthSelect" onchange="monthChange();">

        </select>

        <select name="daySelect" id="daySelect">

        </select>

        <a href="javascript:writeDate(1987, 9, 7);">19870907</a>

        <a href="javascript:writeDate(2987, 9, 7);">不合法的日期29870907</a>

        <script type=‘text/javascript’>

            //<![CDATA[

            if (document.getElementById('processtime')) 

                document.getElementById('processtime').innerHTML = "<span class='runtimedisplay'>Run in 51 ms, 8 Queries, Gzip enabled.</span>";

            //]]>

        </script>

    </body>

</html>

PHP单例模式的必要性

  多数人都是从单例模式的字面上的意思来理解它的用途, 认为这是对系统资源的节省, 可以避免重复实例化, 是一种"计划生育".  而PHP每次执行完页面都是会从内存中清理掉所有的资源. 因而PHP中的单例实际每次运行都是需要重新实例化的, 这样就失去了单例重复实例化的意义了. 单单从这个方面来说, PHP的单例的确有点让各位失望. 但是单例仅仅只有这个功能和应用吗? 答案是否定的,我们一起来看看.

1.
php的应用主要在于数据库应用, 所以一个应用中会存在大量的数据库操作, 在使用面向对象的方式开发时(废话), 如果使用单例模式, 则可以避免大量的new 操作消耗的资源.

2.
如果系统中需要有一个类来全局控制某些配置信息, 那么使用单例模式可以很方便的实现. 这个可以参看zend Framework的FrontController部分.

3.
在一次页面请求中, 便于进行调试, 因为所有的代码(例如数据库操作类db)都集中在一个类中, 我们可以在类中设置钩子, 输出日志.避免到处var_dump, echo.

Zend Framework自定义路由一则

经常性的看到如下的url:
http://www.example.com/id/4
或者更干脆
http://www.example.com/3
链接清爽,且搜索引擎友好.
ZF为我们提供了快速简单的实现方式,代码如下
 

//$front为前段控制器实例

$router $front->getRouter();

//实现如http://www.example.com/id/4类型的url

$router->addRoute(

‘test1′

    new Zend_Controller_Router_Route(

     ‘id/:aid’

        array(‘controller’ => ‘index’ ‘action’ => ‘view’)

    ))

    //实现如http://www.example.com/3类型的url

    ->addRoute(

    ‘test2′

    new Zend_Controller_Router_Route(

     ‘/:aid’

        array(‘controller’ => ‘index’ ‘action’ => ‘view’)

        )

);

 

addRoute有两个参数,第一个为URL规则名称,第二个为URL规则的实例,该实例对应类必须实现Zend_Controller_Router_Interface接口,通常为Zend_Controller_Router_Route.
Zend_Controller_Router_Route有三个参数,定义原型为:
public function __construct($route, $defaults = array(), $reqs = array())
其中,
$route为URL匹配的方式, 例如test1实例中的’id/:aid’表示匹配http://www.example.com/id/x,":"代表之后为URL变量分隔符, 表示在实际的URL中aic为变量.
$defaults表示在URL匹配$route指定的形式时默认的各种参数,本例中设置了 控制器为index,动作为view, 所以当URL匹配时则相当于访问了http://www.example.com/index/view/id/x
$reqs则用于指定匹配的正则表达式, 例如 我们可以指定aid为整数时才匹配, 则:
 

$router->addRoute(‘test1′,    

    new Zend_Controller_Router_Route(‘id/:aid’,    

            array(   

                ‘controller’=>‘index’,   

                ‘action’=>‘view’                           

              )   

          ),   

    array(‘aid’=>‘\d+’)   

);

 

简单的介绍下,更多请查看ZF手册.

补充:
定义了’id/:aid’形式的路由规则之后,在动作控制器中,使用
$this->_request->getParam(‘aid’);
来获得id值.

Pages: 上一页 1 2 3 下一页