2005-10-27

网页的随便拖拉 - AJAX

【江湖普及】网页的随便拖拉 - AJAX

提交者 : Red Sox 于 PAOWANG.COM 北京时间 2005-09-29 15:43:24







首先谢谢35F2还有hufey的工作,让泡网也能跟上潮流RSS一把。

下面讲的web 2.0还有personal portal,都是互联网最近最热的话题,也不知道是真的发展方向还是又一次类似".com"的炒作。每家大公司都在做这个。My MSN, My google, start.com, My Yahoo(就这个不能拖拉)

今天先给大家普及一下这个随便脱来拉去是怎么回事。其实google map早已经用这个了(还在用yahoo map的同学请起立站到队伍后面去),这玩艺叫AJAX,就是阿贾克斯。(还在看足球的同学请起立站到队伍外面去)
____________________________

Web 介面設計新趨勢 - AJAX

嚴格說起來, AJAX 並不是什麼新鮮的技術,而且也不複雜高深,但是自從 AJAX 這個名子出來之後,以及 Google 幾個 Killer 級的服務應用 AJAX,使得 AJAX 好像在突然間大鳴大放,每個網站都想要開始採用類似的技術,但是 AJAX 真的有這麼好嗎?在瞭解 AJAX 之前先來看幾個成功的例子:

實例介紹


* Google Map
Google Map 是應用 AJAX 技術最成功的例子,只要一提起 AJAX,一定也會舉 Google Map 做範例。底下是 Google Map 的 UI,如果你有用過一定很熟悉:



你可以直接在 Google Map 的網頁上拖拉縮放整面地圖,地圖細節則會慢慢顯示出來,就好像在你自己的電腦上使用 papago 等軟體一樣,這就是 Google Map 最引人津津樂道的 UI 設計,但是他怎麼做到的?


* Google Suggest



Google Suggest 則是另外一個例子,當你在搜尋欄位中輸入關鍵字時,這時候網頁會蹦出幾個 suggestion 讓你選擇,每個 suggestion 後面還有該關鍵字的搜尋筆數,我們都知道,Google 不可能在你一登入網頁時就預先存取好這些資料,因為這些資料量太大了,如果預先存取,你光登入 Google Suggest 首頁就要十幾分鐘,那它是怎麼做到的?


* GMail
GMail 也是一個例子,在你登入你的 Gmail Account 之後,你所看到的信件選單,信件內容等都是在同一個網頁中顯示,不論你怎麼選擇你都不會做換頁,它是怎麼做到的?



還有編輯信件時,拼字檢查是怎麼做到的?




* Technorati Search Beta
Technorati search 除了 search blog 文章外,現在也多了搜尋 flickr 圖片以及 furl 和 del.icio.us 的功能,算是半個 meta-search engine 吧,而且這些搜尋的結果都是在同一個頁面中顯示出來,最快顯示出來的資料當然是他自己 index 的 blog 文章,但當你在瀏覽結果時,網頁的右手邊也沒閒著,正在幫你查詢 flickr, furl, del.lcio.us 的結果呢!它是怎麼做到的呢?




這些問題的答案就是 AJAX。

傳統網頁流程的設計都是 Web Page -> CGI -> Web Page (Response) 的順序,這之間整個頁面都要經過重載,而且 CGI 在處理時是需要時間的,所以使用者在這段時間中需要等待,但是這樣的作法跟我們使用一般桌面應用軟體的習慣不同,在多數的應用軟體中,即使是需要等待處理的程序,也會先把處理完的結果先顯示出來,但是在傳統的網頁流程設計中,這是很難達到的。傳統的網頁流程設計是 synchronous 的,而 AJAX 是 Asynchronous,這就是為什麼 AJAX 的全名是: Asynchronous JavaScript And XML ( Synchronous / Asynchronous 的概念就好像是寫 network socket 程式時,synchronous / asynchronous IO,或是 blocking / none-blocking IO 的概念類似)。

AJAX 並不是新的技術,早在這個名詞出來以前,此類的技術就已經被廣泛運用了,後來由 Adaptive Path 這家公司取了 AJAX 這個名詞來代表此類的技術。所以在這家公司的網站上可以找到一篇由 Jesse James Garrett 所寫的 Ajax: A New Approach to Web Applications 文章,可以幫助大家瞭解 AJAX 的定義以及技術層次的問題,這篇文章部分也被 Jacky's blog 翻譯成中文。其實說穿了,AJAX 就是運用 Javascript 在背景偷偷幫你去跟伺服器要資料,最後再由 Javascript 或 DOM 來幫你呈現結果,因為所有動作都是由 Javascript 代勞,所以省去了網頁重載的麻煩,使用者也感受不到等待的痛苦,讓使用 Web Service 更像是在操作桌面軟體。

但是, AJAX 真的那麼實用嗎?網路上也有不少 blog 在批評 AJAX:


* Ajax: 99% Bad
* 嘟嘟老窝's AJAX的七宗罪
這篇文章講得很好,說中了 AJAX 的麻煩所在。
* Ajax:剩下什麼呢?



AJAX 存在的目的跟 Flash 有點雷同,都是要改進 Web UI 的呈現方式,但是既然不同於傳統的 WebUI 呈現,便會出現一些不相容性,例如不利於搜尋引擎做 index,以及造成一個沒有 history 及 backforward 的網頁瀏覽,這都不一定是使用者想要的,並不是所有的網頁都適合使用 AJAX 技術來改進 UI 呈現,在貿然轉移前還是有必要多思考。




--
时间这种东西,你要是不消磨它,它就要消磨你
http://www.ist.cn/
http://www.joyspaces.com
http://www.thinkle.com

2005-10-26

sms push格式

[推荐]sms push格式 (好文章啊)

sms push格式

00     'SMSC Len。用手机上设置短信中心号码

51     'submit type

00     'SMS_TP_Message_Reference type

0B    '对方电话的长度

A1     'Number type

13166416588F8       '电话号码:13661456888

00     'SMS_TP_PID

F5     'SMS DCS

A744         'SMS available date

0B05040B8423F00003030101         'Wap Push Header 1

29060603AE81EA8DCA   'Wap Push header 2

02

05  '-//WAPFORUM//DTD SI 1.0//EN

6A  'UTF-8

00

45  '<si>

C6  '<indication

08  '<action=signal-high>

0C  'href="http://

03  '字符串开始

687474703A2F2F696D732E6E656173652E6E6574  'URL:   http://ims.nease.net

00  'URL 字符串结束

01  '>

03  '内容描述字符串开始

'这里就是显示给用户的内容,用utf-8编码。

E796AFE78B82E79FADE4BFA1       '内容描述:疯狂短信

00  '内容描述字符串结束

01  '</indication>"

01  '</si>

--
时间这种东西,你要是不消磨它,它就要消磨你
http://www.ist.cn/
http://www.joyspaces.com
http://www.thinkle.com

2005-10-25

thinkle

是我的就是我的,
            不是我的
                  抢过来,也就是我的了。。。。。。
                 
                 

  在大学时光里,我以为我净化了,其实那是虚伪;我以为我成熟了,其实那是表象;
       我以为我提高了,其实那是幼稚;我以为我拥有了许多,其实那是幻想。

--
时间这种东西,你要是不消磨它,它就要消磨你
http://www.ist.cn/
http://www.joyspaces.com
http://www.thinkle.com

2005-10-24

Delphi中的INI文件编程

Delphi中的INI文件编程

    INI文件在系统配置及应用程序参数保存与设置方面,具有很重要的作用,所以可视化的编程一族,如VB、VC、VFP、Delphi等都提供了读写INI 文件的方法,其中Delphi中操作INI文件,最为简洁,这是因为Delphi3提供了一个Tinifile类,使我们可以非常灵活的处理INI文件。

    一、有必要了解INI文件的结构:

    ;注释

    [小节名]

    关键字=值

    INI文件允许有多个小节,每个小节又允许有多个关键字, "="后面是该关键字的值。

    值的类型有三种:字符串、整型数值和布尔值。其中字符串存贮在INI文件中时没有引号,布尔真值用1表示,布尔假值用0表示。

    注释以分号";"开头。

    二、定义

    1、在Interface的Uses节增加IniFiles;

    2、在Var变量定义部分增加一行:

    myinifile:Tinifile;

    然后,就可以对变量myinifile进行创建、打开、读取、写入等操作了。

    三、打开INI文件

    myinifile:=Tinifile.create(`program.ini`);

    上面这一行语句将会为变量myinifile与具体的文件 program.ini建立联系,然后,就可以通过变量myinifile,来读写program.ini文件中的关键字的值了。

    值得注意的是,如果括号中的文件名没有指明路径的话,那么这个Program.ini文件会存储在Windows目录中,把Program.ini文件存 储在应用程序当前目录中的方法是:为其指定完整的路径及文件名。下面的两条语句可以完成这个功能:

Filename:=ExtractFilePath(Paramstr

(0))+`program.ini`;

