中文姓氏对应英文写法一览表

June 13th, 2008

A:
艾――Ai
安――Ann/An
敖――Ao

B:
巴――Pa
白――Pai
包/鲍――Paul/Pao
班――Pan
贝――Pei
毕――Pih
卞――Bein
卜/薄――Po/Pu
步――Poo
百里――Pai-li

C:
蔡/柴――Tsia/Choi/Tsai
曹/晁/巢――Chao/Chiao/Tsao
岑――Cheng
崔――Tsui
查――Cha
常――Chiong
车――Che
陈――Chen/Chan/Tan
成/程――Cheng
池――Chi
褚/楚――Chu
淳于――Chwen-yu

D:
戴/代――Day/Tai
邓――Teng/Tang/Tung
狄――Ti
刁――Tiao
丁――Ting/T
董/东――Tung/Tong
窦――Tou
杜――To/Du/Too
段――Tuan
端木――Duan-mu
东郭――Tung-kuo
东方――Tung-fang

E:

F:
范/樊――Fan/Van
房/方――Fang
费――Fei
冯/凤/封――Fung/Fong
符/傅――Fu/Foo

G:
盖――Kai
甘――Kan
高/郜――Gao/Kao
葛――Keh
耿――Keng
弓/宫/龚/恭――Kung
勾――Kou
古/谷/顾――Ku/Koo
桂――Kwei
管/关――Kuan/Kwan
郭/国――Kwok/Kuo
公孙――Kung-sun
公羊――Kung-yang
公冶――Kung-yeh
谷梁――Ku-liang

H:
海――Hay
韩――Hon/Han
杭――Hang
郝――Hoa/Howe
何/贺――Ho
桓――Won
侯――Hou
洪――Hung
胡/扈――Hu/Hoo
花/华――Hua
宦――Huan
黄――Wong/Hwang
霍――Huo
皇甫――Hwang-fu
呼延――Hu-yen

I:

J:
纪/翼/季/吉/嵇/汲/籍/姬――Chi
居――Chu
贾――Chia
翦/简――Jen/Jane/Chieh
蒋/姜/江/――Chiang/Kwong
焦――Chiao
金/靳――Jin/King
景/荆――King/Ching
讦――Gan

K:
阚――Kan
康――Kang
柯――Kor/Ko
孔――Kong/Kung
寇――Ker
蒯――Kuai
匡――Kuang

L:
赖――Lai
蓝――Lan
郎――Long
劳――Lao
乐――Loh
雷――Rae/Ray/Lei
冷――Leng
黎/郦/利/李――Lee/Li/Lai/Li
连――Lien
廖――Liu/Liao
梁――Leung/Liang
林/蔺――Lim/Lin
凌――Lin
柳/刘――Liu/Lau
龙――Long
楼/娄――Lou
卢/路/陆鲁――Lu/Loo
伦――Lun
罗/骆――Loh/Lo/Law/Lam/Rowe
吕――Lui/Lu
令狐――Lin-hoo

M:
马/麻――Ma
麦――Mai/Mak
满――Man/Mai
毛――Mao
梅――Mei
孟/蒙――Mong/Meng
米/宓――Mi
苗/缪――Miau/Miao
闵――Min
穆/慕――Moo/Mo
莫――Mok/Mo
万俟――Moh-chi
慕容――Mo-yung

N:
倪――Nee
甯――Ning
聂――Nieh
牛――New/Niu
农――Long
南宫――Nan-kung

O:
欧/区――Au/Ou
欧阳――Ou-yang

P:
潘――Pang/Pan
庞――Pang
裴――Pei/Bae
彭――Phang/Pong
皮――Pee
平――Ping
浦/蒲/卜――Poo/Pu
濮阳――Poo-yang

Q:
祁/戚/齐――Chi/Chyi/Chi/Chih
钱――Chien
乔――Chiao/Joe
秦――Ching
裘/仇/邱――Chiu
屈/曲/瞿――Chiu/Chu

R:
冉――Yien
饶――Yau
任――Jen/Yum
容/荣――Yung
阮――Yuen
芮――Nei

S:
司――Sze
桑――Sang
沙――Sa
邵――Shao
单/山――San
尚/商――Sang/Shang
沈/申――Shen
盛――Shen
史/施/师/石――Shih/Shi
苏/宿/舒――Sue/Se/Soo/Hsu
孙――Sun/Suen
宋――Song/Soung
司空――Sze-kung
司马――Sze-ma
司徒――Sze-to
单于――San-yu
上官――Sang-kuan
申屠――Shen-tu

T:
谈――Tan
汤/唐――Town/Towne/Tang
邰――Tai
谭――Tan/Tam
陶――Tao
藤――Teng
田――Tien
童――Tung
屠――Tu
澹台――Tan-tai
拓拔――Toh-bah

U:

V:

W:
万――Wan
王/汪――Wong
魏/卫/韦――Wei
温/文/闻――Wen/Chin/Vane/Man
翁――Ong
吴/伍/巫/武/邬/乌――Wu/NG/Woo

X:
奚/席――Hsi/Chi
夏――Har/Hsia/(Summer)
肖/萧――Shaw/Siu/Hsiao
项/向――Hsiang
解/谢――Tse/Shieh
辛――Hsing
刑――Hsing
熊――Hsiung/Hsiun
许/徐/荀――Shun/Hui/Hsu
宣――Hsuan
薛――Hsueh
西门――See-men
夏侯――Hsia-hou
轩辕――Hsuan-yuen

Y:
燕/晏/阎/严/颜――Yim/Yen
杨/羊/养――Young/Yang
姚――Yao/Yau
叶――Yip/Yeh/Yih
伊/易/羿――Yih/E
殷/阴/尹――Yi/Yin/Ying
应――Ying
尤/游――Yu/You
俞/庾/于/余/虞/郁/余/禹――Yue/Yu
袁/元――Yuan/Yuen
岳――Yue
云――Wing
尉迟――Yu-chi
宇文――Yu-wen

Z:
藏――Chang
曾/郑――Tsang/Cheng/Tseng
訾――Zi
宗――Chung
左/卓――Cho/Tso
翟――Chia
詹――Chan
甄――Chen
湛――Tsan
张/章――Cheung/Chang
赵/肇/招――Chao/Chiu/Chiao/Chioa
周/邹――Chau/Chou/Chow
钟――Chung
祖/竺/朱/诸/祝――Chu/Chuh
庄――Chong
钟离――Chung-li
诸葛――Chu-keh

MySQL优化/咨询/方案

April 16th, 2008

MySQL优化/咨询/方案

我们可以为企业提供 MySQL 和 LAMP(Linux+Apache+MySQL+PHP) 开发方面的顾问(Consulting)和培训(Training)服务。
我们精通 MySQL 的管理、设计、优化 — 尤其是 LAMP 开发架构中的方案设计、 MySQL 设计和优化等。

MySQL 性能优化

– 全方位的 MySQL 性能优化服务,包括硬件、操作系统优化配置,MySQL 优化配置、缓存、应用架构改进等。

LAMP 性能优化

– 有没有碰到网站越来越慢了却手足无措的情况?哦,很不巧,正好碰到了,那么,这正是我们所能帮您解决的。包括系统优化、Apache优化、PHP优化,以及缓存、加速、负载均衡等。

MySQL 高可靠方案

– 根据你的应用需求,定制灵活合理的高可用方案,包括 MySQL 复制(Replication),MySQL 集群(Cluster),负载均衡等。

MySQL 系统管理

– 包括系统安装、配置、安全、升级、备份、恢复,以及后期人员培训等,可提供远程服务。

高性能 LAMP 架构设计

– 如果你的网站刚好要开始了,那么,你应该需要一套合理的、高效的、高扩展的架构,这就是我们能帮您做到的。

关于我们

我们致力于帮助企业解决 LAMP 架构方面的问题,我们有多年的 LAMP 开发经验,在业务有较有声誉!

什么是运维?

April 4th, 2008

