forecho 的独立博客

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

使用表单验证插件 Validform

2012年10月16日

官方网址 先下载完整的示例文档。 调用如下两个文件(注意文件路径):

1
2
<script type="text/javascript" src="resources/scripts/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="resources/scripts/Validform_v5.1_min.js"></script>

然后添加javascript代码(此处我使用的是示例2):

1
2
3
4
5
6
7
8
9
<script type="text/javascript">
$(function(){
    //$(".registerform").Validform();  //就这一行代码!;

    $(".registerform").Validform({
        tiptype:2
    });
})
</script>

然后是表单的视图页面主要代码:

1
2
3
4
5
6
<p>
    <label>导航名称</label>
    <input class="text-input small-input" type="text" id="small-input" name="name" datatype="s2-10" errormsg="昵称至少2个字符,最多10个字符!" />
    <span class="Validform_checktip"></span>
    <br />
</p>

form表单的class是”registerform”。即:

1
class="registerform"

PS: 此处我表单的input与提示文字Validform_checktip 属于同一级标签,而官方给我们的是都有一个父级的td标签,所以我需要改官方的Validform_v5.1_min.js文件,找到下图代码 修改如下:

1
2
3
4
if(type==2 && o.obj){
o.obj.next(".Validform_checktip").html(msg);
    Validform.util.cssctl(o.obj.next(".Validform_checktip"),o.type);
}

即:删掉两处的parent和find。 更多的说明文档,请参考这里。   样式的话,只需调用如下三个即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* 表单 */
.Validform_wrong {
    color: red;
    padding-left: 20px;
    white-space: nowrap;
    background: url(../images/error.png) no-repeat left center;
}
.Validform_right {
    color: #71B83D;
    padding-left: 20px;
    background: url(../images/right.png) no-repeat left center;
}
.Validform_checktip {
    margin-left: 8px;
    line-height: 20px;
    height: 20px;
    overflow: hidden;
    color: #999;
    font-size: 12px;
}

PHP最简单的方法调用kindeditor编辑器

2012年10月16日

先在这里直接下载编辑器代码。 插入javascript代码如下,

<script charset="utf-8" src="kindeditor/kindeditor.js"></script>
<script charset="utf-8" src="kindeditor/lang/zh_CN.js"></script>
<script>
        var editor;
        KindEditor.ready(function(K) {
                //editor = K.create('textarea[name="content"]');
                editor = K.create('#editor_id', {
                    allowFileManager : true  //开启浏览服务器文件功能,比方上传图片的图片空间
                });
        });
</script>

form表单代码如下:

<textarea id="editor_id" name="content" style="width:90%;height:450px;"></textarea>

Kindeditor内容区默认字体和字体的大小如何设置呢? 打开themes/default/default.css文件找到:.ke-dialog-loading-contentfont-size: 14px;改成font-size: 12px;保存即可。

第一站,成都

2012年10月15日

话说这次国庆放8天假,不好好出去玩,都对不起自己放的这8天假。

本着只想出去走走的心态,我就无所谓是什么目的地了,反正只要没去过就成,班长提议去成都,听说那里妹纸很多,我自然是不反对。这次旅行,是我的第一次,所以我的主要目标是找到那个旅行的感觉。

车票是在网上买的,怕人多,我们就选择了2号出发,运气还不错,买到了坐票,买票中间有点心惊胆战那也是难免的。我们分两拨过去的,我们三个是2号下午的火车从武昌出发,从宿舍出发一到车站直接上火车,时间真是算的准。火车上我们边车边聊了会儿,然后打了下扑克,看了下杂志,然后睡了下觉,然后3号早上8点多就到了。成都东的火车站还不错的说。出站的时候发现下了点下雨,但是对我们影响不大。由于班长是下午才到,所以我们三个的任务是先找到住宿的地方再说,在车站我们上了101奔到了西南交大,然后下车找宾馆,然后就想迫不及待的出去玩了,服务员妹纸说的那句话给我印象还蛮深的,“成都就是一个耍都,在这里你只要尽情的耍就好了”。后来证明我们选的宾馆地理位置还挺靠谱的,里风景区都不远。