myinifile:=Tinifile.Create(filename);

    四、读取关键字的值

    针对INI文件支持的字符串、整型数值、布尔值三种数据类型,TINIfiles类提供了三种不同的对象方法来读取INI文件中关键字的值。

    假设已定义变量vs、vi、vb分别为string、 integer、boolean类型。

    vs:=myinifile.Readstring

    (`小节名`,`关键字`,缺省值);

    vi:=myinifile.Readinteger

    (`小节名`,`关键字`,缺省值);

    vb:=myinifile.Readbool

    (`小节名`,`关键字`,缺省值);

    其中缺省值为该INI文件不存在该关键字时返回的缺省值。

    五、写入INI文件

    同样的,Tinifile类也提供了三种不同的对象方法,向INI文件写入字符串、整型数及布尔类型的关键字。

    myinifile.writestring(`小节名`,`关键字`,变量或字符串值);

    myinifile.writeinteger(`小节名`,`关键字`,变量或整型数值);

    myinifile.writebool(`小节名`,`关键字`,变量或True或False);

    当这个INI文件不存在时,上面的语句还会自动创建该INI文件。

    六、删除关键字

    除了可用写入方法增加一个关键字,Tinifile类还提供了一个删除关键字的对象方法:

    myinifile.DeleteKey(`小节名`,`关键字`);

    七、小节操作

    增加一个小节可用写入的方法来完成,删除一个小节可用下面的对象方法:

    myinifile.EraseSection(`小节名`);

    另外Tinifile类还提供了三种对象方法来对小节进行操作:

    myinifile.readsection(`小节名`,Tstrings变量);可将指定小节中的所有关键字名读取至一个字符串列表变量中;

    myinifile.readsections(Tstrings变量);可将INI文件中所有小节名读取至一个字符串列表变量中去。

    myinifile.readsectionvalues(`小节名`,Tstrings变量);可将INI文件中指定小节的所有行(包括关键字、=、值)读取至一个字符串列表变量中去。

    八、释放

    在适当的位置用下面的语句释放myinifile:

    myinifile.distory;

    九、一个实例

    下面用一个简单的例子(如图),演示了建立、读取、存贮INI文件的方法。

    Myini.ini文件中包含有"程序参数"小节,和用户名称(字符串)、是否正式用户(布尔值)和已运行时间(整型值)三个关键字。程序在窗体建立读取这些数据,并在窗体释放时写myini.ini文件。

    附源程序清单

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs,inifiles,StdCtrls, ExtCtrls;
type
TForm1 = class(Tform)
Edit1: Tedit;
CheckBox1: TCheckBox;
Edit2: Tedit;
Label1: Tlabel;
Label2: Tlabel;
Timer1: Ttimer;
Label3: Tlabel;
procedure FormCreate(Sender: Tobject);
procedure FormDestroy(Sender: Tobject);
procedure Timer1Timer(Sender: Tobject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;

implementation
var
myinifile:Tinifile;
{$R *.DFM}

procedure TForm1.FormCreate(Sender: Tobject);
var
filename:string;
begin
filename:=ExtractFilePath(paramstr(0))+`myini.ini`;
myinifile:=Tinifile.Create(filename);
edit1.Text:= myinifile.readstring
(`程序参数`,`用户名称`,`缺省的用户名称`);
edit2.text:= inttostr(myinifile.readinteger
(`程序参数`,`已运行时间`,0));
checkbox1.Checked:= myinifile.readbool
(`程序参数`,`是否正式用户`,False);
end;

procedure TForm1.FormDestroy(Sender: Tobject);
begin
myinifile.writestring(`程序参数`,`用户名称`,edit1.Text);
myinifile.writeinteger(`程序参数`,`已运行时间`,
strtoint(edit2.text));
myinifile.writebool(`程序参数`,`是否正式用户`,
checkbox1.Checked);
myinifile.Destroy;
end;

procedure TForm1.Timer1Timer(Sender: Tobject);
begin
edit2.Text:=inttostr(strtoint(edit2.text)+1);
end;

end.

    程序在Pwin95、Delphi3下调试通过。



--
时间这种东西,你要是不消磨它,它就要消磨你
http://www.ist.cn/
http://www.joyspaces.com
http://www.thinkle.com

Delphi中关于TApplication类的详解

Delphi中关于TApplication类的详解


作者佚名 来源InterNet 加入时间:2004-11-25

Delphi中关于TApplication 类的详解

 

  TApplicationDelphi 应用程序的类型,该类是从TComponent继承,在单元Forms中声明。并且在Forms 中有个公用的对象Application。其方法和属性集中包括了 Windows操作系统中创建、运行和销毁应用程序等既定的基本操作和属性,因此在用 Delphi编写 Windows应用程序时简化了用户和Windows环境之间的接口。 TApplication封装了以下四个功能:

1Windows消息处理。

2、菜单加速和键盘处理。

3、异常处理。

4、上下文联机帮助。

下面就向大家介绍TApplication中的常用属性、方法和事件。

1、属性

1.   1属性Active

属性Active指明了应用程序是否处于活动状态且拥有焦点。定义如下:

  property Active: Boolean;

Active是只读属性。当应用程序是活动状态时ActiveTrue,否则为FalseTApplica-tion的构造器 (constructor) ActiveTrue。如果窗口或应用程序拥有焦点,那么该应用程序是活动的。当其它应用程序的窗口成为活的时,当前应用程序即为非活动的。应用程序关闭时 TApplication的析构器(destructor) ActiveFalse

在应用程序中,可以用一个计时器(TTimer)来检查属性 Active的值,从而确定当前的应用程序是否是活动状态,以便作出相应的处理。也可以在事件OnActive和事件OnDeactive 中定义指定的操作。

  12属性 DialogHandle

  属性DialogHandle提供使Delphi 应用程序使用非Delphi对话框的一种机制。定义如下:

  property DialogHandle: HWnd;

当使用API函数CreateDialog 创建一个非模式化对话框时需要使用 DialogHandle,并且需要查看应用程序消息循环中的消息以进行相应的操作。比如,当一个非模式化对话框收到一条激活消息(WM_NCACTIVATE) 时可以将其句柄赋值到 DialogHandle,当对话框收到一条解除激活消息时置DialogHandle 0

13属性 ExeName

  属性ExeName包含了可执行的应用程序文件名极其路径信息。定义如下:

  property ExeName: string;

      ExeName是只读属性。使用 ExeName能够得到应用程序可执行文件的文件名。

这是一个很有用的属性。例如,运行光盘中的应用程序 f:\media\myapp.exe 时,可能需要访问目录 f:\media\data\ 中的文件或者确定应用程序所在的驱动器盘符。 这时可以使用Delphi 提供的函数ExtractFilePathExtractFileName对属性ExeName 进行解析,从而得到需要的信息。

14属性 Handle

  属性Handle提供了对应用程序主窗口句柄的访问。定义如下:

  property Handle: HWND;

当调用一个需要父窗口句柄的 Windows API函数时需要使用 Handle属性。例如,应用程序中某个动态链接库(DLL) 可能需要父窗口句柄以使得其自身能够弹出并且显示在最前端。使用Application.Handle 构成应用程序的若干窗口,使得这些窗口在应用程序中能够被最小化、恢复、有效或无效。注意:编写一个使用 VCL窗体的动态链接库时,应将主运行程序中主窗口的句柄赋值到该动态链接库的Application.Handle 属性。这样就使得动态链接库的窗体成为主应用程序的一部分。需要特别指出的是,永远不要在EXE应用程序中给Application.Handle赋值。

15属性 HelpFile

  属性HelpFile指明了应用程序用于显示帮助内容的文件名。定义如下:

  property HelpFile: string;

使用HelpFile是为了应用程序拥有一个使用标准 Windows帮助系统的帮助文件。Windows显示由HelpFile属性指明的帮助文件。要让应用程序实现这一点,必须在运行时为 HelpFile属性赋予一个文件名的值,或者在设计时Project|Options对话框的Application 页面中指定一个帮助文件。默认情况下,HelpFile是一个空串(''),并且应用程序的帮助方法忽略所有的试图显示帮助。如果HelpFile 包括任何内容,帮助主题的方法将根据文件名调出 Windows帮助系统以提供联机帮助。

  注意:如果活动窗口的帮助文件已指定,则该文件将优先于应用程序的帮助文件显示。

16属性 Hint

  属性Hint指明了出现在帮助提示框(Help Hint box) 中的文本字符串。定义如下:

  property Hint: string;

TApplication.Hint属性就是鼠标正在移动经过的控件或菜单项的 Hint 值。该属性也能被赋予一个向用户提供动作、错误或其它信息的字符串值。因此,使用Hint属性也能够:从控件传递提示信息到另一显示区,例如通过OnHint事件句柄将提示显示到状态栏中。这时是读取 Hint属性。当应用程序正在进行某一动作时简要描述其状态。这时是设置Hint属性。当OnHint 事件发生时帮助提示才出现。因此,即使TApplicationHint属性被赋予状态栏的标题,例如状态栏控件的标题显示Hint 属性的当前字符串值,也应归于OnHint事件。

Hint字符串包括两部分:短提示和长提示。短提示用于简洁的弹出提示;长提示与短提示之间用竖线"|" 隔开,用于在状态栏中显示较详细的提示信息。可以使用单元 Controls中提供的字符串函数GetShortHintGetLongHintHint属性中分解得到短提示和长提示。

注意:当应用程序通过设置Hint属性向用户提供某一事件发生的信息时应当切记,默认情况下,当鼠标移动经过某一控件时, Hint字符串被复位到该控件的Hint属性值。

17属性 HintHidePause

属性HintHidePause 指定了鼠标尚未从控件或菜单项上移开、在隐藏帮助提示之前的时间间隔。定义如下:

  property HintHidePause: Integer;

HintHidePause以毫秒为单位指定等待时间,在 TApplication 的构造器中该属性被置为2500毫秒(2.5 )。控件或菜单项的帮助提示在Hint属性中指定。

注意:默认应将HintHidePause的值预先确定为 HintPause属性值的35倍较合适。

18属性 MainForm

  属性MainForm唯一标识了应用程序的主窗体。定义如下:

  property MainForm: TForm;

属性MainForm指定的窗体不一定等同于应用程序的主窗口。属性 MainForm的值一定是由方法CreateForm创建的所有窗体中的第一个窗体,但该窗体未必是应用程序的主窗口。新建一个工程时,MainForm 属性值自动置为Form1。在设计时可通过Project|Options对话框中的Forms 页面在多个窗体中指定其中之一为MainForm。在运行时是不能修改MainForm属性的,因为该属性是只读的。主窗体是应用程序主题创建的第一个窗体。主窗体关闭即应用程序终止。在应用程序中,可以调用方法 Application.MainForm.Close来终止应用程序运行,可以获取Application.MainForm.TopApplication.MainForm.Left 等属性的值从而确定当前活动窗口的位置以及尺寸等。

19属性 ShowMainForm

  属性ShowMainForm确定了是否在应用程序启动时显示主窗体。定义如下:

  property ShowMainForm: Boolean;

应用程序用ShowMainForm属性控制是否以及何时显示其主窗体。 TApplication的构造器置ShowMainFormTrue。默认情况下主窗体将被显示, MainForm属性中指明了主窗体。

如果需要在应用程序启动时隐藏主窗体,那么应在主工程文件中调用 Application.Run 之前置ShowMainFormFalse,并且确信主窗体的Visible 属性值为False。这在许多实现OLE自动化服务器是很有用的,比如在启动自动化服务时隐藏服务器程序的主窗体。

另外,如果需要在应用程序启动时显示一个闪出图片(Flash) 并为应用程序的环境做一些准备,同时需要禁止主窗体显示,这也可以利用属性 ShowMainForm来实现。比如Delphi启动时就禁止了主窗体的显示。

110属性 Terminated

  属性Terminated报告程序是否收到终止程序的Windows 消息WM_QUIT。定义如下:

  property Terminated: Boolean;

Terminated是只读属性。该属性主要用于调用ProcessMessages 方法时应用程序不必在停止后试图处理Windows 消息。当ProcessMessages方法收到消息WM_QUIT 时,Terminated将被置为True

  Delphi应用程序总会因为主窗体或应用程序关闭,或者因为Terminate 方法被调用而收到消息WM_QUIT

  当应用程序执行强度较大、占用系统资源较多的运算时,应当周期性地调用Applicati-on.ProcessMessages 方法,并检查属性Application.Terminated以确定是否需要终止运算从而终止应用程序。

111属性 UpdateFormatSettings

属性UpdateFormatSettings指明了当用户改变系统配置时应用程序是否自动更新格式设置。定义如下:

  property UpdateFormatSettings: Boolean;

  使用UpdateFormatSettings属性应用程序可以控制自动更新格式设置。 TApplication的构造器置该属性为True。当应用程序收到消息WM_WININICHANGE时将检查 UpdateFormatSett-ings属性。建议使用默认的格式设置,也就是Windows本地的设置。可以置UpdateFormatSe-ttings False以避免在Delphi应用程序执行期间改变格式设置。

112属性 UpdateMetricSettings

属性UpdateMetricSettings属性指明是否对提示窗口字体和图标标题等相关设置进行更新。定义如下:

  property UpdateMetricSettings: Boolean;

  UpdateFormatSettings属性指明系统中提示窗口字体和图标标题等设置改变是否反映到应用程序中相关设置的改变。 TApplication的构造器置UpdateMetricSettings的初始值为True

2、方法

21方法 BringToFront

方法BringToFront设置应用程序中最近一次的活动窗口到桌面上所有窗口的最前端。其定义如下:

  procedure BringToFront;

  用BringToFront方法可以找到属于主窗体的最近一次的活动窗口并且将其置于最前端。 BringToFront方法也可以测试和查看一个窗口在成为最前端窗口之前是否是可见 (Visible) 和有效的(Enabled) 例如,当应用程序收到邮件时,可能需要将专门的处理程序激活并置于Windows 桌面的最前端。这时就可以调用Application.BringToFront 方法来实现。

22方法 CreateForm

  方法CreateForm方法用于创建新的窗体(form) 。定义如下:

  procedure CreateForm(FormClass: TFormClass; var Reference);

Delphi应用程序总会调用CreateForm 方法。因此程序员很少有必要直接调用CreateForm方法。一个典型的Delphi工程在工程的主体代码部分包括一处或多处调用CreateForm 方法,并且在使用窗体设计器时自动控制窗体的创建。也可以在运行时可以调用CreateForm方法来动态创建窗体。CreateForm 方法根据FormClass 参数创建一个新的指定的窗体并且将窗体赋予到变量参数Reference 新创建的窗体的所有者就是对象 Application 应用程序将第一个调用CreateForm 创建的窗体默认为工程的主窗体。

23方法 HandleException

  方法HandleException为应用程序的异常提供默认的句柄。定义如下:

  procedure HandleException(Sender: TObject);

方法HandleException 对于编写特定组件的作者来说是很有用的,因为它可以产生一个不必对 Windows 消息产生响应的事件。在应用程序中可以利用OnException 事件句柄将其它的异常操作控制在自定义的代码中。在应用程序代码中,如果异常跳过了所有的 try 块,那么应用程序将自动调用HandleE-xception方法,并将显示一个提示有错误发生的对话框。除非异常对象是EAbort ,此时Han-dleException将调用OnException句柄( 如果存在),否则将调用ShowException显示一个提示有错误发生的对话框。

24方法 UnhookMainWindow

UnhookMainWindow方法用于释放由HookMainWindow 方法挂在主窗体的程序。定义如下:

  type TWindowHook = function(var Message: TMessage): Boolean of object;

  procedure UnhookMainWindow(Hook: TWindowHook);

UnhookMainWindow可以释放挂钩窗口。在参数 Hook中指明对话框过程。  TwindowHook 类型是调用HookMainWindow方法的参数。该参数是非 Delphi对话框中调用对话程序的方法指针。对话程序与窗口程序相似,都是为对话框处理消息,只是语法不同。

3、事件

31事件 OnActivate

  当应用程序成为活动状态时OnActivate事件发生。定义如下:

  type TNotifyEvent = procedure (Sender: TObject) of object;

  property OnActivate: TNotifyEvent;

OnActive事件编写一个事件句柄来完成当应用程序成为活动状态时指定特别的处理。当一个 Windows 应用程序最初运行时或其焦点从另一个Windows 应用程序转移回到当前应用程序时,该应用程序成为活动状态。

32事件 OnDeactivate

  当应用程序成为非活动状态时OnDeactivate事件发生。定义如下:

  type TNotifyEvent = procedure (Sender: TObject) of object;

  property OnDeactivate: TNotifyEvent;

在应用程序成为非活动状态之前可以立即触发OnDeactive事件,从而完成在该事件句柄中指定的特别处理。当用户从当前应用程序转换到另一应用程序时,当前应用程序的 OnDeactive事件即发生。

33事件 OnException

  当应用程序中的某个无句柄的异常发生时事件OnException发生。定义如下:

  type TExceptionEvent = procedure (Sender: TObject; E: Exception) of object;

  property OnException: TExceptionEvent;

  可以通过OnException 事件来改变在应用程序中无句柄的异常发生时的默认动作。在方法 TApplication.HandleException方法中,OnException 事件句柄被自动调用。

  OnException 事件仅用于处理在进行消息处理时发生的异常。在 Application.Run 执行前或执行后发生的异常不会导致OnException事件发生。

  如果某个异常在应用程序代码的try 块中被忽略,那么应用程序将自动调用 HandleException方法。除非异常对象是EAbort,此时HandleException 将调用 OnException句柄(如果存在) 否则将调用ShowException 显示一个提示有错误发生的对话框。TExceptionEvent类型是OnException 事件的类型,该类型在应用程序中指向一个处理异常的方法。参数Sender是引发异常的对象,而参数E 是异常对象。

34事件 OnHelp

  当应用程序收到帮助请求时OnHelp事件发生。定义如下:

type THelpEvent = function (Command: Word; Data: Longint; var CallHelp: Boolean): Boolean of object;

  property OnHelp: THelpEvent;

  用OnHelp编写一个事件句柄以完成有请求帮助时特别的处理。HelpContext 方法和HelpJump方法自动引发OnHelp事件。在事件发生之后置 CallHelpTrue使VCL调用WinHelp ;置CallHelpFalse以防止VCL 调用WinHelp Delphi应用程序中所有与帮助有关的方法都经过OnHelp 事件。仅当OnHelp事件中的CallHelp参数返回TrueOnHelp事件没有被指定到有效的句柄时,WinHelp被调用。

35事件 OnHint

当鼠标指针移动经过某个控件或菜单项并且该控件或菜单项能够显示帮助提示时,事件OnHint发生。定义如下:

  type TNotifyEvent = procedure (Sender: TObject) of object;

  property OnHint: TNotifyEvent;

  用OnHint编写的事件句柄能够在OnHint 事件发生时执行指定的操作。当用户停放鼠标指针在某个控件上,并且该控件的Hint属性值不是空串(''),这时OnHint 事件将发生。通常用OnHint事件显示控件或菜单项Hint属性的值作为某个面板控件(TStatusBar)的标题,因此把面板(panel) 用作状态栏(status bar) 。当OnHint事件发生时,Hint属性通常被指定为一个帮助提示(Help Hint) 和一个在别处显示的长提示(longer hint)

36事件 OnIdle

  当应用程序成为空闲状态时OnIdle事件发生。定义如下:

  type TIdleEvent = procedure (Sender: TObject; var Done: Boolean) of object;

  property OnIdle: TIdleEvent

  用OnIdel编写一个事件句柄当应用程序空闲时完成指定的操作。当应用程序不执行任何代码时即为空闲的。例如,当应用程序等待用户输入时该应用程序是空闲的。   TIdelEvent类型是OnIdel事件的类型,它指向一个当应用程序空闲时运行的方法。对象TIdelEvent 有一个默认为True的布而变量Done。当Done True时,Windows API 函数WaitMessage将在 OnIdel返回时被调用。WaitMessage 使其它应用程序得到控制焦点直到应用程序的消息队列中出现一条新的消息。当参数DoneFalse 且应用程序不忙时,应用程序不会使其它应用程序得到控制焦点。当应用程序转为空闲状态时,OnIdel事件仅发生一次,直到参数 Done置为True才可能发生下一次OnIdel事件。应用程序置 DoneFalse消除了紊乱的CPU时间计数,而该计数可能影响整个系统的性能。

37事件 OnMessage

  当应用程序收到WINDOWS 消息时产生,定义如下:

  type  TMessageEvent = procedure (var Msg: TMsg; var Handled: Boolean) of object;

  property OnMessage: TmessageEvent

      用于接收WINDOWS 消息,该事件能接收程序向WINDOWS发送的所有消息。应用程序接收到一个消息时产生该事件。变量MsgWINDOWS 消息类型。





--
时间这种东西,你要是不消磨它,它就要消磨你
http://www.ist.cn/
http://www.joyspaces.com
http://www.thinkle.com

lijinyang

职场风云---合同

、合同中的试用期陷阱要当心

    试用期也是一些不法用工单位对付求职者的撒手锏,往往出现好不容易要过了试用期,又被解雇了的事情。其实,试用期并不能成为用工单位试用"价廉物美"的劳动力的法宝。
    根据《劳动法》等法律法规规定,只有签订正式劳动(聘用)合同时,双方才可以均定试用期,也就是说没有正式合同便没有试用期,更不存在单独的所谓"试用合同"。
     目前不少用人单位与被聘用人员订立所谓的"试用合同"应属无效合同,因为有关法律根本不承认"试用合同"。造成这种无效合同的责任主要在用人单位,而被损 失者则往往是被聘用者。比如,用人单位与你签订了为期1年的"试用合同",你干了9个月时,单位以"试用期"为名炒你的"鱿鱼",并不作任何经济补偿。你 可以提出这个合同是无效合同,一年的试用期应当视为正式合同期。
  据此,你不但可以要求单位按规定才能解除你的合同,即使合同被解除,你也有权要求对方赔偿你的损失,并要求按规定单位因提前解除合同向你支付经济补偿,当然你也有理由要求单位为你支付所谓"试用期"内的"四金"。  
    再比如,《上海市劳动合同规定》中规定,劳动(聘用)合同试用期最长不得超过6个月,同时还规定:合同期不满6个月的不设试用期;满1年不满3年的,试用期最长为3个月;满3年及3年以上合同的试用期不得超过6个月。
     如果你的聘用期为2年,而合同规定你的试用期为6个月,那么这个试用期的条款便属无效条款。如果当你干了3个月后, 对方以试用期解除合同而不作赔偿时,你可以追究对方造成无效条款的责任,还可以按提前解除劳动合同的规定,向用人单位索要经济补偿。

二、劳动合同的必备条款

    美梦成真——你终于得到工作了!先别急着庆贺,还有一项很重要的事情——劳动合同的签署。
    劳动合同是劳动者与用人单位确立劳动关系、明确双方权利和义务的协议,也是维护劳动者和用人单位合法权益的法律保障。
    社会生活千变万化,劳动合同的种类和当事人的情况也非常复杂,我国《劳动法》只是对劳动合同的原则性、纲领性指导和规范,不可能对每个劳动合同都作出详细的规定,况且有些合同条款是无法用《劳动法》加以规定的。
     劳动合同可以对劳动内容和法律未尽事宜作出详细、具体的规定,使双方明了权利和义务,促进双方全面履行合同,防止因违约而导致责任发生;劳动合同在发生劳 动争议时也是解决纠纷的重要证据,使用人单位和劳动者解决纠纷更为便利,降低争议解决成本和社会耗损费用。故此,签订一份完备、公平合理的劳动合同对于你 和公司来说都很重要。
       用人单位和劳动者签定时劳动合同地位平等,应当在自愿的基础上协商一致。为了提高签约效率和节省签约劳动 量,实践中较为常见的是用人单位事先拟好劳动合同,由劳动者作出是否签约的决定而不允许改变合同内容,也就是签定格式合同;虽然格式合同中单方面限制劳动 者主要权利和免除用人单位主要义务的条款因违反公平和诚实信用原则而归于无效,但劳动者签约时仍然应当注意完全理解格式合同的条款内容,并对其中的不合理 部分提出异议。
    以下简单介绍一下劳动合同的必备条款:
    1.劳动合同期限;
    2.工作内容;
    3.劳动保护和劳动条件;
    4.劳动报酬;
    5.劳动纪律;
    6.劳动合同终止的条件;
    7.违反劳动合同的责任;
     双方还可以协商约定劳动合同的补充条款。其中违反劳动合同的责任条款比较重要,因为《劳动法》和《违反《劳动法》有关劳动合同规定的赔偿办法》规定双方可 以协商约定责任的认定、赔偿的范围、计算方法和承担方式,所以由用人单位提供的格式合同的"霸王条款"常见于此处,一旦发生纠纷用人单位常常持此"尚方宝 剑"提请仲裁,而使劳动者处于不利的地位。
    还应当注意:劳动合同约定的试用期是包括在合同期限内的,最长不得超过6月;工作内容可以 规定劳动者从事某一项或者几项具体的工作,也可以是某一类或者几类工作,但都要求明确而具体。用人单位不得将劳动合同的法定解除条件列为约定解除条件,借 以逃避用人单位在解除劳动合同时应当承担的经济补偿义务。如果劳动者家庭驻地离工作单位特别远,在合同中还应有食宿的解决方案。由于国务院目前尚未对企业 职工带薪年休假制度作出具体规定,对于企业高级职员来说,应当要求在劳动合同中明确。同时用人单位和劳动者必须依据法律参加社会保险,这并不是合同所能约 定和双方所能协商解决的,但双方可以就医疗、养老和人生意外伤害等补充商业保险订立相应的条款。

三、劳动用工合同,内藏玄机

    编者按:劳动合同本来是用来规范用工双方劳动关系,明确相互权利义务,但如果是不合理、不合法的合同,却会起到相反作用。请关注:
1.公司重组,原劳动合同如何处置?
    案例:孙先生等人原所在公司为国有控股上市公司,公司和上级集团关系没有理顺。99年孙先生与集团公司签订5年劳动合 同,但他一直在上市公司工作。2001年2月集团公司将所持有上市公司的全部股份转让给外地一上市公司,转让后公司名称、法人代表均发生改变,公司管理、 福利、工资等均与原来不一样。孙先生等在签订合同时对合同内容没注意,而合同对工作内容和待遇没有具体规定,但对职工要求提前解除劳动合同却订了很高数额 的赔偿条款。现在孙先生等要求同现在公司修改原合同或重新签订劳动合同,但公司转让半年多了,迟迟不提劳动合同变更问题,在孙先生等人问起此事,公司总是 推托。一怒之下,孙先生将争议提交到了劳动争议仲裁委员会。
    分析:《上海市劳动合同规定》第十一条(合同的变更)劳动合同生效后,在有效期内,当事人任何一方要求变更合同内容的,需将变更要求书面送交另一方,另一方应在15日内做出书面答复。双方协商达成一致意见,可以变更劳动合同;双方未达成一致意见,原劳动合同继续有效。
    因此,公司发生重组,原劳动合同依然有效。按照国家规定,应当变更劳动合同的相关内容。在变更合同内容时, 双方应当平等协商,如经协商达不成一致,劳动合同可以解除。劳动者可以依法按规定获得经济补偿金。在这里要告诉大家,签定合同时,一定要仔细看清合同相关 条款规定,否则,发生劳动合同纠纷时就很被动。
2.无效劳动合同,自始无效
    案例:1998年小李等8个本科应届毕业生,从学校被招聘到一家公司工作,到公司后,在一个月内公司与小李等人签订了一 份为期5年的劳动合同,试用期为一年。合同上规定如果小李等人在试用期内违约,按每月1000元赔偿,如果一年后违约,要赔偿违约金5-10万元。公司说 该合同是应付上面检查的,所以没有给小李他们。小李他们上班后才知道,在这里每周工作六天,每天8.5个小时,甚至到9个小时,晚上及节假日加班也根本没 有报酬,试用期满后公司还要收取培训费,共3000元,3年扣完。他们的工资水平1000元左右,开始还能忍受。现在快三年了,他们想解除合同,但公司却 让他们按照进劳动合同支付违约金。小李他们要回了劳动合同,到当地负责劳动合同鉴证的部门请求鉴证,并根据结果,提交到了当地的劳动争议仲裁委员会。
    分析:从这份合同看,在许多方面都违反了国家的有关规定,属无效合同:
    1.劳动合同中,试用期一年的规定不符合《劳动法》的规定,从签订的合同期限看,最长不能超过6个月。
    2.企业提出的巨额违约金不知有何依据?如违约解除劳动合同,按国家规定应负赔偿责任,但应按国家规定处理。
    3.员工加班,企业必须按规定支付加班费。
    4.劳动合同文本应当双方持有。
   《上海市劳动合同规定》(节选)第十二条(无效的合同)下列劳动合同无效:
    (一)违反法律、法规、规章的劳动合同;
    (二)采取欺诈、威胁等手段订立的劳动合同。
    无效的劳动合同从订立的时候起,就没有法律约束力。确认劳动合同部分无效的,如果不影响其余部分的效力,其余部分仍然有效。劳动合同的无效,由劳动争议仲裁委员会或者人民法院确认。
    第三十九条(违约赔偿额的确定原则):违约赔偿额应当根据公平、合理的原则确定。
3.自愿签名,合同照样可无效。
    案情:上海郊县一家中外合资电子公司招聘熟练女工,叶某(女,20岁)应聘被录用。双方就劳动关系的确立签订了劳动合 同。合同规定,乙方(叶某)每周工作6天,每天工作10小时,每小时工资1.5元;工作期间,乙方因病、因工或非因工负伤均自行承担,公司概不负责;合同 期3年,乙方每提前1年解除劳动合同,均要支付5000元/年的违约赔偿金。在双方签订劳动合同时,叶某考虑找到工作不容易,对用人单位起草的合同未提出 任何异议,并签上了自己的名字,劳动合同即宣告成立。
  工作半年多后,叶某再也无法承受恶劣的劳动条件,要求与公司提前解除合同。该公司拒 不同意,认为叶某当时在合同上自愿签名表示承认合同的效力,愿意受合同条款的约束,如果叶某执意解除合同,就要求叶某支付1万元违约金加以阻拦。叶某不 服,向当地劳动争议仲裁委员会申请仲裁。
      处理结果:
    仲裁庭认为,劳动者享有休息权利、劳动保险 和福利待遇,是我国的一项基本劳动法律制度。申诉人与被申诉人签订的劳动合同违反了我国《劳动法》规定的工作时间制度,也违反了有关劳动者在年老、患病、 工伤、失业、生育等情况下有获得帮助和补偿权利的法律规定。因此,该合同被认定为无效,从订立时起就不具有法律效力。劳动者叶某不受合同的约束。根据《劳 动法》关于同工同酬和延长工时工资支付制度的相关规定,用人单位应补发工资给叶某。
    据此,仲裁庭裁决:
    (1)双方签订的劳动合同无效;
(2)用人单位补发叶某工资3000元。
      案情评析:
     上述仲裁裁决维护了劳动者叶某的合法权益。但就该裁决所涉及的法律问题而言,其核心是叶某与该电子公司所签劳动合同 是否有效。在本案中,仲裁庭之所以裁定该劳动合同无效,其理由就在于该合同违反了《劳动法》中的有关强制性规定。
     例如,《劳动法》规定,在一般情况下,劳动者每日工作时间不超过8小时,平均每周工作时间不超过44小时;因特殊原因需要延长工时的,必须支 付额外的劳动报酬。而该劳动合同中10小时的工作时间约定超过这一规定,且用人单位未支付相应的延时工资。
     又如,《劳动法》规定,劳动者在年老、患病、工伤、失业、生育等情况下有获得帮助和补偿的权利,其来源主要是社会保险基金。而社会保险基金实行社会统筹, 由用人单位和劳动者按比例缴纳。因此,在上述劳动合同中,用人单位既不依法为劳动者办理社会保险,又在劳动者生病、负伤时排除自身责任,其内容明显违反法 律的强制性规定。
  这一案例告诉我们,在签订劳动合同的过程中,并不是把什么条款和内容写入合同都能得到法律的认可。劳动合同的双方(尤其是作为弱势一方的劳动者)应当充分了解劳动法律、法规中的强制性规定,并在签订劳动合同时认真履行法定义务,这样才能切实维护自身的合法权益。

四、找工作签合同仔细看清楚

 
    不少人可能面临着与所服务的单位续订劳动合同,一些"跳槽"到新单位的人,也需签订新的劳动合同。对此,我们有一些签订劳动合同的注意事项供参考。
1.仔细审读劳动合同书
劳动合同是劳动者与用人单位确立劳动关系,明确双方权利和义务的协议。在劳动合同中,劳动者和用人单位是平等的合同 主体。因此,双方订立劳动合同应当平等、自愿、协商一致,并且劳动合同的内容不得违反法律和行政法规的规定。根据《中华人民共和国劳动法》规定,劳动合同 应当包括以下内容:
    · 劳动合同期限(分为有固定期限、无固定期限、以完成一定工作为期限)
    · 工作内容
    · 劳动保护和劳动条件
    · 劳动报酬
    · 劳动纪律
    · 劳动合同终止的条件
    · 违反劳动合同的责任。
    * 劳动合同可以约定试用期 但试用期最长不得超过6个月。在劳动纠纷中,有少数单位在续签劳动合同时,再次约定试用期,特别是在短期合同的续约中容易出现,这是与《劳动法》相违背的,需引起注意。
    * 工作内容、职务的聘用应清楚明了 使劳动者知道自己做什么、发展空间有多大,也避免了过于频繁地"跳槽",不利于自己的成长。
    * 劳动报酬和福利 这是每一个劳动者都十分关注的问题。劳动者一定弄明白用人单位能提供哪些社会保险以及个人的缴付比例。有些用人单位在劳动者离职后扣押保险单证的做法是不对的,劳动者应依法力争。
    * 劳动合同终止的条件和违反劳动合同的责任 在司法实践中,违法解约引起的纠纷较多,因此,劳动者一定要将此类条款审读清楚,避免模糊的合同措词,以免发生纠纷时,维权困难。
    * 以上规定的条款,是劳动合同必须具备的。在实践中,双方可用补充条款对其它事项进行约定,如教育培训、劳动合同变更的条件、完成工作任务的奖励等,对双方权益维护都将起到积极作用。

五、别人代签的合同有效吗?

某公司的销售员武先生刚从广州出差回来,同事小李就来到他家,武先生倒了一杯水给小王,"公司最近有什么事儿吗?"小王答到:"半个月前咱们的 合同到期了,公司同意在原合同内容不变的条件下,再续签两年合同,当时你出差在外,大家知道咱俩是好朋友,就让我替你在你的合同上签了字,你没意见吧?"
    "咳,续签合同也就是走形式的事儿,谁会当真呢。"武先生随口说到。半年后武先生因找到了一份薪水更高的工作,向公司提交了辞职申请。几 天后,公司经理对武先生说:"对于你的辞职报告,经理办公室讨论决定,不予批准。"说着,经理找出了武先生的劳动合同,看了一遍后,继续说:"再等一年 半,你续订的合同到了期,才可以调走。否则,你现在要是调走,还要承担违约金。"
    "可是,我并没跟公司续订劳动合同呀。"武先生装出不解的样子。
    "你看,"经理把劳动合同书翻到最后一页,指着那一栏的签字,"这不是你的亲笔签字吗?"
    "不是!不信的话,您可以对照一下原合同中我的签字。"武先生胸有成竹的说道。
    经理把合同向前翻了几页,看到了原合同中的武先生的签字,的确与续订合同中的签字笔体明显不一样,他纳闷儿地看着武先生。
   "不瞒您说,续签合同时,我正在外地出差,根本不在北京,是小王替我签的字。但是,我并没有授权他替我续签合同,因此,不应由我承担。也就是说,我调走,用不着承担合同违约金。"
     无论是初次签订劳动合同,还是续签劳动合同,当事人的签名都是其在法律上同意的表示,是对合同权利义务接受的表示。 签名者应对自己的行为所可能产生的法律后果承担责任。若他人代签合同,应得到当事人书面委托或事后追认,否则,合同不对该当事人产生法律约束力。
     然而,民法通则中还规定,如本人知道他人以本人的名义实施民事行为而不作否认表示的,视为同意。武先生虽然没有委托小王代其续签合同,但他出差回来,小王 已告之代其签名一事,且明确:续签合同的内容同原合同内容一样。对此,武先生未提出任何异议。对于原合同的内容(包括合同违约金),武先生本人是完全清楚 的。续订的劳动合同履行已半年,武先生一直未作任何否认表示,因此,符合法律规定的默认同意,该合同对他具有法律约束力。若武先生提前离开光学仪器公司, 应当承担合同违约金。
    值得引起注意的是,目前一些用人单位和劳动者,在推行劳动合同制的过程中,不严肃地对待劳动合同的形式要求,随 意漏签、代签的情况时有出现,由此产生了一系列的劳动纠纷。因此,在此提醒大家,不要忽视订立劳动合同的程序,既不要没有各高授权代为别人签订合同,也不 要随意委托别人代签合同。

六、保密合同签不签?如何签?

随着市场竞争的加剧,用人单位越来越注重对本单位经济、技术、商业秘密的保护,其表现之一就是越来越多的用人单位要求被录用的人员除了签订来到 合同外,还要加签形形色色的"保密协议"。有不少读者问:单位把保密协议作为录用的附加条件的做法对不对?保密协议该不该签?又应当注意什么问题?
     据了解,上述的所谓的保密协议包括了两个部分,即在职期间与离职后在保守用人单位的商业秘密双方承担的权利与义务。如果说在职期间是"在人屋檐下,不能不 低头"还可以理解的话,许多读者对离职后还要受到约束,感到有些难以接受。离职后有关保护原单位秘密的这种做法,也叫竞业禁止,是指用人单位为防止本单位 商业秘密的泄露和不正当竞争,利用劳动合同条款或独立的契约形式,采用支付补偿的方式,与掌握本单位重要商业秘密的员工约定,在终止或解除劳动合同后的一 定期限内不得再生产同类产品、经营同类业务,或到有竞争关系的其他单位从事相同职业或自行生产同类产品、经营同类业务的合同。在国外,保密合同签订后,员 工如果跳槽,公司要给其一定金额的补偿,作为一定期限内不能到同类行业工作的损失。而在国内,经济补偿难以保证,社会保障又不完善的前提下,个人与企业该 不该签订保密合同?
  《中华人民共和国劳动法》第二十条规定,劳动合同当事人可以在劳动合同中约定保守用人单位商业秘密的有关事项。
     根据《中华人民共和国反不正当竞争法》的规定,商业秘密是指不为公众所知悉,能为权利人带来经济利益,具有实用性并经权利人采取保密措施的技术信息和经营 信息。在司法实践中,常见的行为是以作价入股的手段利诱掌握技术信息和经营信息的一方当事人违反合同规定脱离另一方当事人,或者一方当事人以追求自身利益 的最大化而脱离另一方当事人,并以所掌握的商业秘密从事营利性活动,从而侵害了商业秘密拥有者的合法权益。
   劳动者违反劳动合同中的保密 事项,直接侵害的对象就是用人单位的商业秘密,并涉嫌从事不正当的竞争行为,无论是在国内市场或国际市场,均为被禁止之行为。《上海市人才人才流动条例》 等发稿政策规定,招聘单位在招聘活动中不得聘用:从事国家机密工作或者曾经从事国家机密工作且尚在规定的保密期限内的人员,尚未与原单位解除合同或者办理 合法辞职、调动手续的人员,以防止侵害另一方正常的生产经营活动。在司法实践中,采用不正当手段获取人才,以获取商业秘密为目的,或以获取自身利益最大化 而侵害对方利益的行为,均为法律所禁止。第三人明知或者应知前款所列违法行为,获取、使用或者披露他人的商业秘密,视为侵犯商业秘密。
   商业秘密中之技术信息,包括完整的技术方案、开发过程中的阶段性技术成果以及取得的有价值的技术数据,也包括针对技术问题的技术诀窍,商业秘密中之经营信 息,指经营策略、管理诀窍、客户名单、货源情报、投标标底等信息。按照规定,劳动者离开原单位时,应当按照与原单位签订的合同或者协议的约定处理好有关事 宜;用人单位必须如实为离职者提供证明文件及相关材料,以方便劳动者求职。根据劳动和社会保障部《关于企业职工流动若干问题的通知》规定,用人单位与掌握 商业秘密的职工在劳动合同中约定保守商业秘密的有关事项时,可以约定在劳动合同终止前或该职工提出解除劳动合同后的一定时间内(不超过六个月),调整其工 作岗位,变更劳动合同中的相关内容;用人单位也可规定掌握商业秘密的职工在终止或解除劳动合同后的一定期限内(不超过三年),不得到生产同类产品或经营同 类业务且有竞争关系的其他用人单位任职,也不得自己生产与原单位有竞争关系的同类产品或经营同类业务,但用人单位应当给予该职工一定数额的经济补偿。
     在此要提醒读者的是:一是掌握商业秘密人员的范围不得随意扩大,用人单位不得以保守商业秘密为由,在劳动合同中,将保守商业秘密条款演变成忠诚条款,限制 正常的人才流动。二是竟业禁止不是单通道,离职人员在承担保密的义务的同时也有得到经济补偿的权利。如果保密协议只规定离职人员的义务而没有相应的经济补 偿,则可以不承担义务或要求劳动仲裁委员会裁定为无效协议。
    有关专家认为:保密协议(竞业禁止)作为一种契约,应体现自愿、公平、平等、等价有偿、诚实信用的一般合同原则。合法有效的竞业避止合同应当符合下述条件:
    1、目的正当 用人单位是为了保护本单位的商业秘密而不是出于限制竞争、保持垄断、限制员工自由择业的目的而订立合同,否则该合同是无效的。
    2、对象限定 竞业避止合同应严格限于因工作关系而知悉本单位重要商业秘密的人员。
    3、商业秘密范围明确 应在合同中写明商业秘密的具体范围,且不得将该行业的一般知识、技能或员工因工作而累积的专业技能都归入商业秘密的范围,尤其对员工创造并享有的知识产权,不能单纯作为单位的商业秘密,而应双方协商,确定归属。
   4、限制从事的竞争性行业或单位必须确定应在合同中列出。
    5、期限确定且合理 竞业限制期限可由双方根据商业秘密的价值、竞争优势的持续时间、员工知悉秘密的程度来加以协商确定,但法律应规定一个最长期限,以防止对人才流动的恶意限制。根据我国的现行法律和大部分国家的做法,我国可仍将其规定为3年。
    6、合同中不仅必须约定补偿,而且还应该明确补偿的数额或计算方式、支付方式等对数额的确定,可依据该行业该职位的收入高出社会平均工资收入的差额乘以竞业限制的年限来计算。

七、不平等合同,千万别饮鸩止渴

    找工作是件不容易的事儿,但是,找到工作之后如何选择对自己事业和前途有帮助的工作,尤其不 能让一份工作耽误了自己应有的利益和权利。这是每个求职者的共同愿望,事实上,这种保护自己合法权益的思想是任何时候都需要保持的,在签定用工合同的时 候,尤其值得注意。
    笔者注意到,不少求职者求职的时候千般好万般好,面对一纸合同,他们总是有种不签白不签的心态。尽管工作难找,但是,对于不平等合同,宁可不签,也不能让自己今后的生活埋下隐患。
     由于现行的劳动人事法规中,对于不平等合同并没有太多的规范,只要不是严重违反国家法律法规的合同,一旦签定就视为有效合同,因此一些细枝末节的合同条 约,需要求职者自己的把握。如果发生不合理不平等的条约要敢于说出来,也要懂得放弃。根据了解,这些合同不规范的企业,大部分都不是运作正规的企业,进入 其中工作也未必是好事。
1.不平等合同种种
  口头合同
  只是口头约定的责、权、利,没有签订书面正式文本,使一些涉世未深的求职者极易相信冠冕堂皇的许诺。一旦发生纠纷,受损的自然是求职者。
  另外,诸如一年之后加薪20%之类的签定合同时的口头承诺,虽然对于合同本身没有太多的原则上的冲突,但是,求职者还是要意识到这些口头承诺是不可靠的,完全相信的话只能给自己带来损失。
  格式合同
  即由企业事先按国家有关法律和劳动部门制订的合同示范文本,事先打印好一个聘用合同,只等求职者在上面签字或盖章。这种合同往往因为条款表述不清、概念模糊而导致求职者吃亏。
   格式合同是求职者最常碰到的合同之一,因为制定之后使用简便,显得有权威感,常常被一些机关单位和大型企业运用。但是,并不是这些单位的合同就万无一失 的,求职者仍然需要就这些合同中模糊的地方求证,必要的时候可以请律师帮忙修改这份合同。要知道,格式合同也是可以修正的。
  单方合同
  企业利用谋职者迫切求职的心态,只约定劳动者有哪些义务、要如何遵守企业的各项制度,若有违反要承担怎样的责任等等,而关于劳动者的权力,除了报酬外几乎一无所有。
  单方合同和格式合同往往是一起出现的,因为只规定了劳动者的义务,而不规定单位的,对于求职者的利益有很大的威胁。笔者认为,一旦遇到拿出单方合同的企业,最好还是避而远之。
  生死合同
  一些危险性行业的用人单位,为逃避承担的责任,常常在签订合同时,要求职工工伤自理,或只是约定一些无关痛痒的条款,与国家法定的偿付标准相关很远。
    对于高层次的白领来说,碰到这样的合同可能性是很小的。这主要针对急于求职的职工。还是有一点要强调的是,这种生死合同以及包括那些不给付医疗保险的 合同,对于身强力壮的年轻人而言也很重要。有些年轻人觉得自己身体强壮而不注意这方面的权益保障,一旦出了事故或生了大病,被单位依合同解约,真是哭不出 来。
  两层皮合同
  有些有人单位慑于劳动主管部门的监督,为逃避检查,与求职者签订两份合同。一份合同应付劳动部门的检查;而另一份合同为双方真正履行的合同,但些合同条款往往有利于用工者。
  对付这样的单位,一定要保留住自己签定的第一份合同,在危害到自己利益的前提下提出异议,必要的时候可以通过劳动部门仲裁。
  抵押合同
   有的企业要求求职者把证件及福利待遇工资抵押给企业,若求职者违反约定,则保证金没收,抵押物不退。用工者因此有了有恃无恐的把柄,求职者只好惟命是 从。一些工资待遇丰厚的企业,也凭借自己的垄断地位或眼前较好的经济效益,在其招工时借机取利,强迫求职者交纳个人集资款和风险金。
  《劳动法》有规定,在应聘的时候,用工单位无权扣押求职者的身份证明、也无权收取押金、风险投资金等钱物。
     此外,在聘用合同中,一般会有一些附加条款,求职者在签订前一定要让企业负责人拿出原文,仔细审看无异议后,再同企 业负责人当面签字盖章,以防某些企业负责人利用签字时间不同而在合同上动手脚。另外,当合同涉及数字时,一定要用大写汉字,以使不法分子无隙可乘。

八、警惕劳动合同陷阱

    依法签订的劳动合同具有法律约束力,当事人必须履行劳动合同规定的义务。
    根据《劳动法》的规定,违反法律、行政法规的劳动合同无效。根据《民法通则》和《合同法》的规定,采取欺诈、胁迫等手段订立的合同无效,同样适用劳动合同。
    在实践中,以胁迫方式订立劳动合同比较鲜见,以欺诈方式即设立劳动合同陷阱却屡见不鲜,特别是在以完成一定工作任务为目的的劳动合同中,双方一定要详细订立,尤其是完成任务的期限和验收标准,以免日后带来不必要的争端。
    另一类欺诈是一方当事人捏造事实,或故意告知不真实情况,使另一方判断失误,如劳动者把他人劳动成果窃为己有,欺骗用人单位;用人单位以不真实的利益如住房等进行虚假承诺,却不能兑现,从而引起劳动合同纠纷等。
 

九、关于无固定期限合同的问答

问:什么叫无固定期合同?无固定期合同是否就是终生合同?用人单位是否不能解除无固定期合同?
    答:从 合同的有效期来分,合同可以分成有期限的合同和无固定期合同。严格地说,这两种合同除了在有效期上的差别外,其他方面没有什么本质的差别。无固定期合同虽 然不规定合同的期限,但是如果出现国家法律法规、政策规定可以解除合同的情况,或出现合同约定的可以解除合同的情况,用人单位或劳动者也可以解除合同。因 此,无固定期合同并不能保证你在这个单位的终生地位。
     在用人从固定制向合同制转变的劳动人事制度改革中,为了保障在一个单位工作满十年的老职工的利益,有关法律法规、政 策规定,如果这些老职工希望订立无固定期合同,用人单位应当与其订立无固定期合同。从这个意义上说,用人单位在解除无固定期合同时相对应当慎重些。
    问:我在一个单位工作已满十年,今年4月,原来3年的合同将到期。有人告诉我,因为服务期已满十年,如果再订合同,必须订无固定期合同。由于各种原因,我不想与这个单位订立无固定期合同,请问,我是否能与单位订立有期限的合同?
    答:如果你注意订立无固定期合同的有关规定,就可以发现,它有两个前提,一是在一个单位服务满十年,二是要劳动者希望订立无固定期合同。你虽然可以订立无固定期合同,但本人没有这个要求,而希望订立有期限的合同,单位不能强迫你订立无固定期合同。
    问:三年前,我与公司签订了无固定期合同,最近我找到更理想的工作,我是否能解除与原单位的无固定期合同?
    答:你 这种情况不属于法定能解除无固定期合同的情况,应当根据合同的约定处理你的辞职:如果合同没有解除合同条件和赔偿的规定,而且你又不是法律法规、政策规定 不许辞职几种人,那么单位应当允许你的辞职要求;如果合同有单方解除合同的赔偿条款,那么应当按合同约定的赔偿规定处理。
    问:我是刚毕业的外地硕士生,被上海的一个单位录用,但是单位要我与其订立无固定期合同,请问这种做法对不对?
    答:除 了在一个单位服务满十年,而且劳动者希望订立无固定期合同,用人单位应当与其订立无固定期合同外,对于合同的期限,《劳动法》等没有强制性的规定,在一般 的情况下,合同期限应当由双方协商确定。因此,从法律的角度讲,单位提出要与你订立无固定期合同并没有违反法律法规、政策。但是合同期限的长短要由双方约 定,如问:什么叫无固定期合同?无固定期合同是否就是终生合同?用人单位是否不能解除无固定期合同?
    答:从 合同的有效期来分,合同可以分成有期限的合同和无固定期合同。严格地说,这两种合同除了在有效期上的差别外,其他方面没有什么本质的差别。无固定期合同虽 然不规定合同的期限,但是如果出现国家法律法规、政策规定可以解除合同的情况,或出现合同约定的可以解除合同的情况,用人单位或劳动者也可以解除合同。因 此,无固定期合同并不能保证你在这个单位的终生地位。
     在用人从固定制向合同制转变的劳动人事制度改革中,为了保障在一个单位工作满十年的老职工的利益,有关法律法规、政 策规定,如果这些老职工希望订立无固定期合同,用人单位应当与其订立无固定期合同。从这个意义上说,用人单位在解除无固定期合同时相对应当慎重些。
    问:我在一个单位工作已满十年,今年4月,原来3年的合同将到期。有人告诉我,因为服务期已满十年,如果再订合同,必须订无固定期合同。由于各种原因,我不想与这个单位订立无固定期合同,请问,我是否能与单位订立有期限的合同?
    答:如果你注意订立无固定期合同的有关规定,就可以发现,它有两个前提,一是在一个单位服务满十年,二是要劳动者希望订立无固定期合同。你虽然可以订立无固定期合同,但本人没有这个要求,而希望订立有期限的合同,单位不能强迫你订立无固定期合同。
    问:三年前,我与公司签订了无固定期合同,最近我找到更理想的工作,我是否能解除与原单位的无固定期合同?
    答:你 这种情况不属于法定能解除无固定期合同的情况,应当根据合同的约定处理你的辞职:如果合同没有解除合同条件和赔偿的规定,而且你又不是法律法规、政策规定 不许辞职几种人,那么单位应当允许你的辞职要求;如果合同有单方解除合同的赔偿条款,那么应当按合同约定的赔偿规定处理。
    问:我是刚毕业的外地硕士生,被上海的一个单位录用,但是单位要我与其订立无固定期合同,请问这种做法对不对?
    答:除 了在一个单位服务满十年,而且劳动者希望订立无固定期合同,用人单位应当与其订立无固定期合同外,对于合同的期限,《劳动法》等没有强制性的规定,在一般 的情况下,合同期限应当由双方协商确定。因此,从法律的角度讲,单位提出要与你订立无固定期合同并没有违反法律法规、政策。但是合同期限的长短要由双方约 定,如果你不同意订立无固定期合同,用人单位不应当强迫你。当然这样做可能影响你进这个单位,因此你要尽可能地注意,在合同约定解除合同的条款中,不要完 全被对方牵着鼻子走,以便保护自己的合法权益。

十、当心!《员工手册》是劳动合同的组成部分

    罗某于1997年进入某跨国公司(以下简称"公司"),并签订了为期一年的劳动合同,后又续签一年。期间,罗某在公司的广州分公司处任 职。1999年合同期满,罗某与公司再次续签一年,在上海分公司工作。双方约定罗某的薪金为人民币6千元。1999年6月,罗某在公司的工作业绩评定中, 等级不佳。按照公司《员工手册》的规定,将罗某的薪金下调了48%,并发出了书面通知。

    1999年10月初,罗某向公司口头 提出辞职,公司未予以答复。罗某未办任何手续便不再去公司上班,并向劳动争议仲裁委员会提出申诉,要求恢复原薪金待遇,并补足7月至9月间的薪金差额。在 劳动争议仲裁委员会庭审中,罗某认为,公司在没有调动其岗位,本人也无其他过失的情况下,无故降低其薪金报酬,违反了劳动合同中的有关约定。而公司方则认 为公司是根据《员工手册》有关薪金标准的规定,在对罗某的个人业绩作出考核后,在规定的范围内对其薪金作出了调整,是正常的企业行为。
     劳动争议仲裁委员会认为,公司每年根据公司经营业绩及员工的工作表现,调整罗某的薪金标准并无不当。不支持罗某的请 求。后罗某又向法院提起民事诉讼,以同样的事实与理由,提出了相同的诉讼请求,并要求经济补偿金和诉讼期间的生活费,法院仍未予支持。
     《员工手册》是企业劳动人事管理中的重要规章制度。劳动合同中不可能约定的事项,诸如员工的行为规范、考勤制度、企业奖惩制度都可以在《员工手册》中加以 规范。因此,《员工手册》应是劳动合同的重要组成部分,每位员工都应详细阅读并且遵守。另外,《员工手册》的可操作性也非常重要。本案中,公司方即是按 《员工手册》中的条款进行操作的。
    同时,劳动仲裁委有权对企业规章制度是否合理作出裁决。


  】【打印此文】【 关闭窗口



--
时间这种东西,你要是不消磨它,它就要消磨你
http://www.ist.cn/
http://www.joyspaces.com
http://www.thinkle.com

[翻译]Ajax教程

[翻译]Ajax教程

[ 2005-09-08 15:40:41 | 作者: Apol ]
字体大小: | |
最近在看有关ajax的东西,但现在网络上的中文教程资料很少,就翻译了一篇国外的教程。

原文地址:http://www.webreference.com/programming/javascript/jf/column12/index.html

正文:

过 去,我们如果想在网络程序中调用数据时,必须刷新页面或者跳转到其他页面。当然,其他方法也是可行的,但是支持的并不好,而且bug多多。最近,一项新的 技术为广大的开发者提供了更为自由的开发无缝应用程序的解决方案。这种方法大家叫做Ajax(Asynchronous Javascript and XML applications),正如名字一样,它通过javascript异步接收XML数据。在这篇文章里,我将阐述如何用Ajax连接远程XML文件更 新页面。后续的内容中,我们将讨论能让你网站提高的更多的Ajax方法。

第一步,创建一个包含数据的XML文件。命名为data.xml。(省去废话一大堆)
<?xml version="1.0" encoding="UTF-8"?>
<root>
 <data>
 This is some sample data. It is stored in an XML file and retrieved by JavaScript.
 </data>
</root>
现在,创建一个包含实例数据的简单web页,命名为ajax.html。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
 "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en" dir="ltr">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <title>Developing Web Applications with Ajax - Example</title>
 </head>
 <body>
 <h1>Developing Web Applications with Ajax</h1>
 <p>This page demonstrates the use of Asynchronous Javascript and XML (Ajax) technology to
 update a web page's content by reading from a remote file dynamically -- no page reloading
 is required. Note that this operation does not work for users without JavaScript enabled.</p>
 <p id="xmlObj">
 This is some sample data. It is the default data for this web page. <a href=" data.xml"
 title="View the XML data." onclick="ajaxRead('data.xml'); this.style.display='none'; return false">View XML data.</a>
 </p>
 </body>
</html>

注 意我们现在连接data.xml并没有使用javascript,要使用javascript,执行ajaxRead函数,连接是隐藏的,并且此连接并没 有重定向到data.xml文件。函数ajaxRead还没有定义,所以当你测试时,会得到一个JS错误。现在我们开始定义函数,添加下面的代码到你的 <head>标签内:
<script type="text/javascript"><!--
function ajaxRead(file){
 var xmlObj = null;
 if(window.XMLHttpRequest){
 xmlObj = new XMLHttpRequest();
 } else if(window.ActiveXObject ){
 xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
 } else {
 return;
 }
 xmlObj.onreadystatechange = function(){
 if(xmlObj.readyState == 4){
 updateObj('xmlObj', xmlObj.responseXML.getElementsByTagName ('data')[0].firstChild.data);
 }
 }
 xmlObj.open ('GET', file, true);
 xmlObj.send ('');
 }
 function updateObj(obj, data){
 document.getElementById(obj).firstChild.data = data;
 }
 //--></script>

解释下,函数ajaxRead将在点击View XML data连接的时候执行,在函数里,我们定义了一个xmlObj的变量,它就负责客户端和服务器端中转。我们定义一个if/else循环块:
if(window.XMLHttpRequest){
 xmlObj = new XMLHttpRequest();
} else if(window.ActiveXObject){
 xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
} else {
 return;
}

这 只是测试不同对象的可用性——不同的浏览器执行XMLHttpRequest对象的时候不同,所以我们定义"xmlObj"作为 XMLHttpRequest对象的时候,我们必须区别对待。如果没有XMLHttpRequest可用,函数以return结束来取消错误报告。大部分 时候,XMLHttpRequest都是可用的,不过排除一些太老的浏览器。

下面的部分:
xmlObj.onreadystatechange = function(){
 if(xmlObj.readyState == 4){
 updateObj('xmlObj', xmlObj.responseXML.getElementsByTagName('data')[0].firstChild.data);
 }
}
每当XMLHttpRequest状态改变时,onreadystatechange事件就触发,此事件共有5个状态,从0到4。
    [0]uninitialized未初始化(在XMLHttpRequest开始前)
    [1]loading(一旦初始化)
    [2]loaded(一旦XMLHttpRequest从服务器端获得响应)
    [3]interactive(当对象连接到服务器)
    [4]complete(完成)
状态5[编号是4]是用来确认数据是否可用的,正好用来给xmlObj.readyState用,如果"是",我们执行updateObj函数,此函数有2个参数:ID以及填充的数据,它的方法以后说明。

我们web页的"P"标签有一个属性"ID",值是xmlData,它就是我们要更新的段落。更新的内容来自XML文件,下面介绍它如何工作:

The xmlObj.responseXML property is a DOM object – it's a lot like the "document" object, except it's for the remote XML file. In other words, xmlObj.responseXML is the "document" object if you ran a script in data.xml. Since we know this, we can retrieve any XML node via the "getElementsByTagName" method. The data is contained in the XML node is accurately named "<data>" so our task is simple: retrieve the first (and only) data node. Thus, xmlObject.responseXML.getElementsByTagName("data")[0] returns the first <data> node in the XML file.

它返回XML节点,无数据的——数据必须通过访问此节点的属性,这是下一步的工作。

After that, it's as simple as retrieving the data by specifying "firstChild.data" (firstChild refers to the text node which is contained within the <data> node, and the "data" property is the actual text of that text node).

xmlObj.open ('GET', file, true);
xmlObj.send ('');

This is the last bit in our ajaxRead function. What does it say? Well, the "open" method of the xmlObj opens a connection to the server (via a specific protocol, specified here as "GET" – you can use "POST" and others as well), requests a file (in our case, the variable "file" that was sent as a parameter to the ajaxRead function – data.xml), and whether JavaScript should handle the request synchronously (false) or asynchronously (true, the default). Since this is asynchronous Javascript and XML, we will be using the default asynchronous method – using since synchronous won't work in this case.

The last line of our function simply sends an empty string literal back to the server. Without this line, the ready state of xmlObj will never get to 4, so your page will never update. The send method can be used for other things, but today we are only retrieving data from the server – not sending to it – so I won't go into any more detail about the send method in this article.

function updateObj(obj, data){
document.getElementById(obj).firstChild.data = data;
}

Now to explain the updateObj function a little more: this function updates any specific element on the current web page with a new value. Its first parameter, "obj," is simply a specific ID of an element on the current web page – this is the object that will be updated; its second parameter, "data," is a string that specifies the new value to be placed in the object that is to be updated ("obj"). Normally, it would be advisable to check and be sure that an element on the current page has the ID specified in "obj," but that check isn't necessary due to the level of isolation of our script. The way this function updates is similar to the way we retrieved data from the "data" node in the XML file earlier – it locates the element it wants to update (this time by that element's ID instead of its tag name and index on the page) and sets the data of the first child (the text node) of that element to the new data. If you wanted to update an object with HTML instead of just plain text, you could also use document.getElementById(obj).innerHTML = data.
That's all there is to it

