`
Goldice
  • 浏览: 104283 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
来自: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 ...
pdf见:http://obiefernandez.com/presentations/obie_fernandez-agile_dsl_development_in_ruby.pdf   1. What is DSL ——designed for a specific domain ——captures jargon in executable form ——can be internal or external   2. How to design Ruby DSL (1) ——Don’t try to do an abstra ...
      明天被领导要求分享Qcon体会,实在是件不怎么容易的事情。Qcon这样的企业开发大会,很多东西必须要实际应用过才能深有体会,泛泛的谈似乎又觉得乏味。好吧,泛一下就泛一下吧,总比废话要强(上一句是我认为的废话)。          第二天的Qcon大会我主要听了“Devops”的主题。下面分场次来讲一下:   1. 乔梁的Devops   持续集成(CI)拉近Dev和QA 敏捷(Agil)拉近了Business,Dev和QA 而 Devops需要拉近Dev,QA,Ops Devops兼顾了Dev,QA,Ops,Devops = Culture + Tools,乔梁认 ...
今天小试了一把valgrind的massif工具。Massif在valgrind中的介绍是这样的: Massif Massif is a heap profiler. It performs detailed heap profiling by taking regular snapshots of a program's heap. It produces a graph showing heap usage over time, including information about which parts of the program are responsible for t ...
今天整理了下cppcheck的源码结构,为什么通过写一个个子文件就能够扩展cppcheck的功能呢?   看了下代码,并通过简化代码,略懂一二了。       首先我们定义一个基类test.h,只定义一个头文件足够:     #ifndef TESTH #define TESTH #include<iostream> #include<list> class Test { public: Test(const std::string name); ~Test(){ std::cout << &qu ...
今天参加了QCon2011 杭州。听了百度项目管理部的乔梁关于“Devops”的分享。比如如下:   continuous integration —— Dev , QA agile —— Business,Dev,QA devops —— Dev,QA,Ops   Devops = Culture + Tools   automation: ——environment provisioning (工具 :Puppet,Chef,ControlTier) ——app deployment & data migration (Capistrano,DBdeploy) ...
宏定义: 1. Makefile中直接定义宏   OBJECTS=filea.o fileb.o filec.o #定义宏 Z=filed.o prog: $(OBJECTS) #引用宏 cc $(OBJECTS) -o prog #我的机子环境中需要4个tab键 prog1: $Z #引用宏,单个字符无需加园括号 cc $Z -o prog1  2. 在make命令之后带有新的宏定义 make "OBJECTS= filea.o fileb.o filec.o"   Makefile包含五个部分:显示规则, ...
这篇文章对于动态库的概念及使用介绍的很不错,故收藏了。 一、引言通常情况下,对函数库的链接是放在编译时期(compile time)完成的。所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(executable file)。程序在运行时,与函数库再无瓜葛,因为所有需要的函数已拷贝到自己门下。所以这些函数库被成为静态库(static libaray),通常文件名为“libxxx.a”的形式。其实,我们也可以把对一些库函数的链接载入推迟到程序运行的时期(runtime)。这就是如雷贯耳的动态链接库(dynamic link ...
g++    一般分为这几步: 1. 预处理,生成.i文件 2. 编译,生成.s文件(汇编文件) 3. 汇编,将汇编文件转化成.o文件(目标文件) 4. 连接目标代码,生成可执行文件   -c  激活预处理,编译,汇编,最后生成obj文件 -S 激活预处理,编译,最后生成.s汇编文件 -E 激活预处理,不生成文件,需要定位到一个输出文件里   -o 为结果文件命名   -O0 -O1 -O2 -O4 编译器的四个优化级别,-O0为没有优化,-O1为默认值,-O3为优化最高级别。 对于valgrind来说,-O0是最喜欢的,只是速度较慢。-O1相对-O0来说错 ...
              Valgrind由内核(core)以及基于内核的其他调试工具组成.内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具.而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。     Valgrind包括如下一些工具:1. Memcheck: 这是valgrind应用最广泛的工具,一个重量级的内存检查器,能够发现开发中绝大多数内存错误使用情况,比如:使用未初始化的内存,使用已经释放了的内存,内存访问越界等。这也是本文将重点介绍的部分。2. Callgrind: 它主要用来检查程序中函数调 ...
语  法:tee [-ai][--help][--version][文件...]补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。参  数:-a或--append  附加到既有文件的后面,而非覆盖它.--help  在线帮助。--version  显示版本信息。   使用:     cat 1.txt | tee 2.txt cat 1.txt | tee -a 2.txt
分享一个ssh打通的脚本,经过测试可用。目前只能单向打通,且要求本地用户名为admin(写入代码,可简单修改)。本身只是个人使用,故通用性、异常情况考虑不多,大家可以做个参考。 补充一点,Important Tip: authorized_keys文件的权限很重要,如果设置为777,那么登录的时候,还是需要提供密码的 : chmod  400 authorized_keys     #!/usr/local/bin/expect -f set user [lindex $argv 0] set ipaddr [lindex $argv 1] set passwd [lind ...
转载一篇靠谱的文章,按照文章所述方法一次成功。只不过我的expect二进制文件最后实在tcl的bin目录下,而不是expect的bin目录下,这个令我有些疑惑,whatever,不算什么大问题,注意一下就好了。   A. Tcl 安装 主页: http://www.tcl.tk下载地址: http://www.tcl.tk/software/tcltk/downloadnow84.tml 1.下载源码包wget http://nchc.dl.sourceforge.net/sourceforge/tcl/tcl8.4.11-src.tar.gzwget http://nchc.dl.sour ...
1. Get & Build & Install Boost download boost from http://www.boost.org/ 进入boost目录,使用命令: ./bootstrap.sh --prefix=path/to/installation ./b2 install 如此之后: leave Boost binaries in the lib/ subdirectory of your installation prefix. You will also find a copy of the Boost headers in theinclud ...
ssh登陆其他机器的Expect脚本     #!/usr/bin/expect -f set user [lindex $argv 0] set ipaddr [lindex $argv 1] set passwd [lindex $argv 2] spawn ssh -l $user $ipaddr expect "password:" send "$passwd\r" interact   或者:     #!/usr/bin/expect -f set user [lindex $argv 0] ...
Global site tag (gtag.js) - Google Analytics