一次成功的安抚孩子和一次成功的劝服孩子

女儿是比较任性的,只要她认定的事,不按她的心愿来做,往往弄得小孩哭闹,大人生气的情况。但是,前两天进行了一次成功的安抚活动和一次成功的劝服活动。关键在于:

1、要有爱心、耐心和宽容心;

2、要站在孩子的角度替孩子作想;

3、孩子是讲道理的;

4、不要动手打孩子。

具体情况如下:

一天晚上,孩子要自己动手拿起小铁锤和小钉子替她的堂姐做一把木剑,而且坚决不让我们大人帮忙。我知道她是做不出来的,但是让她尝试一下。我出去办事去了。

回来后,我发现孩子在茶几上用小铁锤钉木剑,肯定把茶几面要弄坏。她的外婆在旁边看着她,没有阻止,我想她是阻止了的,但她拗不过孩子。

1)、我先反复劝孩子不要钉,她不听。压下动手打她的火气,自从许久以前,我下决心不再打孩子后,我最大的动作就是扬起手,吓吓她;

2)、我明白现在孩子的心里也很窝火,自己怎么也做不成这把木剑。我把她手中的东西强行给她拿了,她当然不依。又哭又闹;

3)、我把孩子抱起来,反复给她讲,这样做会把茶几钉坏。并自问自答的给她表演假如妈妈看见她把茶几钉坏了的反应:

  “是谁把茶几钉坏了?!”

  “桥桥。”

  “这么好的茶几给钉坏了,给我打!”

然后把就假装用手轻轻打她。然后我就站在她的心理的角度安慰她。

  “我知道桥桥给姐姐做的剑没做好,心里着急。明天爸爸给你做一个。。。”

   。。。

一会儿,孩子不哭闹了,不好意思的在我怀里撒娇。结果第二天孩子好像忘了这件事,我也就没有给她做木剑了。现在想来,尽管孩子已经忘记了,我应该主动提出来给孩子做一把木剑。让孩子知道大人说话是算数的,尽管她自己已经忘记了。

第二天,孩子不愿扎头发,大人勉强给她扎了一侧,她就挣脱跑了。我去把她追回来,不管她又哭又闹,把她抱到梳妆台前,让她看自己头发乱糟糟的样子。她看着看着就同意我们给她扎头发了。所以,孩子是讲道理的。

之所以详细记下成功的安抚和劝服行动,是因为原来我往往处理不好这样的“冲突”,现在有点心得了,赶快记在这里,防止忘记了,以免以后犯同样的毛病。弄得大家都不舒服。而且,我感觉有必要开一个“家庭会议”,把自己的心得同大家分享一下,并统一一下对孩子的教育策略和具体操作,免得她钻我们的空子,和纠正一些家庭成员不当的对待孩子的思想。我想,在这样的思想指导下,我们家里基本上应该只有孩子的笑声,没有孩子的哭声的:)

春天疾病多,幼儿园统一通知上周星期五放假去防疫站给孩子打了预防“麻疹和腮腺炎”的疫苗。

孩子现在非常大方,小朋友到家里来玩,苹果、奶粉自己去拿出来一人一个,一人一小袋,大人说苹果太大了让她和小朋友分着吃也不行。当然,我们大人对这种大方的态度应持肯定态度。

今天早上,孩子起来自己穿好了衣服。我认真的夸讲了她。天气比较热了,孩子的衣服穿得少了,应该让她自己穿衣服了。关键是培养她的自理能力。

星期五那天打疫苗回来的路上,和她同行的一个小朋友趁售货员不注意偷偷拿了一样东西跑掉了,而那个小朋友的婆婆还在笑,真不知该怎么给那个小朋友的婆婆说。当我们孩子的婆婆回来给我说起这事,我严肃的说我们孩子坚决不能有这种行为。我们孩子的婆婆和爷爷劝我不要去给那个拿东西的小朋友的婆婆说,说这样别人面子上过不去。我心里觉得欠欠的,也只好作罢。

批量更改QQ聊天场景mp3音乐文件名为其所在目录名

批量更改QQ聊天场景mp3音乐文件名为其所在目录名

