:: 首页 ::  :: 联系 :: 订阅 订阅 :: 管理

公告

2010年2月10日

   个人介绍

  我是来自山西太原的一个无名卒子,从小喜欢计算机,而上大学的时候却阴差阳错的选了《信息管理》专业,学了很多计算机理论知识和统计学方面,业余时间就喜欢看书和玩游戏,上学期间就决定选择it这个行业,所以平时总是多实践,自己根据自己平时做笔记的情况让老爸印了几本我专用的试验本。平时就在图书馆做做笔记,晚上去机房实践,并总结到实践本上。大学最后一个寒假,很多同学都选择了打工,而我却选择了回家,选择在家进修asp.net,记得那个时候选择的是北大青鸟的教程。开了学就开始实施自己的毕业设计(因为我这个专业很多同学都选择了做调查问卷,而我却选择了做毕业设计),这个也为出来找工作铺了路。  毕业后,很快开始找工作,因为没有工作经验很多公司就不要,后来有幸进入太原新泰基网络公司,在技术部开始了我的IT生涯,可以说在技术部是进步最快的一个,平时下班我都在公司上博客园或者csdn上逛,或者下载webcast来看并实践,每天坚持两个小时,可随着时间慢慢在流失,我也发现了一个问题,想我这样老学习,而没有动手去实践到项目中,学的东西很快会忘记的,因在太原网络公司做的都是小企业性的网站,业务逻辑不外乎就是产品简介、新闻添加、产品管理、留言板等,慢慢就萌生了想跳槽的念头。2009年过完年给我们梁总说了我的想法,她还是很支持我的想法,后来订机票,就飞到广州这个大城市。   2月份那会北方还下雪,来广州这儿时穿的很厚,下了飞机就感觉腿上有虫子在腿上爬,那个热啊! 

  

  开始广州的工作生涯 

  来了广州就开始边看书边投简历和面试,因为没有大项目经验很难找到好点的工作,来的时候我就想先找个外包公司干,虽然辛苦点,但是学东西比较快,所以投简 历也就选这些小公司并是外包公司的投。记得是2月13号离开新泰基网络公司,2月17号到的广州,到3月13号在广州威郎科技公司上班,到今天时间也一年 多了,想吧在广州这一年多来的工作过程,和项目总结都放出来,希望大家给指导一下。

  刚进公司就进入BP项目组,这个项目是给“嘉实多”做的一个内部员工一个培训系统,主要功能模块有视频管理,试题管理,成绩管理,会员管理和权限管理,也是我第一次使用oracle数据库做开发,这个项目有我和另一个同事,主要还是我协助他来完成,因为更来公司也不会给你指派重要的任务,在他这个我熟悉了PD数据库设计,和Project进度管理软件,用了紧张的一个月时间,完成了这个项目的开发,并实施到客户公司,客户反馈很好,尾款很快就打给了公司。  做完这个项目后,根据公司安排很快就进入另一个项目组(HD),这个项目很大,是客户那边出策划图,我们在这边加程序,系统的大致流程是:用户注册会员,会员有很多类型(教练、宝贝、裁判、达人等),根据相应类型进入各注册页面,并每个类型有相应的操作权限,比如经理人可以创建赛事,裁判可以进入相应比赛,达人可以组织比赛等。可是这么大个系统却没有相应的文档进行管理,客户只根据他们提供几个页面,我们根据提供的一些页面加程序,根据页面的慢慢完善,程序也是被后来提供的页面改代码逻辑,那个乱啊,数据库也没有相应的文档,程序员也是根据自己的理解在数据库里加字段,且没有给每个字段有说明,进入这个项目期间,这个项目都做了11个月了,用之很乱,弃之又可惜,客户也是很不满意,来来回回的去客户哪里沟通也不下30次,客户最后没办法自己组织团队来开发他们的系统,我们却喜剧性的做了他们的技术支持,最后我们给他们做了几套主要用到的技术的解决方案才算付了第三期尾款了事,虽然这个项目只能以失败告终,却在我的心里打下深深的印记,不得不让我深思以后的工作中如何改进工作流程和方法。  

  HD项目总结  

  1、数据库文档:  使用了redgate旗下的软件sqldoc更新数据库字段说明,因为这个数据库都是程序员根据自己的需要加上去的,命名规则也不统一,别人很难理解。  生成脚本,并还生成PDM文件,放到源代码管理器中大家一起维护这个文档。  生成数据库帮助文档  

  2、代码书写:  定义了代码书写规范和命名规范。  

  3、代码注释,使用了ghostdoc,并为每个人定义自己的注释规则,即加快了注释速度,别人也可看懂你些的代码。  使用了resharper工具重构代码。  主要用到的技术点:  脏字过滤、全文分词搜索(hubble.net)、数据表分区、负载均衡(Nginx)、邮箱导入好友列表、摄像头拍照、视频转换等。  

  年前公司又接到个单子,是个于财务管理有关的系统(WL费用管理系统),是在他们现有的系统中加入费用管理的功能,更开始谈需求时,都是客户给我们讲,我们做笔记,并在做笔记的集成上再提出不理解的问题,这样沟通起来,总会出现理解错误的现象,比如对于客户来说是很简单的逻辑,可对于我们这些外行来说却不好理解。回来我们商量,根据我们现有的理解画出原型出来到客户谈需求,根据原型客户有提出问题,纠正了我们理解的错误,也让我们对这个系统的原型深一步了解。经过一个星期的沟通,和我们项目组人分工开始搭建环境,和设计数据库,并进一步在网上给客户沟通完善原型设计,并进行可能用到的技术点做demo测试,放到代码管理器里方便团队共享。但是老是感觉这样管理项目还是比较低效的,大家都是根据project中定的计划进行,但是计划总是赶不上变化,本来预计的时候感觉是很简单的功能,可实施起来并不完全是那么回事。

  思考中成长

  一直在想,如何完善项目管理,如何提供效率和代码质量呢?听大牛们说的那敏捷开发,可自己却没有实施经验,真的有点迷惘,Scrum你真的能解决我现在的现状吗?下来我想找个Scrum团队亲身体验一下,敏捷所带来的魅力,不要迷恋它,它只是个传说!  

  我信传说!  

  这段时间看《轻松Scrum之旅》,那种感觉真的很爽,先熟悉熟悉它的理念,慢慢深入吧!加油我的2010!

 

