Thursday, November 19, 2009

护眼常识

当近的社会,吸引眼球的事物太多了,所以眼晴常常出现干涩,红血丝,不能长时间阅读。这都是用眼过度造成的。今天是世界爱眼日,向大家推荐日常一些保护眼晴的方法。
现在人们和活离不开电脑,长时间使用电脑是成为眼睛疲劳的主要原因。
白色,高亮度,对人眼的刺激是最大的。然而windows系统默认的都是白色。我们可以都过一些设置来改变。

XP用户设置方法:打开控制面板中的"显示 "(也可以通过桌面右键属性)
选择外观(appearance)-高级(advanced) , 然后在项目(items)那栏选窗口(windows),再点颜色 (color)-其它(others),然后把
Hue(色调) 设为 84,
Sat(饱和度) 设为 91,
Lum(亮度) 设为 205。
然后单击 添加到自定义颜色(Add to custom colors) ,按" OK"...一直OK。
>OK ,现在你就会发现你的屏幕已经变成淡淡的绿色了

当然普通电脑使用者大部分时间是在浏览网页,也可以把IE底色换成用户指定的颜色。
打开IE浏览器,选择“工具”菜单中的“Internet选项”,点击“辅助功能”按钮,在“不使用网页中指定的颜色”前打钩。这样,网页的底色就成了绿色,而且文件夹、文档,甚至word里的背景页面都会变成淡淡的绿色。

windows 7的设置方法。开始-控制面板-外观和个性化-个性化-窗口颜色。当然也可以直接通过桌面右键属性-个性化进行设置

其它几种几种视力保护色

Hue(色调) Sat(饱和度) Lum(亮度)
杏仁黄: 39 91 205
秋叶褐: 201 180 221
胭脂红: 8 211 224
青草绿: 53 113 208
海天蓝: 149 103 217
葛巾紫: 156 219 229
极光灰: 160 32 223

在浏览网页会遇过一些网站上的按钮,文字,不能显示。是因为设置了“不使用网页中指定的颜色”的原因。改回来就好了。

把所有设置改回有原始状态只在“主题选项卡”里,把主题改回windoswxp 或经典就OK

平时使用电脑还要注意,多眨眼睛,不要直勾勾盯着电脑一看就是一两个小时。每看计算机一小时眼睛要休息5分钟。活动活动眼球,看看远处。

中国有句古话“流水不腐,户枢不蝼,动也”神医华佗曾经说“是以古之仙者为引导之事,熊经鸱顾,引挽腰体,动诸关节,以求难老。就是说人要像熊那样经样晃动脖子,像鸟儿一样经常传动眼晴。

下面介绍一些对眼睛有好处的运动

八个小方法让眼睛更清澈

眼睛与其它器官一样,随着年龄的增长或因其它疾病影响会逐渐退化和衰弱。如何养目来增进健康呢?根据我国传统的养目方法,结合现代医学有关知识,可归纳出八种养目方法。


方法一 熨目

  每天晨起或睡前,取坐或立式,闭目,同时双手掌快速摩擦揉搓,约半分钟便会感到发热发烫,随即迅速将双手掌按抚于双眼上。待热感不明显时,再如法重试一次,每日如此循环14次。此法有通经活络,改善血液循环的作用。

方法二 运目

自然站于窗前2-3米外,双眼依次注视4窗角,顺时针方向,逆时针方向反复交替,共反复7-14次,此法可以舒筋活络、改善视力。

方法三 浴目

以热水、热毛巾或蒸气熏浴双眼,每天1-2次,每次15-20分钟。还可用中药浴,即将菊花、大清叶、桑叶、竹叶之类的中药煎水,趁热先以蒸气熏眼,待水温后,再以药水洗浴双眼。久之,可清热、消炎、明目。

方法四 养目

平时要注意饮食的选择和搭配,如粗细粮搭配、荤素菜搭配等。另外要多吃蔬菜、水果,注意维生素和微量元素的补充,适当吃些海带、胡萝卜、芹菜、动物肝脏等。

