forecho 的独立博客

把生命浪费在美好的事物上

今年我在影院看的那些电影

2012年12月26日

真正开始在影院看电影是从今年中旬开始的。工作之后才觉得偶尔去看一下电影还是很享受生活的。最重要的是话的是自己赚的钱。好了,废话不多说了,进入正题。(下面10分为满分)

  1. 《复仇者联盟》:这部电影算是我第一次正式的找影院看的电影,当时是很期待这部电影,本身自己也是很喜欢看科幻片的,那这部电影其实的几个英雄所出演的《钢铁侠》系列、《雷神》、《绿巨人》系列还有《美国队长》我之后都看过了,那么这部电影把他们都包含进来了,当时想着一部电影能看到这么多的英雄也算是值回票价了。由于之前没有看电影的经验,票买的也比较急,买的iMax版的票竟然是第2排的了,好吧,勉强还能看到。那么整部电影剧情的话就是一般的美国电影,主要是特效。我给这部电影打8分,还好,值得去看。

  2. 《黑衣人3》:这部电影是我刚辞职,然后去找朋友玩,索性没什么事然后去跑万达影城去看的,也是冲着威尔 史密斯去看的,说实话感觉这部电影的Boss不怎么厉害,也还算一般,我也只能勉强的给8分

  3. 《蝙蝠侠3:黑暗骑士崛起》:这部电影是之前我们期待很久的电影了,然后跑去电影院准备看3D的,后来才知道只有2D版本的和iMax版的,无奈那影院只能看2D。整部电影2个多小时下来还是很不错的,有大场面,就光群众演员就几千人的场面就绝对值得你去影院看了,蝙蝠侠的战车太牛了,猫女也非常的性感,要说不足之处的话就是Boss刻画情节的不多,导致还是无法超越第二部小丑的角色。还有最终的Boss竟然是那个女的,这个很出乎意料。罗宾汉也是个亮点。这部电影我给9分,场面非常好。

  4. 《少年Pi》:李安导演的电影无烂片,这部电影是一部关于信仰的影片,我是冲着3D画面效果去看的,效果真的是很震撼,能于之前的《阿凡达》3D一拼了,是真的3D,不像大多数电影打着3D的旗号却说伪3D,李安是个会讲故事的导演,整部电影的画面是非常的美,非常的美,都想拿来做壁纸了。电影的最后导演也抛给了我们两个选择,一个是相信有老虎陪伴的版本,另一个是一个很残酷的现实版本,你更愿意是什么版本呢?这部电影完全可以打10分了,就评那唯美的场面,那震撼的3D效果,你完全值得去影院一看。

  5. 《一九四二》:这还是我第一次跑去影院支持咱中国的电影,冯小刚的电影,大牌明星阵容,讲的是一段被人遗忘的历史,很深刻,两个多小时,我也是比较认真的看完了,看完之后心里不能平静,同时也觉得河南话也并不是那么的难听。我给这部电影9分

  6. 《人在囧图之泰囧》:年末了,大家都想找部喜剧片很亲朋好友看,大家一起高兴高兴,那么这个时候恰好出来了《泰囧》这部小黑马影片,这次徐铮真是能赚疯了,票房有希望突破10亿,打破记录。趁周末带着弟弟去看了,整个电影下来笑声不断,徐铮自导自编的这部电影笑点并不在台词,台词并没有网络出现的段子,完全靠是的舞台剧的表演。这部电影和适合找朋友一起去看,10分

PS:再介绍一些我今年在电脑上看的比较深刻的电影,其实主要是下半年看的电影,上半年的事差不多都忘记了。

  1. 《独裁者》(这部电影超级搞笑)
  2. 《泰迪熊》(有泰迪熊就有笑点)
  3. 《赛德克巴莱》(非常男人的一部片子,你值得一看)

工作不仅仅是生活的一小部分

2012年12月16日

今天李总亲自给我们培训,讲了一些关于选择与事业的事情。

借助于《北京爱情故事》作为切入点,这部电视剧之前很火,我只是听过,没有时间去看,听说这部电视剧,对于毕业五年内的我们看了之后会更有感触。李总剪切了这部电视剧他认为最精彩的的片段,剪辑了两个片段,给人看了很有感触。

