2014,LOADING…

2014 loading
2013的最后一天,总想留下点什么东西给ta重新开始新的2014,但想想好像也没有什么可以留下的,就像有些人一样ta不可能陪你一起走到你生命的最后,该走的总是会走的…
也许很多人都喜欢一个全新的开始,但自己却舍不得那些过去的人和事,ta们曾经也是自己的生活中的一部分即使ta们在自己的世界里并不完整或许只是片刻的停留而已。毕竟ta们曾经出现过,只不过有的留下的印象比较清晰有的却比较模糊罢了。
想念那些过去的时光,不过也不怕到明天之后只不过又多了一个记忆的片断“2013”。好吧,不怀旧了,也期待下明天的到来一个全新的开始一个崭新的2014.

YII上传文件

处理文件上传是一个相当常见的任务对于一个web应用程序,Yii有一些有用的类内置。让我们创建一个简单的形式允许上传ZIP并存储在 protected/uploads。
我们将从模块开始,创建protected/models/Upload.php如下:

<?php
class Upload extends CFormModel
{
    public $file;
 
    public function rules()
    {
        return array(
            array('file', 'file', 'types'=>'zip'),
        );
    }
}

现在我们将开始说明控制器,创建 protected/controllers/UploadController.php

<?php
class UploadController extends Controller
{
    function actionIndex()
    {
           $dir = Yii::getPathOfAlias('application.uploads') . '/' . date('Y') . '/' . date('m');
        if (!is_dir($dir))
            mkdir($dir, 0777);
        $uploaded = false;
        $model = new Upload();
        if (isset($_POST['Upload'])) {
            $model->attributes = $_POST['Upload'];
            $file = CUploadedFile::getInstance($model, 'file');
            $newName = substr(md5($file->extensionName . round((microtime(true) * 1000))), 0, 17) . '.' . $file->extensionName;
            $file_name = $dir . '/' . $newName;
            if ($model->validate()) {
                $attach = new Attache();
                $uploaded = $file->saveAs($file_name, TRUE);
                $attach->name = 'test';
                $attach->path = $file_name;
                $attach->create_time = time();
                $attach->save();
            }
        }
 
        $this->render('index', array(
            'model' => $model,
            'uploaded' => $uploaded,
            'dir' => $dir,
        ));
    }
}

最后,视图 protected/views/upload/index.php:

<?php if($uploaded):?>
<p>File was uploaded. Check <?php echo $dir?>.</p>
<?php endif ?>
<?php echo CHtml::beginForm('','post',array
        ('enctype'=>'multipart/form-data'))?>
    <?php echo CHtml::error($model, 'file')?>
    <?php echo CHtml::activeFileField($model, 'file')?>
    <?php echo CHtml::submitButton('Upload')?>
<?php echo CHtml::endForm()?>

它是如何工作的…
我们使用的模型非常简单。我们只定义一个字段$file和一个验证规则使用文件验证器写着”只允许zip文件”。

控制器有点复杂。我们逐行回顾它:

$dir = Yii::getPathOfAlias('application.uploads');
$uploaded = false;
$model=new Upload();
if(isset($_POST['Upload']))
{
    $model->attributes=$_POST['Upload'];

$dir是一个目录实现ZIP的上传。我们将它设置为protected/uploads。$uploaded是一个标志决定是否我们需要显示成功信息。我们创建一个model的实例并且如果提交了表单$_POST的数据填补它。

$file=CUploadedFile::getInstance($model,'file');
if($model->validate()){
    $file->saveAs($dir.'/'.$file->getName());
    $uploaded = true;

然后,我们使用CUploadedFile::getInstance能让我们访问CUploadedFile实例。这是一封装类,当文件上传后,围绕php的$_FILE数组进行填充。

如果我们确定文件是一个ZIP文档通过调用模型的验证方法,然后我们用CUploadedFile::saveAs保存文件。

The rest is passing some values to the view:

<?php if($uploaded):?>
<p>File was uploaded. Check <?php echo $dir?>.</p>
<?php endif ?>

如果$uploaded标志设置为真,则显示信息。

为了上传文件,HTML一定要遵守以下两种重要的要求:

应该使用post方法
enctype属性应该设置为’multipart/form-data’。
我们使用CHtlm或是 CActiveForm的htmlOptions生成HTML,CHtml使用如下:

<?php echo CHtml::beginForm('','post',array('enctype'=>'multipart/form-data'))?>

The rest is the standard form: We display an error and a field for model’s file attribute and render a submit button.
如果上传很多个文件,你应该用下面的方法修改代码:

if(isset($_POST['Upload']))
{
    $model->attributes=$_POST['Upload'];
    $files=CUploadedFile::getInstance($model,'file');
    if($model->validate())
    {
        foreach($files as $file)
            $file->saveAs($dir.'/'.$file->getName());

视图文件,你应该用下面的方式输出文件字段:

<?php echo CHtml::activeFileField($model, "[0]file")?>
<?php echo CHtml::activeFileField($model, "[1]file")?>
<?php echo CHtml::activeFileField($model, "[2]file")?>

文件验证
文件验证器中使用一个模型不仅让我们可以限制某些类型文件,但也设置其他限制,例如文件大小或是文件数量。例如,下面的规则只允许上传图片,文件大小小于一兆字节:

array('file', 'file', 'types'=>'jpg, gif, png', 'maxSize' => 1048576),

我们好像在哪见过

咱们结婚吧


我们好像在哪见过
词曲:小柯
演唱:叶蓓,小柯

我们好像在哪儿见过你记得吗
好像那是一个春天我刚发芽
我走过
没有回头
我记得
我快忘了

我们好像在哪儿见过你记得吗
记得那是一个夏天盛开如花
我唱歌
没有对我
但我记得
可我快忘了

我们好像在哪见过你记得吗
好像那是一个秋天夕阳西下
你美得让我不敢和你说话
你经过我时风起浮动我的发

我们好像在哪见过你记得吗
记得那是一个冬天漫天雪花
我走过
没有回头
我记得
我快忘了

我们好像在哪见过你记得吗
那时你还是个孩子我在窗棂下
我猜着你的名字刻在了墙上
我画了你的摸样对着弯月亮

我们好像在哪见过你记得吗
当我们来到今生各自天涯
天涯相望今生面对谁曾想
还能相遇一切就像梦一样

我们好像在哪见过

Linux下的文件查找命令find

查找文件或目录所在路径

格式:find [路径] [表达式] 
表达式: 
-name      :查找名为filename的文件 
-perm      :按执行权限来查找 
-empty     :查找空文件或空目录 
-user      :按文件属主来查找 
-group     :按组来查找 
-nogroup   :查无有效属组的文件,即文件的属组在/etc/groups中不存在 
-nouser    :查无有效属主的文件,即文件的属主在/etc/passwd中不存 
-mtime     :按文件更改时间来查找文件 
-atime     :按文件访问时间来查找文件 
-ctime     :按文件创建时间来查找文件 
-newer     :查更改时间更新的文件或目录 
-type      :查是块设备b、目录d、字符设备c、管道p、符号链接l、普通文件f 
-size n[c] :查找大小为n块(512字节)[或n字节]的文件 
-inum      :根据i节点查找 
-depth     :使查找在进入子目录前先行查找完本目录 
-fstype    :查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到 
-mount     :查文件时不跨越文件系统mount点 
-cpio      :对匹配的文件使用cpio命令,将他们备份到磁带设备中 
-prune     :忽略某个目录 
-maxdepth  :查询的目录深度 
 
-exec   :查找文件并执行后面的命令 find ... -exec CMD {} \; 
-ok     :询问是否要执行后面的命令 find ... -ok CMD {} \;

-perm mode 表示严格匹配
-perm -mode 表示mode中转换成二进制的1必须全部匹配(不管0位)
-perm +mode 表示mode中转换成二进制的1必须部分匹配(不管0位)

-ctime/atime/mtime/cmin/amin/mmin:按时间查找
以天为单位的 :ctime、atime、mtime
以分钟为单位的 :cmin、amin、mmin
c–change 表示文件的属性被修改过
a–access
m–modify 表示文件的内容被修改过
+n 表示n天以前
-n 表示n天以内

[root@Outsider lamp]# find /etc/ -name "host*"                 "查询/etc/目录(包括子目录)中以host开头的文件或目录" 
[root@Outsider lamp]# find -type l                             "查询当前目录下文件类型为链接的文件" 
[root@Outsider lamp]# find -size +10000000c                    "查询当前目录中>10M的文件" 
[root@Outsider lamp]# find -size -1K                           "查询当前目录中<1K的文件" 
[root@Outsider lamp]# find /etc -name inittab -o -size +17M    "查询/etc/目录中文件名为inittab或文件>17M的文件" 
[root@Outsider lamp]# find /etc -name "*.conf" [-a] -size +20k "查询/etc/目录中文件名为*.conf且文件<20k的文件" 
[root@Outsider lamp]# find /etc/* -name "*.conf" -not -name "*http*"  "查询/etc目录中文件名为*.conf但不包含http的文件"     
[root@Outsider lamp]# find /etc/ -empty                        "查询/etc/目录中的空文件或空目录" 
[root@Outsider lamp]# find /var -user oracle                   "查询/var/目录中属于用户oracle的文件或目录" 
[root@Outsider lamp]# find /home -group xfcy   
[root@Outsider lamp]# find -inum 1024                          "查询当前目录中 i 节点为1024的文件或目录" 
[root@Outsider lamp]# find -newer new                          "查询当前目录中比文件new还新的文件或目录" 
[root@Outsider lamp]# find /etc/ -nouser -o -nogroup           "查询/etc/目录中不属于本地用户的文件或目录(危险文件)" 
[root@Outsider lamp]# find /data/ -mmin -10                    "查询/data/目录中十分钟内文件内容被修改过的文件" 
[root@Outsider lamp]# find /proc/ -type f -maxdepth 1          "查询/data/目录中文件类型为普通文件的文件且不查询子目录" 
 
[root@Outsider lamp]# find /data/ -mtime -10 -exec rm {} \;    "查询/data/目录中十分钟内内容被修改过的文件并将其删除" 
[root@Outsider lamp]# find /data/ -mtime -10 -ok rm {} \;      "查询/data/目录中十分钟内内容被修改过的文件并询问是否将其删除(y/n)"

YII 使用表单的三种方式

原生HTML表单

<div class="form">
    <h1>添加新的用户</h1>
    <form method="POST">
        <div class="row">
            <label>用户名</label>
            <input type="text" name="username" value=""/>
        </div>
        <div class="row">
            <label>城市</label>
            <select name="city_id">
                <?php echo User::getCityOptions();?>
            </select>
        </div>
        <div class="row">
            <input type="submit" value="添加">
        </div>
    </form>
</div>

ACTION:

public function actionHtml(){
        //如果有表单提交,则给user对象赋值
        if(!empty($_POST)){
            //实例化user模型
            $model = new User();
            $now = time();
//            dump($_POST);
            $model->username = $_POST['username'];
            $model->city_id = $_POST['city_id'];
            $model->create_time = $now;
            $model->update_time = $now;
            if(!$model->save()){
                dump($model->getErrors());
            }else{
                dump('保存成功');
            }
        }
        //渲染视图html并传入Model参数
        $this->render('html');
    }

在模型中读取城市信息:

public static function getCityOptions(){
            $option = '<option value="">请选择</option>';
            $citys = self::getCitys();
            if(!empty($citys)){
                foreach ($citys as $v=>$name) {
                    $option.= "<option value={$v}>$name</option>";
                }
            }
            return $option;
        }
 
        public static function getCitys(){
            $citys = Yii::app()->db->createCommand()->select('id,name')->from('city')->queryAll();
            if(!empty($citys)){
                $citys = CHtml::listData($citys, 'id', 'name');
            }
            return $citys;
        }

CHtml:

<div class="form">
    <h1>添加新的用户</h1>
    <?php echo CHtml::beginForm('', 'POST');?>
        <div class="row">
            <?php echo CHtml::label('用户名', 'username');?>
            <?php echo CHtml::textField('username', '');?>
        </div>
        <div class="row">
            <?php echo CHtml::label('城市', 'city_id')?>
            <?php echo CHtml::dropDownList('city_id', '', User::getCitys())?>
        </div>
        <div class="row">
            <?php echo CHtml::submitButton('添加')?>
        </div>
    <?php echo CHtml::endForm();?>
</div>

action:

public function actionChtml(){
        if(!empty($_POST)){
            $now = time();
            $model = new User();
            //将post提交的值赋值给attributes属性
            $model->attributes = $_POST;
//            dump($model->attributes);
            $model->create_time = $now;
            $model->update_time = $now;
            if(!$model->save()){
                dump($model->getErrors());
            }else{
                dump('添加成功');
            }
        }
 
        $this->render('chtml');
    }

CActiveForm:

<?php $form=$this->beginWidget('CActiveForm', array(
	'id'=>'user-active_form-form',
	// Please note: When you enable ajax validation, make sure the corresponding
	// controller action is handling ajax validation correctly.
	// See class documentation of CActiveForm for details on this,
	// you need to use the performAjaxValidation()-method described there.
	'enableAjaxValidation'=>true,
//        'enableClientValidation'=>true,
)); ?>
 
	<p class="note">带 <span class="required">*</span> 为必填项.</p>
 
	<?php echo $form->errorSummary($model); ?>
 
	<div class="row">
		<?php echo $form->labelEx($model,'username'); ?>
		<?php echo $form->textField($model,'username'); ?>
		<?php echo $form->error($model,'username'); ?>
	</div>
 
	<div class="row">
		<?php echo $form->labelEx($model,'city_id'); ?>
                <?php echo $form->dropDownList($model,'city_id',User::getCitys(),array('prompt'=>'请选择'));?>
		<?php echo $form->error($model,'city_id'); ?>
	</div>
 
	<div class="row buttons">
		<?php echo CHtml::submitButton($model->isNewRecord?'添 加':'修 改'); ?>
	</div>
 
<?php $this->endWidget(); ?>

action:

public function actionActiveform(){
        $model=new User;
 
        // uncomment the following code to enable ajax-based validation
        /*
        if(isset($_POST['ajax']) && $_POST['ajax']==='user-active_form-form')
        {
            echo CActiveForm::validate($model);
            Yii::app()->end();
        }
        */
 
        if(isset($_POST['User']))
        {
            $model->attributes=$_POST['User'];
            if($model->validate())
            {
                // form inputs are valid, do something here
                return;
            }
        }
        $this->render('active_form',array('model'=>$model));
    }

CForm:
action

 public function actionForm(){
        $model = new User();
        $form = new CForm($model->getFMConfig(), $model);
        $this->peformAjaxValidate($model);
        if($form->submitted() && $form->validate()){
            if($model->save()){
                dump('数据添加成功,新添加的id为'.$model->id);
            }
        }
        $this->render('form',array(
            'form'=>$form,
        ));
    }

model:

 public function getFMConfig(){
        return array(
            'title'=>'用户添加表单',
            'description'=>'用户添加表单2',
            'method'=>'post',
            'attributes'=>array(
                'class'=>'cform'
            ),
            'showErrorSummary'=>true,
            'showErrors'=>true,
            'activeForm'=>array(
                'class'=>'CActiveForm',
                'id'=>'user-active_form-form',
            ),
            'elements'=>array(
                'username'=>array(
                    'type'=>'text',
                    'hint'=>'请输入用户名',
                    'enableAjaxValidation'=>true,
                    'enableClientValidation'=>true,
 
                ),
                'city_id'=>array(
                    'type'=>'dropdownlist',
                    'prompt'=>'请选择',
                    'items'=>User::getCitys(),
                )
            ),
            'buttons'=>array(
                'submit'=>array(
                    'type'=>'submit',
                    'label'=>'提交',
                )
            )
        );
    }

views:

<div class="form">
    <?php echo $form->render();?>
</div>

2014年放假安排

2014假期
一、元旦:1月1日放假1天。

二、春节:1月31日至2月6日放假调休,共7天。1月26日(星期日)、2月8日(星期六)上班。

三、清明节:4月5日放假,4月7日(星期一)补休。

四、劳动节:5月1日至3日放假调休,共3天。5月4日(星期日)上班。

五、端午节:6月2日放假,与周末连休。

六、中秋节:9月8日放假,与周末连休。

七、国庆节:10月1日至7日放假调休,共7天。9月28日(星期日)、10月11日(星期六)上班。

ibvmlHouxzjoVS
信任就像一张纸,皱了,即使抚平,也恢复不了原样了!不要去欺骗别人,因为你能骗到的人,都是相信你的人。

php 读取目录中的图片

<?php
 
function file_list($path) {
    $allowed_types = array('jpg', 'jpeg', 'gif', 'png');
    if ($handle = opendir($path)) {//打开路径成功
        while (false !== ($file = readdir($handle))) {//循环读取目录中的文件名并赋值给$file
            if ($file != "." && $file != "..") {//排除当前路径和前一路径
                if (is_dir($path . "/" . $file)) {
//                    echo $path.": ".$file."<br>";//去掉此行显示的是所有的非目录文件
                    file_list($path . "/" . $file);
                } else {
                    $file_parts = explode('.', $file);
                    $ext = strtolower(array_pop($file_parts));
                    $title = implode('.', $file_parts);
                    $title = htmlspecialchars($title);
                    if (in_array($ext, $allowed_types) && $title == "screenshot") {
                        echo $path . ": " . $file . "<br>";
                        echo "<img src='{$path}/{$file}'  border='0' />";
                    }
                }
            }
        }
    }
}
 
file_list('themes');