概念简单,代码也不难。从此你可以无刷新的提交表单数据以及使用服务器端语言动态生成XML文件,更多内容查阅参考 ——啊,对了,Google也是你的好助手。在另外一篇文章里,我将介绍使用ajax的服务器端技术创建更强有力的应用程序。

关于作者:[感谢作者的努力,给我们带来这么好的教程]

Jonathan Fenocchi 网络开发者,最初从事web设计,前台脚本技术以及PHP开发(忽然感觉和我好象啊,哈哈[xiu])

这是他的网站:http://www.slightlyremarkable.com
[最后修改由 Apol, 于 2005-09-08 15:39:17]


--
时间这种东西,你要是不消磨它,它就要消磨你
http://www.ist.cn/
http://www.joyspaces.com
http://www.thinkle.com
Think what u should think
Learn what u might think
Love what u should love
And do what u should do


--
时间这种东西,你要是不消磨它,它就要消磨你
http://www.ist.cn/
http://www.joyspaces.com
http://www.thinkle.com

低谷

低谷
面对着不信任,感觉差极了,从未有过的不被信任
而且是毫无道理的猜疑,我开始思索,开始需求途径,来缓解,但我似乎没有想如何积极的去消除,也许对象不一样,一个一意孤行的人,不愿意听取任何解释的对象,也许这是明智的做法,其实我不也是如此嘛,尽管会有人说不要怎样,要怎样,但我还是会选择相信自己

