2011年4月6日星期三

关于移动web开发

最近在开发无线js代码库,拿到了Android测试机N1,这几天的测试过程中,发现 了Android2.2里chrome lite的一些问题,记录在本文最后。

试用过Andorid浏览不同的网页后觉得,移动web开发应该尽量避免类似桌面应用那样的富客户端体验,因为本身各种手机性能参差不齐,而且性能 最好的iPhone4也并没有好到哪里去。桌面的IE6虽然比chrome性能差几十倍,但在强大的桌面硬件支持下普通富客户端应用差别很小,甚至感觉不 出来,但手机上就不一样,差别明显,性能低到无法忍受。

我在Android下试了sencha/jqtouch/jquery mobile,体验都不好,很卡很慢,如果只是针对iOS平台的浏览器还好,如果是针对所有平台的,还是不要用这么复杂的框架。速度快是最重要的体验元 素,这在移动web上主要表现在渲染的速度。而一些锦上添花的效果有时不仅影响速度,还会有更差的体验出现,例如jquery mobile在滑动切换页面时会不断调整位置,或者隐藏显示地址栏,导致页面闪了几下,体验不太好。

做移动web开发,我目前想法是:

  1. 最重要的是写好css让页面显示适应屏幕,但同时CSS3带来的特殊效果尽量少用,特别是list的渐变背景最好不用,会拖慢页面的渲染。
  2. 少用或不用动画,虽然css3动画在iOS上表现不俗,但至少在Android上表现不佳,很卡的动画比没有动画效果更差。
  3. 功能性的交互可以多(如dom切换/ajax,但要极力优化),效果性的交互尽量少(例如手指拖动元素,slider等组件)。

如果要在手持设备上有足够丰富的交互体验,还是做原生APP靠谱。如果不考虑各种浏览器的兼容,只考虑iOS,那能做的事还是挺多的,感觉 sencha touch就只是为iOS准备的。但在iOS上浏览器的性能也无法跟原生APP比,差得很远,而且如果只支持iOS,web失去了跨平台这个特性,也就没 多大意义了。

附:Android2.2浏览器的问题

触摸屏

  1. touchmove触发次数太少
    表现在两个方面:
    Ⅰ.拉住页面拖动的时候,触发touchmove事件的次数比ios少了一两倍。
    Ⅱ.手指滑动速度太快(像翻页那样)时touchmove几乎不触发,或只出发一两次。ios上会出发很多次。
  2. 在某一个元素侦听touch事件,如果两次touchstart间隔时间太短,touch事件就不再作用到那个元素上,穿越了这个元素直接作用在 页面上。这个问题在touchstart时preventDefault可以解决。

总的来说就是,触摸不灵敏。

渲染

  1. 页面上用CSS3渐变时,特别是全屏背景颜色渐变,渲染会变慢很多,拖动会变得很卡。
  2. 有些渐变颜色在页面移动过程质量会变低。

事件

  1. 不支持gesture事件,可以理解为因为很多android手机多点触摸功能很差,直接把这个功能干掉了。
  2. Android2.1以下不支持orientationchange事件,需要用resize事件模拟。我测试的N1 Android2.2支持这个事件。
  3. Android2.2的浏览器支持position:fixed这个css属性,2.1以下版本支持情况不明。它viewport的概念跟iOS mobile safari是不一样的。

2011年4月5日星期二

Web前端工程师技能列表

要打造一流的Web产品开发团队,在团队成员基础能力上一定要下功夫。对于Web前端产品开发来说,仅仅掌握 Web1.0时代简单的"网页套接"是完全不够的。我结合自己的团队配备,特此罗列了Web前端产品工程师所涉及的技能列表如下:

通过许多实际项目,个人认为一个完备的前端产品开发团队,必须拥有如下的人才配备,也希望大家补充:

  • 团队全体成员达到所有技能中的a级标准
  • 团队全体成员必须掌握两项技能中的b级标准,并保证所有的b级标准在该团队中有50%以上成员能达到
  • 团队全体成员必须掌握一项技能中的c级标准,并保证所有的c级标准在该团队中有25%以上成员能达到

