Jennifer Lin’s Weblog

September 28, 2008

拿破仑·希尔 成功之道 摘句

Filed under: Life — jennyca @ 2:32 am

建立信心的重要因素:
1、 习惯提供更多更好的服务,不计酬劳。
2、 只做双方都能平等互惠的交易。
3、 不说没有把握的话,不论说谎能得到多少暂时的利益。
4、 发自内心为别人提供最好的服务。
5、 培养对人健康的亲善态度;喜欢对方甚于他们的钱。
6、 努力地生活,销售时同时传达你的工作理念,行为胜于言语。
7、 受人恩惠,不论大或小,必定加以回报。
8、 不随意对别人提出要求。
9、 不与人争辩无谓的琐事。
10、 随时随地把温暖带给别人,做一个快乐的人。
11、 为你所销售的东西提供售后服务,那是推销员维持老主顾的最佳保证。
12、 记住,如果你成功,是有人帮助你成功。

为自己想要的忙碌,如此即无暇担忧你不想要的。

自工作中学习的人,等于别人付钱让他上学。

把你的恐惧留给自己。别人有别人的恐惧。

不必给我意见。给我事实,我会有自己的意见。

你不能控制别人的行为,却能控制自己的反应。

个人进取心的主要特质:
订立明确目标
不断追求明确目标的动机
成立智囊团以期获得达到目标的力量
独立
自律
以\”赢的意志\”为基础所建立起来的坚毅精神。
有所节制和导引的丰富想像力。
迅速且明确的决策的习惯。
以事实为根据发表意见而非猜测。
要求自己多付出一点点的习惯。
激发热忱和控制热忱的能力。
要求细节的习惯。
听取批评而不动怒的能力。
熟悉十项基本的行为动机。
一次致力于一项工作的能力。
为自己的行为负更多责任的能力。
为属下的过失承担所有责任的意愿。
对属下和朋友付出耐心。
随时保持积极心态。
运用信心的能力。
贯彻到底的习惯。
强调彻底而非强调速度的习惯。
可信赖性。

自怜习惯是一项必须努力克服的障碍,这项努力必然会对你迈向成功的过程有所帮助。

积极心态,是无论在任何情况下,都应具备的正确心态。这种心态是由\”正面\”的性格因素所构成的,诸如”信心”、”正直”、”希望”、”乐观”、”勇气”、”进取心”、”慷慨”、”耐性”、”机智”、”亲切”,以及”丰富的常识”。

好习惯:明确目标,信心,个人进取心,热忱,自律,多付出一点点

17项成功原则:
1、 设定明确目标
2、 组织智囊团
3、 培养具吸引力的个性
4、 展现应有的信心
5、 多付出一点点
6、 创造个人进取心
7、 培养积极心态
8、 控制的热忱
9、 强化自律
10、 正确地思考
11、 控制你的注意力
12、 激发团队合作精神
13、 从逆境和挫败中学习经验
14、 培养创造力
15、 保持健康
16、 预算时间和金钱
17、 运用宇宙习惯力量

把你的注意力集中在你所渴望的事实上,并且使它远离你看到的事情。

播下行为的种子,你就会收割习惯,
播下习惯的种子,你就会收割性格,
播下性格的种子,你就会收割一定的命运。

如何以积极的心面对问题?
1、 祈求神圣的力量,指引你找出正确的解决方法。
2、 仔细思考。记住,所有的逆境中,都藏着成功的种子。
3、 说出问题,分析并加以澄清。
4、 真心地告诉自己:有问题,很好!
5、 问自己:
(a) 这次的问题有什么意义?
(b) 这次的逆境藏着哪些成功的种子?我该如何把这次的负债变成更大的资产?
6、 不断思索这些问题,直到至少找出一个可行的答案为止。

http://club.youshang.com/4/viewspace-2856

自强不息 厚德载物

Filed under: Life — jennyca @ 2:17 am

自强不息 厚德载物——清华大学校训解释:来源于《周易》的两句话:一句是“天行健,君子以自强不息”(乾卦);一句是“地势坤,君子以厚德载物”(坤卦)。民国时 期,梁启超在清华大学任教时,曾给当时的清华学子作了《论君子》的演讲,他在演讲中希望清华学子们都能继承中华传统美德,并引用了《易经》上的“自强不 息”“厚德载物”等话语来激励清华学子。此后,清华人便把“自强不息,厚德载物”8个字写进了清华校规,后来又逐渐演变成为清华校训。

“天行健,君子以自强不息”“地势坤,君子以厚德载物”两句意谓:天(即自然)的运动刚强劲健,相应于此,君子处世,应像天一样,自我力求进步,刚毅坚 卓,发愤图强,永不停息;大地的气势厚实和顺,君子应增厚美德,容载万物。译为:君子应该像天宇一样运行不息,即使颠沛流离,也不屈不挠;如果你是君子, 接物度量要像大地一样,没有任何东西不能承载。

人世沉浮如电光石火,盛衰起伏,变幻难测。如果你有天才,勤奋则使你如虎添翼;如果你没有天才,勤奋将使你赢得一切。命运掌握在那些勤勤恳恳工作的人手中。推动世界前进的人并不是那些严格意义上的天才,而是那些智力平平而又非常勤奋、埋头苦干的人;不是那些天资卓越、才华四射的天才,而是那些不论在哪一个行业都勤勤恳恳、劳作不息的人们。

天赋超常而没有毅力和恒心的人只会成为转瞬即逝的火花。许多意志坚强、持之以恒而智力平平乃至稍稍迟钝的人都会超过那些只有天赋而没有毅力的人。懒惰是一种毒药,它既毒害人们的肉体,也毒害人们的心灵。无论多么美好的东西,人们只有付出相应的劳动和汗水,才能懂得这美好的东西是多么的来之不易。

