
技术
文章平均质量分 77
iteye_7825
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Ruby: GUI编程的利器
[b]ruby语言由于其灵活优雅的表达方式和优秀的OO的特性,是GUI编程语言的有力竞争者。特别是其Closure特性,能够使GUI编程时遇到的很多头痛的问题迎刃而解。[/b]最近手上的一个项目刚好需要做一个Windows平台的GUI程序,以前是用VB,虽然VB是Windows GUI的经典工具,能够快速进行GUI原型开发,但是一旦GUI元素多起来,且UI元素存在复杂关系,就很难维护....2007-12-14 12:38:58 · 1401 阅读 · 0 评论 -
Ruby'陷阱'之: '||=' 的真正展开式
[i]前一段时间,我在这里[url]http://rubynroll.iteye.com/blog/192547[/url]展示了一个空格带来的'陷阱', 今天又见到另一个'陷阱'(http://dablog.rubypal.com/2008/3/25/a-short-circuit-edge-case by David).[/i]之所以为陷阱加引号, 是因为大部分情况下我们都没有机会掉进...2008-06-27 20:14:52 · 197 阅读 · 0 评论 -
一个有趣的问题: 如何获取引用名?
我们知道, 对于 [code="ruby"]a = 100[/code]这样的一条语句, a是一个指向 "100" 这个对象的引用. 那么, 如何根据a得到它的名字"a"或者符号:a ?我现在实现了一个'swap'函数,它的作用是交换两个变量的值, 由于Ruby没有类似C的'指针',所以这个swap实现起来还真有点麻烦:[code="ruby"]a = 100b ...2008-07-24 17:26:40 · 117 阅读 · 0 评论 -
Ruby/Rails: 不一样的'Web'应用
我不是Web程序员,也从来未开发过用户超过10个人的'web'项目:-),但这并不意味着web技术对我无用,正相反,我开发过许多和web技术有关的程序和库,web架构和思想对我的设计和开发有着很大的帮助。例如我经常碰到要设计通讯协议以适应不可靠的传输,web的无状态特性正是克服不可靠传输的法宝,屡试不爽:-)最近一段时间用ruby作了不少东西,也有用rails,但是从来没有对rai...2008-07-26 15:45:24 · 165 阅读 · 0 评论 -
Ruby/Rails: 不一样的'Web'应用(续)
上一篇文章([url]http://www.iteye.com/topic/219826[/url])发出之后,很多人表示对这个案例很感兴趣,要求我再深入地谈谈。应大家之邀, 我对上一篇内容进行一些补充,谈谈如何在一个传统的嵌入式领域项目中为了拥抱变化而引入web技术,以及用定制的rails框架解决非web应用问题,最后简要地谈谈一般性应用的思考。在上一篇中,我轻描淡写地描述了由于客户对W...2008-07-28 21:23:30 · 155 阅读 · 0 评论 -
Tips: 为源代码树打一个干净的包
为源代码树打一个干净的包------------- 有时候项目源码树中混有一些额外的,临时产生的文件,或者含有些源代码管理工具产生的管理文件,如.svn。这些文件散步在源码树中。 现在我想对源码树tar一个包,又不想让这些临时文件进入这个tar包,怎么办? 最简单的方法就是利用你使用的源代码管理工具。 如果你用svn管理代码,用以下命令:svn ls -R | xa...2009-04-02 13:19:02 · 117 阅读 · 0 评论 -
Ruby/GTK应用笔记(1): Gtk::Toolbar
由于Gtk的Toolbar内部接口发生了一些变化,在使用Gtk::Toolbar#append时可能会发生问题。当你在一个Gtk::Toolbar里面混合用:[code="ruby"]Gtk::Toolbar#append(stock_id)[/code]与:[code="ruby"]Gtk::Toolbar#append(widget)[/code]那么就会得到:[q...2008-08-21 13:04:54 · 211 阅读 · 0 评论 -
Ruby/GTK应用笔记(2): Gdk::Pixbuf
Gdk::Pixbuf是GTK库极为重要的一个组件,从图标到图像控件,到处都可以看到它的身影,Gdk::Pixbuf让GTK使用图像资源变得轻松许多。Gdk::Pixbuf的用法文档说的比较清楚了,就不再重复,值得注意的是,Pixbuf在内部如何存储图像文档并未详细说明,这会给使用带来一些麻烦。1). Pixbuf#pixels: 返回的是内部像素内存的一份[b]拷贝[/b],而不...2008-09-01 17:08:20 · 400 阅读 · 0 评论 -
Ruby/GTK应用笔记(3):垃圾回收
虽然垃圾回收应该属于RubyVM自动处理的事,但是一旦涉及到C扩展,情况就有些不同了。你可以在C扩展中申请资源并增加引用,导致VM无法回收资源--当然,这个属于bug,不幸的是,Ruby/GTK不是bug free :(以下列出一些我碰到的这样的bug,希望后来的朋友可以借此提前看到这个坑,不要踩到里面去。1) Gdk::PixbufGdk::Pixbuf可以用于从文件系统中装...2008-09-14 08:39:13 · 184 阅读 · 0 评论 -
FAT over NAND Flash
引子最近有一个项目需要在NAND FLASH裸片上建立文件系统,由于必须通过USB给Windows访问,所以FAT是唯一的选择。由于FAT不是为Flash设计,因此需要透过FTL(Flash Translation Layer)来访问NAND FLASH。 原本以为FTL的支持在嵌入式Linux下是很成熟的,因为在编译内核时,MTD下就有可选的FTL和NFTL可供选择,但是dig进去才...2009-04-27 21:03:39 · 348 阅读 · 0 评论 -
300行代码你能做什么
我也标题党一回:300行代码你能做什么?本文介绍一个具有builder风格的RubyGnome2布局器(GtkSimpleLayout)不到300行代码,还包括几个实用的除布局之外的增强功能。 前言随着RubyGnome2库越来越完善,以及ruby1.9的性能提升,用Ruby编写GUI程序渐渐从我的业余爱好转为我工作的一个重要部分。 用Ruby写程序确实很有乐趣,它可以让你的想...2009-09-02 14:12:12 · 646 阅读 · 0 评论 -
GtkSimpleLayout Inspector
[b]Inspector介绍[/b]Inspector是GtkSimpleLayout v0.2.x添加的一个新功能,他允许使用GtkSimpleLayout布局的程序在运行的时候探测UI的信息。(有关GtkSimpleLayout,请看[url]http://rubynroll.iteye.com/admin/blogs/460727[/url])对于web开发者来说,fireb...2009-09-06 20:01:28 · 220 阅读 · 0 评论 -
Maemo下跑RubyGnome2
稍微捣鼓了一下,RubyGnome2顺利在Maemo模拟器上运行,截图:[img]http://dl.iteye.com/upload/attachment/144592/5bfa5c18-64ca-3a4f-9c1f-ecae4e32f4f0.png[/img]看来Maemo的风格尚未起作用,难看了点,没有N800或N900,不知道在真机上如何。不过用ruby编写移动...2009-09-09 20:07:01 · 159 阅读 · 0 评论 -
OpenCV+Ruby构建图像处理研究平台
[size=large]OpenCV[/size]OpenCV是一个很流行的图像处理库,它为图像处理算法研究提供了很好的平台,甚至很多产品在OpenCV的基础上稍作修改就可以达到目标。有关OpenCV的介绍,abruzzi有一篇不错的介绍帖子([url]http://www.iteye.com/topic/463668[/url]),所以这里就不再做详细介绍。[size=large]W...2009-09-12 15:31:29 · 298 阅读 · 0 评论 -
SVN+GIT=鱼与熊掌兼得
使用git已经有一段时间了,从使用git的第一天开始,就计划逐步放弃svn.svn有的功能,git都能做到,而且做得更出色,况且git还有很多特性svn望尘莫及,还有什么理由继续使用svn呢? well,理由很多. 比如,git在windows上的性能问题, TortoiseGIT还没有开发出来(或者根本没有这个计划?),团队中其它人员不习惯用git....等等.那么,鱼与...2008-06-13 22:45:36 · 243 阅读 · 0 评论 -
动态模块加载和ELF Loader
很早很早以前就想在嵌入式系统上实现动态模块加载的功能了,期间走了些弯路,直到最近,才完整地在嵌入式系统上实现动态模块加载。=== 动态模块加载的好处 ===动态模块加载的好处很多,例如,当你升级一个系统的时候,可以只升级一个模块,而不必升级整个系统。你可以把不同的模块放在不同的介质上,并实施不同等级的保护,例如BIOS部分进行写保护。有些系统允许用户进行二次开发,这个时候几...2008-06-12 13:09:17 · 1448 阅读 · 0 评论 -
OO Programing in C (1)
[b]OO Programing in C is not only POSSIBLE but also PRACTICAL.[/b]-------------------------------------------------------------------------------- 经常看到关于OO编程的讨论,C++, Java, C#...还有最近很流行的动态语言Pyt...2007-12-24 19:56:12 · 167 阅读 · 0 评论 -
OO Programing in C (2)
[b]OO Programing in C is not only POSSIBLE, but also PRACTICAL.[/b]--------------------------------------------------------------------------------“class“是很多OO编程语言里的关键字,它来源于OO鼻祖Smalltalk。class(类...2007-12-24 20:03:22 · 140 阅读 · 0 评论 -
OO Programing in C (3)
[b]OO Programing in C is not only POSSIBLE but also PRACTICAL[/b]--------------------------------------------------------------------------------OO的一个亮点是类的"继承",通过"继承",可以重用许多代码。而且"继承"也是现实生活中非常自然的...2007-12-24 20:22:55 · 164 阅读 · 0 评论 -
A Simple pseudo keyboard driver for Linux
如果你想把从串口或者其他地方接收到的数据当作是从键盘输入,该如何实现?我最近写了个简单的Pseudo Keyboard (称之为:伪键盘)内核模块来实现这个功能,很简单但很有趣 :)把以下代码存成pkbd.c,编译成模块pkbd.ko,然后用insmod pkbd.ko插入内核。模块插入成功后,会在/proc下建立pkbd文件,以及在/dev下自动建立输入设备(如果你用ud...2007-12-24 21:04:25 · 126 阅读 · 0 评论 -
A simple inter-process lock
Linux程序员通常喜欢用文件锁来做进程间的同步,或简单地用文件锁指示程序进程是否还健在。在ruby里面可以很简单的实现文件锁:[code]=begin file lock for inter-process sync. usage: FSLock('mylock') do # protected by lock, # do your job here ....2007-12-29 11:44:35 · 170 阅读 · 0 评论 -
Debian/Ubuntu Tips: find the right package
Debian/ubuntu下经常碰到需要安装某个程序,却一时想不起到底这个程序属于那个包。在ubuntu下,多数情况会友好地提醒你包的名称,但不是全部。 这时,可以使用Debian网站提供的一个方便的包查询界面: http://www.debian.org/distrib/packages 例如,我想用debuild这个脚本,马上就查到devscripts这个包。...原创 2008-12-12 17:35:09 · 87 阅读 · 0 评论 -
优化Debian/Ubuntu下的ruby
我们都知道Debian/Ubuntu通过apt-get安装的ruby包很慢(参考:各种Ruby实现的性能评测修正版本) 通常我们都是通过自己从www.ruby-lang.org上下载源码并编译安装ruby来绕过这个问题,并且自己编译还可以打上各种补丁,比如这个(解决ruby内存泄漏的超级大补丁发布啦) 但是自己编译的ruby不能被dpkg -l识别,debian/ubu...2008-12-30 19:27:58 · 185 阅读 · 0 评论 -
Rbuild, 让你的项目立即可配置
虽然工作中在用Ruby,却也想在业余的时候用Ruby作点什么东西。以前用C/C++写东西的时候就有过困扰,一个产品系列总是有那么些差异,需要对一个基础软件进行定制,这个型号的要把这个功能编译进去,那个型号的,需要把另外一个功能编译进去...很羡慕Linux内核有一个好用的基于菜单配置的工具,要是在我的项目中也能用它来管理不同模块的配置该多好啊.....不过要想把Linux内核配置那一套拿出...2008-03-25 17:47:59 · 282 阅读 · 0 评论 -
除了Web开发,Ruby还能作点什么
一提到Ruby就Rails,你大概腻了吧? 没关系,看看除了Web开发,Ruby还能作点什么 :)===如果你熟悉嵌入式开发,如果你用C/C++的话,估计离开不了交叉编译工具。虽然网上能下载到编译好的交叉编译工具,但是不一定能满足你的需求,经常不得不自己手动从源代码开始自己编译交叉工具。虽然这不是什么难题,但是就我自己而言,每每碰到这样的问题,都需要到网上google一番,参考一些别人...2008-03-27 18:54:37 · 829 阅读 · 0 评论 -
空格的 ”陷阱“
今天无意中碰到一个空格带来的“陷阱”:[code="ruby"]def a 10endb = a+1=> 11b = a + 1=> 11b = a+ 1=> 11b = a +1ArgumentError: wrong number of arguments (1 for 0) from (irb):8:in `...2008-05-13 12:27:31 · 100 阅读 · 0 评论 -
可以使用Python编程的嵌入式无线模块!
Telit 是一家专业设计和生产无线模块产品的公司,值得注意的是,它几乎在所有的最新产品中集成了嵌入式Python解释器,这样使用者就可以使用Python脚本快速地开发应用,这些Python脚本可以保存在模块内部运行,而不用另外的MCU去和模块进行AT命令交互。想起以前在WaveCom的OpenAT平台上开发应用,那个叫郁闷....以下链接是Telit的一个4频GSM/GPRS模块...2008-05-21 17:45:42 · 275 阅读 · 0 评论 -
嵌入式Linux下常用的交叉编译方法
要在嵌入式Linux下使用动态语言,首先要解决的是语言解释器或执行引擎的交叉编译问题。交叉编译通常有以下几种途径:1. 直接通过交叉编译工具,手工配置交叉编译。交叉编译工具可以利用这个脚本来自动生成:http://kegel.com/crosstool/此方法的好处是简便快捷,一旦crosstool做好以后,需要什么包直接编译即可,而且可控性很强。缺点是对各种配置参数要很了...2008-05-21 17:47:33 · 1016 阅读 · 0 评论 -
交叉编译Ruby傻瓜指南
最近看到有人在交叉编译ruby的时候似乎碰到了许多问题(http://www.iteye.com/topic/322718)。其实交叉编译ruby原本应该是很简单的一个过程,希望这个“傻瓜指南”可以让新手也能够轻而易举地进行操作。注 1: 本文以Arm-linux为目标平台,其他平台需要调整到对应的工具链。注 2: 本文的编译平台是Linux (Debian/Ubuntu),如果在Cygw...2009-02-05 11:35:22 · 394 阅读 · 0 评论 -
Linux tips: allow more than 4 serial ports
搞嵌入式的经常要和串口通讯打交道,在开发的时候有可能同时使用十几个串口,这个时候一个PCI多串口卡就好用了。 但是很多Linux发行版的8250驱动默认限制检测的最大串口数量为4,例如在Ubuntu 8.10有如下配置: cat /boot/config-`uname -r` | grep 8250 CONFIG_SERIAL_8250=yCONFIG_SERIAL_8250_A...2009-02-12 12:58:14 · 428 阅读 · 0 评论 -
交叉编译完全解决方案
[注:本文仅适用于嵌入式Linux系统]背景 嵌入式系统开发的头疼问题之一就是交叉编译。 什么是交叉编译?简单的说,就是程序的目标运行平台与编译这个程序所在的平台不一样,这样的编译方法就是交叉编译。在交叉编译一个软件包的时候,要适当的配置build, host和target参数。 什么是build, host和target ? b...2009-09-18 09:55:47 · 375 阅读 · 0 评论