具体技能描述:

  • 【必备】UserInterface
    1. PhotoShop/Fireworks Design
      a � 配合美工将草图形成具体的符合WebPage的设计
      b � 有快速制作分层高品质PSD、PNG的能力
      c � 能迅速将PSD、PNG的内容构思成div+css或者table等HTML代码
    2. Flash Design
      a � 基本动画效果
      b � 复杂的交互体系设计,了解第三方swf辅助设计软件
      c � 复杂的交互体系设计以及较强的对各类外埠资源(PNG、JPG、MP3、WAV等)的整合能力。精通部分第三方辅助设计软件(AE、SwishMax、 Swift3D等)
  • 【必备】Browser-side (Web Application)
    1. XHTML/CSS
      a � 基本的layout实现
      b � 严格跨平台的layout实现以
      c � 优雅的HTML code,尽可能符合标准并有SEO的考虑因素。在任何平台、浏览器下基本保持一致。不要求了解各种CSS的hacks,但要求知道遇到问题应该如何查阅 资料以在第一时间内解决。能够为JavaScript开发人员提供最好操作的DOM结构,让JS开发人员在开发的时候认为"一切都已经准备就绪了",而不 是"捉襟见肘"。
    2. JavaScript/Ajax/DOM
      a � 基本的DOM操作,了解AJAX,可以实现数据通信
      b � 基本的DOM操作,能写高效率的OOP代码,以降低维护成本
      c � 基于需求,进行不同的开发,选择合适的框架,做到代码效率最高,用户体验最好,代码下载量最小,并且可以在单独甚至更多产品线中最大限度重用代码
    3. Flash Developement
      a � 基于Timeline的ActionScript操作,能实现简单交互
      b � 掌握a外,能实现数据层通信(与服务器以及本地SharedObject)
      c � 精通AS1-3,能根据需求进行各类RIA开发。无论是要求支持FlashPlayer8的,还是FlashPlayer9的,都能做到开发效率最高、灵 活性最大(比如对HTML层的接口设计,等等)。
  • 【必备】Client-side (Desktop Application)
    1. Apollo
      a � 产品级的封装,基本技术了解(如何打包、如何加入HTML和JavaScript等)
      b � 掌握a的同时,能利用Apollo的API独立设计、开发OS的文件I/O功能。
      c � 掌握基本技能的同时,对"3D概念体系"有所认知。这里"3D"即:Design(设计)、Development(开发)、Deploy(产品部署)。 能用Apollo
    2. Windows Presentation Foundation、WPF/E(Silverlight)
      (待定,欢迎补充)
  • 【增补】Server-side (修改:经考虑,这个技能不参与评级)
    本来列举了"1、Server端简单的技术、脚本"和"2、MediaServer(Red5)接口"作为"Web前端工程师技能列表"的 一种(服务器、数据逻辑层技能的)评判标准。但似乎很多朋友对于前端工程师是否应该掌握Server端技能的必要性表示怀疑。确实,要掌握好上述的展现层 技能不是意见容易的事情,而且前端工程师的确非常辛苦。但是,站在另一方面来说,辛苦的原因是什么,我不知道在你日夜奋战div+CSS的时候思考过没 有。就我的经验,前端的辛苦在于以下几个方面:
    1. 重复劳动多,大量的div+css都是重复的,即便可以复制粘贴,但几千行的div海洋中去寻找一个入口恐怕 都非常痛苦
    2. 需求变更多,往往你折腾几个小时终于把跨平台问题解决好了,而且在IE6、7和Firefox下面都能显示同 样的效果了,甚至连JavaScript交互都已经快搞定了。突然上面说需求要变。这无疑是莫大的痛苦。

    也许表面上看,这跟Server端技能无关,但我觉得有好的Server端的意识,一定会有所帮助(当然不可能解决所有的问题)。毕竟信息结构和数 据库是密切相关的,而Server是连接数据库的唯一渠道(至少大多数B/S应用是如此)。掌握Server端的基本技能,对于同逻辑层开发人员设计接口 是非常重要的。而且HTML表现层在开发时与数据的分离,也与Server端的各种模板技术有关。例如PHP中的Smarty模板(我曾经用的)、jsp 的model2概念等等。HTML结构如何设计,如何让HTML重用,甚至在HTML层进行OOP的开发(我现在在新产品线中设计的前端开发流程),都需 要Server端的支持。最起码,你要告诉php程序员你需要什么。如果你完全对PHP一无所知的话,那也无从谈起了。
    此外,对于创业团队,往往人手非常有限。为了让运营成本降到最低,所有的技术人员都有义务对Server端技术有所了解。如果为了修改一个网页的标题还要 跑去喊PHP程序员连接Remote Server的话,那实在是增加了整个公司的运营成本。
    总结:我认为,可以不了解技术细节,但应该知道原理,最好能掌握一两套设计思想(毕竟数据逻辑都在这里走,光看HTML和JavaScript,对人的见 识还是有局限的,这种局限限制了我自己很久的时间),那将是一比宝贵的财富。

  • 【增补】Mobile-side(不参与评级)
    1. Flashlite
      (待定,欢迎补充)
    2. Java?
      (待定,欢迎补充)

看到很多朋友留言说前端工程师没前途,我在想,同时掌握移动设备的技能是否也是拓展前途的一个必要性?这里再多说几句,关于技术人员的前途,目前在 国内确实得用"惨淡"来形容。浮躁的氛围让技术人才往往过早放弃了自己的技术生涯,而尔虞我诈的整体道德水平也让单纯的技术人员痛不欲生(我身边太多了, 恩,不说具体细节了,呵呵)。

作为一个技术人员,开发人员,在保持纯粹地敬业心态(这是前提,这么没有,啥也别谈)外,更要学会如何保护自己,如何壮大自身,社会不会同情你,只 有你自己才能保护你自己。

英语几个简短的句子……:)

