杨的空间
业精于勤,荒于嬉,行成于思,毁于随

2008年10月15日

    人们都希望自己能有张漂亮的脸蛋,高挺的鼻梁、水汪汪的大眼,或者是线条优美的瓜子脸或鹅蛋脸。如果脸蛋不漂亮,能不能有个接近标准的身材,男的倒三角,女的S形?他们说,姣好的面庞、玲珑的身材,行情更走俏。当然,这只是讨论外在美。
    有需求就有应运而生的满足需求的地方。

    2001年,美国进行了1320万例整形手术。2006年,美国共实施了1600万例的整形手术。自1997年以来,整形手术的数量增加了一倍以上。

    英国BBC著名记者兼电视制片人杰西卡·威廉姆斯在其著作《大事件———决定人类未来的50件事》中,就把整形手术列为决定人类未来的50件事中的第12件事。书中说,“数百万其他方面都很健康的人正选择打开并损伤他们自己的身体”,而且“随着物价下跌,人们逐渐消除了对整形手术的羞耻感,成群结队去找‘艺术外科医师’以寻求完美,或者至少是有所改善”。

    国内的情形是,整形医院如雨后春笋般地在“第一人造美女”郝璐璐之后冒起,老百姓们这才知道,漂亮也可以从刀刀枪枪、血肉模糊中来。

    在整形火热的同时,大家关心的是怎样做才让整形更安全,毕竟真刀(手术刀)真枪(激光枪)的整形,稍不慎就成“千古恨”。

    是看广告吗?目前形形色色的整形广告占据着各电视、报纸和广播媒体,甚至有铺天盖地之势。整形界专家高建华就曾对记者称,广告是很多民营医院的生存之道,民营整形医院大打广告无可厚非,只要不是太离谱,还是不反对的。

    什么才是不离谱的整形广告?整形广告又有多大可信度?只要听到“隆胸只需要30分钟”、“安全无痛苦、不出血、无疤痕”等不实广告词,很多爱美人士就头脑发热,找不着北,被广告牵着鼻子走。专家称,目前整形美容广告还没有自己的发布标准,一些不规范的机构就频打擦边球。

    就像近来被曝光较多的“温馨”广告,它们大设温柔陷阱,不夸张承诺,而是与你博感情,再告诉你,这都与整形有关。譬如,日前有广州本地新闻称,某整形医院做广告,竟将曾因自杀而闹得沸沸扬扬的女模特照片做广告,因此被告上法庭。同样不道德的事情早就发生了一次,一位25岁的女性求美者,其照片被该整形医院拿来发挥想象,不但给她扣上40岁的帽子,还杜撰出姐弟恋的不伦故事。医院代表对两次事件的态度都是认为自己无错。

    每个人都为两名受害女性感到不值,隐私、名誉权都在毫不知晓下被人贩卖了,她们通过法律途径寻求公道天经地义。而对我们大部分爱美人士来说,这又成了一个鲜活的例子———要整形,首选有声誉的医院和医生。(梁瑜)

 

posted @ 2008-10-15 11:01 杨 阅读(486) | 评论 (0)编辑 收藏

2008年1月16日

连接字符串:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\MyExcel.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""


Microsoft Jet 提供程序用于连接到 Excel 工作簿。在以下连接字符串中,Extended Properties 关键字设置 Excel 特定的属性。
HDR=Yes;指示第一行中包含列名,而不是数据,
IMEX=1;通知驱动程序始终将“互混”数据列作为文本读取。

posted @ 2008-01-16 14:43 杨 阅读(554) | 评论 (0)编辑 收藏
 
本文演示如何用 ADO.NET 中 OleDbConnection 对象的 GetOleDbSchemaTable 方法检索数据库架构信息。数据源中的架构信息包括数据库或可通过数据库中的数据源、表和视图得到的目录以及所存在的约束等。表中的架构信息包括主键、列和自动编号字段。

注意,在使用 SqlClient.SqlConnection 对象时没有与 GetOleDbSchemaTable 等价的方法。SQL Server .NET 数据提供程序通过存储过程和信息性视图展示后端架构信息。有关可通过 Microsoft SQL Server 得到的视图和存储过程的更多信息,请参见 MSDN 库中的 Transact-SQL 参考。

