Good good study, day day up

aleung的学习笔记, aleung的idea

首先,我得承认:我又在折腾了。

这些年来,用过好多种任务管理(to-do)工具,包括low-tech的,电子化的,始终没有一个完全满意。最近一段时间又纠结于此,寻找、尝试各种工具,花了不少时间,真是有点本末倒置啊。

经过多年的练习,已经逐渐明确了自己对任务管理工具的需求是什么:(优先级从高到低排列)

  • Available on both PC and Android, data are synchonized between devices
    手机是随身携带的,因此要支持Android手机,并且在网络离线时也要可用;手机输入文字速度还是比电脑上慢,屏幕小有局限,输入、整理等工作在电脑上做更有效率。
  • 随时都可以快速将新的任务记录下来
    这是GTD中所强调的inbox的功能。创建新任务的界面必须尽可能简单,需要输入的信息和步骤越少越好。
  • Be able to set start date of a task, hide future tasks
    这个功能很多工具都缺乏。Start date与due date是不同的:due date是dead line,大部分任务没有due date;start date是自己对任务的安排。对于不需要马上做的任务,安排好开始的时间,就从当前任务列表里隐藏了,可以更专注于当前任务。
  • 区分不同任务:new(inbox),scheduled,someday;方便的改变任务类型
    新任务的记录是清空大脑的过程,需要review后安排具体处理时间;someday是那种还没有想到该什么时候做的任务(也有可能是其实不需要做的)
  • Easily schedule / reschedule tasks
    用简便的操作就可以安排任务执行的时间
  • Recurrent task
  • Integrate with calendar
    日程表跟任务列表整合起来,相互可以转换。以前写过一些想法
  • Set due date to a task
  • Sort tasks in list by drag’n’drop
    相比起为任务设置priority,我更喜欢直接将任务拖放改变顺序。有时候说不清一个任务到底属于哪个priority,但会知道几个任务中哪个应该先做。
  • Apply tag to a task
  • Batch operation

最近将网上找到比较出名的工具都试用过了,记录下简单的评价(针对我的需求的):

阅读全文 »

Good good study, day day up 这个博客从2001年就开始写,正如副标题所说,定位为记录学习心得和一些想法(之前我还有另外一个摄影、旅行主题的博客),基本上谈的就是理科生的话题。原来一直是放在BlogBus上的,直到去年初,实在忍受不了BlogBus疯狂的内容审查,搬出来做独立博客。

查看历史记录,在这个搭建于Google App Engine上的新blog上发的第一篇文章是在去年的2月14日,居然是在情人节!今天是2月13日,也就是这个独立博客已经一周岁了。

统计一下新blog这一年里发布的文章有30篇(不包括更新的旧文章),平均两周一篇,比我自己印象中的多了。希望自己今后能够继续保持这样一个习惯。最热门的文章是”在Android手机上使用SSH tunnel翻墙“,其次是”Google中国地图偏移“。

新的blog留言需要用Google帐号登录,spam是全没有了,但是留言也冷清了好多。没想到什么办法既方便又能杜绝spam的。不知道有没有方法通过Google Buzz或者Twitter来留言呢。另外一个问题是搬家之后搜索引擎的收录不理想,一些关键字的搜索结果还是指向我原来的blog。

搬到GAE上,就已经准备好要被墙,一年下来appspot.com被封被解封反复多次,似乎到目前为止这个blog还能直接访问(不知道不同地区的情况)。但是,即使被封也不会再搬回墙内,作为一个软件开发者,受困于信息封锁就意味着被技术发展所抛弃,我的博客读者不应该是这样的人。有人说翻墙太麻烦,老想找免费的方法当然麻烦,还是花点钱买个ssh帐号吧,便宜的就是一年几美元。每个月上百的ADSL费用都舍得花了,就不要吝啬这一年几十块钱了,无障碍获取信息的价值就远远值回来了。

阅读全文 »

之前我写过一系列文章介绍Android系统用ssh翻墙的想法,现在有人把整合的软件做出来了:sshtunnel

与TransProxy类似,sshtunnel也是内置了redsocks作为HTTPS/SOCKS redirector,使用iptables重定向网络流,不同的是它还使用了trilead-ssh2代码(作者说来自于ConnectBot)来做SSH client,因此这一个程序就可以完成整个过程,操作简单。根据文档说明和大致浏览代码,貌似没有使用SSH dynamic port forwarding,而是要求SSH server端安装了HTTP代理服务器,SSH连接纯粹是tunnel了到服务端HTTP proxy的连接。

