程序员…
21 Aug
这几天需要找到漂亮的Charts类库,找了几个,发现一个很不粗的,mark下待使用,介绍如下:
Highcharts is a charting library written in pure JavaScript, offering an easy way of adding interactive charts to your web site or web application. Highcharts currently supports line, spline, area, areaspline, column, bar, pie and scatter chart types.
有兴趣的可以参考如下连接去看看:
http://highcharts.com/
http://railscasts.com/episodes/223-charts
http://www.spritle.com/blogs/?p=859
19 Aug
If your running Munin in WHM they you may have noticed the passive netstat connections have been rising steadily over the last couple of weeks. This isn’t a problem with your server, its a Munin bug that can be easily fixed.

Apparently the problem stemms from Munin counting the passive connections rejected. You can fix this problem quite easily by following the instructions below
Edit the following file:
/usr/share/munin/plugins/netstat
and change the line
ref:
http://markmaunder.com/2008/how-to-fix-munins-netstat-passive-connections-increasing-constantly/
http://www.silverark.co.uk/knowledge/hosting/fix-the-passive-netstat-connections-in-munin
29 Jul
今天在GoogleTalk上朋友发来消息,说有人撰写文章指出我以前开发的一款更换手机壁纸的应用(嵌入了admob和google的广告)中存在偷窃用户隐私数据行为时,我简直不敢相信这是真的;当看到新闻的详细内容时,我更是被震惊了。以下是那段转载文章的原话:
“拉斯维加斯黑帽大会上,Lookout 的安全人员指出,一个伪装成Android手机壁纸应用的偷窃个人信息程序已经被下载了百万次,它会收集您的个人资料,并将其发送到一个来自中国深圳的神秘网站imnet.us中。安全人员(Kevin MaHaffey)估计这款程序是由正常的壁纸应用修改而来,黑客将其上传到Android Market,希望装饰自己手机的用户因此而中招。泄漏的数据包括浏览历史记录,短信,手机的SIM卡号码,用户识别号,语音邮件,甚至是密码,他警告称每个人都应该警惕来自手机上的威胁。”
在看完这条消息后,我立马检查了所有代码,防止这款应用在我不知情的情况下,被他人加入恶意代码,但我一无所获。
一、我开发的所有程序都没有侵犯到用户的隐私。
在这个应用中,申请的全部权限为:
懂点Android技术的都知道,这些权限都是为了让该软件的功能,能够正常工作所必须的权限(连接网络,获取网络状态,下载壁纸时读写SD卡,设置壁纸,读取手机状态)和Admob的广告精准推送所需要的权限(位置信息,读取手机状态)。
至于获取用户浏览历史记录、短信、语音邮件密码的这些明显侵犯用户隐私的行为,完全是子虚乌有。一方面并没要申请相关的权限;另一方面我还真不知道怎样获取这些敏感信息。另外,admob的精准广告服务中可能是会针对用户的地理位置等信息推送更准确的广告服务。
关于这款应用能获取的设备标识号是用来区分设备的唯一性,免去用户注册的麻烦,而能给用户提供收藏图片的功能;而诸如获取手机屏幕大小是为了能够智能适配合适的图片。在这些设备信息中,请问哪一条会侵犯到用户的隐私。
另外说我可以获取浏览历史信息,这简直就是个天大的笑话。如果懂一点程序的就会知道,要获取浏览器信息必须在程序里申请com.android.browser.permission.READ_HISTORY_BOOKMARKS权限。我的程序完全没有获取到权限,怎么能够获取到历史信息,真是笑话!!!
二、Android手机的权限管理,在任何没有刷过第三方rom的手机上是很严格的。
Android手机的权限管理,在任何没有刷过第三方rom的手机上是很严格的,在没有相关权限的情况下,要获取那些信息,是完全不可能的。就算是被刷过Rom的手机,也只有具有该ROM制作人的加密签名的程序,才能完成一些不安全的操作。
我所需要的权限在用户安装的时候会很明确的告诉用户,下面我就给大家展示一下我应用申请的权限和另外一个著名的壁纸的应用background和一款管理短信的应用申请的权限。
Handcent SMS申请的权限:
短信有短信的权限,联系人有联系人的权限,我都没要申请,请问我如何获取相关的信息。
三、应用主要面向外国用户,但绝对没有获取那些高敏感度的隐私信息!
该应用主要面向外国用户(国内由于网络原因无法正常使用),连接服务器端能够获取到精确适配终端的图片,这是一款非常有用,也深受用户喜爱的应用。它确实拥有数量众多(几百万)的用户,但绝对没有获取那些高敏感度的隐私信息!我每天都收到很多用户的反馈邮件告诉我这个软件多么棒,给他们带来多少乐趣!
四、我本人始终与业界同仁一道,希望建立诚实守信、和谐共生的Android产业生态系统。
随着Android开放性操作平台手机的广泛使用,其应用软件开发市场正呈现蓬勃发展景象。对于提醒用户警惕来自手机上的威胁,我本人向来都是强烈支持的!本人一直始终与业界同仁一道,一直为共建诚实守信、和谐共生的Android产业生态系统而努力,将力量专注于用户需求和技术创新,创造更被用户喜欢的软解,并致力于推动手机应用软件产业持续健康发展。
在此,本人郑重申明,该应用没有获取任何诸如“浏览历史记录,短信,语音邮件密码等”这种高敏感度的信息,并和国外的原作者取得联系,让其修正自己的言论并发布公开道歉,同时对于这种不负责任的言论和评价观点,对我及与我相关的应用进行不负责任的报道造成的影响给予补偿,我将保留追究其法律责任的权利。
ps:
如果您有其他的疑问或者问题,欢迎你在我sina微博客(http://t.sina.com.cn/iceskysl)或者sohu微博(http://t.sohu.com/iceskysl)给我沟通!
写完申明后,去看消息出处看到其竟然做了修改,我早料到其会做相关的行为,所有早些时候截了屏幕如下:
而现在的文章被修改为:
看我用鼠标标识的地方,对关键信息进行了修改,感兴趣的人可以去 http://mobile.venturebeat.com/2010/07/28/android-wallpaper-app-that-steals-your-data-was-downloaded-by-millions/ 查看原文,对于这种标题党用子虚乌有的事情炒作,等消息传播后再修改自己的内容算什么行为!而对国内部分媒体在传播时不但不对真实性进行验证,还添油加醋,歪曲意思的报道,我非常无奈(看到有人还说可以获取信用卡信息,还加密传输,我实在无语)。
按照我个人的感觉,他们应该紧接着要开始拿这个事件来炒作自己的产品了,我个人懒得去关注,如果有人发现有人借此炒作自己的产品,请帮忙分析分析,看看到底是什么人用这样手法。
再次update!!!
通过email和mylookout的人取得联系,说明我取得诸如设备号,手机屏幕大小是为了更智能的给设备适配图片,而获取部分的sim卡号是后来用户反馈说自己换了手机还想使用之前的收藏记录才使用的,这些信息只在该应用中使用,并没提供给任何第三方!
同时让其确认venturebeat上文章中说到的获取浏览器历史,短信息,密码等高敏感性信息是否是他们说的还是写文章的人自己写的(Lots of my users send me the email ask me why I collect their text message and voicemail passward, I just want to make sure whether you and your ceo said that I collected browsing history,text message ,voicemail passward during the meeting.)。
其cto给我回复说他们没有说过我的应用获取过诸如text messages or browsing history这些信息( We never stated that the wallpaper applications gathered users text messages or browsing history.),是媒体在撰写和传播的时候错误报道了(A member of the press misreported our research and he has since corrected it. )。
我非常无语~
2010年8月4日第二次次update!
多谢这些天很多朋友的关心,我很好,谢谢!这些天和google android组,lookout公司和venturebeat的作者,以及国内外很多媒体,博客们,记者们都有很多的接触。
1. google就前段时间将应用暂停和我一起分析了这个应用,今天发来调查的结果:
Our investigation has concluded that there’s no obvious malicious code in your apps, though the implementation accesses data that it doesn’t need to. We’ve restored your apps (and they’ll be available on Market again once you publish them), and are looking forward to seeing them updated to use ANDROID_ID. We are likely to make a statement about this issue this week–I’ll let you know.
我早就说过,我配合调查,我把代码提供给他们,google也做出了公正的评判,另外也给我提了一些建议(ANDROID_ID)。
2. 当时写这篇报道的venturebeat记者Dean Takahashi发来了mail,为自己犯的错误道歉,并道歉该事带来的恶劣影响,会再写一篇文章澄清这个事情以消除影响。
3. 那个安全公司lookout的人写邮件来要于我一起“ We wanted to coordinate with you to prevent further misunderstandings. ”。
4.好几个不认识的国外记者很负责任,发邮件和gt和我交流询问事情的真相,并帮我喊冤,谢谢这些有职业精神的记者们。
这个事情到这差不多就结束了,其中看到很多假丑恶,也看到很多真善美!谢谢所有帮助过我的人(很多很多,就不一一列举)。
27 Jul
def parse_rails_log_file(file)
# Remove all empty lines
lines = file.each_line.map(&:strip).reject(&:empty?)
# Use +Enumerable#slice_before+ to slice log file into sections for each request
lines.slice_before(/Started (GET|POST|PUT|DELETE)/).each_with_object({}) do |request_log, totals|
# Only include successfully finished actions in report
if duration = request_log.last[/Completed 200 OK in (?<duration>\d+)ms/, :duration]
action_name = request_log.first[/Started (GET|POST|PUT|DELETE) "(?<action>.+?)" for/, :action]
totals[action_name] ||= 0
totals[action_name] += duration.to_i
end
end
end
if __FILE__ == $PROGRAM_NAME
require "pp"
puts "Parsing Rails 3 log file (extracting cumulative running time per request path):"
puts "================="
log_file = <<-LOG_FILE
Started GET "/index" for 192.168.74.1 at 2010-03-09 11:37:40
Processing by UpdatesController#index as HTML
Update Load (0.5ms) SELECT `updates`.* FROM `updates` ORDER BY created_at DESC
Rendered updates/index.html.erb (16.7ms)
Completed 200 OK in 71ms (Views: 44.3ms | ActiveRecord: 0.5ms)
Started POST "/updates" for 192.168.74.1 at 2010-03-09 11:37:43
Processing by UpdatesController#create as HTML
Parameters: {"commit"=>"Save changes"}
Update Load (0.4ms) SELECT `updates`.* FROM `updates` ORDER BY created_at DESC
Rendered updates/index.html.erb (1.3ms)
Completed 200 OK in 60ms (Views: 32.1ms | ActiveRecord: 0.4ms)
Started GET "/updates" for 192.168.74.1 at 2010-03-09 11:45:51
Processing by UpdatesController#index as HTML
TypeError (exception class/object expected):
app/controllers/updates_controller.rb:3:in `raise'
app/controllers/updates_controller.rb:3:in `index'
Rendered /usr/local/rvm/gems/ruby-1.9.2-head/bundler/gems/rails-16a5e918a06649ffac24fd5873b875daf66212ad-master/actionpack/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.6ms)
Rendered /usr/local/rvm/gems/ruby-1.9.2-head/bundler/gems/rails-16a5e918a06649ffac24fd5873b875daf66212ad-master/actionpack/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (2.9ms)
Rendered /usr/local/rvm/gems/ruby-1.9.2-head/bundler/gems/rails-16a5e918a06649ffac24fd5873b875daf66212ad-master/actionpack/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within /usr/local/rvm/gems/ruby-1.9.2-head/bundler/gems/rails-16a5e918a06649ffac24fd5873b875daf66212ad-master/actionpack/lib/action_dispatch/middleware/templates/rescues/layout.erb (23.9ms)
Started GET "/updates" for 192.168.74.1 at 2010-03-09 11:45:58
Processing by UpdatesController#index as HTML
Update Load (0.3ms) SELECT `updates`.* FROM `updates` ORDER BY created_at DESC
Rendered updates/index.html.erb (1.1ms)
Completed 200 OK in 100ms (Views: 29.3ms | ActiveRecord: 0.3ms)
LOG_FILE
pp parse_rails_log_file(log_file) # => {"/index"=>71, "/updates"=>160}
end
18 Jul

