分类: 其他技术

根据SQL文件生成数据词典

没有评论

2013 年 06 月 24 日 at 下午 1:21分类:其他技术

1.首先根据用PowerDesigner这个工具生成一个pdm的文件,至于这个文件怎么生成的那么就去问问百度和谷歌大神吧,
2.我们要下载一个工具:PDMReader,这是一个生成html或者是word文档的相关工具,
3.打开这个工具,选择文件,然后选择第一项:读取*.pdm数据词典文件,比如我有一个pay_center.pdm的数据词典文件,那么显示如下图:
1
4.那么这个时候其他的地方我们暂时不用管它,我们看到左侧菜单的示例项目目录的子菜单中有你刚刚导入的pdm文件名字,
5.我们右击它,会弹出一个菜单,我们选择文档导出,会有两个选项供你选择,可以选择导出HTML和WORD,那么这样子就导出OK了!看下效果图:
2

sublime安装格式化php代码插件(PHP_Beautifier)

没有评论

2013 年 04 月 22 日 at 下午 12:59分类:PHP | 其他技术

首先你的环境需要安装pear;
pear的下载:http://pear.php.net/go-pear.phar
下载好在命令行执行:php go-pear.phar;
安装perl成功后,要在d:\www\pear 目录下找到 PEAR_ENV.reg文件,执行导入即可。注意这个目录因人而已,选择不同的pear安装目录
那么这个文件所在地址也不一样。
perl安装成功,那么现在可以安装PHP_Beautifier,即然上面是通过perl安装的。那我在这也通过perl安装吧。

pear install PHP_Beautifier-0.1.15 

如果这里你有报什么错的话,那么就去问问百度和谷歌大神吧。哈哈~~
现在我们来安装sublime text的PhpBeautifier插件
通过sublime的package控制器直接安装 或者在这里 下载PhpBeautifier,解压到sublime text/data/package目录下
之后我们需要做些简单的修改:
1、打开你通过pear安装好的PHP_Beautifier的这个路径D:/www/pear/PHP/Beautifier/Filter 目录,

# 打开下面两个文件
 - Pear.filter.php  
 - phpBB.filter.php  
    
# 注释屌下面这句话
require_once ('PEAR/Config.php');  

然后修改sublime的插件文件:php_beautifier.py,找到滴26行代码

#修改这个地址为你的php_beautifier.bat所在文件目录
cmd = "D:\\www\\pear\\php_beautifier.bat"#"php_beautifier"

最好还要修改上面的那个bat文件:

//修改为你的bat文件所在的目录(应该是当前目录)
SET BEAUTIFY="D:\www\pear"\php_beautifier

OK。这样子就可以了
我们只要在php文件中使用ctrl+alt+f就可以格式化php的代码了
目前个人认为有个人缺点就是把默认的空行全部都去掉了。还有就是那个过滤的规则暂时还
不知道怎么写,还需要慢慢研究。。。

Gearman的安装和使用

没有评论

2013 年 04 月 15 日 at 下午 1:17分类:Nginx | PHP | 其他技术

Gearman是一个用来把工作委派给其他机器、分布式的调用更适合做某项工作的机器、并发的做某项工作在多个调用间做负载均衡、或用来在调用其它语言的函数的系统。
通常,多语言多系统之间的集成是个大问题,一般来说,人们多半会采用 WebService 的方式来处理此类集成问题,但不管采用何种风格的 WebService,如 RPC 风格,或者 REST 风格,其本身都有一定的复杂性。相比之下,Gearman 也能实现类似的作用,而且更简单易用。
一个Gearman请求的处理过程涉及三个角色:Client -> Job -> Worker。
Client:请求的发起者,可以是 C,PHP,Perl,MySQL UDF 等等。
Job:请求的调度者,用来负责协调把 Client 发出的请求转发给合适的 Work。
Worker:请求的处理者,可以是 C,PHP,Perl 等等。
因为 Client,Worker 并不限制用一样的语言,所以有利于多语言多系统之间的集成。
甚至我们通过增加更多的 Worker,可以很方便的实现应用程序的分布式负载均衡架构。
详细的一些信息就去问谷歌大神吧。
Gearman的安装,可能有些麻烦 我一开始用 的CentOS5.4的机器 结果是各种问题啊,后来实在不行了 ,换了6.2的机器来安装。

# wget https://launchpad.net/gearmand/1.2/1.1.5/+download/gearmand-1.1.5.tar.gz
# tar xzvf gearmand-1.1.5.tar.gz
# cd gearmand-1.1.5
# ./configure --prefix=/usr/local/gearmand
#  make
#  make install