QQ的聊天场景中(在目录:IMScene/Scene中)的mp3音乐文件名是像这样的E00001.mp3的符号命名(老婆原来刻苦聊天时在聊天场景中攒下了200首mp3,IMScene目录有700多M),我把这些文件在linux下mp3blaster下播放时看不到音乐的中文文件名。碰巧聊天场景中的每一个目录的名字就代表了其下的音乐的名字,于是,我花了一个下午写了下面这个bash脚本来把mp3音乐的名字改成跟它的目录名一样。一方面是有了中文名字的音乐文件,一方面学习一下linux的bash脚本写作。我想,在windows下用批处理脚本也应该能完成这个工作。但是我学电脑的时候已经过了microsoft的dos时代,就没有学过批处理。倒是linux下的批处理好像还在类unix世界广泛使用。

当然,我很少用和写bash脚本,如果哪位同志看到其中的错误、不当、和可以改进之处请不吝赐教。谢谢。

使用的关键知识点:

1)、for循环遍历目录;

2)、文件相关判断;

3)、字符串比较与数字比较的区别;

4)、对文件名带中文和文件名中带有空格的文件进行操作时,必须对文件名加上双引号;

一些小技巧:

1)、控制脚本只在这个目录执行一次;

2)、控制一个目录下多个类似文件的改名;


#!/bin/bash

# rename.sh

# Rename the file's name as its directory name, like this:

# Rename "/home/m/Scene/求佛/E00001.mp3" to

# "/home/m/Scene/求佛/求佛.mp3"

NOARGS=65

CONFIRM_FAIL=66

RUNONCE_FLAG=67

# Input the first level directory.

# The dirctories structure is like this:

# first level directory

#    second level directory 1

#       files in second level directory 1

#    second level directory 2

#       files in second level directory 2

#    second level directory 3

#       files in second level directory 3

# ...

if [ $# -lt 3 ]

then

   echo "Usage: $0 dir redir suffix ..."

   exit $NOARGS

fi

dir=$1

redir=$2

suffix=$3

echo "your first argument is $dir"

echo "your second argument is $redir"

echo "your third argument is $suffix"

if [ $dir != $redir ]

then

   echo "Usage: $dir must equal to $redir for confirming..."

   exit $CONFIRM_FAIL

fi

if [ -e $dir/runonce.flag ]

then

   echo "Usage: This program can only run once!"

   exit $RUNONCE_FLAG

fi

directorys=$dir/*

for directory in $directorys; do # Find all second level directories

     if [ -d "$directory" ] # Note! It must add double quote before

                            # and after $directory, otherwise, it will

                            # report error if there is blank or chinese

                            # in $directory.

     then

        echo "$directory is a directory"

        count=0

        for file in "$directory"/*$suffix; do # Find the mp3 file in second

                                              # level directory

           if [ -f "$file" ]

           then

              echo "$file is a file"

              dirname=${directory##*/} # get the second level directory name

                                       # without its prefix path like /home/m/

              echo "$file's directory is $dirname"

              if [ $count -gt 0 ]

              then

                 echo "rename $file to $directory/$dirname$count$suffix"

                 echo " rename #$count file begin..."

                 mv "$file" "$directory/$dirname$count$suffix"

              else

                 echo "rename $file to $directory/$dirname$suffix"

                 mv "$file" "$directory/$dirname$suffix"

              fi

              let "count = count + 1"

              echo "rename $count file ok" 

           fi

        done

     else

        echo "$directory is not a directory"

        echo "Usage: $0 dir redir ..."

     fi

done

# Write runonce flag file into the first level directory

echo "Run rename.sh once at `date`" > $dir/runonce.flag

exit 0

女儿爱与同龄孩子玩了;幼儿园加强与家长的协同教育

女儿近况总结

近段时间来,孩子好像特别喜欢与她同龄的院里的小朋友玩了。而且,常常是一回家就去找小朋友玩,连饭也顾不得吃,到了吃饭时间也叫不回来,常常被我们大人强迫的押回家。而原来她是喜欢同比她大几岁的哥哥姐姐们一起玩的。

现在孩子倔强的脾气好像有了一点好转,比如有时上学她要求给她买东西,我们给她说当时不买,她也能听得进去了。

原来看过很多遍的动画片她仍然能看得两个小时不动地方。还有,孩子现在对家里的电器插座突然有了兴趣,喜欢自己动手去插。我们在再三严厉的说她的同时,把所有移动的插线板都挂在了高处。

因为单位现在的纪律强调得比较严,相应的带来的一个好处是孩子也总是能准时到幼儿园了(因为我上班的地方与孩子上幼儿园的地方顺路)。看来迟到也不是不能避免的嘛。