1. I see. 我明白了。
2. I quit! 我不干了!
3. Let go! 放手!
4. Me too. 我也是。
5. My god! 天哪!
6. No way! 不行!
7. Come on. 来吧(赶快)
8. Hold on. 等一等。
9. I agree。 我同意。
10. Not bad. 还不错。
11. Not yet. 还没。
12. See you. 再见。
13. Shut up! 闭嘴!
14. So long. 再见。
15. Why not? 好呀! (为什么不呢?)
16. Allow me. 让我来。
17. Be quiet! 安静点!
18. Cheer up! 振作起来!
19. Good job! 做得好!
20. Have fun! 玩得开心!
21. How much? 多少钱?
22. I'm full. 我饱了。
23. I'm home. 我回来了。
24. I'm lost. 我迷路了。
25. My treat. 我请客。
26. So do I. 我也一样。
27. This way。 这边请。
28. After you. 您先。
29. Bless you! 祝福你!
30. Follow me. 跟我来。
31. Forget it! 休想! (算了!)
32. Good luck! 祝好运!
33. I decline! 我拒绝!
34. I promise. 我保证。
35. Of course! 当然了!
36. Slow down! 慢点!
37. Take care! 保重!
38. They hurt. (伤口)疼。
39. Try again. 再试试。
40. Watch out! 当心。
41. What's up? 有什么事吗?
42. Be careful! 注意!
43. Bottoms up! 干杯(见底)!
44. Don't move! 不许动!
45. Guess what? 猜猜看?
46. I doubt it 我怀疑。
47. I think so. 我也这么想。
48. I'm single. 我是单身贵族。
49. Keep it up! 坚持下去!
50. Let me see.让我想想。
51. Never mind.不要紧。
52. No problem! 没问题!
53. That's all! 就这样!
54. Time is up. 时间快到了。
55. What's new? 有什么新鲜事吗?
56. Count me on 算上我。
57. Don't worry. 别担心。
58. Feel better? 好点了吗?
59. I love you! 我爱你!
60. I'm his fan。 我是他的影迷。
61. Is it yours? 这是你的吗?
62. That's neat. 这很好。
63. Are you sure? 你肯定吗?
64. Do l have to 非做不可吗?
65. He is my age. 他和我同岁。
66. Here you are. 给你。
67. No one knows . 没有人知道。
68. Take it easy. 别紧张。
69. What a pity! 太遗憾了!
70. Any thing else? 还要别的吗?
71. To be careful! 一定要小心!
72. Do me a favor? 帮个忙,好吗?
73. Help yourself. 别客气。
74. I'm on a diet. 我在节食。
75. Keep in Touch. 保持联络。
76. Time is money. 时间就是金钱。
77. Who's calling? 是哪一位?
78. You did right. 你做得对。
79. You set me up! 你出卖我!
80. Can I help you? 我能帮你吗?
81. Enjoy yourself! 祝你玩得开心!
82. Excuse me,Sir. 先生,对不起。
83. Give me a hand! 帮帮我!
84. How's it going? 怎么样?
85. I have no idea. 我没有头绪。
86. I just made it! 我做到了!
87. I'll see to it 我会留意的。
88. I'm in a hurry! 我在赶时间!
89. It's her field. 这是她的本行。
90. It's up to you. 由你决定。
91. Just wonderful! 简直太棒了!
92. What about you? 你呢?
93. You owe me one.你欠我一个人情。
94. You're welcome. 不客气。
95. Any day will do. 哪一天都行夕
96. Are you kidding? 你在开玩笑吧!
97. Congratulations! 祝贺你!
98. T can't help it. 我情不自禁。
99. I don't mean it. 我不是故意的。
100. I'll fix you Up. 我会帮你打点的

