Nov 17
今天发现一个很有趣的事情,是关于msql导入导出数据的 你要不要看看呢?

导出数据:
首先,我用命令

mysql -hlocalhost -uroot -p123456 < G:/sql.sql blog

成功将数据导入blog 数据库

下面我情况了数据库blog,使用如下命令导入

mysql -hlocalhost -uroot -p123456 blog < G:/sql.sql


我了个去 数据依然导入成功。

太给力了 后面2个参数顺序可以互换??

----------------好吧,我承认我OUT了 来试试导出吧--------------------

首先,用命令

mysqldump -hlocalhost -uroot -p123456 blog > G:/out.sql

成功导出blog数据库内容

有了上面的经验,再试试如下命令

mysqldump -hlocalhost -uroot -p123456 > G:/out.sql blog

成功导出blog数据库内容。
好吧,太给力了。哥败了




Oct 28
最近工作中接手开发了一个网站门户功能,说简单一点就是可以实现自定义页面布局,并调用当前系统数据。

门户开发主线有3条,分别是前台页面自定义的实现、后台程序对数据的处理、数据模块开发。

1.前台页面自定义开发

由于是传统的web系统,DIV+JS实现。所以前台页面自定义开发对js技术的掌握方面有一定的基础要求,
包括浏览器兼容性问题。不过也不是很难,只要有信心就能做好。


开发内容主要包括如下几点:

1.1 利用js实现模块的拖动及拖动后节点数据的存储。这里的难点是拖动div模块/布局的实现,拖动到指定位置后的节点数据处理。
很幸运,这部分已经在上一个程序人员的处理下基本完工了,我接手后对这部分只需要做简单的调整和修改,省了不少心思。
这部分的JS主要在DIY应用的 core.js 里面。

1.2 模块编辑弹框需要用到的js处理,这些处理包括定制页面管理弹出窗、弹出窗内js函数的封装。

1.3 各个模块内js函数的开发定义,如各种图片显示、ajax分页处理、其他应用json/jsonp数据的处理等。
虽然这个并不是全部模块都会用到,但是确实也是必不可少的。这部分js的编写,是需要二次开发人员自己拓展的。

我已经将大部分通用的js处理函数写到diy.js里面的Normal 对象中。
下面对这个js文件进行简单的分析和解释:

var Normal = (function(DOM,Sam){
  // 首先定义了一些对象的私有变量和方法
  // 私有变量
    var $ = DOM.get,  
    mods = {},
    fired = false,
    LOADED = 1,
    ATTACHED = 2,
    page = 'index',
    channel ='index',
    _ajaxParam = new Array(),
    _doUrlList = new Array(),
    preview = false;
  //私有方法
var registerModule=function(name,def,config){
  ...
  },
       ...
   keepButton=function(obj,rightpx){
  
    
    };
  
  //这里定义了一些供外部调用的"接口"函数
   return {
  doc:window.document,
  add:function(name,fn,config){
  ...
  },
  run:function(){
      var self = this;
      Sam.each(mods,function(item,name){
    self.use(name);
      });
  },

  DiyAdmin:function(targetName,diyId){
        Sam.ajax.post(U('diy/Index/getAdminPopup'),{page:page,channel:channel,target:targetName,diyId:diyId},function(msg){
           var pop = new Popup({
            contentType: 3,
            isReloadOnClose: false,
            isSupportDraging:true,
            noButton:true,
            width:550,
            height:'auto'
            });
           pop.info.someHiddenTag = "object,embed";
           pop.setContent("title", "参数设置");
       pop.setContent("callBack", 'previewAdmin');
           pop.setContent("confirmCon", msg);
           pop.build();
       pop.show();
        });
  },
  submit:function(form){
    if(this.preview==true){
      form.target = 'preview';
      jQuery('#main').hide();
      jQuery('#sublist').hide();
      jQuery('#prelist').show();
      jQuery('#preview').show();
      form.isPreview.value = 1;
    }else{
      form.isPreview.value = 0;
      form.target = '';
    }
    return true;
  },
  ....
  };
})(DOM,Sam)