真正的智慧总是与谦虚相连,真正的哲人必然像大海一样宽厚。浅薄的嫉恨和无知的轻蔑都是真正不尊重劳动、不尊重勤劳的表现。人们常说:播下行为的种子,你 就会收割习惯;播下习惯的种子,你就会收割性格;播下性格的种子,你就会收割一定的命运。 “闻鸡起舞早耕耘,天道酬勤有志人。”让我们养成勤劳的习惯,培养勤奋的性格,收割丰收的果实!

我曾对人说,我国学校校训之最佳者,当推清华大学的校训,因为它表述的是传统文化的精粹。“自强不息”,出于《易·乾象》:“天行健,君子以自强不息。” 天上的日月星辰在不断运行,这就是“天行健”的意思。君子效法天,要像天那样不断运行,不断努力。“厚德载物”,见《易·坤》:“地势坤,君子以厚德载 物”。土地的地势就是厚广,可以承载万物,君子取法地,要积累道德,方能承担事业。

所以,自强不息,厚德载物,是要人们效法天地,在学、行各方面不断去努力。传统文化强调“天人 合一”,人源于天地,是天地的派生物,所以天地之道就是人生之道。古代不少学者,能深刻体认这种精神并自觉加以践履,如孔子,自述“发愤忘食,乐而忘忧, 不知老之将至”。孔子有一次在河边对学生们说:“逝者如斯夫,不舍昼夜。”就是激励他们效法自然,珍惜时光,努力进取。

http://baike.baidu.com/view/83476.htm

September 21, 2008

Here you go

Filed under: English — jennyca @ 10:42 pm

“Here you go.”指的是一件事情还在进行之中,而 “There you go.” 则是事情已经结束,例如店员正把你买的东西交付给你,他会说“Here you go.”而不是“There you go.”反之,如果东西己经到了你手上,则他会说的是“There you go.”

此外,”Here you go.” 和 “There you go.” 一样,也有鼓励别人的意思在里面,比如打棒球的时候,每次有人大棒一挥,老美就会兴奋地大叫 “Here you go.” 问题是他们为什么不说“There you go.”呢? 因为球在飞行当中算是一个过程,你还不知道结果,所以要用“Here you go.”会比较正确,而事实上老美也正是这样子用的喔!

Simultaneous interpreting

Filed under: English — jennyca @ 5:15 am

What is espresso and cappuccino?

Filed under: Life — jennyca @ 5:07 am

Espresso is a small demitasse cup of strong coffee produced on a machine designed just for that purpose. Coffee is placed into an espresso machine and hot water is forced through the coffee at very high pressure extracting all the flavor possible. This is the reason that the coffee must be dumped out after every cup made. The Italian word espresso translated is express. Each cup of espresso is made individually and then quickly served to the customer, hence the name.

Cappuccino starts out with one espresso brewed in a larger cup, then milk, which is steamed into a thick froth, is poured on top of the espresso. Chocolate is sprinkled on top to give it a finishing touch.

http://www.europa-co.com/whatis.html

September 19, 2008

sql*plus autocommit and exit

Filed under: SQL*PLUS — jennyca @ 3:14 am

A transaction is demarkated by savepoints or commit or rollback not by statements.

A transaction ends when any of the following occurs:

  • You issue a COMMIT or ROLLBACK (without a SAVEPOINT clause) statement.
  • You execute a DDL statement (such as CREATE, DROP, RENAME, ALTER). If the current transaction contains any DML statements, Oracle first commits the transaction, and then executes and commits the DDL statement as a new, single statement transaction.
  • A user disconnects from Oracle. (The current transaction is committed.)
  • A user process terminates abnormally. (The current transaction is rolled back.)

exit commits all pending changes by default, logs out of Oracle, terminates SQL Plus and returns control to the operating system. If we wanted to exit SQL Plus without committing, we should have either issued a rollback then an exit or just simply exit rollback. Note that both SQL Plus commands exit and quit are identical and have the same behavior.

EXIT defaults to COMMIT the current transactions.

Autocommit causes a commit to be issued after every statement.

September 14, 2008

技巧:驾车碰到这10种紧急状况如何应对

Filed under: Life — jennyca @ 3:59 pm

开车上路难免会遇到一些意料之外的险情,尤其是新手,碰到问题的时候往往手足无措,严重者则可能酿成事故。今天在这里我们将对您在用车过程中也许会遇到的一些险情加以预见,主要是给大家一些应对紧急状况的办法,因为人车合一之时,生物与机械的命运已不分你我。

紧急状况一: 轮胎的种种劣迹:失压、爆裂、脱落……

【危情】车头突然左右摇摆,方向突然加重,前轮噪音巨大,车辆控制迟钝,向右打方向车还是往左跑,甚至“砰”的一声巨响,很多人的第一反应是“见到了鬼”。

【应对】尽管不怕才怪也要莫念“不怕,不怕”,切忌慌乱。双手紧握方向盘向正前方行驶,切记不要猛踩刹车,注意后车,打转向慢慢向路边滑停。

【原因】一般都是因为轮胎失压或者爆裂了,简称“轮胎躁狂症”。之所以它们会如此粗暴多半是因为驾车的人使人家压到异物、轮胎侧面与马路牙发生过挂蹭或胎压不正常。尤其是前轮的罢工,危险系数高不能估。

【平时】聆听车辆的正常心跳是杜绝任何事故隐患的不二法门。按照保养手册该换轮胎一定不能省,平时常测胎压是好习惯。少压异物、水坑,少与路边发生挂蹭,少原地打方向。

紧急状况二: 行驶中车突然侧滑

【危情】雨雪路面或紧急避让时,车头发生不可控的偏移,且行驶方向与车头指向不一致。

【应对】切忌踩刹车或者猛打方向修正,一定会矫枉过正。应该向测滑的反方向轻打方向修正,使前轮一直指向车辆准备行驶的方向(可参看头文字D,不建议 练习),并轻微加油保持车头在前。修正过头车辆回反方向测滑。如果情况加剧则说明修正力度过大,下次更柔和一些。如果情况过于危机,直接用车辆的侧面挂蹭 防撞护栏和山体也是没办法的办法。

