express4.2获取参数和视图

1.获取参数

router.get('/', function(req, res) {
	//console.log(req.query.a);	//get a=2
	//console.log(req.query.b.a);	//get b[a]=3
	console.log(req.param('name'));
	res.render('index', { title: 'Express' });
});

router.post('/', function(req, res) {
	console.log(req.param('name'));
	console.log(req.params);
	console.log(req.body);
	//console.log(req.body.a);	//post a=2
	//console.log(req.body.b.a);	//post b[a]=3,不知道为何这个获得不到!
	res.render('index', { title: 'Express' });
});

说明:
req.query是处理get请求,获取get参数
req.params是处理rest形式的get或者post参数
req.body是处理post请求,可以获取到post请求体
req.param()是处理get或者post请求(从params开始检查,然后req.body,然后req.query)
 

2.视图
app.set(‘views’, path.join(__dirname, ‘views’));//设置视图文件夹,其中__dirname是app所在目录
app.set(‘view engine’, ‘ejs’);//设置视图引擎,有jade、ejs等等;我们使用express -e创建项目的时候就可以使用ejs
真正确定工程使用什么引擎就这句了!
res.render(‘index’, { title: ‘Express’ });
这句是渲染视图,其中title是可以在视图中使用的变量例如

Welcome to <%= title %>

这样就是Welcome to Express
备注:不过我把title前后的空格删除都可以解析,嘿嘿~~有机会看看底层的代码
第一个参数是要渲染的视图,第二个参数要传递到视图当中的变量

<%= %>是显示替换过html的内容
<%- %>是原样输出
<% %>是可以执行放入js代码(这个可以参考官网)

引入其他页面可以使用include,比如<%- include a %>或者<%= include a %>

Discuz 当中的sql替换

