My Github

随笔分类 -  【017】自己动手写东东

网络爬虫?小游戏?Web服务器?高大上的东西自己动手写写试试
摘要:GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub。作为开源代码库以及版本控制系统,GitHub拥有140多万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。说来惭愧,我注册GitHub账号都很久了,但是却一直没有去好好地弄一下我的Profile页,于是趁此机会系统学习一下,以后要好好打理一下我的GitHub,也希望大家都能把GitHub用起来! 阅读全文
posted @ 2016-10-25 02:27 EdisonZhou 阅读(17243) 评论(36) 推荐(138) 编辑
摘要:本文首先回顾了ASP.NET MVC经历的管道事件概览,然后针对其中核心的“路由系统”和“MvcHandler”进行了实现,并对其进行了一定封装,还实现了ContentResult、JsonResult和ViewResult,最终成为了一个可以使用的轻量级ASP.NET MVC框架。借助此框架,可以在最小化的引用环境(System和System.Web)中进行类似ASP.NET MVC的开发方式。最后,给出了这个小MVC框架的源码下载地址,供各位园友学习和指正。 阅读全文
posted @ 2016-03-09 02:23 EdisonZhou 阅读(14822) 评论(20) 推荐(100) 编辑
摘要:本文首先回顾了一下MVC的关键概念,并从一个“纯净”的ASP.NET Web空项目开始一步一步构建一个类似于MVC的应用程序,通过单一处理入口的伪静态方式与模拟路由表的方式进行了简单地实现,并进行了测试。此次实验,核心就在于获取路由数据,指定处理程序,也就是理解并模拟路由机制。路由模块就是一个很简单的HttpModule,而ASP.NET MVC帮我们实现了UrlRoutingModule从而使我们轻松实现了路由机制。 阅读全文
posted @ 2016-02-24 01:53 EdisonZhou 阅读(11612) 评论(9) 推荐(24) 编辑
摘要: 本篇是我学习反射的一个应用小场景而做的学习笔记,主要是一个小的总结,并对各个步骤的记录,以便将来回顾。实现插件机制的原理很简单:一:定义插件接口;二:实现插件接口并建立不同工项目,使其在生成时生成不同的DLL;三:主程序运行时根据接口名利用反射对插件目录的DLL进行加载,加载完成后便可以使用插件接口定义的方法或属性; 阅读全文
posted @ 2015-12-08 01:28 EdisonZhou 阅读(4066) 评论(5) 推荐(14) 编辑
摘要:dotNet简而言之,就是孝顺的小王想开发一个万能程序,可以一键式打开常见的计算机资料,例如:文档、图片和影音文件等,只需要安装一个程序就可以免去其他应用文件的管理(你让其他耗费了巨资打造的软件情何以堪...),于是就有了这个万能加载器(FileLoader)。初步分析之后,小王总结了这个万能加载器的功能点如下:能够打开常见文档类资料,能够打开常见图片类资料,能够打开常见音频类资料等。 阅读全文
posted @ 2015-09-05 03:12 EdisonZhou 阅读(2228) 评论(7) 推荐(11) 编辑
摘要:最近看了看一个C#游戏开发的公开课,在该公开课中使用面向对象思想与Unity3D游戏开发思想结合的方式,对一个简单的赛车游戏场景进行了实现。原本在C#中很方便地就可以完成的一个小场景,使用Unity3D的设计思想(即一切游戏对象皆空对象,拖拽组件才使其具有了活力)来实现却需要花费大量时间与精力,究竟它神奇在什么地方?本文通过实现这个小例子来看看。 阅读全文
posted @ 2015-07-08 01:23 EdisonZhou 阅读(12926) 评论(2) 推荐(4) 编辑
摘要:每当我们将开发好的ASP.NET网站部署到IIS服务器中,在浏览器正常浏览页面时,可曾想过Web服务器是怎么工作的,其原理是什么?“纸上得来终觉浅,绝知此事要躬行”,于是我们自己模拟一个简单的Web服务器来体会一下。本次模拟的一个超级简单的Web服务器软件,实现了静态文件和动态文件(通过模拟aspx页面对象)的处理和响应。但是,还有很多的功能并未实现。不过,对于一个最基本的Web服务器所需要了解的最基本的原理:Socket的监听和连接、基于TCP协议的HTTP协议、动态文件类的反射与调用等,模拟开发本次的DEMO的过程是可以达到的。 阅读全文
posted @ 2015-02-01 22:45 EdisonZhou 阅读(27467) 评论(7) 推荐(26) 编辑
摘要:当我们需要对一个网页上的某个按钮进行多次点击以求得某种“好处”的时候,例如天猫的抢红包活动,我们可能需要点击N次之后才有可能获得一个红包,但是这个N是一个未知数,有可能我们要不停地点击半个小时甚至一个小时都还无法获得,自己估计也会点鼠标点得醉了。因此,针对这种情况,我们希望自己写一个小工具来让计算机帮我们做这件事。既然是让计算机模拟我们的点击操作,其思路自然是找到指定的按钮或图片,循环对其执行click事件。于是,我们开始对其做一个最简单的实现来看看其基本思路。首先,我们准备一个网站,这里我是用ASP.NET开发了一个网页,其中有一张图片作为抢红包的按钮图片,然后写了一个一般处理程序。 阅读全文
posted @ 2015-01-28 22:21 EdisonZhou 阅读(64244) 评论(4) 推荐(11) 编辑
摘要:要说微信中最火爆的小游戏是哪款,可能既不是精心打造的3D大作,也不是《植物大战僵尸2》,而是微信5.0刚开启时的《飞机大战》。就是这样一款铅笔手绘风格的简单到不能再简单的“打飞机”游戏,让国内的微信用户一次又一次地尝试,并表示似乎又找回了童年时玩电子游戏的那份单纯的快乐。至于游戏的玩法都不用加以介绍,就是简单的“打飞机”。 阅读全文
posted @ 2015-01-25 22:44 EdisonZhou 阅读(14569) 评论(4) 推荐(12) 编辑
摘要:在某些场景下,我们想要对百度图片搜出来的东东进行保存,但是一个一个得下载保存不仅耗时而且费劲,有木有一种方法能够简化我们的工作量呢,让我们在离线模式下也能爽爽地浏览大量的美图呢?于是,我们想到了使用网络抓取去帮我们去下载图片,并且保存到我们设定的文件夹中,现在我们就来看看如何来设计开发一个这样的图片批量下载器。本次我们实现了一个小工具,它可以帮我们下载我们想要搜索的图片到执行的图片文件夹中,让我们可以离线爽爽地看美图。 阅读全文
posted @ 2014-12-22 22:52 EdisonZhou 阅读(10523) 评论(24) 推荐(27) 编辑
摘要:《坦克大战》(Battle City)是1985年日本南梦宫Namco游戏公司开发并且在任天堂FC平台上,推出的一款多方位平面射击游戏。游戏以坦克战斗及保卫基地为主题,属于策略型联机类。同时也是FC平台上少有的内建关卡编辑器的几个游戏之一,玩家可自己创建独特的关卡,并通过获取一些道具使坦克和基地得到强化。1985年推出的坦克大战(Battle City)由13×13大小的地图组成了35个关卡,地形包括砖墙、海水、钢板、森林、地板5种,玩家作为坦克军团仅存的一支精锐部队的指挥官,为了保卫基地不被摧毁而展开战斗。游戏中可以获取有多种功能的宝物,敌人种类则包括装甲车、轻型坦克、反坦克炮、重型坦克4种,且存在炮弹互相抵消和友军火力误伤的设定。 阅读全文
posted @ 2014-12-11 22:58 EdisonZhou 阅读(4704) 评论(0) 推荐(2) 编辑
摘要:最近闲来无事,看了看一下《C#开发Flappy Bird游戏》的教程,自己也试着做了一下,实现了一个超级简单版(十分简陋)的Flappy Bird,使用的语言是C#,技术采用了快速简单的WindowsForm,图像上主要是采用了GDI+,游戏对象的创建控制上使用了单例模式,现在我就来简单地总结一下。《Flappy Bird》是由来自越南的独立游戏开发者Dong Nguyen所开发的作品,游戏中玩家必须控制一只小鸟,跨越由各种不同长度水管所组成的障碍而这只鸟其实是根本不会飞的……所以玩家每点击一下小鸟就会飞高一点,不点击就会下降,玩家必须控制节奏,拿捏点击屏幕的时间点,让小鸟能在落下的瞬间跳起来,恰好能够通过狭窄的水管缝隙,只要稍一分神,马上就会失败阵亡。 阅读全文
posted @ 2014-11-22 16:11 EdisonZhou 阅读(14722) 评论(5) 推荐(10) 编辑
摘要:复杂项目不能把SQL语句直接写到程序里,不模块化、难以维护,应该采用三层架构。三层的优点:UI层和BLL打交道,不用处理SQL语句;UI层(界面代码,就是写到Form中的代码)访问的都是强类型的对象,而不是row["age"]这样的东西,开发更方便,更不容易出错。一般三层的代码都是一个人写;UI层中没有复杂的代码,解耦,容易改变UI层技术。关于这个不用多说了,代码生成器我单独写了一篇学习笔记,详见《自己动手写三层代码生成器学习笔记》; 阅读全文
posted @ 2012-07-13 00:04 EdisonZhou 阅读(1311) 评论(1) 推荐(3) 编辑
摘要:代码生成器需要了解数据库中的几个非常重要的视图,比如INFORMATION_SCHEMA(.TABLES、.COLUMNS)以及一些类型属性Data_Type,Column_Name等。然后利用模板,通过StringBulider来进行字符串的拼接,也就是AppendLine()方法。当然,其中涉及到SQL方法封装、数据库类型向.NET框架数据类型的转换、IO文件流的读写,还有就是不要忘了处理可空数据类型。 阅读全文
posted @ 2012-03-18 13:01 EdisonZhou 阅读(2681) 评论(14) 推荐(2) 编辑