宾馆找到了,我们放心东西就先去了尽情的去玩了。这时候的太阳,无疑让我们心情更开心了。我们首先去的是宽窄巷子,怎么说呢?是一个风景区,吃的蛮多的,建筑风格也不错,有宽巷子也有窄巷子。还有真人铜像,我们还和他们合了几张影,还看了几张摄影展,拍的都很不错,还看到了成都一绝“掏耳朵”,他们的装备那是杠杠的。

然后下午吃了碗面,准备去武侯祠的干活。刚到站就发现人很多,然后转身一看,旁边的锦里人更多,我在武汉都没看到这样人贴人进去的,后来我们一想还是算了吧,就没进去了。然后就在周边随便逛了下我买了几个特产,都是很辣了那种准备带回去。然后就直奔回宾馆了,火车上还是没睡好,有点累的,回去洗了个澡,休息一下,迎接班长的到来。

天刚黑的时候班长来了,然后我们就要去吃火锅的干活,导航了一下周围的火锅店,然后看中了一家火锅店,打渔郎。花鲢鱼火锅,第一次吃,那鱼不是一般的嫩,并且鲢鱼鱼刺又很少,所以那个我们吃的很爽,我们还喝了点酒。后来我甚至还想过要不要在回武汉之前再去那吃一回再走。成都小吃还蛮多的,各种小吃,什么冒菜啊,串串香啊,到最后我都没吃过。

4号我们准备说是要早点起床,要在成都过早的,后来还是9点多才出门的,也还不算晚,周围不远就有老麻抄手。来成都晚当然就要吃特产了。吃完了还是觉得真是对得起这个名字,吃完了给人就一个感觉,就是麻,辣那都只能是第二感觉。然后我们商讨了下去哪玩,后来就去了杜甫草堂,在门口犹豫了一下,60块钱门票值不值。人也还算多,进去的话也只能看一下草堂,用班长的话说就是有地俗气了。但是又不知道去哪玩,最后还是进去了。然后我们就看到了各种草堂,然后各种和杜甫有关的东西,整个风景区还是有点点大的,但整个下来感觉挺没意思的,这是实话,太商业化了。逛完之后大家都饿了,我团购了一个火锅,刘一手火锅店。团购还是很划算的,4个人都吃的很饱,还不错。

然后下午就跟老钱一起去见成都的知友,然后我们一起做饭,我做了一个,但是有点失误没做好,而且买的材料有点多了,最后都没吃完…成都的女群主艺晴妹纸看得出来很会做饭。没看出来她的笑点比我还低,哈哈…小鱼妹纸还做了一个水煮鱼,步骤好复杂的说,佩服。韩冰同学竟然是唐山人。朱德文是从武汉读完大学,然后跑到成都去读研的。最后我们几个男生喝了一小瓶二锅头,大家一边吃饭,一边说笑,感觉甚好。

5号了,我们起床的第一件事就是在周围逛了一大圈找特产吃过早,结果找了大半圈,实在是没找到什么好吃的,后来就吃了一碗肥肠粉,还是不喜欢吃粉,有点坑了。吃饱了之后我们决定去成都周边玩一下,直奔火车站,准备去青城山或者都江堰的,后来发现没有票了,连明天的票都没有了,又不想包车去,怕晚上回不来,也怕那边人多。最后还是听从班长意见去了一下古镇,洛带。给人的感觉就是一条商业街,不是买商品就是卖吃的,只不过建筑风格是古代的而已。既然来了还是走了一圈,然后出来之后,爬了一个小山,然后时间差不多晚上了,打道回府,回去吃火锅,这次我们直奔早已看好的李雪牛杂火锅店,然后吃完了各种牛杂,牛肉,然后就回去洗澡看电视睡觉了。