【原因】轮胎与地面失去全部或部分摩擦(人能走,车能跑,都是因为有摩擦力,人和车都在地上,那是因为有地心引力)。

【平时】以安全速度驾驶是上策。遇到雨雪路面应柔和降低车速,缓慢通过。车辆一旦开始侧滑,ABS和ESP都救不了你。

紧急情况三: 汽车转向突然失控

【危情】很奇怪的突然向突感空,没有任何阻力,车照走,仿佛自动驾驶,前途未卜;或是方向重量基本不变,但车辆不受控制;或是方向变得很重,难以转动,车辆向非理想方向去也。

【应对】行驶已经基本不受控,因此唯有尽快把车停住,尽量给后车留一些空间,其他只好听天由命。如果方向很重但还能控制则尽量继续控制车辆的行走方向。

【原因】方向盘脱落(不要笑,这是真事);前悬挂转向支架球头断裂或拉杆断裂;半轴脱位;熄火;在转向过程中猛加油门。

【平时】竖起耳朵注意车辆前部异响并尽早排除。另外要在可靠的商家进行定期维护保养以及装饰改进。同时在车辆急转弯时切误急加油。

紧急状况四: 嗅到烧焦气味

【危情】类似电线烧糊的味道或者废气味。极其危险。

【应对】在行驶中闻到异常气味应立即安全停车,不要等看到烟啦。熄火后拿到灭火器在离开车辆一定距离(如空气中的味道比车上大则尽快驶离)的地方观察 车辆,不要贸然打开发动机盖检查。在确认无明火或烟的情况下,再打开机头盖检查。在明确找到原因后依情况选择坚持开到维修点或等待救援。

【原因】车上线路发生故障;机件故障。

【平时】改装车辆要谨慎,对于车内线路的改装要严密包扎并良好固定。对于任何新增的线路要加装熔断保险。汽车使用的是12V直流电源,一旦短路而无保护,起火是几乎是不可避免的。

紧急状况五: 可怕的刹车失灵

【危情】在行驶中踩下刹车踏板车辆没有减速,大多数的驾驶员会感觉车辆反而加速,因此会非常慌乱甚至踏到油门。

【应对】第一反应是松开油门直视前方,保持对车辆行走方向的控制,以便躲避碰撞。手波车应立即挂入2挡甚至1挡,右手握住手刹。在正确判断前方情况下拉紧手刹辅助减速。在车辆速度很低的时候可选择熄火辅助停车。

【原因】刹车油泄漏;刹车连杆断裂;刹车踏板下有异物(还记得那个日本电影吗?可恶的可乐瓶被人放到刹车踏板下,太邪恶了)。

【平时】车辆的定期保养,此非常关键,一个可靠的服务点不仅能使车辆的受命延长,也能延长驾驶员的寿命。

紧急状况六: 车辆涉水、发动机进水

【危情】人脑子进水,就会发生智障。车湿身后,那问题也挺多。

【应对】如果已经潜水了,那赶紧踢开或砸开窗子逃生,车子的天窗在这种情况下是有利的紧急出口。若是涉水前行,那有两种通过方式:1、水浸高度远低于 安全涉水高度,以一挡2000转匀速下水。不要收油,要停的话也踩离合拉手刹,保持转速。自动波的相对简单一些,左脚踩刹车,右脚稳住油保持转速匀速通 过。2、水浸高度远接近进气口,但是又非过不可,只能冒险一试了。出水后,大力踩几脚刹车以使刹车片温度上升,蒸发水分。若发动机已进水,请打救援电话即 可。

【原因】未改装的家用轿车进气口一般在发动机的最高处,距地面约50公分以上,但进气导气管大多不具备水密功能,因此实际安全涉水高度基本与前轮轮毂顶部齐平,在40公分左右。而排气管口距地面在20公分左右,在涉水时极易因排气压力减小而吸水造成发动机熄火。

【平时】原地等候或冒险一试,熟悉周围道路情况,发水时选择性行驶,或祈祷自己不要碰到这样的情况。真的那么幸运,也要擅长应用前车之鉴,有车已挂,请不要效仿。

紧急状况七: 水箱漏水

【危情】水温异常,熄火。注意空调水滴答滴答那是没有问题的。

【应对】千万不要立即检查水箱并打开水箱盖,谨防烫伤。待车辆冷却后再检查水箱内冷却液的液面。1、如果液面不低,则可能是其他机件问题。如离维修地 点不远,可尝试将空调温度调到最高风力最大,打开窗户,坚持行驶到最近的维修点检查。如仍水温然很高,则停车等待救援。2、冷却液严重缺失,检查漏水部 位,并就近寻找水源,只要不是饮料都可以加进水箱坚持行驶到就近的维修地点。能够对漏水部位进行简单处理更好。

【原因】冷却液缺少;电子风扇温控开关失灵或风扇失灵;发动机水套与气缸贯通(呲缸);外力击穿水箱。

【平时】车上的每一个仪表都不是虚设的,有其存在的价值,因此在行车时除了注意观察速度表、油耗表以及路边的PLMM以外,也要注意观察水温的异常变 化。不要在水箱中添加自来水,或矿泉水,特别是在水质偏硬的地区。应当加入防冻液,可混入少许蒸馏水。在水温不正常的初期就应立即检查或更换水箱,以免路 上抛锚。在进行长途驾驶特别是到人烟稀少的地区时,车上常备一大桶蒸馏水是非常有必要的。

别大意!以下3种情况也要当心……

紧急状况八: 撞车党、打劫

【危情】有人强行拦车或在路边招手求助或者是越想越不对劲地擦碰。

