Friday, July 23, 2010

MP3 Online Premium

MP3 Online Premium MP3 Online Premium

MP3 Online Premium Introduction
Common questions

1. I can't find mp3 "XYZ"
2. Where are my mp3s saved?
3. The downloaded mp3s do not show up in my "Music" player.
4. Are these mp3 files free?

Download MP3 Online Premium from Android Market: (Only available when viewing from your handset)

MP3 Online can help you search & download unlimited music, it also can help you share music with friends.

Easy to search and download mp3, you can also listen online before/during downloading it.

Content is legally provided by search engine.

#key: music online download, mp3 search

Any question, pls email me.

Common questions 

I can't find mp3 "XYZ" 

Try to use different search terms, for example you can search by song title, singer, album title. If still can't find, please just email to me for help.

Where are my mp3s saved? 

All mp3s are saved on your sd card in the "MP3-Online" folder (/sdcard/MP3-Online)

The downloaded mp3s do not show up in my "Music" player. 

There is a known bug in Android which affects some of the devices: the mp3s are not indexed correctly. A workaround is to install an alternative player (like the "meridian player") that detects the mp3s manually or has a built-in function to update the mp3s library on your device. Or you can wait sometime for the system player to finish the music index building.

Are these mp3 files free? 

All the files found through MP3 Online Premium can be directly downloaded.

MP3 Online Premium is a mere interface to mp3 search engine that crawl the web for mp3 files. These files are copyrighted by their respective owners.

The official license of use is limited to the music files freely available in public domain. You agree to use this software in terms and frames as specified by the Laws of your country of residence, the Google Android Market and your carrier's Terms of Service.

It is up to you to decide whether the files you are searching for are freely available and whether it's legal for you to download them. Legal situation might vary depending on your country of residence. Any illegal use of this tool is strictly prohibited.


a. This application does not host any of the songs displayed on the app.
b. All the search results are provided by
c. All music are limited for using on your android phone.
d. You should compliance with your local law when using this app.

View full End User License Agreement

Tags: android, mp3, featured

Thursday, June 24, 2010

Backup to Gmail

Download Backup to Gmail from Android Market: (Only available when viewing from your handset)

With Google Android phone, you can synchronize your Gmail, Contacts, Calendar, Picasa Web Albums with Google's Cloud Server.

But how about your SMS, MMS and Call log? You never want to lose these information after you wipe the phone, upgrade the rom...

Backup to Gmail can help you to automatically backup SMS, MMS and Call log to your Gmail.

The SMS, MMS and Call log will be synchronized to the labeled folders of Gmail. When you get an outgoing/incoming message and call, the backup action will be triggered automatically.

With Gmail's label feature, It's easy to view/search your backup SMS, MMS and Call log from Gmail Web site or Android Gmail App.

Tags: backup, gmail, android, sms, mms, call_log, featured

Tuesday, May 11, 2010

Google Voice SMS

Download GV SMS from Android Market: (Only available when viewing from your handset)

GV SMS can help you to schedule SMS with Google Voice. You can send free SMS to multiple contacts or groups at any scheduled time.

You can schedule SMS as One time, daily, weekly, monthly or yearly.
It’s easy to select multiple contacts or groups.
Phone types filter for group.
Sending event alert and status report.
SMS send through Google Voice, you can send as many SMS as you wish completely free.

Tags: android, google_voice, featured

Sunday, March 28, 2010

Google Voice Dialer

What’s GV Dialer?
Why do I need GV Dialer?
      I am in US, but I do not have faves number feature (such as T-Mobile faves).
      I have an data plan, I want to call USA and Canada for free with Gizmo5/Sipdroid.

What’s GV Dialer?

GV Dialer will intercept your outgoing call; uses Google Voice to call you back and connect your call for free (in the US).

Unlike the official Voice app, GV Dialer will routes your call through the internet and will not use your minutes.

You can use GV Dialer with Gizmo5/sipdroid; can also use it when not in US.

To use GV Dialer, you need set up a Google Voice account if you don't already have one. As of today, I think this is only possible by requesting an invitation, and you can request an invite. It normally takes 1 - 2 weeks to get it.

Why do I need GV Dialer?

I am in US, but I do not have faves number feature (such as T-Mobile faves).