posted @ 2010-02-10 19:21 李海 阅读(102) 评论(0) 编辑

2010年1月18日

1、下载相应软件

Nginx Nginx软件

2、安装软件

安装nginx软件比如到目录C:\Nginx

3、实施部署

假设如下测试环境

测试主机:192.168.0.111 作为nginx服务器(nginx软件装在这台pc)

应用服务器一:192.168.0.119:91

应用服务器二:192.168.0.119:92

应用服务器三:192.168.0.254:80

配置nginx\conf\mynginx.conf文件如下

#使用哪个用户启动nginx 前面是用户,后面是组

#user www www;

#nginx工作的进程数量

worker_processes 2;

# [ debug | info | notice | warn | error | crit ] 错误日志的位置

error_log c:\\nginx\\logs\\error.log crit;

#进程号保存文件

pid c:\\nginx\\logs\\nginx.pid;

#最大文件描述符 ?有待继续整理.

worker_rlimit_nofile 51200;

events

{

# use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];

#use epoll; #使用epoll(linux2.6的高性能方式)

worker_connections 51200; #每个进程最大连接数(最大连接=连接数x进程数)

}

http

{

#文件扩展名与文件类型映射表

include mime.types;

#默认文件类型

default_type application/octet-stream;

#日志文件格式

log_format main '$remote_addr - $remote_user [$time_local] $request '

'"$status" $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

log_format download '$remote_addr - $remote_user [$time_local] '

'"$request" $status $bytes_sent '

'"$http_referer" "$http_user_agent" '

'"$http_range" "$sent_http_content_range"';

#默认编码

charset gb2312,utf-8;

server_names_hash_bucket_size 128;

#开启高效文件传输模式

sendfile on;

#以下两个选项用于防止网络阻塞 参考http://i.cn.yahoo.com/nesta2001zhang/blog/p_104/

tcp_nopush on;

tcp_nodelay on;

#长链接超时时间

keepalive_timeout 300;

#fastcgi连接超时时间,下面的看字面意思都能理解个大概了,就不解释了.

#fastcgi_connect_timeout 300;

#fastcgi_send_timeout 300;

#fastcgi_read_timeout 300;

#fastcgi_buffer_size 128k;

#fastcgi_buffers 4 256k;

#fastcgi_busy_buffers_size 256k;

#fastcgi_temp_file_write_size 256k;

# fastcgi_temp_path /dev/shm;

#打开gzip压缩

#gzip on;

#最小压缩文件大小

#gzip_min_length 1k;

#压缩缓冲区

#gzip_buffers 4 8k;

#压缩版本(默认1.1,前端为squid2.5使用1.0)

#gzip_http_version 1.1;

#压缩类型,默认就已经包含text/html 所以下面就不用再写了,当然写上去的话,也不会有问题,但是会有一个warn

#gzip_types text/plain application/x-javascript text/css text/html text/javascript application/xml;

#错误页面

#error_page 404 http://www.g.cn;

#error_page 403 http://www.g.cn;

#上传文件大小限制

#client_max_body_size 20m;

#设定请求缓

#client_header_buffer_size 16k;

#large_client_header_buffers 4 64k;

#设定负载均衡的服务器列表

#如果在同一台机器上,单独起4组独立的php-cgi进程(每组8个子进程),性能应该不如1组php-cgi进程(32个子进程),因为1组进程,eaccelerator的PHP二进制文件缓存是共享的,1组进程命中率较高。

#不过好处是,碰到某组的php假死的话,其他端口就可以接管了,我实测下来似乎发生502错误的概率降低了很多,或者说我这样配置以后还没有遇到

#负载切换使用的服务器网站IP

upstream mysvr.com {

#weigth参数表示权值,权值越高被分配到的几率越大

#本机上的Squid开启3128端口

#server 192.168.8.1:3128 ;

server 192.168.0.254:80 weight=2;

server 192.168.0.119:91 weight=2;

server 192.168.0.119:92 weight=2;

}

#下面开始虚拟主机的配置

server

{

listen 80;

server_name 192.168.0.111;

index default.aspx index.html Index.html index.htm index.php;

root C:\\Nginx\\html;

#if (-d $request_filename)

#{

# rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;

#}

#设定本虚拟主机的访问日志

access_log c:\\nginx\\logs\\access.log main;

#location ~* \.(asp|aspx|asa)$ {

# root C:\\Nginx\\html;

# index index.asp index.aspx;

# proxy_pass http://mysvr.com;

# proxy_set_header X-Real-IP $remote_addr;

# location ~ .*\.php?$

#{

# include fcgi.conf;

# fastcgi_pass 127.0.0.1:9000;

# fastcgi_index index.php;

# }

#如果访问 /img/*, /js/*, /css/* 资源,则直接取本地文件,不通过squid

#如果这些文件较多,不推荐这种方式,因为通过squid的缓存效果更好

#location ~ ^/(img|js|css)/ {

# root /var/htdocs/52crack;

# expires 24h;

#}

#对 "/" 启用负载均衡

location / {

proxy_pass http://mysvr.com;

proxy_redirect default;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

client_max_body_size 10m;

client_body_buffer_size 128k;

proxy_connect_timeout 90;

proxy_send_timeout 90;

proxy_read_timeout 90;

proxy_buffer_size 4k;

proxy_buffers 4 32k;

proxy_busy_buffers_size 64k;

proxy_temp_file_write_size 64k;

}

#设定查看Nginx状态的地址

#location /NginxStatus {

# stub_status on;

# access_log on;

# auth_basic "NginxStatus";

# auth_basic_user_file conf/htpasswd;

#}

}

}