这里如果出现了相关configure的错误(Boost ,uuid,mysql)的话,那么到网上找资料解决就好了,基本上都能解决,没什么难度的。
这样子的话,那么gearmand的服务端就完成了,我们称之为Job Server。
那么我们现在启动它:

# usr/local/gearmand/sbin/gearmand -d -P /var/run/gearmand.pid -l /var/log/gearmand.log -u root

接下来我们来安装gearmand的php拓展,我们在http://pecl.php.net中找下是可以找到的,如果找不到那么去这里点击也可以下载到相应的拓展。

# wget http://pecl.php.net/get/gearman-1.1.1.tgz
# tar zxvf gearman-1.1.1.tgz
# cd gearman
# phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config --with-gearman=/usr/local/gearmand
# make 
# make install

这里一定要加上–with-gearman参数,不然你又要为这个拓展单独去安装哥libgearmand了,没这个必要,网上有些文章就是这个错误引起的很多问题。
成功之后加入到php的配置文件中。
下面是我写的一个例子:

#worker.php
<?php
$worker=new GearmanWorker();
$worker->addServer("127.0.0.1", 4730);  //连接到Job server(gearmand) 上
$worker->addFunction("test", "testFunction"); 
while ($worker->work());
function testFunction($job) {
	$result = $job->workload();
	sleep(5);
	$data = unserialize($result);
	file_put_contents('./s.txt', var_export($data, true));
}
# client.php
<?php

$client=new GearmanClient();

$client->addServer("127.0.0.1", 4730); //连接到Job server(gearmand)上

$data = array('file'=>__FILE__, 'line'=>__LINE__);

$handler = $client->doBackground("test", serialize($data));//让任务在后台执行也就是异步

var_dump($handler);

$done = false;

echo "Running: .";

do {
   sleep(1);
   $stat = $client->jobStatus($handler);
   if (!$stat[0]) {
      $done = true;
   }
   echo " .";
} while(!$done);

echo "\n";

这个例子呢就是将客户端要执行的抛给gearmand的job server,让他去调度一个空闲的worker来执行我当前的这个任务。我们的woker可以有很多个,jobserver也可以有很多个,这样子就起到了负载均衡的作用了。这个东西在某些情况下应该比队列的效应来的更好些。
在实际使用时应该是运行gearmand -d 的 server 一台或者多台. [要装gearmand,运行gearmand];处理worker的机器若干[要装gearmand 及php so.但gearmand不需要运行].下达任务client若干[要装gearmand 及php so.但gearmand不需要运行]. worker 与 client 不会直接通信,都是通过gearmand来调度分发处理的.

参考:
1、http://www.it300.com/article-15263.html
2、http://blog.s135.com/dips
3、http://gearman.org/download

Sublime Text 2 插件 JS 格式化 JsFormat

没有评论

2012 年 07 月 01 日 at 上午 10:45分类:其他技术

在这里下载这插件包 https://github.com/jdc0589/JsFormat ,点左上角的zip就能下载
插件包放到sublime安装目录的Data\Packages目录中
重新打开sublime就能使用js格式化插件
使用方法:
1、快捷键:ctrl+alt+f
2、先用快捷键打开命令面板 “ctrl + shift + p”, 再输入 “Format: Javascript” 就可以使用格式化命令

linux上利用rsync来实现跨服务器间的数据同步和备份

2条评论

2011 年 12 月 27 日 at 下午 1:59分类:Linux | 其他技术