最近一切都没有那么的如意,真不知道是恶性循环,还是短期的,真想抛开一切去去释放下自己,因为感觉这里让我压抑

真的要戒怒,戒嗔,戒燥,静下来,可以看清楚很多,原本很简

--
时间这种东西,你要是不消磨它,它就要消磨你
http://www.ist.cn/
http://www.joyspaces.com
http://www.thinkle.com

测试下email发blog

呵呵
这个不错哦
很好玩

--
时间这种东西,你要是不消磨它,它就要消磨你
http://www.ist.cn/
http://www.joyspaces.com
http://www.thinkle.com

2005-10-23

就让我消失在公司的洗手间

就让我消失在公司的洗手间

老板可以出尔反尔,作为员工的我却只能照单执行;客户可以无礼刁蛮,作为商家的我却只能微笑聆听;身心俱疲,却还要摆出笑脸,不让家人担心。
旧社会里是“被生活逼迫”,新时代中成了“因工作而压抑”,别以为我是在无病呻吟,否则为什么每天清早起来就打不起精神?忙碌了一天却觉得一事无成?临睡 前身体极度疲惫大脑皮层却异常兴奋导致失眠?只有在上洗手间的时候才会感到轻松一些,只有在公司的走道上我才能呼吸到新鲜空气,我想我已经“职场缺氧”。
我想找个地方躲起来,没有文档没有最终期限,没有客服部的投诉热线;我想找个地方躲起来;没有电话会议没有突然事件,没有那么多的出差……就让我消失在公司的洗手间。