2.后台程序对数据的处理 (DiyService)

后台程序对数据的处理,包括对js传递过来的数据进行整理及格式化存储(保存操作)、
根据存储数据对页面进行渲染(编辑和现实页面)、模块数据属性的修改。

2.1对js传递过来的数据进行整理及格式化存储,这个过程思路很简单,但过程很复杂。
我们接受到的js数据分为model和layout两个数据,前者为模块的节点数据,后者为布局的节点数据。
我们需要将两个数据合并,并整理出正确的序列,存入数据库中。具体实现过程在DiyService->saveNode中进行……

2.2根据存储数据对页面进行渲染(编辑和现实页面)
我们从数据库取出了数据,然后根据数据的属性(如是否为布局,是否为模块),由于涉及到多重嵌套和多个列,我们要确定模块/布局在页面的哪个位置,
这需要在渲染时候建立一个的模型,同时填充对应的数据进去(这里用到了抽象类的prase方法)。

2.3 模块数据属性的修改,就是在定制页面或者前台管理页面(其实后台还有个模块数据管理),对某个模块数据进行修改后,如何方便的存入数据库中。
在后台和前台管理页面,对模块数据的修改都是只修改当前模块的attr属性,再刷新对应模块缓存。
但是在定制页面中,每次修改后都需要保存整个模块,重建整个页面的模块属性、数据库数据和缓存。

2.4 还有一点就是模块缓存的处理机制,这个机制在wiki上已经有了,有兴趣的可以去看下。


3.数据模块开发

可能这个叫法不且贴,但我想的数据模块指的是对系统内外各种数据的调用,包括自定义的数据、本系统的数据、其他系统的数据。
每个模块内对数据的调用、渲染是需要独立开发的,但是系统会给定一个开发框架和规范。
下面就来说说这个模块开发。

首先有一个核心抽象类提供模块的一些基本方法的封装和定义。
其次我们的每个单独模块都可以理解为一种简单的model->view模式。
为什么没有C呢?因为我们的控制器已经结合在框架里了。
model就是我们在插件DIY目录下看到的一个个小文件夹中的main.php函数。View就是style中的各个模板。
然后我们还有一个popup.html 这个是在自定义页面的弹出窗需要用到的模板页面。
然后我们还有一个popupAdmin.html 这个是在前台管理页面的弹出框需要用到的模板页面。
然后,然后就没有然后了。这些就是数据模块开发的全部内容。



整个门户的开发思想思路基本就是这样,很明显,着并不是一个非常完善的开发方案,但是更明显的是它实现了目前的需求。
也许我们应该多参考业内的其他门户(定制页面)开发思路,如已知的淘宝旺铺、QQ空间等,
再将各种好的方法方案结合起来,取出精华、创造属于我们自己的更完美的实现方案。

要是你看完了这篇日志,thx!









Jul 2

无题 不指定

phpcto , 14:10 , 生活理想 , 评论(2) , 引用(0) , 阅读(288726) , Via 本站原创
貌似苦难将伴随我们的一生,或许,唯一值得回忆的就是美好的童年,但童年总是在无知中恍惚度过。也许就无知是一种幸福。

当你成年,背上沉重的行李、踏出家门的那一刻,你不会知道,母亲在你身后悄悄地拭去泪水,她在喜悦:“我儿长大成人”;同时深知生活艰辛的母亲又在感叹:“我儿该用什么面对生活的坎坷”。

初涉世事的你,每当看见都市里闪烁的霓虹灯;每当看见来往的豪华轿车;每当看见屹立的高楼大厦,你都自信的在暗道:“这一切我都会拥有”,可是未来的艰辛给了你简约易懂的答案:“这一切,没那么容易”。

一次次路过热闹的广场;一次次孤独地过中秋佳节;一次次等待拥挤的公交车,你的青春,就在这样的平淡中蹉跎。偶尔几个朋友的相聚,几杯浊酒,几碟小菜,在繁杂的喧嚣声中给生活留下一些点缀。当远方山村的灯光渐渐隐去,母亲还梦见远方儿子的笑容;当深夜里偶尔传来隔壁邻家的狗吠声;当田野上响起了无数的蛐蛐声,而你还在城市的某个角落,专注的敲打着一些东西,而这一切,只不过是为了生活。