方法五 摩目

闭目,以双手的中、食二指分别按压双眼球,适当地有节奏地加压(以不感到不适为度),可略带旋转动作。此法对老年人,特别是青光眼患者最为适用。但患眼病或做过眼部手术的人,一定要在医生指导下进行,切不可用力过猛。

方法六 极目

晨起选择空旷、空气清新的场所进行,身体自然直立,两目先平视远处一个目标,如树梢、塔尖或山峰等。此时尽量放松眼睛,坚持1-2分钟后,逐渐将视线移近,直到眼前1尺左右,注视约1分钟,然后将视线由近而远移到原来的目标上。

方法七 惜目

用眼不要过度,无论男女老少,都要注意节约用眼,如读书、写字或看电视不要持续时间过长,一般40--60分钟左右即休息5--10分钟。

方法八 护目

不要久处强烈的阳光或灯光下,更不要在强光下读书看报、电视的光度也不要太强。如果夏日出游,要戴适合的太阳镜。另外,各种屈光不正的患者应配戴合适的眼镜等。

Friday, October 2, 2009

symfony date format 日期的格式

symfony 日期助手

TYPEformat_date(time(),$type)format_date(time(),$type,'zh')
d5/30/0606/05/30
DMay 30, 20062006 五月 30
pMay 30, 20062006 五月 30
PTuesday, May 30, 2006星期二, 2006 五月 30
t4:50 AM04:50
T4:50:55 AM UTC04:50:55 UTC
q4:50:55 AM04:50:55
Q4:50:55 AM UTC04:50:55 UTC
fMay 30, 2006 4:50 AM2006 五月 30 04:50
FMay 30, 2006 4:50:55 AM UTC2006 五月 30 04:50:55 UTC
g5/30/06 4:50 AM06/05/30 04:50
G5/30/06 4:50:55 AM UTC06/05/30 04:50:55 UTC
mMay 30五月 30
MMay 30五月 30
rTue, 30 May 2006 04:50:55二, 30 五月 2006 04:50:55
RTue, 30 May 2006 04:50:55二, 30 五月 2006 04:50:55
s2006-05-30T04:50:552006-05-30T04:50:55
u2006-05-30 04:50:55 UTC2006-05-30 04:50:55 UTC
UTuesday 30 May 2006 04:50:55星期二 30 五月 2006 04:50:55
y2006 May2006 五月
Y2006 May2006 五月

Tuesday, September 22, 2009

winavi

WinAVI Video Converter 9.0
http://softdata.studa.com/downinfo/33849.html
用户名:Softii.com
注册码:5A08D3B3FF038C3AF4D97982594198AB8E363292336B2BC2
注册码:
Name: Alistair Dalrymple
Code: B0E62E8F4FB3BACB9A8F4FB35DE9261BFB8B551E74D6A3BDThe fasted converting program
WinAVI Video Converter 是一款影片格式转档软体,从此,使用者再也不会因各种影片格式的限制,导致放映和传输等困难;它支持几乎所有的视讯格式的转文件,包括AVI,MPEG1/2/4,VCD/SVCD/DVD,DivX,XVid,ASF, WMV,RM,QuickTime MOV,Flash SWF,并支持烧录VCD/SVCD/DVD!
透过先进的影像压缩引擎,即可达到在一小时内完成转档整补 AVI 电影至 DVD 烧录盘片,且影音质量完美,您可在任何的家用影碟机或者硬驱上欣赏影片。

Wednesday, September 9, 2009

C#

字符转换:
\x65 是 A,char c = 'A'; char 用的是单引号,双引号是string.

write规则:
Console.write("{0,3}:{1,-3}", i, char(i));
0是第一个参数i
1是第二个参数char(i)
3是右对齐,-3是做对齐。