《Google Android开发入门与实战》是我主导撰写的第一本技术书籍(之前的《Google API 大全》我是参与者),20096月上市后,我GF聊天时问我,对这本书有什么期待,我说:我的期待时做为技术书籍能销量超过1万本。
到2010年7月的时候,这个期待实现了,人民邮电的编辑张涛说“咱那本书又加印了2000册”,喜,终于过万,回忆下:
这样总数11500册,加上翻译成繁体中文在台湾上市的数量,已经突破预期的1万册大关,做为一个计算类书籍,这个成绩我还是很满意的;至于其被读者提到的排版不精美,内容偏简单等问题,也是在预期之中的。
对于我主导的第二本书《It’s Android TIME: 创赢路线与产品开发实战》,我还是这个预期,能销出1万本,何时能达到呢,期待中。
18 Jul

昨天出版社说《It’s Android TIME: 创赢路线与产品开发实战》得书印刷出来了,给我们快递一些过来,早上到公司就收到走宅急送送来得一个箱子,打开果然是《It’s Android TIME: 创赢路线于产品开始实战》,第二本android书籍终于要上市了。
这本书主要是我策划和组织的,召集了10多个人参与了编写,全书600来页,共16章,从去年10月份开始策划,到现在的7月份,时间还真不短。
本书立足点不再是单纯的技术,大家应该知道,我写的第一本书《Google Andori开发入门也实战》是国内最早的android书籍,09年6月上市,是09年计算机销量TOP50,刚接到出版社电话,说又重印了2000本,那本书主要是将如何入门android开发,讲的都比较基础,让大家入门android;而本书《It’s Android TIME: 创赢路线与产品开发实战》主要阐述如何分析android的市场,如何找到市场,做出产品,以及和android技术相关的内容,诸如UI设计,赢利模式探讨,传统软件突围等等,不仅仅只是技术。当然,也还是以技术为主,讲了基础开发,底层开发,游戏开发,开发平台产品,源码编译和修改等等,其中我们分析了很多的数据,花了不少心思的。
推荐序1(Frost&Sullivan中国区总裁 王煜全):http://www.eoeandroid.com/thread-25461-1-1.html
推荐序2(我学网(开复学生网)负责人 王开源):http://www.eoeandroid.com/thread-25462-1-1.html
推荐序3(Android技术专家 高焕堂):http://www.eoeandroid.com/thread-25463-1-1.html
详细目录:
http://www.eoeandroid.com/thread-25465-1-1.html
预定购买:
China-pub互动出版购买地址(预定) :http://www.china-pub.com/196898
18 Jul