OleDbConnection 对象的 GetOleDbSchemaTable 方法

OLE DB .NET 数据提供程序使用 OleDbConnection 对象的 GetOleDbSchemaTable 方法展示架构信息。GetOleDbSchemaTable 返回填充了架构信息的 DataTable

GetOleDbSchemaTable 的第一个参数是架构参数,它是一个 OleDbSchemaGuid 类型的标识,指定了要返回的架构信息的类型(如表、列和主键)。第二个参数是一个限制对象数组,对 DataTable 架构中返回的行进行过滤(例如,您可以指定对表的名称、类型、所有者和/或架构的限制)。

OleDbSchemaGuid 成员

OleDbSchemaGuid 参数指定 GetOleDbSchemaTable 方法要返回的架构表的类型。 OleDbSchemaGuid 成员主要包括:
外键
索引
主键
视图
有关 OleDbSchemaGuid 成员的完整列表,请参见参考部分的"OleDbSchemaGuid Members"Web 站点。

限制

限制是一个过滤值对象数组,每个元素对应于结果 DataTable 中的一个 DataColumnOleDbSchemaGuid 参数决定了相应的限制。例如,在指定表的 OleDbSchemaGuid 时,限制数组如下所示:
{TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE}
若要查看可用的限制,请单击以下 Microsoft Web 站点中的任一 OleDbSchemaGuid 成员:
OleDbSchemaGuid 成员
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataoledboledbschemaguidmemberstopic.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataoledboledbschemaguidmemberstopic.asp)
在传递限制数组的值时,对于不包含值的数组元素使用 Visual C# .NET 的 null 关键字。例如,如果要检索表的架构,使用 OleDbSchemaGuid.Tables。但是,如果指定了表,也将返回别名、同义词、视图和其他相关对象。因此,如果您希望过滤掉除表以外的所有其他对象,请对 TABLE_TYPE 使用 TABLE 限制。可以对 TABLE_CATALOG、TABLE_SCHEMA 和 TABLE_NAME 使用 null,因为您不过滤这些对象:
schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
new Object[] {null, null, null, "TABLE"});

返回的数据表

每个符合 OleDbSchemaGuid 类型和限制规则的对象都对应于 GetOleDbSchemaTable 方法返回的 DataTable 中的一行。每个限制列对应于 DataTable 的一列,后面是基于 OleDbSchemaGuid 字段的其他架构信息。

例如,当您使用以下代码时,返回的 DataTable 的每一行是一个数据库表:
schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
new Object[] {null, null, null, "TABLE"});
DataTable 中返回的每一列是限制列(TABLE_CATALOG、TABLE_SCHEMA、TABLE_NAME、TABLE_TYPE),后面是 TABLE_GUID、DESCRIPTION、TABLE_PROPID、DATE_CREATED 和 DATE_MODIFIED 的其他架构列。

若要获得列名称的列表(即字段描述符,如 TABLE_CATALOG、TABLE_SCHEMA 和 TABLE_NAME),您可以使用列的位置顺序。注意 Columns 数组的元素下标是从 0 开始的:
for (int i = 0; i < schemaTable.Columns.Count; i++) {
Console.WriteLine(schemaTable.Columns[i].ToString());
}
若要获得每一列的值(即实际的表名称,如 Categories、Customers 和 Employees),您可以使用该行的 ItemArray 的位置顺序。注意 ItemArray 数组的元素下标是从 0 开始的:
for (int i = 0; i < schemaTable.Rows.Count; i++) {
Console.WriteLine(schemaTable.Rows[i].ItemArray[2].ToString());
}

回到顶端

创建列出数据库中的表的示例

以下示例列出 SQL Server Northwind 数据库中的表。

OleDbSchemaGuid.Tables 将返回那些可由特定登录访问的表(包括视图)。如果指定对象数组 {null, null, null, "TABLE"},那么您的过滤结果只包括 TABLE 的 TABLE_TYPE。然后在返回的架构表中的每一行列出表名称 (TABLE_NAME)。
1. 启动 Visual Studio .NET。
2. 新建一个 Visual C# 控制台应用程序项目。默认情况下,Class1.cs 将添加到项目中。
3. 打开 Class1 的代码窗口。将下面的代码粘贴到代码窗口的顶部,位于 namespace 声明之上:
using System.Data;
            using System.Data.OleDb;
