Archive for category software

用iCal的数据填充pomodoro

最近一段时间一直使用wunderlist管理todolist。使用番茄工作法工作。我用的是pomodoro这款番茄工作法软件。

我遇到的一个需求是想让wunderlist和pomodoro可以协同起来。很简单的需求,这都是由于pomodoro上的一个功能勾起来的。pomodoro它可以从thingsomnifocus(这是两款mac上很出名的日程管理软件,价格相当贵)里面获取出当天的日程安排填充到欲执行的工作安排里。

既然pomodoro没有提供这个功能,那么只要自己动手解决了。在applescript editor里面看了一下,pomodoro提供了

start text: Pomodoro name

的接口,可以设定一个pomodoro名字运行。不过天不遂人愿,wunderlist居然没有提供任何applescript可以操作的接口。

等wunderlist改版那要猴年马月。而且最近对于wunderlist提供功能一点小不满意,索性重新转到iCloud的reminder得了。reminder唯一的小遗憾是只能在apple设备上或者pc浏览器上使用。

说了这么多反正就是我从wunderlist转到reminder了。
我还改动了日程安排的方式:
1、任何想到的todo都记录到reminder中。
2、当天需要行动的todo都变成一个allday event放到calender。
3、当天做的事情都变成event写到calendar里面

然后我写了一个applescript脚本。当需要工作(广义的)的时候就是取出当天的allday event让我选择,然后以这个作为pomodoro name开始一个番茄钟。
附上源码:

	tell application "iCal"
		--获取当天的allday events
		set now to (current date)
		set nowTime to time of now
		set nowDate to now - (nowTime)
		set event_lists to (events whose start date = nowDate and allday event = true) of calendars

		set event_list to {}
		repeat with this_list in event_lists
			repeat with this_event in this_list
				set event_list to event_list & summary of this_event
			end repeat
		end repeat

	end tell
	set selected_event to {choose from list event_list}

	tell application "Pomodoro"
		set pomodoro to selected_event
		if selected_event = {false} then
			set pomodoro to ""
		end if
		start pomodoro
	end tell

, ,

No Comments

instapaper for ios

上上周由于要开发测试我把itouch拿回来了。对于ios上的instapaper应用我是眼馋很久了。这次狠狠心花了4.99美刀买了下来。
我一直是把instapaper的文章发送到kindle上看的。我也很习惯。老实说我是比较想体验instapaper上新加不久的分享功能。

instapaper原有的功能不必细表了,就是从instapaper网站上把你收藏的网页内容拉倒设备上,然后你就可以在手机上(ipad?)阅读了。当然instapaper对于用户的阅读体验把握相当的好。

一、全文分享
在instapaper里面标记文章为like只之后他就会自动把文章共享到你的twitter,facebook,evernote这些上去了。特别的是它会把全文发送到evernote上去,如此针对一些技术性文章我就收藏起来了。

如果不想标记like只是想分享文章。当然instapaper也提供了直接的分享方法。只要选择share按钮就可以了。

二、文章片段分享
只要简单的在instapaper浏览文章的时候在文章中选择你想要的文字然后在弹出的菜单中选择share就可以共享这段文字了。并且也会带上原文链接,就算想看原文,循着链接就可以了。

ps:由于ios的先天性缺陷(没有真真的后台运行),每次只能在instapaper打开的时候才能同步下来文章。
对于我这个itouch用户实在是太不有爱了。幸好我随时可以手机wifi共享给touch用。
instapaper还有个有趣的地方,就是我如果share的时候没有网络,它会在我联网的时候share出去。
我觉得这点比twitter的发送失败就放到draft中让用户重新发送好多了。

No Comments

AroundCal是个好日历软件

今天试用了好几个iOS上的日历软件。在一堆石子中居然让我发现了AroundCal这款颇具创意的日历软件。名字叫做aroundcal,的确也是围绕calendar展开的一款GTD管理软件。