第一个片段是程锋的父亲与石小猛之间的关于一笔交易的谈话,我相信看了这部电视剧的人对这儿的剧情应该都有很深的感触,特别的对于男生来说,这程父看来人生的任何事情都可以交易,除了自己的血缘关系不能改变,任何事情都能改变,这话说的确实很冷酷,但是作为一名商人,这话确实有那么个道理。面对年终广告大单的合同以及大德公司一个高等的职位(带有股份)的这样大的诱惑,要用自己的女友作为交换条件,小猛最终还是犹豫了,这一犹豫就注定心动了。选择,同时也意味着放弃。另一种说法是选择是量力而行而放弃是顾全大局。小猛换回来的是成功,但是他是真的成功了吗?

记者这采访李嘉诚的时候,对李嘉诚说,“能不能用一句话概括您的人生感悟?”“建立自我,追求无我。”李嘉诚回答。什么是自我?要想真正很踏实的成功,你要做的就是循序渐进的成就自我,沉淀自我。只有靠点滴的积累才能稳扎稳打。人的价值不是你的银行存款有多少,而在于你一无所有的时候你值多少。马云说的话为什么有那么多人听呢?在我看来只是因为他的价值,他每天能挣几百万,那么一个老板每天挣几千块钱的时候,他说的话也会有十几个员工在听。

第二段视频其实我觉得更加的精彩,讲的就是伍媚带着吴狄成功谈下一个大项目的整个过程。话说商场如战场,这话没错。刚开始他们约见赵处长,由于吴狄的迟到,导致没能按时间约见,被对手公司抢先一步,但是这是的小伍并没有太过纠缠吴狄的过错而是很快的调整好心态做好后面的事情,很专业。后来虽然约见了,但是赵处长明显对他们不感兴趣了,约晚上一起吃饭被拒绝了,《计划书》差点也没能留下来。一般的人到这估计没看到希望可能就放弃了,但是小伍却认为没看到对方这合同上签字就代表还有希望,就不能放弃,越看不到希望就越要创造希望,这个做生意就想处对象,只要你付出真心就一定会有回报的。

真正这这次成功签下合同起关键性作用的事就是小伍掌握了赵处长的关键性资料,就是他信佛,而他们的竞争对手约赵处长吃饭的那天正好是15号,信佛的那天都要吃素的,然后他利用这一点成功的把赵处长变成了自己的内线。有了这个内线,在加上自己的演技她成功了拿下了这个项目,看完之后我不得不佩服这个女人。从她说的:男人好骗,因为男人容易同情女人,强者容易同情弱者;聪明锝女人会经常地装一下弱者。别以为女人真得弱,很多时候女人总比,男人坚强的多,然后去占男人的便宜。这句话就可以看出来她是个多么聪明的女人了。

其实谈客户这个事主要就是跟人打交道,就那他们拿下来的这个项目来说,两次吃饭都是只谈生活不谈工作,一般一个大的项目他去找你去做就是相信你这个人,你只要跟你的客户突破只是客户这个关系,让他变成你的朋友,其实很多事都好办了。小伍的这次成功也离不开她的那身技能,比方说KTV唱歌,陪赵处长唱的开心。李总还给我们讲了自己身上的两个实例,李总其实个头不是很高,刚开始跑业务的时候,经理老看不起他,还怀疑他能不能跑,怕他体质不行,开头两个月都没签单。一次是因为公司要写请帖,其他的同事写的字都拿不出手的情况下,他表现了一番,让经理另眼相看了一番。还有一次是一群经理吃完饭之后去KTV,在一群人唱歌实在很难听的情况下,他又表现的很不错。所以人一定去培养个自己的技能,说不定什么时候就能用上了。

一个人从他跟父亲的关系就能看出他与领导之间的关系,那么他与母亲的关系就能看出他对与自己家庭的关系 差不多这次培训大概就讲了这么多,最后李总还推荐了一本书跟我们看,是刘同写的《谁的青春不迷茫》,说是适合30岁的我们看。

