摘要:
symbol是啥就不深入的讨论了,只简单说说symbol的好处ruby内部对于每个对象,都会有一个数字id用来标识并区分,可以用xxx.object_id来查看 输出结果类似如下:32088750320887303208871032088690可以发现即使是同样内容的字符串"0001",在ruby解释器内部每次也都是当作不同的对象来处理的,这样随着字符中的调用次数增加,ruby解释器的负担不是越来...
阅读全文
posted @ 2010-03-04 11:57
菩提树下的杨过
阅读(2934)
推荐(0)
摘要:
理解 Ruby Symbol,第 1 部分http://www.ibm.com/developerworks/cn/opensource/os-cn-rubysbl/理解 Ruby Symbol ,第 2 部分: Symbol 内幕http://www.ibm.com/developerworks/cn/opensource/os-cn-rubysbl2/index.html
阅读全文
posted @ 2010-03-04 10:32
菩提树下的杨过
阅读(536)
推荐(0)
摘要:
机器上没安装ROR开发环境的朋友,请先参看 ruby on rails + mysql 开发环境搭建架好环境注:ROR的经典著作“Web开发敏捷之道--应用Rails进行敏捷Web开发”目前中文的只有第二版,作者写书的环境是rails 1.x,现在rails的版本已经更新至2.3.5,很多东西已经变了,如果参考第二版的书上一步步来做的话,根本做不下去。(目前该书已经出了第三...
阅读全文
posted @ 2010-03-02 14:42
菩提树下的杨过
阅读(1015)
推荐(0)
摘要:
很多人(包括我)都喜欢把主流的javascript框架(比如jQuery),放到自己服务器上,其实还有更好的选择。http://code.google.com/intl/zh-CN/apis/ajaxlibs/documentation/index.html#googleDotLoad 是google对外开放的AJAX库 API,上面已经有很多ajax库了,我们只需要引用即可(好处在于:googl...
阅读全文
posted @ 2010-03-01 16:09
菩提树下的杨过
阅读(2682)
推荐(0)
摘要:
从firefox网络监测的结果看,博客园并未启用IIS的GZIP压缩。建议大家使用时,直接用 http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js 这个路径引用,同时http://code.google.com/intl/zh-CN/apis/ajaxlibs/documentation/index.html 上还有其它很多...
阅读全文
posted @ 2010-03-01 15:45
菩提树下的杨过
阅读(4257)
推荐(0)
摘要:
匿名函数自动调用的三种写法如下: 再来看一段代码:Person类为所有传入的对象属性,自动生成了getXXX与setXXX方法,这一段代码虽然很短,却包含了诸多js中的关键概念:1.json对象表示法当我们把"{name:"菩提树下的杨过",sex:"男"}"做为参数,传入Person构造函数时,实际上就建立了一个字典结构的键值对:name --> "菩提树下的杨过"sex --> "...
阅读全文
posted @ 2010-02-28 17:51
菩提树下的杨过
阅读(1537)
推荐(0)
摘要:
一度以为在javascript的世界里,所有方法都是公有的,无法真正从技术上定义一个私有方法,今天又一次发现:其实我错了!说明:类的构造函数里定义的function,即为私有方法;而在构造函数里用var声明的变量,也相当于是私有变量。(不过类比于c#这类强类型语言中的私有成员概念还是有区别的,比如无法在非构造函数以外的其它方法中调用)类似的,我们还能实现类似set,get属性的封装注:js中的"变...
阅读全文
posted @ 2010-02-28 16:35
菩提树下的杨过
阅读(21351)
推荐(1)
摘要:
啥也不说,先看代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head> ...
阅读全文
posted @ 2010-02-28 11:41
菩提树下的杨过
阅读(1969)
推荐(0)
摘要:
1.方法重载js中并不直接支持类似c#的方法重载,所以只能变相的来解决,示意代码:(利用了内置属性arguments)2.参数个数检测js引擎同样也不会在function调用时,强制检查参数个数,所以只能自己处理,示例代码:3.参数基本类型检测js引擎同样更不会检测参数的类型,如果您希望对参数的基本类型做些限制,可以利用typeof 来判断基本类型4.自定义类的参数类型检测第3条所提到的方法,只能...
阅读全文
posted @ 2010-02-25 21:23
菩提树下的杨过
阅读(4587)
推荐(0)
摘要:
曾经发过一篇如何在Silveright中利用XmlSerializer序列化对象的文章“Silverlight中的序列化”,限于当时的认识有限,一度以为silverlight只有这一种办法,今天意外发现,其实还有更好的方式,特此做一个汇总与比较1.json序列化方式silverlight支持json字符串已是众人皆知的事情,没啥好说的,有点容易让人误导的是:我们在vs的si...
阅读全文
posted @ 2010-02-22 21:31
菩提树下的杨过
阅读(5756)
推荐(3)
摘要:
共同点:都是用来屏幕输出的。不同点:puts 输出内容后,会自动换行(如果内容参数为空,则仅输出一个换行符号);另外如果内容参数中有转义符,输出时将先处理转义再输出p 基本与puts相同,但不会处理参数中的转义符号print 基本与puts相同,但输出内容后,不会自动在结尾加上换行符s = "aaaa\nbb\tbb"p sp "****************"puts sp "********...
阅读全文
posted @ 2010-02-22 14:02
菩提树下的杨过
阅读(12750)
推荐(0)
摘要:
先来看别名,ruby中可以给方法或全局变量起一个别名,有意思的是:方法别名定义后,即使对应的方法在后面的代码中重新定义(即修改内部实现)后,别名仍然可以调用到修改前的方法,而全局变量则不行。def meth puts "This is meth"endalias:orgin_meth:methmeth #=> This is methorgin_meth #=>This is met...
阅读全文
posted @ 2010-02-20 11:30
菩提树下的杨过
阅读(5559)
推荐(0)
摘要:
#静态方法的4种写法class Test def Test.StaticMethod1 puts "Test.StaticMethod1" end def self.StaticMethod2 puts "Test.StaticMethod2" end class << Test def StaticMethod3 puts "Test.StaticMethod3" end e...
阅读全文
posted @ 2010-02-19 20:05
菩提树下的杨过
阅读(2881)
推荐(0)
摘要:
主要代码修改自园子里"smjack"的【原】改进了的"利用Silverlight实现类似iGoogle的浮动拖拽效果",修改说明:1.将原来的列宽度等分,改为允许非等分2.增加了最大化,最小化,关闭功能3.模块太多,导致Silverlight显示不下时,自动加上垂直滚动条本想将模块设置功能抽时间完成一下,但近期又迷上ROR了,不知道什么时候才会完成这个东东(也许永远不会完成),先把这几处修改完成的...
阅读全文
posted @ 2010-02-19 17:34
菩提树下的杨过
阅读(2341)
推荐(0)
摘要:
用ROR框架做开发,基本上只要SciTE+资源管理器+命令行 就可以了,但如果您确实一时很难忘记IDE环境,而且机器配置又不咋地,建议您重返三剑客时代,找找当年DreamWeaver的感觉 :)http://rubyweaver.gilluminate.com/到这上面下载rhtml for dreamweaver的插件安装后,dreamweaver就能认别rhtml格式了,您可以象编辑html一...
阅读全文
posted @ 2010-02-19 12:36
菩提树下的杨过
阅读(6986)
推荐(0)
摘要:
这是网上收集的几篇教程1. Sqlite简明教程http://www.sqlite.com.cn/MySqlite/4/32.Html2. Sqlite入门教程http://www.sqlite.com.cn/MySqlite/4/33.Html3. Sqlite官方http://www.sqlite.org/4. 推荐pysqlite使用指南http://gashero.yeax.com/?p=...
阅读全文
posted @ 2010-02-18 17:45
菩提树下的杨过
阅读(2088)
推荐(0)
摘要:
ror对于初学者来讲,可能最大的困难莫过于开发环境的安装与搭建,今天折腾了大半天基本搞定了,把过程贴在这里,以便初学者少走弯路。1.安装ruby 1.8.6 打开 http://rubyforge.org/frs/?group_id=167,安装 ruby1.8.6-26最终版本下载完成后,可在命令行下键入 ruby -v验证版本 (如果在命令行里输入ruby提示找到不该命令,请将c:\ruby\...
阅读全文
posted @ 2010-02-18 13:51
菩提树下的杨过
阅读(9618)
推荐(2)
摘要:
小时候对日本的动画片十分着迷,“圣斗士”是我的最爱;长大后也曾经一度对“海贼王”十分痴迷;大学看武侠小说时,也特别喜欢那种主人公有奇遇的情况:吃到一颗千年异果,然后功夫大增60年...这些个场景都有一个共同点:对象(或系统)会因为一些需求(通常这些需求之间没有任何关联),而扩展自己的功能。具体来说:青铜战士如果有幸能穿上黄金圣衣,不管你是不是黄金圣斗士,在穿上黄金圣衣的那一刻,你就具有黄金圣斗士的能力;海赋王中的人物,如果能吃到一颗奇异果,就能获得特别的能力(比如路飞就是吃了橡胶奇异果);武侠小说中,主角如果不经意间吃下了千年人参,从此功力大增,打遍天下无敌手...ok,下面谈谈如何设计,就拿
阅读全文
posted @ 2010-02-17 18:11
菩提树下的杨过
阅读(842)
推荐(0)
摘要:
场景:如果想模拟windows的开始菜单,分析一下会发现里面的菜单项:有些有子菜单,有些则没有;因此大体可以将菜单类分为二类,设计代码如下:客户端示例调用如下:从功能正确性上讲,上面的示意代码并无大错,但是如果从客户程序上考虑,却发现这样并非最佳实践:客户程序依赖了太多的Menu类细节,客户程序在树型菜单创建完成后,最关心的莫过于如何把菜单完整的显示出来,但上面的代码中为了达到这个目的,却不得不知道子菜单的内部实现(通过Children和类型判断),如果以后菜单类升级,修改了内部构造(比如将Children改成GetChildren),客户程序将被迫重新修改,这时候组合(Composite)模
阅读全文
posted @ 2010-02-16 19:36
菩提树下的杨过
阅读(672)
推荐(0)
摘要:
闭包的一个重要特征是:过程(方法)内部定义的变量,即使在方法调用完成以后,仍然可以继续引用到!(即延长了生命周期)def method(n) puts "n=#{n}"; #测试用 return proc{|i| n +=i } #关键:proc是一个过程对象,只能由"委托"用call来调用,这里在过程内部引用了参数变量n,将会在多次call该过程后,保留对n的引用,形成闭包!endaDeleg...
阅读全文
posted @ 2010-02-12 17:05
菩提树下的杨过
阅读(847)
推荐(1)
摘要:
ruby的数组基本使用,跟c#中的数组比起来,最不习惯的区别在于允许负索引(跟javascript到有几分相似)arr=[3,4,5,6,7,8,9]puts arr[0] # 3puts arr.first # 3puts arr[arr.length-1] # 9puts arr[arr.size-1] # 9puts arr.last #9puts arr[-1] #9,下标为-1,即...
阅读全文
posted @ 2010-02-11 21:00
菩提树下的杨过
阅读(1140)
推荐(0)
摘要:
ruby中的module与.net中的namespace有点类似,可以用来区分同名但属于不同开发者(或组织)的代码。下面的代码,定义了一个Me模块,里面的sqrt与Math模块中的sqrt重名,另外还有一个重名常量PI#定义一个模块(有点类似.net中的命名空间)module Me def sqrt(num1,num2=-1) return "num1=#{num1},num2=#{num2}"...
阅读全文
posted @ 2010-02-11 14:37
菩提树下的杨过
阅读(5374)
推荐(1)
摘要:
动态语言之所以“动态”,最明显的特征就是:类实例的行为/属性可以在new出后,动态修改!个人觉得这种处理相对java/c#(静态语言)来说,更符合现实世界。比如:一个人刚出生时,除了哭、吃奶等这些基本原始本能,其它的几乎全都不会(原始本能可理解类定义中最开始定义的属性和方法),但随着时间推移,学会了看书,走路,说话...(相当于新增了方法/属性),再往后的人生谁也无法预料,...
阅读全文
posted @ 2010-02-11 11:21
菩提树下的杨过
阅读(1376)
推荐(0)
摘要:
看了几天ruby,发现c#中很多一直被称道的语法特性,ruby早在几年前就有了:1.c#中的params关键字 class Program { static void Main(string[] args) { Console.WriteLine(Sum()); Console.WriteLine(Sum(3,6)); Console.Read(); } static int Sum(params...
阅读全文
posted @ 2010-02-11 10:57
菩提树下的杨过
阅读(1070)
推荐(0)
摘要:
ruby语言跟c#的一些重要差别在于:1.ruby是动态语言,c#是静态语言--即对象在new出来以后,ruby还可以动态给对象实例添加一些属性或方法(javascript也是如此)2.ruby中刻意弱化了变量类型这个概念,默认情况下变量/方法都不需要声明具体(返回)类型,但其实在ruby内部,会自动根据变量的值分配类型。(可以通过 “puts 变量.class“查看)3....
阅读全文
posted @ 2010-02-10 21:50
菩提树下的杨过
阅读(1507)
推荐(1)
摘要:
虽然ruby/ruby on rails从2007年就一直获奖无数,但身为一个中国人,一直对小日本创造的东西不怎么感兴趣,想想其实也没必要,技术本身是无国界的,日本其实也有值得学习的地方(扯远了,呵)单从技术而言,ruby本身确实很爽,令程序员的工作变得轻松有趣!下面的代码演示了如何找出100以内的素数:using System;namespace Mersenne{ class Program ...
阅读全文
posted @ 2010-02-09 20:47
菩提树下的杨过
阅读(1230)
推荐(0)
摘要:
场景:sql2005数据库,假如名为db1,启用了Service Broker,把db1备份,然后再恢复成db2(即相当于db2就是db1的一次完整镜像备份),然后用use masterALTER DATABASE db2 set ENABLE_BROKER 想启用Broker时,出现以下错误:无法启用数据库 "db2" 中的 Service Broker,因为已存在启用的具有相同 ID 的 Se...
阅读全文
posted @ 2010-02-04 16:14
菩提树下的杨过
阅读(1834)
推荐(0)
摘要:
当一个应用,有着多个维度的变化时,桥模式可将多个维度的变化独立开来(即解耦),最直观的好处就是可有效减少子类的数量。场景:假如我们要开发一个数据程序程序,导出的数据格式暂定为txt,xml,或直接导入到其它数据库(注:导出格式的需要变化,可以理解为功能维度上的变化),而且我们还要让这套程序能运行于多种平台(windows,linux,freebsd,macos...)上,即跨平台运行(注:可支持多平台的需要变化,可理解为平台需求维度上的变化)如果按传统思维:每种格式的导出程序都要对应写出N个版本的实现,如果导出格式数为M,可支持的平台数为N,则最终的子类数目一定在M*N之上,这将导致一个类爆炸
阅读全文
posted @ 2010-02-01 10:33
菩提树下的杨过
阅读(828)
推荐(0)
摘要:
借用terrylee的原话:Adapter模式主要应用于“希望复用一些现存的类,但是接口又与复用环境要求不一致的情况”,在遗留代码复用、类库迁移等方面非常有用。适配器模式再次体现了“面向接口编程,而非面向实现编程”这一精神。场景:有一个基于数据库的系统,里面的数据库操作就拿最常用的查询来说,主要是用SqlHelper类里的QueryData(string sql)这个方法来处理的,后来意外发现该方法实现上性能并不是最好(或者不能满足新的需要),而这时正好有一个第三方的DbHelper程序集,写得很成熟性能也不错,但唯一不足的是里面的查询方法签名是SelectData(string sql),怎
阅读全文
posted @ 2010-01-29 10:39
菩提树下的杨过
阅读(533)
推荐(0)
摘要:
要求:呼叫系统(Call Center)每天会有大量的电话进线数据,领导们要查看每天的进线数汇总,并且要求把 每天从上午8点到上午12点以及下午2点到晚上8点这两个时间段的数据汇总 “视”为当天的数据。--即分组依据思路:把时间段折分成连续二段,一段是从当天08:00到11:59分的数据,一段是当日12:01到19:59分的数据,然后用union all合并起来,最后再用s...
阅读全文
posted @ 2010-01-28 16:26
菩提树下的杨过
阅读(1533)
推荐(0)
摘要:
原型模式个人以为最适合的场景:参照现有的某一个对象实例,快速得到多个完整的实例副本。(通常是深拷贝的副本)深拷贝在c#中实现的最简单方式莫过于通过反序列化得到一个全新的对象实例。(当然如果浅拷贝的话,方法就很多了,比如利用MemberwiseClone或反射属性自动赋值都可以)场景:还是游戏场景,就拿三国来说吧,打仗时可能需要小兵若干,每个小兵可能还要骑马...(简单起见其它东东就不提了,比如可能每个小兵还要带兵器若干),这些个实例的数量是动态的,但是几乎每个小兵的属性都完全相同,每匹战马的属性也相同,很显然写一堆的new()造出若干实例,再逐一对属性赋值是可行的,但是并非最好的做法,下面看看
阅读全文
posted @ 2010-01-27 11:18
菩提树下的杨过
阅读(514)
推荐(0)
摘要:
类索引器Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--1usingSystem;2usingSystem.Collections.Generic;34namespacePrototype5{6classProgram7{8staticvoidMain...
阅读全文
posted @ 2010-01-27 10:33
菩提树下的杨过
阅读(412)
推荐(1)
摘要:
原文:http://www.cnblogs.com/zhouyinhui/archive/2007/07/07/809553.htmlyjmyzz提示:读懂以下内容可能需要掌握(高中)数学中的"向量运算",以及(大学)数学“线性代数”中的"矩阵运算",如果您对此不熟悉,建议先百度词条温习一下。虽然在WPF中可以使用TranslateTransform、RotateTrans...
阅读全文
posted @ 2010-01-25 10:24
菩提树下的杨过
阅读(2178)
推荐(3)
摘要:
工厂模式:个人理解为主要用于创建"同一系列"的N个对象实例。(注意这里"同一系列"指这一系列对象均继承于某一个抽象类或均实现了某一个接口)举例:(仍然来自李建忠老师webcast中的实例,不过做了些简化)某汽车生产商需要对生产出来的“某一品牌”的不同型号汽车进行测试,于是写一套测试程序,这里的品牌我们就用Audi(奥迪)吧,比如现在测试的是A5,过一阵可能A6要下线,另外A7,A8...也都在研究中...如何让这一套测试程序能应对各种型号的变化,而不是每次出来一款新型号的奥迪,就要发布一个版本?寻找变化点:变化的只是型号,但同一品牌的测试方式却相对不变(比如商务车通常主要侧重于测试商务实用性,
阅读全文
posted @ 2010-01-21 15:59
菩提树下的杨过
阅读(568)
推荐(0)
摘要:
一、不写代码的方法:用Blend看图说话:这是待处理的图片win7在win7上,画一个矩形,再用钢笔随便画个封闭的path将矩形与path合并组成复杂的路径将合成后的复杂路径与win7图片同时选中,然后生成剪切路径这样我们就得到了一个不规则的图片轮廓(当然这里演示的去掉不规则部分,反过来就是挖洞)二、用代码挖洞原理:先用WriteableBitmap把原图片复制一份,然后将原图隐藏,接下来把指定区...
阅读全文
posted @ 2010-01-20 14:54
菩提树下的杨过
阅读(2511)
推荐(0)
摘要:
Builder模式主要用于以下场景:需要创建一个较复杂的大对象实例,并且构成该对象的子对象可能经常会发生变化,但是组成大对象的算法却相对稳定。比如:我们做b/s开发时,经常会遇到一些系统要求支持模板/皮肤切换,一个完整的页面由若干子模块组成,不管模板如何变换,子模块的内容/位置如何变化,但组成页面的算法即相对固定。我们假定每个页面由header,body,footer三个基本模块组成,先抽象出来:接口抽象部分Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com
阅读全文
posted @ 2010-01-19 17:41
菩提树下的杨过
阅读(438)
推荐(0)
摘要:
抽象工厂主要用来解决多个系列的对象实例问题。问题的应用场景(来源于李建忠老师的webcast讲座):如果有一款游戏,里面有"道路,房屋,隧道,丛林"这四类基本设施,而且不同的地图(比如中国区,印度区,欧美区)这些设施的风格各有特色,比如中国区应该是中国风格,印度区可能是古典风格,欧美区可能是现代风格...并且这些基本设施的风格还有可能会一直不断增加,作为程序员/架构师,您想如何让以后的维护/升级变得更轻松,比如新增加一种风格时,最好只要改改配置,顺便发个新的dll复制到安装目录就完事,而不是把原来的类似xxx = new ChineseStyleRoad(),全部改成xxx = new New
阅读全文
posted @ 2010-01-19 13:00
菩提树下的杨过
阅读(660)
推荐(0)
摘要:
[代码]Singleton的精髓在于:对于类的实例个数做了限制,只要领会了这一点,可以应用到很多场景,比如聊天室最多只能让100个人进来,数据库连接实例只能有200个...
阅读全文
posted @ 2010-01-18 17:09
菩提树下的杨过
阅读(571)
推荐(0)
摘要:
安装visual studio之后,一旦某些进程出现问题,总是出现“visualstudio实时调试器”对话框,有时候感觉很烦人,下面是解决办法:删除注册表项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\AeDebug\DebuggerHKEY_LOCAL_MACHINE\SOFTWARE\M...
阅读全文
posted @ 2010-01-18 14:25
菩提树下的杨过
阅读(1101)
推荐(0)
摘要:
查找/列出进程很容易,但干掉进程得借助系统命令ntsd.exe,详细用法见下面的代码 :[代码]另外ntsd.exe在windows vista以上的版本(包括windows 2008)上,出于安全考虑已经被MS给去掉了,但我们可以直接从xp下复制过来继续使用,这里为方便大家给出ntsd.exe的下载http://files.cnblogs.com/yjmyzz/ntsd.rar
阅读全文
posted @ 2010-01-18 10:12
菩提树下的杨过
阅读(7490)
推荐(1)