6号这天要退房了,我们起床的比较晚,我提议去吃老麻抄手,大家都同意了。吃完回来收拾一下东西准备退房了,带着行李自然是有点不方便玩。我脑子里只想到了去青羊宫,但是到了门口又不是很想进去了,然后我们逛到了四川博物馆,本着打发时间的心态我们进去了,我们是晚上22点的火车,买的有点晚了。博物馆可以放行李,我们到处逛了下,直到闭馆我们才肯出来。然后我们就只能又进去前进了,走到地铁站出发去火车站,到了车站还发现成都的妹纸真多,火车站的工作人员大多数都是妹纸。火车上的人比我想想中的要少,我们聊天、睡觉、看杂志、吃东西、听歌、看窗外的风景。时间比我想想中的要好过。回来我们还有时间做了顿饭。

整个旅行还是很成功的,下次如下想去名胜景地节假日就别去了,人特别多,即使去了也没意思。所以我们这次的旅行只要是吃,玩倒是其次。然后就是找经验找感觉,毕竟旅行一般都是去没有去过的地方。

现在我要做的事就是赚钱,只有努力赚钱才有可能去做很多事情。下一站,会是哪里?期待…

如果想看照片,请猛击~

Yii 调用KindEditor在线编辑器

2012年09月28日

  1. 先下载这个文件,然后解压,把editor 这个文件夹放在你项目的根目录里。
  2. 然后找_form.php这个文件,找到你的”content”(这里我的是名称是“news_content”),修改成如下代码:(被注释掉的是原来的代码,上面一行是新加上的。)
1
2
3
4
5
6
<div class="row">
    <?php echo $form->labelEx($model,'news_content'); ?>
    <?php echo $form->textArea($model,'news_content',array('style'=>'width:90%; height:500px')); ?>
    <?php // echo $form->textField($model,'news_content',array('size'=>60,'maxlength'=>8000)); ?>
    <?php echo $form->error($model,'news_content'); ?>
</div>

然后在_form.php这个文件开头,添加如下代码,调用编辑器样式。

1
2
3
<?php
    Yii::app()->clientScript->registerCssFile('./editor/themes/default/default.css');
?>

最后在_form.php这个文件结尾处,添加如下代码,调用编辑器的js文件以及调用js

1
2
3
4
5
6
7
8
9
10
11
12
<script charset="utf-8" src="./editor/kindeditor.js"></script>
<script type="text/javascript">
    KindEditor.ready(function(K) {
        editor = K.create('#News_news_content', {
            allowFileManager: true,
            resizeType: 1,
            newlineTag: 'p',
            //syncType: '',
            // uploadJson: '<?php echo $this->createUrl('news/upload') ?>'
        });
    });
</script>

yii学习笔记(五)-修改新建Create页面

2012年07月12日

我们可以用gii生成views里面的页面,很方便的,但是,并不是所有的东西都是我们所需要的,所以我们要学会修改代码,为我们所用。 改为下拉选项框 添加某个字段的时候,把手动输入的input表单改成下拉选项框。 首页,我们要在字段对应的表的m下写入一个方法。比方说我现在一个type_id字段对应的是news_type表。 那么我们在m文件夹中找到NewsType.php文件,在末尾加上这段代码:

// 获取type
public function getNewsTypeList()
{
    $newsTypeList = NewsType::model()->findAll();
    return CHtml::listData($newsTypeList,'id','news_type_name');

    //下面是用来验证的代码
    // $returnData = CHtml::listData($newsTypeList,'id','news_type_name');
    // print_r($returnData);
    // exit;
}

然后我们找到Create所在的页面,这里是Admin/views/news/_form.php文件。 找到这段代码:

<?php echo $form->textField($model,'type_id',array('size'=>10,'maxlength'=>10)); ?>

修改为:

<?php echo $form->dropDownList($model,'type_id',NewsType::model()->getNewsTypeList()); ?>

刷新一下就会得到我们想要的下拉选项效果。 系统默认添加的信息 那么有些情况下,我们会遇到一个字段是由系统自动帮我们添加的,比方说,添加新闻的人,时间。 我们先把_form.php文件里字段相应的代码删掉。 然后去找这个表的m文件,这里是News.php文件 在末尾加上这段代码:

//自动添加新闻时间、状态
protected function beforeSave()
{
    if (parent::beforeSave()) {
        if ($this->isNewRecord) {

        //如果是新的新闻

            $this->create_time = date('Y-m-d H:i:s');
            $this->create_user_id = Yii::app()->user->id;
        }else {
            $this->update_time = date('Y-m-d H:i:s');
            $this->update_user_id = Yii::app()->user->id;
        }
            return true;
        }else {
            return false;
    }

}

