Archive for the ‘apple’ Category

伪造?还是检测信用卡 cocoa, Objc实现

伪造? 还是去检测一张信用卡? 看完这个图, 相信很容易了解其中的数学算法.

原始链接:http://www.geekv5.com/archives/2859

英文原始链接:http://www.mint.com/blog/trends/credit-card-code-01202011/

好了其实这个小知识还是很有趣的, 作为向geek前进的我们, 怎么能不知道这样的小trick.

看见这个,会想起什么?我们的思维真的会从伪造信用卡这个keywrod延伸到,卡片的生产,怎么把磁条信息录入,怎么去设这个陷阱让人踩了还不知道?

至少我不是的。。我第一个想到的是如果我有一个iphone,我的iphone上有一个软件通过摄像头,对着一张信用卡来信用卡真伪识别。So cool? 其实这样的思维常常出现在每个人的脑海中,那些so cool的创意程序可能就在这瞬间的头脑风暴产生了。好吧,其实本不应该说这么多的。其实我是想鼓励自己,纸上得来终觉浅,绝知此事要躬行,just do it.

其实这个信用卡真伪的识别是基于,一个叫做Luhn 的算法 详细内容请移步 http://en.wikipedia.org/wiki/Luhn_algorithm

我对这个算法的描述就是:

  • 从右倒左, 偶数位 * 2, 如果偶数大于10, 则个位+(十位/10)
  • 把奇数位和刚刚得出的偶数位相加得出 sum
  • sum如果能够mod 10 = 0 那就是正确的

