移动应用中,通过在客户端对访问的url进行加密处理来保护服务器上的数据

2011年全球Android装置出货量可能突破2亿台,俨然,我们已经进入了智能移动时代了。

在之前,我们总说21世纪,人才跟信息最值钱。撇开人才不讲,我觉得进入移动时代之后,因为屏幕大小、使用习惯限制,人们已经很少会在手机设备上打开Google来搜索一个东西了,而是去应用市场上下载一个相关的应用。在这种环境下,从互联网上收集、整理信息然后开发一个应用来提供这些信息显然已经成为一件很有意义的事情了。

但是在国内这种抄袭成风的环境之下,我们辛辛苦苦收集整理来的数据,很可能一夜之间就被人通过提供给客户端使用的接口给爬走了,显然,通过一定的方式把服务器端的数据保护起来是非常有必要的。这里,我就介绍一下[......]

继续阅读

Posted in 杂七杂八 | Tagged , , , | 1 Comment

ios中获取UIImage的像素信息

网上搜罗实验了各种方法,最后找到一个很简单的,简单到就只要一行代码:

CFDataRef bitmapData = CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage));

这里拿到的bitmapData变量里面就包含了所有像素的所有信息,记得用完了之后要释放bitmapData所占有的空间。CFData的用法可以参考官方文档

使用CFDataGetLength函数可以看到,这个数据的长度是4*image.size.width*image.size.height。也就是每一个像素点都占据了四个字节的长度,依次序分别是RGBA[......]

继续阅读

Posted in iOS | Leave a comment

ios下使用rsa算法与php进行加解密通讯

首先了解一下几个相关概念,以方便后面遇到的问题的解决:

  • RSA算法:1977年由Ron Rivest、Adi Shamirh和LenAdleman发明的,RSA就是取自他们三个人的名字。算法基于一个数论:将两个大素数相乘非常容易,但要对这个乘积的结果进行因式分解却非常困难,因此可以把乘积公开作为公钥。该算法能够抵抗目前已知的所有密码攻击。RSA算法是一种非对称算法,算法需要一对密钥,使用其中一个加密,需要使用另外一个才能解密。我们在进行RSA加密通讯时,就把公钥放在客户端,私钥留在服务器。
  • DER, PEM:既然使用RSA需要一对密钥,那么我们当然是要先使用工具来生成这样一对密钥了。在lin[......]

继续阅读

Posted in PHP, iOS | Tagged , , | 27 Comments

在mac下编译phpredis的c扩展给MAMP使用

首先解释下标题中提到的N个名词:

  1. mac:macosx,一款苹果电脑公司推出的操作系统,作为软件从业人员如果现在连这个还不知道的话呢,建议改行了
  2. php:脚本语言,广泛应用于网站开发,成功案例有鼎鼎大名的国内永远访问超时或者500的facebook
  3. redis:新兴的NOSQL内存数据库代表,支持很多中数据存储格式,同时存取速度非常快,发展速度非常迅猛,开源项目,于2010年被VMWare收购
  4. phpredis:提供给php使用redis客户端扩展,采用c语言开发,速度是纯php开发的扩展predis的3倍
  5. MAMP:mac下的类似于LAMP或者WAMP的php、mysql、apache集成[......]

继续阅读

Posted in PHP, Redis | Tagged , , , , | Leave a comment

使用gocr进行简单的验证码自动识别

所谓简单的验证码,就是由一般的字体直接转成的图片,内容只包括了字母、数字甚至是纯数字,同时没有进行任何噪点、叠加、扭曲等特殊处理的验证码。

虽然说现在的验证码生成工艺已经很成熟,但是目前网上的绝大多数的验证码都是简单验证码的,有的时候,我想用程序自动做点查询的事情,然后通过邮件或者飞信发送给自己让自己知道一下,这样就需要对其中的验证码进行自动破解了。例如,有时候发宅急送的快递,想每隔一段时间到宅急送官网查询一下订单状态。

宅急送查询