读取数据的时候转换 其实这个时候数据记录type_id字段的任然是数字,那么读取的时候我们还需要转换一下。 在读取页面的m对应的文件中修改代码,这里对应的是News.php文件 我们找到下面这段代码:

public function relations()
{
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array();
}

添加修改为:

public function relations()
{
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    //表链接
    return array(
        'typeName'=>array(self::BELONGS_TO,'NewsType','type_id'),
        'statusName'=>array(self::BELONGS_TO,'StatusType','status_id'),
    );
}

然后去找到要显示的页面,这里是Admin/views/news/_view.php 找到这段代码:

<?php echo CHtml::encode($data->type_id); ?>

修改为:

<?php echo CHtml::encode($data->typeName->news_type_name); ?>

statusName也是这样修改。

Comments

桂林老医: :shock: 看不懂

Yii学习笔记(四)-用户登录

2012年07月10日

先在 \protected\components\文件夹里面找到UserIdentity.php

然后用gii的Model Generator生成User的Model

然后在UserIdentity.php找到这段代码:

public function authenticate()
{
    $users=array(
        // username => password
        'demo'=>'demo',
        'admin'=>'admin',
    );
    if(!isset($users[$this->username]))
        $this->errorCode=self::ERROR_USERNAME_INVALID;
    else if($users[$this->username]!==$this->password)
        $this->errorCode=self::ERROR_PASSWORD_INVALID;
    else
        $this->errorCode=self::ERROR_NONE;
    return !$this->errorCode;
}

替换为:

private $_id;

public function authenticate()
{
    //用户名转换为小写
    $username=strtolower($this->username);

    //$username作为条件进入数据库查询匹配
    $user=User::model()->find('LOWER(username)=?',array($username));

    //用户名不存在,报错
    if ($user===null) {
        $this-> errorCode=self::ERROR_USERNAME_INVALID;
    }else{

        //调用一个函数,匹配相应的密码
        if (!$user->validatePassword($this->password)) {
            $this->errorCode=self::ERROR_PASSWORD_INVALID;
        }else {

            //匹配成功,赋值
            $this->_id = $user->id;
            $this->username = $user->username;
            $this->errorCode=self::ERROR_NONE;
        }
    }
    return $this->errorCode === self::ERROR_NONE;
}

public function getId() {
    return $this->_id;
}

在Models里面的User.php添加两个新的方法。添加如下代码:

// 查询密码是否匹配
public function validatePassword($password)
{
    return $this->encrypt($password)===$this->password;
}

public function encrypt($pass)
{
    return md5($pass);
}

// 添加的密码进行MD5加密
protected function beforeSave() {
    if (parent::beforeSave()) {
        //判断是否是新的密码
        if ($this->isNewRecord) {
            $this->password = $this->encrypt($this->password);
        }
        return true;
    }else {
        return false;
    }
}

然后用gii的Crud Generator生成User的Controllers文件UserController.php 这个文件的下面代码是一个简单的权限系统

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

注: - “ * ”—-任何人都可以访问。 - “ @ ”—-登录用户才能访问。 - “ admin ”—-是指只有admin用户才能访问。

Yii学习笔记(三)-gii的使用以及模块的使用

2012年07月10日

gii的使用 gii可以帮你生成很多文件,很方便。

访问:http://localhost/blog/index.php?r=gii  输入之前设置的密码,进入gii。

选择 Model Generator在Table Name下面输入数据库 表名称,然后点Preview 预览,点Generate 生成文件。

然后在左边再选择Crud Generator在Model Class 下面输入你刚才生成对应的controllers文件(也就是controllers文件夹对应的文件名,注意大小写要匹配),然后点Preview 预览,点Generate 生成文件。

模块的使用(就是使前后台分离)

在gii左边选择Module Generator 在Module ID下面输入Admin,然后点Preview 预览,点Generate 生成文件。这个时候你会发现protected文件夹下面自动生成了一个modules文件夹。

