狐言乱语

生命它是一个月台,你来的目的是为了离开........
Redfox @ 2011-06-30 15:11

Apache + Subversion 配置方法简要说明

1. 安装Apache

这个没什么好说的,直接到官网下载。安装完成后默认用的 80端口,如果不想用 80 端口可以改 httpd.conf

2. 安装 Subversion

下载 Subversion for windows。安装,没什么好说的。

3. 把 Subverion 整合到 Apache

把 Subversion\bin 下面 mod_authz.svn.so, mod_dav_svn.so, libdb44.dll 复制到 Apache目录下的 modules 里。

然后打开 httpd.conf

首先打开 下面两项,把前面的 # 去掉

LoadModule dav_module modules/mod_dav.so

LoadModule dav_fs_module modules/mod_dav_fs.so

再增加两行,把 Subversion 的插件加载进去

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

进入命令行,为你所有项目建立一个根,比如: D:\svnroot

然后再在 httpd.conf 的最后加上 svn 的配置

<Location /svn>

    DAV svn

    SVNParentPath d:\svnroot  

    SVNListParentPath on 

    AuthType Basic 

    AuthName "Subversion repository" 

AuthUserFile D:\svnroot\passwd  

#passwd问密码和用户文件,用来验证用户的用户名及密码

AuthzSVNAccessFile d:\svnroot\svnaccessfile    

#权限控制文件,限定各个用户或组在版本库中目录的访问权限

    Require valid-user 

</Location>

SVNParentPath 是指以多项目方式管理 后面的路径是项目的根目径

AuthType 认证方式

AuthUserFile 是用户名和密码的文件

AuthzWVNAccessFile 是用户权限文件

4. 创建代码仓库

进入命令行。在 svnroot 下创建项目代码仓库

Svnadmin create d:\svnroot\test1

Test1 为你的项目名

5. 用户与密码管理

在命令行用 apache\bin 下的  htpasswd 来创建用户认证文件

Htpasswd -c d:\svnroot\passwd admin

-c 为创建,如果 passwd 不会空时,会删除重新建立,这里要小心

Htpasswd d:\svnroot\passwd user1  为user1 指定密码

Passwd 的文件名和路径要求和 httpd.conf 里定义的一样

6. 权限管理

文件名和路径也要求和 httpd.conf 里定义的一样。

权限文件的定义如下:

[groups]

admin = admin

users = user1,user2,user3,user4

[test1:/]

* = 

@admin = rw

@users = rw

[test2:/]

* = 

@admin = rw

@users = rw

[test3:/]

* = 

@admin = rw

首先是把人分组,然后指定组的权限

结点名称的格式为:

[项目名:路径]

各个组的权限  r 可读 w 可写

[test1:/]          项目名 test1 根路径

@admin= rw         admin组 可读写

@users = r         users 组 只读

补记

SVNService + SVNServer 和 Apache +插件 的方式有什么不同

第一种的 url 是 svn://ip/项目名 这样