4. 在代码窗口中,将下面的代码粘贴到 Main 函数中:
OleDbConnection cn = new OleDbConnection();
            DataTable schemaTable;
            //Connect to the Northwind database in SQL Server.
            //Be sure to use an account that has permission to list tables.
            cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=sa;
            Password=password;Initial Catalog=Northwind";
            cn.Open();
            //Retrieve schema information about tables.
            //Because tables include tables, views, and other objects,
            //restrict to just TABLE in the Object array of restrictions.
            schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
            new Object[] {null, null, null, "TABLE"});
            //List the table name from each row in the schema table.
            for (int i = 0; i < schemaTable.Rows.Count; i++) {
            Console.WriteLine(schemaTable.Rows[i].ItemArray[2].ToString());
            }
            //Explicitly close - don't wait on garbage collection.
            cn.Close();
            //Pause
            Console.ReadLine();
5. 修改 ConnectionString,以使用在罗斯文 (Northwind) 数据库中具有列表权限的帐户连接到您的 SQL Server 计算机。
6. 按 F5 键编译并运行该项目。您会注意到表已列在控制台窗口中。
7. 按 ENTER 键结束控制台应用程序并回到集成开发环境 (IDE)。

回到顶端

创建检索表的架构的示例

以下示例列出 SQL Server Northwind 数据库中 Employees 表的架构信息。

OleDbSchemaGuid.Tables 将返回那些可由特定登录访问的表(包括视图)。如果指定对象数组 {null, null, "Employees", "TABLE"},那么您的过滤结果只包括名为 Employees 的表。然后列出返回的架构表的架构信息。
1. 新建一个 Visual C# 控制台应用程序项目。默认情况下,Class1.cs 将添加到项目中。
2. 打开 Class1 的代码窗口。将下面的代码粘贴到代码窗口的顶部,位于 namespace 声明之上:
using System.Data;
            using System.Data.OleDb;
3. 在代码窗口中,将下面的代码粘贴到 Main 函数中:
OleDbConnection cn = new OleDbConnection();
            DataTable schemaTable;
            //Connect to the Northwind database in SQL Server.
            //Be sure to use an account that has permission to retrieve table schema.
            cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=sa;
            Password=password;Initial Catalog=Northwind";
            cn.Open();
            //Retrieve schema information about the Employees table.
            schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
            new Object[] {null, null, "Employees", "TABLE"});
            //List the schema info for the Employees table
            //in the format Field Descriptor :Field Value.
            for (int i = 0; i < schemaTable.Columns.Count; i++) {
            Console.WriteLine(schemaTable.Columns[i].ToString() + " : " +
            schemaTable.Rows[0][i].ToString());
            }
            //Explicitly close - don't wait on garbage collection.
            cn.Close();
            //Pause
            Console.ReadLine();
4. 修改 ConnectionString,以使用具有检索 Employees 表架构权限的帐户连接到您的 SQL Server 计算机。
5. 按 F5 键编译并运行该项目。您会注意到表已列在控制台窗口中。
6. 按 ENTER 键结束控制台应用程序并回到 IDE。

回到顶端

创建列出表中的列的示例

以下示例列出 SQL Server Northwind 数据库中 Employees 表中的列名称。

OleDbSchemaGuid.Columns 将返回那些可由特定登录访问的表和视图中的列。如果指定对象数组 {null, null, "Employees", null},您的过滤结果只包括 Employees 表中的列。
1. 新建一个 Visual C# 控制台应用程序项目。默认情况下,Class1.cs 将添加到项目中。
2. 打开 Class1 的代码窗口。将下面的代码粘贴到代码窗口的顶部,位于 namespace 声明之上:
using System.Data;
            using System.Data.OleDb;