原来女儿是不扎头发的,现在也渐渐习惯我们给她扎头发了。

在幼儿园的教育上,好像自从他们使用了那种新教材后,幼儿园与家长在孩子的教育上的沟通要强些了。比如,上周孩子带回来两个题目:一是和孩子一起在杂志、报纸上搜集一些海陆空的交通工具图片;一是带孩子到车站去了解乘车的一些问题,让孩子熟悉交通规则等等。原来,他们上一周的课程以交通工具为主题。在原来过去的一年半的幼儿园时间里,我们和幼儿园的沟通是很少的。

最近两个星期天我们都带孩子到野外去玩了的,这种户外的活动还是要坚持的,多亲近点大自然。我听说人是从绿色的森林里走出来的,到现在成天住在钢筋混凝土的灰色的森林里,差不多快忘了人是从哪儿走出来的。

前段时间读了一篇<<读者>>上的鲁迅的孩子周海婴的回忆录,里面有一处写鲁迅先生对他幼年的教育上,大意是如果不是非常过分的要求,鲁迅先生都是十分“纵容“他的。我想,孩子在一种宽松的、爱的氛围中成长,有个快乐的童年是不会错到什么地方去的吧?这篇文章在我的心里好像对我前些时间萌发的对孩子宽松些的想法提供了一点佐证。人一辈子是很辛苦的,幼年、童年都没有一个大体上快乐的记忆。我觉得是不当的。

GoF的《设计模式》之入门介绍

转载请注明本文原始出处:GoF设计模式之入门介绍: http://java.learndiary.com/diaries/3150.jsp。本文在原始出处随时更新,欢迎批评指正和讨论。

--JAVA学习日记 littlebat 2007.04.02 16:33

正文:

*********************************************************************

用了一周多时间把这章看了一遍,并结合其中的内容把自己原来记的学习Thinking in Patterns with Java的日记复习了一下,感觉对各种设计模式的印象又清楚了一些,提起某个模式的名字大概知道了是怎么一回事。下面记下学习这章中的一些知识点和心得如下:

要做一个好的设计是困难的,设计模式的作用就是把这些被反复证明了的好的设计以一个统一的形式归纳记录下来。一旦一个设计的“套路“被证明是有效的,就像一个“浪漫小说“那样有一套固定的模式,可以反复的套来用。GoF总结的设计模式只是那些专家们知道的一个片断,还有像分布式编程、实时编程、设备驱动编程、面向特定应用领域编程等等的设计模式还有待别人去归纳整理(littlebat注:不知道这些领域的设计模式现在有没有?情况如何?学习领域现在不知有没有设计模式?也许学习日记可以在这方面看一看)。

1、什么是设计模式?

(The design patterns in this book are descriptions of communicating objects and classes that are customized to solve a general design problem in a particular context.)设计模式是在特定的环境中用来解决通用的设计问题的相互交流的对象和类。它的粒度不是细到讲怎么样实现一个链、一个哈希表,也不是粗到整个应用或者子系统。一个模式有4个基本元素:名称、解决的问题、解决的方案、结果。设计模式的实现的复杂程度跟选择的实现语言关系很大,所以有的设计模式在一种语言中实现起来很复杂,而在另一种语言中实现起来很简单,甚至有些模式已经被某种语言内置支持(littlebat注:像在Thinking in Patterns with Java中读到的那样,像Iterator, Observer, Adapter, Proxy等模式就在Java语言中内置支持,另外,Java中的clone()方法是否是prototype模式、Java的package是否是Facade模式、而Java的序列化技术是否是Memento的模式、Comparator是否是Strategy模式的内置支持还不是很清楚?)。这本书主要是采用C++(littlebat注:要复习一下c++语法了) 和 SmallTalk来实现例程。

2、Smalltalk MVC里的设计模式:

这一节分析了SmallTalk的MVC框架(littlebat注:Java中的Struts也是一种MVC实现)所涉及到的设计模式包括:Observer, Composite, Strategy, Factory method, Decorator等等。

3、描述设计模式:

这本书以一套固定的模版来描述一个设计模式,包括:名称和分类、目的、别名、动机(Motivation)、适用性、结构、参与的对象和类、参与者的交互、后果、实现、例程、已知的使用例子、相关模式。(littlebat注:其中为阐述结构,使用了现在UML的前身包含的一些技术,如OMT,交互图,序列图等等。。。我想,这些技术与UML应该差不多,有些区别通过看其它相关的内容也应该可以知道的。另外,UML好像是1997年才正式发布的?)