IT运维是IT管理的核心和重点部分,也是内容最多、最繁杂的部分,该阶段主要用于IT部门内部日常运营管理,涉及的对象分成两大部分,即IT业务系统和运维人员,该阶段的管理内容又可细分为七个子系统:

■ 设备管理:对网络设备、服务器备、操作系统运行状况进行监控

应用/服务管理:对各种应用支持软件如数据库、中间件、群件以及各种通用或特定服务的监控管理,如邮件系统、DNS、Web等的监控与管理

■ 数据/存储/容灾管理:对系统和业务数据进行统一存储、备份和恢复

■ 业务管理:包含对企业自身核心业务系统运行情况的监控与管理,对于业务的管理,主要关注该业务系统的CSF(关键成功因素Critical Success Factors)和KPI(关键绩效指标Key Performance Indicators)

■ 目录/内容管理:该部分主要对于企业需要统一发布或因人定制的内容管理和对公共信息的管理

■ 资源资产管理:管理企业中各IT系统的资源资产情况,这些资源资产可以是物理存在的,也可以是逻辑存在的,并能够与企业的财务部门进行数据交互

■ 信息安全管理:该部分包含了许多方面的内容,目前信息安全管理主要依据的国际标准是ISO17799,该标准涵盖了信息安全管理的十大控制方面,36个控 制目标和127中控制方式,如企业安全组织方式、资产分类与控制、人员安全、物理与环境安全、通信与运营安全、访问控制、业务连续性管理等

■ 日常工作管理:该部分主要用于规范和明确运维人员的岗位职责和工作安排、提供绩效考核量化依据、提供解决经验与知识的积累与共享手段IT运行维护管理的每 一个子系统中都包含着十分丰富的内容,实现完善的IT运维管理是企业提高经营水平和服务水平的关键。运行/维护阶段与服务/支持阶段的分界线为前者是面向 IT部门内部的管理,而后者是面向业务部门、企业中的其它人员或直接面向客户。

运维安全加固

April 4th, 2008