觉得AroundCal很有趣的地方是所有当天的日程安排数量会在图标上显示出来。这样很直观的就可以知道今天还有多少事情没有完成了。既然它会显示你还有多少任务没有完成,那么自然你可以在程序修改日程的状态;系统自带的cal只是能够显示日程而已,而完全没有对日程状态的管理。

AroundCal另外一个很好的是有project管理。这样我就能够按照项目添加日程安排,并且能够看到项目中有多少任务已经/没有完成。自然的,项目中所有的日程安排都是我日历中的一个个日程安排,如此我在电脑上也能够浏览(因为我已经同步了google calendar到本地,本地对日历的修改也会自动同步到google calendar)。

AroundCal并且还有action,action可以对你一个事情工作了多少时间进行追踪,美中不足的是action没有整合到日历中去,而是在aroundcal中独立的数据。

AroundCal把Event整合到Task中去了,我觉得也ok。用这的感觉是没有区分task与event的必要。

No Comments

完美支持cue的播放器deadbeef

ubuntu 中文论坛逛了一下,看到不少人推荐deadbeef这款音乐播放器。我决定试用一下,因为实在是受不了rhythmbox了。

DeadBeef的官网是http://deadbeef.sourceforge.net,上面提供了大多数流行linux发行版的二进制安装包。我直接添加了它的ubuntu源然后apt-get安装的。

下载之后我直接在deadbeef中添加了我整个音乐文件夹,一共是57G,大部分是ape文件。没想到deadbeef处理起来相当快,不像rhythmbox这样会有一段时间的假死状态。特别是我选了rhythmbox总是扫描我的音乐文件夹,rhythmbox每次在启动的时候都会假死。

在deadbeef中终于见到了久违的专辑歌曲目录,它自动匹配了ape与cue文件,有点相当不错的是它没有将ape文件单独添加近来。windows上我最爱的foobar2000在添加文件夹的时候会发生已经添加了cue文件还要添加ape的情况。

在deadbeef中唯一的问题是cue文件中文显示乱码的。这个与cue文件都是gbk编码的有关,我以前尝试过将cue文件转换成utf8编码,但是导致windows下foobar2000中乱码了。我有182个cue文件,这需要写个脚本来处理了,但是为了windows中兼容问题我还是不想转换编码。

我在google上搜索到一篇文章,上面作者修改了deadbeef的源码让它支持gbk:http://forum.ubuntu.org.cn/viewtopic.php?t=303365
下载了他的junklib.c文件与我下载的deadbeef源码中的文件进行比较,由于我已经是新版的deadbeef了,所以两个文件略有不同。经过diff对比,文章作者其实是修改了junklib.c中的默认编码为gbk而已(呃,这里deadbeef作者和文章作者都用了丑陋的做法,我也沿用之。。。。)。按照这个思路我修改了新版junklib.c。

以下是0.5.0deadbeef中junklib.c的diff:

687c687
< enc = "gbk";
---
> enc = "cp1251";
769c769
< enc = "gbk";
---
> enc = "cp1251";
3387c3387
< return "gbk";
---
> return "cp1251";
3389c3389
< return "iso8859-1";
---
> return "cp1252";

2 Comments

evernote的gtalk(xmpp)机器人

我在学习的时候习惯用evernote来记录,然后最近在学习rabbitmq。所以决定简单使用一下rabbitmq,我以前搭建过用来同步发布微博的xmpp机器人。所以决定在机器人原来的逻辑基础上增加一个发送到evernote mail的命令。然后中间使用rabbitmq作为消息中间件。
流程是这样的:
xmpp机器人收到消息之后将消息发送到rabbitmq上。
rabbitmq把消息分发给注册上来的处理程序。
处理程序把消息发送邮件到evernote。

中间的好处很明显,如果直接使用机器人发送邮件的话,在他发送邮件的过程中就无法处理接下去的数据了。现在使用rabbitmq之后就不会发生停顿的问题。决定改造一下机器人,发微薄之类的都可以通过rabbitmq中间件来处理。

, ,

No Comments

学习rabbitMQ

rabbitMQ是一个消息队列系统。最近工作中可能需要使用到。所以看了一下它的入门