这不,就遭遇了验证码了,像这种纯数字的验证码,用程序来自动识别,实在是太简单了,我们就拿这个“1943”为例子吧,这是一张gif的图片

1943

我们使用gocr只要一个命令就解决[......]

继续阅读

Posted in 杂七杂八 | Tagged , | 2 Comments

iPhone中获取磁盘剩余空间大小

+ (long long) freeDiskSpaceInBytes{
struct statfs buf;
long long freespace = -1;
if(statfs(“/var”, &buf) >= 0){
freespace = (long long)(buf.f_bsize * buf.f_bfree);
}
return freespace;
}

 

在网上看到的例子中,第四行调用函数 statfs 时给定的参数是”/”,其实是不正确的,因为这样拿到的其实是系统分区的剩余空间,这些空间对我们应用程序来说是没有权限使用的,[......]

继续阅读

Posted in iOS | Tagged | Leave a comment

Redis中虚拟内存的技术实现介绍

本文是Redis官方wiki文章的翻译,本人英文不是很好,如有看不懂的地方这里查看原文

这篇文档介绍Redis中虚拟内存子系统(以下简称VM系统)的内部实现细节,本文的目标受众是希望理解后者修改虚拟内存实现的开发者,而不是最终用户。

keys 和 values:什么会被交换出内存?

VM系统设计的目的在于通过将Redis中的object从内存中交换到硬盘以释放内存的使用。但是比较特别的是,Redis只会把关联到values的object交换到硬盘中。为了更好的理解这个概念,下面使用Redis内部的DEBUG命令来展示一个Object在Redis内部是什么样子的:

redis> set [......]

继续阅读

Posted in Redis | Tagged , | Leave a comment

Redis.conf 配置详解

其实redis.conf文件中,对每一个配置项都有非常详细的注释,本文只是将其进行翻译,同时加了点小料。本文档所对应的redis版本为2.0.4。

  1. 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写):
    1k => 1000 bytes
    1kb => 1024 bytes
    1m => 1000000 bytes
    1mb => 1024*1024 bytes
  2. daemonize no 默认情况下,redis不是在后台运行的,如果需要在后台运行,把该项的值更改为yes
  3. pidfil[......]

继续阅读

Posted in Redis | Leave a comment

突破封锁,让你的App Engine站点在国内能够访问

很不幸,今天开始,GAE的云计算服务全面被屏蔽了,appspot.com 被关键字封锁,我的很久远时候做的小站魔兽世界语音中英文对比在线听也无法访问到了。虽然站点访问稀少,但作为一个已上线服务,还是需要尽力保证其可用性的。所以,快马加鞭,做解决方案,处理问题。

为了让App Engine小站在国内能够访问,我们需要使用一台国外的服务器来进行代理。正好,为了免除备案等麻烦的手续,本博客搭建的时候就购买了淘宝上最便宜的一款美国VPS,虽然比较慢,相比于放在国内,还是能够接受的。故此,便编写了一段PHP文件来进行代理中转。

首先,在域名商添加二级域名映射,将wow.yorkgu.me映射至VPS的I[......]

继续阅读

Posted in 杂七杂八 | Tagged , | Leave a comment

在多台电脑同步iPhone的办法

公司前两周配发了一台macbook pro,开心啊,想把之前的用的黑苹果上的东西用迁移助手转移出来,可苦于没有螺丝刀,拆不下那台PC的硬盘啊,没办法,新建了帐号便用到现在了。但是iPhone一直都是在之前的电脑上进行同步的,现在没办法在这台笔记本上进行同步了,只要企图进行同步便会被告知将要擦除所有数据,真是不方便啊。今天终于闲了些,便琢磨着怎么把同步给迁移过来。

经过不断的google与尝试,寻到解决办法。打开黑苹果下iTunes的iTunes Music Library.xml文件,在第11行有记录Library Persistent ID的值,为D45132668B5BF813,只要把笔记[......]

继续阅读

Posted in 杂七杂八 | Tagged , | 1 Comment