101. It sounds great!. 听起来很不错。
102. It's a fine day。 今天是个好天。
103. So far,So good. 目前还不错。
104. What time is it? 几点了?
105. You can make it! 你能做到!
106. Control yourself! 克制一下!
107. He came by train. 他乘火车来。
108. He is ill in bed. 他卧病在床。
109. He lacks courage. 他缺乏勇气。
110. How's everything? 一切还好吧?
111. I have no choice. 我别无选择。
112. I like ice-cream. 我喜欢吃冰淇淋。
113. I love this game. 我钟爱这项运动。
114. I'll try my best. 我尽力而为。
115. I'm On your side. 我全力支持你。
116. Long time no see! 好久不见!
117. No pain,no gain. 不劳无获。
118. Well,it depends 噢,这得看情况。
119. We're all for it. 我们全都同意。
120. What a good deal! 真便宜!
121. What should I do? 我该怎么办?
122. You asked for it! 你自讨苦吃!
123. You have my word. 我保证。
124. Believe it or not! 信不信由你!
125. Don't count on me.别指望我。
126. Don't fall for it! 别上当!
127. Don't let me down. 别让我失望。
128. Easy come easy go. 来得容易,去得快。
129. I beg your pardon. 请你原谅。
130. I beg your pardon? 请您再说一遍(我没有听清)。
131. I'll be back soon. 我马上回来。
132. I'll check it out. 我去查查看。
133. It's a long story. 说来话长。
134. It's Sunday today. 今天是星期天。
135. Just wait and see! 等着瞧!
136. Make up your mind. 做个决定吧。
137. That's all I need. 我就要这些。
138. The view is great. 景色多么漂亮!
139. The wall has ears. 隔墙有耳。
140. There comes a bus. 汽车来了。
141. What day is today? 今天星期几?
142. What do you think? 你怎么认为?
143. Who told you that? 谁告诉你的?
144. Who's kicking off? 现在是谁在开球?
145. Yes,I suppose So. 是的,我也这么认为。
146. You can't miss it 你一定能找到的。
147. Any messages for me? 有我的留言吗?
148. Don't be so modest. 别谦虚了。
149. Don't give me that! 少来这套!
150. He is a smart boy. 他是个小机灵鬼。
151. He is just a child. 他只是个孩子。
152. I can't follow you. 我不懂你说的。
153. I felt sort of ill. 我感觉有点不适。
154. I have a good idea! 我有一个好主意。
155. It is growing cool. 天气渐渐凉爽起来。
156. It seems all right. 看来这没问题。
157. It's going too far. 太离谱了。
158. May I use your pen? 我可以用你的笔吗?
159. She had a bad cold. 她患了重感冒。
160. That's a good idea. 这个主意真不错。
161. The answer is zero. 白忙了。
162. What does she like? 她喜欢什么?
163. As soon as possible! 越快越好!
164. He can hardly speak. 他几乎说不出话来。
165. He always talks big. 他总是吹牛。
166. He won an election. 他在选举中获胜。
167. I am a football fan. 我是个足球迷。
168. If only I could fly. 要是我能飞就好了。
169. I'll be right there. 我马上就到。
170. I'll see you at six. 我六点钟见你。
171. IS it true or false? 这是对的还是错的?
172. Just read it for me. 就读给我听好了。
173. Knowledge is power. 知识就是力量。
174. Move out of my way! 让开!
175. Time is running out. 没时间了。
176. We are good friends. 我们是好朋友。
177. What's your trouble? 你哪儿不舒服?
178. You did fairly well! 你干得相当不错1
179. Clothes make the man. 人要衣装。
180. Did you miss the bus? 你错过公共汽车了?
181. Don't lose your head。 不要惊慌失措。
182. He can't take a joke. 他开不得玩笑。
183. He owes my uncle $100.他欠我叔叔100美元。
184. How are things going? 事情进展得怎样?
185. How are you recently? 最近怎么样?
186. I know all about it. 我知道有关它的一切。
187. It really takes time. 这样太耽误时间了。
188. It's against the law. 这是违法的。
189. Love me,love my dog. (谚语)爱屋及乌。
190. My mouth is watering. 我要流口水了。
191. Speak louder,please. 说话请大声点儿。
192. This boy has no job. 这个男孩没有工作。
193. This house is my own. 这所房子是我自己的。
194. What happened to you? 你怎么了?
195. You are just in time. 你来得正是时候。
196. You need to workout. 你需要去运动锻炼一下。
197. Your hand feels cold. 你的手摸起来很冷。。
198. Don't be so childish. 别这么孩子气。
199. Don't trust to chance! 不要碰运气。
200. Fasten your seat belt. 系好你的安全带。

201. He has a large income. 他有很高的收入。

202. He looks very healthy. 他看来很健康。

203. He paused for a reply. 他停下来等着・回答。

204. He repaired his house. 他修理了他的房子。

205. He suggested a picnic. 他建议搞一次野餐。

206. Here's a gift for you. 这里有个礼物送给你。

207. How much does it cost? 多少钱?

208. I caught the last bus. 我赶上了最后一班车。

209. I could hardly speak. 我简直说不出话来。

210. I'll have to try that. 我得试试这么做。

211. I'm very proud of you. 我为你感到非常骄傲。

212. It doesn't make sense. 这没有意义(不合常理)。

213. Make yourself at home. 请不要拘礼。

214. My car needs washing. 我的车需要洗一洗。

215. None of your business! 与你无关!

216. Not a sound was heard. 一点声音也没有。

217. That's always the case. 习以为常了。

218. The road divides here. 这条路在这里分岔。

219. Those are watermelons. 那些是西瓜。

220. What a nice day it is! 今天天气真好!

221. What's wrong with you? 你哪里不对劲?

222. You are a chicken. 你是个胆小鬼。

223. A lovely day,isn't it? 好天气,是吗?

224. He is collecting money. 他在筹集资金。

225. He was born in New York. 他出生在纽约。

226. He was not a bit tired. 他一点也不累。

227. I will be more careful. 我会小心一些的,

228. I will never forget it. 我会记着的。

229. It is Just what I need. 这正是我所需要的。

230. It rather surprised me. 那事使我颇感惊讶。

231. Just around the comer. 就在附近。

232. Just for entertainment. 只是为了消遣一下。

233. Let bygones be bygones. 过去的,就让它过去吧。

234. Mother doesn't make up. 妈妈不化妆。

235. Oh,you are kidding me. 哦,你别拿我开玩笑了。

236. She has been to school. 她上学去了。

237. Skating is interesting. 滑冰很有趣。

238. Supper is ready at six. 晚餐六点钟就好了。

239. That's a terrific idea! 真是好主意!

240. What horrible weather! 这鬼天气!

241. Which would you prefer? 你要选哪个?

242. Does she like ice-cream? 她喜欢吃冰淇淋吗?

243. First come first served. 先到先得。

244. Great minds think alike. 英雄所见略同。

245. He has a sense of humor. 他有幽默感。

246. He is acting an old man. 他正扮演一个老人。

247. He is looking for a job. 他正在找工作。

248. He doesn't care about me. 他并不在乎我。

249. I develop films myself. 我自己冲洗照片。

250. I felt no regret for it. 对这件事我不觉得后悔。

251. I get up at six o'clock. 我六点起床。

252. I meet the boss himself. 我见到了老板本人。

