`
rubynroll
  • 浏览: 202137 次
  • 性别: Icon_minigender_1
  • 来自: Wgt
社区版块
存档分类
最新评论
文章列表
使用git已经有一段时间了,从使用git的第一天开始,就计划逐步放弃svn. svn有的功能,git都能做到,而且做得更出色,况且git还有很多特性svn望尘莫及,还有什么理由继续使用svn呢? well,理由很多. 比如,git在windows上的性能问题, TortoiseGIT ...
很早很早以前就想在嵌入式系统上实现动态模块加载的功能了,期间走了些弯路,直到最近,才完整地在嵌入式系统上实现动态模块加载。 === 动态模块加载的好处 === 动态模块加载的好处很多,例如,当你升级一个系统的时候,可以只升级一个模块,而不必升级整个系统。你可以把不同的模块放在不同的介质上,并实施不同等级的保护,例如BIOS部分进行写保护。 有些系统允许用户进行二次开发,这个时候几乎一定是需要动态加载功能的,因为你不希望用户需要链接整个系统才能够进行二次开发,而且你可能希望支持多个用户模块,彼此不相互依赖,彼此不干扰。 === Background === 一般来说,C的编译器编译出来的 ...
要在嵌入式Linux下使用动态语言,首先要解决的是语言解释器或执行引擎的交叉编译问题。 交叉编译通常有以下几种途径: 1. 直接通过交叉编译工具,手工配置交叉编译。交叉编译工具可以利用这个脚本来自动生成: http://kegel.com/crosstool/ 此方法的好处是简便快捷,一旦crosstool做好以后,需要什么包直接编译即可,而且可控性很强。缺点是对各种配置参数要很了解,而且自己需要考虑包依赖,以及包安装问题。对于要编译包依赖比较多的软件,比如我要编译ruby解释器,以及许多ext包,那就比较麻烦了,一般不推荐。 2. 利用scratchbox工具:http://www.sc ...
Telit 是一家专业设计和生产无线模块产品的公司,值得注意的是,它几乎在所有的最新产品中集成了嵌入式Python解释器,这样使用者就可以使用Python脚本快速地开发应用,这些Python脚本可以保存在模块内部运行,而不用另外的MCU去和模块进行AT命令交互。 想起以前在WaveCom的OpenAT平台上开发应用,那个叫郁闷.... 以下链接是Telit的一个4频GSM/GPRS模块的flyer: http://www.telit.com/module/infopool/download.php?id=166
今天无意中碰到一个空格带来的“陷阱”: def a 10 end b = a+1 => 11 b = a + 1 => 11 b = a+ 1 => 11 b = a +1 ArgumentError: wrong number of arguments (1 for 0) from (irb):8:in `a' from (irb):8
刚安装了ubuntu8.04,没想到给我了个惊喜--我的AIT Xpress 200居然可以跑compiz了! 用ubuntu 7.10的时候无论怎么折腾,compiz就是起不来,现在好了,哈哈,哈哈,哈哈~ 如果你的机器也象我的一样,只有一块底端显卡,不凡试试ubuntu 8.04,说不定也会给你个惊喜哦!
一提到Ruby就Rails,你大概腻了吧? 没关系,看看除了Web开发,Ruby还能作点什么 === 如果你熟悉嵌入式开发,如果你用C/C++的话,估计离开不了交叉编译工具。虽然网上能下载到编译好的交叉编译工具,但是不一定能满足你的需求,经常不得不自己手动从源代码开始自己编译交叉工具。虽然这不是什么难题,但是就我自己而言,每每碰到这样的问题,都需要到网上google一番,参考一些别人写好的脚本,然后按自己的需要修改,然后再编译...由于步骤有好几步,一一修改配置参数....输错了参数还要重来...太烦人了! === 一直很怕写shell脚本,简单的任务尚可,一旦碰到复杂些的,可就犯难了(看看 ...
虽然工作中在用Ruby,却也想在业余的时候用Ruby作点什么东西。 以前用C/C++写东西的时候就有过困扰,一个产品系列总是有那么些差异,需要对一个基础软件进行定制,这个型号的要把这个功能编译进去,那个型号的,需要把另外一个功能编译进去...很羡慕Linux内核有一个好用的基于菜单配置的工具,要是在我的项目中也能用它来管理不同模块的配置该多好啊.....不过要想把Linux内核配置那一套拿出来用,并不简单。 看过一些Ruby DSL方面的文章,觉得用Ruby来作这个东西真是在合适不过了,于是便有了Rbuild. Rbuild刚刚发布了第一个版本,0.1.0,已经可以用了,内部实现丑陋了些, ...
Linux程序员通常喜欢用文件锁来做进程间的同步,或简单地用文件锁指示程序进程是否还健在。在ruby里面可以很简单的实现文件锁: =begin file lock for inter-process sync. usage: FSLock('mylock') do # protected by lock, # do your job here ... end =end class FSLock def initialize(name=nil) name ||= 'global' @fname = name + '.loc ...
如果你想把从串口或者其他地方接收到的数据当作是从键盘输入,该如何实现? 我最近写了个简单的Pseudo Keyboard (称之为:伪键盘)内核模块来实现这个功能,很简单但很有趣 把以下代码存成pkbd.c,编译成模块pkbd.ko,然后用insmod pkbd.ko插入内核。 模块插入成功后,会在/proc下建立pkbd文件,以及在/dev下自动建立输入设备(如果你用udev的话)。 用法:     比如我想让从/dev/ttyS1来的数据模拟成键盘输入,最简单的方法是运行:         cp /dev/ttyS1 /proc/pkbd & 当然,更正式点的用法是按需要 ...
OO Programing in C is not only POSSIBLE but also PRACTICAL -------------------------------------------------------------------------------- OO的一个亮点是类的"继承",通过"继承",可以重用许多代码。而且"继承"也是现实生活中非常自然 ...
OO Programing in C is not only POSSIBLE, but also PRACTICAL. -------------------------------------------------------------------------------- “class“是很多OO编程语言里的关键字,它来源于OO鼻祖Smalltalk。class(类),是对一群有相同特性的对象的抽象概括,对象称为类的实例。在class里面可以存放有状态(变量),行为(函数/方法)....有关OO概念、方法的文章太多了,不再啰嗦。在C里面,唯一可以实现自定义类型的是struct,str ...
OO Programing in C is not only POSSIBLE but also PRACTICAL. -------------------------------------------------------------------------------- 经常看到关于OO编程的讨论,C++, Java, C#...还有最近很流行的动态语言Python,Ruby等,但很少看到有C的份。 在我看来,OO ...
ruby语言由于其灵活优雅的表达方式和优秀的OO的特性,是GUI编程语言的有力竞争者。特别是其Closure特性,能够使GUI编程时遇到的很多头痛的问题迎刃而解。 最近手上的一个项目刚好需要做一个Windows平台的GUI程序,以前是用VB,虽然VB是Windows GUI的经典工具,能够快速进行GUI原型开发,但是一旦GUI元素多起来,且UI元素存在复杂关系,就很难维护....特别在后期,一旦需求有什么变化,再去调整UI,那个叫痛苦啊。因此就想用ruby试试,加上此次项目设计很多网络通讯方面的需求,因此更加坚定了使用ruby的决心。现在项目基本完工,再回过头看,以前用VB开发时碰到的种种问 ...
Global site tag (gtag.js) - Google Analytics