【应对】首先减速,观察拦车人的外观,如制服、警徽、警章、警车、枪械齐全,仪态端庄严肃,则应按照警察的指挥,靠边停车接受检查。但近期经常发现有 匪徒冒充警察实施抢劫,因此在感觉对方有问题时,不妨根据自己车辆的情况和驾驶能力迅速离开现场并立即报警。怀疑遇到撞车党时,一定要报警,不能私了。

【原因】另一种养路费。

【平时】在道路上伸出援手是人之常情,但是往往有不法分子利用人性而做出非人性的事,因此还需要实际情况,实际处理。

紧急状况九: 钥匙掉到WC或什么地方

【危情】哎呀,糟了。

【应对】不轻易冲水,捞出失物,将电池拿下,用水冲洗了,不行再说。

【原因】不小心这个理由很苍白无力。

【平时】不随便去WC或者不拿钥匙或者不拿钥匙去WC,反正不要使车钥匙与WC亲密接触。

紧急状况十: 车轮掉入坑洞

【危情】低速通过井洞掉入,卡住底盘无法动弹。

【应对】转弯不注意或被前车挡住。

【原因】若前驱车前轮掉落井中,最方便办法可找2-3人抬其车身,之后由司机挂倒挡加油即可脱离困境;若后轮掉落抬后车身向前加油即可。后驱车同理。

【平时】开车时不要眼大漏神,要知道很多人就是吃这碗饭地。

http://info.51.ca/article/acyz/csjq/2008/09/11/158420.shtml

一个孤独而封闭世界――英语口语

Filed under: English — jennyca @ 12:33 am

作者:王宏

从小到大,除了汉语之外,我只学了两门语言——德语和英语,父母就是某外语大学的德语老师,从小学开始起我就学习德语,而英语我是从初一才开始 学的,人家说德语非常的难,是个从一开始就困难重重的语言,而对我来说,英语才是个味同嚼蜡的“低产”学科,付出和收获完全不成比例。中学,大学,我都尽 力逃避它,可是就在几年前我工作了,这个难题就无法避免了。老板是个德国人,英语说非常溜,我经常要处理一些英文的信件,应付一些不得不应付的人。应该说 我是个努力的“笨蛋”,十几年的英语学习虽然很努力,也未能使我张口就来。然而我也是个任性的“阿甘”,不到一年的时间,我从一个张嘴就结结巴巴的青年到 和可以和外国朋友地道的开玩笑的人了。

下面我说的方法,肯定是令任何英语的专业人士所不齿的,也是冒着被眼下各种五花八门的但是价格昂贵的口语辅导班告上公堂的危险写的。我写这篇文 章的一大目的就是想让那些花了八千到一万人民币去学习雅思英语,外教口语的“有钱人”回到家里来自己多想想办法,写这篇文章更主要目的是希望学习英语的人 应该永远记住:“朗读和背诵是出口成章的第一步”

我上面说的话只是为了提高非英语专业人士的兴趣和信心,要知道信心不足的话,多好的方法使用出来,都会事倍功半的。 好了,“先务虚,后务实”,对了,忘记说一下我的书包了,工欲善其事,必先利其器,谈谈我自己的书包吧,有人肯定会问,为什么不是书柜?请问: 如果你有了一书柜的书之后,你还想把它们都背下来么?所以我只谈必备之物:一本新东方的分类词汇书,一个MP3,注册一个免费的UNSV 用户,只用铅笔进行更新的steno note(速记本)。好了,从我的书包开始,和大家说说自己一个人学习口语的方法吧。

能说好的一个大前提就是“听”,一个听不懂别人说话的人,自然也张不开口回答别人的问题或者做交流,学习听力的方法很简单的,一个带双定语的词 组就可以概括――大量而且有效的练习,中国学生从来不惧怕“大量”这两个字,可是“有效”,有几个人能做到呢?这就涉及到一个方法问题,如果有机会,再和 大家探讨吧,在主要是谈我从“听”中学习口语的方法。

首先,一定要学习VOA,多听多背。

不管是special 还是standard,主要是它发音标准,内容紧扣时代,长短适中,题材广泛,能帮助你在学英语的同时拓展知识面,更令人感动的是,每次VOA开始的时 候,悦人的旋律中间,演播者都会轻声慢语的告诉你,这段新闻是属于哪种类别的(经济,政治,传记,农业等等),由于这句话的提醒,你能迅速的给自己的思路 做个定位,给下面的听力做个预先的打算。

网络资源如此丰富,用你注册的免费身份多多的下载一些VOA资料。这里就用上MP3了,把下载的资料都保存上去。有一个好的MP3很有意思,注 意是好的MP3,质量包修,一年包换的那种,而不是刻意去买贵的,如果很贵的MP3,我想没人舍得连睡觉都要带着耳机听了。MP3的效果很好,基本没有杂 音,能帮助我们听清楚每个音节。

可能有的朋友会问我,每个音节?有必要么,知道大概的意思不就行了么?完全有必要,平时的练习就是要每个音节都搞定的。不是要一次就听懂,至少 要四五次,第一次要大概的听,专心的理解都说了什么意思,可能听完之后,很多地方不明白,也没记住。第二遍和第三遍要慢慢的听,听懂,还要写下来大概,这 时候稍微松了口气;第四遍是一句一句的听,把刚才的空白填上,填不上的就按照音节猜一个字出来。 然后把自己的稿子拿起来看看,都哪些地方不会写,哪些地方怎么听都不明白,哪些是地点和名字之类的名词,哪些是自己的语法错误。然后查出来生词,背下来句 型,分析里面的结构。

下一步也有必要,自己把英语原文翻译成中文,再从中文翻译成英文,反反复复一句一句的,大声的朗诵出来。这个过程也许很痛苦,但是哪怕你只坚持了一篇文章下来,就马上会感到有收获了,坚持几天,你会习惯,而且乐于做这种练习了,万事开头难,试试就知道乐趣了。

其次,看英文版的电影,最好有中英文对照的字幕。