#为什么kernel.shmmax这个要配置成134217728

#默认的不可以吗?你这个数字是怎么计算出来的啊?

#张宴 回复于 2008-9-2 08:49

#因为php.ini中配置了eaccelerator.shm_size="128",允许eaccelerator可使用的共享内存大小为128M。

#而 134217728bytes / 1024 / 1024 = 128MB

#在Linux下,单个进程的最大内存使用量受/proc/sys/kernel/shmmax中设置的数字限制(单位为字节),例如CentOS、 Redhat的shmmax默认值为33554432字节(33554432bytes/1024/1024=32MB)。

#临时更改该值:

#echo 字节数 > /proc/sys/kernel/shmmax

#按照以上方法更改,在每次重启系统时,该值会被自动还原。如果想永久更改,可以修改/etc/sysctl.conf文件,设置:

#kernel.shmmax = 字节数

#如果你的eaccelerator使用默认的32M共享内存,可以不修改此值。

运行nginx

在cmd窗口下定位到目录nginx

C:\Nginx>nginx -c conf\mynginx.conf

4、测试nginx

打开ie输入网址

clip_image002

再刷新ie

clip_image004

看见现在就简单实现了nginx的负载均衡

相关问题解答:

1、Q:如何停止nginx呢?

A:nginx –s stop

2、Q:在dos下如何查看nginx运行状态

A:在cmd下运行netstat –na

clip_image006

3、 Q:nginx能不能cookie共享,若我在应用服务器A登录,当通过nginx负载到应用服务器B时会不会提示我未登录呢?若用session呢,结果会怎么样?

A:nginx能cookie共享

clip_image002[1]

当在192.168.0.119:92登录后,刷新在192.168.0.254:80也提示登录

clip_image004[1]

posted @ 2010-01-18 13:14 李海 阅读(172) 评论(0) 编辑

2010年1月8日

大家平时肯定和数据库打交道不少,肯定也积累了不少自己的数据库脚本,可平时懒于整理,到用的时候有得花时间去找,实际上可以使用微软的模版功能

     打开视图-->模版资源管理器(chrl+alt+t)

     大家可以根据自己常用的sql进行分类并存储模版,再结合red gate sql prompt很快就会写出漂亮的sql语句

    qqqq

