pager_build : function(act,query,res){
var pn = res.data.pn,
rn = res.data.rn,
tn = res.data.tn,
pager;
if(!tn){
pager = '';
}
var dataQuery = StringH.queryUrl(query);


var pns = Math.ceil(tn / rn);
var html = ['<div class="global-page">'];

var plink = function(i){
dataQuery.pn = i;
return '<a href="#" class="action" data-act="'+act+'" data-query="'+ObjectH.encodeURIJson(dataQuery)+'">'+(i+1)+'</a>';
}
if(pns < 12){
for(var i=0;i<pns;i++){
if(i == pn){
html.push('<span class="select">'+(pn+1)+'</span>');
}else{
html.push(plink(i));
}
}
}else if(pns > 11){
if (pn < 6){
for(var i=0;i<9;i++){
if(i < 9){
if(i == pn){
html.push('<span class="select">'+(pn+1)+'</span>');
}else{
html.push(plink(i));
}
}
}
html.push('<span class="global-page-break">...</span>');
html.push(plink(pns-1));
}else if(pn+5 < pns ){
html.push(plink(0));
if(pn == 6){
html.push(plink(1));
}else if(pn != 5){
html.push('<span class="global-page-break">...</span>');
}
for(var i =0;i<9;i++){
if(i == 4){
html.push('<span class="select">'+(pn+1)+'</span>');
}else{
html.push(plink(pn + i - 4));
}
}
if((pn + 7) == pns){
html.push(plink(pns-2));
}else if((pn+6) == pns){

}else{
html.push('<span class="global-page-break">...</span>');
}
html.push(plink(pns-1));
}else{
html.push(plink(1));
html.push('<span class="global-page-break">...</span>');
for(var i =0;i<9;i++){
if((pns-pn) + i == 9){
html.push('<span class="select">'+(pn+1)+'</span>');
}else{
html.push(plink(pns-9+i));
}
}
}
}
html.push('</div>');
if(pns > 1){
pager = html.join('');
}else{
pager = '';
}
W('#settingpageer').html(pager);
},
posted @ 2012-02-07 16:02 greengnn 阅读(30) 评论(0) 编辑
var logger = (function(){
var loghost = 'http://127.0.0.1/log.gif?';
var log = function(err){
var img = new Image(0,0);
var _url =[];
_url.push('name'+'='+encodeURIComponent(err.name));
_url.push('message'+'='+encodeURIComponent(err.message));
_url.push('location'+'='+encodeURIComponent(err.location));
if(err.line)
_url.push('line'+'='+encodeURIComponent(err.line));
if(err.func)
_url.push('func'+'='+encodeURIComponent(err.func));

var url = _url.join('&');
img.src = loghost+url;
console.log(img.src);
}
return {log:log};
})();

function trapError(msg, URI, ln) {
// wrap our unknown error condition in an object
var error = new Error(msg);
error.location = URI; // add custom property
error.line = ln;
logger.log(error);
warnUser();
return true; // stop the yellow triangle
}

window.onerror = trapError;

function foo() {
try {
riskyOperation();
} catch (err) {
// add custom property
err.location = location.href;
err.func = 'foo';
logger.log(err);
warnUser();
}
}
function warnUser() {
alert("An error has occurred while processing this page.\
Our engineers have been alerted!");
// do something
}
foo();
posted @ 2012-01-29 16:34 greengnn 阅读(41) 评论(0) 编辑

js部分

    function uploadSucc(data){
alert(data);
}
W('#uploadframe').on('load',function(e,uploadSucc){
e.preventDefault();
var el = this;
(function(){
try{
var data = el.contentWindow.document.body.getElementsByTagName("TEXTAREA")[0].value;
data = QW.StringH.evalExp(data);
console.log(data);
uploadSucc(data);
}catch(e){
setTimeout(arguments.callee,0);
return;
}
})();
});


HTML

<form action="<%#site_url#%>setting/upload" enctype="multipart/form-data" method="post" target="uploadframe">
<input type="file" name="file"/>
<input type="submit" value="上传"/>
</form>
<iframe id="uploadframe" name="uploadframe"></iframe>



posted @ 2012-01-21 15:50 greengnn 阅读(51) 评论(0) 编辑