2005-10-20

签名

有两种人不能超越别人,
一种只做别人交给你做的事的,
一种是做不好别人交给你做的事的。

http://www.ist.cn/
http://www.joyspaces.com
http://www.thinkle.com


2005-10-15

asp + Access 常见的数据库访问失败问题 Microsoft JET Database Engine 错误 '80004005' 解决办法

打开 FileMonitor 这个监控软件,因为默认情况下它跟踪的信息太多,造成查错如同大海捞针。
这里有个技巧就是先打开监视,然后选择你不需要监控的那些进程,或者一个目录。
点菜单里的: Edit -> Exclude Process 或 Edit -> Exclude Path 排除掉不需要监控的内容。
然后就会发现产生的信息大大减少了。
清空输出,重新开始监控,刷一下网页,再停止监控。很快看到一个信息:

115 15:59:40 DLLHOST.EXE:2804 CREATE C:\WINNT\TEMP\JET5EA6.tmp ACCESS DENIED CR\IUSR_CR

可见是因为 C:\winnt\temp 目录没有对 CR\IUSER_CR 账户开放权限,导致没法创建临时文件(奇怪的是 CR\USER_CR 这个账号访问 Access 的时候需要生成临时文件)。

找到这个目录,设置一下权限。然后刷新网页就会发现好了。
当然具体情况下目录名可能不一定就是这个,但是查错方法就是这样的了,一般都可以解决。