rabbitMQ 会动态分发数据给注册上来的callback,按顺序分配任务。
默认 平衡数量,让每个注册consumer获得相同数量的消息
rabbitMQ可以做数据持久,就算server宕机也可以恢复。每个消息处理可以做到consumer返回消息处理完才删除消息。
通过QoS可以实现动态负载均衡(consumer 处理完数据之后再分配一个新消息,简单的说就是consumer是空闲的才给分配消息,否则不分配)http://www.rabbitmq.com/tutorials/tutorial-two-python.html
rabbitMQ通过exchange把消息同时放入多个队列。
队列注册到exchange,所有发往该exchange的消息会发送到所有注册的queue中。

http://www.rabbitmq.com/tutorials/tutorial-three-python.html

rabbitMQ topic bind http://www.rabbitmq.com/tutorials/tutorial-five-python.html

rabbitMQ的一些高级的分配消息的方式就是 routing、topic。

1 Comment

vim 保留符合规则的行

今天准备开始按照LFS搭一个linux起来。要下不少源码来着,于是直接从pdf里面考出源码的路径,但是里面超过1/3都是不需要的行。需要的都是符合模式:

^Download: 

以前我遇到这种情况都是用grep来解决问题的。

grep "^Download:" list.txt > list

今天突然想如果用vim里面的replace倒是可以把这些行都删掉,但是怎么删除非这种模式的行呢。

:1,$s/^Download: .*//

在google上搜索了一番,我找到了 global 这个vim的命令。呃,用了这么多年vim居然从来没有用过这个命令……白混了。
可以在这个网站上学习到很多的vim模式搜索与替换的技巧。http://vimregex.com/

用global可以很容易的办到留下符合规则的行这一要求。

:g!/^Download: / d

No Comments

gtalksms 远程操作android手机

偶然在google code上看到的一个很酷的托管项目:gtalksms
他在实现了一个xmpp机器人,只要你在自己的gtalk(xmpp)上增加这个机器人为好友,就能像聊天一样远程操作自己的android手机了。

它实现了以下的功能(来自官方说明)。
主动提醒的内容:
转发收到的短信。
来电提醒。
报告电池状态。

需要命令交互的:
回复短信。
发送短信。
看最近五条短信(也可以指定联系人)。
让手机突然响铃。
发送手机位置信息(google maps 链接)
把文字复制到android phone剪贴板。
查看联系人信息。
让手机打开链接。
拨号(输入号码,需要手动拨出)。

我在手机上用了一个多星期的感受是转发收到的短信比较有用,平时我基本都在电脑面前。有短信来了我还要打开手机看,有了它我就直接在电脑上就可以看短信了。并且还能直接发送短信。

No Comments

yuchberry-一个个人的黑莓邮件推送服务

yuchberry-a personal blackberry push mail service

使用yuchberry可以搭建一个个人的黑莓推送服务,这事我知道有几个月了。可是之前用那个cdma/gsm双模8830的时候由于它网络太差导致我都没兴趣在他上面折腾网络应用。便宜贪不得啊。前几天突发奇想把两个坏掉的8700合并成一个,没想到成功了。于是就想着折腾一下yuchberry,也让我用用黑莓的push mail。
黑莓的push mail是于短信系统结合在一块的,邮件收发就与普通短信一样,这是最赞的地方了。