参加了7月6日在法电参加“Orange开发者日“活动,此次活动的重点是寻找Android应用程序,分享Android应用开发的经验,参与活动的有Orange AppShop的总部和北京的成员、联通应用商城的负责人员、摩托罗拉应用商店的负责人员、和参加活动的应用开发者。我在会上有个主题,主要介绍了优亿市场(eoemarket)这个产品,于会的差不多有200多人,认识一些很熟悉但未见面的老朋友。参加了会后的商务一对一,orange的工作人员对我们的产品提了不少好的建议。
18 Jul

==活动简介==
我们希望更多的中国的android用户能获得更多优秀的本土化android应用和游戏,得到更好的服务和更贴心的体验,期望 您能安装和体验一下易联致远的优亿市场(eoeMarket),并为我们提供更多的反馈信息。
为此,优亿市场(eoeMarket)运营团队特别 推出“新版本兼容性大扫荡”活动,旨在使得优亿市场(eoeMarket)能运行在更多android设备上,服务更多的android用户。
活动地址:http://www.eoemarket.com/activities/release_bate_version
== 参与前的准备==
1. 您需要有一款运行android(ophone或乐phone等等)系统的设备(手机, MID或Pad等);
2. 您的设备需要有联网功能(通过gprs,edeg,3g或wifi等);
3. 您需要装上最新版本的优亿市场(eoeMarket),如果您尚未安装,请参考下面的《安装优亿市场》;
==安装优亿市场 (eoeMarket)==
在设备上打开浏览器,输入网址: eoemarket.com/a 即可下载最新版本的优亿市场(eoeMarket),下载完成后点击即可安装。
==活动内容==
1、参与对象:所有 Android用户(玩家,开发者,公司等);
2、参与方式:参与的用户按照本报告内容测试反馈;
3、我们会在官方网站公布被测试的机型 及其结果;
==更多资料==
优亿市场(eoeMarket)是由北京易联致远(eoeMobile)和开发者紧密合作、给玩家提 供优秀Android应用的集软件发布、搜索、推荐、安装等于一体的软件商店平台。其为国内最早发布的Android软件商店(2009年7月发布第一 版),已经发布超过1500款优秀的本土应用(游戏)!现在公测的是其2010年7月18日最新发布的公测版!
官方网站:http://www.eoemarket.com/
14 Jul
做移动互联网的过程中,有这样一些词是必须知道的,如MO,MT,GSM,LINKID
上行(MO)上行的意思就是短信发送到服务器端 MO又称 Mobile Original
下行(MT)下行的意思就是短信从服务器端发回到手机上,MT又称Mobile Terminated
简单的说,从手机发起一个的过程叫上行(MO),到手机结束的过程叫下行(MT),比如,平时给你的朋友发送一条短信,对你来说就是上行(MO),而对你的朋友来说,就是下行(MT)。在企业、行业应用中,从系统给手机发送信息的过程叫下行(MT),而手机发送信息给系统的过程叫上行(MO)。
所有用户点播的业务,用户MO(上行)消息通过网关送到MISC鉴权批价后,MISC会自动生成一个随机数linkid随后通过网关传给SP,当SP收到MO(上行)消息后下发MT(下行)消息给用户时必须在Submit包的linkid字段填上MO(上行)消息包里面带的linkid信息(Reserve值:设定的回复内容)。
28 Jun