win 203 安装 sp1 后,iis 本地不能调试的解决

安装了sp1 后 ,原来正常的web程序都不能运行了
Microsof '80004005' t JET Database Engine 错误 未知错误

很是郁闷,后来下载了 filemon610ch, 进行监视查看,发现原来 是 iis 没有 c:\windows\temp\的写权限。呵呵,添加了帐号,自然一切都好了。

2005-10-12

iis 错误

..................................................................

Q:ASP 程序运行时提示:
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005' [Microsoft][ODBC Microsoft Access Driver]常见错误不能打开注册表关键字'Temporary (volatile) Jet DSN for process 0x1844 Thread 0x1b40 DBC 0x554cc 59c Jet'
A:这是因为你用的 access97 数据库,我们是用的 win2k+access2000 驱动,这个对 access97 的兼容性不太好,有时会出现不稳定的情况。
解决的方法也很简单,你用 access2000 把你的数据库打开,另存为一个文件,然后把这个文件上传到服务器上覆盖原来的数据库就可以了。

Q:错误信息:
Microsoft OLE DB Provider for ODBC Drivers error '80004005' [Microsoft][ODBC Microsoft Access 97 Driver] Couldn't use '(unknown)'; file already in use.
A: 多人使用时数据库被锁定。

Q:错误信息:
Microsoft OLE DB Provider for ODBC Drivers error '80004005' [Microsoft][ODBC Microsoft Access 97 Driver] Couldn't lock file.
A: 也许是没有正确的权限生成 Access 数据库的锁定文件 (.ldb) 默认时,该文件和你的数据库是同一个目录的。给匿名帐号全权访问数据库共享目录的权限。 有时是因为文件是因为共享时有意使用了只读的权限限制。试试使用下面的代码。 Set Conn = Server.CreateObject("ADODB.Connection")