最后李总还送给我们一句话“人的一辈子只有一万多天。人与人的不同在于:你是真的活了一万多天,还是仅仅生活了一天,却重复了一万多次。”

Yii—accessRules用法

2012年12月12日

一、访问控制过滤器(Access Control Filter) 访问控制过滤器是检查当前用户是否能执行访问的controller action的初步授权模式。这种授权模式基于用户名,客户IP地址和访问类型。访问控制过滤器适用于简单的验证。需要复杂的访问控制,需要使用将要讲解到的基于角色访问控制(role-based access (RBAC)). 在控制器(controller)里重载CController::filters方法设置访问过滤器来控制访问动作(看 Filter 了解更多过滤器设置信息)。

class PostController extends CController
{
......
public function filters()
    {
        return array(
            'accessControl',
        );
    }
}

在上面,设置的access control过滤器将应用于PostController里每个动作。过滤器具体的授权规则通过重载控制器的CController::accessRules方法来指定。

class PostController extends CController
{
    ......
    public function accessRules()
    {
        return array(
            array('deny',
                'actions'=>array('create', 'edit'),
                'users'=>array('?'),
            ),
            array('allow',
                'actions'=>array('delete'),
                'roles'=>array('admin'),
            ),
            array('deny',
                'actions'=>array('delete'),
                'users'=>array('*'),
            ),
        );
    }
}

上面设定了三个规则,每个用个数组表示。数组的第一个元素不是'allow'就是'deny',其他的是名-值成对形式设置规则参数的。上面的规则这样理解:createedit动作不能被匿名执行;delete动作可以被admin角色的用户执行;delete动作不能被任何人执行。 访问规则是一个一个按照设定的顺序一个一个来执行判断的。和当前判断模式(例如:用户名、角色、客户端IP、地址)相匹配的第一条规则决定授权的结果。如果这个规则是allow,则动作可执行;如果是deny,不能执行;如果没有规则匹配,动作可以执行。 为了确保某类动作在没允许情况下不被执行,设置一个匹配所有人的deny规则在最后,类似如下:

return array(
 // ... 别的规则...
 // 以下匹配所有人规则拒绝'delete'动作
 array('deny',
 'action'=>'delete',
 ),
 );

因为如果没有设置规则匹配动作,动作缺省会被执行。 访问规则通过如下的上下文参数设置: actions: 设置哪个动作匹配此规则。 users: 设置哪个用户匹配此规则。此当前用户的name 被用来匹配. 三种设定字符在这里可以用:

  • *: 任何用户,包括匿名和验证通过的用户。
  • ?: 匿名用户。
  • @: 验证通过的用户。 roles: 设定哪个角色匹配此规则。这里用到了将在后面描述的role-based access control技术。In particular, the rule is applied if CWebUser::checkAccess returns true for one of the roles.提示,用户角色应该被设置成allow规则,因为角色代表能做某些事情。 ips: 设定哪个客户端IP匹配此规则。 verbs: 设定哪种请求类型(例如:GETPOST)匹配此规则。 二、访问规则中: expression: 设定一个PHP表达式。它的值用来表明这条规则是否适用。在表达式,你可以使用一个叫$user的变量,它代表的是Yii::app()->user。 expression的具体用法:

    class AdminController extends CController {

    …… public function accessRules() { return array( array(‘allow’, //允许所有人执行’login’,’error’,’index’ ‘actions’=>array(‘login’,’error’,’index’), ‘users’=>array(‘’), ), array(‘allow’, //允许超级管理员执行所有动作 ‘actions’=>array(‘create’,’update’,’delete’), ‘expression’=>array($this,’isSuperAdmin’), ), array(‘allow’,//允许普通管理员执行 ‘actions’=>array(‘update’), ‘expression’=>array($this,’isNormalAdmin’), //表示调用$this(即AdminController)中的isNormalAdmin方法。 ),
    array(‘deny’, // deny all users ‘users’=>array(‘
    ’), ), ); } protected function isSuperAdmin($user)//判断是否是超级管理员 { return ($this->loadModel($user->id)->adminAdminFlag==1); } protected function isNormalAdmin($user)//判断是否是普通管理员 { return ($this->loadModel($user->id)->adminAdminFlag==0); }

    public function loadModel($id)
    {
        $model=Admin::model()->findByPk((int)$id);
        if($model===null){
            throw new CHttpException(404,'页面不存在');     
        }
        return $model;
    } }
    

