RSS
  • 首页
  • 关于

2010年3月 的文章存档

为NetBeans添加Git支持

三月 29, 2010 by admin | 0 Comment »

说明:以下操作在NetBeans 6.8下进行,不同版本可能会有细微的差别。

Git logo
什么是Git?
Git 是 Linux 的创始人 Linus Torvalds 为了帮助管理 Linux® 内核开发而开发的一个开放源码的版本控制软件。我们可以自己下载这个软件用来管理自己的软件开发项目。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracing)能力。

如何安装Git?
Git最初是为了Linux而生,所以一开始并不能直接在Windows下使用。
但是好在Git的开发者们并没有忘记Windows下的程序员,有个名为msysgit开源项目提供了支持:

http://code.google.com/p/msysgit/

访问以下地址获取msysgit的最新版本:

http://code.google.com/p/msysgit/downloads/list

安装过程很简单,就不做过多叙述了。安装完成后我们会发现系统右键菜单会增加几个与Git有关的项目。
Git主要是命令行工具,通过命令行来进行管理,当然也有Windows下的GUI工具如TortoiseGit,但这些都不是本文要叙述的重点。

集成到NetBeans当中
下面叙述一下如何在NetBeans中集成Git支持。
众所周知NetBeans是一个非常优秀而且是开源的IDE,支持Java/PHP/Ruby等多种主流语言的开发,我主要用来开发PHP项目。默认情况下NetBeans已经内置了Kenai、CVS、Subversion、Mecurial等团队开发工具的支持,现在我们要为他添加Git的支持。
开源项目NbGit是一款NetBeans插件,提供了Git支持,因此首先必须得到NbGit的最新版本:

http://code.google.com/p/nbgit/downloads/list

选择下载扩展名为.nbm的插件即可。然后打开NetBeans,依次选择“工具”->“插件”->“已下载”->“添加插件”,然后选中我们刚刚下载到的nbgit-0.3.nbm文件,然后安装即可。
图1 安装NbGit
需要说明的是安装过程中会有一个未签名的警告,不用管它,单击“继续”来安装它。稍等片刻即可安装完成。
图2 警告
此时再打开NetBeans的“团队开发”菜单,我们会发现多了Git这个选项,这就说明已经安装成功。
图3 菜单

如何使用
我们打开“团队开发”->“Git”->“Clone Other”即可克隆一份repository。同样,项目的右键菜单中也有相应的命令可供使用。
图4 Git菜单命令


PHP | Tags: Git, NetBeans, PHP


ASP .Net学习笔记之验证码实现

三月 24, 2010 by admin | 0 Comment »

最新开始学习ASP .Net,因为之前熟悉的是类C的编程语言,所以熟悉起来倒还没太多难度。下面要讲的是Web开发中经常要用到的验证码,先说一说如何用C#来实现它。
我们通常说的验证码,也可以称为CAPTCHA,也就是全自动区分计算机和人类的测试(CAPTCHA, Completely Automated Public Test to tell Computers and Humans Apart),是一种区分用户是计算机和人的公共全自动程序。在CAPTCHA测试中,作为服务器的计算机会自动生成一个问题由用户来解答。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。CAPTCHA目前广泛用于网站的留言板,许多留言板为防止有人利用计算机程序大量在留言板上张贴广告或其他垃圾信息,因此会放置CAPTCHA要求留言者必需输入图片上所显示的文数字或是算术题才可完成留言。而一些网络上的交易系统(如订票系统、网络银行)也为避免被计算机程序以暴力法大量尝试交易也会有CAPTCHA的机制。

实现思路:
1.随机生成一个固定长度的字符串,里面可以包含数字、字母甚至汉字都可以,存入一个Session变量中;
2.利用C#的图形相关类来绘制图片,显示在网页上;
3.将用户输入的内容与前面的Session变量进行比对;
下面是Captcha.aspx.cs的内容:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Drawing;
 
namespace WebApplication2
{
    public partial class Captcha : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string verifyCode = GetRandomString(4);
            this.CreateCaptcha(verifyCode);
            Session["verifyCode"] = verifyCode;
        }
 
        ///
        /// 产生一定长度的随机字符串
        ///
        ///
 
        ///
        private string GetRandomString(int length)
        {
            string[] characters = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", 
 
"N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
            int charactersLength = characters.Length;
            Random rd = new Random();
            string randomString = "";
            int indexNum = 0;
            for (int i = 0; i < length; i++)
            {
                indexNum = rd.Next(0, charactersLength - 1);    //随机产生索引值
                randomString += characters[indexNum];     //根据索引值取出字符数组中的字符
            }
            return randomString;
        }
 
        ///
        /// 生成图片
        ///
        ///
 
        private void CreateCaptcha(string checkCode)
        {
            if (checkCode == null || checkCode.Trim() == String.Empty)
                return;
 
            System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 13.5)), 22);
            Graphics g = Graphics.FromImage(image);
 
            try
            {
                //生成随机生成器
                Random random = new Random();
 
                //清空图片背景色
                g.Clear(Color.White);
 
                //画图片的背景噪音线
                for (int i = 0; i < 25; i++)
                {
                    int x1 = random.Next(image.Width);
                    int x2 = random.Next(image.Width);
                    int y1 = random.Next(image.Height);
                    int y2 = random.Next(image.Height);
 
                    g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
                }
 
                Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold /*| System.Drawing.FontStyle.Italic 
 
*/));
                System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new 
 
Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);
                g.DrawString(checkCode, font, brush, 2, 2);
 
                //画图片的前景噪音点
                for (int i = 0; i < 100; i++)
                {
                    int x = random.Next(image.Width);
                    int y = random.Next(image.Height);
 
                    image.SetPixel(x, y, Color.FromArgb(random.Next()));
                }
 
                //画图片的边框线
                g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
 
                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
                Response.ClearContent();
                Response.ContentType = "image/Gif";
                Response.BinaryWrite(ms.ToArray());
            }
            finally
            {
                g.Dispose();
                image.Dispose();
            }
        }
 
    }
}