%t:表名占位符,DB::fetch_first(“SELECT * FROM %t”,array(‘common_member’));
%d:数值占位符,DB::fetch_first(“SELECT * FROM %t WHERE uid=%d”,array(‘common_member’,1));会自动执行intval
%s:字符占位符,DB::fetch_first(“SELECT * FROM %t WHERE username=%s”,array(‘common_member’,’管理员’));会自动执行addslashes,转义特殊字符
%n:DB::fetch_all(“SELECT * FROM %t WHERE uid IN(%n)”,array(‘common_member’,array(1,2,3)));
%f:同%d类似,只是浮点数,很少用
%i:原样输出,DB::fetch_first(“SELECT * FROM %t WHERE username=’%i'”,array(‘common_member’,’管理员’));

jade模板学习

1、Jade中,空格、换行、缩进都是有意义的,由这些决定了标签和内容的嵌套关系。

2、jade模板中不需要结束标签,它用缩进表示标签间的嵌入关系。

3、span.mySpan span content代表是<span class=”mySpan”>span content</span>

4、注释使用//

5、#foo.bar.baz可以替换

6、属性
a(id=’signin’,class=’btn’,href=’#sign-in-modal’,data-toggle=’modal’)
a#signin.btn(href=’#sign-in-modal’,data-toggle=’modal’)
a#signin.btn.btn-primary(href=’#sign-in-modal’,data-toggle=’modal’)
可以替换

<a class=”btn” id=”signin” href=”#sign-in-modal” data-toggle=”modal”>

更多内容参考:http://jade-lang.com/

ubuntu安装puref-ftpd

1.安装pureftpd

sudo apt-get install pure-ftpd

sudo apt-get install pure-ftpd-mysql

2.创建数据库和存放ftp用户表

CREATE TABLE `users` (
CREATE TABLE `users` (
  `User` varchar(16) NOT NULL DEFAULT '' COMMENT '账号',
  `Password` varchar(64) NOT NULL DEFAULT '' COMMENT '密码',
  `Uid` mediumint(8) NOT NULL DEFAULT '33' COMMENT '用户UID',
  `Gid` mediumint(8) NOT NULL DEFAULT '33' COMMENT '用户GID',
  `Dir` varchar(128) NOT NULL DEFAULT '' COMMENT '用户根目录',
  `Comment` tinytext NOT NULL COMMENT '备注',
  PRIMARY KEY (`User`),
  UNIQUE KEY `User` (`User`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='FTP用户';

 

3.配置
编辑/etc/pure-ftpd/db/mysql.conf
#MYSQLServer localhost
#MYSQLPort 3306
MYSQLUser pureftpd
MYSQLPassword ftpdpass
MYSQLDatabase pureftpd
#MYSQLCrypt md5, cleartext, crypt() or password() – md5 is VERY RECOMMENDABLE uppon cleartext
MYSQLCrypt md5

4.一些配置
//限制用户在自己家目录
echo “yes” >/etc/pure-ftpd/conf/ChrootEveryone
echo “no” >/etc/pure-ftpd/conf/AnonymousOnly

备注:

1、提示Can’t login as [XXXX]: account disabled

需要检查启动的时候u参数是多少

usr/sbin/pure-ftpd-mysql -l mysql:/etc/pure-ftpd/db/mysql.conf -l pam -H -8 UTF-8 -C 5 -O clf:/var/log/pure-ftpd/transfer.log -c 10 -u 1000 -E -B
这个-u就是最小的uid!
解决这个错误
echo ’33’ > /etc/pure-ftpd/conf/MinUID
那么最小的UID就是33!!!!
2、设置Umask要放到conf下Umask文件并且要用空格分开!!!
比如002 002就是设定文件是775和文件夹775一样的效果!!!!

js过滤空格

很实用的js函数


 


YII之yiic使用

1.D:\wamp\www\yii-1.1.15\framework\yiic webapp D:\wamp\www\demo 更多内容参考http://www.yiichina.com/guide/1/quickstart.first-app 2.遇到的问题有webapp前后有个空格 3.php需要添加到环境变量当中,注意路径!   生成目录列表:

yiic                   yiic 命令行脚本
  yiic.bat               Windows 下的 yiic 命令行脚本
  yiic.php               yiic 命令行 PHP 脚本
  commands/              包含自定义的 'yiic' 命令
     shell/              包含自定义的 'yiic shell' 命令
  components/            包含可重用的用户组件
     Controller.php      所有控制器类的基础类
     Identity.php        用来认证的 'Identity' 类
  config/                包含配置文件
     console.php         控制台应用配置
     main.php            Web 应用配置
     test.php            功能测试使用的配置
  controllers/           包含控制器的类文件
     SiteController.php  默认控制器的类文件
  data/                  包含示例数据库
     schema.mysql.sql    示例 MySQL 数据库
     schema.sqlite.sql   示例 SQLite 数据库
     testdrive.db        示例 SQLite 数据库文件
  extensions/            包含第三方扩展
  messages/              包含翻译过的消息
  models/                包含模型的类文件
     LoginForm.php       'login' 动作的表单模型
     ContactForm.php     'contact' 动作的表单模型
  runtime/               包含临时生成的文件
  tests/                 包含测试脚本
  views/                 包含控制器的视图和布局文件
     layouts/            包含布局视图文件
        main.php         所有视图的默认布局
        column1.php      使用单列页面使用的布局
        column2.php      使用双列的页面使用的布局
     site/               包含 'site' 控制器的视图文件
        pages/           包含 "静态" 页面
           about.php     "about" 页面的视图
        contact.php      'contact' 动作的视图
        error.php        'error' 动作的视图(显示外部错误)
        index.php        'index' 动作的视图
        login.php        'login' 动作的视图
     

备注:在linux下使用需要有执行权限!不同版本生成的目录可能不一样!

Ubuntu初始化svn一系列脚本

个人ubuntu服务器初始化svn脚本,虽然很烂,但是自己用起来很方便!(为何写ubuntu呢?因为centos的svn模块和ubuntu不一样!)
#!/bin/bash
read -p 'input svn path (eg:test)> ' site
if [ ! -d "/var/www/svn/${site}" ]; then
svnadmin create "/var/www/svn/${site}"
echo "svn init success /var/www/svn/${site}"
else
echo "svn path is exist!!"
exit 0
fi
if [ ! -f "/var/www/svn/${site}/hooks/post-commit" ];then
touch "/var/www/svn/${site}/hooks/post-commit"
echo "#!/bin/bash
svn update /var/www/html/${site}">/var/www/svn/${site}/hooks/post-commit
else
echo "touch post-commit error!!!"
exit 0
fi
chmod +x /var/www/svn/${site}/hooks/post-commit
chown -R www-data:www-data /var/www/svn/${site}
if [ ! -f "/etc/apache2/svn/${site}.conf" ];then
touch "/etc/apache2/svn/${site}.conf"
echo "
DAV svn
SVNPath /var/www/svn/${site}
Authtype Basic
AuthName 'SVN'
Auth_MySQL on
Auth_MySQL_Authoritative on
Auth_MySQL_Host localhost
Auth_MySQL_DB   test
Auth_MySQL_User test
Auth_MySQL_Password test123456
Auth_MySQL_Password_Table test
Auth_MySQL_Username_Field user
Auth_MySQL_Password_Field pwd
Auth_MySQL_Empty_Passwords Off
Auth_MySQL_Encrypted_Passwords  on
Auth_MySQL_Encryption_Types PHP_MD5
AuthBasicAuthoritative Off
AuthUserFile /dev/null
Require valid-user">/etc/apache2/svn/${site}.conf
else
echo 'touch /etc/apache2/svn/${site}.conf error'
exit 0
fi
echo "cat /var/www/svn/${site}/hooks/post-commit"
echo "cat /etc/apache2/svn/${site}.conf"
echo "cd /var/www/html"
echo "svn checkout http://svn.joyousphper.com/${site}"
这个完全是我方便自己初始化svn编写的(当然里面的路径和帐号密码肯定不是我的了~^_^),不一定适合你!  

位运算的运用

1.linux当中的位
在linux当中我们经常说777、775、755这个代表什么呢?其实很简单!
我们用1表示拥有执行权限,2表示拥有写入权限,4表示读取权限。
而1可以用1<<0表示(将执行权限放在最右边)其实就是2的0次方;
同样2用1<<1表示(写入权限放在从右边数第二位)2的1次方;
同样4用1<<2表示(从右边数第三位)2的2次方。
而拥有执行和写入的权限就是1+2=3;拥有执行、写入、读取的权限就是1+2+4=7,拥有执行和读取权就是1+4=5;
说明:linux当中的777解析:其中从左开始的第一个数字表示的文件或者文件夹归属用户的权限;
第二个表示文件或者文件夹归属用户组的权限;第三个表示其他用户的权限
这样我们就可以理解了linux的权限了

2.位用于权限管理
在后台管理角色当中一个角色可能有很多权限(增加、删除、修改权限)
我们用1表示增加权限,2表示删除权限,4表示修改权限;
一个用户权限表当中存储的是3,那么他就用于增加和删除的权限;
在程序当中我们如何判断是否拥有权限?

$account = 3;//表示角色存储的权限数字
if($account & (1<<0)) { //判断是否拥有增加权限 //拥有增加权限 } if($account & (1<<1)) { //判断用户是否有删除权限 //用户删除权限 } 如果要给用户增加权限,那么可以使用|(或)运算 比如上面的用户没有修改权限,我们要增加修改权限$account | (1<<;2) 这样实际上是011|100=111;用十进制表示就是7 如果要给用户取消权限,那么可以使用^(异或)运算 比如上面的用户有修改和删除权限,我们去掉删除权限$account ^ (1<<1) 这样实际上是011^010 3.实际应用 判断是否存在属性

$attribute_list  = array(0=>’首发’, ‘独家’, ‘新游’, ‘推荐’, ‘热门’, ‘精品’, ‘封测’, ‘内测’, ‘礼包’, ‘必玩’,’最新’) ;
游戏属性
 $v) :?>

谷歌浏览器扩展程序开发

先说为何要学这个,我们公司部署项目的时候有一个选择按钮,每次都得选中才能提交!于是就。。。

直接上代码!
配置文件:manifest.json

{  
    "name": "选中页面复选框",  
    "version": "1.0.0",  
    "manifest_version": 2,  
    "description": "选中页面当中的复选框", 
    "permissions" : ["tabs","http://*/"],
    "icons": {  
        "48": "icon.png"  
    }, 
    "content_scripts":[{
		"matches":["http://*/*"],
		"js":["jquery.min.js", "content_script.js"]
	}],
    "browser_action": {  
      "default_icon": "icon.png",  
      "default_popup": "popup.html"  
    }
}  

name就是程序名称
version是版本
manifest_version是2(如果是1会提示版本低)
description是扩展描述
permissions是权限,后面是匹配的网址。
icons是图标
content_scripts是加载的js
browser_action这是显示在浏览器插件栏的icon以及点击icon弹出的页面

content_script.js代码如下

$(":input[type='checkbox']").attr('checked', true);

 
额。。就这么简单!
引入的jquery就不说了~很喜欢jquery,因为它提倡写的少!做的多!
最后带上例子和说明文档!
备注:免费使用哦~另外,你会js的话,想怎么玩就怎么玩咯!!

example