3. 在代码窗口中,将下面的代码粘贴到 Main 函数中:
OleDbConnection cn = new OleDbConnection();
            DataTable schemaTable;
            //Connect to the Northwind database in SQL Server.
            //Be sure to use an account that has permission to list the columns in the Employees table.
            cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=sa;
            Password=password;Initial Catalog=Northwind";
            cn.Open();
            //Retrieve schema information about columns.
            //Restrict to just the Employees TABLE.
            schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,
            new Object[] {null, null, "Employees", null});
            //List the column name from each row in the schema table.
            for (int i = 0; i < schemaTable.Rows.Count; i++) {
            Console.WriteLine(schemaTable.Rows[i].ItemArray[3].ToString());
            }
            //Explicitly close - don't wait on garbage collection.
            cn.Close();
            //Pause
            Console.ReadLine();
4. 修改 ConnectionString,以使用具有列出 Employees 表中各列的权限的帐户连接到您的 SQL Server 计算机。
5. 按 F5 键编译并运行该项目。您会注意到 Employees 表中的列已列在控制台窗口中。
6. 按 ENTER 键结束控制台应用程序并回到 IDE。

回到顶端

创建列出表中的主键的示例

以下示例列出 SQL Server Northwind 数据库的 Employees 表和 SQL Server Pubs 数据库的 Employee 表中的主键。

OleDbSchemaGuid.Primary_Keys 将返回那些可由特定登录访问的目录中的主键。在此示例中,OleDbConnection 连接到 SQL Server,而不是连接到特定的 SQL Server 数据库:
cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=sa;
Password=password;"
因为,罗斯文或 Pubs 数据库将在限制数组的 TABLE_CATALOG 中指定。此代码指定表的所有者"dbo"作为 TABLE_SCHEMA 限制。此外,代码还指定了 TABLE_NAME 限制的表名称。

若要获得罗斯文数据库中 Employees 表的主键,您可以使用 {"Northwind", "dbo", "Employees"} 对象数组:
schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys,
new Object[] {"Northwind", "dbo", "Employees"});

若要获得 Pubs 数据库中 Employee 表的主键,您可以使用 {"Pubs", "dbo", "Employee"} 对象数组:
schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys,
new Object[] {"Pubs", "dbo", "Employee"});
若要创建示例,可以按照下列步骤进行:
1. 新建一个 Visual C# 控制台应用程序项目。默认情况下,Class1.cs 将添加到项目中。
2. 打开 Class1 的代码窗口。将下面的代码粘贴到代码窗口的顶部,位于 namespace 声明之上:
using System.Data;
            using System.Data.OleDb;
3. 在代码窗口中,将下面的代码粘贴到 Main 函数中:
OleDbConnection cn = new OleDbConnection();
            DataTable schemaTable;
            //Connect to SQL Server.
            //Be sure to use an account that has permissions to list primary keys
            //in both the Northwind and Pubs databases.
            cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=sa;
            Password=password;";
            cn.Open();
            //Retrieve schema information about primary keys.
            //Restrict to just the Employees TABLE in the Northwind CATALOG.
            schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys,
            new Object[] {"Northwind", "dbo", "Employees"});
            //List the primary key for the first row in the schema table.
            //The first three items in the ItemArray in the row are catalog, schema, and table.
            //The fourth item is the primary key.
            Console.WriteLine(schemaTable.Rows[0].ItemArray[3].ToString());
            //Retrieve primary key for the Employee TABLE in the Pubs CATALOG.
            schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys,
            new Object[] {"Pubs", "dbo", "Employee"});
            //List the primary key for the first row in the schema table.
            Console.WriteLine(schemaTable.Rows[0].ItemArray[3].ToString());
            //Explicitly close - don't wait on garbage collection.
            cn.Close();
            //Pause
            Console.ReadLine();
4. 修改 ConnectionString,以使用具有足够权限可列出主键的帐户连接到您的 SQL Server 计算机。
5. 按 F5 键编译并运行该项目。您会注意到罗斯文数据库和 Pubs 数据库的 Employee 表的主键已列在控制台窗口中。
6. 按 ENTER 键结束控制台应用程序并回到 IDE。


出处:http://support.microsoft.com/kb/309681/zh-cn

 