注:其中$user代表Yii::app()->user即登录用户。

一个很简单的jquery图片自动切换

2012年12月10日

效果页面~ html代码如下:

<div class="ad">
	<a href="" target="_blank"><img src="01.jpg"  /></a>
	<a href="" target="_blank"><img src="02.jpg"  /></a>
	<a href="" target="_blank"><img src="03.jpg"  /></a>
</div>

jquery代码如下:

<script>
	function swapImages(){
		var $active = $('.ad .active');
		var $next = ($('.ad .active').next().length > 0) ? $('.ad .active').next() : $('.ad a:first');
		$active.fadeOut(function(){
		$active.removeClass('active');
		$next.fadeIn().addClass('active');
		});
	}

    $(document).ready(function(){
		$('.ad a:first').addClass('active');
		  // Run our swapImages() function every 3secs
		  setInterval('swapImages()', 3000);
    });
</script>

CSS代码如下:

.ad a{
	display:none;
}
.ad .active{
    display:block;
}

Yii关于登录表单汉化操作

2012年12月06日

Yii自动生成的登录页面已经很完善了,非常好用,但是唯一不足的就是界面是英文版的,对于我们来说非常不友好,用户可能根本看不懂。 改为中文版的方法其实很简单,找到models/LoginForm.php模型文件,找到如下代码:

public function attributeLabels()
{
	return array(
		'rememberMe'=>'Remember me next time',
	);
}

改为如下代码:

public function attributeLabels()
{
	return array(
		'username'=>'用户名',
		'password'=>'密 码',
		'rememberMe'=>'记住并自动登录',
	);
}

OK,现在你去刷新你的登录页面,就会是中文的了,你不必去改动login.php页面的任何代码。

Yii怎样修改自动跳转到登录页面?

2012年12月05日

1、在配置文件main.php下的components里添加下面代码:

'user'=>array(
	// enable cookie-based authentication
	'allowAutoLogin'=>true,
),

2、在SiteController.php添加如下代码:

public function filters()
{
	return array(
		'accessControl', // perform access control for CRUD operations
	);
}
public function accessRules()
{
	return array(
		array('allow',  //未登录用户允许操作的action
				'actions'=>array('login','logout','register'),
				'users'=>array('*'),
		),
		array('allow',   //登录用户允许操作全部action
				'users'=>array('@')
		),
		array('deny',  // allow all users to perform 'index' and 'view' actions
				'users'=>array('*'),
		),
   );
}

更新一下更完善的方法: 2、在SiteController.php添加如下代码:

public function accessRules()
{
	return array(
		array('allow',  // allow all users to perform 'index' and 'view' actions
			'actions'=>array('login','error'),
			'users'=>array('*'),
		),
		array('allow', // allow admin user to perform 'admin' and 'delete' actions
			'actions'=>array('logout'),
			'users'=>array('@'),
		),
		array('deny',  // deny all users
			'users'=>array('*'),
		),
	);
}

3、在配置文件main.php下添加下面代码:

'defaultController'=>'options/welcome',//默认加载的控制器 页面

4、在OptionsController.php修改accessRules,修改后的代码如下:

public function accessRules()
{
	return array(
		array('allow', // allow admin user to perform 'admin' and 'delete' actions
			'actions'=>array('welcome'),
			'users'=>array('admin'),
		),
		array('deny',  // deny all users
			'users'=>array('*'),
		),
	);
}

Yii关于messages,多语言切换

2012年12月05日

1. 设置全局默认的语言 之前提到过在protected/config/main.php 文件内添加如下代码,默认语言为中文(有限的为中文)

'language' => 'zh_cn',

2.控制器根据用户选择动态切换语言

public function init()
{
    if(isset($_GET['lang']) && $_GET['lang'] != "")
    {
        Yii::app()->language = $_GET['lang'];
        Yii::app()->request->cookies['lang'] = new CHttpCookie('lang', $_GET['lang']);
    }
    else if(!empty(Yii::app()->request->cookies['lang']))
    {
        Yii::app()->language = Yii::app()->request->cookies['lang'];
    }
    else
    {
        $lang = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
        Yii::app()->language = strtolower(str_replace('-', '_', $lang[0]));
    }
}