析构:
~class名(){}
1.一个类只能有一个析构器。
2.析构器不能被继承或重载。
3.析构器不能被调用,他们是被自动调用的。
4.析构器不能带修饰或参数。
5.析构器只能是private的。

类:

















































访问控制修饰符类内部子类程序集内程序集外
defaultY


PublicYYYY
PrivateY


InternalYYY
ProtectedYY

Protected InternalYYY

Internal 和 protect internal的区别:
internal: 当父类和子类在同一个程序集的时候,子类可以访问父类的internal成员,当父类和子类不在在同一个程序集的时候,子类可以访问父类的internal成员,但是可以访问protect internal的成员方法。

在类前如果没有修饰符,则默认为internal class.

sealed:不能被继承的类。
partial:可以声明是在不同文件中的同一个类。

Thursday, September 3, 2009

Vocabulary

  1. discreet: 迪斯科(disc)的根s(root-reet)要考虑周到的才能好听.
  2. discrepancy: 迪斯科(disc)
  3. discrete: 和考虑周到的不相关联的ee被t给分开了.

Monday, August 24, 2009

ASP.net

Const 常量

sub(子程序):无返回值
sub 程序名称(参数1 as 类型, 参数2 as 类型...)
程序语句
end sub

function(函数): 有返回值
Function 程序名称(参数1 as 类型, 参数2 as 类型...)
程序语句
return 返回值
end function

1.
if then
elseif
else
end if

2.
for 计次变量=起始值 to ... step
...
next 计次变量

3.
select case
case a
...
case b
...
...
case else
...
end select

4.
do while 条件式
...
loop

4.1
while 条件式
...
end while

5.
do
...
loop until 条件式

6.
do
...
loop while 条件式

7.
do until 条件式
...
loop