本文描述了MySQL中的常用SQL语句在MongoDB中的写法,如果你长期使用MySQL而对MongoDB跃跃欲试,这篇简单的文章可以帮助你更快的进入角色。
查询:
MySQL:
SELECT * FROM user
Mongo:
db.user.find()
MySQL:
SELECT * FROM user WHERE name = ’starlee’
Mongo:
db.user.find({‘name’ : ’starlee’})
插入:
MySQL:
INSERT INOT user (`name`, `age`) values (’starlee’,25)
Mongo:
db.user.insert({‘name’ : ’starlee’, ‘age’ : 25})
如果你想在MySQL里添加一个字段,你必须:
ALTER TABLE user….
但在MongoDB里你只需要:
db.user.insert({‘name’ : ’starlee’, ‘age’ : 25, ‘email’ : ’starlee@starlee.com’})
删除:
MySQL:
DELETE * FROM user
Mongo:
db.user.remove({})
MySQL:
DELETE FROM user WHERE age < 30
Mongo:
db.user.remove({‘age’ : {$lt : 30}})
$gt : > ; $gte : >= ; $lt : < ; $lte : <= ; $ne : !=
更新:
MySQL:
UPDATE user SET `age` = 36 WHERE `name` = ’starlee’
Mongo:
db.user.update({‘name’ : ’starlee’}, {$set : {‘age’ : 36}})
MySQL:
UPDATE user SET `age` = `age` + 3 WHERE `name` = ’starlee’
Mongo:
db.user.update({‘name’ : ’starlee’}, {$inc : {‘age’ : 3}})
MySQL:
SELECT COUNT(*) FROM user WHERE `name` = ’starlee’
Mongo:
db.user.find({‘name’ : ’starlee’}).count()
MySQL:
SELECT * FROM user limit 10,20
Mongo:
db.user.find().skip(10).limit(20)
MySQL:
SELECT * FROM user WHERE `age` IN (25, 35,45)
Mongo:
db.user.find({‘age’ : {$in : [25, 35, 45]}})
MySQL:
SELECT * FROM user ORDER BY age DESC
Mongo:
db.user.find().sort({‘age’ : -1})
MySQL:
SELECT DISTINCT(name) FROM user WHERE age > 20
Mongo:
db.user.distinct(‘name’, {‘age’: {$lt : 20}})
MySQL:
SELECT name, sum(marks) FROM user where name='foo' GROUP BY name
Mongo:
db.user.group({
key : {‘name’ : true},
cond: {‘name’ : ‘foo’},
reduce: function(obj,prev) { prev.msum += obj.marks; },
initial: {msum : 0}
});
MySQL:
SELECT name FROM user WHERE age < 20
Mongo:
db.user.find(‘this.age < 20′, {name : 1})
发现很多人在搜MongoDB循环插入数据,下面把MongoDB循环插入数据的方法添加在下面:
for(var i=0;i<100;i++)db.test.insert({uid:i,uname:’nosqlfan’+i});
上面一次性插入一百条数据,大概结构如下:
{ “_id” : ObjectId(“4c876e519e86023a30dde6b8″), “uid” : 55, “uname” : “nosqlfan55″ }
{ “_id” : ObjectId(“4c876e519e86023a30dde6b9″), “uid” : 56, “uname” : “nosqlfan56″ }
{ “_id” : ObjectId(“4c876e519e86023a30dde6ba”), “uid” : 57, “uname” : “nosqlfan57″ }
{ “_id” : ObjectId(“4c876e519e86023a30dde6bb”), “uid” : 58, “uname” : “nosqlfan58″ }
{ “_id” : ObjectId(“4c876e519e86023a30dde6bc”), “uid” : 59, “uname” : “nosqlfan59″ }
{ “_id” : ObjectId(“4c876e519e86023a30dde6bd”), “uid” : 60, “uname” : “nosqlfan60″ }

posted @ 2011-12-19 10:56 greengnn 阅读(61) 评论(0) 编辑
$config = jkit::$config->load('upload')->get('default');
Upload::$default_directory= $config['directory'];//默认保存文件夹
Upload::$remove_spaces=$config['remove_spaces'];//上传文件删除空格

$file=$_FILES['ofile1'];
$files = Validation::factory($_FILES);

$files->rule('ofile1', 'Upload::not_empty')
->rule('ofile1', 'Upload::valid')
->rule('ofile1', 'Upload::size', array(':value', '1M'))
->rule('ofile1', 'Upload::type', array(':value', array('txt','xml','csv')));


if ($files->check())
{
$file_path = Upload::save($file);
if($file_path){
//读取文件
$file_data = $this->get_file_data($file['type'],$file_path);
$this->response->jsonp(array('err'=>'ok','data'=>$file_data));
}else{
$this->response->jsonp(array('err'=>'upload.failed'));
}
}else{
$this->response->jsonp(array('err'=>$files->errors('ofile1')));
}
posted @ 2011-11-24 11:51 greengnn 阅读(72) 评论(0) 编辑
摘要: 安装lighttpd fastcgi djangolighttpd conf配置server.modules = ( "mod_access", "mod_alias", "mod_compress", "mod_redirect", "mod_rewrite", "mod_fastcgi",)server.document-root = "/var/www2/mysite"server.upload-dirs = ( "/var/cache/l阅读全文
posted @ 2011-11-08 16:18 greengnn 阅读(135) 评论(0) 编辑
摘要: //快速排序function quicksort(seq) { if (seq.length > 1) { var k = seq[0]; var x = []; var y = []; for (var i=1,len = seq.length; i<len; i++) { if (seq[i] <= k) { x.push(seq[i]); } else { y.push(seq[i]); } } x = quicksort(x); y = quicksort(y); ret...阅读全文
posted @ 2011-11-01 19:59 greengnn 阅读(97) 评论(0) 编辑
摘要: function getRandomPlayCard(m){ var arr=new Array(m); for(var i=0;i<m;i++){ var rnd=Math.floor(Math.random()*(i+0.99999)) arr[i]=arr[rnd]; arr[rnd]=i; } return arr;};阅读全文
posted @ 2011-11-01 18:08 greengnn 阅读(75) 评论(0) 编辑
摘要: /*!Math.uuid.js (v1.4)http://www.broofa.commailto:robert@broofa.comCopyright (c) 2010 Robert KiefferDual licensed under the MIT and GPL licenses.*//* * Generate a random uuid. * * USAGE: Math.uuid(length, radix) * length - the desired number of characters * radix - the number of allowable value...阅读全文
posted @ 2011-10-06 01:10 greengnn 阅读(424) 评论(0) 编辑
摘要: function guidGenerator() { var S4 = function() { return (((1+Math.random())*0x10000)|0).toString(16).substring(1); }; return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());}阅读全文
posted @ 2011-10-06 01:04 greengnn 阅读(195) 评论(0) 编辑