前言
安全加固在安全甚至运维领域,已经是一个大家都不再感到陌生的名字了。相当多的安全甚至集成公司,都会再项目工程中提供此类服务。我从事工作以来,也大大小小的实施了相当多次的安全加固工作,最近完成了一个大型运维环境的加固工作,积累了一些经验,现在记录下来与大家分享。
因为所属工作的原因,我不会透露具体的操作的技术细节,这点还希望大家能见谅,但是我会更多的阐述记录在项目操作中框架性思维和理念,同大家分享我的收获和经验。
背景
本次项目之所能称之为大型项目,主要是基于如下几个特点。
* 涉及的主机众多,总体主机数量在万台以上。
* 涉及业务情况复杂、数量众多,其中重点大业务有数百个,而旗下子业务更为种类繁多。
* 业务多为在线业务,对于中断的容忍度很低。
* 涉及部门多,光运维层面的部门会涉及10余个左右,横向沟通成本较大。
内容
困难
* 选用何种层面的加固技术,是系统层?应用配置层?IDS配合iptables联动?抑或是kernel patch?
* 涉及的主机多为在线业务,如何保证平滑切换。
* 横跨多个部门,如何协调各个部门的人力资源具有相当难度。
* 安全加固本身是叫好不叫座的东西,在完成项目后如何体现安全加固的效果?
* 在自身进行了大量技术考量后,如何向技术部门验证你的说法,得到一线运维部门的支持?
思路
1. 争取运维线的上下层支持和理解。
2. 充分准备,数据支撑,取得认可。
3. 自动化部署,减轻工作量和误操作。
4. 充分考虑回退和规避运维风险。
5. 以点带面,分步骤部署。
准备阶段
安全加固项目的准备阶段主要的工作内容为,
* 确定项目组成和成员的职责
* 内容宣讲,介绍加固项目的工作内容。
* 了解安全需求,打消存在的顾虑,争取配合和支持。
* 对加固内容进行测试,后续工程中需要配合工具和文档进行准备。
人员准备
人员准备可讲的东西不多,从这次操作中较多的体会是,项目组中最好能配备一个具有编写脚本能力的人,减小大规模主机部属时碰到的巨大工作量。其次,人员不在于多,PM的沟通能力要很强,具有较强的破冰和应变能力。项目组能够阶段性引入实施部门的Teamleader ,在实施时会极大地提高执行力。
宣讲和破冰
在安全项目中,最常见的问题就是实施方和相关的配合人员,因关注点不同而导致的分歧。项目中安全人员关注的是如何按时完成项目,保证自身的安全项目内容得以实现。而参与实施配合得人员关注点主要集中在。
* 加固是否会影响业务系统的正常运行。
* 加固是否会带来业务上的中断。
* 加固是否会给系统带来性能上的影响。
* 加固实施是否会带来大量的工作量和挤占大量的时间。
* 加固后运维工作是否会在操作上十分不便。
* 加固后的主机是否会会在安全上和现有水平相比,有很大提升。
此时整个项目的主要矛盾是相关人员对加固没有了解,不清楚项目可能会带来哪些“利”、“弊。
因此需要通过会议等方式,向各个部门的Leader ,骨干进行加固方面的知识介绍和内容宣讲。
首先,为了验证自身说法的科学性,前期测试需要通过数据证明各种影响的具体数值,并给出目前的数值进行比较。根据数据同运维线沟通,商讨性能等指标容忍基线。
其次,项目在设计时要充分考虑业务中断、性能的影响。本次操作中我,在初始设计上规避重起等可能造成中断的行为,并出具了性能评估报告,比较图谱等进行性能影响验证。为了使报告具有说服力,应尽量争取将被实施部门提供样机(或选取明星部门的主机),以便采集数据得到较大范围的认可。
再次,我在本次加固项目中,实施采取自动化脚步、程序的模式进行。事先设置好加固项的配置文件后,执行安装脚本自动化部署,尽量避免部署所带来的时间和人力成本(Windows下安装应用程序亦是此类思想)。
同时此类自动化部署,十分有利于在短时间内批量部署大规模主机。 而且脚本应具有很强的回退功能,能通过执行脚步达到完全回退的目的。(当然回退功能的自保护能力应该很强 :))
同时,提供一份加固影响表,将每项加固内容可能带来的影响进行描述,并且在实施中时时更新此表,并同步收集故障案例,作为培训资料。
最后,加固效果的验证本身存在一定的困难,前期可以采用制作演示录像,PPT讲解等方式,后期进行培训时,可以构建一些演练环境进行展示。
总结一下,此阶段主要是对加固框架内容进行修正,同时向各个部门传导加固意识,打消顾虑,寻求领导层支持和理解,也为后面的大规模实施打下基础。
实施和尝试
经过前一阶段的准备和沟通,基本达成了如下效果。
* 各个部门在部门领导和骨干级知晓了解了安全加固的内容。
* 对安全加固内容的安全提升有了认可。
* 对于安全加固方面可能造成的影响有了一定认识。
* 熟悉安全加固项目中的项目组成员和每个成员的职责。
* 清楚地知悉安全加固不会带来很大工作量。并且是必须要操作的一个安全工程项目。
在此基础上,整个项目的主要矛盾点已经由对项目不了解,工作量可能的负担,转变为了安全加固是否给运维带来风险。
1. 针对主要矛盾上的变化,整个项目调整进入实施和尝试阶段。在此阶段 ,主要工作从各个部门抽取主机,进行初步的加固试运行。试运行的主要目的是:
2. 验证稳定性,因为此阶段运维人员重点关注稳定性,所以从项目组侧应保证,实施的加固大多数情况下,确实可以保证技术层面的稳定;如果一旦出现问题,响应时间解决问题的态度要到位;选取主机要具有代表性和一定的数量,这样在数据上才会有说服力和验证效果。
3. 进行项目磨合,此时是熟悉配合人员的最好阶段,同时也为项目组提供了后期部署的演练机会。因为此阶段时间压力小,因此应尽可能多的让项目组组员熟悉各个环节(让每个成员都可以互为备份),并对操作流程进行演练修正。
4. 试验主机的选取,我采用的方式为典型主机选取方法,一般会选取如下类型的主机:
* 典型角色,选取的主机在业务架构上是典型角色,如一个游戏中,前台的应用服务器,Cache服务器,DB等,各抽取一台。
* 负载特征明显,系统负载上有较多代表性的主机,如高IO访问量的主机,高并发session主机,高CPU占用,高内存占用的主机。
* 充分尊重运维人员的意见,抽取试验的目的,最终还是为了通过在有代表性主机的试运行,能提前发现隐患,避免可能的问题。因此抽取何种主机方面,熟悉实际环境的运维人员的意见十分值得参考。
* 架构上冗余,考虑到试运行可能带来的风险,选取主机应尽量选取架构上提供冗余支持的主机,不要在可能出现单点故障的主机上实施。
如果在试验阶段出现大型事故,那么此项目推行的难度将会几何级上升,因此此阶段一定要慎重,同时PM要具有在基层消化小型问题的能力,避免一般性问题因人为因素被放大升级。
总结,此阶段主要是通过沟通,争取一小批具有代表性的主机参加试运行,观察实际运行效果,安全人员对试验情况进行跟踪,对发现的问题进行修正。同时锻炼队伍,准备下一阶段的大规模部署
全面展开
通过前一阶段的工作,基本可以到达如下效果
* 业务部门领导到技术层对于整个加固的稳定性有了初步认可。
* 参与配合的实际运维人员对于操作方法、流程和人员有了熟悉和操作经验。
* 加固项目在加固内容上可能存在的问题和不兼容基本被消化。
* 加固项目组内技术人员得到锻炼,能应付一般突发情况,并对各个部门的业务结构、人员组成结构相当的认识和了解。
此阶段主要矛盾也有对于加固内容的稳定性的担心,逐渐转化为对工程操作方法不了解,以及担心在后续工作中可能碰到未知问题,所造成的不安。
因此该阶段的重点为。
* 同运维部门Leader和骨干共同回顾前期的项目进度和成果。
* 同运维部门骨干和部门领导确认回退方案,认可回退方案的可靠性和可行性。(这点是重中之重。
举例:
当加固后,运维中出现故障,是否为安全加固导致,往往会带来很多争论和工作量,尤其是如果因为此类故障,导致对加固稳定性的质疑,将直接影响整个工程的进度。如果能够双方认可回退方案,一旦出现问题,运维部门执行回退后,即可迅速定位是否是“加固造成的影响”,便于双方进行排障。
* 同运维部门就项目中的人员分工、操作内容、时间等进行落实,并进行备忘。
* 对新装主机加固纳入装机流程,保证后续上架主机全部闭合为“加固主机”。
* 对相关运维技术人员进行培训,重点在于回退技术的反复演练。并让运维部门领导了解到此技术,在部门内进行强化。
* 向运维技术人员表明态度,并做出行动,加固相关支持的将以持续性的姿态进行,不会在加固完结后终止。
* 组织“实战演练”,通过搭建模拟环境,让一线人员有机会操作实际工具,增加其操作和动手能力。
重点关注
因为此阶段将会完成整个实施过程的95%以上的加固工作,因此在部署时的技巧十分重要,部署实的几个大原则为:
* 阶梯式部署,部署之初应该采取逐步递增的方式,如分5个阶段,在3个月内部署3000台主机,可以采取如下步骤 1% —9% —10%—30%—50%。
* 选取角色考虑,在部署时应充分利用业务的冗余特性,尽量避免按照业务角色分类、分组,在一次部署时,选取单一角色的主机进行部署。如果部署时出现故障,那么整个业务都将受到影响,对用户提供的服务不得不中断。
因此不应该以业务系统为单位进行部署,而应该纵向切片进行部署,这样如果出现故障,即便部分节点不可用,但是由于同一角色服务器被分批次部署,提供了冗余,服务提供商依然可以为用户提供持续服务,如左图所示。
* 每完成一个阶段,如50% ,80%应该时时输出加固阶段性报告,对具体实施人员和相关部门Leader进行通告和知会。
* 此阶段应该注意收集加固效果体现的案例,作为阶段性报告输出和结项报告素材。
项目收尾完结
项目进入到此阶段,大部分主机完成加固,主要矛盾基本消失,主要工作集中在:
* 主要是对剩余主机做好加固收尾工作,不残留未加固主机,如果有特殊情况,需要进行文档备案。
* 整理项目资料,文档 、代码等进行封闭,不再进行改动,保存归档并进行备份。
* 酬谢相关配合Leader和技术人员。
* 发出结项报告,对于整个项目进行回顾,总结案例、加固成效和问题。
* 作为持续性安全工程,提出下一阶段的构想蓝图。
总结
曾经同朋友开玩笑说,通过此次项目的操作,我也许是加固主机最多的人之一了,当然在实际操作中涉及了更多的是PM的角色,主要是筹划、设计、推动等工作偏多,总结了一些项目操作的经验,从内容上看,此项目也许只能视为中小型项目,但从主机数目看,此项目绝对可以视为大型安全项目,因此我觉得其中积累的一些经验,应该还是有一定的成色,不妨写出来与大家分享。
项目中涉及的具体内容、技术细节、代码工具以及数字等数据,因为涉及敏感信息,不方便提供,还请大家原谅。如果大家有什么希望同我讨论的,欢迎同我Email联系,谢谢。

加尼尔CEO职位定理

March 9th, 2008

在发展战略上看,要么把现在的CEO换掉,要么在职CEO换掉他的想法!

关于加尼尔环境定义

March 9th, 2008

加尼尔是一个创业之地,创新之地。
同时也是实现梦想之地–鼓励创新,宽容失败。

在这里,我们不会看你的年龄

在这里,我们不会看你的学历

在这里,我们不会看你的背景

在这里,我们最看重的是你为加尼尔这支团队创造的价值

当你为这个团队创造的价值被认可了

它就会给你一方天地

让你有机会出人头地

这就是加尼尔!

如何成为一名伟大的,优秀的法律人

March 3rd, 2008

如何成为一名伟大的,优秀的法律人?

如何成为一名伟大的,优秀的法律人?
   郭国汀
   2003年2月和12月我分别应北京大学法学院和武汉大学法学院邀请,作了题为 “如何成为一名伟大的律师?”(北京大学) “如何成为一名优秀的律师?”以及 “国际贸易中的律师实务”和 “国际海上保险法律实务”(武汉大学)数场演讲.当时仅是口头演讲,所有的演讲稿就是一张纸上写明的“志,知,勤,信,友,勇,恒”七个字.北大听众约100余人,武大则300余学子.演讲现场反应热烈,演讲期间北大学子中途走了一人,武大走了三人(随后由于南郭眼露绿光,吓得剩余听众一个都不敢再溜之大吉!).因为此四名高材生不愿听狂妄如南郭者的瞎吹.近日读到郭小姐小结的我的讲演稿,非常感谢郭小姐费心费神.兹根据回忆整理出下述稿件,供诸位朋友批评嘲讽.当然赞扬赞美吾同样爱听!
   “志,知,勤,信,友,勇,恒”
   此七项要素缺一不可,只要照此做去,成功则是必然的.
   一. 志乃立志,志向,志气, 宏志之谓.惟有志向远大者,日后方有可能成就非凡的伟业.志宏高者未必都能成功,因还需主客观各方面的条件,但有可能成功;无志者或弱志者断无成功之理.很难设想一个胸无大志者,日后会有什么动地惊天的业绩.
   立志是成才的第一步,立志应受每个人自己的主客观条件制约,根据自己的兴趣爱好特长确立自己的奋斗目标.不想当元帅的士兵成不了好士兵.年青时的梦想往往是成年后的现实.大学生涯是一个人人生最美好的岁月,当然得争分夺秒地珍惜.
   志向远大是每个成功者的特征之一.当然社会不可能人人皆成功,有老板必然有雇员. “人生有苦水也有美酒,就看你怎样去追求.如果你勇敢地抬起了头,苦水也会变成美酒.”成功的人知道自己适合做什么,知道怎么做是最好,知道自己. “认识你自己” “我思故我在”.有人立志从政,有人喜欢娱乐;有人对思考乐此不疲,有人能言善辩,世上道路有无数,没有必要千军万马均走独木桥.
   志气或宏志当然是成功者必备之素质.志向远大才有可能成就大事.从小事做起,只有先将小事做好,才有可能干好大事;千万别成为大事干不了,小事不愿做的 “口头上的巨人,行动上的矮子.”而应做口头和行动上的巨人.至少也应做口头上的矮子行动上的巨人.
   人的志气志向随着时间的推移会发生变化.有些人志向越来越小,最终随波流,成为普通群众;这种人从人生的目标上看,是幸福的.他不必整天奋斗不已.只需以平常心过平静的生活和日子.有些人基本未变,只有那些真正伟大的人,他的志向则会越来越宏伟,可谓与时俱进.因为没有人生来的志向就是要成为世纪伟人.他的志向最终变得宏伟,是因为他克服了一个又一个困难最终实现了一个又一个奋斗目标,攀上人类思想珠峰.
   1993年我在<坎坷九年律师路>中写道:”我曾为自己设立过一个又一个的奋斗目标。入学伊始便把将来成为法学教授作为奋斗方向,打从当上律师那天起又立志要成为一名能在国际法庭代表中国利益的国际律师。为此招来不少冷嘲热讽,嘲我狂妄自大,讽我不知天高地厚。然而我却始终认为一个人的奋斗目标越远大,日后可能取得的成就也会越大。立志是成才的第一步,很难设想一个胸无大志、目光短浅的人日后会有什么惊天动地的业绩。回顾自己从一个走村串户的小木匠,到一名在穷乡僻壤接受那遥遥无期的再教育的知青,进而成为一名涉外律师所走过的路。我认为树立远大的理想并与祖国的事业相结合,以认真负责的态度勤奋努力地学习和工作,不屈不挠地奋斗进取,是每个成功者的必由之路。”
   我最早的理想(约8岁时)是当一名科学家,当年读的一本科幻小人书激发了我天真的想法;15岁时变成当一名专业长跑运动员,当年根本没有上大学之说,对黑九类子弟而言没有任何选择的余地;17岁时又想当一名产业工人,工人阶级领导一切呵,不过谁相信呢?18岁想当一名果树栽培专家,大有扎根农村干一辈子革命之势,其实那是由不得你,别无选择呀;22岁想当法学教授,好不容易逮着读大学的机会,能不珍惜吗?25岁立志在有生之年出版100部专译著,为的是与美国凯尔逊教授一比高低,当然有点不自量力,今生看来是无望了;26岁月时想当一名哲学家结果却因哲学沉思进了精神病院!27岁想当一名国际律师,但迄今英语仍仅学得个洋径浜,半通不通的;35岁我的理想又变成了”四百律师”.至于何谓”四百律师”?好像属于国家秘密,还是不说也罢,免得像郑恩宠律师一样弄个“非法窃取国家秘密罪”,可担当不起。至于45岁的今天,我的理想更属机秘了!.瞧,我的理想越来越宏伟,以致狂妄到竟敢在北京大学讲演劳什子”如何成为一名伟大的律师?!”还好我最担心的事(被学生们轰下讲台)在二个半小时的脱稿演讲中始终未发生,北大学子们还是以他们博大的胸怀,兼容并蓄的风格,容忍了我这么个不知天高地厚的,比当年那个辩子教授辜鸿鸣还要自命不凡的老家伙.
   吾以为人的理想随着时间的推移会发生巨大的变化,不过至少可分为三类:一是理想越变越现实目标越变越小,此类人有福了,至少不苦不累可以安享安娱舒适的天伦之乐;二是基本未变,此类人简直就是天才,一生下来就知道自己肩负的历史史命,以致能够“任尔天翻地覆,我自巍然不动”;三是越变越天真,目标越来越大,这种人进精神病院,当然是自找的,谁叫你不循规蹈矩.安分守己!不过,没有思想、理想的民族,注定是没有前途的;同理,没有思想、理想的人,与幸福的猪似乎也没有什么不同。
   二. 知及学识,知识,常识,专业知识之意.欲成就大业,就必须打好渊博的学识基础,基础越广博,精深,日后建树也就能越出类拨翠.知识不应限于法学,而应是全面的百科全书式的包罗万象的,归纳言有三大类:思维科学,自然科学,社会科学;具体言之:哲学,伦理学,社会学,人类学,生物学,美学,逻辑学,政治学,法学,心理学,文学,诗歌,散文,历史,天文,地理,数理化.各门各类知识都要有个基本了解,在此基础上应在有限的几种专业上精通.成为专家.
   “知识就是力量”.知识在一定层次上可以融会贯通.比如:数学与哲学相通,书法绘画也能反映作者的哲学思想.至于音乐家与哲学的关系更是密切.宗教与哲学也是密不可分.事实上大量自然科学家也是哲学家.当代许多自然科学家同时信奉基督等宗教.
   知识一般都是通过大量听说读写而来.实践经验得来的知识有限但较扎实,而通过阅读得来的间接经验知识似乎更为重要.处处留心皆学问.世上无难事,只怕有心人.书山有路勤为径,学海无涯爱作舟”.当可作为读书人的座佑铭
   知识与智慧,似乎知识更为重要.中国人的智慧在世界民族之林中应属名列前茅.但普通中国人明显缺乏各种科学知识甚至常识,即便所谓知识分子中无知者也不在少数(尤其在政治学社会学领域).实务中产生的中外争议,绝大多数中国人不知输在智上,而是败在知里.或许正因为中华文明过于古老,智慧太多,以至于中国人均很懂得玩小聪明,而缺大智慧.人人都富有智慧的社会,人人皆活得很艰苦.因为你聪明,他比你更聪明.你玩心计,他比你更会玩.因此中国人究竟是聪明还是笨,真是天知道.
   三. 勤乃勤奋,勤勉,敬业,负责之意.勤能补拙,勤能创造奇迹,懒惰则注定失败.勤奋并不意味着每24小时不睡觉地读书沉思默想,也非不能劳逸结合,有张有弛地勤奋学习读书工作;古训云: “书山有路勤为径,学海无涯苦作舟”.改’苦’为’爱’即可.因为爱好是最好的老师.一个人能从事自己所喜欢热爱的职业,学习自己热爱的专业,读爱读的书,那是人生最大的快事,没有理由学不好,没有什么做不到.
   唯有勤勤恳恳者,方有可能敬业,而敬业精神在任何行业中都是首要的美德.唯有敬业方有可能精业,只有敬业才有可能成为行业里的行家里手;也只有敬业,方有希望最终成为大师大家.
   负责实乃敬业者天然的品德.敢于负责是每个成功人士的财富.敢想敢干敢负责,虽然失败挫折难,然最终定有水到渠成的一天.遇到困难失败只会推卸责任甚至逃避自已应当承担的责任者,上天都会严惩之,三尺之内有神明.因为不敢负责者绝不可能赢得人们的信任.更不可能委以重任.
   四. 信及诚信,自信,信仰,信用,信誉之意.诚信是人类最大的美德.狡诈能骗人于一时一事,能骗大众于一时,骗少数人于永远,但决不可能骗大众于永远.因此诚实从战略上看,是最好也是最有效的策略.有诚则有信,诚信者人不助之天亦助之.
   自信是非常重要的主观心理素质,在任何情况下都应当自信,相信你自己!走自己的路任他人说去吧!没有信心者,缺乏自信者断无成功之理.其实人的主观心理态度对人的学习工作的影响巨大.一个人是否高兴或是悲观失望,很大程度上取决于他的自我精神状态.往往是外界情况一样但由于人采取的主观心态不一,导致绝然不同的后果.
   信仰是一种神奇的力量.自人类诞生以来,信仰便一直是主导人类精神的一股强大的力量.在精神思想市俗社会各方面均有不容忽视的影响.正因为信仰具有此种不可思议的强大力量,因此宗教信仰才会吸引全世界那么多人趋之若鹜.信仰自由亦是人类基本人权.当年英国清教徒正是受迫害才不远万里远涉重洋投奔自由.信仰共产主义或是信仰基督或是佛教或是什么这功那轮会么的,应当是人们的自由,政府不应强制干涉,更不应动用国家强制力暴力弹压.即便是歪教,也应当有科学真理去战胜之,迷信用暴力消灭人类的信仰者,不是无知就是别有用心.历史的事实反复告诉我们.思想问题唯有用思想方法才有可能解决.宗教问题当然也只能用宗教的方式才有可能协调.
   信用信誉当然至关重要,做任何事首先是做人,一般而言,事业成功者都是很懂为人之道的言主必信,行必果.可能一时一事吃亏,失利,但总体上长期看则必定会有丰厚的回报.有不少人急功近利,急于求成以至不顾信用,不讲信誉使出诈骗手段.最终必定得不偿失.名誉乃人们安身立命之本.因此一定要注重自己的名誉信用.当今之世中国人之间普遍缺乏诚信,信誉;这是长期以来当局奉行的奴化教育,愚民政策,单一思想一统天下外加暴力压制的必然恶果.
   五. 友指友谊,友善,友爱,友情,益友良友,说白些则是指社会交际层面的社交关系.有良好的人间关系,是从事任何事业成功的一项必备前提条件.朋友多多益善,公共关系,社会关系,互相帮助或从功利角度言则是相互利用关系.所谓一个好汉三个帮正是此理.善于用人充分利用各种关系来达到自已的目的.但任何时侯都应有个底线:公道,正义,人性.越过此底线那怕有黄金万两也不应去谋取.金钱本身外之物,人赤条条地来到世间,最终无论高官显贵,皇亲国戚,还是平头百姓,草民残民,皆摆脱不了赤条条地去的自然规律.那么又何必呢?

朋友多了路好走,功利型的朋友,君子之交淡如水的至友,对你的事业有帮助的朋友,拉你下水的酒肉朋友,白道黑道朋友,都有规则,都应遵守游戏规则,正所谓盗亦有道. “天道至大,易道天成”.此话有深意.
   读书人最容易在此问题上失利,因为不愿意花时间在无趣的社交活动中,不想花时间在交际上.认为浪费了宝贵的时间.有此种想法者大有人在,但社会是由人组成的,人的成功实际上至少85%取决于人际关系.因此不可不重视.关系学社交学是一门高级学问,而且是一门实践的学问.必须重视.
   六. 勇指勇气,勇敢,勇为,勇往直前,勇于承担责任,勇于面对任何艰难困苦,勇于承受各种压力.这些同样是成就大事业的基础.大智大勇.有勇有谋.勇气是男性的特权,是雄性的特征.刚毅果敢,敢做敢当是男子汉大夫英雄气概的体现.当然勇并非指蛮勇,也非指有勇无谋的李奎式鲁勇.面对各种困难,各种艰险敢想敢干;对于来自各方面的高压,来自当权者,来自黑社会的威胁敢于抗争勇于斗争.这需要道德勇气,不畏强权唯真理唯大,一切唯真理是从.因为真理最终定能战胜一切谬误.勇敢应当建立在志知勤信友之基础上,无私才能无畏,大智才能大勇.我之所以敢为郑恩宠律师辩护,是因为有股勇气充胸间.
   七. 恒指恒心,恒久,永恒,百折不挠.水泣石穿,绳锯木断皆源于恒字.三天打鱼两天晒网,五分钟热情那怕高达1000度,三板斧,朝秦暮楚必将一事无成.皆缺恒心.恒心是非常重要的素质.只要人有恒,万事皆可成.恒心的力量惊人.人类历史上成大业者往往并非那些最聪颖的天之骄子,而是那些资质平凡但具有非凡恒心的人.他们认准一个目标后便专心致志,全心全意为之奋斗不已.
   一个人如果具备了上述七方面的素质,他便具备了成功的基本要件,此外,道德感正义心社会责任感是必不可少的;当然要真正成功还得看天时地利人和三方面的主客观条件.只要他或她坚持不懈不掘不挠地努力奋斗,日后必定成功,一切仅是时间或机会问题而已.而机会是为那些有所准备的人提供的.
 

人生感悟之我的告白

March 3rd, 2008

最近有些同事似乎对我颇有成见,指责我卖弄,吹嘘,年纪太轻,太狂等;其实我真诚欢迎批评,批判,特别是有具体内容有独到见解的批评.理解支持我的同事,这些令我感动,使我深受鼓舞,因为我不再孤独,因为有同道;批评指责我的同事,仍然是朋友,因为你们使我更加了解我自己,时时提醒自己学无止境,不要不知天高地厚,天外有天,个人是微不足道的;我的思想源于我独立思考的产物,或许不是正确,也许没有高深莫测的理论支撑,可能与身边的思想格格不入.这几年我对自己的思想却坚信不移并付诸实践,多少已证明我当年的思想绝大多数是正确的.如今业已取得一些小小的成就,足以鼓励我继续向前.

PHP设计模式之观察者模式实现DEMO

March 2nd, 2008

<?php
/**
 * Jiania之观察者模式实现DEMO
 *
 * @package SPL
 * @subpackage SPL_SpLObserver
 * @author Jiania J Hung<jiania@gmail.com>
 * @since PHP5.1.x
 * @copyright http://www.jiania.com
 *
 */
class boy implements SplObserver
{
 private $name;
 
 public function __construct($name)
 
 {
  $this->name=$name;
 }
 
 public function update(SplSubject $subject)
 {
  echo  $this->name.” Says:I love you.\n”;
 }
}

class girl implements SplObserver
{
 private $name;
 
 public function __construct($name)
 {
  $this->name=$name;
 }
 public function update(SplSubject $subject)
 {
  echo  $this->name.”Says:I love you.\n”;
 }
}

class sweetie implements SplSubject
{
 private $name;
 private $people;
 private $state;
 
 public function __construct($name)
 {
  $this->people=new SplObjectStorage();
  $this->name=$name;
 }
 
 public function attach(SplObserver $observer)
 {
  $this->people->attach($observer);
 }
 
 public function detach(SplObserver $observer)
 {
  $this->people->detach($observer);
 }
 
 public function notify()
 {
  foreach ($this->people as $person)
  {
   $person->update($this);
  }
 }
 
 function count()
 {
  return $this->people->count();
 }
 function contains($obj)
 {
  return $this->people->contains($obj);
 }

 public function getState()
 {
  return $this->state;
 }
 public function setState($state)
 {
  return $this->state=$state;
 }
 public function getName()
 {
  return $this->name.”\n”;
 }
}
$sweetie=new sweetie(’Jiania family’);
$boy=new boy(’jiania’);
$girl=new girl(’dreamer’);
$sweetie->attach($boy);
$sweetie->attach($girl);
echo $sweetie->getState();
$sweetie->notify();

for与foeach,while等深入比较与研究

February 3rd, 2008

本文摘自<PHP编程思想>一书,版权属于洪建家所有,请尊重版权.

PHP编程思想之for,foreach,while,do-while深入讲解
初学编

1.1 for循环语句

for语句的格式为:

概念:for是计次数循环,其执行次数由循环变量的终值减去初值再除以步长得出.

for (初始化语句; 条件语句; 控制语句)
{
语句1 ;
语句2 ;
….

语句n ;
}
for 语句的执行顺序如下:
首先执行“初始化语句”,无条件被执行一次,然后测试“条件语句”
若条件成立,则执行语句1到语句n;然后执行“控制”语句.程序完成第一过程体.
接下来程序会再测试条件语句是否成立,如果成立则重复执行以上过程,直至条件不成立时才结束for循环.

DEMO:

demo 1写法

<?php

for($i=0;$i<10;$i++)
{
echo $i.”\r\n”;
}
?>

demo 2 写法

<?php
for($i=0;$i<10;$i++):
echo $i.”\r\n”;
endfor;
?>

demo 3 写法

<?php
$i=0;
for(;;)//注意初始化语句与条件语句与控件语句都为空
{
if($i>10){
break;
}
echo $i.”\r\n”;
$i++;
}
?>
1.2 foreach 循环

foreach (数组 as 数组值)
{
语句1 ;
语句2 ;
….

语句n ;

}
foreach (数组 as 数组键名 => 数组值)

{
语句1 ;
语句2 ;
….

语句n ;

}

注:
1.第二种写法主要是扩展第一种写法;
2.执行时,数组内部的指针会自动指向第一个单元,这意味着在做数组循环时不需要调用 reset()方法.程序结束后,指针返回数组尾端.
3.foreach 所操作的是指定数组的一个拷贝,而不是该数组本身,如果想改变数组,可以在执行之前用引用方法改变.
4.foreach 不支持用“@”来抑制错误信息的能力。
5.foreach 可以遍历对象

1.3 while 循环

while循环和for循环类似,其格式为:

while (条件语句)
{
语句1 ;
语句2 ;
….

语句n ;
}

解说:

执行while时,先测试“条件语句”,如果条件成立,则执行语句1到语句n,直至条件不成立时结束循环。

故如果当条件为false时,那么循环体一次都不会被执行.当循环体执行由True转变到False语句时,才会结束循环

DEMO:

demo 1写法
<?php
while ($i<10)
{
 $i++;
 echo $i”\r\n”;
}
?>

demo 2写法

<?php
while ($i<10):
{
 $i++;
 echo $i.”\r\n”;
}
endwhile;
?>

1.4 do-while循环
do
{
语句1 ;
语句2 ;
….

语句n ;
while(条件语句)
}

do-while与while 循环最大区别在于表达式的值是在每次循环结束时检查而不是开始时,所以 do-while 的循环体保证会执行一次.

demo

<?php
$i=9;
do {
    if ($i < 10) {
        echo $i.”\r\n”;
        break;
    }
} while(0);

未完,待继
?>

框架研究->基础知识

February 3rd, 2008

三层结构

1.表示层      (Presentation)
2.业务逻辑层  (Business Logic)
3.基础架构层  (Infrastructure)

五层架构

1.表示层      (Presentation)
2.控制/中介层 (Controller/Mediator)
3.领域层      (Domain)
4.数据持久层  (Data Persistence),解决对象与关系之间的不匹配问题
5.数据源层    (Data Source)

相关名词解释

COM(Component Object Model)组件对象模型或是元件物件模型,很多功能已被.NET取代

OLE(Oject Linking and Embedding)物件连结与嵌入

Widows操作系统提供三种应用程序间的通讯机制:1.剪贴簿:clipboard 2.DDE 3.OLE

ActiveX :在广义上是指微软公司的整个COM架构,但是现在通常用来称呼基于标准COM接口来实现对象连接与嵌入的ActiveX控件。

DAO(Data Access Object) 数据访问对象

DTO(Data Transfer Object)服务器端数据对象的抽象

ADO(AcitiveX Data Object) ActiveX数据对象

WOSA(Windows Open Services Architecture)微软公司开放服务结构

ODBC(Open Database Connectivity) 开放数据库互连,微软公司开放服务结构(WOSA)中有关数据库的一个组成部分

JDBC(Java Data Base Connectivity)java数据库连接

持久化:BMP,CMP 好处:可移植性,可扩展性,可维护性
CMP (Container-Managed Persistent)
BMP(Bean-Managed Persistent)

洪氏家族存在的意义与价值

February 1st, 2008

洪氏家族存在的意义与价值

活着意义:不断优化本族物种的生存能力,无止境开发本族物种各因素潜能!终生致力于保持其所属生命物种的最优势地位.
活着的地位:带领万物生长!鉴定本族物种一生功过是非标准:其一生是否比上一代更优化,其是否对万物或人类、本族有历史性的推动作用!
我洪氏家族必需用必生精力去研究探索
1.语言学 得至少掌握代表所在时代主流三种语言以上!这点是对本物族基本能力的最低要求!
2.管理学 因我本族人一生下来注定其是领军人物,所以得致力研究悟出针对所在时代的环境因素,创造有自已特色的方法论,并成功运用!
3.医学   精通自已构造,注重体能的开发能力。归之一点,要了解自已生命的过程变化,并有能力控制自已。
4.高技能学 掌握所在时代主流超前技术,争做影响主流技术的前进人物,归之一点,有利于本物种生存
5.经济学  洪氏家族最重要一点,一定得跟其它技术结合起来,我洪氏家族要争做所在时代天下首富
6.宇宙空间学:对生命起源,生物基因构造,洪氏家族所赚的经济基础要针对所在时代情况,得尽量把大部份财力用在这上面。
这是洪氏家族世代做为太阳系高级生物第一阶段要完成作务。之后的总纲要那时代物种再编写。
其它:
只能是爱好,随个人喜爱

洪氏家族行商法则

February 1st, 2008

洪氏家族行商法则

            ——–哪里能赚钱哪里就有闽商的影子

1.人人生而不可能平等

2.世间财富绝不可均分

3.世间万物必需有等级

4.保持最佳精力做事情

5.要发展必需走出大海

6.做事需胆爱拼才会赢

7.财富是合理分配出来

8.善观时变、顺势有为

9.和睦关系、彼此需要

10.合群团结、豪爽义气

11.恋祖爱乡、回馈桑梓

之PDO数据层深入讲解

January 29th, 2008

在PHP5,6系列中,主要有四个类,因为开发领导者与SPL是同一个人,所以关联相关厉害,它们分别是
class PDOException extends RuntimeException
class PDO

class PDOStatement implements Traversable

final class PDORow

Classes [4] {
Class [ <internal:PDO> class PDOException extends RuntimeException ] {

- Constants [0] {
}

- Static properties [0] {
}

- Static methods [0] {
}

- Properties [5] {
Property [ <default> protected $message ]
Property [ <default> protected $code ]
Property [ <default> protected $file ]
Property [ <default> protected $line ]
Property [ <default> public $errorInfo ]
}

- Methods [9] {
Method [ <internal, inherits Exception> final private method __clone ] {
}

Method [ <internal, inherits Exception, ctor> public method __construct ] {

- Parameters [2] {
Parameter #0 [ <optional> $message ]
Parameter #1 [ <optional> $code ]
}
}

Method [ <internal, inherits Exception> final public method getMessage ] {
}

Method [ <internal, inherits Exception> final public method getCode ] {
}

Method [ <internal, inherits Exception> final public method getFile ] {
}

Method [ <internal, inherits Exception> final public method getLine ] {
}

Method [ <internal, inherits Exception> final public method getTrace ] {
}

Method [ <internal, inherits Exception> final public method getTraceAsString ] {
}

Method [ <internal, inherits Exception> public method __toString ] {
}
}
}

Class [ <internal:PDO> class PDO ] {

- Constants [77] {
Constant [ integer PARAM_BOOL ] { 5 }
Constant [ integer PARAM_NULL ] { 0 }
Constant [ integer PARAM_INT ] { 1 }
Constant [ integer PARAM_STR ] { 2 }
Constant [ integer PARAM_LOB ] { 3 }
Constant [ integer PARAM_STMT ] { 4 }
Constant [ integer PARAM_INPUT_OUTPUT ] { -2147483648 }
Constant [ integer PARAM_EVT_ALLOC ] { 0 }
Constant [ integer PARAM_EVT_FREE ] { 1 }
Constant [ integer PARAM_EVT_EXEC_PRE ] { 2 }
Constant [ integer PARAM_EVT_EXEC_POST ] { 3 }
Constant [ integer PARAM_EVT_FETCH_PRE ] { 4 }
Constant [ integer PARAM_EVT_FETCH_POST ] { 5 }
Constant [ integer PARAM_EVT_NORMALIZE ] { 6 }
Constant [ integer FETCH_LAZY ] { 1 }
Constant [ integer FETCH_ASSOC ] { 2 }
Constant [ integer FETCH_NUM ] { 3 }
Constant [ integer FETCH_BOTH ] { 4 }
Constant [ integer FETCH_OBJ ] { 5 }
Constant [ integer FETCH_BOUND ] { 6 }
Constant [ integer FETCH_COLUMN ] { 7 }
Constant [ integer FETCH_CLASS ] { 8 }
Constant [ integer FETCH_INTO ] { 9 }
Constant [ integer FETCH_FUNC ] { 10 }
Constant [ integer FETCH_GROUP ] { 65536 }
Constant [ integer FETCH_UNIQUE ] { 196608 }
Constant [ integer FETCH_KEY_PAIR ] { 12 }
Constant [ integer FETCH_CLASSTYPE ] { 262144 }
Constant [ integer FETCH_SERIALIZE ] { 524288 }
Constant [ integer FETCH_PROPS_LATE ] { 1048576 }
Constant [ integer FETCH_NAMED ] { 11 }
Constant [ integer ATTR_AUTOCOMMIT ] { 0 }
Constant [ integer ATTR_PREFETCH ] { 1 }
Constant [ integer ATTR_TIMEOUT ] { 2 }
Constant [ integer ATTR_ERRMODE ] { 3 }
Constant [ integer ATTR_SERVER_VERSION ] { 4 }
Constant [ integer ATTR_CLIENT_VERSION ] { 5 }
Constant [ integer ATTR_SERVER_INFO ] { 6 }
Constant [ integer ATTR_CONNECTION_STATUS ] { 7 }
Constant [ integer ATTR_CASE ] { 8 }
Constant [ integer ATTR_CURSOR_NAME ] { 9 }
Constant [ integer ATTR_CURSOR ] { 10 }
Constant [ integer ATTR_ORACLE_NULLS ] { 11 }
Constant [ integer ATTR_PERSISTENT ] { 12 }
Constant [ integer ATTR_STATEMENT_CLASS ] { 13 }
Constant [ integer ATTR_FETCH_TABLE_NAMES ] { 14 }
Constant [ integer ATTR_FETCH_CATALOG_NAMES ] { 15 }
Constant [ integer ATTR_DRIVER_NAME ] { 16 }
Constant [ integer ATTR_STRINGIFY_FETCHES ] { 17 }
Constant [ integer ATTR_MAX_COLUMN_LEN ] { 18 }
Constant [ integer ATTR_EMULATE_PREPARES ] { 20 }
Constant [ integer ATTR_DEFAULT_FETCH_MODE ] { 19 }
Constant [ integer ERRMODE_SILENT ] { 0 }
Constant [ integer ERRMODE_WARNING ] { 1 }
Constant [ integer ERRMODE_EXCEPTION ] { 2 }
Constant [ integer CASE_NATURAL ] { 0 }
Constant [ integer CASE_LOWER ] { 2 }
Constant [ integer CASE_UPPER ] { 1 }
Constant [ integer NULL_NATURAL ] { 0 }
Constant [ integer NULL_EMPTY_STRING ] { 1 }
Constant [ integer NULL_TO_STRING ] { 2 }
Constant [ string ERR_NONE ] { 00000 }
Constant [ integer FETCH_ORI_NEXT ] { 0 }
Constant [ integer FETCH_ORI_PRIOR ] { 1 }
Constant [ integer FETCH_ORI_FIRST ] { 2 }
Constant [ integer FETCH_ORI_LAST ] { 3 }
Constant [ integer FETCH_ORI_ABS ] { 4 }
Constant [ integer FETCH_ORI_REL ] { 5 }
Constant [ integer CURSOR_FWDONLY ] { 0 }
Constant [ integer CURSOR_SCROLL ] { 1 }
Constant [ integer MYSQL_ATTR_USE_BUFFERED_QUERY ] { 1000 }
Constant [ integer MYSQL_ATTR_LOCAL_INFILE ] { 1001 }
Constant [ integer MYSQL_ATTR_INIT_COMMAND ] { 1002 }
Constant [ integer MYSQL_ATTR_READ_DEFAULT_FILE ] { 1003 }
Constant [ integer MYSQL_ATTR_READ_DEFAULT_GROUP ] { 1004 }
Constant [ integer MYSQL_ATTR_MAX_BUFFER_SIZE ] { 1005 }
Constant [ integer MYSQL_ATTR_DIRECT_QUERY ] { 1006 }
}

- Static properties [0] {
}

- Static methods [1] {
Method [ <internal:PDO> static public method getAvailableDrivers ] {
}
}

- Properties [0] {
}

- Methods [15] {
Method [ <internal:PDO, ctor> public method __construct ] {

- Parameters [4] {
Parameter #0 [ <required> $dsn ]
Parameter #1 [ <required> $username ]
Parameter #2 [ <required> $passwd ]
Parameter #3 [ <optional> $options ]
}
}

Method [ <internal:PDO> public method prepare ] {

- Parameters [2] {
Parameter #0 [ <required> $statment ]
Parameter #1 [ <optional> $options ]
}
}

Method [ <internal:PDO> public method beginTransaction ] {
}

Method [ <internal:PDO> public method commit ] {
}

Method [ <internal:PDO> public method rollBack ] {
}

Method [ <internal:PDO> public method setAttribute ] {

- Parameters [2] {
Parameter #0 [ <required> $attribute ]
Parameter #1 [ <required> $value ]
}
}

Method [ <internal:PDO> public method exec ] {

- Parameters [1] {
Parameter #0 [ <required> $query ]
}
}

Method [ <internal:PDO> public method query ] {
}

Method [ <internal:PDO> public method lastInsertId ] {

- Parameters [1] {
Parameter #0 [ <optional> $seqname ]
}
}

Method [ <internal:PDO> public method errorCode ] {
}

Method [ <internal:PDO> public method errorInfo ] {
}

Method [ <internal:PDO> public method getAttribute ] {

- Parameters [1] {
Parameter #0 [ <required> $attribute ]
}
}

Method [ <internal:PDO> public method quote ] {

- Parameters [2] {
Parameter #0 [ <required> $string ]
Parameter #1 [ <optional> $paramtype ]
}
}

Method [ <internal:PDO> final public method __wakeup ] {
}

Method [ <internal:PDO> final public method __sleep ] {
}
}
}

Class [ <internal:PDO> <iterateable> class PDOStatement implements Traversable ] {

- Constants [0] {
}

- Static properties [0] {
}

- Static methods [0] {
}

- Properties [1] {
Property [ <default> public $queryString ]
}

- Methods [21] {
Method [ <internal:PDO> public method execute ] {

- Parameters [1] {
Parameter #0 [ <optional> $bound_input_params ]
}
}

Method [ <internal:PDO> public method fetch ] {

- Parameters [3] {
Parameter #0 [ <optional> $how ]
Parameter #1 [ <optional> $orientation ]
Parameter #2 [ <optional> $offset ]
}
}

Method [ <internal:PDO> public method bindParam ] {

- Parameters [5] {
Parameter #0 [ <required> $paramno ]
Parameter #1 [ <required> &$param ]
Parameter #2 [ <optional> $type ]
Parameter #3 [ <optional> $maxlen ]
Parameter #4 [ <optional> $driverdata ]
}
}

Method [ <internal:PDO> public method bindColumn ] {

- Parameters [5] {
Parameter #0 [ <required> $column ]
Parameter #1 [ <required> &$param ]
Parameter #2 [ <optional> $type ]
Parameter #3 [ <optional> $maxlen ]
Parameter #4 [ <optional> $driverdata ]
}
}

Method [ <internal:PDO> public method bindValue ] {

- Parameters [3] {
Parameter #0 [ <required> $paramno ]
Parameter #1 [ <required> $param ]
Parameter #2 [ <optional> $type ]
}
}

Method [ <internal:PDO> public method rowCount ] {
}

Method [ <internal:PDO> public method fetchColumn ] {

- Parameters [1] {
Parameter #0 [ <optional> $column_number ]
}
}

Method [ <internal:PDO> public method fetchAll ] {

- Parameters [3] {
Parameter #0 [ <optional> $how ]
Parameter #1 [ <optional> $class_name ]
Parameter #2 [ <optional> $ctor_args ]
}
}

Method [ <internal:PDO> public method fetchObject ] {

- Parameters [2] {
Parameter #0 [ <required> $class_name ]
Parameter #1 [ <optional> $ctor_args ]
}
}

Method [ <internal:PDO> public method errorCode ] {
}

Method [ <internal:PDO> public method errorInfo ] {
}

Method [ <internal:PDO> public method setAttribute ] {

- Parameters [2] {
Parameter #0 [ <required> $attribute ]
Parameter #1 [ <required> $value ]
}
}

Method [ <internal:PDO> public method getAttribute ] {

- Parameters [1] {
Parameter #0 [ <required> $attribute ]
}
}

Method [ <internal:PDO> public method columnCount ] {
}

Method [ <internal:PDO> public method getColumnMeta ] {

- Parameters [1] {
Parameter #0 [ <required> $column ]
}
}

Method [ <internal:PDO> public method setFetchMode ] {

- Parameters [2] {
Parameter #0 [ <required> $mode ]
Parameter #1 [ <optional> $params ]
}
}

Method [ <internal:PDO> public method nextRowset ] {
}

Method [ <internal:PDO> public method closeCursor ] {
}

Method [ <internal:PDO> public method debugDumpParams ] {
}

Method [ <internal:PDO> final public method __wakeup ] {
}

Method [ <internal:PDO> final public method __sleep ] {
}
}
}

Class [ <internal:PDO> final class PDORow ] {

- Constants [0] {
}

- Static properties [0] {
}

- Static methods [0] {
}

- Properties [0] {
}

- Methods [0] {
}
}
}
}