253. I owe you for my dinner. 我欠你晚餐的钱。

254. I really enjoyed myself. 我玩得很开心。

255. I'm fed up with my work! 我对工作烦死了!

256. It's no use complaining. 发牢骚没什么用。

257. She's under the weather. 她心情・不好。

258. The child sobbed sadly. 小孩伤心地抽泣着。

259. The rumor had no basis. 那谣言没有・根据。

260. They praised him highly. 他们大大地表扬了他。

261. Winter is a cold season. 冬天是一个,寒冷的季节。

262. You can call me any time. 你可以随时打电话给我。

263. 15 divided by3 equals 5. 15除以3等于5。

264. All for one,one for all. 我为人人,人人为我。

265. East,west,home is best. 金窝,银窝,不如自己的草窝。

266. He grasped both my hands. 他紧握住我的双手。

267. He is physically mature. 他身体己发育成熟。

268. I am so sorry about this. 对此我非常抱歉(遗憾)。

269. I can't afford a new car. 我买不起一部新车。

270. I do want to see him now. 我现在确实很想去见他。

271. I have the right to know. 我有权知道。

272. I heard some one laughing. 我听见有人在笑。

273. I suppose you dance much. 我想你常常跳舞吧。

274. I walked across the park. 我穿过了公园。

275. I'll just play it by ear. 我到时随机应变。

276. I'm not sure I can do it. 恐怕这事我干不了。

277. I'm not used to drinking. 我不习惯喝酒。

278. Is the cut still painful? 伤口还在痛吗?

279. It's too good to be true! 好得难以置信。

280. Jean is a blue-eyed girl. 珍是个蓝眼睛的女孩。

281. Let's not waste our time. 咱们别浪费时间了。

282. May I ask some questions? 我可以问几个问题吗?

283. Money is not everything. 金钱不是一切。

284. Neither of the men spoke. 两个人都没说过话。

285. Stop making such a noise. 别吵了。

286. That makes no difference. 没什么区别。

287. The price is reasonable. 价格还算合理。

288. They crowned him king. 他们拥立他为国王。

289. They're in red and white. 他们穿着红白相间的衣服。

290. We all desire happiness. 我们都想要幸福。

291. We just caught the plane 我们刚好赶上了飞机。

292. What shall we do tonight? 我们今天晚上去干点儿什么呢?

293. What's your goal in life 你的人生目标是什么?

294. When was the house built? 这幢房子是什么时候建造的?

295. Why did you stay at home? 为什么呆在家里?

296. Would you like some help? 需要帮忙吗?

297. You mustn't aim too high 你不可好高骛远。

298. You're really killing me! 真是笑死我了!

299. You've got a point there. 你说得挺有道理的。

300. Being criticized is awful! 被人批评真是痛苦

301. Did you enter the contest? 你参加比赛了吗?

302. Do you accept credit cards? 你们收信用卡吗?

303. Don't cry over spilt milk. 不要做无益的后悔。

304. Don't let chances pass by. 不要让机遇从我们身边溜走。

305. He owned himself defeated. 他承认自己失败了。

306. He seems at little nervous. 他显得有点紧张。

307. He strolls about the town. 他在镇上四处遛达。

308. Her tooth ached all night. 她牙疼了一整夜。

309. How about a drink tonight? 今晚喝一杯怎样?

310. I can do nothing but that. 我只会做那件事。

311. I get hold of you at last. 我终于找到你了。

312. I have a surprise for you.我有一个意想不到的东西给你看。

313. I like all kinds of fruit. 我喜欢各种各样的水果。

314. I saw it with my own eyes. 我亲眼所见。

315. I will arrange everything. 我会安排一切的。

316. I wish I knew my neighbor. 我很想认识我的邻居。

317. I would like to check out. 我想结帐。

318. It has be come much cooler. 天气变得凉爽多了。

319. It's time you went to bed. 你早就该睡觉了。

320. No spitting on the street. 禁止在大街上吐痰。

321. She was totally exhausted. 她累垮了。

322. Show your tickets,please. 请出示你的票。

323. Thank you for your advice. 谢谢你的建议。

324. That's the latest fashion. 这是最流行的款式。

325. The train arrived on time. 火车准时到达。

326. There go the house lights. 剧院的灯光灭了。

327. They are paid by the hour. 他们按时取酬。

328. Things are getting better. 情况正在好转。

329. Wake me up at five thirty. 请在五点半叫醒我。

330. We are all busy with work. 我们都忙于工作。

331. Where do you want to meet? 你想在哪儿见面?

332. You can get what you want. 你能得到你想要的。

333. A barking dog doesn't bite! 吠犬不咬人。

334. Are you free this Saturday? 你这个星期六有空吗?

335. Be careful not to fall ill. 注意不要生病了。

336. Being a mother is not easy. 做一个母亲是不容易的。

337. Brevity is the soul of wit. 简洁是智慧的精华。

338. Cancer is a deadly disease. 癌症是一种致命的疾病。

339. Did you fight with others? 你又和别人打架了吗?

340. Don't dream away your time. 不要虚度光阴。

341. Don't keep me waiting long. 不要让我等得太久。

342. He has a remarkable memory. 他有惊人的记忆力。

343. He has completed the task. 他完成了这个任务。

