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?
5. TERMS OF SERVICE

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 SOSO.com 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 soso.com 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.


TERMS OF SERVICE 


a. This application does not host any of the songs displayed on the app.
b. All the search results are provided by SOSO.com
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 (https://my.gizmo5.com/).

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 proxy01.sipphone.com 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.

See: http://posttopic.com/topic/google-voice-add-on-development

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: http://code.google.com/p/pygooglevoice/ 

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

http://everydayscripting.blogspot.com/2009/10/python-custom-google-voice-api.html


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.

http://everydayscripting.blogspot.com/2009/08/google-app-engine-cookie-handling-with.html


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: http://cpedia.net/ 



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.

http://code.google.com/p/googlevoice-gae/

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
http://docs.google.com/Presentation?id=dhh5dwdc_50gvj2pcgs&invite=dkxs9ds...


如果你无法阅读该文档,请给我发邮件,我会共享给你。目前只共享给了“敏捷中国”新闻组。

Tags: sca, sdo, bpel, soa, featured


Monday, August 11, 2008

Using reCAPTCHA in cpedialog for anti spam

原先就想为cpedialog加上anti-spam的功能,这两天发现我的博客里有一篇文章每天都会定时被机器人自动回复广告内容,已经手动删除好几次了,现在看来是出手的时候了。


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


幸好有reCAPTCHA,它本身就是一种由CAPTCHA的发明者所推荐的官方CAPTCHA服务。


到reCAPTCHA的官方网站注册后为自己的域名申请公钥和私钥后就可以开始使用它的服务了,


在appengine中使用非常简单,到http://pypi.python.org/pypi/recaptcha-client下载官方提供的代码,如果你不需要邮件地址隐藏功能的话,你可以删除mailhide.py只保留captcha.py,同时需要对captcha.py做简单的修改,将使用urllib2.Request相关部分代码改为使用google提供的urlfetch实现.


剩下的就是在你的回复页面打开的时候调用captcha.submit传入公钥等参数返回reCAPTCHA内容显示在页面上,提交回复的时候再通过传入私钥等参数验证图像代码输入。具体代码大家可以在googlecode的svn上参考cpedialog的实现。

Tags: recaptcha, cpedialog, featured


Saturday, July 19, 2008

yui在cpedialog中的应用

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的个人站点http://www.satyam.com.ar/,里面有不少好东西,http://www.satyam.com.ar/yui/ 目录里有一些yui的code sample。


yui的calendar是下一个将会被使用在cpedialog里的component,请继续关注cpedialog。

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


Saturday, May 26, 2007

离线锁的设计

本文以我目前实际参与的一个关于银行账户管理的系统例子,全面向你阐述离线锁的设计问题...


当你面对复杂的长事务应用系统,而且并发似乎是一个无法避免的问题时候,你需要锁的设计.


本文向你介绍关于锁的设计的一些心得,探讨如何在锁的设计中的取舍,以及基于目前持续层框架(Hibernate,Toplink,etc)的实现.


Tags: hibernate, featured


Monday, March 06, 2006

IBM MIDP2 CPEDIA 修改版

研究了一天,终于将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把安装包提取出来后研究了一番,总算把中文问题进行了修正了.

后来发现j2me和j2se连网方式基本相试,j2me的api也只是稍有简化,而且变换了包名.
在j2se程序中,java运行时加入http.proxyHost,http.proxyPort系统属性可以使用系统通过指定代理连网,在WEME_MIDP中,我同样让j9(IBM开发的java虚拟机)运行时加入这两个系统参数,分别为10.0.0.172和80,经过实验总算成功,现在一个完美支持qvga和cmwap连网的java模拟器总算诞生了.

不过唯一美中不足的是,WEME_MIDP不能主动激活gprs,所以你必须先确保你的gprs是连接的才可以使用WEME_MIDP登陆网络.(用ie随便登陆一个网页就可以激活gprs连接)

发几张图让大家欣赏一下。(回复中还有多图)

Tags: featured, midp2, j2me


Wednesday, June 29, 2005

FireStorm/DAO生成持续层代码

FireStorm/DAO是一个java持续层代码生成器,它利用数据库的Schema定义或者直接通过JDBC连接数据库,从而生成基于DAO模式的完整的数据持久化层代码。

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

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

今天从官方网站上down下来试用了一下,发现的确很方便。可惜使用试用的license有很多限制:只能最多生成3张表的DAO;有使用时间限制;而且不能自己定制代码生成。于是在网上狂搜一番也没有找到破解版,想自己破解,看了一下,它的jar包使用混淆器进行了代码保护。无奈之下,只好在网上再搜文章,有些写破解方法都是针对老版本的。可能是3.0的版本太新,别人还没有来得及破解。

网上有篇文章是使用jboss.com的javassist对class二进制文件进行修改的方法,看了一遍,总感觉有些麻烦.

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

最后我用FireStorm把公司一个基于hibernate的项目代码自动生成了一次,发现60%~70%左右的持续层代码几乎不用编写了。

http://www.codefutures.com/products/firestorm/

在这里下载带jre的版本

Tags: hibernate, featured


Sunday, June 05, 2005

微笑与生产效率大奖

最近奇怪的对一个女同事产生了好奇(别误会,我绝对没有任何过分的想法)。

其实,是她的微笑。每次见到她都是一脸微笑,即使别人对她一个小小的点头致意或者周遭环境的一点点影响她都会导致她的微笑瞬间绽放。

我想她的微笑对周围人的影响之大是显而易见的,连我这样的非当事人都可以感受到。任何被微笑感染的人都会有有一种放松的感觉,所有的疲惫,所有的郁闷都会被缓解、被释放。

微笑拉近人与人的距离,会使人解除心灵上的戒备,同时也是自信和气质的表现。

最后我要说的是微笑应该能够提高工作效率,如果工作中我对自己微笑,说明我对自己很满意,如果能得到别人的微笑,那表示别人对我的肯定。如果我工作累了、郁闷了,有人对我微笑,我会轻松很多。

所有公司的老板们,应该给公司里最爱微笑的员工颁发“生产效率大奖”~(个人意见)

微笑就像"劲浪"口香糖(我上班最爱嚼),所以我现在已经把手机的屏幕背景换成了一个pp女孩的笑脸,我工作用的显示器上帖的是我自己的笑脸,我每天会对着镜子对自己微笑。

Tags: featured


Friday, January 28, 2005

LifeRay Portal

公司要做一个门户项目,由于money太少,所以考虑用开源框架。

这几天研究了一下几个开源的门户项目:
Apache Jakarta Jetspeed
http://jakarta.apache.org/jetspeed
Liferay Enterprise Portal
www.liferay.com/home/index.jsp
eXo Portal
http://exo.sourceforge.net

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

处理流程:
Struts Action -> Stateless Session EJB Facade -> Persistence Helper Class -> Hibernate

二次开发主要关注portlet和配置文件的编写。
我已经使用idea集成了一个比较好的开发环境。

Tags: liferay, portal, featured


Tuesday, November 02, 2004

Adobe WorkFlow Server

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

从去年11月份接受adobe的工作流培训到今天,对Adobe的这套产品越来越熟悉,也越来越喜欢。

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

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

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


不过我最近还是想对这套方案进行一番研究,准备写点东西出来,到时候在得到adobe方面的许可后或许可以发表呢~

Tags: workflow, featured