Update: 作者说,不使用SSH dynamic port forwarding是因为受限于Android手机的机能。我之前测试用ConnectBot做SOCKS proxy的时候就总是遇到CPU占用100%的问题,估计作者说的就是这个。

阅读全文 »

之前寻找同步twitter到新浪微博的方法,没有尝试到满意的。@cutemic介绍说他是在GAE上跑一个叫twitter2sina的python程序,周期性读取自己的tweets,再调用API发送到新浪微博。

程序员的基本素质是懒惰,因此我问@cutemic他安装的程序是否支持多用户,如果支持,我就懒得自己折腾,让他给我加个用户好了。很可惜,他的程序是要将新浪微博用户名密码hard code到程序里的,那我只能自力更生了。

装起来之后,本着助人为乐的精神,考虑把这个服务也提供给别人使用。看看代码,调用新浪微博API是用Basic HTTP认证的,需要提供用户名和密码,这样太没有安全感了,别人不敢用的。如果改成OAuth,用户就不需要提供密码了。

动手尝试修改,于是,就有了这个TwitterSinaSync

代码大概的历史:

阅读全文 »

去年底RememberTheMilk的pro帐号到期了,于是又折腾了一下看看有没有好用的类似工具,发现了一个在线任务管理的新秀:GQueues。GQueues的功能和界面都不错,我比较喜欢它的一点是没有用高中低的任务优先级,而是让你在列表中拖放任务改变顺序,排在最顶的就是需要优先处理的。有些事情你很难界定应该是属于重要性高还是重要性中等,但是如果几件事情放在一起,就很容易分出哪个相对更重要一些。

但是,GQueues没有开发手机本地应用,在手机上只能通过浏览器访问。虽然它的网站有专门为移动设备优化,但还是不如本地应用便捷。而且很重要一点,不是任何时候都能访问到网络的,想起一件要做的事情,却因为连不上网而无法记录下来,只能留在脑子里或者要记录到别的地方,这样不符合GTD的原则。

为此,我写了一个简单的Android应用,做的唯一事情就是往GQueues inbox里面添加新任务,并且允许离线使用:如果没有网络,任务会暂存起来,在有网络的时候后台自动发送出去。软件介绍:http://www.appbrain.com/app/gqueuesinbox/leoliang.gqueuesinbox

不过,因为GQueues部署在Google App Engine上的,IP地址被GFW屏蔽,在国内无法直接访问。解决办法是自己将可以访问的IP配置到hosts文件里面,无论是PC还是手机都要如此处理。

阅读全文 »

很久没有玩户外了,对相关的新闻不再关注。复旦大学生黄山遇险的事情网上流传很广,但我一直也没有点进去看过。今天在Google Reader上看到朋友转发的文章,终于知道是怎么回事了。

关于救援技术和道德层面的东西就不说了。磨房有个帖子,从队伍被困就开始讨论了,可以从中了解一些细节。说说我的几个感想:

  • 户外救援这事情上,警方的技术水平和装备水平都非常差。对于他们,应该少些政治学习,多些专业训练;少些吃喝嫖赌,买些专业装备。但明显他们是做不到的,所以还是别指望他们了。
  • 这类事情由警方(或者政府部门)包办并不是好办法,很多民间的户外爱好者和从业人员组织起来都能够做得比他们好。但是政府视民间组织为洪水猛兽,生怕造他们的反。
  • 被困队伍虽然说GPS落水怀疑故障,但他们其实还是定位出自己坐标的。如果配合小比例尺地图,无论是自救还是他救都会比较容易。但是我们在自欺欺人的将这个当国家机密。网上倒是有驴友根据Google Earth卫星图和美国公开的SRTM数据制作等高线图辅助分析了。 (BTW,在maps.google.comditu.google.cn上分别输入这个坐标:N30 07.663 E118 11.892,仔细看看,标出的地点是不同的,偏差五六百米。只不过恰好在同一条沟里)

贴两张Google Maps的截图,绿色箭头处是被困地点。

fudan_huangshan_1

阅读全文 »