学习英语的过程,是锻炼语感的过程;而培养语感的过程也是锻炼记忆力的过程。很难想象一个记忆力不好的人,能自如得说一口好的英语。看英文电影 是个封闭的学习过程,最好不要和朋友们一起嘻嘻哈哈的看,大吃二喝的看,或者一个人迷迷糊糊躺在床上看,要自己用心去体会和酝酿,你可以充满感情的观赏, 开怀的大笑,放纵的评论,也可以会心的微笑,情不自禁的流泪,不管过程多难,只有自己一个人度过,才能尝到个中的“百般滋味”。好好享受这种孤独吧,有时 候苦也是甜……

拿一盘经典的英文故事片来,对白清楚,明晰(当然不要找歌剧,或者机器人,太空人,未来战士之类的科幻片来,那是自己给自己找麻烦,呵呵),我 找的是文艺片《阿甘正传》、《毕业生》和《蒙娜丽莎的微笑》等等,天知道我看了多少遍《阿甘正传》,总之,在连续看了几天之后,我很懒得说话了,因为一张 嘴就想说英语;走在大街上,路边叫卖的小贩,蹦跳的中学生,路过的行人,他们说话的发音也好像都是英文。就是现在,每当再次看“阿甘正传”的时候,人物对 白开始的时候,我就能张口同期复述,连频率都相同,仿佛我在学唱一首很有节奏感的歌曲。

现在的我终于有了人家专业选手说的“语感”了,我有了开口说英语的欲望,但是我还是无法说流利的,迅速的英语,那种张嘴就来的英语。见到老外的 时候也想说英语,但是有时候又被一种东西抓住,无法说出话来。尤其是遇到一些事情的时候,工作或者接待外宾的时候,需要介绍一些东西给朋友的时候,我能做 到交流,但是难以流畅,难以随心所欲的想到哪里就说到哪里。我想是需要一些改变的时候了。我试着转换了自己的学习方式,开始尝试用自己的方法对付更加复杂 一些的环境……

第三种方法,分类学习场景词汇和句型。

分类非常重要,我仔细考虑过,原先不敢张口不是因为我的句型,类别词汇积攒的不够,尤其是在某些场景下,不知道一些词汇该怎么把握,甚至想不出一些能代替的词组。我去拿了新东方的分类词汇,好好的看了两个月。

第一遍是将分类词汇里面的生词,句型搞明白了,看懂得了。有些句型好的,我会反复的念好几遍,象个儿童学说话似的,其实我不是不认识这些单词,我是想锻炼自己脱口而出的习惯(这点上有点象李阳的疯狂英语,不是么?)。

第二遍是根据我收集的这些分类词汇和句型,假想了一些场景,象演电影似的走台,而且尝试用很多种方法和句型用到这些词汇。想知道演员的记忆力为 什么好么?因为他们总是身临其境的背诵东西,你可以加上肢体动作,这种身临其境的动作可以帮助我们增强兴趣,提高各种句型和词汇运用的灵活程度,而且加长 学习时间,久而久之,你锻炼得能快速的背诵任何枯燥的对白,而且能背的很准,很有感情。别怕人家当你是疯子,疯子不是白痴,就算是英国的白痴他说话也说不 溜。

第三遍,需要再次强调的仍然是,大量有效的练习。在上面的过程中,要有重点的用一些句子,甚至是一些长句。别怕句子长了,会上气不接下气的说不 下来。长句子要象上学时候背名词解释似的多念几遍。那些长的,难发音的单词,也要说它十遍二十遍,都会熟练的发音了。想想如果这些难词难句,我们现在都能 流利并且不假思索的脱口而出,哪个老外敢说你口语不过关?

第四种方法,大量而有效的泛译。

其实英语不是我们的母语,所以我们思维有时候在中文和英文中徘徊,这是很正常的,试问哪位高手会完全没这种感觉呢?一会想说中文,一会又想说英 语,思维和行动有时候不是很一致。这是好事,但是别总是指望语感,多遭遇一些场景,多做一些练习,练习的量要扩展到所有的生活中,工作中会遇到的事情都能 用英文表达出来。自己走到哪里就练到哪里,不管遇到什么事情,都要突然有兴趣的想想,哦?用英语怎么说呢?

打开MP3的录音功能,找一篇英汉互译的文章,最好和自己的专业或者工作有关系的文章(这样兴趣会大很多,而且熟悉的词汇也会很多,而且可以在 工作中立竿见影的看到效果,有时候你今天练习了,明天就发现自己用上了)。字正腔圆的把中文念出来,然后不看英文,自己翻译英文,把蹩脚的英文也说出来, 然后看着人家英文原文写的念一遍,分析的过程也可以说出来,以上过程都要一句一句得过,直到把这篇短文分析完。

这段录音,请不要删除,临睡以前听听吧,就能发现很多自己发音怎么那么不注意细节?怎么发音含糊不清呢?自己翻译时候的心态怎么那么紧张?句子 结构为什么会溃不成军?而原文的翻译多么自然和流畅,原文比自己翻译的简单很多,而且也恰当很多。一篇文章下来,就会收获多多,这仿佛是在模拟考试,紧张 而且高效,后来的分析句子过程,也让自己有了考后上老师复习课的感觉,自己当自己的老师,自己给自己上课,有趣而且容易专心。我知道你害怕这个过程,很苦 很残酷,但是请坚持,坚持,再坚持,要知道想出去和人家说英语,就要自己真的会说,学习的世界,本身就是一个孤独而封闭的世界。

最后,不管多熟练,都要临时抱佛脚,想象各种场景的对话。

