把玩nuvi 285W

No Comments

 

IMG_1404

图形化编程语言sikuli, 当时我就震惊了

1 Comment

你见过这样编程的么?

Sikuli.png
截几个图,说几个命令.电脑就乖乖的帮你做事.当时我就震惊了.
这就是Sikuli, vgod同学带给我们的一个神乎其神的东西.话说vgod童鞋的vim cheat sheet 还一直摆在我的桌前没有背熟,这下他在MIT带来的东西好玩多了.

一.什么是SIKULI

SIKULI是一个基于图形化编程语言.它的输入很多是基于截图的,再加上少量的命令.它不需要任何内部API的支持.能够自动操作任何屏幕内的元素.并且是夸平台的(依据JVM,但是JVM是夸平台的).

那SIKULI是啥意思呢, SIKULI在墨西哥语中表示上帝的眼睛(God’s Eye)

二.怎么编程阿?

SIKULI自带了一个IDE.非常小(12M).剩下的工作就是截截图,做点测试. 我也是刚使用不过30分钟.在写这篇blog之前做了一个自动打开firefox,登录Gmail,然后发送一条Buzz消息的自动化小程序.看看啥样子吧:
sikuli_gmail.png

sikuli_gmail_1.png

流程非常清楚:打开firefox,开启一个新的tab,输入gmail网址,然后是用户名和密码(我采用的是自动记录的的方式.) setAutoWaitTimeout(5000)等5秒钟(单位应该是秒吧,猜的!!!)
然后点击Google Buzz等待输入框出现,然后点击输入框, 使用type命令模拟输入”Hi I can change my status using Sukuli”,点击post,搞定!

三.使用感受

  • 编程体验相当好.当然一定要想清楚流程(有时候要很傻瓜的方式).基于截图的,有时候识别的不是很好.而且对模拟的环境要求较高.可能有时候自动化脚本不能执行;
  • IDE暂时比较简陋.按 (<–) 在tab间跳来跳去的;
  • 汉字输入(中间要有一个环节是自己去切换输入法);
  • 测试的时候有时候死锁独占资源.比如firefox的截图不匹配时,程序不会自动退出,而是等待匹配的图像.(可能有高级的条件判断语句等,还没看document).

四.它能干嘛?

只能说use your imagination吧. 随便说几个:

  1. 自动完成日常操作,收邮件,数据库备份,以及诸如清理系统垃圾(如何和系统定时程序如*nix的crontab结合成为了一个不错的脚本)(apple script也很强大,但是稍难);
  2. 自动发送消息(Twitter,Google Buzz, Plurk),如何SIKULI提供一些系统内置函数,比如时间函数,至少可以做个自动报时的机器人嘛;
  3. 完成一些程序和软件的自动测试,甚至比较NB的人可以用它来玩游戏,像鼠标自动点击器;
  4. 还有个比较N的,可以拿它去玩QQ的连连看游戏,输入截图,让程序自动去匹配,然后你就在边上看.嘿嘿!
  5. Jython的实现,可以使用Python去调用,方便集成;
  6. 让我知道了Image Processing还是很强的!

太阳陨落–悼念理想主义者的悲情谢幕

No Comments

我承认好久没有去关注Java社区了,Sun的被收购也是全年了解的,也没有持续关注一下.

So long, old friend

So long, old friend

Java之父James Gosling的一遍On the Java Road让我这个渐行渐远的技术nerd也回想起残存却深藏的对Java的记忆.

vole 写道”也许,Sun的悲情陨落,仅仅是再一次证实了技术至上的宿命,但是理想主义者们的悲情谢幕总是令人感慨。人固有一死,或重于泰山,或轻于鸿毛,一个公司也是一样,能像SUN一样对计算机科学以及IT行业产生如此重大的影响,足以名垂青史.好在,这家叫Standford University Network的公司,有了同样来自Stanford,同样技术至上,同样理想主义的Google作为继任者.而Google的第一笔投资正是来自SUN的创始人之一Andy Bechtolsheim。历史总是充满着巧合,正如伽利略逝世那天,牛顿出生. Google是否就是为了传承SUN的衣钵而来到这个世界?”

我的Java之路

企业之间的生存利益和血腥已不是我所能关注和了解的.我常常自诩是一名Java程序员,然后才是程序员.程序员的对语言的强脾气就如同一名战场上的士兵对武器的狂热.我不去想Java的未来,我不去关注Java社区,尤其是那些每个月拿着写Java代码换来蜗居生活的程序员们对Beyond Java的态度.我是一个卑微的不想多问多看只想关注自己想法的技术理想主义者.Java深深的影响了我.从我被带到Java这条道上.

2006年我几乎折腾于任何和电脑相关的技术:Flash,Photoshop,VBScript,Asp,HTML,C,Linux(第一次在我的本上装上了自己刻了2张盘的Red Flag,当时我就激动了),后来在一个材料系的学长指导下学习ASP,很感激当时他送我的两本复印的ASP教程,惭愧的是我都没怎么摸过.

07年3月接触Java,上来就是一堆的JRE,JDK,环境变量,也是从那时候培养起了一个爱好,打开命令行就敲:java -version,那段时间其实是受到一个辅导员的打击,告诉我ASP没前途,他当时自己拿着个Spring在看,当时很不理解,说看春还不如去发.后来证明春确实好发不好看.改投Java的阵营自己看了很多的视频,当然成效都是甚微的.自己动手去写代码才是王道.07年12月我才算是顿悟了很多,顿悟不代表我会写什么代码,而是我明白了Java界和JavaEE界的知识结构以及各个知识的关系.可能你听过J2EE,听过Struts,听过Hibernate,听过Spring,听过Ajax,听过JSP,听过Flex,听过Ant,听过,Struts2,JDBC,JMS,EJB,Apache,SVN,MVC,jQuery,DWR,iBatis,但是你会疯掉,你不知道他们之间的关系,你更不明白,他们为何存在,以及他们存在的目的是为了什么.请你听我的,明白这些真不容易,多少人从中而退了,可当你一旦知道了它们,你会爱上Java或者爱上开源世界里这么多可以为你服务的代码.