4、设计模式的目录:

这一节列出全部23种设计模式的目录和简短的描述,Abstract Factory (87), Adapter (139), Bridge (151),

Builder (97), Chain of Responsibility (223), Command (233), Composite (163), Decorator (175), Facade (185), Factory Method (107), Flyweight (195), Interpreter (243), Iterator (257), Mediator (273), Memento (283), Observer (293), Prototype (117), Proxy (207), Singleton (127), State (305), Strategy (315), Template Method (325), Visitor (331)。

组织目录:

GoF主要用两个标准来划分设计模式,一个标准是目的,分为:创建、结构、行为的目的。如下:

创建的目的:

Factory Method (107)

Abstract Factory (87)

Builder (97)

Prototype (117)

Singleton (127)

结构的目的:

Adapter (139)

Bridge (151)

Composite (163)

Decorator (175)

Facade (185)

Proxy (207)

行为的目的:

Interpreter (243)

Template Method (325)

Chain of Responsibility (223)

Command (233)

Iterator (257)

Mediator (273)

Memento (283)

Flyweight (195)

Observer (293)

State (305)

Strategy (315)

Visitor (331)

第二个分类的标准是模式使用的范围,包括:类的范围、对象的范围。如下:

类的范围:

Factory Method (107) Adapter (139) Interpreter (243)  Template Method (325)

对象的范围:

Abstract Factory (87)

Builder (97)

Prototype (117)

Singleton (127)

 Adapter (139)

Bridge (151)

Composite (163)

Decorator (175)

Facade (185)

Proxy (207)

 Chain of Responsibility (223)

Command (233)

Iterator (257)

Mediator (273)

Memento (283)

Flyweight (195)

Observer (293)

State (305)

Strategy (315)

Visitor (331)

书中还提出了也有其它的方式来组织设计模式,如有的设计模式经常放在一起用,有的可以互换,有的设计结果的结构相似等等。并特别的提出了一种根据设计模式间的关系来组织目录的方式,这就是很重要的设计模式的关系图(Figure 1.1,我把这张图放在了后面的附图中:图1.1)。

(littlebat注:我觉得关系图中的关系主要是一种模式使用了另一种模式的关系,如:图中的Composite模式使用了Iterator模式来遍历子对象,Iterator使用了Memento来保存遍历的状态。

另外,在Thinking in Patterns with Java中的分类是根据设计模式解决问题的性质,我本来以为在GoF的设计模式中没有按问题分类,结果是GoF把这种分类放在了设计模式怎样解决设计问题的下一节中。

另外,我发现了一些现在看来在这两本书中有点矛盾的地方:如在Bruce先生的书中说Decorater模式是解决类太多的问题(Thinking in Patterns chapter 9: too many),Bridge模式主要在用于代码的组织上(Thinking in Patterns chapter 10: Connecting different types),而在GoF的书上把这两种模式都归为在对象范围内应用的模式。也许他们是从不同的角度来说的,还需要进一步学习。

)

5、设计模式怎样解决设计问题

这一节是这一章中内容最多也算最重要的一节吧。它讲了oop设计者可能面临的各种设计问题和设计模式怎样帮助设计者解决这些设计问题。这些设计问题如下:

1)、找出恰当的对象

2)、决定对象粒度

3)、指定对象接口

4)、指定对象实现

   (1)类继承对接口继承

   (2)编程到接口而不是实现

5)、使重用技术运用起来

   (1)继承对组合

    要更多的使用组合

   (2)代理

   (3)继承对参数化类型

    取决于实现的系统

6)、关联运行时和编译时结构