posted @ 2010-01-08 11:30 李海 阅读(103) 评论(0) 编辑

1、准备工作下载相应文件

Hubble.net安装程序

相应源码 这个源码里有eaglet做的demo

相应帮助的视频文件第一集)(第二集)(第三集)(第四集

2、部署运行环境

1)、安装Hubble.net程序

解压Hubble.net压缩包,并双击安装setup.exe文件。

安装成功后在window服务列表里就存在以下服务

clip_image002

在任务管理器存在以下两个进程

clip_image004

clip_image006

2)、建立Hubble.net数据库和表

打开服务器电脑D盘并建立文件夹Test\News这个文件夹用来保存全文搜索文件

打开开始à程序àHubble.netà QueryAnalyzer程序

如图所示

clip_image008

运行建立数据库的T-SFQL脚本

exec sp_adddatabase 'News', 'd:\test\news\', 'SQLSERVER2005', 'Data Source=(local);Initial Catalog=News;Integrated Security=True';

--News,表示建立的Hubble.net的数据库,d:\test\news\保存全文索引的文件路径,SqlServer2005服务器sql的版本,最后一个参数表示链接字符串。

建立需要全文搜索的表

exec sp_droptable 'news';

--若news表存在则删除

Create table News

(

Title nvarchar(max) Tokenized Analyzer 'PanGuSegment' NOT NULL Default '',

Content nvarchar(max) Tokenized Analyzer 'PanGuSegment' NOT NULL Default '',

Time Date Untokenized NOT NULL Default '1990-01-01',

Url nvarchar(max) NULL

);

--使用盘古分词对字段title,content进行全文搜索,并同时建立字段time和链接地址url

打开SQL Server Management Studio就可以看见建立的news数据库如图所示

导入需要全文搜索的数据(或者在程序中插入新闻时向hubble.net插入记录)

3、在项目中应用

(1)、配置webconfig文件

<connectionStrings>

<add name="News" connectionString="Data Source=192.168.0.109; uid=ljj;pwd=123456;Initial Catalog=News;" providerName="Hubble.SQLClient"/>

</connectionStrings>

(2)、在Web项目中的bin中放入相应的动态的链接库文件

clip_image010

(3)、引入FullTextSearch项目,具体代码可根据用户表结构自行修改

clip_image012

(4)、在bin引入FullTextSearch项目

(5)、建立搜索页Search.aspx具体代码请查看测试项目

4、项目预览

clip_image013

5、常见问题解答

1、Q:提示与关系数据库没连接上,我又重启服务,又提拒绝连接?

A:可能是你本机的SQLSERVER 启动比较慢造成。
新版本中我把连接数据库超时时间改为了120秒(默认是15秒),启动时尝试连接5次。这样应该会稳定很多。

2、Q:我现在已经有个hubblenet数据库,若局域网内任何人只要装上hubblenet软件都可以连接这个数据库,并进行操作,这样会出现误操作?

A:在防火墙上设置只有你本机或者你指定的机器可以访问 7523端口就可以了。

3、Q:我现在有表news,和product,表结构差不多,现在t-sfql不支持多个表联合查询,不知道这个问题该怎么解决?

A:如果两个表的表结构相同 0.8 版本将提供多实例方案可以进行整合。真正的多表关联要到更后的版本实现。

4、Q:这个项目是开源的吗?开源的网址是什么?

A:是开源的,http://hubbledotnet.codeplex.com

5、Q:这个软件查询用的不是T-Sql语句,而是T-Sfql,这个与传统的T-sql有什么不同?

A:T-SFQL (Transact-Structured Full-text Query Language) 是在T-SQL 标准基础上衍生出来的结构化全文查询语言。2009年由Hubble.net 提出,语言全文数据库的查询和管理。

T-SFQL 0.1 版本为T-SFQL 语言推出的第一个版本。该版本只提供基本的“增删改查”功能。其他功能将逐渐在后续版本中提供。详细请查看

http://www.cnblogs.com/eaglet/archive/2009/04/27/1444778.html

6、Q:这个软件是收费的吗?为什么提示让我输入我的邮箱和序列号?

A:注册的目的不是为了收费,而是为了统计一下使用的人数。

您可以到下面链接注册

http://www.hubbledotnet.com/key.aspx

填写完所有信息后,点击Submit 按钮,您的installation key  将被发送到您输入的email 地址。如果你没有收到,请检查一下是不是在垃圾邮件里面。如果垃圾邮件中也没有,可以再注册一次,网站会重新发送一遍给你。

如果您访问这个页面有困难,您可以发送如下信息到 Hubble.net@gmail.com 我们将帮您注册。