然后修改main.php配置文件。在gii这个数组下面添加:

1
2
3
'Admin'=>array(
    'class'=>'application.modules.Admin.AdminModule',
),

那么接下来就可以在gii中给Admin添加模块了。

在左边再选择Crud Generator在Model Class 下面输入对应的controllers文件(也就是controllers文件夹对应的文件名,注意大小写要匹配),但是注意要修改Controller ID的内容,要在前面加上 “Admin/” ,然后点Preview 预览,点Generate 生成文件。

Yii学习笔记(二)-修改配置文件

2012年07月09日

配置文件在 protected\config\main.php 开启gii 找到下面这段代码,把注释去掉:

1
2
3
4
5
6
7
8
/*
'gii'=>array(
    'class'=>'system.gii.GiiModule',
    'password'=>'Enter Your Password Here',
    // If removed, Gii defaults to localhost only. Edit carefully to taste.
    'ipFilters'=>array('127.0.0.1','::1'),
),
*/

修改password为自己使用的密码。 ps:如果访问gii的时候提示文件不存在,那就修改ipFilters中127.0.0.1为自己的IP。 开启数据库 找到下面这段代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
'db'=>array(
    'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
),
// uncomment the following to use a MySQL database
/*
'db'=>array(
    'connectionString' => 'mysql:host=localhost;dbname=testdrive',
    'emulatePrepare' => true,
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8',
),
*/

把上面一段注释掉,下面一段开启,修改之后如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/*
'db'=>array(
    'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
),
*/
// uncomment the following to use a MySQL database

'db'=>array(
    'connectionString' => 'mysql:host=localhost;dbname=appyii',
    'emulatePrepare' => true,
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8',
    'tablePrefix'=>'fe_',//指表前缀,需要的自行添加
),

dbname:指数据库名。

Yii学习笔记(一)-yii初使用

2012年07月06日

之前学的CI框架,现在用的已经很顺手了,感觉还不错的时候找了份工作,但是这家公司是用yii框架开发项目的,没办法,只能抓紧时间自学了。好了,废话不多说,直接进入主题。

首先刚开始学肯定是去google一下学习资料,发现了这个:http://www.yiichina.com/ 还有这个:http://yiiblog.info/blog/yii-go/。这两个网站都不错。刚开始看权威指南还是有点晕晕的感觉,感觉还是上不了手,然后想到了视频,yii-go的视频还不错,很简单易懂,安装上面操作,大致了解了这个框架的用法,下面简单总结一下;

  • yii框架需要执行命令启用,会自动生成一些基础的网页,功能。这个相对于ci来说,省事很多。但是刚开始我确实很不习惯。
  • 简单说一下怎么生成,这个问题看了介绍的时候不是很明白,还是看视频才了解的。下载yii框架找打yiic这个文件,找到文件所属位置 ,打开cmd,然后执行 :
1
2
3
D:
xampp\htdocs\yii\framework\yiic webapp xampp\htdocs\yiiapp
yes

好了,现在一个基本的web应用已经生成了,那么你现在要做的就是修改这个web为自己所用。

ps:用win+wamp的的朋友可能会遇到下面的问题:

在执行yiic webapp命令时,就报以下错误了: ‘”php.exe”’ 不是内部或外部命令,也不是可运行的程序或批处理文件。 这个事yiic批处理程序找不到php.exe引起的

  1. 方法一、修改yiic.bat文件 打开yii安装目录d:/www/yii/framework/yiic.bat,yiic.bat有记事本打开有如下一行: if "%PHP_COMMAND%" == "" set PHP_COMMAND=php.exe 由于我的WAMP安装时没有将php.exe加入到Windows环境变量中,难怪yiic找不到。这样也只需要将php.exe的绝对路径赋给PHP_COMMAND即可。如在我这环境下是这样设置的: if "%PHP_COMMAND%" == "" set PHP_COMMAND=D:\xampp\php\php.exe
  2. 方法二:参考文章

关于实习报告

2012年05月25日

马上就到了该回学校的时候了,这就意味着我们”实习”的日子也该结束了。这一段时间的实习,可以说对我们的人生影响很大,人生的路改怎样走,我更加的清晰了。