344. He has quite a few friends. 他有不少的朋友。

345. He is capable of any crime.他什么样的坏事都能干得出来。

346. He walks with a quick pace. 他快步走路。

347. He was not a little tired. 他很累。

348. His looks are always funny. 他的样子总是滑稽可笑。

349. How about going to a movie? 去看场电影怎么样?

350. I think I've caught a cold.我想我得了感冒。

351. I was taking care of Sally. 我在照顾萨莉。

352. I wish I lived in NEWYORK. 我希望住在纽约。

353. I'm very glad to hear that. 很高兴听你这样说。

354. I'm your lucky fellow then. 我就是你的幸运舞伴啦!

355. It's none of your business! 这不关你的事儿!

356. No littering on the campus. 在校园内不准乱丢废物。

357. She is a good-looking girl. 她是一个漂亮女孩。

358. She mended the broken doll. 她修补了破了的洋娃娃。

359. So I just take what I want. 那么我只拿我所需要的东西。

360. Spring is a pretty season, 春天是一个好季节。

361. The figure seems all Right. 数目看起来是对的。

362. The stars are too far away. 星星太遥远了。

363. The whole world knows that. 全世界都知道。

364. Tomorrow will be a holiday. 明天放假。

365. We walk on the garden path. 我们走在花园小径上。

366. What you need is just rest. 你需要的就是休息。

367. What's your favorite steps? 你最喜欢跳什么舞?

368. You'd better let her alone.你们最好是让她一个人呆会儿。

369. A lost chance never returns. 错过的机会永不再来。

370. Don't let this get you down. 不要为此灰心丧气。

371. He shot the lion with a gun. 他用枪把狮子打死了。

372. I don't think you are right. 我认为你是不对的。

373. I have never seen the movie. 我从未看过那部电影。

374. I haven't seen you for ages. 我好久没见到你了。

375. I was alone,but not lonely.我独自一人,但并不觉得寂寞。

376. I went there three days ago. 我三天前去过那儿。

377. It's a friendly competition. 这是一场友谊赛。

378. It's very thoughtful of you. 你想得真周到。

379. May I speak to Lora,please? 我能和劳拉说话吗?

380. Mr.Wang is fixing his bike. 王先生在修他的自行车。

381. My brother is see king a job. 我弟弟正在找工作。

382. Nancy will retire next year. 南希明年就退休了。

383. Neither you nor he is wrong. 你没错,他也没错。

384. Opportunity knocks but once. 机不可失,时不再来。

385. She dressed herself hastily. 她匆忙穿上衣服。

386. She hired a car by the hour.她租了一辆按钟点计费的汽车。

387. Someone is ringing the bell. 有人在按门铃。

388. The Smiths are my neighbors. 史密斯一家是我的邻居。

389. These shoes don't fit right. 这双鞋不太合适。

390. This is only the first half. 这才是上半场呢。

391. This pen doesn't write well. 这钢笔不好写。

392. Would you like a cup of tea? 你想喝杯茶吗?

393. You really look sharp today. 你今天真漂亮。

394. Another cat came to my house. 又有一只猫来到我家了。

395. Check your answers with mine.把你的答案跟我的核对一下。

396. Don't keep the truth from me. 别瞒着我事实真相。

397. Everything has its beginning. 凡事都有开端。

398. He came to the point at once. 他一下子就说到了点子上。

399. He fell behind with his work. 他工作落后了。

400. He is the happiest man alive. 他是世界上最快乐的人。 401. He neither smokes nor drinks. 他既不抽烟也不喝酒。

402. He ran his horse up the hill. 他策马跑上小山。

403. He reminds me of his brother. 他使我想起了他的弟弟。

404. He was efficient in his work. 他工作效率高。

405. He will do anything but work.只要不是干活,他干什么都行。

406. His father runs a restaurant. 他的父亲经营一家餐馆。

407. I have something to tell you. 我有事要告诉你。

408. I smelled a smell of cooking. 我闻到了烧菜做饭的味道。

409. I want to see the film again. 我真想再看一遍。

410. I've got too much work to do. 我要做的工作太多了。

411. Let's go for a walk,shall we? 咱们出去走走,好吗?

412. Please let me check the bill. 请让我核对一下帐单。

413. Plenty of sleep is healthful. 充足的睡眠有益于健康。

414. The sun comes up in the east. 太阳从东方升起。

415. This is because we feel pain. 这是因为我们能感到疼痛。

416. What do you desire me to do? 你想要我做什么?

417. What you said was quite true. 你所说的完全符合事实。

418. You can either stay or leave. 你或者留下或者离开。

419. Your life is your own affair. 你的生活是你自己的事。

420. All that glitters is not gold. 发闪光的不全是黄金。

421. Are you going to have a party? 你要举行聚会吗?

422. Aren't you concerned about it? 难道你不担心吗?

423. Don't forget to keep in touch. 别忘了保持联系。

424. He broke his words once again. 他又一次违背了诺言。

425. He is in his everyday clothes. 他穿着平常的衣服。

426. He is taller than I by ahead. 他比我高一头。

427. He led them down the mountain. 他带他们下山。

428. He was trained to be a lawyer. 他被培养成一名律师。

429. I am afraid that l have to go. 我要走了。

430. I don't have any cash with me. 我身上没带现金。

