经@TsienS同学测试,这个版本还是有问题,暂时停止测试……
这个版本主要对8700 4.2 OS的用户发信息时报
Uncaught exception:blocking operation not permitted on event dispatch thread进行实验性修正,希望8700 4.2 OS用户对这个版本进行测试并及时将结果反馈给我。其它系统不必进行更新。
另外从这个版本开始,将直接从google code的project host提供OTA下载链接以及打包下载链接。
经@TsienS同学测试,这个版本还是有问题,暂时停止测试……
这个版本主要对8700 4.2 OS的用户发信息时报
Uncaught exception:blocking operation not permitted on event dispatch thread进行实验性修正,希望8700 4.2 OS用户对这个版本进行测试并及时将结果反馈给我。其它系统不必进行更新。
另外从这个版本开始,将直接从google code的project host提供OTA下载链接以及打包下载链接。
暑假入了一个8700来玩, 受迫于没有一个方便而使用代价可以接受的GTalk客户端, 于是决定自己动手写一个符合自己使用习惯的客户端. 于是BTalk就这样诞生了. 到现在已经过了差不多3个月了, 但除了在google code的项目主页以及berrymail上的发布贴, 还没正式的把它记录下来过. 现在把相关的信息整理记录下来, 顺便可以记录一下开发过程的问题和经验总结, 也算是开发日志了吧.
我将BTalk定位为一个专门针对BlackBerry主流机型的,轻量级的GTalk客户端。其中轻量级主要针对目前手机上的其它综合型IM客户端而言的,BTalk不会刻意去增加其它IM的支持,不过欢迎有兴趣和时间的朋友自己进行修改;另外,由于GTalk本身就是一个XMPP协议的即时通信服务,所以理论上以后可以通过更改服务器地址的方式,来使用其它XMPP协议的IM(这个功能以后会考虑加入BTalk中)。BTalk的使用风格会尽管与官方的GTalk接近。
这里要专门说一下JXA(J2ME XMPP API)项目。JXA项目算是BTalk的鼻祖了,它是一个基于J2ME平台的XMPP协议客户端,提供了一些简单的XMPP功能,但是对目前的BTalk来说这些功能已经足够了。不过不足的一点是JXA使用了GPL许可证,使得BTalk也只能以GPL系列许可证发布,这对其它希望对BTalk进行进一步改进的朋友来说也许限制较多。后面如果有机会希望能换一个许可证更宽松的XMPP库来用。
以后关于BTalk的开发/功能细节问题的讨论我将移到这里以及google code的主页上进行。另外我个人公开的版本也都统一从这里进行发布,这样也能避免版本混乱,而用户也能及时获得通知(通过RSS订阅的方式)。如果有需要转载的朋友希望能注明出处。
最后,欢迎大家在这里或google code的BTalk页面参与BTalk相关的讨论~
今天发现一个新的Google服务提醒工具——googsystray. 和以往的提醒工具单一提供gmail的新邮件提醒不同, 这个工具可以同时提供gmail, wave, voice, reader, calendar等多个服务的新消息提醒. 其主要用 python编写,支持windows/linux.其中 linux版当然需要有 python支持,而且还要有pygtk. 这是发现checkgmail以来发现的第一个有所超越的桌面提醒工具. 先试用一段时间,如果确实好用的话checkgmail就可以退休了.
下面是官方网站给出的若干截图:
googsystray的项目主页:http://googsystray.sourceforge.net/
今天看到 wordpress有专门的 blackberry客户端.就赶紧下下来发篇文章试试.
虽然还未正式发布,但功能已经相当完善.可以读取已经发布的文章. 发布文章时可以选择分类,加tag,甚至还可以加图片.编辑完可以先保存在本地的草稿箱中待以后上传. 可以说功能是非常强大了 .而且项目还是开源的.有兴趣的tx可以阅读项目的源代码.
目前发现的一个问题是标题不支持自动图文集.导致我的 autotext五笔不能正常输入.只能到正文输入然后再贴过去 …
今天在用BlackBerry的Native UI库写BTalk界面时,遇到一个莫名其妙的异常:”UI engine accessed without holding the event lock”,看代码看了半天没搞清哪里抛出来的。
后来去网上查了一下,发现原来是由于BlackBerry的UI架构中避免多线程竞争等情况的一个机制引起的异常。BlackBerry中限定在同一时间内,只能有一个线程对UI执行更新操作,并且这个线程默认就是UiApplication子类的主线程。而其它线程如果直接试图修改UI,就会引起这个异常。
后来又在一个大牛的BLOG(http://rob.wemakewebsites.co.nz/index.php?p=39)上找到一个非常简单的解决方案。如果需要在非主线程中更新UI,则可以先請求Block主线程的执行,获取UI的控制权,然后更新UI,再释放控制权。大概形式如下:
synchronized (UiApplication.getEventLock()) {
doSomethingWithUI();
blablabla();
}
同时注意在synchronized块中不应该出现wait之类的会导致死锁的情况,所以使用应该小心。不过这个方法相对网上的很多其它通过在請求队列加入UI更新請求的方法来说,还是方便很多。至于效果和负作用,则看以后测试的情况了。
又开学了…
这学期虽说课少了很多,但事却多了不少…
提交各种关乎以后前途的表格、考试、面试…
Dalvik依旧固执地suspend在那里,让我恨不得直接在每次JAVA程序运行结束后手动把它kill掉…
E680的Android计划直接一个月没碰…
唯一欣慰的就是终于借备用机的机会入了一个BB,虽说是最低端的8700(7xxx:被无情地忽视了T.T…),不过还是被BB的全键盘和系统折服了,经过这半个多月的试用,目前主要感觉到BB的几个优势:一个类似于Android的系统框架,以JVM为核心,并提供系统核心功能API;提供完善的Development Environment和开发手册,这在现在的几大系统里似乎已经是惯例了,但一瞥见桌边放的E680,不经还是内牛满面,居然被MOTO这个自私而NC的家伙蒙骗了这么久…
得益于BB强大的开发环境,这个月还干了一件不务正业的事…
在BB上一直没找到一个很好的gtalk客户端,不是太贵就是太大,或者操作没有充分针对BB的全键盘进行优化,唯一一个感觉很满意的gmail+gtalk在7天试用期满后,被shapeservice客服无情地告知他们已经不提供这个“古董”了,要我去买IM+,40刀…抢钱啊…最后,毅然决定还是自己动手丰衣足食,利用JDE搞一个自己的GTALK。目前已经从一个开源项目JXA开始着手做了,当前状态是可以在BB上提供简单的收发信息,但是很简陋。计划这两天趁没事赶紧先搞一个可用的开发版本公布出去先,一方面好找人帮忙测试,还可以拉大牛一直开发 XD
不废话了,赶紧再写点去…
前段时间因为实验室工作任务较重,加上一个课程项目要做,没有时间更新。然后又回家一周多,又光顾玩了……
近期将继续android移植方面的工作,另外打算顺便试试将android移植到我的E680i上,不过这样就得先搞个备用机。
今天初步搭建了一个交叉环境,下了openezx项目和一位前辈的a1200的android移植过程以及相应补丁等。试着编了一下内核,通过usb_boot方式启动,pass了。但是挂载NFS作为ROOTFS出了问题,就找了个闲置的SD卡,先把rootfs放在上面,启动成功。不过最后还是没法进入android桌面,在启动过程挂掉了@@……目前推測主要原因是内存太小,主进程被内核的LOW MEMORY KILLER干掉了
后面工作先要进入android桌面,看看硬件驱动是否完善;下一步,由于这个采用的android版本太老,考虑将更新版本的跑起来,不过不知E680i能否坚持住……
如果能顺利进入android桌面,我会单独把过程写下来。附前辈的android on e680视频
[http://player.youku.com/player.php/sid/XMTE2MDUxMTky/v.swf#swf]
Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …
Find the sum of all the even-valued terms in the sequence which do not exceed four million.
这道题也很水,所以不多说了…
#!/usr/bin/env python
sum = 0
num1 = 0
num2 = 1
while num2 <= 4000000:
print num2
if num2 % 2 == 0:
sum += num2
temp = num2
num2 = num1+num2
num1 = temp
print sum
使用Arch Linux近半年,实在是越来越喜欢这个轻量级的发行版,尤其是它的软件包制作以及管理机制让人感觉很是方便。基础的pacman的功能就不说了,大体和debian系的apt-get类似,功能也很强大,主要用于安装二进制包。今天主要说说Arch灵活而强大的软件包制作机制——makepkg。
makepkg是一种基于脚本的软件包制作工具,其脚本格式除了固定的区域划分格式以外,主要脚本部分以shell脚本方式执行,所以说对大多数人来说上手很方便。
使用makepkg制作软件包时,最核心的文件就是PKGBUILD,就是上面说的软件包制作脚本。只要我们得到一个正确的脚本,只要在脚本所在目录执行makepkg命令,它就能自动从网上或本地获取制作软件包所需的资源(如源代码或现成的二进制包),自动检查软件包依赖关系是否满足,然后进行编译/加工,得到可以直接用pacman进行安装的pkg格式软件包。需要注意的是Arch Linux的所有二进制软件包就是基于makepkg制作的。
要开始使用makepkg,先执行下列命令进行安装[code=bash]pacman -Sy base-devel
[/code]然后根据你的机子配置,修改“/etc/makepkg.conf”设置,使得编译出来的软件包更加适合你的硬件配置。其中主要的配置项包括GCC的FLAG设置,可以根据你的CPU来选择一个架构相关的优化选项(如-march=core2);包建立环境设置;软件包默认安装位置设置…不过如果你不熟悉完全可以不管它,默认设置已经可以有很不错的效果了。
然后就可以利用makepkg建立自己的软件包了。这里以AUR( ArchLinux User-community Repository,后面会介绍)上的linux-fetion客户端(一个开源的跨平台飞信客户端)为例说明makepkg的使用过程。
从上面的步骤可以看出makepkg制作软件包的过程非常简单。更重要的是,以软件包的形式进行软件安装,在很大程度上方便了后期对软件进行更新和卸载。另外,结合后面介绍的工具,你可以轻松安装&管理大量丰富的软件。
前面提到Arch Linux中的所有软件包都是利用makepkg工具制作成pkg安装包,那么哪里能找到这些软件包的PKGBUILD脚本呢?这就要提到ABS(the Arch Build System)。ᗜABS是一个类似于BSD的ports(ports-like)的源代码级软件管理系统。利用ABS,我们可以方便地获取Arch官方提供的软件包的PKGBUILD,并根据我们自己的需要进行软件包的定制或修改,然后再利用makepkg打包为pkg软件包。所以ABS使得我们自行定制预安装软件包的过程变得更加方便,尤其在内核等核心组件方面。
要使用ABS,先使用pacman进行安装。以root权限执行[code=bash]pacman -Syu[/code]
安装完毕后,我们先修改一下/etc/abs.conf,其中主要设置”REPOS=(core extra !community !testing)”这一项,即分别选择是否同步core,extra,community,testing软件仓库。这里根据自己需要修改的软件包所属分支,自行设置。!testing表示不同步testing软件仓库。
上面的配置完成后,先以root权限执行[code=bash]abs[/code]执行完毕后,我们可以看到“/var/abs”目录下出现了我们所需要的PKGBUILD脚本以及一些必须的配置文件。按照官方推荐做法,我们先建立“/var/abs/local”目录,并赋予非root用户对于该目录的完全访问权限(以便于以非root用户建立软件包,以非root身份运行makepkg是一个有助于安全的好习惯)。然后我们需要定制哪个软件包时,就可以在这个local目录下进行。
举例说明吧,我需要修改transmission以打开IPV6支持,就可以这么做
可以看到利用ABS配合makepkg可以非常方便的进行软件包定制。
虽然Arch Linux提供了一个很好用的软件包管理系统,但是我们使用的一些软件Arch 的官方软件仓库并没有提供,难道我们必须一个一个自己写PKGBUILD脚本吗?当然这也是一个方法,尤其对于那些牛人们来说,但是有了AUR,对于大多数人来说就有了更方便的方法。
AUR(the Arch User-Community Repository)是一个由用户社区自行维护的庞大的软件仓库,常用的软件基本都可以在这里找到相应的PKGBUILD脚本,方便地建立软件包,进行安装。其最大的特点就是开发性,你可以将自己写的某个软件包的PKGBUILD脚本上传,与他人共享,而他人对此脚本有什么意见,都可以直接向你提出,或提醒你脚本已过期等等。比如我上面举例提到的linux-fetion,就是利用AUR提供的PKGBUILD脚本。
AUR的站点是http://aur.archlinux.org/,你现在就可以根据自己需要去下载需要的PKGBUILD脚本,构建需要的软件包了。不过你也可以忍耐一下,看完下面对yaourt工具的介绍,你就可以用yaourt这一强大工具让这一过程更加自动化。yaourt(Yet AnOther User Repository Tool)是一位大牛写的Arch软件包管理工具,提供了对pacman的封装,但最主要的功能就是使得从AUR构建软件包更加方便。
首先从这里下载yaourt的PKGBUILD脚本,按照一般的makepkg方法安装该软件包。
安装完成后,试试执行[code=bash]yaourt fetion[code]我们可以看到yaourt自动从AUR上搜索fetion关键字,找到相应Repo信息。我们可以按序号选择一个,yaourt就会自动下载PKGBUILD脚本,并提示你做需要的修改之后,即可自动构建、安装软件包。安装完成还会自动对软件包进行投票。总之,功能非常强大,你可以自己去探索探索。
http://wiki.archlinux.org/index.php/Makepkg
http://wiki.archlinux.org/index.php/ABS
接触Python一年多了,但一直没有用它写过什么正经的东西。刚好这个暑假暂时没法回家,在学校也不是特别忙,就把之前觊觎已久的Project Eular翻出来,准备用Python扫一遍,就当作学习Python了。不过以我可怜的水平,不知道能坚持几道…
今天先扫一道超级水题,增强下信心吧……
Project Eular #1
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000.
sum = 0
for num in range(3,1000,3):
sum = sum+num
for num in range(5,1000,5):
sum = sum+num
for num in range(15,1000,15):
sum = sum-num
print sum
最近评论