最后更新于 .

经过这么久在android客户端和服务器端的开发,感觉还是积累了不少东西想要和大家分享一下,但是好想单独拎一个点出来又不太值得,所以就汇集到一起写成系列吧。

一. 关于用户数据存储

首先在注册的协议里,定义如下公共传输字段:

version: 这个其实是xml中配置的versionCode。versionName个人认为没有什么必要,所以就不传了。

channel:  用户渠道,这个和xml中的UMENG_CHANNEL 是共用的,因为一直在使用umeng,所以这样定义反而清楚一些。

device_id: 设备ID

os: 操作系统类型,这里默认传入android

os_version: 操作系统版本

对于小数据量,用户数据存储在mysql中是相对较好的选择,这里直接以django的model为例:

from django.db import models
class User(models.Model):
    device_id = models.CharField(max_length=255, null=True, blank=True)
    version = models.IntegerField()
    channel = models.CharField(max_length=64, null ...

最后更新于 .

12年的时候入了macbook pro,之后就一直用到现在,只是一直把机械硬盘当作ssd用,盖了盖子直接就带着到处跑,结果最近就给杯具了。

文章可能写的比较散,我就给分成几节吧

一. 发现问题

现象倒是比较常见,死机频繁,并且开chrome一直chrome内核的ide必然死机。一开始以为是10.9系统的问题,后来想来想估计是内存或者硬盘的问题。

在网上下了个神器:TechTool

大家如果对自己的硬盘不放心也可以去检测一下~ 检测的结果:

SMART检查失败 硬盘存在不可修复的硬件问题,请更换硬盘

得,这直接判了死刑了。

赶紧去网上买了块硬盘,以及一个硬盘盒。

又从朋友那边接了拆mac的专用螺丝刀盒。

为了保险起见,从朋友那里借了个移动硬盘,把所有数据备份了一下。

二. 制作系统

话说因为买mac的时候并没有赠送系统盘之类的东西,所以去网上淘了一下,比较庆幸已经有人做好了: Mac OS X 10.9 Mavericks U盘复刻版,将其导出为U盘即可。

导出为u盘的方法也简单说下:

  • 准备一个8G的U盘
  • 执行系统自带的磁盘工具,将下载的DMG恢复到准备的U盘上
  • 喝杯咖啡,等半个小时,搞定

三. 更换硬盘,安装系统

拆硬盘还是比较简单的 ...

最后更新于 .

终于把博客成功迁移到阿里云上了,怎么样,感觉速度快多了吧?

其实自己与阿里云结下缘分也近3年了,可以说看着阿里云一步步变好,所以也才最后决定把自己所有的服务都迁移到了阿里云服务器上,包括自己的应用服务器、游戏服务器、乃至最后自己的博客。

话说阿里云给每个老客户貌似都分配了专门的客户经理,这个感觉还是很爽的,哈哈。

好了,算是免费给阿里云打个广告,接下来说说迁移的事情。

wordpress的迁移对于程序员来说是很简单的,无非是搭建个php环境,迁移一下mysql的数据就可以了。

具体使用的各组件如下:

nginx
supervisor
php
mysql

 

nginx的配置很多网上写的都不太对,所以这里贴出来给大家:

    server {
        listen       80;
        server_name  vimer.cn *.vimer.cn;
    
        root         /data/release/vimer;
		
		# 客户端上传大小
        client_max_body_size 20m;
        
        rewrite /wp-admin$ $scheme://$host$uri/ permanent;
    
        location / {
            index index.php index.html;
            if (-f $request_filename ...

最后更新于 .

yunbk 是我前段时间用python写的一个备份插件,取中文谐音云备份的意思,你可以很方便的用这个插件来备份mysql、redis、mongodb、乃至各种media目录,等等。 安装可以直接用pip执行:

pip install yunbk

github地址如下:

https://github.com/dantezhu/yunbk

而用法也非常简单,比如要备份mysql,则代码如下:

from yunbk import YunBK
from yunbk.backend.local import LocalBackend

import sh

backend = LocalBackend('/data/backup')

with YunBK('mysql', [backend]) as ybk:
    sh.mysqldump(u='root',
                 all_databases=True,
                 _out="dump.sql")
    ybk.backup ...

最后更新于 .

之前的博客主题应该是自打博客成立就一直没换了,最近不知道怎么突然有心情,就把博客重新调整了一下。 主要有以下几个方面:

一. 将主题换成了zanblog,基于bootstrap3。

换之前特意让媳妇看了一下,在肯定了自己的审美观没有问题之后,就给换啦 之后可以在代码中使用bootstrap的标签实现一些特殊的效果,如:

这是成功背景框

引用的写法:

这是我引用的

当然,带来的影响就是不兼容ie8一下的浏览器了。不过想了下,搞技术还能忍受ie6、7那拖慢的速度的话,那也算太有耐心了。。

二. 将代码配色插件从WP-Syntax换成了 Crayon Syntax Highlighter

WP-Syntax虽然功能上没什么问题,但是展示的效果实在是太差了。所以这次果断换成了 Crayon Syntax Highlighter,效果如下

def show_name():
    print 'vimer.cn'

三. 重新启用了多说评论插件

关于这一点其实挺纠结的,因为之前用过一次,之后因为有些朋友不太喜欢社交登录而放弃了,所以这次特意把匿名留言也同样保留着。 而至于想要换成多说的最大原因,在于zanblog默认的配色是和多说非常搭配的。。而wordpress默认的评论展示奇丑无比。。

四. 修正了某些文章的图片404

之前某年做数据迁移的时候,被人搞丢了好多中文名字的图片,当时没有太在意,后来一直不停的有博友反馈,因为时间有限也就没有顾得上。 这次把很多图片找了回来 ...

最后更新于 .

2020-4-25更新

google提供了更方便的服务账号(Service Account)的方案,具体方式如下:

1. 去google developer api后台(https://console.developers.google.com/)
    1. 创建 project
    2. 进入创建好的project,找到 Google Play Android Developer API,并启用
    3. 在project中,创建服务账号(service account)
    4. 在service account中创建密钥,并下载json格式的密钥文件


2. 去google play console(https://play.google.com/apps/publish/)
    1. 点击左下角的设置=>API权限,选择关联的项目
    2. 给服务账号授予财务角色的权限
    3. 等待24小时生效


注意 ...

最后更新于 .

这几个月实在被android的圆角制作折腾坏了,国内的几个站要不就是添加的圆角全是锯齿,要不就是体验烂到极差;国外的 www.roundpic.com 其实不错,只是在制作大图标的时候,圆角的半径会出现问题。

所以干脆今晚花了3个小时自己写了一个工具:http://uapp.me ,以后app开发相关的工具也都会陆续放到这里来,希望能给大家提供点帮助。

附一张截图:

QQ20140112 1

最近实在是被各种事情搞得焦头烂额,看我这篇文章的发表时间就知道了,等稍微闲一点,再多和大家交流心得吧。(汗,刚才发现这文章只显示日期,不显示时间。。)

最后更新于 .

因为需要把pc端的一部分特性迁移到手机上,所以就直接用了air来打包。但是发现ane对air sdk的版本要求很高,所以要手动升级一下。

而之所以把flash builder的4.6和4.7版本都升级,是因为4.6是最后一个支持设计界面的版本。。

好吧,废话不多说,直接开始吧。网上很多教程有点问题,我尽量描述的细一些。

4.6和4.7版本的升级方法是不一样的,所以分开来说。

注:现在的air sdk版本是3.8,对应的数字是21。

一. flash builder 4.6版

1. 到 http://www.adobe.com/devnet/air/air-sdk-download.html 下载air sdk,这里是一个很大的坑,对于flash builder 4.6,我们要下载底下那个链接,如图。下载下来的名字应该是 AdobeAIRSDK.tbz2 

QQ20130730 1

2. 执行:  

cd ...

最后更新于 .

做服务器端开发的同学应该都对进程监控不会陌生,最近恰好要更换 uwsgi 为 gunicorn,而gunicorn又恰好有这么一章讲进程监控,所以多研究了下。

结合之前在腾讯工作的经验,也会讲讲腾讯的服务器监控是怎么做的。同时也会讲下小团队又该怎么敏捷的解决。

下面按照监控的方法依次介绍。

一。按照进程名监控

在腾讯内部所有server都是要打包发布的,而在打包过程中是需要填写要监控的进程名,然后在crontab中定时通过ps查询进程是否存在。

这种方法是比较简单的方法,但是考虑到很多进程会在启动之后改名,以及进程名存在各种特殊字符,多个进程同时存在的问题,实际操作起来并不是很舒服。

举个简单的例子,gunicorn启动之后的进程名类似这样 master: [wsgi:app],其中的方括号在grep时要记得转义,否则就会出问题。

不过不管怎么说,这种方法在很多其他方式用不了的时候反而是最简单的方法。

下面是用python的实现:

def monitor_process(key_word, cmd):
    p1 = subprocess.Popen(['ps', '-ef'], stdout=subprocess.PIPE)
    p2 = subprocess.Popen(['grep', key_word], stdin=p1.stdout, stdout=subprocess.PIPE)
    p3 ...

最后更新于 .

因为各种各样的原因,vimer.cn停止更新了很长一段时间,先对关注本博的朋友说声对不起了。

时隔这么久,连google reader都被关了,话说我博客2/3的订阅可是来自google reader啊,也不知道这些用户现在去哪里了,希望不要把这里忘了才好啊 :)

废话不多说,说说这次对博客做了哪些调整吧。

先给大家上一个完整的插件截图:

QQ20130703 2

主要的变更如下:

1. 把原来的评论插件替换成了《多说》

其实我记得当时最早做社交评论的是《友言》,只是自己常逛的几个站(像《雷锋网》)都在用《多说》,所以就换上了。用了之后总体感觉还是挺好的,而且评论也会同步回本地数据库,哪天不想用也不会有影响。不过可惜这样 wp-syntax 的着色就没法在评论里生效了,等以后看看有什么解决方案吧。

再就是顺便在多说里把匿名评论给关了,太多垃圾评论了。

和依云通了一下邮件,可能社交评论并不适合这种技术博客,等我在另一个站用一段时间再看了,现在还是回滚到老的评论了。

QQ20130704 4

2. 数据备份插件换成了  BackWPup。

原来的插件只能备份数据库,而且只能发到邮箱,导致我很久之前的一次数据迁移丢了很多图片。现在用 BackWPup就不用担心啦,只要你愿意甚至可以把整个目录备份。

BackWPup支持很多种备份方式,不过可惜大部分在中国访问都有问题(囧)。唯一一个勉强可用的是dropbox,据说是跟换机房+https幸免遇难 ...