431. I have been putting on weight. 我开始发胖了。

432. I have just finished the book. 我刚刚读完这本书。

433. I was late for work yesterday, 我昨天上班迟到了。

434. It appears to be a true story. 这故事似乎是真的。

435. I've got to start working out. 我必须开始做健身运动了。

436. Japan is to the east of China. 日本在中国的东部。

437. John asked Grace to marry him, 约翰向格雷斯求婚。

438. My watch is faster than yours. 我的表比你的表快。

439. New China was founded in l949. 1949年新中国成立。

440. Thanks for your flattering me. 多谢你的夸奖。

441. They charged the fault on him. 他们把过失归咎于他。

442. This car is in good condition. 这车性能很好。

443. This work itself is very easy. 这件工作本身很容易。

444. Truth is the daughter of time. 时间见真理。

PHP笔试准备题目之基础题目

问题
1.如何访问会话变量(session)?
A.通过$_GET
B.通过$_POST
C.通过$_REQUEST
D.通过全局变量
E.以上都不对

2.哪个函数能让服务器输出如下header?
set-Cookie: foo=bar;
答案:______________

3.在忽略浏览器bug的正常情况下,如何用一个与先前设置的域名(domain)不同的新域名来访问某个cookie?
A.通过HTTP_REMOTE_COOKIE访问
B.不可能
C.在调用setcookie()时设置一个不同的域名
D.向浏览器发送额外的请求
E.使用Javascript,把cookie包含在URL中发送

4.index.php脚本如何访问表单元素email的值?(双选)
<form action="index.php" method="post">
<input type="text" name="email"/>
</form>
A.$_GET['email']
B.$_POST['email']
C.$_SESSION['text']
D.$_REQUEST['email']
E.$_POST['text']

5.以下脚本将如何影响$s字符串?(双选)

<?php
$s = '<p>Hello</p>';
$ss = htmlentities ($s);
echo $s;
?>

A.尖括号<>会被转换成HTML标记,因此字符串将变长
B.没有变化
C.在浏览器上打印该字符串时,尖括号是可见的
D.在浏览器上打印该字符串时,尖括号及其内容将被识别为HTML标签,因此不可见
E.由于调用了htmlentities(),字符串会被销毁

6.如果不给cookie设置过期时间会怎么样?(d)
A.立刻过期
B.永不过期
C.cookie无法设置
D.在浏览器会话结束时过期
E.只在脚本没有产生服务器端session的情况下过期

7.思考如下代码:如果用户在两个文本域中分别输入"php"和"great",脚本输出什么?
<form action="index.php" method="post">
<input type="text" name="element[]">
<input type="text" name="element[]">
</form>
<?php
echo $_GET['element'];
?>
A.什么都没有
B.Array
C.一个提示
D.phpgreat
E.greatphp

8.在HTTPS下,URL和查询字串(query string)是如何从浏览器传到Web服务器上的?
A.这两个是明文传输,之后的信息加密传输
B.加密传输
C.URL明文传输,查询字串加密传输
D.URL加密传输,查询字串明文传输
E.为确保加密,查询字串将转换为header,夹在POST信息中传输

9.当把一个有两个同名元素的表单提交给PHP脚本时会发生什么?
A.它们组成一个数组,存储在超级全局变量数组中
B.第二个元素的值加上第一个元素的值后,存储在超级全局变量数组中
C.第二个元素将覆盖第一个元素
D.第二个元素将自动被重命名
E.PHP输出一个警告

10.如何把数组存储在cookie里?
A.给cookie名添加一对方括号[]
B.使用implode函数
C.不可能,因为有容量限制
D.使用serialize函数
E.给cookie名添加ARRAY关键词

11.以下脚本输出什么?(E)

<?php
ob_start();
for ($i = 0; $i < 10; $i++) {
echo $i;
}
$output = ob_get_contents();
ob_end_clean();
echo $ouput;
?>

A.12345678910
B.1234567890
C.0123456789
D.什么都没有
E.一个提示

12.默认情况下,PHP把会话(session)数据存储在______里。
A.文件系统
B.数据库
C.虚拟内容
D.共享内存
E.以上都不是

