分类: General 标签: Blog, Facebook, twitter, update 评论: 3哎 好久没有写博客了,现在把大部分的时间放在了社交网络上,twitter, facebook, google+,越来越发现google+ 都是的G友头像都是用的日本动漫里的女主卡通人物头像好不爽啊。facebook都是认识的人有些换没法说。还是去twitter吧。大家都在极力推荐tweetbot. 这个一个只有只有2个人的团队,把他做到了app store的前25.具体记不清了。在考虑是不是要花这个3刀呢。第一个付费的应用的angry birds. 我女朋友一直要求,就买了。刚开始我抢着玩,到了现在就我自己晚了。
下学期有一个很大的project. 6个人一个小组。不知道是什么项目呢。据说很难啊。只有3门课。不知道下一篇博客写什么呢。反正我的博客不会用付费的空间了。找个免费的就行了。
分类: General 标签: source code 评论: 4Keith Schwarz 是斯坦福的 CS 研究生,他学习编程的办法是自己动手用各种语言编写一些他认为有意思的算法实现,现在已经完成了 80 多个,目前还有 135 个 TODO。我相信国内也有年轻人这么干过,但似乎从没人分享过,这里是传送门
分类: C/C++ 标签: C#, Code 评论: 0在网上闲逛找到了一个八皇后问题的C语言源码。
/* Code by Slyar */
#include
#include
#define max 8
int queen[max], sum=0; /* max为棋盘最大坐标 */
void show() /* 输出所有皇后的坐标 */
{
int i;
for(i = 0; i < max; i++)
{
printf("(%d,%d) ", i, queen[i]);
}
printf("\n");
sum++;
}
int check(int n) /* 检查当前列能否放置皇后 */
{
int i;
for(i = 0; i < n; i++) /* 检查横排和对角线上是否可以放置皇后 */
{
if(queen[i] == queen[n] || abs(queen[i] - queen[n]) == (n - i))
{
return 1;
}
}
return 0;
}
void put(int n) /* 回溯尝试皇后位置,n为横坐标 */
{
int i;
for(i = 0; i < max; i++)
{
queen[n] = i; /* 将皇后摆到当前循环到的位置 */
if(!check(n))
{
if(n == max - 1)
{
show(); /* 如果全部摆好,则输出所有皇后的坐标 */
}
else
{
put(n + 1); /* 否则继续摆放下一个皇后 */
}
}
}
}
int main()
{
put(0); /* 从横坐标为0开始依次尝试 */
printf("%d", sum);
system("pause");
return 0;
}
最后的结果为92.
分类: General 评论: 0这学期学了iPhone的开发,是基于Objective C,在进行网络传输的时候发现了很多困难,通过Google搜索发现了一个叫做ASIHTTPRequest库,他已经把经常用的Http请求封包了,可以很方便的调用
下面是一个最简单的Http同步传输例子。
- (IBAction)grabURL:(id)sender
{
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request startSynchronous];
NSError *error = [request error];
if (!error) {
NSString *response = [request responseString];
}
}
下面是一个异步传输的例子,在一个正常的App中应该避免同步Http,应该使用异步http。异步http就是在后台执行http请求而不影响用户的操作。如果同步http请求被使用,用户可能认为app崩溃活死机。
- (IBAction)grabURLInBackground:(id)sender
{
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];
[request startAsynchronous];
}
- (void)requestFinished:(ASIHTTPRequest *)request
{
// Use when fetching text data
NSString *responseString = [request responseString];
// Use when fetching binary data
NSData *responseData = [request responseData]; }
- (void)requestFailed:(ASIHTTPRequest *)request
{
NSError *error = [request error];
}
分类: Objective C 标签: Memory Management, Objective C 评论: 4初学objectice-C的朋友都有一个困惑,总觉得对objective-C的内存管理机制琢磨不透,程序经常内存泄漏或莫名其妙的崩溃。我在这里总结了自己对objective-C内存管理机制的研究成果和经验,写了这么一个由浅入深的教程。希望对大家有所帮助,也欢迎大家一起探讨。此文涉及的内存管理是针对于继承于NSObject的Class。转自 http://vinceyuan.cnblogs.com/
一 基本原理
Objective-C的内存管理机制与.Net/Java那种全自动的垃圾回收机制是不同的,它本质上还是C语言中的手动管理方式,只不过稍微加了一些自动方法。
1 Objective-C的对象生成于堆之上,生成之后,需要一个指针来指向它。
ClassA *obj1 = [[ClassA alloc] init];
2 Objective-C的对象在使用完成之后不会自动销毁,需要执行dealloc来释放空间(销毁),否则内存泄露。
[obj1 dealloc];
这带来了一个问题。下面代码中obj2是否需要调用dealloc?
ClassA *obj1 = [[ClassA alloc] init];
ClassA *obj2 = obj1;
[obj1 hello]; //输出hello
[obj1 dealloc];
[obj2 hello]; //能够执行这一行和下一行吗?
[obj2 dealloc];
不能,因为obj1和obj2只是指 针,它们指向同一个对象,[obj1 dealloc]已经销毁这个对象 了,不能再调用[obj2 hello]和[obj2 dealloc]。obj2实际上是个无效指针。
如何避免无效指针?请看下一条。
3 Objective-C采用了引用计数(ref count或者retain count)。对象的内部保存一个数字,表示被引用的次数。例如,某个对象被两个指针所指向(引用)那么它的retain count为2。需要销毁对 象的时候,不直接调用dealloc,而是调用release。release会 让retain count减1,只有retain count等于0,系统才会调用dealloc真正销毁这个对象。
ClassA *obj1 = [[ClassA alloc] init]; //对象生成时,retain count = 1
[obj1 release]; //release使retain count减1,retain count = 0,dealloc自动被调用,对象被 销毁
我们回头看看刚刚那个无效指针的问题,把dealloc改成release解 决了吗?
ClassA *obj1 = [[ClassA alloc] init]; //retain count = 1
ClassA *obj2 = obj1; //retain count = 1
[obj1 hello]; //输出hello
[obj1 release]; //retain count = 0,对象被销毁
[obj2 hello];
[obj2 release];
[obj1 release]之 后,obj2依然是个无效指针。问题依然没有解决。解决方法见下一条。
4 Objective-C指针赋值时,retain count不会自动增加,需要手动retain。
ClassA *obj1 = [[ClassA alloc] init]; //retain count = 1
ClassA *obj2 = obj1; //retain count = 1
[obj2 retain]; //retain count = 2
[obj1 hello]; //输出hello
[obj1 release]; //retain count = 2 – 1 = 1
[obj2 hello]; //输出hello
[obj2 release]; //retain count = 0,对象被销毁
问题解 决!注意,如果没有调用[obj2 release],这个对象的retain count始终为1,不会被销毁,内存泄露。(1-4可以参考附件中的示例程序memman-no-pool.m)
这样的确 不会内存泄露,但似乎有点麻烦,有没有简单点的方法?见下一条。
5 Objective-C中引入了autorelease pool(自动释放对象池),在遵守一些规则的情况下,可以自动释放对象。(autorelease pool依然不是.Net/Java那种全自动的垃圾回收机制)
5.1 新生成的对象,只要调用autorelease就行了,无需再调用release!
ClassA *obj1 = [[[ClassA alloc] init] autorelease]; //retain count = 1 但无需调用release
分类: iPhone/iPod Touch, Objective C 标签: iOS, Objective C, UISlider 评论: 0下面我来介绍以下UISlider在iOS下的应用,在iOS下我们可以使用UISlider更直观的去调节一些参数。