2010年6约27日,周日下午,由CSDN和《程序员》杂志联合策划组织,旨在与业界人士分享IT产品背后的技术和用户体验故事的线下活动TUP(Technology, User Experience, Product)系列活动日前在北京丽亭华苑酒店成功举办,首期活动以“移动开发实践”为主题。
受CSDN&《程序员》总编刘江邀请,我去分享了自己对android方面的一些体会和心得,本来预期200人参加的活动,从wudi那边看到报名的有500多人,最终选了300多人参与了活动,场面还是比较火爆的,到处站的都是人,CSDN在国内技术圈还是有不错影响力的;
活动从下午1电30分正式开始,刘江主持,介绍了TUP的核心价值,然后我是第一个演讲的,我和大家分享的题目是《Google Android盈利模式探析及其应用突围之道》,和大家分享了android目前的市场;可行的一些盈利模式,我的观点是现阶段,广告和应用中收费(注意不是收费应用)是两个比较成熟的模式,除此之外还有做平台,做培训,咨询等等模式可以尝试;借着和大家分享了应用突围之道,举了两个例子,说明如何让你的应用在众多应用中脱颖而出(分析数据很重要),最后和大家分享了android的发展趋势,我个人觉得android终端多元化,终端网络化的趋势很明显,那么带来的就是应用的巨大需求(个性化,国际化,本地化的),从而使得android人才缺口非常大。
从大家的提问和会后的交流来看,很多人还是比较迷茫的,对现况的迷茫,对市场的迷茫,比如国内外大大小小的软件商店很多人就看不明白,原因很简单,看到的都是表表象,透过表象,把握住本质就很清晰了。
比较冏的是名片带少了,后来给不少人手工写了联系方式,本来后面还有个互动交流的环节,由于临时有些事情,没来得及参加就撤退了,有些遗憾。
今天各大媒体的报道都出来,看到基本商都是用的我topic里的一个观点“andoid应用突”》做为报道点,希望大家能顺利突围!
Comments::最新评论