13.你在向某台特定的电脑中写入带有效期的cookie时总是会失败,而这在其他电脑上都正常。在检查了客户端操作系统传回的时间后,你发现这台 电脑上的时间和web服务器上的时间基本相同。而且这台电脑在访问大部分其他网站时都没有问题。请问这会是什么原因导致的?(双选)(
A.浏览器的程序出问题了
B.客户端的时区设置不正确
C.用户的杀毒软件阻止了所有安全的cookie
D.浏览器被设置为阻止任何cookie
E.cookie里使用了非法的字符

14.假设浏览器没有重启,那么在最后一次访问后的多久,会话(session)才会过期并被回收?
A.1440秒后
B.在session.gc_maxlifetime设置的时间过了后
C.除非手动删除,否则永不过期
D.除非浏览器重启,否则永不过期
E.以上都不对

15.哪个函数能把换行转换成HTML标签<br />?
答案:____________
参选
答案速查
1:E
2:setcookie/setrawcookie
3:B
4:BD
5:BD
6:D
7:A
8:B
9:C
10:B
11:E
12:A
13:BD
14:B
15:nl2br

答案详解

1.尽管在register_globals被设置为on时,可以通过全局变量来访问session,但在较新版本的PHP中,为了避免造成安全隐 患,php.ini文件已经把register_globals设置为off了。因此答案是E。

2.虽然header函数在这里也能用,但这题显然是在说setcookie或setrawcookie函数。

3.答案是B。浏览器不允许来自某个域名的HTTP事务更改另一个域名下的cookie,否则这将造成严重的的安全问题。

4.既然表单采用post方式传输,那么脚本将只可能从$_POST和$_REQUEST两个超级全局变量数组中取到值。元素名称(email)是 键名,因此答案是B和D。注意,由于可能导致潜在的安全问题,这里不鼓励使用$_REQUEST。

5.本题考验你对HTML编码的认识以及代码查错能力。变量$s在被函数htmlentities()处理过后,结果返回给了变量$ss,而$s自 己并没有被改变。因此答案是B和D。你可能觉得自己被戏弄了,但是记住,发现这样的小错误是捉虫能力中很重要的一部分。

6.如果没有设置过期时间,cookie将在用户会话结束时自动过期。cookie不需要服务器端会话的支持,因此答案是D。

7.表单使用post方式传输,所以无论在文本框中输入什么,其值都会传给$_POST超级全局变量,这里的$_GET数组没有值。答案是A。

8.HTTPS传输发生时,浏览器与服务端立刻完成加密机制的握手,之后的数据都是加密传输而不是明文传输――包括URL,查询字串。而在HTTP 传输中,它们都是明文传输的,因此答案是B。

9.对于收到的查询字串和POST信息,PHP只是简单的把元素添加进对应的超级变量数组中。结果就是如果有两个元素同名,前一个会被后一个覆盖。 答案是C。

10.只有B永远正确。虽然你可以用implode函数把数组转化成字符串,然后存在数组里,但却无法保证日后一定能用serialize()把这 个字符串还原成数组。浏览器对单个cookie有容量限制,因此在cookie里存储数组不是个好主意。但事情也并非永远是这样,你仍然可以存储一些比较 小的数组。

11.这又是一个考验debug能力的题。注意到了吗,在脚本的末尾,echo语句中的$output变量拼错了!脚本不会输出任何东西,答案是 D。

12.答案是文件系统(A)。默认情况下,PHP把所有会话信息存储在/tmp文件夹中;在没有这个文件夹的操作系统中(比如Windows),必 须在php.ini中给session.save_path设置一个合适的位置(如c:\Temp)。

13.B和D是最有可能出问题并应该深入调查的地方。由于浏览器访问其他网站都正常,所以不可能是浏览器程序出了问题。杀毒软件通常不会选择性的只 阻止安全的cookie(不过有可能会阻止所有的cookie)。你首先应当检查浏览器是否被设置为阻止所有cookie,这是最有可能导致该问题的原 因。同时,错误的时区设置也可能是根源――给cookie设置有效期时用得是GMT时间。可能会出现cookie在写入时就立刻过期,从而无法被脚本接收 的情况。

14.session.gc_maxlifetime设置的是用户最后一次请求到session被回收之间的时间间隔。尽管数据文件并没有被真正删 除,不过一旦session被回收,你将无法对此session进行访问。巧合的是,session.gc_maxlifetime的默认设置正好是 1440秒,但这个数字是可以被系统管理员调整的。所以答案应该是B。

15.函数nl2br能实现这个功能。

企业各职位英文缩写

GM(General Manager)总经理
VP(Vice President)副总裁
FVP(First Vice President)第一副总裁
AVP(Assistant Vice President)副总裁助理
CEO(Chief Executive Officer)首席执行官,类似总经理、总裁,是企业的法人代表。
COO(Chief Operations Officer)首席运营官,类似常务总经理
CFO(Chief Financial Officer)首席财务官,类似财务总经理
CIO(Chief Information Officer)首席信息官,主管企业信息的收集和发布
CTO(Chief technology officer)首席技术官 类似总工程师
HRD(Human Resource Director)人力资源总监
OD(Operations Director)运营总监
MD(Marketing Director)市场总监
OM(Operations Manager)运作经理
PM(Production Manager)生产经理
(Product Manager)产品经理

TM( Team   Manager )
PM( Project Manager ) 项目经理
PL( Project   Leader ) 项目组长
TL( Team   Leader )
SE( System   Engineer ) 系统工程师
BSE( Bridge System Engineer)
PG( ProGrammer ) 程序员
其他:
CAO: Art 艺术总监
CBO: Business 商务总监
CCO: Content 内容总监
CDO: Development 开发总监
CGO: Gonverment 政府关系
CHO: Human resource 人事总监
CJO: Jet 把营运指标都加一个或多个零使公司市值像火箭般上升的人
CKO: Knowledge 知识总监
CLO: Labour 工会主席
CMO: Marketing 市场总监
CNO: Negotiation 首席谈判代表CPO: Public relation 公关总监
CQO: Quality control 质控总监
CRO: Research 研究总监
CSO: Sales 销售总监
CUO: User 客户总监
CVO: Valuation 评估总监
CWO: Women 妇联主席
CXO: 什么都可以管的不管部部长
CYO: Yes 什么都点头的老好人
CZO: 现在排最后,等待接班的太子