In this time, if you the official Google Voice application, you will be charged. As the official Voice application will call to a local number (for example 760-576-4664, will change irregularly), and connect to your destination through this local number. If you can not call to this number for free or add this number to your faves, you will still be charged.

You can use GV Dialer to avoid this kind of charge.

Set your Google voice account, and choose the default phone to ring(this is the callback number).

I have a data plan; I want to call USA and Canada for free with Gizmo5/Sipdroid.

1) Set up a free SIP Gizmo5 account by clicking here. Please note that currently, you have to wait for Google to re-release the Gizmo5 service. Once you have the account, note down your username/password, as well as the 1-747-xxx-xxxx number that Gizmo assigns to you. This number is available on the Gizmo page when you login (

2) Add and confirm your gizmo 1-747-xxx-xxxx number in Google Voice, and tell Google Voice to forward to this number when it receives calls (important). You must either run Gizmo5's client software, a third party softphone registered to Gizmo5, or Sipdroid registered to Gizmo5 (see step 5 below) in order to receive the confirmation call from Google Voice.

3) Set your gizmo5 number as your default phone to ring in GV Dialer.

4) Download Sipdroid from the market, and install it on your Android phone. In the "SIP Account Settings" of Sipdroid, enter your Gizmo username and password in the appropriate fields, and under "Server".

5) Now you can call with GV Dialer, the callback will be catch up by Sipdroid and connect your call for free.

Tags: google_voice, gizmo5, sipdroid, gvdialer, featured

Friday, January 29, 2010

Google Voice on App Engine

Google voice still doesn't release their official API, but some people already did some job so that we can use Google Voice more conveniently.

Chad Smith made the Google Voice Firefox addon, which is a great tool that you can use it with your Google Voice number and send SMS message without laving your browser. Chad also posted a topic to introduce how to place calls or send SMS using Google Voice via HTTP or XML request.


According to Chad’s article, before Google release the API, to use Google Voice’s features in a standalone program is also possible. pygooglevoice is one of this kinds of open-source projects: 

Scott Hillman also wrote a script with similar functions to use in command line.

I tried to use their library/script in my Google App Engine based web application, and then I met a mess of problems.

Firstly, App Engine supply the URL fetch service API to work with HTTP request. Although you can also make HTTP request using urllib, urllib2 or httplib, but actually, all these kinds of routine call will be redirect to urlfetch API. But URL fetch service has a lot of limitation; it doesn’t handle the Cookies, so that you can't login to Google account in the background before send HTTP request to Google Voice.

Scott did a helper class to handle the Cookies and resolved the login issue.

When I used his URLOpener class to login Google account in my program, I met the exception of "Stripped prohibited headers from URLFetch request: ['Host']". As Google does some restriction in the latest version of App Engine, some HTTP request headers will be recognized as distrustful. So I recommend you to delete the ‘Host’ parameter from headers in Scott’s class. The URLOpener still work normally after comment the “Host” parameter.

Then, I started to replace the HTTP request API in pygooglevoice with Scott’s URLOpener class, and some other problems arose.

pygooglevoice use ConfigParser to store the configuration properties, ConfigParse is not supported by App Engine, so you need to refactor this class. I changed the Conf class to inherit from appengine’s db.Model.

You may meet the encode problem when using pygooglevoice to send SMS message. I fixed the issue by unicode the input text and then encode it to utf-8 standard.

Everything is OK now, you can test the SMS sending feature on my home page: 

I will continue to work on a new open-source project, integrate pygooglevoice with all the fixes above together, and demonstrate a sample application on appspot.

Tags: voice, appengine, python, featured

Thursday, July 16, 2009

Java for quantitative finance

Recently I did an internal project using FINCAD as the quantitative library for calculate the vanilla interest rate swap. Of course, FINCAD did a good job as desired.

But I want to find an open source resolution to replace the FINCAD, Quantlib come into my eyes, this library for modeling, trading, and risk management in real-life written in C++, I must use JNI just like FINCAD does to call the API. Quantlib also have an SWIG version that can be used in java environment, but this is not a pure Java resolution.

I am dreaming that I can build an open-source project using pure Java to do the quantitative model. If I can even build my project under GAE, that will be great...

Soon, I found JQuantlib. "It's not a mere translation of the C++, but a rewrite intended to offer features that Java developers expect".