exit do可以放在循环之中
eg.
Do
response.write("i = " & i & "
")
if i = 10 then exit do
i = i + 1
loop

8.
for a to step
for b to step
...
next b
next a

9.

ASP.net

Const 常量

sub(子程序):无返回值
sub 程序名称(参数1 as 类型, 参数2 as 类型...)
程序语句
end sub

function(函数): 有返回值
Function 程序名称(参数1 as 类型, 参数2 as 类型...)
程序语句
return 返回值
end function

1.
if then
elseif
else
end if

2.
for 计次变量=起始值 to ... step
...
next 计次变量

3.
select case
case a
...
case b
...
...
case else
...
end select

4.
do while 条件式
...
loop

4.1
while 条件式
...
end while

5.
do
...
loop until 条件式

6.
do
...
loop while 条件式

7.
do until 条件式
...
loop

exit do可以放在循环之中
eg.
Do
response.write("i = " & i & "
")
if i = 10 then exit do
i = i + 1
loop

8.
for a to step
for b to step
...
next b
next a

9.

Thursday, June 18, 2009

Day10 Form

1. 表单合并:
可以通过mergeForm()方法将一个表单与另一个表单合并,或用embedForm()方法进行表单嵌套:

$this->mergeForm(new AnotherForm());
$this->embedForm('name', new AnotherForm());

2. 取消表单显示字段:
默认情况下,Propel表单显示的字段对应全部数据表字段,我们要清除(unset)其中不可以由终端用户编辑的字段:ex
class JobeetJobForm extends BaseJobeetJobForm
{
public function configure()
{
unset( $this['created_at'], $this['updated_at'], $this['expires_at'], $this['is_activated']
); }
}

3. sfWidgetFormChoice控件

sfWidgetFormChoice表示一个选择控件,它可以根据配置选项(通过expanded 和 multiple参数不同搭配)的不同,被显示为不同的控件:


* 生成下拉列表<select> array(’multiple’ => false, ‘expanded’ => false)

* 生成下拉框<select multiple=”multiple”> array(’multiple’ => true, ‘expanded’ => false)

* 生成单选框<input type=radio> array(’multiple’ => false, ‘expanded’ => true)

* 生成复选框<input type=checkbox> array(’multiple’ => true, ‘expanded’ => true)


4. 自定义表单样式

<?php echo $form ?>默认会以表格形式显示表单。


多少情况下,你可能需要自己定制表单布局。表单对象为定制提供许多有用的方法:



































Method Description
render() 显示表单(相当于echo $form)
renderHiddenFields() 显示隐藏的字段
hasErrors() 如果表单有错误,返回true
hasGlobalErrors() 如果标有全局错误,返回true
getGlobalErrors() 返回全局错误数组
renderGlobalErrors() 显示全局错误

表单对象就像一个字段数组。你可以用$form['company']访问company字段,返回的对象提供显示这个字段每一个元素的方法:































Method Description
renderRow() 显示表单域行。(包括label,error,field tag等全部)
render() 显示字段控件
renderLabel() 显示字段标签
renderError() 如果有子段错误则显示
renderHelp() 显示字段帮助信息

echo $form语句相当于:


<?php foreach ($form as $widget): ?>    <?php echo $widget->renderRow() ?>  <?php endforeach(); ?>  

Tuesday, June 9, 2009

正则表达式2

元字符
正则表达式的威力在于其能够在模式中包含选择和循环。它们通过使用元字符来编码在模式中,元字符不代表其自身,它们用一些特殊的方式来解析。

有两组不同的元字符:一种是模式中除了方括号内都能被识别的,还有一种是在方括号内被识别的。方括号之外的元字符有这些:

\
有数种用途的通用转义符

^
断言目标的开头(或在多行模式下行的开头,即紧随一换行符之后)

$
断言目标的结尾(或在多行模式下行的结尾,即紧随一换行符之前)

.
匹配除了换行符外的任意一个字符(默认情况下)

[
字符类定义开始

]
字符类定义结束

|
开始一个多选一的分支

(
子模式开始

)
子模式结束

?
扩展 ( 的含义,也是 0 或 1 数量限定符,以及数量限定符最小值

*
匹配 0 个或多个的数量限定符

+
匹配 1 个或多个的数量限定符

{
最少/最多数量限定开始

}
最少/最多数量限定结束

模式中方括号内的部分称为“字符类”。字符类中可用的元字符为:

\
通用转义字符

^
排除字符类,但仅当其为第一个字符时有效

-
指出字符范围

]
结束字符类

以下说明了每一个元字符的用法。

反斜线(\)
反斜线字符有几种用途。首先,如果其后跟着一个非字母数字字符,则取消该字符可能具有的任何特殊含义。此种将反斜线用作转义字符的用法适用于无论是字符类之中还是之外。

例如,如果想匹配一个“*”字符,则在模式中用“\*”。这适用于无论下一个字符是否会被当作元字符来解释,因此在非字母数字字符之前加上一个“\”来指明该字符就代表其本身总是安全的。尤其是,如果要匹配一个反斜线,用“\\”。

注: 单引号或双引号括起来的 PHP 字符串中的反斜线有特殊含义。因此必须用正则表达式的 \\ 来匹配 \,而在 PHP 代码中要用 "\\\\" 或 '\\\\'。

如果模式编译时加上了 PCRE_EXTENDED 选项,模式中的空白字符(字符类中以外的)以及字符类之外的“#”到换行符之间的字符都被忽略。可以用转义的反斜线将空白字符或者“#”字符包括到模式中去。

反斜线的第二种用途提供了一种在模式中以可见方式去编码不可打印字符的方法。并没有不可打印字符出现的限制,除了代表模式结束的二进制零以外。但用文本编辑器来准备模式的时候,通常用以下的转义序列来表示那些二进制字符更容易一些:



\a
alarm,即 BEL 字符(0x07)

\cx
"control-x",其中 x 是任意字符

\e
escape(0x1B)

\f
换页符 formfeed(0x0C)

\n
换行符 newline(0x0A)

\r
回车符 carriage return(0x0D)

\t
制表符 tab(0x09)

\xhh
十六进制代码为 hh 的字符

\ddd
八进制代码为 ddd 的字符,或 backreference


“\cx”的精确效果如下:如果“x”是小写字母,则被转换为大写字母。接着字符中的第 6 位(0x40)被反转。从而“\cz”成为 0x1A,但“\c{”成为 0x3B,而“\c;”成为 0x7B。

在“\x”之后最多再读取两个十六进制数字(其中的字母可以是大写或小写)。在 UTF-8 模式下,允许用“\x{...}”,花括号中的内容是表示十六进制数字的字符串。原来的十六进制转义序列 \xhh 如果其值大于 127 的话则匹配了一个双字节 UTF-8 字符。

在“\0”之后最多再读取两个八进制数字。以上两种情况下,如果少于两个数字,则只使用已出现的。因此序列“\0\x\07”代表两个二进制的零加一个 BEL 字符。如果是八进制数字则确保在开始的零后面再提供两个数字。

处理反斜线后面跟着一个不是 0 的数字比较复杂。在字符类之外,PCRE 以十进制数字读取该数字及其后面的数字。如果数字小于 10,或者之前表达式中捕获到至少该数字的左圆括号,则这个序列将被作为逆向引用。有关此如何运作的说明在后面,以及括号内的子模式。

在字符类之中,或者如果十进制数字大于 9 并且之前没有那么多捕获的子模式,PCRE 重新从反斜线开始读取其后的最多三个八进制数字,并以最低位的 8 个比特产生出一个单一字节。任何其后的数字都代表自身。例如:



\040
另一种表示空格的方法

\40
同上,如果之前捕获的子模式少于 40 个的话

\7
总是一个逆向引用

\11
可能是个逆向引用,或者是制表符 tab

\011
总是表示制表符 tab

\0113
表示制表符 tab 后面跟着一个字符“3”

\113
表示八进制代码为 113 的字符(因为不能超过 99 个逆向引用)

\377
表示一个所有的比特都是 1 的字节

\81
要么是一个逆向引用,要么是一个二进制的零后面跟着两个字符“8”和“1”


注意八进制值 100 或更大的值之前不能以零打头,因为不会读取(反斜线后)超过三个八进制数字。

所有的定义了一个单一字节的序列可以用于字符类之中或之外。此外,在字符类之中,序列“\b”被解释为反斜线字符(0x08),而在字符类之外有不同含义(见下面)。

反斜线的第三个用法是指定通用字符类型:



\d
任一十进制数字

\D
任一非十进制数的字符

\s
任一空白字符

\S
任一非空白字符

\w
任一“字”的字符

\W
任一“非字”的字符


任何一个转义序列将完整的字符组合分割成两个分离的部分。任一给定的字符匹配一个且仅一个转义序列。

“字”的字符是指任何一个字母或数字或下划线,也就是说,任何可以是 Perl "word" 的字符。字母和数字的定义由 PCRE 字符表控制,可能会根据指定区域的匹配而改变(见上面的“区域支持”)。举例说,在 "fr" (French) 区域,某些编码大于 128 的字符用来表示重音字母,这些字符能够被 \w 所匹配。

这些字符类型序列可以出现在字符类之中和之外。每一个匹配相应类型中的一个字符。如果当前匹配点在目标字符串的结尾,以上所有匹配都失败,因为没有字符可供匹配。

反斜线的第四个用法是某些简单的断言。断言是指在一个匹配中的特定位置必须达到的条件,并不会消耗目标字符串中的任何字符。子模式中更复杂的断言的用法在下面描述。反斜线的断言有:



\b
字分界线

\B
非字分界线

\A
目标的开头(独立于多行模式)

\Z
目标的结尾或位于结尾的换行符前(独立于多行模式)

\z
目标的结尾(独立于多行模式)

\G
目标中的第一个匹配位置

正则表达式

表 1. 常见 regex 操作符
操作符 用途
.(句点) 匹配所有单个字符
^(脱字符号) 匹配出现在行或字符串开头的空字符串
$(美元符号) 匹配出现在行尾的空字符串
A 匹配大写字母 A
a 匹配小写字母 a
\d 匹配所有一位数字
\D 匹配所有单个非数字字符
\w 匹配所有单个字母或数字字符;同义词是 [:alnum:]
[A-E] 匹配所有大写的 A、B、C、D 或 E
[^A-E] 匹配除大写 A、B、C、D 或 E 之外的任何字符
X? 匹配出现零次或一次的大写字母 X
X* 匹配零个或多个大写字母 X
X+ 匹配一个或多个大写字母 X
X{n} 精确匹配 n 个大写字母 X
X{n,m} 至少匹配 n 个且不多于 m 个大写字母 X;如果忽略 m,则表达式将尝试匹配至少 n 个 X
(abc|def)+ 匹配一连串的(最少一个)abc 和 def;abc 和 def 将匹配


php下的:
正则表达式的特殊字符:
正则表达式中的特殊字符分为元字符、定位字符等等。
元字符是正则表达式中一类有特殊意义的字符,用来描述其前导字符(即元字符前面的字符)在被匹配的对象中出现的方式。元字符本身是一个个单一的字符,但是不同或者相同的元字符组合起来可以构成大的元字符。
元字符:
大括号:大括号用来精确指定匹配元字符出现的次数,例如”/pre{1,5}/”表示匹配的对象可以是”pre”、”pree”、”preeeee”这样在”pr”后面出现1个到5个”e”的字符串。或者”/pre{,5}/”代表pre出现0此到5次之间。
加号:”+”字符用来匹配元字符前的字符出现一次或者多次。例如”/ac+/”表示被匹配的对象可以是”act”、”account”、”acccc”等在”a”后面出现一个或者多个”c”的字符串。”+”相当于”{1,}”。
星号:”*”字符用来匹配元字符前的字符出现零次或者多次。例如”/ac*/”表示被匹配的对象可以是”app”、”acp”、”accp”等在”a”后面出现零个或者多个”c”的字符串。”*”相当于”{0,}”。
问号:”?”字符用来匹配元字符前的字符出现零次或者1次。例如”/ac?/”表示匹配的对象可以是”a”、”acp”、”acwp”这样在”a”后面出现零个或者1个”c”的字符串。”?”在正则表达式中还有一个非常重要的作用,即”贪婪模式”。
还有两个很重要的特殊字符就是”[ ]“。他们可以匹配”[]“之中出现过的字符,比如”/[az]/”可以匹配单个字符”a”或者”z”;如果把上面的表达式改成这样”/[a-z]/”,就可以匹配任何单个小写字母,比如”a”、”b”等等。
如果在”[]“中出现了”^”,代表本表达式不匹配”[]“内出现的字符,比如”/[^a-z]/”不匹配任何小写字母!并且正则表达式给出了几种”[]“的默认值:
[:alpha:]:匹配任何字母
[:alnum:]:匹配任何字母和数字
[:digit:]:匹配任何数字
[:space:]:匹配空格符
[:upper:]:匹配任何大写字母
[:lower:]:匹配任何小写字母
[:punct:]:匹配任何标点符号
[:xdigit:]:匹配任何16进制数字
另外下面这些特殊字符在转义符号”"转义后代表的含义如下:
s:匹配单个的空格符
S:用于匹配除单个空格符之外的所有字符。
d:用于匹配从0到9的数字,相当于”/[0-9]/”。
w:用于匹配字母,数字或下划线字符,相当于”/[a-zA-Z0-9_]/”。
W:用于匹配所有与w不匹配的字符,相当于”/[^a-zA-Z0-9_]/”。
D:用于匹配任何非10进制的数字字符。
.:用于匹配除换行符之外的所有字符,如果经过修饰符”s”的修饰,”.”可以代表任意字符。
利用上面的特殊字符可以很方便的表达一些比较繁琐的模式匹配。例如”/d0000/”利用上面的正则表达式可以匹配万以上,十万一下的整数字符串。
定位字符:
定位字符是正则表达式中又一类非常重要的字符,它的主要作用是用于对字符在匹配对象中的位置进行描述。
^:表示匹配的模式出现在匹配对象的开头(和在”[]“里面不同)
$:表示匹配的模式出现在匹配对象的末尾
空格:表示匹配的模式出现在开始和结尾的两个边界之一
“/^he/”:可以匹配以”he”字符开头的字符串,比如hello、height等等;
“/he$/”:可以匹配以”he”字符结尾的字符串即she等;
“/ he/”:空格开头,和^的作用一样,匹配以he开头的字符串;
“/he /”:空格结束,和$的作用一样,匹配以he结尾的字符串;
“/^he$/”:表示只和字符串”he”匹配。
括号:
正则表达式除了可以用户匹配,还可以用括号”()”来记录需要的信息,储存起来,给后面的表达式读取。比如:
/^([a-zA-Z0-9_-]+)@([a-zA-Z0-9_-]+)(.[a-zA-Z0-9_-])$/
就是记录邮件地址的用户名,和邮件地址的服务器地址(形式为username@server.com之类的),在后面如果想要读取记录下来的字符串,只是需要用”转义符+记录的次序”来读取。比如”1〃就相当于第一个”[a-zA-Z0-9_-]+”,”2〃相当于第二个([a-zA-Z0-9_-]+),”3〃就是第三个(.[a-zA-Z0-9_-])。但是在PHP中,”"是一个特殊的字符,需要转义,所以”"到了PHP的表达式中就应该写成”1〃。
其他特殊符号:
“|”:或符号”|”和PHP里面的或一样,不过是一个”|”,而不是PHP的两个”||”!意思就是可以是某个字符或者另一个字符串,比如”/abcd|dcba/”可能匹配”abcd”或者”dcba”。

Thursday, June 4, 2009

Symfony studying on day4

1. use stylesheet in the template.
<!-- apps/frontend/modules/job/templates/indexSuccess.php --> <?php use_stylesheet('jobs.css') ?> <!-- apps/frontend/modules/job/templates/showSuccess.php --> <?php use_stylesheet('job.css') ?>
2. display date.
$job->getCreatedAt('m/d/Y');

3. how to use slot:
1) // apps/frontend/modules/job/templates/showSuccess.php
<?php slot( 'title', sprintf('%s is looking for a %s', $job->getCompany(), $job->getPosition())) ?>

2) // apps/frontend/modules/job/templates/showSuccess.php <?php slot('title') ?> <?php echo sprintf('%s is looking for a %s', $job->getCompany(), $job->getPosition()) ?> <?php end_slot(); ?>

3) // apps/frontend/templates/layout.php
<title> <?php if (!include_slot('title')): ?> Jobeet - Your best job board <?php endif; ?> </title>