这里给出C的code, wikipedia里面有java和pyhon的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
The Luhn Mod-10 Method (ISO 2894/ANSI 4.13) involves a check digit in the
one's position.  The check digit is calculated starting at the right with
the digit immediately preceding the check digit (ten's digit) and moving
toward the left, doubling every other digit.  If a doubled digit is greater
than nine, the two digits are added to together to obtain a single-digit
result.  The sum of all the resulting digits (including those skipped) is then
taken modulo with 10, to obtain the check digit.
 
Below, is untested code.
 
/************************************************************************
*  LuhnMod10 - self-checking scheme for validating card account numbers
*  according to ISO 2894/ANSI 4.13.
*
*    Ex:  cardNumber = "795102879015546"
*         strlen(cardNumber) == 15
*         LuhnMod10(cardNumber, 14) == 6 == cardNumber[14]
*
************************************************************************/
int LuhnMod10(char* cardNumber, int size)
{
  static int table[2][10] = { {0,1,2,3,4,5,6,7,8,9}, {0,2,4,6,8,1,3,5,7,9} };
 
  for (int i=size-1, odd=0, sum=0; i>=0; i--)
    if (isdigit(cardNumber[i]))
      sum += table[(odd=1-odd)][cardNumber[i]-'0'];
  sum %= 10;
  return (sum ? 10-sum : 0);               /* return the check digit */
}

站在巨人的肩膀是不是有一种很强大的感觉。好吧,我们既然要把要在iphone上实现,那首先需要一个Objective-C的代码. here is it ,从C代码修改过来并不是很难。

CheckCreditCard.h

1
2
3
4
5
6
7
8
9
#import 
 
@interface CheckCreditCard : NSObject {
	IBOutlet NSTextField *ccNum;
	IBOutlet NSTextField *ccTrue;
 
}
- (IBAction)checkIt:(id)sender;
@end

CheckCreditCard.m

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//  CheckCreditCard.m
//  Verify Credit Card
//
//  Created by cyher on 11-3-8.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//
 
#import "CheckCreditCard.h"
 
@implementation CheckCreditCard
 
- (id)init
{
	[super init];
	NSLog(@"Init!");
	return self;
}
 
- (IBAction)checkIt:(id)sender
{
	int sumTable[10][10] = {{0,1,2,3,4,5,6,7,8,9},{0,2,4,6,8,1,3,5,7,9}};
	int sum = 0, flip = 0;
 
	NSString *string = [ccNum stringValue];
	NSLog(@"ccNum = %@", string);
	if ([string length] == 0)
		return;
	for (int i = [string length] - 1; i >= 0; i--)
		sum +=
		sumTable[flip++ & 0x1][[string characterAtIndex:i] - '0'];
	NSLog(@"sum = %d", sum);
	if (0 == (sum % 10)) {
		[ccTrue setStringValue:[NSString stringWithFormat
				       :@"This is a real Credit Card!",
				       [string length]]];
	} else {
		[ccTrue setStringValue:[NSString stringWithFormat
					:@"This is fake Credit Card!",
					[string length]]];
	}
 
	return;
}
 
@end

来我们看看在mac上的效果吧:

 

怎么样很简单吧, 如果我们能够调用goggle(google的图形识别程序,基于云计算)的API,我们能够从图片转换成数字。其实一个有意思的小软件就成了. 希望我们能运用生活中的小科技, 来改变我们的生活吧.

 

 

原来苹果不会那么傻阿

话说apple 09.09.09的发布会 Rock n’ Roll,看来苹果选的日子也不错阿, 殊不知地球这边就一个北京就有近20000对情侣喜结连理. 发布会之前, 我又一个想法, 当3代touch配上3GS的处理器和内存, 还有摄像头和mic, 我就入个touch+any andorid手机来代替我的iphone. 哈哈, 可惜apple不会这么傻, 最起码没我这么梦幻. 这不是技术问题吧? Maybe,之前听说了touch有技术问题没有解决. 但我觉得, 这就是apple的经营理念, apple不傻, 真的出了个那么牛逼的touch, 除了打电话什么都和iphone一样了而价格又第很多, 人们确实都会像我一样 touch+any phone = iphone的. apple就是想告诉我们,我们的产品是没有完美的, 如果想完美,那价格也一定不是完美的, touch+phone ≠ 3GS. 或许, touch+nano+phone = 3GS,但是价格也是划等号的, 为什么我们不选又小又cool 的 3GS.

经过上面的分析, apple其实不会那么傻的, 他每次做产品, 定价和功能总能对应, 并且让你难以选择, 功能没有强大多少,但是你需要, 价格提高的幅度也让你难以抉择. 哈哈,到现在你就中了apple的心里陷阱了, 现在你明白了, 为什么果粉,总是有很多apple的设备, 但是这些东西从大体上看功能都差不多, 不得不说这是apple对发烧友的一种心里攻势. 总是让人又爱又恨.

等? 你错了, apple对等待他产品的人,会有更”严厉的惩罚”, 当你等到了 带设想头的touch的时候, iphone 3GS已经降价了或者出了个iphone 3G AS(Advanced Slim), 你到时候觉得疯了, 然后不顾一切的买了最新的 iphone 3G AS. 你的腰包被掏空, apple一样不少赚.

哈哈, 没事干分析自己的心情, 可能大多数人不会这样想,但是我见过的果粉,基本都是比我疯狂的.最后重申,只有一件apple的产品的绝对不是果粉, 因为如果你买了一件apple的东西,你会发现, 另一件产品和你有的这件原来配合的这么好,然后你就成了果粉,你不得不说apple东西好(确实也不错),要不你不是扇自己脸么.至于那些没有买第2件的, 你只是把iphone当成手机, touch当成mp4, nano当成mp3, mac当成pc了.

结束, 不能再说了,再说又开始给apple做广告了…….

在macbook上安装各种操作系统

想在macbook上装操作系统, 但是鉴于macbook于一般pc还不是很相同,所以在发行版的选择上还是有点困难的. 经过我在网上的搜索最后结合我自己的需要,在我的macbook pro上装了ubuntu,opensolaris这两个系统.(别提windows, 他就是用的人多点,其他没有什么可取之处,结论仅限于计算机爱好者).

mac上多系统启动
http://wiki.onmac.net/index.php/Triple_Boot_via_BootCamp_Ubuntu


ubuntu上装mac
https://wiki.ubuntu.com/MactelSupportTeam/CommunityHelpPages

最后还是选择ubuntu, 这个在资深linuxer中口碑不是很好的系统, 为什么口碑不好, 我想是因为ubuntu的成功有点不劳而获的感觉吧.整个系统建立在debian上,而自身对linux内核和软件库的贡献相对他的成功要少.当然这写东西不是我们要讨论的.为什么我选择了ubuntu装在我的macbook上, 因为我需要的是一个稳定,实用,功能完善的系统,主要作桌面应用和编码而不是作系统研究的OS, ubuntu都支持的非常好,在各大linux发行办中支持的最好了.ubuntu有专门的mac支持的团队,看上面的链接,所以很人性化了,其实最重要的是简单了,我现在的情况估计不允许我长时间编译gentoo…..

推荐指数: * * * * *

mac上opensolaris
http://wiki.genunix.org/wiki/index.php/OpenSolaris_Dual_Boot
http://blogs.sun.com/judychen/entry/在macbook_pro上安装solaris
http://www.weiphone.com/viewthread.php?tid=208850
http://developers.sun.com.cn/solaris/opensolaris_2005_mac.html#author
http://wikis.sun.com/display/chosug/OpenSolaris+2009.06+on+a+MacBook+Pro

solaris,哈,同样经典的unix, 现在有opensolaris项目能够跑在x86体系上,看上面的链接就知道sun和apple的关系还是不错的,opensolaris有很好的官方支持macbook.所以希望了解solaris的童鞋不能错过了.我跟人对opensolaris也是一知半解就不多说了,不过感觉不错.

推荐值数: * * * *

mac上debian
http://wiki.debian.org/MacBook
debian,最古老,软件包最多,最自由,最有linux精神的发行版之一,是ubuntu他爹,同样对macbook支持不错,就是配置起来稍微geek点, 喜欢钻研系统的高手们,推荐使用.

推荐指数: * * * *

mac上gentoo
http://www.odi.ch/prog/macbookpro/index.php
gentoo,包管理系统借鉴bsd的port, 全部源码自编译, 高手以及时间充裕的人,我相信一定能做出最适合自己,速度最快的linux. gentoo的意思是一种游的最快的企鹅.

推荐指数: * * *

mac上opensuse
http://en.opensuse.org/Installation_on_MacBook
opensuse, 华丽, 企业级高端应用, top500的超级计算机很多用的都是suse,这是为什么呢?我也不知道…想想华丽的suse配上精致的macbook一定感觉不错,但是文档支持一般, 软件支持也一般了.

推荐值数: * *

mac上arch
http://wiki.archlinux.org/index.php/MacBook#Mac_OS_X_with_Arch_Linux
http://wiki.archlinux.org/index.php/MacBook_Aluminum
http://wiki.archlinux.org/index.php/MacBookPro
arch linux, 轻量级linux,可定制性高,对i686有特殊优化. 对mac支持还算不错,对于一般用户来说还是要费点事的.arch可能就是gentoo的折衷方案吧.

推荐指数: * * *

mac上fedora
http://www.cenolan.com/2009/06/installing-fedora-11-on-a-macbook/
fedora, redhat支持的开源发行版,那是相当的有实力,我也一直用.但是装在macbook上可能难度不亚于arch或者gentoo,连个官方文档都难找到.不过上面那个链接介绍的已经很清楚了, 喜欢fedora的童鞋别错过了,毕竟fedora还是一个非常不错的发行版.

推荐指数: * * *

mac上freebsd
http://wiki.freebsd.org/AppleMacbook
freebsd, 和mac os x 同属一系. 优秀的架构,很适合作服务器应用, 让我想不到的是,对mac的支持也是相当的不错的,但是用起来还是需要一些经验和技术的,总之,freebsd装在mac上有些怪怪的,不过freebsd还是相当有内涵的OS大家不妨试试.

推荐指数: * * *

后记: 我们以前在pc上装hackintosh, 现在我们也在mac上装各种开源系统,这里我没有写安装过程,是因为,上面的链接里面已经讲的非常清楚了.写这个目的就是让人们知道,世界上不只有windows和mac os x, 还有许多优秀的系统, 在某些方面甚至更优秀.希望我们中国的开源事业能从OS开始, windows是个毒瘤, 把我们变的越来越傻, 我们越用越难以脱离, 我们就是这样被微软控制的.声明:没有说微软的技术不好, 只是它太封闭, 太独裁. 我们现在的版权意识很差,windows用的都是基本盗版的, 等到盗版不了的时候, 只有乖乖的交钱了. linux不仅免费,还能让我们更了解操作系统, 这样才是安全的.

macbook 换硬盘,数据转移

前几日想给我的macbook pro 升级一下硬盘, 目的就是为了在macbook上装上我linux和 opensolaris. 升级的硬盘是WD的500G蓝盘 5400转.这个硬盘口碑不错,测试数据也比我macbook pro原配的日立硬盘高了20分,同样是5400转差距咋就那么大呢….

好了, 买硬盘容易,数据转移是大家头疼的一件事. 有件事不明白,就是不知道为什么一些销售apple产品的第三方店铺,向用户要数据转移的费用,比如硬盘是500元,数据转移费用是100元.我顶不住了,我就写了下面的文章, 愿看过的人,再给mac换硬盘的时候能够省下100元把,呵呵. 当然, 已经会的大侠就当看笑话了,因为这100元让别人挣了真的是太冤了.

步骤是这样的:

  1. 先把apple的硬盘拆下来,换上新的硬盘.(这个我觉得很容易吧)打开后盖,卸下一个螺丝,硬盘就下来了,不能不赞一下apple的工业设计..
  2. 接下来,你需要一个移动硬盘盒,把你的老硬盘装上去,USB,firewire都行,最好是后者,速度快支持更好.然后把移动硬盘查到你的macbook上
  3. 放入leopard的安装光盘, 重启按住c键或者option键,进入重装系统界面, 选择磁盘工具
    diskutilits
  4. 源磁盘把你的移动硬盘也就是你的原来的硬盘拖拽到源磁盘位置, 把你的新装硬盘拖拽到目的位置. 勾上抹掉目的磁盘. 然后点恢复, 就是漫长的等待时间,我108G的数据搞了3个小时吧.完了以后直接重启, 现在的硬盘和原来一摸一样,apple真得是太人性化了.很简单的设置,方便对计算机不熟悉的用户.

P.S.

  • 如果你有time Machine设备,最好还是用time Machine.
  • 如果其实这个操作不一定要在启动的时候作,在进入系统里面打开磁盘工具是一样的,但是我为了数据安全还是没有进入系统.可能进入系统更快一点.若,实在系统里面作这个操作的话, 那就要把你的新硬盘放入硬盘盒那样恢复了.
  • 希望我写这个不会伤害到商家利益, 但是作为一个消费者,这么简单的操作,我还是不花那冤枉钱了.

Mac OS X 上的开源输入法,SunPinyin.

sunpinyin

在mac os下一直在找一个好用的输入法,用了fit,可以说是非常不错,但是作者好像不怎么更新了,Qim上次团购的时候给错过了,最近在opensolaris的网站上广的时候发现了sunPinyin, 就下仔用了用 ,感觉还是很不错的.最起码很fit我的输入习惯, 至于安装方式也很新颖,让大家安装的时候一定是最新的数据库和软件版本,看来还是挺为用户着想的.这就是开发者的blog 在blog上有下载.这里是项目主页,有兴趣的可以看看

About

You are currently browsing the Cyher.NET weblog archives for the apple category.