Q: 错误提示:
Microsoft JET Database Engine 错误 '80040e09'
不能更新。数据库或对象为只读。
A: 未打开数据库目录的读写权限。 解决方法:
( 1 )检查是否在 IIS 中对整个网站打开了 “ 写入 ” 权限,而不仅仅是数据库文件。
( 2 )检查是否在 WIN2000 的资源管理器中,将网站所在目录对 EveryOne 用户打开所有权限。具体方法是:打开 “ 我的电脑 ”---- 找到网站所在文件夹 ---- 在其上点右键 ---- 选 “ 属性 ”----- 切换到 “ 安全性 ” 选项卡,在这里给 EveryOne 用户所有权限。
注意: 如果你的系统是 XP ,请先点 “ 工具 ”----“ 文件夹选项 ”----“ 查看 ”----- 去掉 “ 使用简单文件共享 ” 前的勾,确定后,文件夹 “ 属性 ” 对话框中才会有 “ 安全性 ” 这一个选项卡。

Q:错误提示: 未启用父路径
症状举例:
Server.MapPath() 错误 'ASP 0175 : 80004005'
不允许的 Path 字符
/0709/dqyllhsub/news/OpenDatabase.asp ,行 4
在 MapPath 的 Path 参数中不允许字符 '..' 。
A:许多 Web 页面里要用到诸如 ../ 格式的语句(即回到上一层的页面,也就是父路径),而 IIS6.0 出于安全考虑,这一选项默认是关闭的。
解决方法:
在 IIS 中属性 -> 主目录 -> 配置 -> 选项中。把 ” 启用父路径 “ 前面打上勾。确认刷新。