posted @ 2008-01-16 14:19 杨 阅读(10691) | 评论 (0)编辑 收藏

2008年1月11日

一、操作系统配置

1.安装操作系统(NTFS分区)后,装杀毒软件,我选用的是卡巴。

2.安装系统补丁。扫描漏洞全面杀毒

3.删除Windows Server 2003默认共享
首先编写如下内容的批处理文件:
@echo off
net share C$ /del
net share D$ /del
net share E$ /del
net share F$ /del
net share admin$ /del
文件名为delshare.bat,放到启动项中,每次开机时会自动删除共享。

4.禁用IPC连接
打开CMD后输入如下命令即可进行连接:net use\\ip\ipc$ "password" /user:"usernqme"。我们可以通过修改注册表来禁用IPC连接。打开注册表编辑器。找到如下组建HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa中的restrictanonymous子键,将其值改为1即可禁用IPC连接。

5.删除"网络连接"里的协议和服务
在"网络连接"里,把不需要的协议和服务都删掉,这里只安装了基本的Internet协议(TCP/IP),同时在高级tcp/ip设置里--"NetBIOS"设置"禁用tcp/IP上的NetBIOS(S)"。

6.启用windows连接防火墙,只开放web服务(80端口)。
注:在2003系统里,不推荐用TCP/IP筛选里的端口过滤功能,譬如在使用FTP服务器的时候,如果仅仅只开放21端口,由于FTP协议的特殊性,在进行FTP传输的时候,由于FTP 特有的Port模式和Passive模式,在进行数据传输的时候,需要动态的打开高端口,所以在使用TCP/IP过滤的情况下,经常会出现连接上后无法列出目录和数据传输的问题。所以在2003系统上增加的windows连接防火墙能很好的解决这个问题,所以都不推荐使用网卡的TCP/IP过滤功能。

7.磁盘权限
系统盘只给 Administrators 和 SYSTEM 权限
系统盘\Documents and Settings 目录只给 Administrators 和 SYSTEM 权限;
系统盘\Documents and Settings\All Users 目录只给 Administrators 和 SYSTEM 权限;
系统盘\Documents and Settings\All Users\Application Data目录只给 Administrators 和 SYSTEM 权限;
系统盘\Windows 目录只给 Administrators 、 SYSTEM 和 users 权限;
系统盘\Windows\System32\net.exe,net1.exe,cmd.exe,command.exe,ftp.exe,netstat.exe,regedit.exe,at.exe,attrib.exe,cacls.exe 文件只给 Administrators 权限(如果觉得没用就删了它,比如我删了cmd.exe,command.exe,嘿嘿。);
其它盘,有安装程序运行的(我的sql server 2000 在D盘)给 Administrators 和 SYSTEM 权限,无只给 Administrators 权限。

8.本地安全策略设置
开始菜单—>管理工具—>本地安全策略
A、本地策略——>审核策略 (可选用)
审核策略更改 成功 失败
审核登录事件 成功 失败
审核对象访问 失败
审核过程跟踪 无审核
审核目录服务访问 失败
审核特权使用 失败
审核系统事件 成功 失败
审核账户登录事件 成功 失败
审核账户管理 成功 失败

B、本地策略——>用户权限分配
关闭系统:只有Administrators组、其它全部删除。
通过终端服务拒绝登陆:加入Guests、Users组
通过终端服务允许登陆:只加入Administrators,Remote Desktop Users,其他全部删除

C、本地策略——>安全选项
交互式登陆:不显示上次的用户名 启用
网络访问:可匿名访问的共享 全部删除
网络访问:可匿名访问的命名管道 全部删除
**网络访问:可远程访问的注册表路径 全部删除
**网络访问:可远程访问的注册表路径和子路径 全部删除
帐户:重命名来宾帐户 重命名一个帐户
(下面一项更改可能导致sqlserver不能使用)
帐户:重命名系统管理员帐户 重命名一个帐户



二、iis配置(包括网站所在目录)

1.新建自己的网站(*注意:在应用程序设置中执行权限设为无,在需要的目录里再更改),目录不在系统盘
注:为支持asp.net,将系统盘\Inetpub\wwwroot中的aspnet_client文件夹复制到web根目录下,并给web根目录加上users权限。

