我感谢我正在使用的Drupal

编程开发

Drupal多语言网站在中文语言浏览器的自动本地化

Drupal 6 的核心文件根目录 includes 文件夹下有一个 language.inc 的文件, 它的里面主要是 Drupal 网站语言控制的代码, 包括语言前缀, 浏览器语言判断等等.

在 Drupal 网站系统里面中文语言的默认前缀是 zh-hans, 一般形式如 http://域名/zh-hans/... . 而浏览器的语言, 以中文版 Firefox 为例 : 中文的语言的选择仅有
汉语 [zh];
汉语/新加坡 [zh-sg];
汉语/中国 [zh-cn];
汉语/中国台湾 [zh-tw];
汉语/中国香港 [zh-hk].

给drupal添加多语言变量

建设基于Drupal的多语言网站时,特殊的是网站基础信息(网站名称等等)等的国际化,比如"站点信息"(site information)页面里可以设置网站名称\口号\站点目标等等基础信息都是提供给用户输入的变量.
如何汉化用户输入的网站基础信息呢?

首先做多语言网站我们肯定需要用到drupal国际化模块——i18n(Internationalization);

安装并启用i18n模块后,编辑settings文件(sites\default\settings.php),在最末位加上如下代码:

Drupal 7 查询数据库连接使用PDO

Drupal 7 使用 PDO 连接数据库,鉴于 PHP 6将把 PDO 做为默认数据库连接方式,这是必须的选择。实际上,Drupal 7之前的数据库抽象层,和 PDO 的某些理念一致,用相同的方法操作不同类型的数据库,减少了模块开发者的工作,也提升了程序的兼容性和可移植性。引入 PDO,相对于之前的版本,数据库接口当然有不小的变化。

最显著的,db_fetch_object()、db_fetch_array() 这两个最常用的函数没用了。从前,db_query()或pager_query()之后,几乎必然跟着上述两个函数之一,现在,没有了。而那些 SQL 语句中熟悉的占位符(%d, %s, %f, %n),也没有了。要谈这两个问题,先要了解一下大家最最熟悉的 db_query() 的改变。

在 Drupal 6 中,db_query() 接受无限个参数,第一个为 SQL 语句,后面的参数为查询值,用以替换语句中的占位符,大致类似于:
<?php
db_query("SELECT * FROM {system} WHERE filename = '%s'", 'system');
?>

Drupal 最常见的相册模块

Drupal上实现相册的方法很多, 比较常用的实现方式有以下几种:

1. 以Image模块为主导的实现Drupal相册
  Image (模块下载页面:http://drupal.org/project/image)
这个模块允许适当权限的用户上传图像到你的Drupal网站。可以自动创建缩略图和额外的尺寸。单个图像可以发布为一个内容,然后可以在通过taxonomy(核心模块,在模块列表启用)分类显示。

2. 集成Gallery2
  gallery (模块下载页面:http://drupal.org/project/gallery)
这个模块嵌入gallery2(http://gallery.menalto.com)在你的Drupal安装后可以支持图片,视频和其他内容。有2种图像块和一个导航菜单支持,插入节点的图像通过一个输入过滤器,TinyMCE的支持,2应用程序之间,用户同步...
请注意您需要下载并安装gallery2(http://gallery.menalto.com/downloads)之前,安装gallery模块。

了解程序员能力矩阵

 了解程序员能力矩阵, 指引你如何提升, 和你的提升空间.

JNDI 在 J2EE 中的角色

Kirk Pepperdine 首席技术官 Joseph Ottinger 咨询顾问

掌握 J2EE 是件令人生畏的事,因为它包含的技术和缩略语在不断地增长。Java 命名和目录接口(Java Naming and Directory Interface,JNDI)从一开始就一直是 Java 2 平台企业版(JEE)的核心,但是 J2EE 开发新手经常用不好它。本文将消除 JNDI 在 J2EE 应用程序中所扮演角色的神秘性,并展示它如何帮助应用程序从部署细节中解脱出来。

虽然 J2EE 平台提高了普通企业开发人员的生活水平,但是这种提高是以不得不学习许多规范和技术为代价的,这些规范和技术则是 J2EE 为了成为无所不包的分布式计算平台而整合进来的。Dolly Developer 是众多开发人员中的一员,她已经发现了一个特性,该特性有助于缓解随企业级应用程序部署而带来的负担,这个特性就是 JNDI,即 Java 命名与目录接口(Java Naming and Directory Interface)。让我们来看看 Dolly 在没有 JNDI 的时候是怎么做的,以及她是如何正确地应用 JNDI 来改善其状况的。 Dolly Developer 正在编写使用 JDBC 数据源的 Web 应用程序。她知道自己正在使用 MySQL,所以她将一个对 MySQL JDBC 驱动程序类的引用进行了编码,并通过使用适当的 JDBC URL 连接到其 Web 应用程序中的数据库。她认识到数据库连接池的重要性,所以她包含了一个连接池包,并把它配置成最多使用 64 个连接;她知道数据库服务器已经被设置成最多允许 128 台客户机进行连接。 在开发阶段,每件事都进行得很顺利。但是,在部署的时候,开始失控。Dolly 的网络管理员告诉她,她不能从她的桌面机访问生产服务器或登台服务器(staging server),所以她不得不为每个部署阶段开发不同的代码版本。因为这种情况,她需要一个新的 JDBC URL,所以还要为测试、阶段和生产进行独立的部署。(一听到要在每个环境中建立单独部署,熟悉配置管理的人会战战兢兢的,但是既然这是种非常普遍的情况,所以他们也只好硬着头皮上了。) 就在 Dolly 认为通过不同的 URL 建立彼此独立的部署已经解决了自己的配置问题时,她发现她的数据库管理员不想在生产环境中运行 MySQL 实例。他说,MySQL 用作开发还可以,但是对于任务关键型数据而言,业务标准是 DB2。现在她的构建不仅在数据库 URL 方面有所不同,而且还需要不同的驱动程序。 事情越变越糟。她的应用程序非常有用,并且变得非常关键,以致于它从应用服务器那里得到了故障恢复的能力,并被复制到 4 个服务器集群。但是数据库管理员提出了抗议,因为她的应用程序的每个实例都要使用 64 个连接,而数据库服务器总共只有 200 个可用连接 —— 全部都被 Dolly 的应用程序占用了。更麻烦的是,DBA 已经确定 Dolly 的应用程序只需要 32 个连接,而且每天只有一个小时在使用。随着她的应用程序规模扩大,应用程序遇到了数据库级的争用问题,而她的惟一选择就是改变集群的连接数量,而且还要做好准备,在集群数量增长或者应用程序复制到另一个集群时再重复一次这样的操作。看来她已经决定了如何配置应用程序,应用程序的配置最好是留给系统管理员和数据库管理员来做。 如果 Dolly 在开发应用程序时了解 J2EE 所扮演的角色,那么她就可能避免遭遇这种困境。J2EE 规范把职责委托给多个开发角色:组件提供者(Component Provider)、应用程序组装者(Application Assembler)、部署人员(Deployer)和系统管理员(System Administrator)。(在许多公司中,组件提供者和组件组装者的角色是融合在一起的,部署人员和系统管理员的角色是融合在一起的。)在真正了解 J2EE 中的 JNDI 角色之前,掌握 J2EE 角色的作用非常重要。 组件提供者 这个角色负责创建 J2EE 组件,J2EE 组件可以是 Web 应用程序、企业级 JavaBean(EJB)组件,或者是应用程序客户机(例如基于 Swing 的 GUI 客户机应用程序)。组件提供者包括:HTML 设计师、文档编程人员以及其他开发人员角色。大多数 J2EE 开发人员在组件提供者这一角色上耗费了相当多的时间。 应用程序组装者 这个角色将多个 J2EE 模块捆绑成一个彼此结合的、可以部署的整体:企业归档(EAR)文件。应用程序组装者要选择组件,分清它们之间的交互方式,配置它们的安全性和事务属性,并把应用程序打包到 EAR 文件中。许多 IDE,例如 WebSphere Studio、IDEA、JBuilder、WebLogic Workshop 和其他 IDE,都可以帮助应用程序组装者以交互方式配置 EAR 文件。 部署人员(Deployer) 这个角色负责部署,这意味着将 EAR 安装到 J2EE 容器(应用服务器)中,然后配置资源(例如数据库连接池),把应用程序需要的资源绑定到应用服务器中的特定资源上,并启动应用程序。 系统管理员(System Administrator) 这个角色负责保证容器需要的资源可用于容器。 假设有一个企业应用程序,该应用程序包含一个 Web 应用程序,还有一个负责业务逻辑和持久性的 EJB 组件。开发这个应用程序的组件供应商可能有许多,但是在许多情况下,可以由一个人来承担全部职责。组件可以包含数据传输对象(一个 JAR 文件)、EJB 接口(另一个 JAR 文件)、EJB 实现本身(另一个 JAR 文件),以及用户界面组件 —— servlet、JSP、HTML 页面和其他静态 Web 内容。用户界面组件被进一步打包成 Web 应用程序,其中包含 servlet 类、JSP 文件、静态内容,以及其他必需组件的 JAR(包括 EJB 接口)。 这听起来好像用到的组件太多了,几乎超出了人的想像范围,尤其是在考虑构建一个典型的 Web 应用程序需要使用多少个 JAR 文件的时候。但是,重要的是认识到在这里必须小心地管理依赖性。接口和传输对象是 Web 应用程序和 EJB 实现可以依赖的对象,但是依赖性的方向应该是相同的;还要避免产生循环依赖。J2EE 组件(例如 WAR 文件和 EJB JAR 文件)必须在它们的部署单元之外声明它们在资源上的依赖性。

ASP.NET中17种正则表达式

"^\d+$"//非负整数(正整数+0)
"^[0-9]*[1-9][0-9]*$"//正整数
"^((-\d+)|(0+))$"//非正整数(负整数+0)
"^-[0-9]*[1-9][0-9]*$"//负整数
"^-?\d+$"//整数
"^\d+(\.\d+)?$"//非负浮点数(正浮点数+0)
"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"//正浮点数
"^((-\d+(\.\d+)?)|(0+(\.0+)?))$"//非正浮点数(负浮点数+0)
"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"//负浮点数
"^(-?\d+)(\.\d+)?$"//浮点数
"^[A-Za-z]+$"//由26个英文字母组成的字符串
"^[A-Z]+$"//由26个英文字母的大写组成的字符串
"^[a-z]+$"//由26个英文字母的小写组成的字符串
"^[A-Za-z0-9]+$"//由数字和26个英文字母组成的字符串
"^\w+$"//由数字、26个英文字母或者下划线组成的字符串
"^[\w-]+(\.[\w-]+)*@[\w

asp.net如何生成图片验证码

来源:互联网

新建一个页面image.aspx,添加命名空间:

usingSystem.Drawing.Imaging;
usingSystem.IO;

然后在Page_load事件拷入如下代码:

//生成4位的验证码
stringtmp=RndNum(4);
HttpCookiea=newHttpCookie("ImageV",tmp);
Response.Cookies.Add(a);
this.ValidateCode(tmp);

接下来向该页面添加两个方法:

privatevoidValidateCode(stringVNum)
{
BitmapImg=null;
Graphicsg=null;
MemoryStreamms=null;

intgheight=VNum.Length*12;
Img=newBitmap(gheight,25);
g=Graphics.FromImage(Img);
//背景颜色
g.Clear(Color.White);
//文字字体
Fontf=newFont("ArialBlack",10);

Asp.net三层架构自动生成代码CodeSmith模版

asp.net模型层,CodeSmith代码自动生成模版

<%@ CodeTemplate Language="C#" TargetLanguage="C#" Description="Generates a very simple business object." %> <%@ Property Name="TargetTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="TargetTable that the object is based on." %> <%@ Property Name="ModelsNamespace" Default="MyBookShop.Model" Type="System.String" Category="Context" Description="TargetTable that the object is based on." %> <%@ Assembly Name="SchemaExplorer" %> <%@ Assembly Name="System.Data" %> <%@ Import Namespace="SchemaExplorer" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Text.RegularExpressions" %> <% PrintHeader(); %> using System; using System.Collections.Generic; using System.Text;

namespace <%= ModelsNamespace %> { ? ?[Serializable()] ?public class <%= GetModelClassName() %> ?{ ? ??private <%= GetPKPropertyType() %> <%= GetPKMemberVarName() %>; ??<% ?? ??if(TargetTable.ForeignKeys.Count > 0) ??{ ???foreach (TableKeySchema key in TargetTable.ForeignKeys) ???{ ??%> ??private <%= GetFKPropertyType(key) %> <%= GetFKMemberVarName(key) %>; ??<% ???}??? ??} ?? ??foreach (ColumnSchema column in TargetTable.NonKeyColumns) ???{ ???if(GetMemberVariableDefaultValue(column) != "") ???{ ??%> ??private <%= GetPropertyType(column) %> <%= GetMemberVarName(column) %> = <%= GetMemberVariableDefaultValue(column) %>; ??<% ???} ???else ???{ ??%> 节省页面省去后续大量代码......下载CodeSmith代码模板文件dbmadmodels

asp.net三层架构数据访问层,CodeSmith代码自动生成模版

<%@ CodeTemplate Language="C#" TargetLanguage="C#" Description="Generates a very simple business object." %> <%@ Property Name="TargetTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="TargetTable that the object is based on." %> <%@ Property Name="ModelsNamespace" Default="MyBookShop.Model" Type="System.String" Category="Context" Description="TargetTable that the object is based on." %> <%@ Property Name="DALNamespace" Default="MyBookShop.DAL" Type="System.String" Category="Context" Description="TargetTable that the object is based on." %> <%@ Property Name="DALClassNameSurfix" Default="DAL" Type="System.String" Category="Context" Description="TargetTable that the object is based on." %> <%@ Assembly Name="SchemaExplorer" %> <%@ Assembly Name="System.Data" %> <%@ Import Namespace="SchemaExplorer" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Text.RegularExpressions" %> <% PrintHeader(); %> using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; using <%= ModelsNamespace %>; namespace <%= DALNamespace %> { ?public class <%= GetDALClassName() %> ?{ ??<%-- public? Book AddBook(Book book) --%> ??????? public? int Add<%= GetModelClassName() %>(<%= GetModelClassName() %> <%= GetModelParamName() %>) ??{ ??????????? string sql = ????<%= GetInsertSQLLine1()%> ????<%= GetInsertSQLLine2()%> ???? ???sql += " ; SELECT @@IDENTITY"; ??????????? try ??????????? { ????SqlParameter[] para = new SqlParameter[] ????{ ?????<% ?????foreach(TableKeySchema key in TargetTable.ForeignKeys) ?????{ ?????%> ?????new SqlParameter("@<%= GetFKForeignIdName(key) %>", <%= GetModelParamName() %>.<%= GetFKPropertyName(key) %>.<%= GetFKPrimaryIdName(key) %>), //FK ?????<% ?????} ?????for(int i=0; i<TargetTable.NonKeyColumns.Count-1; i++) ?????{ ??????ColumnSchema column = TargetTable.NonKeyColumns[i]; ?????%> ?????new SqlParameter("@<%= column.Name %>", <%= GetModelParamName() %>.<%= column.Name %>), ?????<% ?????} ?????for(int i=TargetTable.NonKeyColumns.Count-1; i<TargetTable.NonKeyColumns.Count; i++) ?????{ ??????ColumnSchema lastColumn = TargetTable.NonKeyColumns[i]; ?????%> ?????new SqlParameter("@<%= lastColumn.Name %>", <%= GetModelParamName() %>.<%= lastColumn.Name %>) ?????<% ?????} ?????%> ????}; ???? ??????????????? int row = SqlHelper.ExecuteSql(sql, para); ????return row; ??????????? } ??????????? catch (Exception e) ??????????? { ??????????????? throw e; ??????????? } ??} ?? ??节省页面省去后续大量代码......下载CodeSmith代码模板文件dbmaddal

asp.net三层架构业务层,CodeSmith代码自动生成模版

<%@ CodeTemplate Language="C#" TargetLanguage="C#" Description="Generates a very simple business object." %> <%@ Property Name="TargetTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="TargetTable that the object is based on." %> <%@ Property Name="ModelsNamespace" Default="MyBookShop.Model" Type="System.String" Category="Context" Description="TargetTable that the object is based on." %> <%@ Property Name="DALNamespace" Default="MyBookShop.DAL" Type="System.String" Category="Context" Description="TargetTable that the object is based on." %> <%@ Property Name="BLLNamespace" Default="MyOffice.BLL" Type="System.String" Category="Context" Description="TargetTable that the object is based on." %> <%@ Property Name="BLLClassNameSurfix" Default="Manager" Type="System.String" Category="Context" Description="TargetTable that the object is based on." %> <%@ Property Name="DALClassNameSurfix" Default="DAL" Type="System.String" Category="Context" Description="TargetTable that the object is based on." %> <%@ Assembly Name="SchemaExplorer" %> <%@ Assembly Name="System.Data" %> <%@ Import Namespace="SchemaExplorer" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Text.RegularExpressions" %> <% PrintHeader(); %> using System; using System.Collections.Generic; using System.Text; using <%= DALNamespace %>; using <%= ModelsNamespace %>; namespace <%= BLLNamespace %> { ??? public class <%= GetBLLClassName() %> ??? { ??private static readonly <%= GetDALClassName() %> dal = new <%= GetDALClassName() %>(); ??????? public? int Add<%= GetModelClassName() %>(<%= GetModelClassName() %> <%= GetModelParamName() %>) ??????? { ???<% ???if(TargetTable.ForeignKeyColumns.Count>0) ???{ ????foreach(TableKeySchema key in TargetTable.ForeignKeys) ????{ ?????if(key.PrimaryKeyTable.ExtendedProperties.Contains("DefaultId")) ?????{ ???%> ??????????? if (<%= GetModelParamName() %>.<%= GetFKPropertyName(key) %> == null) ??????????? { ??????????????? <%= GetModelParamName() %>.<%= GetFKPropertyName(key) %> = new <%= 节省页面省去后续大量代码......下载CodeSmith代码模板文件dbmadbll

CodeSmith程序员必备工具之一,初识篇

今天简单学了下CodeSmith的使用,主要是模版的编写,学会编写模版了,生成代码就是点几下的事了!实体类,数据库访问类,都可以不用再累人了.

CodeSmith下载:

http://search.gougou.com/search?search=codesmith&id=2? 这些资源都不错!

CodeSmith破解:

如果下载的CodeSmith没有带破解,下我提供这个,最新版不知道是多少。