Archive for September, 2008

google2009在华南地区笔试题目之二

网上看到的,原文:http://www.phpobject.net/blog/read.php?145
google第二道笔试题
题目要求大致意思:
* 给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含),指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。
* 比如,A=[1,0] K=21 那么输出结构应该为100
自己用php写了一个,大家看看~

google2009在华南地区笔试题目之一

网上看到的,原文:http://www.phpobject.net/blog/read.php?144
三个编程题目中的第一个,最简单的。
题目要求:
给定一个字符串str,要求按照输入的顺序输出不同字符的个数。注意,不区分大小写。
比如str = “bcCd*ba” 对应的函数输出结果为 b:2 c:2 d:1 *:1 a:1
用php自己写了一个,大家看看:

Cocoa 入门8

字典– NSDictionary
是使用键值配对(条目)来储存和获取对象的,就像1 对应 A ,2 对应 B等等。
例子:
NSArray *keys = [@"one two three four" componentsSeparatedByString: @" "];
NSArray *values = [@"diy how-to hobby geek" componentsSeperatedByString: @" "];
//建立两个NSArray 数组,并按照字符串之间的空格进行分割储存
NSDictionary *dict = [[NSDictionary alloc] initWithObjects: values forKeys: keys];
printf (“%s\n”, [[dict description] UTF8String]);
//用keys 和 values创建一个新的字典,并输出
结果如下:
one = diy;
four = geek;
three = hobby;
two = how-to;
——————————————————————
可变字典 — NSMutableDictionary 同 NSMutableString、NSMutableArray 类似:
- setObject:   [...]

Cocoa 入门7

NSArray    数组啊~ 数组
数组和字符串一样也分为 不可变数组(NSArray) 和 可变数组(NSMutableArray).
- count  //返回数目
-  objectAtIndex: //返回引索位置的值
-  containsObject: //判断对象是否存在  返回值 YES 或 NO
关于NSArray的例子:
NSString *string = @”kukufun is the Biggest How To and DIY community in china”;
NSArray *array = [string componentsSeparatedByString: @" "];
// 以上是建立一个字符串,并按照空格把字符串的值分别存放在数组中
int count = [array count];
int i;
for ( i = 0 ; i < count; i++)
{
printf(“%i: %s\n”, i , [[array objectAtIndex:i] UTF8String]);
}
// [...]

Cocoa 入门6

字符串(下)[2]:
接着上次的来继续(上次要下班了…所以又把字符串下截成了几部分,实在不好意思。)
-pathComponents 的作用是 —–   /Users/realjons/kukufun.txt 这个路径以斜线拆分成几个子串,并把他放到NSArray数组中。
NSString *kukufunPath = @”/Users/realjons/readme/kukufun/kukufun.txt”;
NSArray *theComponents = [kukufunPath pathComponents];
数组结构如下:
数组引索 0 = Users
1 = realjons
2 = readme
3 = kukufun
4 = kukufun.txt
同样的- pathComponents 也提供了更多的操作方法 比如  - lastPathComponent, – stringByAppendingPathComponent, – stringByDeletLastPathComponent 这里就不过多介绍了。  如果你感兴趣就在Xcode里面写一下看看运行效果,如果懒得写就看一下文档。
可变字符串:
NSString字符串是Unicode字符的不可变数组, 这就意味着如果我们创建了一个字符串,我们就得一直用它,不能通过NSString来对它进行改变。  可变字符串正好对NSString是一个很好的补充—-    NSMutableString, 它是NSString的一个子类更多信息可以查阅在你Xcode中的官方文档。
由于是NSString的子类, 所以之前学习的对字符串操作一样适用于NSMutableString上。
这里有两个method 可以在可变字符串的尾部添加内容— – appendString: 和 – appendFormat: . 下边来举个例子:
NSMutableString *aMutableString = [[NSMutableString alloc] initWithString @”I [...]

Cocoa 入门5

字符串(下)[1]:
抽取子串
在字符串中抽取子串有三个method:
- substringToIndex: [从头部截取]
- substringWithRange: [从中间截取]
- substringFromIndex: [结尾截取]
用法头尾相似:
[aString substringToIndex: 7];
[aString substringFromIndex: 17];
中间的稍有不同,需要用NSMakeRange(起始位置,截取长度)来进行截取定位,所以可以任意位置截取:
[aString substringWithRange: NSMakeRange(15, 5)];
———————–酷库房的分割线———————————
字符串中处理文件路径:
用- stringByExpandingTildeInPath: 这个method来处理地址出现的”~”(用户主目录缩写)。 比如:
NSString *aString = @”~/kukufun.txt”;
NSString *otherString = [aString stringByExpandingTildePath];
现在地址数组 otherString 变成了 /Users/realjons/kukufun.txt了。  相反的我们可以用- stringByAbbreviatingWithTildeInPath 来把/Users/realjons/kukufun.txt变回~/kukufun.txt。
我们也可以对文件扩展名进行操作这里又出现了两个截然相反的method : – pathExtension 和 – stringByAppendingPathExtension 它们的用途我们可以通过两个例子来清楚地了解:
NSString *path = @”~/kukufun.txt”;
NSString *newPath = [path pathExtension]; // newPath 字符串里的内容是txt, 可以用它来获取文件扩展名。
注: 如果newPath为空时,请检查文件是否以XXX.xx这样的格式 , 或者文件是否存在。
NSString *path = @”~/kukufun”;
NSString *newPath [...]

Cocoa 入门4

字符串(中):
比较两个字符串是否相等时一定要注意。  看个C用strcmp(string1,string2)的例子:
char string1[] = “www.kukufun.com”;
char string2[] = “www.kukufun.com”;
if (strcmp(string1, string2) == 0) {
//something here
}
条件表达式会是真。
那么我们来看一下这段代码:
NSString *string1 = @”www.kukufun.com”;
NSString *string2 = @”www.kukufun.com”;
//这里我们创建了两个不同的对象,但他们都有相同的值。
BOOL result = string1 == string2 ;
//这里我们对两个对象进行比较。
返回的结果是不等(BOOL值返回false),这是因为变量string1,string2并不是真正包含一个字符串的对象,而是指向内存中字符串对象的指针,实际是一个内存位置的地址。  考虑一下上边比较的情况,它们的内存位置是不同的,所以并不相等。
我们可以用- isEqualToString: 这个Method来进行比较:
NSString *string1 = @”www.kukufun.com”;
NSString *string2 = @”www.kukufun.com”;
//这里我们创建了两个不同的对象,但他们都有相同的值。
BOOL result = [string1 isEqualToString: string2];
//用- isEqualToString: Method来进行比较。
返回的值应该是”true”,我们其实可以直接来用- caseInsensitiveCompare: 来解决值的比较而不用考虑大小写的问题:
BOOL result = [string1 caseInsensitiveCompare: string2] == NSOrderSame;
结果将为真。
在串中搜索子串:
找出字符串子串中的位置,可以用- rangeOfString: 这个Method —–
NSString *aString [...]

优化你的smarty(完) 总结

此文章主要针对在使用中,在不改变smarty代码的基础上,增加一些我们自己的东西,而达到一些优化而写的.主要是我在使用中遇到一些问题的解决方法,希望对大家有用~ : )
经过前面讲到的处理方法,可以总结针对smarty优化的方法,整理一些,方便大家理清思路,做相应的处理,如果有疑问,请回看之前的文章~
注意:我提到的优化方式,主要是针对smarty编译模板前,对模板进行处理,即用到smarty的register_prefilter函数,来达到预处理的目的,这样做的好处是处理只在编译模板时进行.
1. 在开发阶段结束后,网站上线后,关掉compile_check,即设置:compile_check = false;
2. 处理include标签,将多个小页面合并成完整的页面在进入编译.
3. 将css文件提前,可能的话将js文件放到页面下面,并压缩他们,(如果可以,你还可以合并他们)
4. 去掉页面注释,并压缩html代码.gzip(deflate甚至是:bzip2)输出页面,当然这也适合css,js文件的输出.注意是判断浏览器是否支持他们.
经过这一番改造,相信你的页面输出会更快~