But unfortunately, the yield curves and swap valuation features are still working in progress. JQuantlib is still not a mature project to use in reality.

PS: Any body has the authorized license of FINCAD? Maybe you can share the FINCAD functions as web services to public. Actually, I have also implemented a web service facade program that can run under a stand servlet container, If you can share the web service, I'd glad to supply and improve the FINCAD web service wrapper program, maybe we can also implement it as a RESTful web service, that will be more effective under the internet.

Tags: quantitative, quantlib, fincad, jquantlib, featured

Friday, August 29, 2008

SOA concepts and related Standards & Technologies

It's the presentation file for the company's internal training. Please  
review it if you have interest about SOA.

SOA concepts and related Standards & Technologies


Tags: sca, sdo, bpel, soa, featured

Monday, August 11, 2008

Using reCAPTCHA in cpedialog for anti spam


目前大部分的博客,论坛普遍采用的方式是让用户输入一个扭曲变形的图片上所显示的文字或数字来实现CAPTCHA (Completely Automated Public Turing Test to Tell Computers and Humans Apart) 。但是appengine的Images API并不支持图片的创建,使用第三方的python图像库会消耗太多CPU而同样受到appengine的配额限制。





Tags: recaptcha, cpedialog, featured

Saturday, July 19, 2008


yui是继dojo后我用过的第2个ajax library。 因为工作原因一直使用dojo0.4,最近公司portal升级也开始迁移到dojo1.1,从0.4到1.1的升级应该是让很多人诟病的一件事情,但尽管如此dojo仍不失为一个优秀的javascript toolkit。

为什么我没有选择dojo用在cpedialog里呢?原因很简单,dojo1.1的发行版源文件个数太多(去掉测试和样例后还有2000多个),超过了appengine的免费版本的文件个数配额限制,而yahoo为yui提供了免费hosting服务 (参考: "Serving YUI Files from Yahoo!" )。 这是yui最开始吸引我的最主要原因,但是后来发现yui带给我的是一连串的惊喜。

yui意即Yahoo! UI Library,它的component里除了一些js library外,还有几个CSS Tools. 首先被用在cpedialog里的便是CSS Grids,使用它可以很方便的通过yui定义的几个div来规划网页的布局,使用cpedialog的用户可以很方便的通过修改既定div的id和class就可以重新定义layout。 yui的css Grids应该是经过精心设计的,除了可以很快的重新分布你的网页布局,还有其他一些考量,譬如对搜索引擎优化(SEO)。 

第2个使用的component是Connection Manager,这个是用于XHR/Ajax的,类似与dojo的io。 cpedialog系统管理模块的ajax调用都是通过它实现的,在后台实现中参照了这篇文章:Using AJAX to Enable Client RPC Requests,所有后台暴露的PRC方法都通过一个统一的入口,除了安全的集中控制还可以得到一些扩展的好处,另外使用simplejson来做python对象和json之间的转换。Ajax很美,但是我为什么只用在后台管理模块呢?其实我是基于这样的考虑,我个人是个win mobile fans,用手机上网是件频繁的事情,在中国用2.5G的网络搭配像UCWEB这样优秀的手机浏览器上网体验应该说还不算坏,大量的使用Ajax意味着你的网站在通过手机访问时存在问题(至少对目前很多手机浏览器都是如此,目前还没有任何手机浏览器能达到A-Grade Browser Support)。

在后台管理模块中yui的DataTable也被使用。 你可以看到一个实现了inline editable, deletable的table。在了解yui的DataTable后彻底发现dojo1.1里的grid应该是参照了yui的设计实现,table clumn和data的分离,另外定义详细的table内元素事件,yui的DataTable设计是很优美的,初次使用你可以会遇到小小的麻烦,尤其是当你对datatable API不是很熟悉的时候,强烈建议你认真阅读Daniel Barreiro (screen name Satyam)发表在yblog里的两篇文章 (Part One: Getting Started; Part Two: Changing Data in the DataTable),文章里的代码可能需要根据yui最新发行版作小小的改动。另外我找到了Satyam的个人站点,里面有不少好东西, 目录里有一些yui的code sample。


Tags: yui, cpedialog, ajax, editable_table, yui_grid, yui_datatable, yui_connection, featured