终于,这一天放了假,你可以踏上回家的火车,带着大包小包的东西,给远在深山的父母看城里的稀奇:你带去的水果,他们都没有尝过;你带去的衣物,他们也没有见过,其实这一切,只不过是为了告慰父母:儿在外面过的很好。山里的一切都显得无比的亲切,在这里,感觉到了前所未有的轻松和惬意。几天后,你又踏上去往城市的路,不是不习惯农村的生活;也不是工作很繁忙,而是一无所有的你,无法面对脚下的黄土地。

生活还在继续,拼搏没有停止,我们都相信:这是任何一个志在四方的男儿必须经过的,却不是我们一生的概括。努力,一切都会有的!

Jun 16
目标

1、创建基于 IP 的虚拟主机用于一个项目的整体测试

2、创建基于用户的虚拟主机用于用户测试自己的代码

开始

创建虚拟主机的目录结构

#sudo /home/www

#cd /home/www

#sudo mkdir 192.168.0.251 192.168.0.252

#cd 192.168.0.251

#sudo mkdir cgi-bin htdocs logs db

#cd ../192.168.0.252

#sudo mkdir cgi-bin htdocs logs db

#tree /home/www

/home/www
|-- 192.168.0.251
| |-- cgi-bin
| |-- db
| |-- htdocs
| `-- logs
`-- 192.168.0.252
|-- cgi-bin
|-- db
|-- htdocs
`-- logs

1.
要在 192.168.0.251 和 192.168.0.252 上 创建两个基于 IP 的虚拟主机,为了直观起见,在 /home/www 下分别创建了目录 192.168.0.251 和 192.168.0.252

2.
cgi-bin 子目录用于存放 CGI 脚本

3.
db 子目录用于存放 SQLite 数据库

4.
htdocs 子目录用于存放站点文档

5.
logs 子目录用于存放站点日志

创建虚拟主机的管理帐号并设置目录权限

#sudo useradd -g www-data -d /home/www/192.168.0.251 wuser1

#sudo useradd -g www-data -d /home/www/192.168.0.252 wuser2

#sudo passwd wuser1

#sudo passwd wuser2

#sudo chown -R wuser1.www-data /home/www/192.168.0.251

3sudo chown -R wuser2.www-data /home/www/192.168.0.252

1.
将 192.168.0.251 虚拟主机的管理者赋予 wuser1; 将 192.168.0.252 虚拟主机的管理者赋予 wuser2;允许他们使用 ssh 登录

2.
wuser1 和 wuser2 的主组均设置为 www-data,这样设置的方便之处在于:若站内有 Apache 进程可写的内容,只需添加 组可写 权限即可

配置虚拟网络接口和主机名解析

使用如下命令:

sudo vim /etc/network/interfaces

添加如下的配置

auto eth0:1
iface eth0:1 inet static
address 192.168.0.251
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1

auto eth0:2
iface eth0:2 inet static
address 192.168.0.252
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1

然后使用如下命令重新启动网络服务

sudo /etc/init.d/networking restart

然后在 /etc/hosts 文件中添加如下的行

192.168.0.251 web1.example.com web1

192.168.0.252 web2.example.com web2

配置 Apache

◆S1. 在 /etc/apache2/sites-available/ 目录下创建新的文件 192.168.0.251,添加如下的配置

/etc/apache2/sites-available/192.168.0.251
DocumentRoot "/home/www/192.168.0.251/htdocs/"
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
ScriptAlias /cgi-bin/ /home/www/192.168.0.251/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
ErrorLog /home/www/192.168.0.251/logs/error.log
CustomLog /home/www/192.168.0.251/access.log combined

◆S2. 在 /etc/apache2/sites-available/ 目录下创建新的文件 192.168.0.252,添加如下的配置

/etc/apache2/sites-available/192.168.0.252
DocumentRoot "/home/www/192.168.0.252/htdocs/"
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
ScriptAlias /cgi-bin/ /home/www/192.168.0.252/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
ErrorLog /home/www/192.168.0.252/logs/error.log
CustomLog /home/www/192.168.0.252/access.log combined

◆S3. 重新启动 Apache

#sudo a2enmod rewrite

#sudo a2enmod php5

#sudo a2enmod perl

#sudo a2enmod mod_python

#sudo a2ensite 192.168.0.251

#sudo a2ensite 192.168.0.252

#sudo /etc/init.d/apache2 restart

配置站点内容的上传

FTP 服务器

◆S1: 使用如下命令安装 proftpd

sudo apt-get install proftpd proftpd-doc

◆S2. 使用默认配置即可实现本地用户的上传和下载

Samba 服务器

◆S1. 使用如下命令

sudo vi /etc/samba/smb.conf

添加如下的配置行:

/etc/samba/smb.conf
[homes]
comment = Home Directories
browseable = no
writable = yes
create mask = 0644
directory mask = 0755

◆S2. 配置 Samba 用户通过如下命令添加 Samba 用户

sudo smbpasswd -a wuser1

sudo smbpasswd -a wuser2

◆S3. 启动 Samba 服务器

sudo /etc/init.d/samba restart

创建基于用户的虚拟主机

*

可能开发者在 Windows 客户机没有创建开发环境

*

为了使每个开发者可以测试自己的代码,可以创建基于用户的虚拟主机

创建用户帐号

sudo useradd -g www-data -m user1

sudo useradd -g www-data -m user2

sudo passwd user1

sudo passwd user2

1. 用户需要在宿主目录下创建 public_html 子目录,将 Web 文档放入其中,可以通过 URL http://IPorHostname/~username 访问自己的站点

2. 若进行 CGI 开发,还需要在宿主目录下创建 cgi-bin 子目录

配置 Apache

使用如下命令启用 userdir 模块即可

sudo a2enmod userdir

若进行 CGI 开发,需要修改 /etc/apache2/mods-available/userdir.conf

UserDir public_html

UserDir disabled root

AllowOverride FileInfo AuthConfig Limit

Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

ScriptAliasMatch ~([a-z]+)/cgi-bin/(.*) /home/$1/cgi-bin/$2

# 添加此行,意思是匹配~user_name/cgi-bin/cgi_name自动映射到/home/user_name/cgi-bin/cgi-name脚本

关于默认的虚拟主机

Ubuntu 中文件 /etc/apache2/sites-available/default 配置的是默认的虚拟主机。default 虚拟主机的根文档目录默认设置为 /var/www,为了便于备份,最好将所有的 Web 内容都存放在 /home/www 目录下,为此可以将默认的虚拟主机的根文档目录默认设置为 /home/www 下的某个子目录下。

创建虚拟主机的目录结构

#cd /home/www

#sudo mkdir 192.168.0.222

#cd 192.168.0.222

#sudo mkdir cgi-bin htdocs

创建虚拟主机的管理帐号并设置目录权限

#sudo useradd -g www-data -d /home/www/192.168.0.222 wdefault

#sudo passwd wdefault

#sudo chown -R wdefault.www-data /home/www/192.168.0.222

配置 Apache

◆S1. 在 /etc/apache2/sites-available/ 目录下创建新的文件 192.168.0.222,添加如下的配置

/etc/apache2/sites-available/192.168.0.222
DocumentRoot "/home/www/192.168.0.222/htdocs/"
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all

ScriptAlias /cgi-bin/ /home/www/192.168.0.222/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all

ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
Options Indexes MultiViews FollowSymLinks

AllowOverride None
Order deny,allow
Deny from all
Allow from 192.168.0.0/255.255.255.0

◆S2. 重新启动 Apache

#sudo a2dissite default

#sudo a2ensite 192.168.0.222

#sudo /etc/init.d/apache2 restart
Jun 16
资料:http://www.oschina.net/p/mongodb
分页: 7/61 第一页 上页 2 3 4 5 6 7 8 9 10 11 下页 最后页 [ 显示模式: 摘要 | 列表 ]