2.删掉系统盘\inetpub目录

3.删除不用的映射
在"应用程序配置"里,只给必要的脚本执行权限:ASP、ASPX。

4.为网站创建系统用户
A.例如:网站为yushan43436.net,新建用户yushan43436.net权限为guests。然后在web站点属性里"目录安全性"---"身份验证和访问控制"里设置匿名访问使用下列Windows 用户帐户"的用户名和密码都使用yushan43436.net这个用户的信息。(用户名:主机名\yushan43436.net)
B.给网站所在的磁盘目录添加用户yushan43436.net,只给读取和写入的权限。

5.设置应用程及子目录的执行权限
A.主应用程序目录中的"属性--应用程序设置--执行权限"设为纯脚本
B.在不需要执行asp、asp.net的子目录中,例如上传文件目录,执行权限设为无

6.应用程序池设置
我的网站使用的是默认应用程序池。设置"内存回收":这里的最大虚拟内存为:1000M,最大使用的物理内存为256M,这样的设置几乎是没限制这个站点的性能的。
回收工作进程(分钟):1440
在下列时间回收工作进程:06:00



三、sql server 2000 配置

1.密码设置
我编的程序用了sa用户,密码设置超复杂(自己记不住,保存在手机里,嘿嘿)。

2.删除危险的扩展存储过程和相关.dll。
Xp_cmdshell(这个肯定首当其冲,不用说了)、Xp_regaddmultistring、Xp_regdeletekey、Xp_regdeletevalue、Xp_regenumvalues、Xp_regread、Xp_regwrite、Xp_regremovemultistring


四、其它设置(可选用,本人可不负责)

1.任何用户密码都要复杂,不需要的用户---删。

2.防止SYN洪水攻击
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
新建DWORD值,名为SynAttackProtect,值为2

3.禁止响应ICMP路由通告报文
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\interface
新建DWORD值,名为PerformRouterDiscovery 值为0

4.防止ICMP重定向报文的攻击
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
将EnableICMPRedirects 值设为0

5.不支持IGMP协议
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
新建DWORD值,名为IGMPLevel 值为0

6.禁用DCOM:
运行中输入 Dcomcnfg.exe。 回车,单击“控制台根节点”下的“组件服务”。打开“计算机”子文件夹。
对于本地计算机,请以右键单击“我的电脑”,然后选择“属性”。选择“默认属性”选项卡。
清除“在这台计算机上启用分布式 COM”复选框。
posted @ 2008-01-11 16:38 杨 阅读(324) | 评论 (0)编辑 收藏

2007年12月1日

I love using Scriptaculous for its effects and drag/drop. However, I need to have my DIVs be resizable too. To make this happen, I’ve written a class called Resizeable that can be added to a DIV in the same way that Draggable can be.

This code is standalone (it needs Prototype, but not Scriptaculous), and it can be used with Draggable with one note: The Draggable handle cannot be the element that is Resizeable, you must specify a handle element when you create a Draggable to avoid confusion between Draggable and Resizeable.

This doesn’t work very well
...
...
new Draggable(‘foo’); new Resizeable(‘foo’);
...
...

This works nicely:
...
...

new Draggable(‘foo’, {handle: ‘bar’}); new Resizeable(‘foo’);

There aren’t many options for this object, but here they are:

The grab areas can be defined with top, left, bottom, right. Each defaults to 6 pixels. If you set this to 0 (zero), then resize in that direction will be disabled.
...
...

new Resizeable(‘foo’, {top: 0, left:50} );

A callback function can be defined that will be called when the resize is over.
...
...

new Resizeable(‘foo’, {resize: function(el) { alert(‘Done!’); } } );

The minimum height and width of the DIV can be specified as minHeight and minWidth options.

The resizable code in action – view source to see how it works.

The Javascript source file can be downloaded here

Currently, this code doesn’t quite work in IE (the DIV can jiggle around a little), but Firefox 1.0 is working Ok.


 

出处:http://blog.craz8.com/articles/2005/12/01/make-your-divs-resizeable