1. 新建Project
打开Xcode,通过File -> New -> New Project ->iOS -> Application ->view-based Application 新建一个Project. 名字输入 UISlider.
在目录中有UISliderDelegate 和 UISliderViewController(.m 和 .h文件)几个文件。我门现在只需要改写UISliderViewController.m /.h 文件 和 UISliderViewController.xib文件。单机 UISliderViewController.xib文件,在右上角选择地6个图表。将所有需要的控件拖到xib文件。

2. 编辑UISliderViewController.h文件
打开UISliderViewController.h,在@end 之前添加如下代码
@property (nonatomic, retain) IBOutlet UILabel *lab;
@property (nonatomic, retain) IBOutlet UISlider *red;
@property (nonatomic, retain) IBOutlet UISlider *green;
@property (nonatomic, retain) IBOutlet UISlider *blue;
-(IBAction)update:(id)sender;
编辑完成后,应该和下面的代码类似
#import
@interface UISliderViewController : UIViewController
@property (nonatomic, retain) IBOutlet UILabel *lab;
@property (nonatomic, retain) IBOutlet UISlider *red;
@property (nonatomic, retain) IBOutlet UISlider *green;
@property (nonatomic, retain) IBOutlet UISlider *blue;
-(IBAction)update:(id)sender;
@end
3. 编辑UISliderViewController.m文件
在打开UISliderViewController.m文件, 在@implementation 后添加如下代码
@synthesize red,green,blue,lab;
-(IBAction)update:(id)sender
{
float r=[red value]/255;
float g=[green value]/255;
float b=[blue value]/255;
//NSLog(@"red float value is: %f", r*255);
//NSLog(@"green float value is: %f", g*255);
//NSLog(@"blue float value is: %f", b*255);
[lab setTextColor:[UIColor colorWithRed:r green:g blue:b alpha:1]];
//NSLog(@"Update button pressed");
}
找到 viewDidLoad 方法,编辑使其看起来向如下代码
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
lab.text=@"UITextView";//设定Lable的初始值
red.minimumValue=0;//设定Red的最小值为0
red.maximumValue=255;//设定Red的最大值为1
blue.minimumValue=0;//设定Blue的最小值为0
blue.maximumValue=255;//设定Blue的最大值为1
green.minimumValue=0;//设定Green的最小值为0
green.maximumValue=255;//设定Green的最打值为1
//[lab setTextColor:[UIColor blackColor]];
[super viewDidLoad];
}
4.最后一步,告诉SDK,关联Update按钮与update方法,关联其他控件和 label,red,green,blue
右键单机你的Update,找到Touch up inside,把那个加号拖至到黄色的File’s owner。
松开鼠标后,会出现 一个黑色标签的 update: ,单机确定就可以了。
Run一下试试吧,Enjoy!
辛辛苦苦一个多小时完成的。
稍后会把Project 放到Google Code上提供下载
未经许可不得转载,保留所有版权
分类: 心情, 软件工程 标签: 开发 评论: 4我在看了看Google的webmaster工具发现我的关键词很乱很杂,不知道是不是要转型了,专成程序开发的站点。熟悉的编程语言有C/C++, Java, .Net, Objective C。以后就多谢谢编程方面的文章吧。
分类: Apple, iPhone/iPod Touch, Objective C 标签: iPhone,Development, Objective C 评论: 0一两周之前我给大家介绍了iPhone开发的hello world。下面介绍以下iPhone的基础知识
1. 不同的语言
iPhone的开发语言采用的是Objective-C, 这是一个非常与众不同的变成语言,这是一个由C语言发展的,并且经过扩展。大家可能会经常看到NSxxx的类,这是来源于NeXTSTEP的Cocoa。
2. 殊的硬件设备
iPhone不同于一般的PC or Mac,它有以下的特性
- 有限的内存
- 小屏幕
- 拇指输入:这是于大屏幕的PC最主要的不同,PC是用鼠标输入,图表可以非常的小,因为鼠标是可以很精确的输入的。而拇指就不行了。
- 非常漫的而且不部分网络传输:WIFI 或者 3G都不如有限传输稳定
- 电池有限:尽量少的使用GPS,这是最耗电的感应器了
- 电话随时会呼入:大家有没有在iPhone上玩过赛车类游戏啊(或者Tap Tap),我就不继续解释了
分类: 转载 标签: 911 评论: 2
九一一袭击事件(也被称为“9·11”恐怖袭击事件、九一一恐怖攻击事件或简称9·11、九一一)是2001年9月11日发生在美国本土的一系列自杀式恐怖袭击事件,根据官方说法,由基地组织所发动。据官方说法,当天早晨,19名基地组织恐怖分子劫持了四架民航客机[1][2]。劫持者故意使其中两架飞机分别冲撞纽约世界贸易中心双塔,造成飞机上的所有人和在建筑物中的许多人死亡。两座建筑均在两小时内倒塌,并导致临近的其他建筑被摧毁或损坏。根据官方说法,劫机者迫使第三架飞机撞向位于弗吉尼亚州阿灵顿县的五角大楼。此一袭击地点临近华盛顿特区。在劫机者控制第四架飞机飞向华盛顿特区后,部份乘客和机组人员试图夺回飞机控制权。最终第四架飞机于宾夕法尼亚州索美塞特县的乡村尚克斯维尔附近坠毁。据官方说法,四架飞机上均无人生还。
via 维基百科
分类: General, 转载 标签: 中华人民共和国,中华民国, 教师节,9月10日,9月28日 评论: 0教师节是一个感谢老师一年来教导的节日,不同国家定订的教师节时间不同。
Via wikipedia