Saturday, May 26, 2007





Tags: hibernate, featured

Monday, March 06, 2006


研究了一天,终于将ibm的WEME Windows Mobile 2003 SE Smartphone ARM (MIDP 2.0)的中文支持和cmwap连网问题解决.

因为我最近刚刚换了SDA II(586),苦于没有适合qvga屏幕的java模拟器可以用.所以很多优秀的软件无法使用,而且我是用cmwap包月上网,所以一些im无法登陆.

目前,在windows mobile for smartphone平台上,除了几款qvga机器(586,566,577w等)上自带的“百宝箱”外,几乎很难找到其他支持qvga屏幕的java 模拟器.

CoreTek 开发的DeltaMIDP一直因为速度快倍受大家喜爱,可惜目前还没有适合qvga的版本,所以登陆qq或其他程序,都只能在屏幕上显示一半多点的区域.

HTC开发的Java Midlet Manager也不支持qvga.

IBM在WebSphere Everyplace Micro Environment v5.7 (简称WEME)中包含了适合ppc的几款模拟器,经过修改虽然可以移植到smartphone上使用,但是对中文和网络支持都有问题,而且好象也不支持qvga屏幕.

到ibm的网站上发现WEME 发布了 6.0 评估版本,里面包含了在windows msartpone上使用的java模拟器WEME Windows Mobile 2003 SE Smartphone ARM (MIDP 2.0)(简称WEME_MIDP)。目前ibm还没有做成安装包,也没有正式发布该产品.

我把WEME_MIDP安装到我的SDA II上,运行后发现对qvga屏幕支持得很好,可惜中文全是乱码,而且我安装qq后根本无法登陆.

研究了整整一天的时间,把针对ppc的5.7版本用WinCE CAB Manager把安装包提取出来后研究了一番,总算把中文问题进行了修正了.




Tags: featured, midp2, j2me

Wednesday, June 29, 2005



2.X版本可以生成基于CMP,JDO的持续层代码以及针对JBoss、BEA WebLogic 和 IBM WebSphere 等j2ee服务器的jsp代码。

最新的3.0版本还可以生成基于hibernate的持续层代码,同时可以生成基于struts1.1的form action和form bean代码。



仔细研究发现FireStorm是使用 对公钥进行验证,而FireStorm3.0有自带jre的版本,所以我把中的verify() 方法修改为直接 return true;
编译后覆盖rt.jar包中的class文件。再把我的试用license修改了一下,再次启动FireStorm,OK! 这次总算变成正式版了。



Tags: hibernate, featured

Sunday, June 05, 2005









Tags: featured

Friday, January 28, 2005

LifeRay Portal


Apache Jakarta Jetspeed
Liferay Enterprise Portal
eXo Portal

最终选定使用LifeRay,费了很大劲才在我亲爱的idea上整合了一个开发环境。Liferay业务层使用Stateless Session EJBs,通过hibernate实现持续层,使用jaas实现安全策略。另外表示层使用struts和tiles.

Struts Action -> Stateless Session EJB Facade -> Persistence Helper Class -> Hibernate


Tags: liferay, portal, featured

Tuesday, November 02, 2004

Adobe WorkFlow Server

Adobe WorkFlow Server是一个非常优秀的工作流系统。而且有着无数次成功的商业应用,据说这个产品的最初创造者intempo公司曾经应用他们的工作流系统为美国政府开发了不少项目。


Adobe WorkFlow Server是一套非常强大的基于windows平台的工作流服务系统软件,配合Adobe Form Serve 对表单服务的支持,可以适用于任何软件流程控制系统中。

这套产品是基于windows的,在.net平台上运用非常方便,如果你的项目是基于.net平台的,而且你在为选择那种工作流而拿不定注意时,选择Adobe WorkFlow Server可以为你节省最多的时间,因为用他开发几乎方便到你不用写一行代码--如果你的愿意的话。

当然其在j2ee平台上的应用也越来越成熟。(我们的项目就是基于j2ee的)。不过最近我已经从Adobe工作人员的手中得到一套完整的基于.net webservices的完美跨平台解决方案。比其我们当初系统的构架,现在的方案真的让我们气愤,气愤它为什么早没有出来~~


Tags: workflow, featured