您用于注册的 Email 地址

您所在国家

您的姓名,可以用网名。

我们推荐您使用第一种方法注册,除非您访问那个网站确实有困难。

7、Q:如何查看我我的hubble版本,如何在hubble查看分词结果?

A:exec sp_testanalyzer 'PanguSegment', '李晶晶'

clip_image015

exec SP_Version

clip_image017

更具体的帮助请查看http://www.cnblogs.com/eaglet/tag/Hubble/博客,这儿只是列出我在实施过程中的过程,和遇到的问题解答

posted @ 2010-01-08 11:07 李海 阅读(517) 评论(1) 编辑

生成数据库文档思路

1、由来

相信刚刚接手别人项目的兄弟都碰到这种情况,直接给你个数据库,让你先看数据库结构,可数据库中的数据表或字段并没有注释,或者标注不全,相应的pdm文档也没有(虽然pdm文档可以通过sql 脚本逆向生成,再在pdm中写上name的值),这儿只是把我接实现过程给列出来,大家有好的想法不如也提出来,共同进步嘛

这儿大家就别给我讨论这种情况不可能存在,因为专业的软件公司都有相应的DBA去给数据库建模,不过现在有很多中小软件公司建立数据库都不那么专业,没有完整的数据库文档

比如就像我现在做测试的这个数据库

clip_image002

clip_image004

看见了吧,上面的数据表和字段都没有注释(Description),若直接让你接手这个项目,还真有点晕,不知道每个表用来干什么,每个字段是什么意思。(这儿只是举个例子表设计的比较简单)

2、准备步骤

下载redgate 软件sql doc2关于下载地址网上有很多

3、打开sql doc2软件,并连接到我们的数据库,在上图点击“edit”按钮,输入这个描述内容,完后更新到数据库。

clip_image006

clip_image008

这下数据库表和字段就有表述了,这还不够,再通过sqldoc2导出chm文件,方便团队成员查阅,因为团队知识共享太重要了,不然你做你的,他做他的,大家谈何交流,如何进步,如何更高效的完成项目呢?也许有人会说这样还不够,我想生成pdm文档,具体的逆向生成过程我就不说了,我这儿只截生成后的效果图

clip_image010

但是我想显示出前面是name后面是code来

好的那就在pd里运行vbs脚本(ctrl+shift+x)

Option Explicit

ValidationMode = True

InteractiveMode = im_Batch

Dim mdl ' the current model

' get the current active model

Set mdl = ActiveModel

If (mdl Is Nothing) Then

MsgBox "There is no current Model "

ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then

MsgBox "The current model is not an Physical Data model. "

Else

ProcessFolder mdl

End If

' This routine copy name into comment for each table, each column and each view

' of the current folder

Private sub ProcessFolder(folder)

Dim Tab 'running table

for each Tab in folder.tables

if not tab.isShortcut then

tab.name = tab.comment

Dim col ' running column

for each col in tab.columns

col.Stereotype =col.comment

col.name= col.comment

next

end if

next

end sub

clip_image012

再选择toolsàModel optionsà在打开的对话框里选择Naming Convention,在右边display区选择code。

clip_image014

这样在pdm中就会同时显示name和code了。

好了这样数据库的文档就好了,有chm文档和pdm文档,新进入团队成员也就不会因为不明白字段是什么意思再打扰老员工,老员工也不会因为老被打扰做自己的事情而烦心了,看来数据库文档真的很重要哦

PowerDesigner 中将Comment(注释)及Name(名称)内容互相COPY的VBS代码

2010对自己说加油!

posted @ 2010-01-08 10:19 李海 阅读(246) 评论(0) 编辑

2010年1月6日

1、VSS  源代码管理器    

2、reflector    dll反编译
3、Acunetix WVS Reporter 6  网站安全检测、注入漏洞
扫描 Acunetix Web Vulnerability Scanner 6
4、PLSQL Developer   oraclesql编辑器
5、GhostDoc2   把注释生成chm文件  vs插件
     PrettyCode.Print for .NET 2.0 (VS2008 and VS2005)  .net漂亮代码打印软件
6、WebDeploymentSetup    合并dll.msi
7、microsoft Project professional项目进度管理软件
8、 如何使用Office2003来打开Docx、xlsb、xlsx等文件
office 2003打开2007版本的Docx文件,全是乱码。只需要安装一个补丁即可,名称为O2007Cnv.exe,链接为:http://www.microsoft.com/downloads/details.aspx?FamilyId=941B3470-3AE9-4AEE-8F43-C6BB74CD1466&displaylang=en
注 意安装之后重启机器,问题基本就解决了,现在就可以识别出docx、docm格式的Word 2007文档,pptx、pptm、potx、potm、ppsx、ppsm格式的PowerPoint 2007文档,xlsb、xlsx、xlsm、xltx、xltm格式的Excel 2007文档等。
9、mindmanger  画思维导图
10、Adobe.Captivate
制作flash帮助文档,也可以做项目演示文档.
11、[尚书七号(文字识别)ocr已正式版 ]
开始时间:[2008年5月26日]
到期时间:[2008年5月26日]
备注:
shocr70.zip