经过以上锻炼,我们终于可以走出去和老外说说英语了。不过仍不可掉以轻心,每次活动之前,都应该抱抱佛脚,再次加工一下。出门前的一个小时,仍 需演员上场前的彩排,详细的考虑,第一个场合会是什么事情,要见什么人,他背景如何,可能会涉及哪些问题……第二个场合呢?我准备了好些句型,已经成型的 句子来应对每一件事,有时候要准备好几个句型。甚至突发事件,也要想好哪些话可以应对,哪些方法可以解决,如果解决不了,找谁来帮自己。所有这些都准备好 之后,我还会顺便猜想一下,自己看过的英文笑话中,哪个可能会今天会遇到,想起这些笑话都会忍不住的会心一笑(其实英文版的笑话和翻译成中文的笑话,内涵 的意味完全不同了)。

学习英语口语的历程是孤独的,在走出去大声而且流利的说出来之前,应该是个相对封闭的世界。它仿佛是个勇敢者的游戏。一个“胸无点墨”的人难以 做到“下笔如有神”,一个“腹无诗书”的人也做不到“口若悬河”。在学习英语口语的方法上,我不是片面鼓吹闭门造车者,也不是脱离现实生活,跟着感觉走的 人。但是没有台下的“十年功夫”,难以做好台上的十分钟“演出”,没有“厚积”确实不会有后来的“薄发”,这个道理我是经历过才明白的。

http://www.unsv.com/learningenglish/experience/articles/2005/06/30/3847/

It takes intelligence, diligence and perseverance to master English.

September 10, 2008

PLS-00204

Filed under: ORA Errors — jennyca @ 8:37 pm

Oracle Error :: PLS-00204

function or pseudo-column “string” may be used inside a SQL statement only

Cause

A pseudocolumn or proscribed function was used in a procedural statement. The SQL pseudocolumns (CURRVAL, LEVEL, NEXTVAL, ROWID, ROWNUM) can be used only in SQL statements. Likewise, certain functions such as DECODE, DUMP, and VSIZE and the SQL group functions (AVG, MIN, MAX, COUNT, SUM, STDDEV, VARIANCE) can be used only in SQL statements.

Action

Remove the pseudocolumn reference or function call from the procedural statement. Or, replace the procedural statement with a SELECT INTO statement; for example, replace bonus := DECODE(rating, 1, 5000, 2, 2500, …); with the following statement: SELECT DECODE(rating, 1, 5000, 2, 2500, …) INTO bonus FROM dual;

September 9, 2008

Why am I getting errors when I try to use the utl_file package to write a flat file ?

Filed under: PL/SQL — jennyca @ 8:15 am

The following is an example procedure to dump a table in one of my schemas to a flat file on the server.

CREATE OR REPLACE PROCEDURE EmployeeFlatFile
IS
  file_id UTL_FILE.FILE_TYPE;
BEGIN
  file_id := utl_file.FOPEN( '/temp', 'test.txt', 'w' );
  FOR emp IN (SELECT employee_name FROM employee)
  LOOP
     utl_file.PUT_LINE( file_id, emp.employee_name );
  END LOOP;
  utl_file.fCLOSE(file_id);
END;
/

When I run it, I get the following not very helpful error message :

SQL> execute EmployeeFlatFile;
BEGIN EmployeeFlatFile; END;
*
ERROR at line 1:
ORA-06510: PL/SQL: unhandled user-defined exception
ORA-06512: at "SYS.UTL_FILE", line 98
ORA-06512: at "SYS.UTL_FILE", line 157
ORA-06512: at "CMDB.EMPLOYEEFLATFILE", line 5
ORA-06512: at line 1

The first thing I need to do is insert some exception handling so that I can see exactly which of the user defined exceptions the UTL_FILE package is raising.

CREATE OR REPLACE PROCEDURE EmployeeFlatFile
IS
  file_id UTL_FILE.FILE_TYPE;
BEGIN
  file_id := utl_file.FOPEN( '/temp', 'test.txt', 'w' );
  FOR emp IN (SELECT employee_name FROM employee)
  LOOP
     utl_file.PUT_LINE( file_id, emp.employee_name );
  END LOOP;
  utl_file.fCLOSE(file_id);
EXCEPTION
  WHEN utl_file.invalid_path THEN
    RAISE_APPLICATION_ERROR(-20001, 'utl_file.invalid_path');
  WHEN utl_file.invalid_mode THEN
    RAISE_APPLICATION_ERROR(-20001, 'utl_file.invalid_mode');
  WHEN utl_file.invalid_filehandle THEN
    RAISE_APPLICATION_ERROR(-20001, 'utl_file.invalid_filehandle');
  WHEN utl_file.invalid_operation THEN
    RAISE_APPLICATION_ERROR(-20001, 'utl_file.invalid_operation');
  WHEN utl_file.read_error THEN
    RAISE_APPLICATION_ERROR(-20001, 'utl_file.read_error');
  WHEN utl_file.write_error THEN
    RAISE_APPLICATION_ERROR(-20001, 'utl_file.write_error');
  WHEN utl_file.internal_error THEN
    RAISE_APPLICATION_ERROR(-20001, 'utl_file.internal_error');
  WHEN OTHERS THEN
    RAISE_APPLICATION_ERROR(-20001, 'utl_file.other_error');
END;
/

Now when I run it, I get a more meaningful error message. If you are having UTL_FILE problems, then I suggest that you add the exception handling above to convert the not very helpful errors in the original version of my procedure to something like the following :

SQL> execute EmployeeFlatFile;
BEGIN EmployeeFlatFile; END;
*
ERROR at line 1:
ORA-20001: utl_file.invalid_path
ORA-06512: at "CMDB.EMPLOYEEFLATFILE", line 13
ORA-06512: at line 1

Now it all becomes clear – I have an invalid path specified. At least I know where to go to look for the cause(s) of the problem. UTL_FILE is very sensitive to its setup.

Setting up UTL_FILE

Up to Oracle 9.0.1 or 9i Release 1

set the UTL_FILE_DIR initialisation parameter in initSID.ora. You can have a single parameter with all allowed directories :