4) <?php include_slot('title') ?>
<?php echo get_slot('title') ?>

<?php include_stylesheets() ?>

<?php echo get_stylesheets() ?>

3. forward 404
1) class jobActions extends sfActions { public function executeShow(sfWebRequest $request) { $this->job = JobeetJobPeer::retrieveByPk($request->getParameter('id')); $this->forward404Unless($this->job); }

2) $this->forward404If(!$this->job);

3) which is also equivalent to:

if (!$this->job) { $this->forward404(); }

The forward404() method itself is just a shortcut for:

$this->forward('default', '404');

Symfony studying on day3

$ php symfony propel:generate-module --with-show --non-verbose-templates frontend job JobeetJob

propel:generate-module 命令为工作模型JobeetJob 在frontend应用程序中生成了名为 job的模块。和大多数symfony命令一样,它在apps/frontend/modules/job 下创建了一些文件和目录
generate a module including action and template.

Directory Description
actions/ The module actions
templates/ The module templates

The actions/actions.class.php file defines all the available action for the job module:

Action name Description
index Displays the records of the table
show Displays the fields and their values for a given record
new Displays a form to create a new record
create Creates a new record
edit Displays a form to edit an existing record
update Updates a record according to the user submitted values
delete Deletes a given record from the table

Friday, May 29, 2009

