Some Rules from wrting your own dsl with ruby
来自:http://blog.nofail.de/2010/02/writing-your-own-dsl-with-ruby/
Some Rules from wrting your own dsl with ruby
1. let the user choose how to use it
all implemented methods return the object instance itself,so one can chain method calls for convenient
2. make options optional
a well designed API does not force user to provide argument that are not mandatory
3. make use of an option hash for defaults
consider using an optional parameter hash as the last method argument
4. make use of scoped blocks
providing scopes is another way to improve the readability of your code
5. make use of instance_eval
rebuid do
method1
method2
method3
end
6. consider implementing method_missing
相关文章:

免费报名 | 微软全双工语音对话以及在智能硬件上的应用
微软小冰第六代发布会上正式宣布上线全新的共感模型,同时也开始公测一种融合了文本、全双工语音与实时视觉的新感官。这项新技术可以实时预测人类即将说出的内容,实时生成回应,并控制对话节奏,从而使长程语音交互成为可能。而采用…

文件服务器迁移
不论大小,几乎每个公司都有自己的文件服务器,或者简单点的共享文件夹。随着数据的爆炸式增长,以及天长日久累积下来,数据量往往在一年两之后就超出服务器的容量。要解决这个问题,首先当然是做好数据管理,用…

Windows脚本初探之PowerShell流程控制if
Windows Powershell中if语句为可以为一下三种形式,只用表达式为True时才执行相应花括号中的命令语句/块: 示例1: 1234if (表达式1) { 命令语句/块1 } 示例2: 12345678if (表达式1) { 命令语句/块1 } else{ 命令语句/块2 } 示例3&a…

“万人迷”小冰背后的AI故事
作者 | Jane出品 | AI科技大本营从 2014 年的夏天小冰出现在我们的视野到今天,谈到小冰,你的第一印象是什么?一款可爱、萌萌哒的聊天机器人?一款随时在你身边,可以帮你做一些场景任务的语音助手?如果说&…

开放式Android联盟成立
在Google采取行动反对CyanogenMod项目的几天之后,提供了定制的Android固件。一组Android开发者成立了开发式Android联盟。根据项目的网站介绍,这个联盟是‘pro-Android’而不是‘anti-Google’。他们的目的取代封闭的源代码,专有的应用程序包…

QQ卖手办,用AI分析用户评论
作者 | 徐汉彬指导 | 宋彦编辑 | Jane出品 | AI科技大本营徐汉彬,腾讯鹅漫前台研发团队 Leader,T3-3 级工程师,负责鹅漫U品和 AMS 平台(高峰期 PV 超过 13 亿)的研发工作,在 Web 研发、活动运营服务领域有丰…

使用svn时碰到的一个的问题
做技术的人,需要有完美主义,很多问题,如果当时不能彻底解决,往往会留下更大的麻烦。这个字符编码的问题,当时碰到的时候没有主义,以后遇到的时候也是抱着躲避的鸵鸟主义的态度,今天认真对待了一…

远程为服务器安装Windows 2008 Server
命苦,老早就定好10.1期间要把服务器重新安装一次,今天反正也没有事情,来尝试下远程安装,因为以后的MOSS公司要远程的管理和使用 先登录到远程控制卡的管理地址 然后输入用户名和密码,以下是登录成功后的界面 然后在左侧的功能树中选择“介质”…

Spring装配Bean---使用xml配置
声明Bean Spring配置文件的根元素是<beans>. 在<beans>元素内,你可以放所有的Spring配置信息,包括<bean>元素的声明. 除了Beans命名空间,Spring的核心框架总共自带了10个命名空间配置: 命名空间用途 aop 为声…

Ruby DSL介绍及其在测试数据构造中的使用(1)
什么是DSL?英文全称Domain Specific Language,中文解释为领域专用语言。顾名思义,DSL是针对某个特定领域而开发的语言。像我们平时接触到的C/C,Java,Python/Ruby,都属于通用语言,可以为各个领域…

2017年度最受欢迎开源中国项目:roncoo-pay投票评选
2019独角兽企业重金招聘Python工程师标准>>> roncoo-pay项目正在参加 2017年度最受欢迎中国开源软件评选,请大家投上宝贵的一票,支持roncoo-pay更好的发展,为大家带来更多好用的支付功能! 2017年度最受欢迎中国开源软件…

编程小问题系列(2)——为什么WPF里MediaElement等视频控件不起作用
为什么WPF里MediaElement等视频控件不起作用?非常可能的原因是因为没有安装Microsoft Windows Media Player 10或者10以上的播放器,MSDN文档里就写有下面一句话:Both and are used to present audio, video, and video with audio content. B…

国行版HomePod售价2799元,本周五发售
(图片源自苹果中国官网截图)整理 | 一一出品 | AI科技大本营去年 12 月,苹果表示将于今年年初在中国销售其 HomePod 智能音箱。1 月 14 日,苹果公司正式宣布,HomePod 将于 1 月 18 日(本周五)在…

维基百科联手谷歌翻译,结果“惨不忍睹”!
作者 | 琥珀出品 | AI科技大本营作为前沿科技新闻报道的一线工作者,我们经常会碰到各种陌生难懂、语言不通的词句。这直接导致我们在引用和查找信息时,往往辅助以维基百科和谷歌翻译为代表的两大信息引擎,其重要性不言而喻。然而,…