UTL_FILE_DIR = (/tmp, /oracle/oracle817/admin/CMDB/utl_file)

or a list :

UTL_FILE_DIR = /tmp
UTL_FILE_DIR = /oracle/oracle817/admin/CMDB/utl_file

Warning : You cannot have any other parameters between the two. If you do, then only the last directory will be used, the first will not be valid. The following is wrong :

UTL_FILE_DIR = /tmp
DB_BLOCK_SIZE = 8192
UTL_FILE_DIR = /oracle/oracle817/admin/CMDB/utl_file

In this case, only /oracle/oracle817/admin/CMDB/utl_file will be acceptable. If you try to use /tmp, you’ll get an invalid path exception thrown.

Once you have changed the initSID.ora file, you must now close and restart the database.

Warning : do not set the UTL_FILE_DIR parameter to ‘*’ as this will allow writing to and reading from any file in any location on your server – at least any directory that the Oracle user has read and /or write access to. This includes the locations where you have put you logfiles, datafiles etc, so anyone using UTL_FILE can corrupt your database. Best avoided !

Oracle 9.2 or 9i Release 2

In the latest release of 9i, the use of UTL_FILE_DIR is advised against on security grounds. The advice now is to create a directory and use that instead. By default, only SYS and SYSTEM can create directories. In addition, the user now writes procedures which use the directory name in FOPEN, rather than the path name. This means that if the DBA changes the location of the path the directory relates to, the user procedures are only slightly affected, but they will still work. See below for more details.

CREATE DIRECTORY utl_file_tmp AS '/tmp';
CREATE DIRECTORY utl_file_dir AS '/oracle/oracle817/admin/CMDB/utl_file';

GRANT READ ON DIRECTORY utl_file_tmp to username;
GRANT WRITE ON DIRECTORY utl_file_tmp to username;
GRANT READ ON DIRECTORY utl_file_dir to username;
GRANT WRITE ON DIRECTORY utl_file_dir to username;

All Oracle verions

Once the above has been sorted out according to your version of Oracle, you must ensure that the named directories exist on the server. UTL_FILE writes files to the server, not to the PC you are working on. So, over on the server create the appropriate directories, and try again :

cmdb> mkdir utl_file
cmdb> ls -l
drwxr-xr-x   2 cmdb       dba             96 Sep  6 13:11 utl_file

So the directory exists. Can we use it yet ?

I’ve edited my procedure to change the invalid path from ‘/temp’ to the newly created ‘/oracle/oracle817/admin/CMDB/utl_file’, what happens when I run it ? Yet again, an error message :

SQL> execute EmployeeFlatfile;
BEGIN EmployeeFlatfile; END;
*
ERROR at line 1:
ORA-20001: utl_file.invalid_operation
ORA-06512: at "CMDB.EMPLOYEEFLATFILE", line 19
ORA-06512: at line 1

This time, the error message is not invalid path, so obviously, I’ve got the path name correct, however, have another look above at the output from the ‘ls -l’ command, user cmdb owns the directory, and is in the dba group, but the only users with write access is the cmdb user. A quick change is required to give the dba group write privs too :

cmdb> chmod g+w utl_file
cmdb> ls -l
drwxrwxr-x   2 cmdb       dba             96 Sep  6 13:11 utl_file

And this time, when I run the procedure, it all ‘just works’.

SQL> execute EmployeeFlatfile;
PL/SQL procedure successfully completed.

A quick check on the server :

cmdb> ls -l utl_file
-rw-r--r--   1 ora817     dba           5856 Sep  6 13:25 test.txt

So, in summary :

  • create a UTL_FILE_DIR parameter and bounce the system if you are running Oracle up to 9i release 1, or
  • create a directory and give appropriate privileges to it if you are using Oracle 9i release 2.
  • Create a directory, in the location you have named.
  • Change permissions so that the Oracle user has the ability to read and write to the directory.

Possible problem areas

  • The directory/folder parameter you use on calls to FOPEN, must match exactly the UTL_FILE_DIR setting, even down to letter case – if running on Unix servers.
  • Has the specified directory/folder been created on the server ?
  • Has the directory/folder been given correct privileges to allow the Oracle user to read and write to it ?
  • Always handle exceptions in your code, translating these into application errors with a meaningful message works wonders for your bug tracking abilities.
  • Windows mapped shares are not suitable for UTL_FILE_DIR to use – see below.
  • Oracle 9i release 2 uses a directory name in the first parameter to FOPEN, this must be supplied in upper case. See below.
  • Did someone change the UTL_FILE_DIR setting and not tell you ? All existing procedures will now fail until they are amended again.(Only up to 9i release 1)

Windows has its own problems

On Unix everything is case sensitive so the rules above regarding making sure you specify the directory name exactly as per the UTL_FILE_DIR is important. On Windows, folder names are non-case sensitive so that rule could possibly not apply – or could it ?

SQL> connect system
Enter password: ******
Connected.

SQL> create directory utl_file_dir as 'c:\temp\utl_file';
Directory created.

SQL> grant write,read on directory utl_file_dir to scott;
Grant succeeded.

Then in a DOS session, create a folder which has the name slightly different from that already used :

C:\>mkdir c:\temp\UTL_FILE
C:\>

Back in SQLPlus again, we connect as Scott and create a procedute to dump the EMP table to a text file, similar to the examples above.

SQL> connect scott/tiger
Connected.