Q: HTTP 错误 401.1 - 未经授权:访问由于凭据无效被拒绝。
A: 由于用户匿名访问使用的账号是 IUSR_ 机器名,因此如果此账号被禁用,将造成用户无法访问。
解决办法:
控制面板 -> 管理工具 -> 计算机管理 -> 本地用户和组,将 IUSR_ 机器名账号启用。

Q: HTTP 错误 401.3 - 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。
A: Web 客户端的用户隶属于 user 组,因此,如果该文件的 NTFS 权限不足(例如没有读权限),则会导致页面无法访问。
解决办法:
进入该文件夹的安全选项卡,配置 user 的权限,至少要给读权限。关于 NTFS 权限设置这里不再馈述。

Q:错误提示: Active Server Pages 错误 'ASP 0126'
找不到包含文件 /index.asp ,行 11
找不到包含文件 'admin/upfile_class.asp' 。
A: 如果出现类似上面的错误提示,是因为被访问的文件中含有危机系统安全的代码而被杀毒软件删除或者隔离。
解决办法:修改的程序代码,重新上传到服务器上;
相关资料:最近发现不少上传组件被认为是病毒而杀掉,具体表现为客户论坛名为 upload.inc , upload_fun.asp 的文件被认为是病毒文件而杀掉,具体原因是因为国内很多论坛程序使用了名为“无惧上传类”的一段通过 ado.stream 组件上传的代码。这段代码被不少安全机构认为是对于 Web 服务器有恶意威胁,自从五月起将其归类为 backdoor.sinups 恶意程序而查杀。具体安全公告请参阅 http://www.sarc.com/avcenter/venc/data/backdoor.sinups.html

Q:HTTP 错误 401.2 - 未经授权:访问由于服务器配置被拒绝。
A:原因分析: IIS 支持以下几种 Web 身份验证方法:
1、匿名身份验证
IIS 创建 IUSR_ 计算机名称帐户(其中计算机名称是正在运行 IIS 的服务器的名称),用来在匿名用户请求 Web 内容时对他们进行身份验证。此帐户授予用户本地登录权限。你可以将匿名用户访问重置为使用任何有效的 Windows 帐户。
2、基本身份验证
使用基本身份验证可限制对 NTFS 格式 Web 服务器上的文件的访问。使用基本身份验证,用户必须输入凭据,而且访问是基于用户 ID 的。用户 ID 和密码都以明文形式在网络间进行发送。
3、Windows 集成身份验证
Windows 集成身份验证比基本身份验证安全,而且在用户具有 Windows 域帐户的内部网环境中能很好地发挥作用。在集成的 Windows 身份验证中,浏览器尝试使用当前用户在域登录过程中使用的凭据,如果尝试失败,就会提示该用户输入用户名和密码。如果你使用集成的 Windows 身份验证,则用户的密码将不传送到服务器。如果该用户作为域用户登录到本地计算机,则他在访问此域中的网络计算机时不必再次进行身份验证。
4、摘要身份验证
摘要身份验证克服了基本身份验证的许多缺点。在使用摘要身份验证时,密码不是以明文形式发送的。另外,你可以通过代理服务器使用摘要身份验证。摘要身份验证使用一种挑战 / 响应机制(集成 Windows 身份验证使用的机制),其中的密码是以加密形式发送的。
5、.NET Passport 身份验证
Microsoft .NET Passport 是一项用户身份验证服务,它允许单一签入安全性,可使用户在访问启用了 .NET Passport 的 Web 站点和服务时更加安全。启用了 .NET Passport 的站点会依靠 .NET Passport 中央服务器来对用户进行身份验证。但是,该中心服务器不会授权或拒绝特定用户访问各个启用了 .NET Passport 的站点。
解决方法:
根据需要配置不同的身份认证(一般为匿名身份认证,这是大多数站点使用的认证方法)。认证选项在 IIS 的属性 -> 安全性 -> 身份验证和访问控制下配置。

Q: HTTP 错误 403.6 - 禁止访问:客户端的 IP 地址被拒绝。
A: 原因分析:
IIS 提供了 IP 限制的机制,你可以通过配置来限制某些 IP 不能访问站点,或者限制仅仅只有某些 IP 可以访问站点,而如果客户端在被你阻止的 IP 范围内,或者不在你允许的范围内,则会出现错误提示。
解决方法:
进入 IIS 的属性 -> 安全性 ->IP 地址和域名限制。如果要限制某些 IP 地址的访问,需要选择授权访问,点添加选择不允许的 IP 地址。反之则可以只允许某些 IP 地址的访问。

Q: HTTP 错误 401.1 - 未经授权:访问由于凭据无效被拒绝 。
A:原因分析:
由于用户匿名访问使用的账号是 IUSR_ 机器名,因此如果此账号被禁用,将造成用户无法访问。
解决办法:
控制面板 -> 管理工具 -> 计算机管理 -> 本地用户和组,将 IUSR_ 机器名账号启用。

Q:HTTP 错误 401.3 - 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。
A:原因分析:
Web 客户端的用户隶属于 user 组,因此,如果该文件的 NTFS 权限不足(例如没有读权限),则会导致页面无法访问。
解决办法:
进入该文件夹的安全选项卡,配置 user 的权限,至少要给读权限。关于 NTFS 权限设置这里不再馈述。