现在已经有好些智能手机应用可以用来帮助追踪丢失了的手机。有些是当插入不同的SIM卡时触发跟踪,有些是在网络上触发跟踪。我想到另外一个方法:每当手机打开屏幕离开休眠状态时,前置摄像头自动拍摄一幅图像,对画面中的人面进行识别,如果判断不是机主,就将图像上传服务器,并且开启定位跟踪,不断将轨迹上传。这样,不但可以知道手机在哪里,还获得了拿着手机的人的相貌,因为一般人打开手机的时候都是拿在手上,正好前置摄像头就可以拍下面部照片了。

Answer to questions:

  • 只有前面有摄像头的手机才能支持这个功能?

没有前置摄像头的手机不能用,这也是这个idea区别于已有应用的唯一区别。有前置摄像头的智能手机会越来越多的,iPhone推facetime, Android下个版本也会在GTalk里支持视频聊天,硬件肯定要跟上。

  • 朋友用了这个功能的手机怎么办?
阅读全文 »

Lifecycle of Android activity is always confusing beginners. The Activity class has defined dozens of callback functions, all begin with “on”. Some of them are triggered by UI events, some are lifecycle related. It isn’t easy for developer to remember the usage of them.

An activity has essentially four states, when some event happens, like user navigates between different activities, state transites. There are lots of callback functions which will be called by framework when an activity transites between states. So the activity lifecyle is ideally modeled in state machine. However in Android SDK document, the Activity Lifecycle is descripted by a diagram and table of callback functions. It explains the order of the callback functions being called, but a developer can’t clearly understand in whatcircumstance each callback function will be called.

I tried to draw an UML state machine diagram for Android activity lifecycle:

Android Activity Lifecycle

If you aren’t familiar with UML state machine diagram, read the introduction on Wikipedia.

阅读全文 »

前两天在项目的测试环境中发现有一个Java实现的 Tiny HTTP server,就一个Java文件,不知道同事从哪里找来的。用来临时从服务器上下载些文件,或者查看HTML文档(例如 JUnit test report, JavaDoc)之类的非常方便。它只支持HTTP GET方法,URL必须指向一个文件。我顺手修改了一下,让它可以列出目录,这样用起来更加方便一些。

运行时可带两个参数:port, http root directory。例如:

$JAVA_HOME/bin/java httpServer 8080 /tmp/test-report

P.S. 网上搜索一下,我的同事应该是从这里找到这段代码的:http://www.java2s.com/Code/Java/Tiny-Application/HttpServer.htm

阅读全文 »

第一次到荷兰的时候,同行同事就说,荷兰人开车怎么都不让行人啊。住的酒店附近几条路都不宽,也就是广州小区里的道路的宽度,车也不多,路口没有交通灯也没有斑马线,但是我们过马路的时候汽车都不让我们,跟在瑞典受到的礼遇差远了。当时我们就说,看来荷兰人不如瑞典人谦让啊。

但后来呆的时间长了,发现也不全是这样,当在斑马线上要过马路时,即使我们习惯的站在路边等待,即使汽车以很快的速度飙过来,大多数司机都会将车停在斑马线前让我们过去。我就想,也许是刚来的时候定论下得太早了,其实多数荷兰司机也让行人的。

抱着这种”在路口过马路时汽车会让行人”的心态,在一些路口又碰了麻烦。住处的附近有个丁字路口,准备右转的车会停在路口前,我经常趁这个机会就过马路,以为他们是故意让我的。但有时我刚要过马路的时候它又起步了。

后来,我才发现了区别:那个丁字路口虽然用横穿马路的线标示行人自行车横过的路线,但却没有画斑马线。在有斑马线的地方,即使你只是站在路边,多数汽车都会完全停下让你先过;而想在没斑马线的地方过马路就得非常小心,一定要完全没车才能过,汽车不会作丝毫减速避让。这与道路的宽度没有关系,与车辆多少行人多少也没有关系,一切按照标识。习惯了之后就发现这非常好,行人车辆都守规矩,行人不怕被车撞,车辆不担心撞到人,相互都不会影响到对方。

类似的情况也体现在车辆行驶上。在欧洲,坐车离开城市范围后,公路往往都不宽,甚至只有两车道,不时会有分叉路口或者十字路口,都没有交通灯的,但是司机一路都开得很快,不会在路口前减速,仿佛他从来不担心路口会有车驶出来。仔细观察后发现路口前都会有交通标志,用粗线和细线标出交会的道路,我们走的路是粗线,司机是不会减速的,但如果我们走的路是细线,司机就会在路口前减速或者停下来。

阅读全文 »