Cocoa 入门3

字符串(上):
这里介绍NSString 和 NSMuableString 两个基础功能,他们负责处理Coca中大部分字符串的功能。
NSString是创建核管理不可变的Unicode字符数组。 这也是Cocoa牛逼之处,你不用为担心处理不同语言而困扰。
创建示例:
NSString *aString = @”KuKuFun 是一个DIY网站。”;
当然,你也可以用init.. 来创建空的字符串:
NSString *aBlankString = [[NSString alloc] init];
也可以复制已有的字符串:
NSString *aString = @”我们要把KuKuFun做成国内最好的DIY网站!”;
NSString *anotherString = [[NSString alloc] initWithString: aString];
可以简化为:
NSString *anotherString = [[NSString alloc] initWithString: @”我们要把KuKuFun做成国内最好的DIY网站!”];
常用的Method有: – length 和 – characterAtIndex
可能现在你有个疑问,为什么要出现 alloc ?  这是因为在Cocoa中要创建一个新的对象需要通过两个步骤— 调用alloc来分配必要的内存地址,然后再把它初始化成值。
将字符串写入磁盘:
我们可以用- writeToFile: atomically: 这个method把字符串写入到文件中。  这里要说明的是atomically是一个布尔型的值, 所以它可以有YES或NO。 如果参数是YES的话是不会覆盖文件的。
示例:
NSString *path = @”/User/realjons/kukufun.txt”;
NSString *contentOfFile = @”KuKuFun 的目标是中国最大的DIY网站! “;
[contentOfFile writeToFile: path [...]

Cocoa 入门2

条件语句很简单:
if (条件) {
      //代码
}
Else
{
     //代码
}
这里值得说明的是Objective-C的真假分别用1和0来代替,他们都是BOOL型的,但大多数人都用YES和NO来当做真假,我个人觉得这个比较容易看。
循环:
直接看例子—
int x;
for (x = 18; x<=28; x++)
{
      NSLog(@”爷是青年!”);
}
NSLog(@”x是 %d”, x);
除了for 还有while、do {} while()等。
一些心得:
在制作GUI的程序时,自己最好画一下图才能彻底清楚控制流程各个部件与Controller的关系,比如哪些应该是Action、哪些是Outlet等等。
—————————————————————
今天暂时到这里。
本文绝逼原创,如果出现错误请及时更正、转载请注明出处。
谢谢哥!