第二种可以完全走 http/https 协议,可以做到远端访问与浏览器查看。



 
Redfox @ 2011-04-22 10:48

  1. http://blog.csdn.net/ljz9425/archive/2010/11/29/6042599.aspx

  2. 实现安全接口  
  3.   
  4. 继承:IObjectSafety  
  5.   
  6. 重载方法:  
  7.   
  8.  function GetInterfaceSafetyOptions(const IID: TIID; pdwSupportedOptions,        //安全接口  
  9.       pdwEnabledOptions: PDWORD): HResult; stdcall;  
  10. function SetInterfaceSafetyOptions(const IID: TIID; dwOptionSetMask,  
  11.       dwEnabledOptions: DWORD): HResult; stdcall;  
  12.   
  13.    
  14.   
  15.   
  16. function TZhddMsg.GetInterfaceSafetyOptions(const IID: TIID;  
  17.   pdwSupportedOptions, pdwEnabledOptions: PDWORD): HResult;  
  18. var  
  19.   Unk: IUnknown;  
  20. begin  
  21.   if (pdwSupportedOptions = nilor (pdwEnabledOptions = nilthen  
  22.   begin  
  23.     Result := E_POINTER;  
  24.     Exit;  
  25.   end;  
  26.   Result := QueryInterface(IID, Unk);  
  27.   if Result = S_OK then  
  28.   begin  
  29.     pdwSupportedOptions^ := INTERFACESAFE_FOR_UNTRUSTED_CALLER or  
  30.                                              INTERFACESAFE_FOR_UNTRUSTED_DATA;  
  31.     pdwEnabledOptions^ :=  
  32.       INTERFACESAFE_FOR_UNTRUSTED_CALLER or INTERFACESAFE_FOR_UNTRUSTED_DATA;  
  33.   end  
  34.   else   
  35.   begin  
  36.     pdwSupportedOptions^ := 0;  
  37.     pdwEnabledOptions^ := 0;  
  38.   end;  
  39. end;  
  40.   
  41. function TZhddMsg.SetInterfaceSafetyOptions(const IID: TIID;  
  42.   dwOptionSetMask, dwEnabledOptions: DWORD): HResult;  
  43. var  
  44.   Unk: IUnknown;  
  45. begin  
  46.   Result := QueryInterface(IID, Unk);  
  47.   if Result <> S_OK then Exit;  
  48. end


 
Redfox @ 2011-04-10 14:48

一.方法
前言:
如果你的程序中使用了 COM对象或者 OCX控件,
发布程序的时候必须带上相关的 DLL文件或者 OCX文件,
同时还需要注册到系统中,
如果我想让我的程序 Copy Run, 不需要安装,(现在流行绿色软件嘛)
那么使用下面的方法可以调用未注册的 COM对象或者 OCX控件

我仅仅提供简单的方法,大家共同研究,经验共享

如果COM对象没有在注册表中注册,那么按照下面的方法创建它

function CreateComObjectFromDll(CLSID: TGUID; DllHandle: THandle): IUnknown;
var
  Factory: IClassFactory;
  DllGetClassObject: function(const CLSID, IID: TGUID; var Obj): HResult;
  stdcall;
begin
  DllGetClassObject := GetProcAddress(DllHandle, 'DllGetClassObject');
  if Assigned(DllGetClassObject) then
  begin
    DllGetClassObject(CLSID, IClassFactory, Factory);
    Factory.CreateInstance(nil, IUnknown, Result);
  end;
end;

 

二.例子
 
下面是用上面的函数从ocx 文件中创建对象的例子
此处创建了一个 MSCOMM32 的串口控件,
调用了此控件的 AboutBox 的对话框,

不管此ocx 文件是否已经注册到系统中,下面的程序都会正常执行

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj, ActiveX;

type
  TForm1 class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    Private declarations }
  public
    ocxhdl: THandle;
    comm: Variant;
  end;

const
  CLASS_MSComm: TGUID '{648A5600-2C6E-101B-82B6-000000000014}';


var
  Form1: TForm1;

function CreateComObjectFromDll(CLSID: TGUID; DllHandle: THandle): IUnknown;

implementation

{$R *.dfm}

function CreateComObjectFromDll(CLSID: TGUID; DllHandle: THandle): IUnknown;
var
 Factory: IClassFactory;
 DllGetClassObject: function(const CLSID, IID: TGUID; var Obj): HResult;
 stdcall;
begin
 DllGetClassObject := GetProcAddress(DllHandle, 'DllGetClassObject');
 if Assigned(DllGetClassObject) then
 begin
   DllGetClassObject(CLSID, IClassFactory, Factory);
   Factory.CreateInstance(nil, IUnknown, Result);
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ocxhdl := LoadLibrary('mscomm32.ocx');
  if ocxhdl 32 then
    ShowMessage('error');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  comm := CreateComObjectFromDll(CLASS_MSComm, ocxhdl) as IDispatch;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  comm.AboutBox;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  comm := Null;
end;

end.


 
Redfox @ 2011-01-04 11:34

Delphi7 改入 ocx 以后,对其改变大小以后,ocx 不会刷新的BUG。如 Flash....

type     
   TLocOleCtrl = class(TOleControl);

procedure TForm1.FormResize(Sender: TObject);
begin    
   TLocOleCtrl(Flash).OnPosRectChange(Rect(0,0,ClientWidth, ClientHeight));
end;


 
Redfox @ 2011-01-01 00:10

这是一个给力的一年,这是一个杯具的一年,这也是一个纠结的一年。

这一年,中国依然举办了一年一度的春节联欢晚会,只是赵本山的小品越来越像冯小刚的电影,刘谦的魔术越来越像话剧,小虎队的貌合神离也只能让人感叹时光飞逝。

这一年,加拿大举办了冬奥会,这届冬奥会的话题不是点火失败,而是周洋没有“先感谢国家”。

这一年,阿sa从未婚到离婚再到热恋,让人感慨Twins不仅长得像,连做人也是一样的套路。

这一年,中国的考古学家们在曹操墓里发现了两块头盖骨,一块曹操的,一块曹操小时侯的。

这一年,江西的一个钉子户用最无奈的方式结束了自己的生命,他的死证明不了有关部门的野蛮与无耻,只能证明汽油一点就着。

这一年,8名香港游客死在了菲律宾警察的枪口下,让香港人知道菲律宾除了有“菲佣”,还有“菲警”。

这一年,一个叫《非诚勿扰》的相亲节目将挂羊头卖狗肉诠释的淋漓尽致,坐在宝马车里哭什么的都是浮云。

这一年,局长们纷纷养成了爱写“日记”的好习惯,只是关键时刻步了陈摄影艺术家的后尘。

这一年,富士康的员工在工作的闲暇之余玩儿起了连环接力“跳”。

这一年,上海世博会的圆满落幕成功改写了上海解放日。

这一年,期待已久的世界杯如约而至,只是比赛的胜负好像都是“保罗”说了算。

这一年,郭德纲从一个非著名相声演员变成了一个非常著名的相声演员,又说相声又做主持,偶尔还打打人,足以说明不打人的相声演员不是好主持。

这一年,海地地震震死了8个中国人,而玉树的地震却震死了许多中国人,更可恨的是新西兰的地震居然没死人。

这一年,智利不但发生了地震还发生了矿难,33名矿工在井下呆了两三个月都没死,不但证明了大地可以“孕育”人类,更像是在提醒某些国家,矿难不一定要死人。

这一年,上海的大楼火灾让电焊工搬运工们开始考虑是否需要办个证……

这一年,一部《盗梦空间》的电影让我在写这篇文章的时候还在怀疑是不是在做梦。

这一年,嫦娥二着奔月去了,到现在还没回,国人疾呼:这眼看着就要奔三了,怎么还没二够呢?

这一年,一个卖汽车的和一个卖运动鞋的在关于谁“给力”和谁“不给力”的问题上发生了分歧从而引发了“3Q大战”,最后“狗日的腾讯”做出了“一个艰难的决定”,末了才知道这俩孙子何止是“坑爹”,简直就是“坑爹”。

这一年,中国举行了两次全国哀悼日,广大同胞们在哀悼的同时也深刻的体会到只要一举行哀悼日,网游……

这一年,喜欢看《知音》和《故事会》的凤姐横空出世并出名,为了能够让做奥巴马情人的梦想成真,她还去了美国,但由于英语的地方口音太重被拒之门外了。

这一年,奥利奥、香蕉、皮蛋瘦肉粥、梅干菜盖浇饭等食品被一个娇嗔似黛玉体态似玉环的“小月月”糟践的身首异处、体无完肤。

这一年,一个我童年非常喜欢玩的游戏“躲猫猫”开始变得越来越危险。

这一年,广州不但举办了亚运会还举办了亚残运会,从点火仪式上看就知道……

这一年,中国的高房价让很多人从还没来得及考虑是否“蜗居”到不得不“蚁族”的现实中意识到你能建我也能建。

这一年,超女王贝整容失败了,不但脸没了,连命也没了,东北人常说的——我整死你,是不是这个意思。

这一年,黄晓明告诉了我们,穿鞋内增高什么的早就OUT了,把增高鞋垫放在袜子里才叫有才华。

这一年,让我认识到没有iphone4,都不好意思用手机织围脖。

这一年,大S的闪婚证明了一见钟情神马的都是浮云。

这一年,国产奶粉开始有了丰胸的功能。

这一年,李刚没有出名,李刚的儿子也没有出名,但是李刚的儿子的爸爸出名了。

这一年,伟哥不但可以随便叫了还可以随便生产了

这一年,一向淡定的王菲带着对哪吒的思念亮相春晚,最近还穿了一个连过了英语四级的人都不认识的马甲在微博上臭贫,让人认识到闷骚这个词不但适合男人,还适合女人。

这一年,朝鲜的小金接了老金的班,但很快就跟隔壁的老李干起来了,原因竟然是小金在微博上关注老李却被老李拒绝了。

这一年,最后几天,在钱运会村长的头颅配合下,无情的车轮在历史前进的道路上又留下了深深的印迹。

作为21世纪社会主义事业的接班人,强烈的社会责任感无数次的敲打着我的心灵,没能让广大的人民群众过上好日子,我倍感惭愧,每念及于此,都潸然泪下,不能自己。

2010年马上就要过完了,对2010年的不舍就像早晨幼儿园里的小男孩拉着要上班赶时间妈妈的衣角那样依依不舍。

再见2010!

你好2011!


 
Redfox @ 2010-12-31 23:36

今年我的目标一个都没达到


 
Redfox @ 2010-12-03 09:12

 苏小和
养老体系背后的反市场逻辑说中国养老体系是一个有预谋的骗局,这大概过于尖刻了。毕竟这个国家还有一批人真正在享受着养老体系的种种恩惠,尤其是那些有着行政级别的老人,那些在事业单位退休的所谓公务员或者是知识分子,那些一直靠垄断发财的国有企业里的退休职工。我们甚至可以说,如果离开了养老体系,这些体制内的人们将无法生存。更有一个不能考证的传言,说的是中国养老体系吸储的大部分资金,可能都用在了处级以上退休干部身上,相信这样的话并非空穴来风。

问题的本质在于,养老体制的本意,毫无疑问是指向每一个人的。所以这些年我们看到,即使是小的不能再小的私人公司录用员工,也必须签订与养老体系有关的劳动合同,即使是深处边鄙的乡村,养老的标语也挂在了田间地头。一时之间,这个国家的养老体系看上去气象万千,惠及众生,我们似乎真的进入幸福的小康社会了。

但是很遗憾,如果你不属于体制内的一份子,也就是说,如果你不是一名拥有行政级别的老人,如果你不是在行政事业单位退休的公务员或者知识分子,如果你不是垄断国有企业的退休职工,你还过于认真地相信此时此刻的养老体制,那么你就过于天真了。有人开玩笑说,这个看上去很美的养老体系,事实上很像那个著名的22条军规,无论你怎么做,最后你都是失败者;还有人说,其实更像一个荒诞剧,因为你不在场,所以你一切的努力,最后都不过是一场梦,那不是真的。

是的,这才是问题的本质所在,你不在场,因为你不在体制之内,所以你与这个国家的养老体系没关系。如果你不认清这样的事实,那么你会把本来就不多的收入浪费掉一部分;如果你认清了这样的局面,那么你会难过,甚至会绝望,你对你的未来突然害怕,你会前所未有的失去信心。

每一个与体制无关的、正在劳作的人们,都应该仔细想想下面的问题:

他们的养老体系规定,必须连续交纳15年的养老金,才能有效,请问,今天有谁能在一个地方连续工作15年?都说养老金其实是可以异地转移的,请问,有多少人为了那么一点养老金,会去办理那么复杂的转移手续,去看那些公务员不耐烦的脸,去听他们毫无礼节的呵斥,去从深圳跑到北京,或者从上海跑到广州,必须由本人亲自来办理?事实上,一张往返的机票钱,可能就已经冲抵掉那点养老金了,谁会做这种不计成本,而且前途还渺茫的事情?

很有意思的是,太多的人最后选择了放弃,好像把一颗石头扔进了大海里,再也不去管它。假如一个人是1000元,5000万人在路上奔波,那就是50000000000元,一连串的0,这还仅仅是一年的资金,大家都不要了,钱还在,谁拿走了?当然是政府。这是一个很有意思的现象,这些年,一方面我们越来越担心老无所依,另外一方面国家的养老金储备却迅速高涨,以至于他们看着白花花的银子不知所措,最后决定去投资,即使亏损了也在所不辞。

每个人都在按照自己的个人利益和成本收益在生活,相信更多的人看到了养老体制内在的荒诞,所以更多的人选择放弃,不参与。还是刚才陈述的数字,即使只有5000万人选择放弃,对于这个国家的养老体制而言,一年就是500亿的资金亏空。这种用脚来投票的经济行为方式,不仅再一次强化了体制内和体制外的人际分野,更重要的是让国家的养老体系吸储能力出现危机。这甚至有点像一出与体制有关的出埃及记,更多的人选择出走。政府开始以为这没什么,说不定这是对体制的减负,但时间一长,发现事情并没有那么简单,当大量的人们选择逃离体制,至少在养老资金这一块,出现了财源乏力的情形。

对于一个13亿人口的大国而言,任何制度到最后都必须遵守大数法则。具体到养老体系这一块,如果仅仅只有体制内的人独善其身,更加庞大的体制外人群无法参与,或者不愿意参与,大数法则就立即被破坏了。这带来了一系列令政府官员头疼的问题,而最关键的问题是,养老金支付压力陡增。在一种非常难堪的经济形势下,在就业形势持续走低的背景下,政府只好出奇招:将普通职工退休年龄延长至65岁。将压力重重的养老金支付尽量往后拖延。

为什么会出现这种让人纠结的局面?不仅大量的体制外人群心生荒凉,前途不明,整个国家的养老体系也顾此失彼。最根本的原因,其实在于我们的市场化严重不到位,这种半拉子的市场经济,让我们的经济生活捉襟见肘。也就是说,我们试图用一种市场化的方式来建构这个国家的养老体系,但却用一种反市场化的方式,把大量的人群排斥在所谓的体制之外。

有几个关键词需要在这里重申:

第一是每个人的权利,或者说是每个人自由参与到市场进程中的权利。一个明显的经济现象是,当今许多发展中国家,尤其是所谓的社会主义国家,一直无法把国内的资本真正“市场化”和“全球化”,本质原因是这些国家的有权阶层和既得利益阶层把市场经济看成了一间“私人俱乐部”。他们人为建立一个类似于“钟罩”的制度,体制内的人群活在钟罩之内,靠着既得利益安静度日,歌舞升平,体制外的人活在钟罩之外,政府不仅不关心他们的生老病死,还断然拒绝他们参与到真正的市场经济中。有意思的是,当这样的政府需要提高财政能力,他们想到了人口红利,想到了那些像蚂蚁一样无人照顾的人群,事实上也是有纳税能力的;但当这个政府需要建立诸如养老体系这样的福利制度的时候,却将这些人群排斥在外,想尽办法推卸掉作为一个政府的责任,像一个无赖一样,能拖就拖,最好彻底忘记。

第二,歧视性制度。是的,就是歧视,这个尖锐又刺眼的词语,一直摆放在中国的经济格局当中。体制内的人群对体制外人群的歧视,城里人对农民的歧视,既得利益阶层对弱势群体的歧视,官僚对百姓的歧视。都说中国最大的歧视,是对农民的歧视,这样的观点没错,但不全面。至少在养老体系问题上,无数的体制外白领、记者、编辑、律师、工程师、作家、诗人,他们的养老境遇,并不比农民好多少,甚至可能被农民更糟糕,只是在此时此刻,这些人眼前的收入比农民高了一些而已。所以,这是一种真正的歧视,一种对真正的市场化人力资源的歧视,或者干脆说,是对市场经济的歧视。

如此格局之下,我们看到了中国超大规模的对人力资本的浪费。人,每个人,才是市场经济得以发展的惟一动力,养老体系的终极意义在于对生命的尊重与安慰,但在我们这个国家,它的前端,却是对人的一种限制、一种排斥、一种剥夺。市场经济有着一种内在的美妙的均衡性,失去了原因,就没有目的,忽略或者异化了目的,原因也会荡然无存。每个人的发展,才是我们发展的方向,也是我们发展的动力。剥夺了个人发展的机会与权利,这个国家孜孜以求的富裕、崛起,都将是无源之水,无本之木。市场化或者反市场,就是在这样的地带次第上演。而眼下,我们看到的养老体系困局,不过是这个国家的一部分既得利益阶层反市场逻辑的一次小小的表征。
(摘自苏小和财新博客)


 
Redfox @ 2010-10-21 22:17



 
日历
网志分类
『所有网志』 (495)
心情故事 (165)
我的作品 (1)
C++/STL/Boost (2)
网文经典 (119)
国家大事 (32)
诗词曲赋 (15)
lrc歌词 (10)
电脑技术 (4)
Win32i编程 (35)
.Net 技術 (2)
Java学习笔记 (30)
Internet/TCP/UDP (17)
OOP与设计模式 (1)
美图欣赏 (5)
Web与XML (22)
蓝牙技术 (8)
Win32ASM (2)
Flash & SilverLight (1)
最新留言
站内搜索
友情链接
[我的歪酷]
分享 Java
J2ME电子书
站在大世界
阳光人才网 - 我的人才库
yczealot的所行所思所感
FreeBSD 中文手册
moonight
皮皮鲁鲁西西
PiggyXP【小猪】的专栏
淡月儿(CSDN水园第一才女)
roboMM的网上家园 (J2ME笔记)
你刻骨铭心,我云淡风清
Web2.0 資料
我的ys168空间
gcp 的空间
老头子土地
苏吴子弟
中国艺术
何新论坛
全国 IT 公司速查手册
seule的家庭主妇笔记
我的 efile 空间
DAVY's pad—住家男人备妄录
董事长日志
一百万个工具下载
食色性也(一个女生的 Blog)
往事并不如烟
gssoft (X的家)
润物有声
轻风细雨
~仙乐处处闻~
接触中国
品味辣鸡块
母猪女郎
北京女病人
Java研究组织
我和西藏有个约会
DEV365
麦田跑望者
茅十七的家(笑死神仙不偿命)
大寶 SODME (網絡)
sherrylso (C++,net)
雲風的Blog (網游)
订阅 RSS
0215496
歪酷博客