从刚开始出校门的懵懵懂懂,到现在的”眼高手低”。记得还出校门找工作的时候,那个辛苦,为了能找到一份给自己锻炼的机会,没有考虑到很多东西,一心想着多学点经验。差点就在暑假的时候去爱普当销售员了。现在想想还好当时他们爱普招满了人,没收我们当兼职。后来就再学校快封校的时候,我不甘心就那样回家去了,于是就在网上投了几份简历,效果还不错,很快就有回复。但是不是所有的工作都适合我的,微博营销就真的不适合我。后来我接到一份PHP程序员的面试,并且面试我的是经理本人,一个看上去是跟我年纪差不多的经理。面试的内容很轻松,我们聊了几句,我就顺利被录取了,那时候我真的很高兴,能找到一个跟自己专业有关系的工作,并且待遇还不错。

由于没有工作经验,也没有实战经验,公司也是刚创业不就的公司,刚开始做网站的时候都不知如何下手,还过还有有老师上课的案例,第一个项目我们花了半个多月的时间总算给客户交差了。功能都给人家齐了。但现在看来还有存在一定的bug。

小公司有小公司的好处,刚开始我们很有激情,不知道为什么每天都很开心的忙碌着工作,很开心,即使有时候会很累。公司还没开始扩张的时候,我们每个月都有一次”月终酒会”,那天我们会提前一个小时下班,放开所有的工作,开心的去吃饭、KTV。小公司还有一个好处,就是你不会被人给忽视掉。不忙的时候下班我会留下来跟经理和同事一起打一盘Dota,虽然我那时候Dota技术很烂,总是坑队友,但是,现在真是很怀恋。

随着业务的扩张,销售的给力,经理做出了扩张的决定,现在看来,当时的决定是错误的。扩张就意味着我们就要换到新的办公室了。公司来了新的员工,人数少的时候可能不存在管理的问题,但是扩张之后的公司的管理就出现了问题,即使后来我们搞了几次体能训练来增加同事之间的团队精神,但显然效果不是很明显。公司的人员增多,意味着公司要接到更多的项目,老板才能养活我们,扩张是因为那时候的项目没人手做,好吧,当时的项目做完了,我们又没能接到项目了。这直接导致公司的盈利,老板都快发不起工资了,所以就采取了裁员政策,我能在那次幸免能够留下来,确实是很不错。但是呢?我那时候突然有一种感觉上班会很累,虽然我上班都没有事干。我越想越累,就在我学完PHP框架之后,找了个机会跟老板说了我有辞职的意愿,老板也同意了。说实话,还真是有点不舍得。

从什么时候开始上班变是一件很没有激情的事,写的代码,都是重复再重复。辞职之后我就疯狂的玩了几天,然后开始写了个博客导航的小程序,还挂到的网上。(现在不能访问了,因为用的是美国空间,现在不能访问了),现在我一直在写另外一个程序,一边写一边学习。但是效率可想而知的没有在上班的时候高,但是确实也学到了很多东西。

我觉得我现在又站在了人生的十字路口了,我梦想着能做出一个百万级用户的产品出来。但是现在是时候吗?我的技术成熟了吗?我现在又能力吗?答案我都不能肯定。但是现在在武汉确定找不到让我满意的工作的了,要么工资开的不满意,要求还很高。要么工资还行,但是做的事情我不愿意干,二次开发、套模板,我感觉太无聊了,我是不愿意浪费那时间的了。现在的我只等着拿毕业证,然后呢?离开武汉,去深圳、杭州、北京??都是不错的地方。但是前面的路还是未知。我只能满怀期待的走下去。希望能早点实现自己的梦想。

Comments

上海做网站: 愿楼主找到心仪的工作

石膏公仔: 程序员是练出来的!

颜成: 不错 有个自己展示自己的平台 自己可以控制

锁匠工具: 一切都需要过程,在过程中慢慢成长,有梦想,就去努力。 :razz:

刘杰: 这个主题有点意思

刘杰: 这个主图不错,有点意思 http://www.57li.com