尚书七号(文字识别)
本软件系统是应用OCR(Optical Character Recognition)技术,为满足书籍、报刊杂志、报表票据、公文档案等录入需求而设计的软件系统。 目前,许多信息资料需要转化成电子文档以便于各种应用及管理,但因信息数字化处理的方式落后,不但费时费力,而且资金耗费巨大,造成了大量文档资料的积压,因此急需一种快速高效的软件系统来满足这种海量录入需求。本软件系统正是适用于个人、小型图书馆、小型档案馆、小型企业进行大规模文档输入、图书翻印、大量资料电子化的软件系统。

识别字符 简体字符集:国标GB2312-80的全部一、二级汉字6800多个。纯英文字符集。 简繁字集:除了简体汉字外,还可以混识台湾繁体字5400多个以及香港繁体字和GBK汉字。

识别字体种类 能识别宋体、仿宋、楷、黑、魏碑、隶书、圆体、行楷等一百多种字体,并支持多种字体混排。

识别字号 初号 小六号字体。

表格识别 可以自动判断、拆分、识别和还原各种通用型印刷体表格。

可支持繁体WINDOWS系统
12、    httpwatch  ie插件     YSlow yahoo的网页性能检测.
   keyconfig 自定义火狐快捷键   FireGestures 1.5.1  火狐手势 Nightly Tester Tools 2.0.2 兼容火狐插件

http://www.downloadhelper.net/install.php  视频插件 downloadhelper
 
13、数据库单元测试anydbtest xml编辑器xmlpad 文件比较winmerge
http://www.anydbtest.com/download.html#DownloadAnyDbTest
 
14、ANTS_Profiler  ANTS Profiler是一个检测基于.Net Framework的任何语言开发出的应用程序的代码性能的工具。她可以通过记录每行代码花费的时间,来帮助你优化程序的执行,而且可以用很多种格式来探测应用程序中效率不好的区域。ANTS Profiler还可以分析应用程序的内存使用状况,她就是通过记录每个对象分配的内存空间大小,来提供很多种报告样式给开着这察看哪个对象或者类占用了最多的内存,从而可以帮助你优化内存的使用。
15、 SQLyog这款工具  推荐一款 MySQL 图形界面工具
16、缺陷管理系统. 极易 适合中国人使用的bug管理系统
17、项目压力测试  
was Web Application Stress Tool(WAS,Web应用负载测试工具)
http://servers.pconline.com.cn/skills/0709/1119109_2.html
18、Scriptio
Scriptio微软提供的sql脚本生成工具.zip
19、Sandcastle项目是一款非常优秀的Visual Studio文档生成工具,由于它的出现也导致了NDoc项目停止了开发
20、代码重构,代码编写时发现错误
   Resharper 若不是2G内存,还是劝你别用了

21、Sql Prompt  sql自动代码提示

      Sql Compare  8数据结构比较

     Sql data Compare 7  数据库之间数据比较

     Sql doc 2  生成数据库帮助文档,还可以编辑数据表的注释

22、数据库建模   power Desiger  

23、微软的mesh  这个东西真的不错,我可以再公司和家里同时共享文件

24、evernote  平时写文档我都放到这个里面,非常推荐,可以离线编辑,当能联网时会自动更新到网上

 

为了发扬共享精神我会慢慢把平时记录下的东西放到博客里 ,也希望大家共同学习和进步,相应软件下载地址大家可以在GG里搜索

大家有什么好的软件不防也推荐推荐,我平时用这些软件做起事来真的是事半功倍哦

 


posted @ 2010-01-06 17:08 李海 阅读(313) 评论(6) 编辑

1、建立脏字表

USE [hongdongwebdb]

GO

