做回自己

记录我的所想,所思,所悟,所做,和所感
posts - 5, comments - 34, trackbacks - 1, articles - 1
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

2011年12月1日

由于工作需要根据HTML代码生成静态图片,感谢随  飞 Kai.Ma 提供的代码,我在此基础上修改了全屏抓取的BUG和简单实现了根据HTML代码生成快照;

 

// 根据网址生成快照
SDWebCache wc = new SDWebCache(uri);
Bitmap image = wc.Snap();

// 根据HTML生成快照
SDWebCache wc = new SDWebCache(html);
Bitmap image = wc.Snap();

 

 附源代码

posted @ 2011-12-01 14:56 做回自己 阅读(227) 评论(3) 编辑

2011年11月25日

posted @ 2011-11-25 08:35 做回自己 阅读(7) 评论(0) 编辑

2011年11月10日

nginx的日志文件对于想要做ip/pv统计的朋友来说,是非常重要的。以前从来没有在windows下使用过nginx,最近这两天因为业务的需要,在windows环境下使用了nginx做服务器集群,在使用过程中,发现在nginx for windows依旧不支持根据时间分割日志,在linux环境下,一般都过shell脚本来实现这个功能。在网上找一了一下windows下分割nginx日志的方案,居然没有找到合适的,于是自己写了一个简单的批处理以实现这个小功能,现在把代码放到下面,以方便以后朋友们使用。
默认日志源文件路径为d:\data1\logs\www.log
目的路径为:D:\data1\logs2\
新建一个bat文件,内容如下: 
taskkill /F /IM nginx.exe

 

set "cmdstr=move D:\data1\logs\www.log D:\data1\logs2\access_ydgdw_211.138.195.36_log.%date:~0,4%-%date:~5,2%-%date:~8,2%.log
call %cmdstr%"

start nginx
保存后把这个批处理文件放到nginx根目录下,在windows下添加一个任务计划,每天执行一次即可.该批处理一共做了三件事,先杀掉系统中正在运行的nginx进程,然后备份并根据时间重命名日志文件,最后再启动nginx服务。
经过测试,在windows下面必须在nginx服务停止的情况下才能备份日志,这个有点小小的遗憾,不过一般情况下这个备份过程会在1到2秒内完成,把这个批处理放到每天凌晨两点左右执行,基本不影响nginx提供服务。

posted @ 2011-11-10 14:48 做回自己 阅读(9) 评论(0) 编辑

SQL SERVER 2005 调用CLR时需要注意的几个问题:

1.目标数据库实例需要启用clr集成.
如果没启用,可以在 sql server 外围应用配置器 里去启用或者使用以下语句:
sp_configure 'clr enabled'1
go
reconfigure
go

 

2.目标数据库的可信任属性需要设为false,可以使用以下语句启用:

alter database [dbname] set trustworthy on
否则在调用对应的方式时会报错:
system.security.securityexception: request for the permission of type 'system.security.permissions.environmentpermission, 
mscorlib, version=2.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089' failed.

 

3.确保部署程序集时所使用的账号是目标数据库的所有者,如不是可以使用以下语句:
exec sp_changedbowner 'login_name'
否则部署时会报错:
针对程序集 'xxx' 的 create assembly 失败,因为程序集 'xxx' 未获授权(permission_set = unsafe)。 当符合以下两个条件之一时,将
对程序集授权: 数据库所有者(dbo)具有 unsafe assembly 权限,而且数据库的 trustworthy 属性处于打开状态;或者,程序集签名时所使
用的证书或非对称密钥所对应的登录名具有 unsafe assembly 权限。

当然部署账号需要有创建程序集的权限. 

 

4.程序集的权限级别必须设为 external access,否则在部署的时候会报错:
system.security.securityexception: request for the permission of type 'system.security.permissions.environmentpermission, mscorlib, version=2.0.0.0,culture=neutral, publickeytoken=b77a5c561934e089' failed.

 