SQL> CREATE OR REPLACE PROCEDURE Empflatfile
  2  IS
  3    file_id UTL_FILE.FILE_TYPE;
  4  BEGIN
  5    file_id := utl_file.FOPEN( 'utl_file_dir', 'test.txt', 'w' );
  6    FOR emp IN (SELECT ename FROM emp)
  7    LOOP
  8       utl_file.PUT_LINE( file_id, emp.ename );
  9    END LOOP;
 10    utl_file.fCLOSE(file_id);
 11  EXCEPTION
 12    WHEN utl_file.invalid_path THEN
 13      RAISE_APPLICATION_ERROR(-20001, 'utl_file.invalid_path');
 14    WHEN utl_file.invalid_mode THEN
 15      RAISE_APPLICATION_ERROR(-20001, 'utl_file.invalid_mode');
 16    WHEN utl_file.invalid_filehandle THEN
 17      RAISE_APPLICATION_ERROR(-20001, 'utl_file.invalid_filehandle');
 18    WHEN utl_file.invalid_operation THEN
 19      RAISE_APPLICATION_ERROR(-20001, 'utl_file.invalid_operation');
 20    WHEN utl_file.read_error THEN
 21      RAISE_APPLICATION_ERROR(-20001, 'utl_file.read_error');
 22    WHEN utl_file.write_error THEN
 23      RAISE_APPLICATION_ERROR(-20001, 'utl_file.write_error');
 24    WHEN utl_file.internal_error THEN
 25      RAISE_APPLICATION_ERROR(-20001, 'utl_file.internal_error');
 26    WHEN OTHERS THEN
 27      RAISE_APPLICATION_ERROR(-20001, 'utl_file.other_error');
 28  END;
 29  /
Procedure created.

SQL>  execute EmpFlatFile;
BEGIN EmpFlatFile; END;

*
ERROR at line 1:
ORA-20001: utl_file.invalid_path
ORA-06512: at "SCOTT.EMPFLATFILE", line 13
ORA-06512: at line 1

So it looks like Oracle doesn’t like the fact that the folder name I used when creating a directory (I’m using Oracle 9irelease 2) is different from the one on the disc – or is it something else ?

Having tested the procedure above with both an uppercase folder name and a lower case one, neither worked. However, the manual mentions that the valid diurectory names that can be used are listed in ALL_DIRECTORIES, so a quick select shows the following :

SQL> column owner format a15
SQL> column directory_name format a20
SQL> column directory_path format a40
SQL> r
  1  select * from all_directories
  2*

OWNER           DIRECTORY_NAME       DIRECTORY_PATH
--------------- -------------------- ----------------------------------------
SYS             UTL_FILE_DIR         c:\temp\utl_file

So it looks like the directory name has been converted to the usual Oracle uppercase version. A quick change to the procedure to make the FOPEN call look like this :

file_id := utl_file.FOPEN( 'UTL_FILE_DIR', 'test.txt', 'w' );

Followed by an execute and we have success !

SQL> execute empflatfile
PL/SQL procedure successfully completed.

Check it out in a DOS session :

C:\Temp\UTL_FILE>dir
 Volume in drive C is LPC001813
 Volume Serial Number is F4B4-BCE0

 Directory of C:\Temp\UTL_FILE

06/09/2002  14:27       <DIR>          .
06/09/2002  14:27       <DIR>          ..
06/09/2002  14:27                   98 test.txt
               1 File(s)             98 bytes
               2 Dir(s)     910,671,872 bytes free

As you can see, the fact that the folder name on the disc is in upper case, while Oracle thinks it is in lower case makes no difference. Remember, this is not the case in Unix.

Windows shares and mapped drives

Oracle does not understand about mapped drives. When running as a service on a Windows server (or even using Personal Oracle on your PC), the directory or UTL_FILE_DIR cannot be a windows mapped drive. The services run as the LOCAL SYSTEM user, and has no access to any mapped drives you may have set up.

The following example shows how this doesn’t work, and in addition, shows how a directory can be remapped, without causing too much hassle to users who have existing procedures which write or read from the directory – unlike if a specific UTL_FILE_DIR is used. (But, remember, the procedures will go invalid when the directory is dropped – causing a recompile on next execute!)

SQL> connect system
Enter password: ******
Connected.

SQL> drop directory utl_file_dir;
Directory dropped.

SQL> create directory utl_file_dir as 's:\temp\norman\utl_file';
Directory created.

SQL> grant read,write on directory utl_file_dir to scott;
Grant succeeded.

SQL> connect scott/tiger
Connected.

SQL> execute empflatfile
BEGIN empflatfile; END;
*
ERROR at line 1:
ORA-20001: utl_file.invalid_operation
ORA-06512: at "SCOTT.EMPFLATFILE", line 19
ORA-06512: at line 1

If I now change the directory to use the full UNC name of the share mapped as drive S:\ then the following shows what happens :

SQL> connect system
Enter password: ******
Connected.

SQL> drop directory utl_file_dir;
Directory dropped.

SQL> create directory utl_file_dir as '\\fp\shared\temp\norman\utl_file';
Directory created.

SQL> grant read,write on directory utl_file_dir to scott;
Grant succeeded.

SQL> connect scott/tiger
Connected.

SQL> execute empflatfile
BEGIN empflatfile; END;
*
ERROR at line 1:
ORA-20001: utl_file.invalid_operation
ORA-06512: at "SCOTT.EMPFLATFILE", line 19
ORA-06512: at line 1

So that didn’t work – why not ?

In control panel, services (NT) or control panel, administrative tools, services – stop the OracleServiceXXXX service. Click on the login tab, and note that it is using a local system logon. That user has no rights to any shares (at least on our NT system,) and so is unable to access the shared drives by their mapped name or full UNC name.

If I change the service to logon as my own username and restart it, I can try again :

SQL> connect scott/tiger
Connected.

SQL> execute empflatfile
PL/SQL procedure successfully completed.

I could also go back and change the directory to use a mapped drive name (S:\temp\norman\utl_file) but if our sysadmins for NT decided to change the share name, or the mapped drive, the procedure would be broken again. It is advisable to use the full UNC name for the drive you are trying to access.

And finally, watch out for the times when you change your Windows password. When you do this, remember to amend your OracleServiceXXXX service again – otherwise the database won’t startup.

http://www.jlcomp.demon.co.uk/faq/utl_file.html

Next Page »

Blog at WordPress.com.