第一次的我对面向对象的理解献给了Java,第一次的我对软件分层架构的理解献给了Java,第一次的我数据库的对象封装形式操作献给了Java,第一次…

第一次的我对敏捷开发的实践献给了Java,第一次的我的实习经历献给了Java,第一次的我对项目带队开发的经验献给了Java,第一次…

第一次的我对如何重构代码献给了Java,第一次的我对高级js的理解献给了Java,第一次的我对部署管理献给了Java,第一次…

Java影响了我的生活,我试图用MVC的思想去理解现实世界的一些流程,我用Java的思想去学习一些新的语言,甚至以这门语言不如Java这么简单而去暗自神伤,因为我知道是它把我抛在门外而java确容我入怀中.

前段时间在纽约的同学给我打电话问关于Java EE与找工作等问题.个人感觉北美人宠ROR的居多,国内Java EE的程序员俯拾皆是.但鲜有Rod之类的大师.方向确实挺重要但有时也要看你朝这个方向走了多远. 走深了有时也能发现很多风景.

形似一篇无聊的软文,悼念是主题,附关于JavaEE RAD的一个PPT:

Unix下的几个文件

1 Comment

Unix或者类 Unix系统/dev下有几个很特殊的文件.他们就是:


No 1: /dev/null

这个/dev下放的是系统和用户的设备文件. null是个文件名. 被称为 the null device/dev/null这个童鞋脾气有点大,听不见别人任何话,所以呢任何话传到他耳朵里都被当成耳旁风了.当然更可恨的是他竟然还假惺惺的点头说听到了.当然他是很诚实地说的.
/dev/null or the null device is a special file that discards all data written to it, but reports that the write operation succeed.
所以呢,你心情不好的时候,或者你有个秘密憋的慌想说但是又怕周围人有个big mouth的时候来,可以和这个娃说说. 用程序员的黑话(jargon)说他是个’黑洞’(black hole)或者’位筒’(bit bucket).

dev_null.png
这么写的话,程序的提示信息就被丢到太平洋去了!
知道了这个,下面几个隔行如隔山的话也就好理解了.
1.Please send complaints to /dev/null
2.my mail got archived in /dev/null

几个扩展:
1.cat /dev/null > /var/log/db_log (清空日志文件的内容)
2.”>/dev/null 2>&1“(的理解)
  • > 代表重定向到哪里,比方:echo “123″ > /home/123.txt;
  • > 输出给这个不听话的娃,/dev/null ;
  • 2> 表示stderr标准错误 ;
  • & 表示等同于的意思,2>&1,表示2的输出重定向等同于1 ;
  • 1 表示stdout标准输出,系统默认值是1,所以”>/dev/null”等同于 “1>/dev/null” .

因此,>/dev/null 2>&1也可以写成”1> /dev/null 2> &1″:

1>/dev/null :首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。

2>&1 :接着,标准错误输出重定向 到 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

最常见的写法: command > file 2>file 与 command > file 2>&1(这个效率更高点,可以从打开文件的次数角度去分析.)



No2. /dev/full

这个娃天生胃小,整天处于吃饱状态.送啥吃的来都不接受.那你说把这个家伙放在unix里面干嘛.This device is usually used when testing the behaviour of a program when it encounters a disk full error.测试某些程序在磁盘吃饱状态下的错误.


Screen shot 2010-01-28 at 7.32.23 PM.png



No3. /dev/zero

这哥们有很的0,MS是很有钱.他实际上产生连续不断的null的流(二进制的零流),写入他的东东会丢失不见,然后呢会给你一串的null值,这个一般不好发觉./dev/zero主要的用处是用来创建一个指定长度用于初始化的空文件,就像临时交换文件.

dev_zero.png



主流操作系统的云存储

No Comments

随着Google的Chrome OS的揭幕,基于Cloud Computing的Web Desktop似乎一下子成为新潮.话说IBM也在赶这时髦,搞了个eyeOS.似乎云端的概念正走入我们的生活.当然那些老牌的操作系统也未停滞不前.现小结一下主流操作系统下的云存储:


一. Windows平台

SkyDrive 作为微软bing旗下的一个大款服务.说大款是因为他提供了25G的免费空间.


SkyDriver_25g.png

着实让人用不完.同时,还有诸如 Windows Live Hotmail(无限空间)和 Office Live Workspace (500M).

服务虽然不少,但一个让人头疼的问题是这些服务之间无法同步,甚至登录了’摸死你’还是无法登录Live Workspace.另外一个问题是作为大手笔的SkyDrive,现下还没有很好的官方客户端支持上传.微软仅提供了一个IE的插件.着实吊人胃口.感兴趣的可以参考LiveSino上介绍的非官方客户端.


二.Linux/Ubuntu

Ubuntu9.10下自动集成了Ubuntu One服务.


ubuntu_one.png
Ubuntu One提供了2G的免费空间,支持Upgrade.下图为其Dashboard.

ubuntu_one_dashboard.png

顺便说下,Ubuntu One服务不是非要在Linux/Ubuntu下才能使用.你也可以直接狠敲这个链接去注册一个.当然在Ubuntu下可以与本地文件实现同步.在宿主系统下有他的优势.但是这个2G的免费空间算是又赚了.

More

Older Entries