Ruby DSL介绍及其在测试数据构造中的使用(2)
在(1)中介绍了DSL和普通的函数定义之间的区别。在(1)的最后提到,DSL分为内部DSL和外部DSL,我们再看一遍他们的定义:1. External DSLs 用不同于host语言的语言来编写,通过编译和解释器来翻译成host语言 2. Internal DSLs 将host语言…

批量编译fla文件
jsfl太神奇了不过内存不高的机器还是少编译一点,会同时打开你选择的文件夹下的所有fla文件,然后一个一个自动编译。Compile flas.jsfl//----------------------------------Start--------------------------------//Brent Arnolds kick butt batch folde…

字符串转换成utf-8编码
a、将字符串转换成utf-8编码的字节,并输出,然后将该字节在转换成utf-8编码字符串,在输出 b、将字符串转换后才能gbk编码的字节,并输出,然后将该字节在转换成gbk编码字符串,在输出 123456789101112def main(…

50万奖金+京东数科offer,JDD-2018全球总决赛冠军诞生
(JDD 大赛总决赛选手与导师、评委合影)整理 | 一一出品 | AI科技大本营1 月 13 日,JDD-2018 京东数字科技全球探索者大赛全球总决赛落下帷幕。在经过 24 小时极限挑战和 2 小时商业路演的较量后,来自以色列赛区的团队“Cheese&…

三星笔记本FN功能键操作大全
Samsung 的快捷键都很简单,提供的都是最常用的功能,但新出的X系列和P系列机的FN快捷键差异很大,例如X10和P25。现在介绍FN快捷键以巧的X10为主,补充说明P25。FN上方向键/下方向键:增加/减低亮度FN左方向键/右方向键:增…

[翻译] Ruby Golf
原文地址:http://rubysource.com/ruby-golf/ Ruby golf is the art of writing code that uses as few characters as possible. The idea originates in the world of Perl (where it is, unsurprisingly, known as Perl Golf). As a language, Perl is well suite…

AI删库,程序员背锅?
作者 | 一一出品 | AI科技大本营又一代码清库的惨案发生了,不过这次要背锅是 AI。近日,美国最大点评网站 Yelp 的工程师训练的神经网络闯祸了。他们训练了一个用来消除 bug 的神经网络,万万没想到,该网络删除一切,从根…

OpenStack Keystone架构一:Keystone基础
一 什么是keystone keystone是OpenStack的身份服务,暂且可以理解为一个与权限有关的组件。 二 为何要有keystone Keystone项目的主要目的是为访问openstack的各个组件(nova,cinder,glance...)提供一个统一的验证方式,具体的&#…

用gdb调试mpi程序的一些心得
Linux下MPI (Message Passage Interface) 的程序不太好调试,在windows下vs2005以上的IDE有集成的简便MPI调试工具,没有用过,有兴趣的可以试验一下。下面总结了一些最近在用MPI和c语言写程序时的调试经验(Ubuntu环境,c语…

开源如何占领软件世界?
作者 | Mike Volpimavolpi译者 | 风车云马编辑 | 一一出品 | AI科技大本营5 年前,投资商对开源这种商业模式的可行性持有怀疑态度。他们普遍认为,红帽(redhat)公司犹如雪花飘零——在软件世界里开源公司不可能占据举足轻重的地位。…

软件工程概论——课堂测试1
设计思想:1.用1个页面,实现课程录入,提交后直接返回课程界面。2.应用html表单属性进行数据的提交。3.用servlet进行写入数据库和验证输入。 源代码: <% page language"java" import"java.util.*" contentT…

过程即奖励(The Journey is the Reward)
今天读完了《乔布斯传》。翻着这本书最后的影集,乔布斯传奇一生的一幕幕仿佛在眼前展开。从第一张照片中特里独行、桀骜不驯的年轻人,到最后一张照片中阳光下慈祥微笑的老者,看到的仿佛不是乔布斯的照片,而是自己的一位人生挚友。…

BREW 计费模式概览
计费模式也就是收入模型是商业模式的基础。BDS分发系统中不但提供了与运营商计费系统的接口,而且直接提供了BREW 计费服务。 BREW分发系统与运营商计费系统的集成,一般就是与运营商的综合营帐系统的集成,需要融合于网元层,资源层&…

程序员崩溃了,年终奖怎么说黄就黄
作者 | 胡巍巍转载自程序人生(ID:coder_life)往年王者荣耀年终奖200个月100万(虽然辟谣是假的)、华为年终奖24个月100万,都让我等平民羡煞不已。还有在BAT发生的(朋友圈)真人真事↓这是年终奖的…

改变IT世界的11大Apache开源技术
据国外媒体报道,转眼之间,Apache软件基金会已经成立10年之久了,11月份,Apache基金会的成员将会为其举行一次大型的庆祝。虽然Apache软件基金会是一个开源的组织,但是Apache却创造了对现代互联网来说很重要的技术。下面…

nginx常用技术
作者:NetSeek http://www.linuxtone.org (IT运维专家网|集群架构|性能调优)欢迎转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明.首发时间: 2008-11-25 更新时间:2009-1-14目 录一、 Nginx 基础知识二、 Nginx 安装及调试三、 Ngi…