今天要用到这个rsync是因为在工作中要用到数据跨服务器调用的问题,我这边的情况是这样子的:我的服务器两台(A,B),原先的的数据都是放在A上面的,之前在A上面安装了SVN的服务器,那么这样子,我们把数据都已版本控制的形式放在svn的版本控制中,那么在windows中获取这些数据就比较简单了,但是现在我们新增了B服务器,想把我们的项目app放到B这个web服务器上面,但是又不装svn服务器,所以我一开始的做法是在B服务器上面安装了svn的客户端,然后去checkout A 服务器上面的svn版本,但是我发现这样子操作,恨死,因为我们开发的人很多,不知道有谁在什么时候提交了,而且都还要人为的去操作,狠不方便。我现在只想实现的是,当我在windows向A的svn服务器提交数据的时候,A服务器会自动的向B服务器同步数据。我知道在svn的办版本库中有个hooks文件夹,这个文件夹里面可以写一些钩子文件。但是我发现在这个里面执行的svn update不能操作到另外一台机器,也就是说只能操作本机器(A)的。不知道用svn来实现这个哪位高人会,求指点?(这里面可以有一种方法:那就是通过脚本去请求:我在钩子里面写一个shell脚本去请求B服务器的一个php文件,然后通过这个文件去执行shell命令。最好是不要用类似于定时执行的例行性任务这种)
后来通过网上找了下,说是可以通过rsync来实现这个功能,经过测试,确实是可以的,把过程记录下:
这里讲实现两个过程:1.让服务器A自动把数据通过不到服务器B(我需要的),2.从服务器B自动从A服务器更新
1:讲服务器A 自动把数据上传到B服务器
首先不管哪台机器,首先要确保rsync这个有安装,可以敲命令:# rsync –version来查看情况,如果没有安装,请自行安装吧
如果安装了,那么就进行如下操作:
a:配置rsyncd.conf
/etc/rsyncd.conf文件的内容(实际上,当我以A向服务器B同步数据时,A是一个客户端,不需要这个配置文件,只需要一个rsyncd.secrets的密码文件就可以了,如果当我是一B座服务器向A服务器更新数据时就需要这个配置文件了)

    uid = nobody
    gid = nobody
    max connections = 5
    read only = true
    #hosts allow = 202.207.177.180
    hosts allow = *
    transfer logging = true
    log format = %h %o %f %l %b
    log file = /var/log/rsyncd.log
    slp refresh = 300
    log file = /var/log/rsyncd.log
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsyncd.lock

    [dkcore]
    path = /home/web/www
    comment = DKCORE FIRST SERVER
    read only = false
    list = false
    auth users = fbbin
    setrcts file = /etc/rsyncd.secrets   #存放账号密码文件

b:配置密码文件/etc/rsyncd.secrets

binbin  #这是需要验证的密码

c:配置欢迎页面文件/etc/rsyncd.motd(实际上当A直接上传时,这个文件时不需要的,只有当A被当做服务器来请求连接时,才会用到)

Welcome to use the rsync services!

d:配置要上传的目标服务器的的/etc/rsyncd.conf文件
/etc/rsyncd.conf文件的内容

    uid = nobody
    gid = nobody
    max connections = 5
    read only = false
    hosts allow = *
    transfer logging = true
    log format = %h %o %f %l %b
    log file = /var/log/rsyncd.log
    slp refresh = 300
    log file = /var/log/rsyncd.log
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsyncd.lock

    [dkcore]
    path = /home/web/www
    comment = DKCORE FIRST SERVER
    read only = false
    list = false
    auth users = fbbin
    setrcts file = /etc/rsyncd.secrets   #存放账号密码文件

e:配置密码文件/etc/rsyncd.secrets

fbbin:binbin  #这是需要验证的用户名和密码密码需要在A服务器上面的rsyncd.secrets文件中写好。

f:配置欢迎页面文件/etc/rsyncd.motd

Welcome to use the dkcore

然后我们在B服务器上面启动rsync(我们是要把数据让A服务器自动上传到B服务器)

# rsync --daemon --config=/etc/rsyncd.conf

这个时候我们在A机器中运行一下命令就可以把A机器中/home/dkcore同步到B机器中的dkcore模块也就是/home/web/www中了

# rsync -avzuCP --delete --password-file=/etc/rsyncd.secrets /home/dkcore fbbin@192.168.12.253::dkcore

上面的/home/dkcore是要同步的本地(A)数据地址,后面的IP是同步到的目标ip和用户名以及模块,这些都是在配置文件中定义的!
那么我现在只需要把这个命令写在post-commit文件中就可以了!

======================================================================================
2:让服务器B自己去A上面更新文件
这个时候A就是服务器了,那么只需要把上面B那个配置拿来用可以了,把里面的path改成我要同步的本机地址:/home/dkcore,然后把密码文件改成和上面的B一样的就行了,欢迎文件可要可不要,然后就是B上面的,这个时候B是客户端,配置文件其实可以不用要,只需要个密码文件。此时B不需要启动服务器,但是A就需要启动服务了,命令:

# rsync --daemon --config=/etc/rsyncd.conf

OK,这时我们在B机器上面用如下命令就可以把A上面的指定目录更新到B的机器上面了。

# rsync -vrztopg --delete --password-file=/etc/rsyncd.secrets rsync://fbbin@192.168.12.183/dkcore /home/wwwroot/dkcore

上面的/home/wwwroot/dkcore是把数据更新到的本地物理地址,rsync://fbbin@192.168.12.183/dkcore是指183这台机器(A)上面的dkcore模块更新到本地的/home/wwwroot/dkcore目录中,其中的fbbin是在A机器中的conf文件中配置的。
要是想执行备份的话,那么就可以添加个crontab任务来执行这个命令就OK了!
搞定。。。
参考资料:
1.http://blog.lixiphp.com/solve-rsync-auth-failed-on-module/
2.http://apps.hi.baidu.com/share/detail/16876083