Join, left join, right join的区别

通俗的讲:  

   A   
left   join    B    的连接的记录数与A表的记录数同  

   A   
right   join    B    的连接的记录数与B表的记录数同    


   A   
left   join    B    等价B   right   join    A  

   

   


  
table    A:  

   Field_K,    Field_A  

  
1                        a  

  
3                        b  


  
4                        c  

   

  
table    B:  

   Field_K,    Field_B  


  
1                        x  

  
2                        y  

  
4                        z  

   


  
select    a.Field_K,    a.Field_A,    b.Field_K,    b.Field_B  

  
from    a   left   join    b   on    a.Field_K=b.Field_K  


   

   Field_K          Field_A          Field_K          Field_B          

  
----------    ----------    ----------    ----------    


  1                      a                     1                      x                    

  
3                      b                     NULL               NULL  

  
4                      c                     4                      z                    


   

  
select    a.Field_K,    a.Field_A,    b.Field_K,    b.Field_B  

  
from    a   right   join    b   on    a.Field_K=b.Field_K  


   

   Field_K          Field_A          Field_K          Field_B          

  
----------    ----------    ----------    ----------    


  1                      a                     1                      x                    

  
NULL               NULL               2                      y                    

  
4                      c                     4                      z      --



举个例子:  

   假设a表和b表的数据是这样的。  

   a                          b    

   id      name  id      stock   


  