5.在项目里增加名为predeployscript.sql和postdeployscript.sql的文件,predeployscript.sql文件里包含以下语句:
if exists (select [name] from sys.assemblies where [name] = n'xxx.xmlserializers'drop assembly [xxx.xmlserializers]

postdeployscript.sql文件包含以下语句:

create assembly [xxx.xmlserializers] from 'e:\xxx.xmlserializers.dll' with permission_set = safe
项目编译成功后,在预生成命令行中加入以下语句:
"d:\program files\microsoft visual studio 8\sdk\v2.0\bin\sgen.exe" /force "$(targetpath)"然后重新编译发布,否则在调用对应的方式时会报错:system.invalidoperationexception: cannot load dynamically generated serialization assembly. in some hosting environments assembly load functionality is restricted, consider using pre-generated serializer. please see inner exception for more information. ---> system.io.fileloadexception: loadfrom()、loadfile()、load(byte[]) 和 loadmodule() 已被主机禁用。 

 

如果还不行就按如下步骤解决:
第一步:
在项目属性中选择“生成事件”选项。然后在“生成后事件命令行”中添加 "D:\Program Files\Microsoft Visual Studio 9.0\SDK\v3.5\Bin\sgen.exe" /force "$(TargetPath)" 命令。调用“sgen.exe”生成序列化程序集,“sgen.exe”文件的位置根据安装的Visual Studio决定。"$(TargetPath)"变量为项目编译后的DLL文件所在路径。在“数据库”选项中的权限级别设置为“不安全”,为了能够访问网络资源。

 

第二步:
在项目文件夹中创建Predeployscript.sql 和 Postdeployscript.sql两个文件。然后在项目菜单中添加现有项,把这两个脚本文件添加到项
目中。
第三步:
将下面的 TRANSACT-SQL 语句添加到 Predeployscript.sql 文件:
IF EXISTS(SELECT [NAME] FROM SYS.ASSEMBLIES WHERE [NAME] = N'GEPSCallWebServiceTrigger.XmlSerializers')
DROP ASSEMBLY [GEPSCallWebServiceTrigger.XmlSerializers]
第四步:
将下面的TRANSACT-SQL 语句添加到Postdeployscript.sql文件:
CREATE ASSEMBLY [GEPSCallWebServiceTrigger.XmlSerializers] 
AUTHORIZATION [dbo]
FROM 'D:\Tmp\CRLTriger\GEPSCallWebServiceTrigger\GEPSCallWebServiceTrigger\bin\Debug\GEPSCallWebServiceTrigger.XmlSerializers.dll'
WITH PERMISSION_SET = UNSAFE 
第五步:
有的时候做完以上几步还是不成功的,因为你的sql没有开启CLR集程,我们要运行以下T-sql代码才可以
use [数据库名]
exec sp_configure 'clr enabled'
exec sp_configure 'clr enabled',1 --开启SQLServer的CLR集程。
reconfigure with override
EXEC   sp_changedbowner '[用户名]' --确保部署程序集时所使用的账号是目标数据库的所有者
Alter Database [数据库名] SET TRUSTWORTHY ON --目标数据库的可信任属性需要设为FALSE 

 

 

posted @ 2011-11-10 14:32 做回自己 阅读(85) 评论(0) 编辑

2005年9月30日

 修饰符用于限定类型以及类型成员的申明,c#中有13种修饰符,按功能可分为三部分:存取修饰符,类修饰符和成员修饰符.

存取修饰符:

public:存取不受限制.

private:只有包含该成员的类可以存取.

internal:只有当前工程可以存取.

protected:只有包含该成员的类以及继承的类可以存取.

 

类修饰符:

abstract:可以被指示一个类只能作为其它类的基类.

sealed:指示一个类不能被继承.

 

成员修饰符:

abstract:指示该方法或属性没有实现.

const:指定域或局部变量的值不能被改动.

event:声明一个事件.

extern:指示方法在外部实现.

override:对由基类继承成员的新实现.

readonly:指示一个域只能在声明时以及相同类的内部被赋值.

static:指示一个成员属于类型本身,而不是属于特定的对象.

virtual:指示一个方法或存取器的实现可以在继承类中被覆盖

new 结由基类继承的重载

posted @ 2005-09-30 08:22 做回自己 阅读(392) 评论(0) 编辑