别怕我伤心 – 张信哲

张信哲


别怕我伤心
演唱:张信哲

好久没有你的信
好久没有人陪我谈心
怀念你柔情似水的眼睛
是我天空最美丽的星星
异乡的午夜特别冷清
一个男人和一颗热切的心
不知在远方的你是否能感应

我从来不敢给你任何诺言
是因为我知道我们太年轻
你追求的是一种浪漫感觉
还是那不必负责任的热情
心中的话到现在才对你表明
不知道你是否会因此而清醒
让身在远方的我不必为你担心

一颗爱你的心
时时刻刻为你转不停
我的爱也曾经 深深温暖你的心灵
你和他之间是否已经有了真感情
别隐瞒 对我说 别怕我伤心

好久没有你的信
好久没有人陪我谈心
怀念你柔情似水的眼睛
是我天空最美丽的星星
异乡的午夜特别冷清
一个男人和一颗热切的心
不知在远方的你是否能感应

我从来不敢给你任何诺言
是因为我知道我们太年轻
你追求的是一种浪漫感觉
还是那不必负责任的热情
心中的话到现在才对你表明
不知道你是否会因此而清醒
让身在远方的我不必为你担心

一颗爱你的心
时时刻刻为你转不停
我的爱也曾经 深深温暖你的心灵
你和他之间是否已经有了真感情
别隐瞒 对我说 别怕我伤心

一颗爱你的心
时时刻刻为你转不停
我的爱也曾经 深深温暖你的心灵
你和他之间是否已经有了真感情
别隐瞒 对我说 别怕我伤心

Yii CDbCriteria的用法

$criteria = new CDbCriteria;      
$criteria->addCondition("id=1"); //查询条件,即where id = 1  
$criteria->addInCondition('id', array(1,2,3,4,5)); //代表where id IN (1,23,,4,5,);  
$criteria->addNotInCondition('id', array(1,2,3,4,5));//与上面正好相法,是NOT IN  
$criteria->addCondition('id=1','OR');//这是OR条件,多个条件的时候,该条件是OR而非AND  
$criteria->addSearchCondition('name', '分类');//搜索条件,其实代表了。。where name like '%分类%'  
$criteria->addBetweenCondition('id', 1, 4);//between 1 and 4   
 
$criteria->compare('id', 1);    //这个方法比较特殊,他会根据你的参数自动处理成addCondition或者addInCondition,  
                                //即如果第二个参数是数组就会调用addInCondition  
/** 
 * 传递变量 
 */  
$criteria->addCondition("id = :id");  
$criteria->params[':id']=1;  
/** 
 * 一些public vars 
 */  
$criteria->select = 'id,parentid,name'; //代表了要查询的字段,默认select='*';  
$criteria->join = 'xxx'; //连接表  
$criteria->with = 'xxx'; //调用relations   
$criteria->limit = 10;    //取1条数据,如果小于0,则不作处理  
$criteria->offset = 1;   //两条合并起来,则表示 limit 10 offset 1,或者代表了。limit 1,10  
$criteria->order = 'xxx DESC,XXX ASC' ;//排序条件  
$criteria->group = 'group 条件';  
$criteria->having = 'having 条件 ';  
$criteria->distinct = FALSE; //是否唯一查询

How to include Javascript, CSS

There are many methods that we can include javascript, css into your Yii App. Today I will demonstrate three simple and helpul methods.

A simple way to add js, css by editing config/main.php

// application components
  'components'=>array(
         // ...
        'clientScript'=>array(
            'packages'=>array(
                'jquery'=>array(
                    'baseUrl'=>'//ajax.googleapis.com/ajax/libs/jquery/1/',
                    'js'=>array('jquery.min.js'),
                )
            ),
        ),
        // ...
  ),

Using getClientScript
Usually, We add in block of code into Controller or layout of your theme

You can also add scripts from controller action. Just add this line in an action method then that script will apear only in that view:

$baseUrl = Yii::app()->baseUrl; 
$cs = Yii::app()->getClientScript();
$cs->registerScriptFile($baseUrl.'/js/yourscript.js');
$cs->registerCssFile($baseUrl.'/css/yourcss.css');

Or shorter:

Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl.'/path/to/your/javascript/file',CClientScript::POS_END);
Yii::app()->clientScript->registerCssFile(Yii::app()->baseUrl.'/path/to/css/file');

Please notice the second parameter when you register the js file, it’s the position of your script, when you set it CClientScript::POS_END, you let the HTML renders before the javascript is loaded.

include core js files of framework
such as: jquery.js, jquery.ui.js

Yii::app()->clientScript->registerCoreScript('jquery');     
Yii::app()->clientScript->registerCoreScript('jquery.ui');
<pre>
 