批量注释替换脚本

January 28th, 2008

#!/bin/bash
#批量注释替换脚本
#Usage :
#         ./replace.sh  “old string”     “new string”  file path
#示例  :
#         ./replace.sh  “hong”  “jiania”  ./home/htdocs
#
files=”/home/htdocs/bbs”
for f  in  $(grep  -HR “$oldstring”  $files | awk -F: ‘{print $oldstring}’)
do
    fname=”${f}.$(date +%s)”
    cp -f  “$f”  “$fname”
    sed -e ‘/^[   ]*\/\/.*$/d
/\/\/.*$/s///
/\/\*.*\*\//s///g
/\/\*/{ :a;N;s/\/\*.*\*\///g;tc;ba;:c }’ $fname  >$f
    rm -fr $fname
done

对一个PHPER劳工纠纷案的感想

January 28th, 2008

在phpchina看到一个劳工纠纷案件,有点感想,回复如下:
http://bbs.phpchina.com/thread-50476-1-1.html

对案中的各方面当事人表示深切同情
程序员,退学.出来社会,首先我想他一定是以生存为第一理念,按洪建家人生理念之一:

人人有生存的权利与自由.而不问这方法是什么.

故从这方面理解这家伙,我们的思维就变觉得这事很正常.他只是想给自己一个机会,而不问他是否有足够的能力胜胜这份工作.只是最终可能因为能力问题.时间太短,人手不够等原因而使项目无法安排完成.
从他会退还给你钱来看,这位仁兄道德值得肯定,至少还是年轻与心地单纯善良的..虽然分几次退.但一定有他的不得已之处.因为他可能还得留一些基本的钱做生存.他能慢慢还你就不错了.^_^

给这位PHPER建议,因为生存权利的.你的做法会有代价,我希望你尽快学些东西.让自己尽快立足社会.短期的谎言很快会被发现.

对案中用人方的感想:
按洪建家的项目理念之一

如果项目开始实施,那么一切的风险都有可能.

你为什么要做网站?你的目的是什么?仅是一个宣传的页面?还是真正想靠网站扩展销售或是专业网络业务.

如果您是后者,我想告诉您,您的选择是错的.创业很难.成本压缩得相当厉害.但一个项目中如果没有形成最低的关键链,最好别要尝试.失败得相当快.

我一直欣赏与鼓励目前敢于出来创业的人,但创业不是让自己失业,创业是团队的成功,没有找到最基本的合作伙伴,失败是一定的.

虽对方不诚信,但希望留给人一条退路.因为这样做对他的日后损失相当大.同时人与人交往过程中,一定会出现问题.有时放弃是种美.不到一万的项目我相信你的处理这事的时间与精力不值这些钱.好运!

PHP编程思想|->SPL|模块化|Zend引擎核心

January 22nd, 2008

所有的SPL->Zend引擎核心都是基于C底层实现

ArrayAccess 接口

注:重载任何对象数组访问功能接口

Exception    错误基类

注意:PHP5,6以后最核心的错误处理基类,分逻辑错误与实时错误等众多子孙类,SPL王国大将,地位相当于现在中国公检法部门角色

Iterator      迭代器接口

注:SPL国王Traversable儿子,跟它母亲foreach在处理自己的王业时配合相当好.

IteratorAggregate 外部迭代器接口

注:SPL国王Traversable儿子,历史的不幸,只是做Iterator政治上的配角.不过他对名将ArrayObject影响是深远的.

Serializable 串行序列化接口

注:允许类自定串行序列等功能,此角色较小心眼,任何类实现它后不能再使用__sleep() 与 __wakeup()方法

Traversable 通用型接口,SPL国王

PHP编程思想|->SPL篇-Traversable接口

January 22nd, 2008

读者对象:所有级别PHPER 

今天建家给大伙讲讲SPL最底层的Traversable接口,为了照顾大多数PHPER英语阅读理解的不足,我先与大家一起学习Traversable的中文意思,Traversable的意思就是:可通行,能越过的.在SPL我的解释是SPL通行接口,它基本上可以说是SPL的老祖宗.是它带邻大家创立了SPL王国,底下有两个出息的儿子,个个创出不凡的家业.他们是 IteratorAggregate 与Iterator 

特点:集进ZendEngine
摘要: 此接口可以实现类中foreach功能

可从:PHP 5.0 起可以使用这个接口

 这老宗祖有点个性,它不能单独被实现(implematation).一个人无法创立王国,王位必需继承下去,也就是说必需与他儿子
 IteratorAggregate 或是Iterator 其中的一个一起实现接口,才能把让王国继续下去.^_^
 前面提到有点例外,就是对Traversable国王的皇后foreach 例外.提到Traversable的夫人foreach,在人类的PHP世界或是SPL皇宫世界里头,贡献实在不可低估.以至Traversable国王说,如果没有美丽的foreach一直帮朕协调解决王国所有关系圈.朕根本不可能把SPL皇城管理这样好.

interface Traversable
{
}

什么时候不用foreach()

January 20th, 2008

什么时候不用foreach()
在编辑业界中,我发现大多数人这样写代码
<?php
  foreach($array as $key=>$value) {
    $array[$key] = some_function($value);
  }
?>
但上面的方面在Zend引擎2的环境中运行相当慢

下面介绍两绍正确的写法

<?php

foreach($array as $key=>&value)
{
$valve=some_function($v);
}
?>
或是这样

<?php
  array_map(’some_function’,$array);
?>
这样使用
//someObject 是array_map回调函数
<?php
  array_map(array(’someObject’,’someMethod’),$arr);
?>

jiania->PHP扫盲版大全之变量名与赋值

January 10th, 2008

jiania->PHP扫盲版大全2

<?php
/**
* package StudyPHP_Base
* Class  1.php
* author:jiania
* copyright www.jiania.com
* email jiania@gmail
* msn jiania@gmail.com
* skype:jiania
* mobile:13520000517
*/

/**
* 变量命名与赋值,简单加演示!
*/

$a=1;
$b=2;
$c=3;
$d=$a+$b+$c;
$e=$a*$b*$c;
$f=$a/$b/$c;
$g=$a-$b-$c;
echo $d;
echo “<br>”;
echo $e;
echo “<br>”;
echo $f;
echo “<br>”;
echo $g;
echo “<br>”;
echo $a|$b&$c;
?>