7)、设计成适应改变的系统

   在这一节中指出了一些系统不易改变(灵活性差,稍有扩展和改变引发代价较大的重新设计)的问题和针对相应问题的设计模式:

    (1)精确的指定类来创建对象

       Design patterns: Abstract Factory (87), Factory Method (107), Prototype (117).

    (2)依赖特定的方法

       Design patterns: Chain of Responsibility (223), Command (233).

    (3)依赖硬件和软件平台

        Design patterns: Abstract Factory (87), Bridge (151).

    (4)依赖对象表现或实现

        Design patterns: Abstract Factory (87), Bridge (151), Memento (283), Proxy (207).

    (5)算法依赖

        Design patterns: Builder (97), Iterator (257), Strategy (315), Template Method (325), Visitor (331).

    (6)紧耦合

        Design patterns: Abstract Factory (87), Bridge (151), Chain of Responsibility (223), Command (233), Facade (185), Mediator (273), Observer (293).

    (7)用继承扩展功能

        Design patterns: Bridge (151), Chain of Responsibility (223), Composite (163), Decorator (175), Observer (293), Strategy (315).

    (8)不能方便的改变类

        Design patterns: Adapter (139), Decorator (175), Visitor (331).

   而对于这种改变灵活性的要求程度如何取决于所实现的系统,按灵活性要求从低到高分为3类系统:

    (1)应用程序

    (2)工具包

    (3)框架

     框架和模式的区别:

          1>、设计模式更抽象

          2>、设计模式是要小一些的结构元素

          3>、设计模式更通用化一些

这一节可以同Bruce先生从解决问题对设计模式进行的分类比较着看,Bruce先生根据设计模式解决的问题分成:

1>、Object quantity: Singleton

2>、Object decoupling: Proxy, State, Iterator

3>、Factoring commonality: Strategy, Policy, Template method

4>、Encapsulating creation: Factory method, Abstract factory

5>、Specialized creation: Prototype, Builder

6>、Too many: Flyweight(too many objects), Decorator(too many classes)

7>、Connecting different types: Adapter, Bridge

8>、Flexible structure: Composite

9>、System decoupling: Observer, Mediator

10>、Reducing interface complexity: Facade

11>、Algorithmic partitioning: Command, Chain of responsibility

12>、Externalizing object state: Memento

13>、Complex interactions: Visitor

14>、Multiple languages: Interpreter

现在看来,好像Bruce先生的针对解决问题的分类的可操作性要简单易懂一些。我印象比较深刻的就是那个Too many,例如:如果我在一个设计对应于现实对象的静态结构中找出了过多的类(像Bruce先生举的那个咖啡馆里的咖啡种类),我可以第一时间想到:这么多的类是不是用Decorator减少一些哟?当然,我还没有真正的实践过设计模式,也许真到那时使用这些设计模式也不是这么一回事。先记在这里回头再说吧。

另外,在这一节中有一些东西需要更进一步的学习,如class和type的区别,UML和OMT的区别?怎样用设计模式解决问题?还有,这一节的内容很多,不少东西都是粗粗读过,还需要在读完全书后再回过头来反复读,正如作者说,这不是一本看完一遍就扔在一边的书。

6、怎样选择一个设计模式

1)、想想设计模式怎样解决设计问题的

2)、查一下设计模式的意图

3)、研究一下设计模式的相互关系

4)、研究一下目的类似的设计模式

5)、检查一下引起重新设计的原因

6)、考虑一下你的设计中的变化因素

下面是书中的一个表,列出3种目的的设计模式可以解决的系统中的变化因素,描述格式是:设计模式      设计中可能变化的方面

1>,Creational

Abstract Factory (87) families of product objects

Builder (97) how a composite object gets created

Factory Method (107) subclass of object that is instantiated

Prototype (117) class of object that is instantiated

Singleton (127) the sole instance of a class

2>,Structural

Adapter (139) interface to an object

Bridge (151) implementation of an object

Composite (163) structure and composition of an object

Decorator (175) responsibilities of an object without subclassing

Facade (185) interface to a subsystem

Flyweight (195) storage costs of objects

Proxy (207) how an object is accessed; its location

3>,Behavioral

Chain of Responsibility (223) object that can fulfill a request

Command (233) when and how a request is fulfilled

Interpreter (243) grammar and interpretation of a language

Iterator (257) how an aggregate's elements are accessed, traversed

Mediator (273) how and which objects interact with each other

Memento (283) what private information is stored outside an object, and when

Observer (293) number of objects that depend on another object; how the dependent objects stay up to date

State (305) states of an object

Strategy (315) an algorithm

Template Method (325) steps of an algorithm

Visitor (331) operations that can be applied to object(s) without changing their class(es)

7)、怎样使用一个设计模式

讲当你选择了一个设计模式后怎样使用它。

    (1)把这个设计模式通读一遍

    (2)研究结构、参与者、交互部分

    (3)看例程部分

    (4)为设计模式中的参与者选定名字

    (5)定义类

    (6)为设计模式中的方法(操作)定义具体到应用的名字

    (7)实现模式中的方法