Include Js, css all action 
In protected/components/Controller.php, this class extends CController, we override action named "beforeAction" we declare what js, css that we want o add to site.
 
Examples:
 
<pre lang='php'>
public function beforeAction($action) {
    if( parent::beforeAction($action) ) {
        /* @var $cs CClientScript */
        $cs = Yii::app()->clientScript;
        /* @var $theme CTheme */
        $theme = Yii::app()->theme;
        $cs->registerPackage('jquery');
        $cs->registerPackage('history');
        $cs->registerScriptFile( $theme->getBaseUrl() . '/js/highlight.js' );
        $cs->registerScriptFile( $theme->getBaseUrl() . '/js/jquery.ba-dotimeout.min.js' );
        $cs->registerScriptFile( $theme->getBaseUrl() . '/js/jquery.scrollTo-1.4.3.1-min.js' );
        //$cs->registerScriptFile( $theme->getBaseUrl() . '/js/jquery.scrollTo-min.js' );
        $cs->registerScriptFile( $theme->getBaseUrl() . '/js/script.js' );
        $cs->registerCssFile($theme->getBaseUrl() . '/css/reset.css');
        $cs->registerCssFile($theme->getBaseUrl() . '/css/main.css');
        return true;
    }
    return false;
}

Yii 泛域名解析用户登录信息同步问题

Yii 泛域名解析后用户登录信息同步设置
在配置文件main.php文件中加入以下代码:

  // application components
    'components' => array(
      'user' => array(
            'class' => 'WebUser',
            'allowAutoLogin' => true,
            'identityCookie' => array('domain' => '.yii.com'),
        ),
        'session' => array(
            'autoStart' => true,
            'cookieParams' => array('domain' => '.yii.com'),
        ),
),

flex+fms ShareObject简单在线聊天

flex fms ShareObject实现的在线聊天
flex代码:

<?xml version="1.0" encoding="utf-8"?>   
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="white" layout="vertical" initialize="BasicPracticeSO();">   
	<mx:Script>   
		<![CDATA[   
			private var nc:NetConnection;   
			private var shareObject:SharedObject;   
			private var monthDay:Date;   
			private var isConnectSuccess:Boolean;   
			private static const RTMP_URL:String="rtmp://localhost/chat";   
 
 
			private function BasicPracticeSO():void{   
				nc=new NetConnection;   
				nc.connect(RTMP_URL);   
				nc.addEventListener(NetStatusEvent.NET_STATUS,operateShareObject);   
			}   
 
			private function operateShareObject(evt:NetStatusEvent):void{   
				isConnectSuccess=(evt.info.code=="NetConnection.Connect.Success");   
				if(isConnectSuccess){   
					shareObject=SharedObject.getRemote("userInfo",nc.uri,false);   
					monthDay=new Date();   
					shareObject.connect(nc);   
					shareObject.addEventListener(SyncEvent.SYNC,detectSO);   
				}   
			}   
 
			private function detectSO(e:SyncEvent):void{   
				for(var chng:uint;chng<e.changeList.length;chng++){   
					switch(e.changeList[chng].code){   
						case "change":   
							updateAllClientMsg();   
							break;   
						case "clear":   
							break;   
						case "success":   
							break;   
						default:   
							break;   
					}   
				}   
			}   
 
			private function updateAllClientMsg():void{   
				soList.text+=shareObject.data.msg+"\n";   
			}   
 
 
			private function addDataToShareObject():void{   
				shareObject.setProperty("msg",msgText.text);   
				soList.text+=msgText.text+"\n";   
				msgText.text="";   
			}   
		]]>   
	</mx:Script>   
	<mx:Label text="ShareObject data:"/>   
	<mx:TextArea id="soList" width="300" height="120">   
 
	</mx:TextArea>   
	<mx:Form>   
		<mx:FormHeading label="add data to ShareObject:"/>   
		<mx:FormItem label="msg:">   
			<mx:TextInput id="msgText"/>   
		</mx:FormItem>   
		<mx:FormItem>   
			<mx:Button label="send Msg" click="addDataToShareObject();"/>   
		</mx:FormItem>   
	</mx:Form>   
</mx:Application>

FMS 代码:

Client.prototype.echo = function(msg){
	trace("client.echo: " + msg);
	return msg;
}

知足 – 五月天

81

知足
作词:阿信 作曲:阿信
演唱:五月天

怎么去拥有 一道彩虹
怎么去拥抱 一夏天的风
天上的星星笑地上的人
总是不能懂不能觉得足够