posted @ 2007-12-01 10:32 杨 阅读(366) | 评论 (0)编辑 收藏

2007年11月24日

  众所周知,在编写WebCustomControl时,继承于WebControl基类的Attributes以及其Attributes.CssStyle属性是十分常用和重要的。但就是这两个重要的属性,如果开发中使用不当却会带来莫名其妙的效率问题。

  由于html的灵活性和不完备性,导致了WebControl基类没有完整的表现html元素所提供和支持的所有标签属性和CSS属性(当然由于不同browser的兼容问题,要提供完备的属性是不可能的)。又由于很多html标签属性和CSS属性都是很生僻的,很少或极少被使用,如果要完备的支持,反而会成为WebControl的负担。所以Attributes和Attributes.CssStyle这两个属性很好的解决了这个问题,当然这两个属性除了支持应有的html标签属性和CSS属性外,还支持任何合法的自定义key/value对。这里要讨论的问题就来之这个对自定义key/value对的支持上。

  Attributes属性的类型是一个AttributeCollection,本来很自然的一个东西,可是不知道怎么搞得,AttributeCollection的构造函数却需要一个StateBag参数:
public AttributeCollection(StateBag bag)
{
      
this._bag =
 bag;
}

  这样的结果就是,Attributes和Attributes.CssStyle可能会被保存在ViewState中,事实上ASP.NET默认确实会保存其中的内容到ViewState中。

  这种设计真的是让人觉得莫名其妙,在大家对ViewState效率问题的讨论中,觉得ViewState确实是鸡肋,用来保持一些服务器状态和数据让大家觉得方便也就算了。可是居然把和UI相关的内容都一股脑存到ViewState里,真的是疯狂。

  下面是使用Attributes定义了一些自定义内容后的ViewState的情形:

Attributes-ViewState.png

// AnalysisReport自定义控件上定义了一些自定的内容

  Attributes和Attributes.CssStyle被自动保存到ViewState中后,除了ViewState体积急增后,PostBack时Load ViewState的负担也同时增大了。上面这个事例中的页面PostBack的LoadState代价,如下图:

LoadViewStateElapsed.png

  实际上我在编写控件时,从来没有想过要保持Attributes和Attributes.CssStyle,也没有想过要再次使用其中的数据。而且这个默认保存到ViewState的行为居然不能定制(至少我还没有发现),后来想到在ASP.NET页面生存期中,SaveState结束在PreRender中,所以在Render事件中使用Attributes和Attributes.CssStyle的就不会保存到ViewState中去。

  修改代码:

protected override void OnPreRender(EventArgs e)
{
    
this.Attributes["abc"= "123";
    
this.Attributes.CssStyle["abc-style"= "123-style";
    
base.OnPreRender(e);
}

  为如下形式:

 

protected override void Render(HtmlTextWriter output)
{
    
this.Attributes["abc"= "123";
    
this.Attributes.CssStyle["abc-style"= "123-style";
    output.Write(Text);
}

 

  就不会再将Attributes和Attributes.CssStyle保存到ViewState中了,上面那个AnalysisReport按上面的示例修改后,绑定同样数据的运行效果为:

Attributes-ViewState02.png

  LoadState的代价也大大降低,其开销为:

LoadViewStateElapsed02.png

posted @ 2007-11-24 14:41 杨 阅读(633) | 评论 (0)编辑 收藏
 
     摘要: using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using S...  阅读全文
posted @ 2007-11-24 14:00 杨 阅读(4048) | 评论 (2)编辑 收藏
 
     摘要:   --取得字符串每个汉字的拼音首字母create function f_GetPy(@str nvarchar(4000))returns nvarchar(4000)asbegindeclare @strlen int,@re nvarchar(4000)declare @t table(ch...  阅读全文
posted @ 2007-11-24 13:58 杨 阅读(285) | 评论 (0)编辑 收藏

2007年11月12日

 

适合初学者学习的日期操作范例

1.显示本月第一天

SELECT DATEADD(mm,DATEDIFF(mm,0,getdate()),0)
 
select convert(datetime,convert(varchar(8),getdate(), 120)+'01',120)

2.显示本月最后一天

select dateadd(day,-1,convert(datetime,convert
            (
varchar(8),dateadd(month,1,getdate()),120)+'01',120))
            
SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+1,0))

3.上个月的最后一天

SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(mm,0,getdate()),0))

4.本月的第一个星期一i

select DATEADD(wk,DATEDIFF(wk,0, dateadd(dd,6-datepart(
            day,getdate()),getdate())),0)

5.本年的第一天

SELECT DATEADD(yy,DATEDIFF(yy,0,getdate()),0)

6.本年的最后一天

SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate())+1,0))