最后,这节讲了一个非常重要的观点,设计模式不能滥用,因为为达到灵活性等设计模式的使用常引入间接的附加的层次,这使系统变得复杂或(和)影响性能。只有设计模式提供的灵活性是系统真正需要的时候才使用它。后面的章节对评价一个设计模式的损益很有用。

*********************************************************************

附图:图1.1

在linux系统中备份远程mysql数据库的脚本文件2则

1、备份成rar的分卷压缩格式,生成两个(若有分卷的rar压缩文件会不止两个)备份文件,如:

db20070325092032.sql,db20070325092032.sql.rar

#!/bin/bash

# Backup database with current date as a part of file name.

# Date: 2007-03-24

echo "Today is `date`."

echo " Now begin backup database..."

prefix=db$(date +%Y%m%d%H%M%S) # Needs a leading '+' to invoke formatting.

suffix=sql

filename=$prefix.$suffix

echo "The file name is $filename."

#Begin backup database.

hostname=yourhostname

username=yourusername

dbname=yourdbname

dbdir=~/yourdbbackupdir

mysqldump -h$hostname -u$username -p $dbname > $dbdir/$filename

#Begin compress backup file with .rar format.

compressfile=$filename.rar

echo "Begin compress $filename into $compressfile..."

cd $dbdir

rar a -v1024k $compressfile $filename

echo "Backup database success."

exit 0

**********************************************************************

2、备份成*.tar.bz2的压缩格式,生成两个备份文件,如:

db20070325092032.sql,db20070325092032.sql.tar.bz2

#!/bin/bash

# Backup database with current date as a part of file name.

# Date: 2007-03-24

echo "Today is `date`."

echo " Now begin backup database..."

prefix=db$(date +%Y%m%d%H%M%S) # Needs a leading '+' to invoke formatting.

suffix=sql

filename=$prefix.$suffix

echo "The file name is $filename."

#Begin backup database.

hostname=yourhostname

username=yourusername

dbname=yourdbname

dbdir=~/yourdbbackupdir

mysqldump -h$hostname -u$username -p $dbname > $dbdir/$filename

#Begin compress backup file with .tar.bz2 format.

compressfile=$filename.tar.bz2

echo "Begin compress $filename into $compressfile..."

cd $dbdir

tar cfj $compressfile $filename

echo "Backup database success."

exit 0

一周回顾(2007.03.24)

孩子感冒生病打了两天针,可能还需要看一下医生;突然记起孩子好久没打预防针了;

上周把大部分时间都用在折腾这台486的老机器上,在一块硬盘上重新安装了windows97+redhat linux9.0;而既定的学习设计模式的目标好像在心里一点也不急,这样下去是不行的,猴年马月才把那本GoF的设计模式看得完。时间的利用要有重点,就好像金钱的使用要“用在刀刃上”一样。本来想在当当网上买一本GoF的设计模式,可一想没必要,用这个钱买了一块二手硬盘放在486的老机里。那块有坏道的1.6G的硬盘权当“移动硬盘”吧。

惨,昨天早上和老婆去跑步,没跑多远就觉得累,看老婆还比较轻松的样子;

今天早上和老婆到体育馆,我在单杠上做引体向上,做一个就不行了:(,原来读初中考体育引体向上的及格线是10个还是20个?

看来,我得锻炼一下了。

能在486+windows97上正常使用的opera游览器最新版

我的这台机器上是486DX100+24M+windows97,在上面安装的IE5.5在浏览有些网站时竟然不能使用,如在当当网上注册,登录google的广告帐号(有近一个月没有登录了:))...  我估计是IE5.5的https的支持上有问题。

然后我安装原来下载的firefox1.*,竟然不能安装上;

在google上以“最小的浏览器“为关键词搜索,结果是opera。在opera的官方网站上下了一个最新版的:opera9.1,在我的机器上的版本信息如下:

Version information

Version  9.10

Build  8679

Platform  Win32

System  Windows 95

Java  Java not installed

XHTML+Voice  Plug-in not loaded

Browser identification

Opera/9.10 (Windows 95; U; en)

我在google的广告帐户上和当当网上使用opera9.1均正常,虽然由于机器差速度慢,但毕竟可用。推荐那些在老机老系统上上网的朋友试一下opera浏览器。