/****** 对象: Table [dbo].[DirtyList]    脚本日期: 01/04/2010 16:05:52 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[DirtyList](

    [DirtyList] [text] COLLATE Chinese_PRC_CI_AS NOT NULL

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

 

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'脏字字典' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'DirtyList', @level2type=N'COLUMN', @level2name=N'DirtyList'

 

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N' 脏字字典' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'DirtyList'

数据表内容请打开附加查看

2、部署脏字过滤项目

先打开项目,右击项目选择属性,在属性页配置过滤要过滤脏字的数据库


选择完后右击项目点击部署就部署到相应的数据库。

若部署成功的话会在数据库以下图示位置看到FilterDirty函数。

3、根据要过滤的表和字段写相应的触发器

   以评论表comment为例,假如要过滤字段titlecontent字段书写触发器代码如下:

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go

 

CREATE TRIGGER [TR_Blog_Journal_Comment_Filter] ON [dbo].[Comment]

    FOR UPDATE, INSERT

AS

    DECLARE @temp NVARCHAR(MAX)

    DECLARE @ID INT

    SELECT @temp = dirtylist

    FROM    dirtylist    

    SELECT @ID = ID

    FROM    InserteD     

    UPDATE dbo.Comment

SET     Content = dbo.filterdirty(ISNULL(Contents, ''), @temp)

        Title = dbo.filterdirty(ISNULL(Title, ''), @temp)

    WHERE   ID = @ID 

这样在向数据库中添加有脏字记录的时候就会把脏字替换成*

4、关于sql数据库上部署程序集

--开启数据库CLR功能

EXEC sp_configure 'show advanced options', '1' ;

go

RECONFIGURE ;

go

EXEC sp_configure 'clr enabled', '1'

go

RECONFIGURE ;

EXEC sp_configure 'show advanced options', '1' ;

go

 

 

 

--判断是否存在此程序集,若存在则删除

IF EXISTS ( SELECT *

            FROM    sys.assemblies

            WHERE   NAME = 'SqlClassLibrary' )

    BEGIN

            --删除程序集之前先判断此程序集是否被函数引用

        IF ( EXISTS ( SELECT    *

                      FROM      sysobjects

                      WHERE     TYPE = 'fs'

                                AND NAME = 'FilterDirty' ) )

            DROP FUNCTION   [FilterDirty]           

        DROP ASSEMBLY [SqlClassLibrary]             

    END          

GO

--给相应数据库注册程序集

CREATE ASSEMBLY [SqlClassLibrary] --程序集的位置

    FROM 'F:\cb\脏字过滤方案\SqlClassLibrary.dll'

--程序集所执行的代码将无法访问外部系统资源

    WITH PERMISSION_SET = SAFE  

GO

 

 

--建立函数若存在此函数则删除

IF ( EXISTS ( SELECT    *

              FROM      sysobjects

              WHERE     TYPE = 'fs'

                        AND NAME = 'FilterDirty' ) )

    DROP FUNCTION   [FilterDirty]

GO

 

CREATE FUNCTION [dbo].[FilterDirty]

    (

      @input [nvarchar](MAX),

      @filterDirty [nvarchar](MAX)

    )

RETURNS [nvarchar](4000)

    WITH EXECUTE AS CALLER

AS EXTERNAL NAME

    [SqlClassLibrary].[UserDefinedFunctions].[FilterDirty]

GO

相关源码下载

posted @ 2010-01-06 16:26 李海 阅读(494) 评论(0) 编辑

2008年1月3日

技术就好像一片汪洋大海,越深入越望不到边际。就拿自己的体验来说吧,2000年的时候在学校搞ASP,觉得网页开发就是这么简单,把数据库中的数据格式化一下显示在页面上,把用户的输入组装成添加删除和修改的SQL提交到数据库中去。几年后的今天,我对自己了解或听说过的ASP.NET相关(注意:仅仅是ASP.NET或者说网站制作相关)技术列了一下:




   
在这些语言、技术、工具、理念中,每一项都能扩展出很多还要细化的技术,每一项要达到熟悉的程度可能都会花去一年的时间,如果这些都要达到熟悉的话,大概也就快退休了。不但如此,每一个技术都在飞速发展,今年语言到了明年就有更简单的语法,今年的技术到了明年就有更好的技术来替代,今年的工具到明年已经面目全非,今年的理念到了明年已不再流行。

或许你现在:

l         在为面试而去搜索接口和抽象类的区别;

l         在为新技术来不及学习而烦恼;

l         在为看不懂高深的技术文章而烦恼;

l         在为项目不能提高自己的编码水平而发愁;

l         …………

我觉得:

l         不管做什么,学什么,一要心态好,二要态度好。所谓心态好就是不要着急、不用担心;所谓态度好是多分享、多讨论、学出自己的心得。分享的意义是很大的,在分享之后的认知水平往往比分享之前的高,而且在很多时候分享给别人1点,别人能回报给你2点。有些人在团队中不愿意分享,怕团队中的其它人水平提升了影响到自己的地位,其实这种想法是没有什么道理的,也是对自己不利的。有些人又在羡慕别人的技术NB,崇拜高手,为自己的技术差感到烦恼,如果你对自己信心又有什么技术是花时间学不到的那?

l         从学习的内容上来说,要坚持两个原则,如果你没有时间的话,那么学新技术不如学基础、学应用不如学思想。举例来说,如果你只熟悉C#的基本语法的话,那么学好C#这个语言比学会编写留言本更有意义,如果你关注MVC、ORM的话,那么学习它们的思想比学会使用MONORAIL以及NHIBERNMATE更好。技术虽然一直在变,但是越是基础和越是抽象的技术变化越慢,越是偏向应用越是具体的技术变化越是快,从性价比上说,学习基础知识性价比更高。再举一个直白的例子,DIY电脑的时候,在显示器上多花费500元的意义一定比在显卡上多花费500元的意义大,而就是有些人宁可在显卡上多花费500元。在很多大型软件公司,招聘的时候只看人(看人品、看聪明程度、看态度)不看技术的,因为它们需要的是能快速发展,适应企业文化的人,而不需要你那些所谓的精通和熟悉。

l         不要过于专著于技术,这里的技术指工作中用于开发的技术。在几年之后,当你只有.NET可以和你的孩子分享的话,是不是太可悲了。在软件行业,技术虽然一定程度决定了薪水、决定了职位,但是我们的生活并不是100%是工作,有时间为技术而发愁,为何不综合提升自己的其它能力呢?并且随着职位的上升,往往沟通能力、经济知识以及文学艺术修养比技术显得更重要,这个时候叹息自己过于专著技术往往为时过晚。

l         虽然国内很多公司的技术层次不同和文化也有差异,但是在大多数的时候公司或别人能教给你的东西很少,要学东西还是要靠自己主动。有的人一直觉得在公司学不到东西,想换一个环境,往往他换了一个环境之后发现还是学不到什么东西。国内的项目大多还是急功近利的,不要期望有这么多微软研究院,空闲的时间踏踏实实学一些东西比到处找工作强很多,做项目的时候多分享一下自己的心得给团队成员比抱怨团队技术实力差强很多。

l         在工作中,要始终提醒自己“谦恭”、“真诚”和“规矩”,谦恭真诚对别人,把规矩留给自己。技术再强也要“谦恭”,离开了“谦恭”的技术就会失去光芒,社会再险恶也要“真诚”,一切虚伪会在“真”诚面前低头,职位再高也要“规矩”(不迟到,不早退,以身作则),否则再大的权力也只能变成人员的流失。如果能做到这六个子,那么无论你的技术怎么样,无论你到哪里都会得到领导的重用,在事业上有所发展。

    现在的你不再:

l         为面试而去搜索接口和抽象类的区别,而是在面试的时候告诉考官你并不知道它们之间的区别,但是愿意在一个月内系统学习面向对象的知识;

l         为新技术来不及学习而烦恼,而是明确了自己最需要学习的技术,一边学习一边分享;

l         为看不懂高深的技术文章而烦恼,而是拿起《C#高级编程》踏踏实实从头到底边阅读边做试验;

l         为项目不能提高自己的编码水平而发愁,而是在进度允许的情况下尽可能让项目变得可扩展、可维护以及高效;

l         …………

看到身边的一些人为技术所累,在技术的海洋中航行的很辛苦,因此有了本文。本文的主要目的是提醒大家找到方向,时不时回岸边休息一下,思考一下新的航向,不要迷失在技术的海洋中让自己筋疲力尽,在技术之外的有很多东西的意义远大于技术,请大家踊跃讨论…………

更新(本文或许过于杂乱,总结一下观点):

l         学习靠自己,不要期望别人教你什么,学习要主动;

l         不管水平高低,不要看不起自己,也不能看不起别人,学习要心态好;

l         不能不思进取,也不用让自己为技术所累,给自己多一点技术之外的时间;

l         如果时间不充裕,优先考虑学习基础的内容,同时也可以多关注一些新的思想;

l         如果别人能从你这里学到知识的话,那么你自己也一定学到了知识,请坚持分享

posted @ 2008-01-03 20:00 李海 阅读(98) 评论(1) 编辑

2008年1月2日

摘要: 刚刚走上社会的年轻人,充满了蓄势待发的豪情、青春的朝气、前卫的思想,梦想着丰富的待遇和轰轰烈烈的事业。可是,社会毕竟是一所包罗万象、喧嚣复杂的大学校,这里没有寒暑假,拒绝虚假和肤浅,更拒绝空想和庸碌,难以预告何时开课何时放学。  如何在涉世之初少走弯路,有一个好的开端,开始一番成功的事业?以下是一些先行者积累的10条有益的涉世忠告。好好地遵循、把握这些忠告和建议吧,比起所学的课堂课程来,它毫不逊色...阅读全文

posted @ 2008-01-02 16:46 李海 阅读(81) 评论(0) 编辑