如何搭建一个yuchberry服务器我就不多说了,具体可以到yuchberry的官方网站(http://code.google.com/p/yuchberry)上去看说明。

由于我是在一台debian vps上搭建的服务器与yuchberry的作者在windows上的环境可能有所不同,所以我遇到了收到中文email正常而发送中文email会变成乱码(都是???)的问题。

首先我排除了是黑莓端发送数据到服务器是乱码的问题,因为我在服务器上的签名文件中的中文发出来也是乱码的。所以我把问题定位在服务器上。通过查看yuchberry的源代码,我猜测是由于linux vps上的环境是英语的所以导致发送email之前初始化javamail message时将mail设置成英文编码了。于是修改代码编译运行果然搞定问题。

下面是diff文件。

<br />
Index: fetchEmail.java<br />
===================================================================<br />
--- fetchEmail.java	(revision 469)<br />
+++ fetchEmail.java	(working copy)<br />
@@ -736,7 +736,7 @@<br />
 	<br />
 	public void SendMail(RecvMailAttach _mail)throws Exception{<br />
 		<br />
-		Message msg = new MimeMessage(m_session_send);<br />
+		MimeMessage msg = new MimeMessage(m_session_send);<br />
 		<br />
 		String t_signature = "";<br />
 		<br />
@@ -761,7 +761,6 @@<br />
 				}else{<br />
 					m_sendTransport.connect(m_host_send,m_port_send,m_userName,m_password);<br />
 				}<br />
-				<br />
 				m_sendTransport.sendMessage(msg, msg.getAllRecipients());<br />
 				m_sendTransport.close();<br />
 				break;<br />
@@ -1137,7 +1136,7 @@<br />
 	<br />
 	public void SendImmMail(final String _subject ,final String _contain,final String _from){<br />
 		<br />
-		Message msg = new MimeMessage(m_session_send);<br />
+		MimeMessage msg = new MimeMessage(m_session_send);<br />
 		<br />
 		fetchMail t_mail = new fetchMail(m_mainMgr.m_convertToSimpleChar);<br />
 		t_mail.SetSubject(_subject);<br />
@@ -1496,7 +1495,7 @@<br />
 		return _name;<br />
 	}<br />
 	<br />
-	public void ComposeMessage(Message msg,fetchMail _mail,fetchMail _forwardMail)throws Exception{<br />
+	public void ComposeMessage(MimeMessage msg,fetchMail _mail,fetchMail _forwardMail)throws Exception{<br />
 		<br />
 		msg.setFrom(new InternetAddress(m_strUserNameFull));<br />
 				<br />
@@ -1513,7 +1512,7 @@<br />
 	    }<br />
 		<br />
 <br />
-	    msg.setSubject(_mail.GetSubject());<br />
+	    msg.setSubject(_mail.GetSubject(), "UTF-8");<br />
 	    <br />
 	    MailIndexAttachment t_forwardMailAttach = null;<br />
 	    if(_forwardMail != null){<br />
@@ -1592,7 +1591,7 @@<br />
 	    } else {<br />
 			// If the desired charset is known, you can use<br />
 			// setText(text, charset)<br />
-			msg.setText(_mail.GetContain());<br />
+			msg.setText(_mail.GetContain(), "UTF-8");<br />
 	    }<br />
 <br />
 	    msg.setHeader("X-Mailer",_mail.GetXMailer());<br />

4 Comments

lingoes词霸玩大了吧

lingoes是挺不错的,作为一款词典类软件还是挺不错的。支持鼠标取词、剪贴板取词,字典也很多,还能够调用网上很多的翻译网站进行语句翻译。

我应该是在它刚刚出来不久就用过这款软件了,我喜欢他的小巧简介。当时用了一段时间之后就发现他的一个很让我难以接受的问题,到了一定时间就让你强制更新,方法是不让你使用。关键他不是联网检查有新版本了才让你更新的,而是该版本发布多久之后就强制让你更新。他的初衷我很能理解,让所有用户用上新版本比较容易处理一点。只是这种更具时间判断让用户升级的策略实在让我难以苟同。

果然,lingoes终于玩大了。已经好多天了,我的lingoes都不能使用,最后一个版本设定的升级时间到了,可是lingoes的开发者没有发布新的版本。也就是说最后的版本非要你升级新版本,不升级不能用,可是又没有新版本出来。没法用了。

windows上的词典类软件我知道的有:
金山词霸,它有免费版和收费版。收费版我有一个授权,用下来感觉没什么意思,免费版就够用了。
有道词典,免费软件,不错。
金山词霸与有道词典都有windows版和手机版,不错的。

No Comments

SetTextSize SetPageWidth