3. 页面提供切换语言选项 在公用的 layouts 头部,加入

<?php echo CHtml::link('中文', Yii::app()->createUrl('/', array('lang' => 'zh_cn')));?>
<?php echo CHtml::link('English', Yii::app()->createUrl('/', array('lang' => 'en_us')));?>

4. 多语言描述文字

//admin是对应的语言文件,路径:protected/messages/zh_cn/admin.php
Yii::t('admin', 'Management Center');

zh_cn/admin.php代码如下:

<?php
return array(
    'Management Center' => '管理中心',
);

Yii框架中使用bootstrap

2012年12月04日

把下载下来的bootstrap解压之后的整个文件夹,拷贝到项目中的protected\extensions文件夹里面,并且命名为bootstrap。 修改config目录下的main.php配置文件,修改完成之后的代码如下:

'preload'=>array('log','bootstrap'),


'gii'=>array(
	'class'=>'system.gii.GiiModule',
	'password'=>'password',
	// If removed, Gii defaults to localhost only. Edit carefully to taste.
	'ipFilters'=>array('127.0.0.1','::1'),
	'generatorPaths'=>array(
		'bootstrap.gii', // since 0.9.1
	),
),


// application components
'components'=>array(
	'user'=>array(
		// enable cookie-based authentication
		'allowAutoLogin'=>true,
	),
	// uncomment the following to enable URLs in path-format
	
	'bootstrap'=>array(
		 'class'=>'ext.bootstrap.components.Bootstrap', // assuming you extracted bootstrap under extensions
	 ),

使用方法参考如下:http://www.cniska.net/yii-bootstrap/

Mac输入法神器-鼠须管?

2012年11月30日

是不是神器我不知道,只有等我用过一阵子之后才能知道。 本篇文章就是讲讲我安装的过程以及一些最基本的配置,还有就是体验一下刚装上的这个神器。 官方的下载地址在这~,但是有时候会很慢,我共享的一个地址,目前最新的版本0.9.11,你可以在这下载~ 下载完之后,尼玛找半天没找到,为此还重启了一回电脑还是没发现,后来是网上搜了一些资料,这才发现位置,你可以参考下图: 我只想说隐藏的好深,不注意看很难找到。 安装好之后简单的配置一下: 一. 配置简繁体输入 鼠须管默认是繁体输入,需要切换到简体输入的话,请用快捷键 control+“~”  打开切换菜单,选“漢字→汉字” 即可。 二、配置显示方式 复制default.yaml和squirrel.yaml,并重命名为default.custom.yaml和squirrel.custom.yaml。 1、default.custom.yaml可以改输入的候选词个数。代码如下:

patch:
  "menu/page_size": 8

2、squirrel.custom.yaml可以改输入法配色方案和字号、横向展示等功能,具体请参考这个网址。代码如下:

patch:
  us_keyboard_layout: true      # 鍵盤選項:應用美式鍵盤佈局
  style/horizontal: true        # 候選窗横向顯示
  style/font_face: "Hiragino Sans GB W3"    # 我喜歡的字體名稱
  style/font_point: 18          # 字號
  style/corner_radius: 5       # 窗口圓角半徑
  style/border_height: 8        # 窗口邊界高度,大於圓角半徑才有效果
  style/border_width: 8         # 窗口邊界寬度,大於圓角半徑才有效果
  style/color_scheme: luna      # 選擇配色方案

iOS开发实例(五)- 自动旋转

2012年11月28日

自动旋转屏幕有3种常用方法: 一、自动调整属性(适用比较简单的界面)。        1、创建一个项目Autosize,系统是默认支持Portrait(纵版)、Landscape Left(向左横向)、Landscape Right(向右横向),不支持Upside Down(倒过来),如下图:** ** ** 2、打开.xib文件,在IB中拖出6个Round Rect Button,按下图摆放和命名: 这个时候Run一下程序,然后在菜单处找到硬件->向左旋转。然后得到如下图结果: 你会发现只有UL位置是对的,其他的都有问题。 3、选中按钮,在属性处找到大小检查器,如下图: 方块里面箭头(→):实线表示可在调整窗口大小时自由更改对象的宽度,虚线表示将对象尽可能的保持原始值。 方块周围的“I”形:表示选定对象的边与包含它的视图的同侧边之间的距离。虚线表示距离是可以灵活可变的,实线表示间距的指应尽可能的保持不变。 4、根据上面的规则修改,如下图: 然后我们在Run一下程序,然后依次点击硬件->向左旋转,如果得到如下图结果,那就证明你成功了。   **二、看到视图旋转提示时,手动调整视图中的对象位置。 1、选中6个按钮,同时把他们的高度和宽度设置成125点,然后效果图如下: 2、这个时候我们Run一下程序,然后旋转就会得到如下面的效果: 好混乱,感觉不会再看了。这样的问题要怎么样去解决呢? 3、手动调整视图位置:按住control键分别把6个按钮拖到.h文件的@end前,依次分别命名为:buttonULbuttonURbuttonLbuttonRbuttonLLbuttonLR。生成的代码如下:

@property (weak, nonatomic) IBOutlet UIButton *buttonUL;
@property (weak, nonatomic) IBOutlet UIButton *buttonUR;
@property (weak, nonatomic) IBOutlet UIButton *buttonL;
@property (weak, nonatomic) IBOutlet UIButton *buttonR;
@property (weak, nonatomic) IBOutlet UIButton *buttonLL;
@property (weak, nonatomic) IBOutlet UIButton *buttonLR;

4、在旋转时移动代码:在.m文件@end前写一个旋转开始之后的方法,最后的旋转动画发生之前自动调用。代码如下:

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration{
    if(UIInterfaceOrientationIsPortrait(interfaceOrientation)){
        buttonUL.frame = CGRectMake(20, 20, 125, 125);
        buttonUR.frame = CGRectMake(175, 20, 125, 125);
        buttonL.frame = CGRectMake(20, 168, 125, 125);
        buttonR.frame = CGRectMake(175, 168, 125, 125);
        buttonLL.frame = CGRectMake(20, 315, 125, 125);
        buttonLR.frame = CGRectMake(175, 315, 125, 125);
    }else{
        buttonUL.frame = CGRectMake(20, 20, 125, 125);
        buttonUR.frame = CGRectMake(20, 155, 125, 125);
        buttonL.frame = CGRectMake(177, 20, 125, 125);
        buttonR.frame = CGRectMake(177, 155, 125, 125);
        buttonLL.frame = CGRectMake(328, 20, 125, 125);
        buttonLR.frame = CGRectMake(328, 155, 125, 125);
    }
}

所有的视图的大小位置都在frame属性中指定,CGRectMake函数支持通过指定的x和y的位置以及widthheight来轻松创建CGRect。然后我们Run一下程序,得到如下效果: 其实这样做的有点复杂的。   三、在IB中为视图设计两个不同的版本,一个适用于纵版,一个适用于横板。 1、需要我们新建一个Swap项目。我们需要在nib文件中添加两个视图。默认的就是第一个视图,然后我们可以按住 option 键复制另一份视图,然后在属性检查器中的 Simulated Metrics 找到Orientation 菜单把 Portrait 改为 Landscape ,如下图所示: 2、创建两个视图:打开辅助编辑器,按住 Control 把视图拖到.h文件中,创建一名为 portrait 的输出口,Storage 为 Strong,如下图: 为横向视图重复以上操作,创建一名为 landscape 的输出口。 3、在IB库中拖出Round Rect Buttons,分别放入每个视图中,然后是大小检查器中将Width和Height属性改为125,然后移动位置,并且将标签改为FooBar。结果如下图所示: 4、创建和关联按钮的输出口:按住control 把横向视图中的Foo按钮拖到.h文件中,将Connection 弹出菜单的值从Outlet 改为Outlet Collection,并且命名为foos。从纵向视图中的Foo 按钮拖至已存在的foos 输出口,与之关联。 对Bar 按钮进行以上重复动作,命名为bars