使用 NAnt 构建 asp.net 项目并生成一个固定名字的动态库

在 Java 项目里多用 Ant 来自动构建项目,随着惯性思维,很容易就找到了 .Net 里也有类似的构建工具 NAnt。最该死的是连 Maven 在 .net 中的对应产物 NMaven 也都有了,http://sourceforge.net/projects/nmaven/。从 Ant 到 NAnt 自然会有一种驾轻就熟的感觉。其实 MS 也为我们提供了相应的构建工具,如早先的 nmake 和现在的 MSBuild,它们各自用特定的构建文件,只是纯粹的项目构建工具。

NAnt 能让你完成许多的系统操作,并且是扩展的,它能独立的完成诸如取版本、编译、打包、发布、Email 通知等一系列过程。如果再让 NAnt 结合 MSBuild 便能制作出完全自动化,一劳永逸,简单化的构建方案。比如这里的例子讲述了如何用 NAnt 构建一个 WebSite 项目,并把生成的多个动态库,像:App_Web_j_5i4fnt.dll、App_Code.dll、App_global.asax.dll 用 aspnet_merge.exe 命令合成为一个固定名字的动态库,如 Unmi.Web.dll。这样非常有利于站点的部分更新。 阅读全文 >>

C# 使用 iTextSharp(4.1.2) 生成 PDF 文档

在 Java 里操作 PDF 文档的组件首当其充就是 iText,几乎是不二之选,惯性思维到 C# 里应该有一个相应的实现吧,对了,那就是 iTextSharp,这里来看看 iTextSharp 怎么生成一个 PDF 文档的。此篇所选版本是 iTextSharp 4.1.2,因与 iTextSharp 5 有较大的差别,所以分两篇来说明。

这两个版本的主要区别有,iTextSharp 5 里不再有 iTextSharp.text.Table、HeaderFooter 类的,且实现了自己的 Font, Color,不再依赖于 System.Drawing 了;在设置页眉页脚实现也不一样。

下面例子,用 OLDDB 从一个 Excel 里读取第一个 sheet,然后在 PDF 文档里生成张表格: 阅读全文 >>

C# 程序中使用 SQLite 数据库

差不多在 3 年前我就关注过 SQLite,也整理了一篇 SQLite 的介绍:开源嵌入式数据库 SQLite 简介, 还在我的一个查手机归属地软件中使用了 SQLite 数据库,http://unmi.cc/csharp-use-sqlite-db/

现在又要用到 C# 了,所以决意了解下 C# 中如何使用 SQLite,之所以选择 SQLite 作为自己的文件型数据,主要是看中它的非常小型单文件嵌入型,更支持多进程访问。

SQLite 官方网站:http://www.sqlite.org,你可以在那里下载到一个 sqlite3.exe,用命令行模式来管理你的数据库文件。或用其他比较好的管理工具:sqliteman(也支持 UTF-8) 、sqlitebrowser 和 SQLite Administrator。我比较喜欢 sqlitebrowser,但更推荐可设置字符集的 SQLite Expert(可下载到免费的个人版)。 阅读全文 >>

那些相见恨晚的 JavaScript 技巧

JavaScript 的成功让人津津乐道,为 Web 网页编写 JavaScript 代码已经是所有 Web 设计师的基本功,这门有趣的语言蕴藏着许多不为人熟知的东西,即使多年的 JavaScript 程序员,也未能完全吃透。本文从7个方面讲述 JavaScript 中那些你不很熟知但非常实用的技巧。

简略语句
JavaScript 可以使用简略语句快速创建对象和数组,比如下面的代码:

阅读全文 >>

PHP之中使用共享内存进行高速数据更新的一种方案[转]

作者:HonestQiao

    如果在你实际的应用之中,你确实需要高速数据更新的操作,那么我们认为你已经具备以下先决条件:
    能够按照实际应用的需要而调整服务器
    关于这句话,大家自己可以明白意思的,不明白的自己想一想,如果没有达到这个要求,你是否有必要高速数据更新的操作, 或者先看看最后的附加说明.

 

    先见的参考文档:
1. http://w.yi.org/ftp/FAPM/PHP/php_manual_zh/ref.shmop.html
说明: PHP功能, 共享内存功能函数, 此处用于PHP直接操作内存, 提供高速数据操作
开启: 编译PHP的时候,加上参数: -enable-shmop
附注: 这个准备工作, 非常简单 阅读全文 >>

PHP 进程间内存共享

启用php的共享内存:

1).windows下,php.ini中取消 ;extension=php_shmop.dll 这行的行首分号,加载shmop扩展。
2) .linux/unix下,重新编译php,加入--enable--shmop 选项。

Shared Memory 的函数解释如下:

Take Your Kids to Work Day

When you’re a working parent and your child has never even visited your office or place of work, it’s hard to communicate to them what exactly you do and why you are never home during the day. One of the best ways for your child to understand what you do all day is to actually let them visit you. Thus “Take Your Kids to Work Day” was born! In some areas of Canada, this is actually a program instituted in schools, but for office workers in particular around the world, Take Your Kids to Work Day can be any day.

Why It’s a Good Idea

Taking your kids to work can not only fill up a non-school day if you can’t find a babysitter, but can create fond memories for a child of a day at the office or workplace with their parent. It makes them feel special and stands out from the ordinary, boring school day. With proper rules, your coworkers won’t mind, and might even enjoy the break from the normal boring office routine as they drop by to say hi to your children. 阅读全文 >>

JMS 基本知识及消息传送模型

JMS(Java Message Service) 是 Java 为面向消息中间件(MOM)定义的接口。JMS 的通信管道就是消息队列,说到消息队列,历史就悠久,在 MS 系统中很早就有 MSMQ,譬如邮件、群组就是些消息队列。JMS 因其异步,所以可用来解决高并发的问题,分布式可对负载进行均衡。

JMS 已成为 J2EE 规范中的一部分,所以在 J2EE 应用服务器中都有 JMS 核心部分 MQ 的实现,MQ 也有独立的产品,如 ActiveMQ、JBoss MQ(已更名为 JBoss Messaging)、WebSphere MQ 等。

如果我们蒙着头来理解,JMS 消息通信中的主要角色应该有:消息生产者(Producer)消息消费者(Consumer)、它们间的消息队列(Queue)、以及所传送的消息(Message)阅读全文 >>

SLF4J 的几种实际应用模式--之二:SLF4J+Logback

前面讲的 SLF4J 的用法之一是 SLF4J+Log4J,而这里要推出的组合是 SLF4J+LogBack。不用 Log4J?难道还有比 Log4J 更好的日志实现吗?是的,答案就是 LogBack。假如你知道 LogBack 和 Log4J 是同出一位大师之手,你就不会觉得惊讶了。LogBack 对 Log4J 进行了增强,并投入了 SLF4J 的怀抱,它还被作者认定为 Log4J 的继任者。

为什么叫做 Logback,我就不知道了,反正不要叫做 Brokeback 就行。这里是推崇用 Logback 替代 Log4J 的十几个理由:Reasons to prefer logback over log4j,说的大至是更快;好测试;与 SLF4J 关系紧;文档丰富;能自动加载配置文件;多个 JVM 写一个日志文件,或其他 I/O 错误时不影响程序执行;配置文件中加入条件控制;强大的日志过滤;更强的日志切分功能;自动压缩、删除日志文件;异常栈中更多的数据信息。 阅读全文 >>

Java SE6 中的新功能特性简介

1. String 新增了 isEmpty() 方法
     对于 String 不需要用 str.length() !=0  来判断

2. Arrays 新增 copyOf() 从已知数组中拷贝直接返回一个新的数组
     不再需要,先准备一个数组,然后用 System.arrayCopy() 来从旧数组往新数组中拷贝数据

3. Arrays 还新增了  copyOfRange() ,binarySearch(arr, fromIndex, toIndex, des) 方法,可在一个范围内查找。

4. 可以用 Calendar 实例的 getDisplayNames() 和 getDisplayName() 获得区域化的日期格式显示

5. System上新增 console() 获得 Console 实例,可用其的 printf()、readLine()、readPassword()、reader()、writer() 等方法,如 阅读全文 >>