如果我爱上 你的笑容
要怎么收藏 要怎么拥有
如果你快乐 不是为我
会不会放手其实才是拥有
当一阵风吹来风筝飞上天空
为了你而祈祷 而祝福而感动
终于你身影消失在 人海尽头
才发现 笑着哭 最痛

那天你和我 那个山丘
那样的唱着 那一年的歌
那样的回忆 那么足够
足够我天天都品尝着寂寞

当一阵风吹来风筝飞上天空
为了你而祈祷 而祝福而感动
终于你身影消失在 人海尽头
才发现 笑着哭 最痛
当一阵风吹来风筝飞上天空
为了你而祈祷 而祝福而感动
终于你身影消失在 人海尽头
才发现 笑着哭 最痛
如果我爱上 你的笑容
要怎么收藏 要怎么拥有
如果你快乐再不是为我
会不会放手其实才是拥有
知足的快乐叫我忍受心痛
知足的快乐叫我忍受心痛

flex+fms实现的简单直播

直播端相关record.mxml代码:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
			   creationComplete="initApp()">
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			import flash.media.Camera;
			import flash.media.Video;
			import flash.net.NetConnection;
			import flash.net.NetStream;
 
			import mx.controls.Alert;
 
			private var vi:Video;//播放器
 
			private var cam:Camera;//摄像头
 
			private var inStream:NetStream; //网络流
 
			private var outStream:NetStream; //网络输出流
 
			private var nc:NetConnection; //网络连接
 
			private var myCamera:Camera;
 
			private var connectionURL:String="rtmp://localhost/chat/01"; //FMS媒体服务器地址
			/*连接媒体服务器*/
			private function initApp():void
			{
				//显示自己的视频
				myCamera = Camera.getCamera();
				if(myCamera != null)
				{
					this.myVideo.attachCamera(myCamera);
				}
				else
				{
					Alert.okLabel="确 定";
					Alert.show("没检测到视频摄像头!","系统提示");
				}
			}
 
			/*连接媒体服务器*/
			protected function connectFMS():void
			{
 
				nc=new NetConnection(); //创建连接对象
 
				nc.client=this; //将客户端设置为本地
 
				nc.connect(connectionURL); //第一个参数是连接地址,后面是账号密码(可省略)
 
				nc.addEventListener(NetStatusEvent.NET_STATUS, ncHandler);//流状态侦听器
 
				recordStatus.text='直接中...';
 
			}
 
			//判断FMS服务器连接
			protected function ncHandler(evt:NetStatusEvent):void
			{
				if (evt.info.code == "NetConnection.Connect.Success")
				{
					//开始录制
					beginRec();
				}
				else
				{
					Alert.show("连接失败", "提示");
				}
			}
 
			//开始录制
			protected function beginRec():void
			{
				cam=Camera.getCamera();
				cam.setMode(320, 240, 30);//大小与帧率
				cam.setQuality(0, 100); //设置清晰度  
				outStream=new NetStream(nc);
				outStream.client=this;//将客户端设置为this,如有特殊需求可以写一个自定义的client,比如传播文本信息
				outStream.attachCamera(cam);//激活视频
				outStream.publish("1111", "live");//第二个参数live代表实况流,当连接中断后,在FMS流媒体服务器中不会残留视频文件
			}
 
			//停止录制
			protected function endRec():void
			{
				outStream.close();
				recordStatus.text='无直播';
			}
		]]>
	</fx:Script>
 
	<s:Button x="240" y="127" label="开始直播"  click="connectFMS()" />
	<s:Button x="484" y="127" label="关闭直播" click="endRec()"/>
	<mx:VideoDisplay id="myVideo" x="178" y="156" width="426" height="347"/>
	<s:Label id="recordStatus" x="174" y="63" width="290" height="30" chromeColor="#440EF3"
			 fontSize="19" fontWeight="bold" text="无直播"/>
</s:Application>