1  a             1         15  

  
2          b             2         50  

  
3          c                   


   

  
select   *   from    a   inner   join    b   on    a.id=b.id  


   这个语法是连接查询中的内连接,它产生的结果是  

   两个表相匹配的记录出现在结果列表中。  

   根据上面的表,出现的结果是这样的  

   a.id      name      b.id      stock  


  
1        a             1         15  

  
2              b             2         50  

  
----------------------------  


  select   *   from    a,b   where    a.id=b.id  

   这个语法是内连接的另外一种写法,其执行结果与inner   
join    一样  


   

  
--------------------------------    

   

  
select   *   from    a   left/right   join    b   on    a.id=b.id  


   这个是外连接语法中的左外连接或右外连接  

   如果是左外连接的话,它将显示a表的所有记录,  

  
select    a.*,b.*   from    a   left   join    b   on    a.id=b.id  


   查询的结果是这样的:  

   a.id      name      b.id      stock  

  
1          a         1             15  


  
2                b         2             50  

  
3                c       null         null   

  
--------------------------------------------  


   如果是右外连接的话,它将显示b表的所有记录,  

  
select    a.*,b.*   from    a   right   join    b   on    a.id=b.id  


   查询的结果是这样的:  

   a.id      name      b.id      stock  

  
1          a         1             15  


  
2                b         2             50   




--

select    a.*,b.*   from    a   left   join    b   on    a.k   =    b.k    


  
select    a.*,b.*   from    a   left   outer   join    b   on    a.k   =b.k  


  
----------上面两种一样left    join是left    outer    join的简写  

  select    a.*,b.*   from    a   left   inner   join    b   on    a.k   =    b.k    


   没有这种写法,错误的语句.




--

在你要使用多个left    join的时候  

   比如说10个  


   我们把10个全都写成left    join的形式  

   然后再SQL让他自动运行一下,它会把最后一次出现的left    join变成left   
outer   join  

   所以依此推理,最后一个left    join会以left   
outer    join的形式存在  


   当然,不管变不变对结果的显示没有任何影响  

   希望我的实验能对你有所帮助