怎么调用呢?在我们想要显示验证码的地方,通过img标签即可调用:

<img id="CodeImg" src="Captcha.aspx" alt="" />

注意这里的src属性必须填写验证码生成程序所对应的aspx页面地址,可以是相对地址也可以是绝对地址。
如果我们要加以完善,也就是万一遇到验证码显示不清楚的情况下,给用户提供刷新更换验证码的功能,实现起来也很简单:

<a onclick="document.getElementById('CodeImg').src='Captcha.aspx?tmp='+Math.random()" href="#">单击此处刷新验证码</a>

注意:这里的CodeImg对应的是你前面img标签的ID,必须要一致。
加上tmp=’+Math.random()这一参数的作用是避免缓存。

实际效果就是这样:

图1

图1


ASP .Net | Tags: ASP .Net, C#, CAPTCHA, 验证码


IT狂人的博客

  • 声明

    本博文章及相关作品(包括但不限于文字、图片),除特别说明为转载外,均属本人原创,依据《国家知识产权法》、《著作权法》和《信息网络传播权保护条例》,原创知识产权、版权均为本人所有,本人享有著作权,并受法律保护。

    文章欢迎转载,但请事先与本人联系:email
    未经本人许可,任何人不得转载或使用整体或任何部分的内容。未尽事宜,依据相关法律法规处理。

  • 分类目录

    • ASP .Net (1)
    • CodeIgniter (8)
    • PHP (10)
    • Web (7)
    • 未分类 (1)
    • 杂谈 (4)
    • 译文 (7)
    • 音乐&电影 (1)
  • 最近文章

    • Discuz上传图片时出现“无效的图片文件”提示的解决方案
    • discuz定时发帖的另类实现
    • 使用PHP的Glob()函数来遍历文件夹
    • [译]PHP面向对象入门
    • 原来如此
    • 使用htaccess来增强WordPress安全性
    • 归来
    • 因4740G而想起的事
    • 选择Web开发框架时需要考虑的15个重要因素
    • 为NetBeans添加Git支持
  • 文章归档

    • 2010 年 八月 (2)
    • 2010 年 七月 (5)
    • 2010 年 五月 (1)
    • 2010 年 四月 (1)
    • 2010 年 三月 (2)
    • 2010 年 二月 (1)
    • 2010 年 一月 (2)
    • 2009 年 十二月 (1)
    • 2009 年 十月 (2)
    • 2009 年 九月 (3)
    • 2009 年 八月 (10)
  • 标签

    API AVC CakePHP CHM CodeIgniter CURD discuz Django DroidSansFallback eaccelerator footer Framework Fran Healy Git helper IT Kohana MVC MVP MYSQL NetBeans Oasis ORM pChart pdf PHP phpMyAdmin Ruby tcpdf techified time Travis Twitter Web windows Wordpress XML Zend 传记 外链 大写 孔乙己 框架 盗链 过滤
  •  

    2010 三月
    一 二 三 四 五 六 日
    « 二   四 »
    1234567
    891011121314
    15161718192021
    22232425262728
    293031  
  • Playlist


  • 近期评论

    • admin 在 [译文]在NetBeans IDE中增加CodeIgniter代码提示 上的评论
    • admin 在 使用TCPDF输出完美的中文PDF文档 上的评论
    • admin 在 使用TCPDF输出完美的中文PDF文档 上的评论
    • Macca 在 使用TCPDF输出完美的中文PDF文档 上的评论
    • Macca 在 使用TCPDF输出完美的中文PDF文档 上的评论
  • 链接

    • cnBeta.COM
    • CodeIgniter 中国
    • Gray && Simple
    • jQuery中文社区
    • Lily Allen
    • Mtime时光网
    • W3School
    • 小众软件
    • 破烂熊乐园
    • 韩寒
Copyright © 2010 IT狂人的博客 All Rights Reserved. XHTML CSS THEME by I SOFTWARE REVIEWS