-
Nginx日志自动备份
之前在用nginx的时候,经常被access_log撑爆磁盘头疼,后来看到了一篇文章,介绍了如何使用logrotate配合kill -USR1来实现roll log,很方便。…
-
Mahout的itembase Cf学习
最近在了解推荐系统方面的知识,下了mahout的代码并用我们的数据集跑了一遍。使用itembase CF算法的话,GenericRecommenderIRStatsEvaluator计算出来的数据如下: IRStatisticsImpl[precision:0.088206627680312,recall:0.088206627680312,fallOut:0.004144515328725854,nDCG:0.08950552860760644,reach:1.0] IRSt...…
-
Awk 笔记
又是一个坑爹的问题,这回是awk。awk中的数据非常灵活,其下标可以使用数字或者字符串,这是我非常喜欢的一个特性,但是今天被着实坑了一回。如果你想从awk的数据中取值,比如有个数据a,你想看看a中有无x这个元素,你不能先用a[x]这种方式取出来之后再去判断,因为一旦你调用a[x],x这个元素就已经进入了a数据中!而且其值是个空。…
-
Razor 服务器端代码分析(一)
cobub razor是开源的移动统计后台,github主页:https://github.com/cobub/razor。分为客户端SDK和服务器端两部分,客户端主要负责采集数据,而razor的服务器端需要完成数据的采集、统计分析、展示的工作。数据采集依赖于提供的api接受client发回的数据,统计分析是依赖于mysql数据库的存储过程来完成的,而数据的展示则是依靠一个php开发的后台实现,里面大量的报表展示和导出,还是非常不错的。#数据分库razor有两个database,分别是原始...…
-
Razor 客户端sdk分析(一)
最近几个月来,一直在使用一个开源的移动统计平台cobub razor。因为之前没有移动统计平台的开发经验,从一个开源产品产品入手是个不错的开始,毕竟可以学习到很多经验。仔细研究了一下android客户端的代码,基本上还是挺简单清晰的。后续准备分享一下使用的经验和自己做的一些小修改。PS:我是从0.4版本开始使用的,目前razor的稳定版本已经进入到了0.5,也准备给我们使用的升级一下…
-
Find Paths Must Precede Expression
今天执行了一个find命令find . -name *php,意外的抛出了一个错误find: paths must precede expression: 。思来想去也没明白为啥,网上查了下,需要给name后面的表达式加上引号,试了一下果然就搞定了。不过知其然也得知其所以然,继续搜了一下,果然在linuxorg上找到了解释:to explain the wild card issue, the solution is \*The reason why, and why its a spon...…
-
Chinese Contacts Match
这两天在琢磨一个中文通讯录里面用户名称匹配的问题,大概的需求是这样的,比如我的通讯录里面有一个名字叫“张三丰” 的联系人,我希望能够更方便的查找到联系人。手机上输入中文肯定是不方便的嘛,肯定是输入字母来快速定位更便捷,基本的想法是通过将中文转化为拼音然后来匹配,基本的case如下: 首先,输入完整的拼音肯定是要能够匹配的,比如输入 zhang san feng 其次,输入首字母肯定也能够匹配,比如“zsf” 然后输入拼音的一部分...…
-
Android 弹出广告窗口
周五在测试我们的游戏大厅里面新游戏的时候,意外的发现了一种非常恶心的广告。某种应用可以在你现在正在运行的应用上弹出一个窗口,点击之后就会跳去广告页,只有右上角有个小小的叉子标记可以关闭它,十分容易误触。而且最恶心的是,它可以在你当前运行的应用,甚至是手机的首屏上弹出来。如果是个恶意程序,在你使用支付宝之类的app弹出来,然后很多用户都会误以为是支付宝弹出来的,万一误点进到它的某些恶意页面,估计就会给用户带来损失。然后问题就是如何找出这个app。可是这个弹出的窗口什么icon都没有,弹出的时...…
-
Android Uprade Failed
这两天鼓捣我们APP的在线升级,遇到一个让人抓狂的问题,折磨了两天终于搞定了。首先,我们的app是作为system app,随ROM一起发布,安装在/system/app目录下,这个是导致bug出现的根本原因。APP在启动的时候,会去服务器检查版本,发现有新版本的客户端的时候会提示用户更新,用户确认后启动下载并在下载完成后自动安装。故障的现象: 安装没有问题,但是在安装之后如果选择“打开”则会报错,错误描述为某个activity不能cast成自己………… 十分诡异,理解不能 ╮(╯▽╰)...…
-
Android Lesson Activity
准备啃掉google 官方网站的training lesson. 第一课是activity,内容很简单,主要包含三个部分。 starting an activity resuming and pausing activity Stoping and Restarting activity Recreating an Activity##Resuming and Pausing其实在开发app的过程中,对这几个环节都已经比较熟悉了,但是通过学习官方的doc,还是对原来一知半解的东西...…
-
Android 3d Tagcloud
今天在讨论中大家想在我们的搜索页将搜索热词用wordpress中常见的tag云的形式来展示,功能不足噱头补嘛 XD然后就在google上搜索了一番。在中文的开发论坛里找到了一个demo,类似星空图的样子,效果不错。不过惊喜在后台,google上又找到了一个开源的项目tagin!,它实现了一个真正的浑天仪tag云,而且效果很华丽哟。代码地址在这里,感兴趣的可以下载体验一下。不过现在它是通过在屏幕边缘长按来控制tag球转动,我想把代码修改一下,让他可以在滑动的时候也能很方便的让tag云跟随转动...…
-
Android App升级失败原因
上周遇到了一个非常蛋疼的bug,我们的应用通过下载更新升级的时候,显示升级成功,但是重启手机之后检查应用的版本发现还是原来的版本。分析了各种各样的问题,比如因为我们的应用是系统app,安装在/system/app/目录下,担心是不是因为这个导致了更新失败。在检查了/data/app/目录之后,发现没次更新之后这里确实有新的apk包安装,但是重启之后文件就消失了。又经过了一段时间蛋疼的排查,终于有个兄弟提醒我们,是不是只改了version name没有改version source?检查了一...…
-
Android Push Mqtt
MQTT是一种M2M协议,用于节点之间通信,网上不少人推荐它,认为其性能和开销方面要强于XMPP,准备搞个demo试一下。看了它的官方网站(http://mqtt.org/) ,不爽的是主流的服务器端实现是IBM的闭源服务器,对于喜欢开源有洁癖的我来说,很是不爽,而且一想到要和IBM的一堆服务绑到一起,一阵恶心又要涌上心头。不过MQTT也有开源的实现Mosquitto,据说性能上可能暂时不及IBM。准备先从了解了解MQTT的协议,看看它到底在哪些方面要优于XMPP。如果真的可取,可以考虑以...…
-
Android学习笔记(二) 开发工具
首先需要了解的,就是android本身。09年在阿郎的时候,跟筱松就关注过android,不过没想到那之后android的发展速度真的是超乎想象。android系统是基于linux的开源操作系统,理论上可以拿到google发布的代码自己编译,不过据说需要机器的性能比较好,然后还要花挺久的时间吧。google提供了android SDK可以方便的下载各个版本android系统的依赖包以及example code,供开发者学习使用。对于熟悉eclipse的Java开发者,同样提供了方便的ecl...…
-
Android学习笔记(一)
半推半就的,这就开始开发android了,终于还是踏上了这条路哇。这回真的是一边学,一边干了。基本是拿着同事原来的代码,一边学一边改。android是基于linux的,安装了Google的SDK之后,将android手机的debug选项打开,就可以在电脑上通过adb shell登录到手机上。可以观察到android系统的目录和linux系统是非常相似的,linux系统上的ls、cp、mv等命令也同样提供了。而且,android下还可以自己添加类似tcpdump等更加强力的开发工具。出于安全...…
-
Android点9图
之前遇到一个问题,美术给我们的点9图在eclipse预览还有google提供的工具里头,看着效果都很好。但是一放到实际设备上,点9图不是像预想的那样平铺上去,而是变成了很丑的拉伸……网上搜了半天,也没发现有什么解决之道,直到看到了这篇文章。看完这个,然后用google提供的工具draw9patch.bat再打开我们的图一看,就豁然开朗了。我们的原图只设置了拉伸区,却没有设置内容区,就导致一放到实际设备上就变形。改成新的图片之后,立刻就显示正常了。…
-
Androidui
今天开始做android的UI了,要自己独立做一个新的页面,嗯,新的挑战…… 第一个拦路虎,就是发现我们一个180x180的图片,在1280x720的宽屏手机上显示的特别大。但是如果在ImageView里头写死90dip或者180px之后,图片在手机上显示的大小就比较合理了,真是百思不得其解。怀疑和具体设备上的像素密度有关,后来就找到了这篇文章。 用里面提供的代码,测出来我们设备的dpi是320,也就是对应的xhdpi。之前我的图片都是只放到了drawable目录下,copy了一份到dra...…