接收端player.mxml代码:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
			   creationComplete="initApp()">
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
		import flash.media.Video;
		import flash.net.NetConnection;
		import flash.net.NetStream;
 
		import mx.controls.Alert;
 
		private var conn:NetConnection; //网络连接
		private var inStream:NetStream; //网路接受流
		private var outStream:NetStream; //网路输出流
		private var connectName:String="1111"; //网络连接名称只有相同的链接名称才能对应相同的发布方视频流
		private var serverURL:String="rtmp://localhost/chat/01"; //FMS服务器地址
		private var vi:Video;
 
		private function initApp():void
		{
			conn=new NetConnection();
			conn.client=this;
			conn.connect(serverURL);
			conn.addEventListener(NetStatusEvent.NET_STATUS, connHandler); //添加网络监听事件
		}
 
		//链接FMS服务器
		private function connectServer():void
		{
			conn=new NetConnection();
			conn.client=this;
			conn.connect(serverURL);
			conn.addEventListener(NetStatusEvent.NET_STATUS, connHandler); //添加网络监听事件
		}
		private function connHandler(evt:NetStatusEvent):void
		{
		if (evt.info.code == "NetConnection.Connect.Success")
		{
		    getVideo();
		}
		else
		{
		    Alert.show("网络连接失败!", "提示");
		}
		}
		//开始接受视频
		private function getVideo():void
		{
			inStream=new NetStream(conn);
			inStream.addEventListener(NetStatusEvent.NET_STATUS, inStreamHandler);
			inStream.client=this;
			inStream.play(connectName); //1111为流的名字,对应于视频流发布端的publish("1111","live").
			vi=new Video();
			vi.width=viewDisplay.width;
			vi.height=viewDisplay.height;
			vi.smoothing=true;
			vi.attachNetStream(inStream);
			viewDisplay.addChild(vi);
		}
 
		private function stopVideo():void{
			inStream.close();
			conn.close();
			viewDisplay.removeChild(vi);
		}
		private function inStreamHandler(evt:NetStatusEvent):void
		{
 
		}
		]]>
	</fx:Script>
	<mx:VideoDisplay id="viewDisplay" x="178" y="173" width="429" height="333"/>
</s:Application>

YII 实例中的phonebook 出现http request error的原因

YII 实例中的phonebook修改数据库为mysql后 出现http request error的原因

导入的contact表结构中把ID 设置为自增就解决问题了….
修改过的表结构:

CREATE TABLE IF NOT EXISTS `contact` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(128) NOT NULL,
  `phone` varchar(64) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

flex 链接 fms 相关代码

Flex与FMS建立连接的相关代码:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
		import mx.controls.Alert;
		//Flex与FMS建立连接的对象
		private var nc:NetConnection;
		//FMS服务器的地址,使用rtmp协议
		private var rtmpUrl:String="rtmp://localhost/chat";
		//当Flex应用程序启动的时候就建立与FMS服务器的连接
		internal function connect():void
		{
		nc = new NetConnection();
		nc.connect(rtmpUrl);
		nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);
		nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR,onAsyncErrorHandler);
		}
 
		private function onNetStatusHandler(evt:NetStatusEvent):void
		{
		switch (evt.info.code)
		{
		case "NetConnection.Connect.Success":
		Alert.show("成功连接FMS服务器!");
		break;
		case "NetConnection.Connect.Rejected":
		Alert.show("访问FMS服务器权限不足,连接被拒绝!");
		break;
		case "NetConnection.Connect.InvalidApp":
		Alert.show("指定的应用程序名称没有找到");
		break;
		case "NetConnection.Connect.Failed":
		Alert.show("连接失败!");
		break;
		case "NetConnection.Connect.AppShutDown":
		Alert.show("服务器端应用程序已经关闭(由于资源耗用过大等原因)或者服务器已经关闭!");
		break;
		case "NetConnection.Connect.Closed":
		Alert.show("与FMS的连接中断!");
		break;
		}
		}
 
		private function onAsyncErrorHandler(evt:AsyncErrorEvent):void
		{
 
		}
		]]>
	</fx:Script>
	<s:Button x="362" y="232" label="按钮" click="connect()" />
</s:Application>

曾经牵手、却未走到最后…

e4bfd450jw1ee874g6tz5j20c808faai
曾经牵手、却未走到最后。想来这是多么让人心疼的一件事。原来生命中许多人,会突如其来的出现,教会你某个人生的真谛,从此又消失不见。爱情之所以短暂,是为了教会我们"珍惜"。—— 苏芩

js 调用打印机

 
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
        <meta name="apple-mobile-web-app-capable" content="yes" /> 
        <script src="http://cdn.outsiderla.me/js/jquery-1.6.4.min.js"></script>
 
        <style media=print type="text/css">
            .noprint{visibility:hidden}
        </style> 
    </head>
    <body>
        要打印的内容
        <p class="noprint">将不打印的代码放在这里。</p>
        <a href="#" class="print">打印</a>
 
        <hr/>
        <span id='div1'>把要打印的内容放这里</span>
        <p>所有内容</p>
        <div id="div2">div2的内容</div>
        <a href="#" id="print">打印</a>
        <script>
            $(function(){
                $('.print').click(function(){
                    window.print()
                })
                $('#print').click(function(){
                    document.body.innerHTML=document.getElementById('div1').innerHTML+'<br/>'+document.getElementById('div2').innerHTML;
                    window.print();
                })
 
            })
 
        </script>
    </body>
</html>