最让我感动的动画短片One minute fly
Author: admin
一只只有一分钟生命的苍蝇,如何实现自己的梦想。
也许当人人都做一只one minute fly,生命会更加精彩。
Author: admin
虽说我老未成年就开始打工,说到正式签约,白纸黑字,报官上税的工作这还是头一回,感觉也不太相同。首先MSR工作环境还是不错的,虽然没有狗狗的免费食物,有免费饮料也还行。可惜都不太健康,不宜多喝。其次呢老板非常热情,不停地问这问那,这也是提早开始intern的好处,等到人多了,就难以得到这么好的照顾了。
西雅图的天气狠糟糕,来了三天,天气分别是晴转中雨,中雨转阴转中雨和中雨。虽说有樱花盛开,在大雨摧残下不知道还能不能等到周末去华大赏花。
总的来说工作比较有热情,虽然没有彻底找到该怎么搞,对这个group的总体vision大略有了一个了解,get things done!
最后一点就是Windows。叹,为了读一个目录,需要一个权限更新,从一点等到六点,居然没有propagate 到服务器。我都想说你搞个Samba做ActiveDirectory行不行!!!!
所有工具都要重新拿微软的玩意重新写一遍,这也是最不爽的地方,不过这样也好,不能再Download别人的东西来打马虎眼了。
April 5th, 2011 | Posted in 胡言乱语 | 1 Comment »
Author: admin
一只只有一分钟生命的苍蝇,如何实现自己的梦想。
也许当人人都做一只one minute fly,生命会更加精彩。
March 28th, 2011 | Posted in 胡言乱语 | No Comments »
Author: admin
石室诗士施氏,嗜狮,誓食十狮。适施氏时时适市视狮。十时,适十狮适市。是时,适施氏适市。氏视是十狮,恃矢势,使是十狮逝世。氏拾是十狮尸,适石室。石室湿,氏使侍拭石室。石室拭,氏始 试食是十狮尸。食时,始识是十狮尸,实十石狮尸。示释是事。
芝之稚侄郅,至智,知制纸,知织帜,芝痔炙痔,侄至芝址,知之知芷汁治痔,至芷址,执芷枝,蜘至,踯侄,执直枝掷之,蜘止,侄执芷枝至芝,芝执芷治痔,痔止。芝炙脂雉肢致郅。
季姬寂 集鸡 鸡即棘鸡 棘鸡饥叽 季姬及箕稷济鸡 鸡既济 跻姬笈 季姬忌 急咭鸡 鸡急 继圾几 季姬急 即籍箕击鸡 箕疾击几伎 伎即齑 鸡叽集几基 季姬急极屐击鸡 鸡既殛 季姬激 即记《季姬击鸡记》
羿裔熠,邑彝,义医,艺诣。 熠姨遗一裔伊,伊仪迤,衣旖,异奕矣。熠意伊矣,易衣以贻伊,伊遗衣,衣异衣以意异熠,熠抑矣。伊驿邑,弋一翳,弈毅,毅仪奕,诣弈,衣异,意逸。毅诣伊,益伊,伊怡,已臆毅矣,毅亦怡伊。翌,伊亦弈毅。毅以蜴贻伊,伊亦贻衣以毅。伊疫,呓毅,癔异矣,倚椅咿咿,毅亦咿咿。毅诣熠,意以熠,议熠医伊,熠懿毅,意役毅逸。毅以熠宜伊,翼逸。熠驿邑以医伊,疑伊胰痍,以蚁医伊,伊遗异,溢,伊咦。熠移伊,刈⑩薏以医,伊益矣。伊忆毅,亦呓毅矣,熠意伊毅已逸,熠意役伊。伊异,噫,缢。 熠癔,亦缢。
伊姨殪,遗亿镒。伊诣邑,意医姨疫,一医医伊姨。翌,亿镒遗,疑医,以议医。医以伊疑,缢,以移伊疑。伊倚椅以忆,忆以亿镒遗,以议伊医,亦缢。噫!亦异矣!
《易姨医胰》 易姨悒悒,依议诣夷医。医疑胰疫,遗意易姨倚椅,以异仪移姨胰,弋异蚁一亿,胰液溢,蚁殪,胰以医。易胰怡怡,贻医一夷衣。医衣夷衣,怡怡奕奕。噫!以蚁医胰,异矣!以夷衣贻夷医亦宜矣!
于瑜欲渔,遇余于寓。语余:“余欲渔于渝淤,与余渔渝欤?”余语与瑜:“余欲鬻玉,俞禹欲玉,余欲遇俞于俞寓。”余与于瑜遇俞禹于俞寓,逾俞隅,欲鬻玉于俞,遇雨,雨逾俞宇。余语于瑜:“余欲渔于渝淤,遇雨俞寓,雨逾俞宇,欲渔欤?鬻玉欤?” 于瑜与余御雨于俞寓,俞鬻玉于余禹,雨愈,余与于瑜踽踽逾俞宇,渔于渝淤。
西溪犀,喜嬉戏。席熙夕夕携犀徙,席熙细细习洗犀。犀吸溪,戏袭熙。席熙嘻嘻希息戏。惜犀嘶嘶喜袭熙。
唧唧鸡,鸡唧唧。几鸡挤挤集矶脊。机极疾,鸡饥极,鸡冀己技击及鲫。机既济蓟畿,鸡计疾机激几鲫。机疾极,鲫极悸,急急挤集矶级际。继即鲫迹极寂寂,继即几鸡既饥,即唧唧。
狮识豕,豕识狮。始,狮嗜舐豕;豕适。豕时侍狮食柿,狮适。时逝,狮始试豕势。狮舐豕时,适时试噬豕。狮嗜豕时,豕试噬狮。狮嗜豕时,豕适示狮。豕噬狮 时,狮奭。豕始识狮势实势。豕蓍筮,筮示:狮实誓噬弑豕。豕饰失势,事事适狮。时时侍狮。师事狮。试使狮释豕。 是时,豕视虱噬狮,狮拭虱,狮实失适。豕舐狮时,噬虱示狮。豕时时噬虱示狮,使狮适。狮视豕噬虱,狮释。狮始识豕势实是噬虱,豕失势。狮始矢誓弑豕。适 时,豕适噬虱示狮,狮示豕:豕噬虱失实,豕实是试弑狮。狮始施狮式示豕。豕视狮式,豕失屎。狮始噬弑豕。 狮噬食豕势,豕失势,豕逝世。
适时,十豕驶适。十豕视豕尸,奭。十豕誓师,誓使狮释豕尸事实。狮释:狮食实是柿,食豕是失实。狮视豕是‘士’,豕视狮是‘师’。狮事事适豕,豕失识世事。豕时拭狮豕屎;时施矢石弑狮。适时狮驶,豕施矢石弑狮失事,豕弑豕,豕逝世。狮饰弑豕事实,十豕释,驶逝。
豕逝世,狮失豕侍。狮食失柿。狮始试食豕尸。狮食豕尸实适。狮始识豕尸实适狮食。是始,狮时时弑豕,嗜食豕尸。
始,狮视十豕势似狮。时逝,狮始识,十豕势实似豕。视十豕是十尸。适时,狮视十豕适,狮施狮式示十豕。狮恃势噬弑豕。十豕失是豕,十豕驶逝。 狮拾豕尸适市。使絁饰豕尸。狮视市,示市:狮是豕师,豕师事狮。豕视师失食,豕矢誓使师食豕。豕逝世,侍师食豕尸,豕实是‘士’。狮食豕,狮失‘士’,实 狮蚀。是使狮谥豕:‘豕氏’。谥豕‘仕’。狮示市:十豕师事‘豕士’。
狮时适市,施狮式示市。诗《狮食豕史诗〉示市:
狮食实是豕,豕食实是柿。时时狮食豕,世世豕食柿。
事实是事实,实事是实事。世视狮食豕,实是事实事。
December 27th, 2010 | Posted in 胡言乱语 | No Comments »
Author: admin
Picker View需要两个接口:DataSource和Delegate。
在定义接口的地方要有如下定义:
一个类必须至少实现下列方法:
@interface SingleComponentPickerViewController : UIViewController
<UIPickerViewDelegate, UIPickerViewDataSource>
#pragma mark -
#pragma mark Picker Data Source Methods
- (NSInteger) numberOfComponentsInPickerView: (UIPickerView *) pickerView
{
return 1;
}
- (NSInteger) pickerView: (UIPickerView *)pickerView
numberOfRowsInComponent: (NSInteger) component
{
return [pickerData count];
}
#pragma mark Picker Delegate Methods
- (NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger) row
forComponent:(NSInteger) component{
return [pickerData objectAtIndex:row];
}
其中Data Source提供了数据,而Delegate则实际获取数据。
如果要接收某个Component被选择的消息,则要实现一个delegate方法:
- (void) pickerView:(UIPickerView *) pickerView
didSelectRow: (NSInteger) row
inComponent: (NSInteger) component{
if (component == kStateComponent) {
NSString *selectedState = [self.states objectAtIndex:row];
NSArray *array = [stateZips objectForKey:selectedState];
self.zips = array;
[picker selectRow:0 inComponent: kZipComponent animated:YES];
[picker reloadComponent:kZipComponent];
}
}
另外,下面的例子简要说明如何使用NSDictionary
NSBundle *bundle = [NSBundle mainBundle];
NSString *plistPath = [bundle pathForResource:@"statedictionary" ofType:@"plist"];
NSDictionary *dictionary = [[NSDictionary alloc]
initWithContentsOfFile:plistPath];
self.stateZips = dictionary;
[dictionary release];
NSArray *components = [self.stateZips allKeys];
NSArray *sorted = [components sortedArrayUsingSelector:@selector(compare:)];
self.states = sorted;
NSString *selectedState = [self.states objectAtIndex:0];
NSArray *array = [stateZips objectForKey:selectedState];
self.zips = array;
更改每个组件的宽度也可以用代理实现:
- (CGFloat) pickerView: (UIPickerView *) pickerView
widthForComponent: (NSInteger) component
{
if(component == kZipComponent)
return 90;
return 200;
}
注意到前面我们在- (NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger) row forComponent:( NSInteger) component 代理方法中,实现的是返回一个NSString。如果要显示图片,则需要实现另一个代理方法
- (UIView *) pickerView : (UIPickerView *)pickerView viewForRow:(NSInteger) row forComponent (NSInteger) component
该方法返回一个View对象。可以用下面方法创建Image View
UIImage *bar = [UIImage imageNamed:@"filename"];
UIImageView *x = [[UIImageView alloc] initWithImage:bar];
最后,注意一个方法,可以用以下方法动态为不同名字的field设置值:
[self setValue:value forKey:fieldName]
Field name 可以是字符串,同时也是变量名称。很动态哦。
August 9th, 2010 | Posted in 胡言乱语 | No Comments »
Author: admin
构造、添加View并在View之间切换是IPhone开发最常见的问题。一般来说,要构造一个View需要以下几个步骤:
切换View分两种,第一是在启动地时候选择一个View。这需要修改AppDelegate头文件和m文件。首先,要修改MainWindow.xib。首先要把要显示地View的一个实例添加到xib中。将Library 中一个View Controller 添加到MainWindow.xib中(放到File’s Owner边上)。而后把其控制器改为你要选用的View Controller subclass。这样,在启动时,程序自动加载MainWindow.xib的同时,也就加载了你定义的这个View。如果我们需要在delegate里头操作这个Controller的话,就需要在Delegate类中添加一个Outlet,并把View Instance连接到这个Outlet。而真正显示这个View,必须在delegate中做以下连接:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[window addSubview:switchViewController.view]; // Key Point!
[window makeKeyAndVisible];
return YES;
}
而如果要动态加载和切换View,则注意以下几个函数:
if(self.yellowViewController == nil){
YellowViewController *yellowController =
[[YellowViewController alloc]
initWithNibName:@"YellowView" bundle:nil];
self.yellowViewController = yellowController;
[yellowController release];
}
if (self.blueViewController.view.superview == nil) {
[yellowViewController.view removeFromSuperview];
[self.view insertSubview:blueViewController.view atIndex:0];
}else {
[blueViewController.view removeFromSuperview];
[self.view insertSubview:yellowViewController.view atIndex:0];
}
一个最复杂的动画切换,目前就给个例子:
[UIView beginAnimations:@"View Flip"
context:nil];
[UIView setAnimationDuration:1.25];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
if (self.blueViewController.view.superview == nil) {
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight
forView:self.view cache:YES];
[yellowViewController viewWillDisappear:YES];
[blueViewController viewWillAppear:YES];
[yellowViewController.view removeFromSuperview];
[self.view insertSubview:blueViewController.view atIndex:0];
[yellowViewController viewDidDisappear:YES];
[blueViewController viewDidAppear:YES];
}else {
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight
forView:self.view cache:YES];
[yellowViewController viewWillAppear:YES];
[blueViewController viewWillDisappear:YES];
[blueViewController.view removeFromSuperview];
[self.view insertSubview:yellowViewController.view atIndex:0];
[yellowViewController viewDidAppear:YES];
[blueViewController viewDidDisappear:YES];
}
[UIView commitAnimations];
特别需要注意,今天尝试实现Tab Controller,一旦需要加载Outlet的时候就收到SIGABRT。问题何在?下面详细写写如何使用Tab Controller。
第一步,建立一个新的Tab Bar Application。如果不准备使用Tab Bar Application而是用Window Based的话,需要用上面方法添加一个UITabBarController作为Root View。二者效果相同,推荐直接用Tab Bar Application。
第二步,添加新的View到Tab Bar。这里有一些trick。基本上,建立xib,controller,连接等都相同,要加入Tab Bar,首先选取Tab Bar对象,在Attribute Inspector里头,添加足够数量的View Controllers,一个Controller对应一个tab。而后在界面点选每一个Tab,选择其Nib Name,并在 Identity Inspector里头选正确的Controller!!! 这步及其重要,否则添加任何Outlet都会产生SIGABRT。
August 9th, 2010 | Posted in 数码生活 | 1 Comment »
Author: admin
@property (retain, nonatomic) UILabel *statusText;
retain: 必须,不使用垃圾收集机制(不支持)
nonatomic: 如果不用多线程,可以节约开销
在.m文件中,还要添加@synthesis statustext; 一句,来自动添加对应得方法实现。如果我们retain了这个对象,那么我们应该正确的释放它,否则会泄露。应该在dealloc方法中加入
[statusText release];
每当要在Controller中修改、引用对象,采用Outlet,Action就是event. 我们在修改一个View之后,可以直接将Outlet / Action拖动到File’s Owner Object上,这个Object就代表对应的那个Class。按住 Control把File’s Owner 拖动到每个需要定义Outlet的对象上,并选择合适的Outlet,吧对应的Action拖动到File’s Owner上,并选择合适的Action.
按钮标题有四种状态,包括normal, highlighted, disabled and selected。获取titile需要用以下方法:
NSString* title = [sender titleForState:UIControlStateNormal];
创建新的字符串可以用initWithFormat方法,完整得参考可以看这里。
简单的例子:
NSString* newText = [[NSString alloc] initWithFormat: @”%@button pressed.”, title];
而多个变量的例子:
NSString* buf=[[NSString alloc] initWithFormat:@"The variable %s has the value %d\n", varName, varVal];
主意的是这里Allocate完一定要release掉。
[buf release];
常用属性:
关闭键盘的两种方法,一是相应Did End on Exit Action,然后调用Sender的resignFirstResponder方法。二是用一个巨大的Button放在背景,当按它的时候把所有Text Field都resign.
分为两步,首先是如何显示对话框。下面代码是例子:
- (IBAction) doSomething: (id) sender{
UIActionSheet *actionSheet = [[UIActionSheet alloc]
initWithTitle:@"Are you sure"
delegate:self
cancelButtonTitle:@"No Way!"
destructiveButtonTitle:@"Yes, I am sure"
otherButtonTitles:nil];
[actionSheet showInView:self.view];
[actionSheet release];
}
同时,要响应用户所点击的结果,则需要首先让我们的Controller实现相应的类。比如
而后实现对应的方法
在这些方法中,我们要取得用户点击了哪个按钮,通过buttonIndex参数来实现。例如:
- (void)actionSheet:(UIActionSheet *)actionSheet
didDismissWithButtonIndex:(NSInteger)buttonIndex
{
if(!buttonIndex == [actionSheet cancelButtonIndex]){
NSString *msg = nil;
if (nameField.text.length>0) {
msg = [[NSString alloc] initWithFormat:
@"You can breathe easy, %@, everything went OK.",
nameField.text];
}else {
msg = @"You can breathe easy, everything went OK.";
}
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Something was done" message:msg delegate:self cancelButtonTitle:@"Phew" otherButtonTitles:nil];
[alert show];
[alert release];
[msg release];
}
}
重载View的viewDIdLoad方法(无参数)。下面是例子:
- (void)viewDidLoad {
UIImage *buttonImageNormal = [UIImage imageNamed:@"whiteButton.png"];
UIImage *stretchableButtonImageNormal = [buttonImageNormal
stretchableImageWithLeftCapWidth:12 topCapHeight:0];
[doSomethingButton setBackgroundImage:stretchableButtonImageNormal
forState:UIControlStateNormal];
UIImage *blueImagePressed = [UIImage imageNamed:@"blueButton.png"];
UIImage *stretchableButtonImagePressed = [blueImagePressed stretchableImageWithLeftCapWidth:12 topCapHeight:0];
[doSomethingButton setBackgroundImage:stretchableButtonImagePressed forState:UIControlStateHighlighted];
}
</pre>
<h3> 旋转和移动控件</h3>
<p> 旋转支持需要设置对应View的方法: </p>
<pre>[cc lang="objc"]
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
同时,发生旋转的时候会调用对应View的
button1.frame = CGRectMake(20, 20, 125, 125);
对应的,四个参数分别为左上x,y和长宽。 通过嵌套[UIView beginAnimations:@"move buttons" context:nil];…[UIView commitAnimations]; 语句,能够实现动画。
August 8th, 2010 | Posted in 数码生活 | No Comments »
Author: admin
这件事血黄血暴力了,手头只有10.6.3的安装光盘,用bootthink启动死活不行,都是直接重启。设置busratio=17,成功但是五国。不想花费太多时间于是直接用TrueImage 把整个在Vostro上安装好的分区镜像过来,启动是用busratio=17,并配上以下的kext,同时删除ATA相关Kext,启动成功。 Read the rest of this entry »
July 21st, 2010 | Posted in 数码生活 | No Comments »
Author: admin
Uppsala是瑞典第四大城市……不过以中国的标准,这也就算一个县城。总人口只有13万。不过,古时候这里是瑞典天主教的中心,斯堪的纳维亚的大主教驻锡此地,而瑞典最古老的Uppsala University也诞生于此。古老和现代在这个小城中结合得非常完美,既有现代风格的火车站及站前广场,又有古朴典雅的教堂。路上看不到行色匆匆。
同时这个小城也并不显得闭塞,在路上随处可见来自世界各地的人民,除了土生土长的北欧人之外,以土耳其人最多。长达16个小时的日照使得夏日的Uppsala充满活力。瑞典这个国家已经享受了近180年的和平,作为欧洲唯二的世外桃源,也许人民早已经忘记了什么事争执了吧。
July 13th, 2010 | Posted in 行走天下 | No Comments »
Author: admin
在阿姆斯特丹机场热得汗流浃背……欧洲真是环保,空调都舍不得开。
Tags: 旅行
July 11th, 2010 | Posted in 行走天下 | No Comments »
Copyright © 2012 - 路随人茫茫 | Entries (RSS) | Comments (RSS)
WordPress theme designed by
web design