7.去年的最后一天

SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate()),0))

8.本季度的第一天

SELECT DATEADD(qq,DATEDIFF(qq,0,getdate()),0)

9.本周的星期一

SELECT DATEADD(wk,DATEDIFF(wk,0,getdate()),0)

10.查询本月的记录

select * from tableName where DATEPART(mm, theDate)
            =DATEPART(mm, GETDATE()) and DATEPART(yy, theDate)
            = DATEPART(yy, GETDATE())

11.查询本周的记录

select * from tableName where DATEPART(wk, theDate) = DATEPART
            (wk, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())

12查询本季的记录 注:其中:GETDATE()是获得系统时间的函数。

select * from tableName where DATEPART(qq, theDate) = DATEPART
            (qq, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())

13.获取当月总天数:

select DATEDIFF(dd,getdate(),DATEADD
            (mm, 1, getdate()))
            select datediff(day,
            dateadd(mm, datediff(mm,'',getdate()), ''),
            dateadd(mm, datediff(mm,'',getdate()), '1900-02-01'))

14.获取当前为星期几

DATENAME(weekday, getdate())
posted @ 2007-11-12 17:06 杨 阅读(349) | 评论 (0)编辑 收藏
 

sql server 2000

exec sp_changeobjectowner '[bbsdb].[dv_style]',[dbo]

更改当前数据库中对象的所有者备份、恢复数据库时,往往会出现所有者是原来的用户,这样当你在新的系统中使用 时,会出现表名无效的错误提示,而加入原来的用户名,又会出现用户已经存在的错误,

所以最好的方法就是修改成dbo:

怎么样把sql server 2000的用户表的所有者,改成dbo,而不是用户名。

(附修改存储过程的方法,在查询器中执行:
EXEC sp_changeobjectowner 'usera.hishop_creatorder', 'dbo'),就把 usera的存储过程改为dbo所有了。

可以使用 sp_changedbowner 更改数据库的所有者。

方法一:右键点击该表-》设计表,在上面的一排小图标中,点最后一个“条件约束”,点“表”页,在里面更改所有者。(若没有条件约束的小图标,可以点右键,能看到一个“check约束”的选项)

方法二:利用脚本直接执行,用系统帐号或者超户登陆到该数据库,然后执行下面语句:

sp_configure 'allow updates','1'
go
reconfigure with override
go
update sysobjects set uid=1 where uid<>1
go
sp_configure 'allow updates','0'
go
reconfigure with override

第二种方法只能使用一次,第二次使用会出错。


sql server 2005

1。先说说如何在SQL 2005中批量修改存储过程的架构。

执行以下SQL,将执行结果拷贝出来,批量执行既可。

SELECT 'ALTER SCHEMA dbo TRANSFER ' + s.Name + '.' + p.Name

FROM sys.Procedures p INNER JOIN sys.Schemas s on p.schema_id = s.schema_id

WHERE s.Name = '旧的架构名称'

2。再说说如何在SQL 2005中批量修改表的架构。

执行以下SQL,将执行结果拷贝出来,批量执行既可。

declare @name sysname
declare csr1 cursor
for
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
open csr1

FETCH NEXT FROM csr1 INTO @name
while (@@FETCH_STATUS=0)
BEGIN
SET @name='旧的架构名称.' + @name

print 'ALTER SCHEMA dbo TRANSFER ' + @name
fetch next from csr1 into @name
END
CLOSE csr1
DEALLOCATE csr1

 

posted @ 2007-11-12 09:02 杨 阅读(1192) | 评论 (0)编辑 收藏
仅列出标题  下一页