2009年8月19日星期三

网站不能访问了,有邮件发帖测试看看那

如题

--
==============================
博安天慧  何鹏
qq:36170498
msn:hepengking@hotmail.com
email:paul2smoon@gmail.com
        imusic.hp@gmail.com
==============================

Tucia - online photo editing service gives you some star treatment on the cheap


If you’ve ever wanted to get the same kind of photo retouching love that the stars get when they’re pictured on magazine covers, now’s your chance. Tucia.com is a new online service which offers professional re-touching of any photo by a team of international Photoshop experts.




All ya gotta do is upload your photos, add them to your project, fill in the instruction form and hand over the money via CC, Paypal or whatever. It will cost from $8.00 to $48.00 per image depending on complexity, and the more expensive ones will involve the very top retouching guys. 1700 designers, 24 hour turnaround for small jobs, and satisfaction guaranteed, what more could you ask for? Madonna? Pah, who she?




"Many problems, though, demand more sophisticated opearations, more creativity, more industry experience and a deeper understanding of how to represent an image. Our professional artists understand your instruction better than anyone else. They rely on clever hands and sophisticated software to bring you something that stands out."




tucia photo retouching





tucia photo retouching





tucia photo retouching

2009年4月28日星期二

PHP导入导出Excel方法小结

基本上导出的文件分为两种:
1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已。修改这种文件后再保存,通常会提示你是否要转换成Excel文件。
优点:简单。
缺点:难以生成格式,如果用来导入需要自己分别编写相应的程序。
2:Excel格式,与类Excel相对应,这种方法生成的文件更接近于真正的Excel格式。

如果导出中文时出现乱码,可以尝试将字符串转换成gb2312,例如下面就把$yourStr从utf-8转换成了gb2312:
$yourStr = mb_convert_encoding("gb2312", "UTF-8", $yourStr);

下面详细列举几种方法。
一、PHP导出Excel

1:第一推荐无比风骚的PHPExcel,官方网站: http://www.codeplex.com/PHPExcel
导入导出都成,可以导出office2007格式,同时兼容2003。
下载下来的包中有文档和例子,大家可以自行研究。
抄段例子出来:
/**
* PHPExcel
*
* Copyright (C) 2006 - 2007 PHPExcel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* @category PHPExcel
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2007 PHPExcel ( http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/lgpl.txt LGPL
* @version 1.5.0, 2007-10-23
*/

/** Error reporting */
error_reporting(E_ALL);

/** Include path **/
set_include_path(get_include_path() . PATH_SEPARATOR . '../Classes/');

/** PHPExcel */
include 'PHPExcel.php';

/** PHPExcel_Writer_Excel2007 */
include 'PHPExcel/Writer/Excel2007.php';

// Create new PHPExcel object
echo date('H:i:s') . " Create new PHPExcel object\n";
$objPHPExcel = new PHPExcel();

// Set properties
echo date('H:i:s') . " Set properties\n";
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw");
$objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw");
$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document");
$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document");
$objPHPExcel->getProperties()->setDescrīption("Test document for Office 2007 XLSX, generated using PHP classes.");
$objPHPExcel->getProperties()->setKeywords("office 2007 openxml php");
$objPHPExcel->getProperties()->setCategory("Test result file");


// Add some data
echo date('H:i:s') . " Add some data\n";
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello');
$objPHPExcel->getActiveSheet()->setCellValue('B2', 'world!');
$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Hello');
$objPHPExcel->getActiveSheet()->setCellValue('D2', 'world!');

// Rename sheet
echo date('H:i:s') . " Rename sheet\n";
$objPHPExcel->getActiveSheet()->setTitle('Simple');


// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);


// Save Excel 2007 file
echo date('H:i:s') . " Write to Excel2007 format\n";
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save(str_replace('.php', '.xlsx', __FILE__));

// Echo done
echo date('H:i:s') . " Done writing file.\r\n";


2、使用pear的Spreadsheet_Excel_Writer类
下载地址: http://pear.php.net/package/Spreadsheet_Excel_Writer
此类依赖于OLE,下载地址:http://pear.php.net/package/OLE
需要注意的是导出的Excel文件格式比较老,修改后保存会提示是否转换成更新的格式。
不过可以设定格式,很强大。
require_once 'Spreadsheet/Excel/Writer.php';

// Creating a workbook
$workbook = new Spreadsheet_Excel_Writer();

// sending HTTP headers
$workbook->send('test.xls');

// Creating a worksheet
$worksheet =& $workbook->addWorksheet('My first worksheet');

// The actual data
$worksheet->write(0, 0, 'Name');
$worksheet->write(0, 1, 'Age');
$worksheet->write(1, 0, 'John Smith');
$worksheet->write(1, 1, 30);
$worksheet->write(2, 0, 'Johann Schmidt');
$worksheet->write(2, 1, 31);
$worksheet->write(3, 0, 'Juan Herrera');
$worksheet->write(3, 1, 32);

// Let's send the file
$workbook->close();
?>

3:利用smarty,生成符合Excel规范的XML或HTML文件
支持格式,非常完美的导出方案。不过导出来的的本质上还是XML文件,如果用来导入就需要另外处理了。
详细内容请见rardge大侠的帖子:http://bbs.chinaunix.net/viewthread.php?tid=745757

需要注意的是如果导出的表格行数不确定时,最好在模板中把"ss:ExpandedColumnCount="5" ss:ExpandedRowCount="21""之类的东西删掉。

4、利用pack函数打印出模拟Excel格式的断句符号,这种更接近于Excel标准格式,用office2003修改后保存,还不会弹出提示,推荐用这种方法。
缺点是无格式。
// Send Header
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");;
header("Content-Disposition: attachment;filename=test.xls ");
header("Content-Transfer-Encoding: binary ");
// XLS Data Cell

xlsBOF();
xlsWriteLabel(1,0,"My excel line one");
xlsWriteLabel(2,0,"My excel line two : ");
xlsWriteLabel(2,1,"Hello everybody");

xlsEOF();

function xlsBOF() {
echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
return;
}
function xlsEOF() {
echo pack("ss", 0x0A, 0x00);
return;
}
function xlsWriteNumber($Row, $Col, $Value) {
echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
echo pack("d", $Value);
return;
}
function xlsWriteLabel($Row, $Col, $Value ) {
$L = strlen($Value);
echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
echo $Value;
return;
}
?>
不过笔者在64位linux系统中使用时失败了,断句符号全部变成了乱码。

5、使用制表符、换行符的方法
制表符"\t"用户分割同一行中的列,换行符"\t\n"可以开启下一行。
header("Content-Type: application/vnd.ms-execl");
header("Content-Disposition: attachment; filename=myExcel.xls");
header("Pragma: no-cache");
header("Expires: 0");
/*first line*/
echo "hello"."\t";
echo "world"."\t";
echo "\t\n";

/*start of second line*/
echo "this is second line"."\t";
echo "Hi,pretty girl"."\t";
echo "\t\n";
?>

6、使用com
如果你的PHP可以开启com模块,就可以用它来导出Excel文件
$filename = "c:/spreadhseet/test.xls";
$sheet1 = 1;
$sheet2 = "sheet2";
$excel_app = new COM("Excel.application") or Die ("Did not connect");
print "Application name: {$excel_app->Application->value}\n" ;
print "Loaded version: {$excel_app->Application->version}\n";
$Workbook = $excel_app->Workbooks->Open("$filename") or Die("Did not open $filename $Workbook");
$Worksheet = $Workbook->Worksheets($sheet1);
$Worksheet->activate;
$excel_cell = $Worksheet->Range("C4");
$excel_cell->activate;
$excel_result = $excel_cell->value;
print "$excel_result\n";
$Worksheet = $Workbook->Worksheets($sheet2);
$Worksheet->activate;
$excel_cell = $Worksheet->Range("C4");
$excel_cell->activate;
$excel_result = $excel_cell->value;
print "$excel_result\n";
#To close all instances of excel:
$Workbook->Close;
unset($Worksheet);
unset($Workbook);
$excel_app->Workbooks->Close();
$excel_app->Quit();
unset($excel_app);
?>
一个更好的例子: http://blog.chinaunix.net/u/16928/showart_387171.html

一、PHP导入Excel

1:还是用PHPExcel,官方网站: http://www.codeplex.com/PHPExcel。

2:使用PHP-ExcelReader,下载地址: http://sourceforge.net/projects/phpexcelreader
举例:
require_once 'Excel/reader.php';

// ExcelFile($filename, $encoding);
$data = new Spreadsheet_Excel_Reader();

// Set output Encoding.
$data->setOutputEncoding('utf8');

$data->read(' jxlrwtest.xls');


error_reporting(E_ALL ^ E_NOTICE);

for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
echo "\"".$data->sheets[0]['cells'][$i][$j]."\",";
}
echo "\n";
}

?>

2009年4月9日星期四

php调用webservice实例

  NuSoap是PHP环境下的WebService编程工具,用于创建或调用WebService。它是一个开源软件,是完全采用PHP语言编写的、通过HTTP收发SOAP消息的一系列PHP类,由NuSphere Corporation(http://dietrich.ganx4.com/nusoap/ )开发。NuSOAP的一个优势是不需要扩展库的支持,这种特性使得NuSoap可以用于所有的PHP环境,不受服务器安全设置的影响。  

方法一:直接调用

'username', 'strPassword'=>MD5('password'));

// 调用远程函数
$aryResult = $client->call('login',$aryPara);

//echo $client->debug_str;
/*
if (!$err=$client->getError()) {
print_r($aryResult);
} else {
print "ERROR: $err";
}
*/

$document=$client->document;
echo <<


$document


SoapDocument;

?>


方法二:代理方式调用

getProxy();

//调用远程函数
$aryResult=$proxy->login('username',MD5('password'));

//echo $client->debug_str;
/*
if (!$err=$proxy->getError()) {
print_r($aryResult);
} else {
print "ERROR: $err";
}
*/

$document=$proxy->document;
echo <<


$document


SoapDocument;

?>


  许多使用NuSoap 调用.NET WebService或J2EE WebService的朋友可能都遇到过中文乱码问题,下面介绍这一问题的出现的原因和相应的解决方法。

  NuSoap调用WebService出现乱码的原因:

  通常我们进行WebService开发时都是用的UTF-8编码,这时我们需要设置:



$client->soap_defencoding = 'utf-8';


  同时,需要让xml以同样的编码方式传递:

$client->xml_encoding = 'utf-8';


  至此应该是一切正常了才对,但是我们在输出结果的时候,却发现返回的是乱码。

  NuSoap调用WebService出现乱码的解决方法:

  实际上,开启了调试功能的朋友,相信会发现$client->response返回的是正确的结果,为什么$result = $client->call($action, array('parameters' => $param)); 却是乱码呢?

  研究过NuSoap代码后我们会发现,当xml_encoding设置为UTF-8时,NuSoap会检测decode_utf8的设置,如果为true,会执行 PHP 里面的utf8_decode函数,而NuSoap默认为true,因此,我们需要设置:

$client->soap_defencoding = 'utf-8';
$client->decode_utf8 = false;
$client->xml_encoding = 'utf-8';

2009年4月6日星期一

论坛网址

http://groups.google.com/group/boentel

2009年3月31日星期二

FINDSTR正则表达式的基本用法

1.findstr . 2.txt 或 Findstr "." 2.txt
从文件2.txt中查找任意字符,不包括空字符或空行
====================

2.findstr .* 2.txt 或 findstr ".*" 2.txt
从文件2.txt中查找任意字符包括空行和空字符
====================

3.findstr "[0-9]" 2.txt
从文件2.txt中查找包括数字0-9的字符串或行
====================

4.findstr "[a-zA-Z]" 2.txt
从文件2.txt中查找包括任意字符的字符串或行
====================

5.findstr "[abcezy]" 2.txt
从文件2.txt中查找包括a b c e z y字母的字符串或行
====================

6.findstr "[a-fl-z]" 2.txt
从文件2.txt中查找小写字符a-f l-z的字符串,但不包含g h I j k这几个字母。
====================

7.findstr "M[abc][hig]Y" 2.txt
从文件2.txt中可以匹配 MahY , MbiY, MahY等…..
====================

8. ^和$符号的应用
^ 表示行首,"^step"仅匹配 "step hello world"中的第一个单词
$ 表示行尾,"step<# WebPartBody #>quot;仅匹配 "hello world step"中最后一个单词
====================

9.finstr "[^0-9]" 2.txt
如果是纯数字的字符串或者行便过滤掉,例如2323423423 这样的字符串,如果是345hh888这样的形式就不成了。
====================

10.findstr "[^a-z]" 2.txt
同上,如果是纯字母的字符串或者行便过滤掉,例如 sdlfjlkjlksjdklfjlskdf这样的字符,如果是sdfksjdkf99999这样的形式,掺杂着数字就不成了
====================

11.*号的作用
前面已经说过了 ".*"表示搜索的条件是任意字符,*号在正则表达式中的作用不是任何字符,而是表示左侧字符或者表达式的重复次数,*号表示重复的次数为零次或者多次。
====================

12.findstr "^[0-9]*$" 2.txt
这个是匹配找到的纯数字,例如 234234234234,如果是2133234kkjl234就被过滤掉了。
Findstr "^[a-z]*$" 2.txt
这个是匹配找到的纯字母,例如 sdfsdfsdfsdf,如果是213sldjfkljsdlk就被过滤掉了
如果在搜索条件里没有*号,也就是说不重复左侧的搜索条件,也就是[0-9] [a-z]那只能匹配字符串的第一个字符也只有这一个字符,因为有行首和行尾的限制,"^[0-9]<# WebPartBody #>quot;第一个字符如果是数字就匹配,如果不是就过滤掉,如果字符串是 9 就匹配,如果是98或者9j之类的就不可以了。
=====================

13. "\<…\>"这个表达式的作用
这个表示精确查找一个字符串,\表示字的结束位置
echo hello world computer|findstr "\"这样的形式
echo hello worldcomputer|findstr "\" 这样的形式就不成了,他要找的是 "computer"这个字符串,所以不可以。
echo hello worldcomputer|findstr ".*computer\>"这样就可以匹配了

2009年3月29日星期日

window下如何配置sybase使用最大内存

在32位的操作系统如win2K上,操作系统能管理的内存为4GB,sybase使用的总内存有2G限制。目前大多数unix服务器都能为数据库配上4G物理内存甚至更多,但无论你为系统配置多大的物理内存,正常情况下都不能使sybase使用超过2G的内存,从而造成系统资源浪费。那么,有没有什么办法能使运行在windows系统上的sybase使用超过2G的内存呢?windows 提供了一种叫4GT(4G Tuning)的技术,使得sybase使用超过2G(不超过3G)的内存成为可能。而为了让应用程序使用更大的内存,还有一种PSE36的技术,可以让sybase使用超过3G的内存。这里,介绍如何使用4GT特性让sybase使用超过2G的内存。

1。打开操作系统的3G开关
首先修改boot.ini文件,在C盘根目录下。加入/3G参数:
[boot loader]
timeout=8
default=multi(0)disk(0)rdisk(0)partition(1)
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)="Microsoft Windows 2000 Advanced Server” /3G /fastdetect
然后从起机器,使/3G参数生效

2。将NT的虚拟内存调整到3G以上。
这一步不用多说了,右键单击我的电脑选属性。


3。打开sybase使用超过2G内存的开关
进入/ASE-12_5/bin下,备份sqlsrvr.exe。
在/ASE-12_5/bin目录下执行:imagecfg sqlsrvr
imagecfg.exe可以从网上下载,我就是在google上搜索的,http://www.robpol86.com/tutorial ... g的安装和使用方法。
执行后如果显示下面的内容则说明2G开关未打开
sqlsrvr.exe contains the following configuration information:
Subsystem Version of 4.0
Stack Reserve Size: 0x20000
Stack Commit Size: 0x4
如果2G开关未打开,则执行:imagecfg -l sqlsrvr.exe
再执行imagecfg sqlsrvr.exe,应显示下面内容:
sqlsrvr.exe updated with the following configuration information:
Subsystem Version of 4.0
Image can handle large (>;2GB) addresses
Stack Reserve Size: 0x20000
Stack Commit Size: 0x4
此时sybase的2G开关已经被打开。

4。配置数据库参数
打开数据库配置文件,修改total memory到2.2G。
修改shared memory starting address参数到23662592(十进制的数)
重启数据库。

以上是配置的全过程。下面解释一下为什么配置totol memory到2.2G和23662592的来源。
shared memory starting address 参数并不是大小,而是一个地址,它指定sybase从什么地方开始使用内存。在NT操作系统可以管理的4G内存中,0到7fffffff是供应用程序使用的,80000000到FFFFFFFF是保留给操作系统使用的。如果3G开关打开,0到BFFFFFFF提供给应用程序使用,C0000000到FFFFFFFF保留给操作系统。
应用程序使用内存是从0开始的,0到FFF提供给guard page,至于什么叫guard page本人也不是很清楚,从字面理解吧。
sqlsrvr.exe从400000开始占用内存,很多lib文件,比如libct、libsrv被装载在400000的上下,那么从400000以上的某个地方起,我们边得到一个整块的空间用于应用程序。
默认情况下(shared memory starting address 参数为default时),sybase的total memory从20000000开始使用内存,那么从20000000到7FFFFFFF就有1.5G空间,如果打开3G参数则是从20000000到BFFFFFFF,即2.5G空间。这就是为什么在nt上的sybase的total memory无法配过1.5的原因所在。
但实时上,这1.5或2.5的空间并不能完全由sybase支配,系统会在内存顶端,也就是从7FFFFFFF开始向下装载一些dll文件,因此sybase在shared memory starting address 参数为default时可用空间在20000000到某个比7FFFFFFF小的值,也就是1.4G左右吧。
可见7FFFFFFF一段是个死的限制,如果想让sybase使用更多的内存只有打破shared memory starting address 参数从20000000开始的限制。配置shared memory starting address 参数的目的就在于此。
配置shared memory starting address 参数等于23662592的目的就在于使sybase从地址低于20000000的地方开始使用内存,23662592转换成16进制为1691000,配置这个参数后,sybase可用空间就变为从1691000到7FFFFFFF,也就是1.9G,如果打开了3G参数,则是从1691000到BFFFFFFF,也就是2.9G。
那么为什么推荐23662592呢?这是sybase公司的经验值,如果这个值太低则会引起操作系统在分配内存时的错误,因为空间都被压缩的很小了嘛。

2009年3月23日星期一

关于TOMCAT的优化配置设置(转自网络)

1.精简Tomcat和配置文件

1.删除不需要的管理应用和帮助应用,提高tomcat安全性。

# 删除webapps下所有文件

# rm –fr $CATALINA_HOME/webapps/*

# 删除server/wenapps下所有文件

# rm –fr $CATALINA_HOME/server/webapps/*

2.精简sever.xml配置文件

使用tomcat发布版本中的最小配置文件,提高性能,如果有功能上的需求,在逐个的加入功能配置。

# 备份原来的server.xmlserver.xml_bak

# mv server.xml server.xml_bak

# 复制server-minimal.xmlserver.xml

# cp server-minimal.xml server.xml

2.连接器优化

$CATALINA_HOME/conf/server.xml配置文件中的Connetctor节点,和连接数相关的参数配置和优化。

maxThreads

Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。默认值200 可以根据机器的时期性能和内存大小调整,一般可以在400-500。最大可以在800左右。

acceptCount

  指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。默认值10

minSpareThreads
Tomcat初始化时创建的线程数。默认值4

maxSpareThreads
一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认值50

enableLookups

是否反查域名,默认值为true。为了提高处理能力,应设置为false

connnectionTimeout

网络连接超时,默认值20000,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。(本系统由于与后台系统接口超时时间较长,使用设置为60000)

maxKeepAliveRequests

保持请求数量,默认值100

bufferSize
输入流缓冲大小,默认值2048 bytes


compression

压缩传输,取值on/off/force,默认值off

其中和最大连接数相关的参数为maxThreadsacceptCount。如果要加大并发连接数,应同时加大这两个参数。web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows2000个左右,Linux1000个左右。

Tomcat中如何禁止和允许列目录下的文件

$CATALINA_HOME/conf/web.xml中,把listings参数设置成false即可,如下:


    listings
    false

    ...

具体操作

# vi $CATALINA_HOME/conf/server.xml

修改用于AJP的连接:

为:

maxTreads="500" minSpareThreads="10" maxSpareThreads="50"

acceptCount="50" connectionTimeout="60000"

enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

修改通用连接:

为:

maxTreads="500" minSpareThreads="10" maxSpareThreads="50"

acceptCount="50" connectionTimeout="60000"

enableLookups="false" redirectPort="8443" protocol="AJP/1.3"

compression="on"

compressionMinSize="2048"

noCompressionUserAgents="gozilla, traviata"

compressableMimeType="text/html,text/xml"/>

修改主机和应用配置:

为:

unpackWARs="true" autoDeploy="true"

xmlValidation="false" xmlNamespaceAware="false">

3.优化JDK

Tomcat默认可以使用的内存为128MB,Windows,在文件{tomcat_home}/bin/catalina.batUnix下,在文件$CATALINA_HOME/bin/catalina.sh的前面,增加如下设置:

JAVA_OPTS='$JAVA_OPTS -Xms[初始化内存大小] -Xmx[可以使用的最大内存]

设置环境变量:export JAVA_OPTS=”$JAVA_OPTS -Xms[初始化内存大小] -Xmx[可以使用的最大内存]”

一般说来,你应该使用物理内存的 80% 作为堆大小。如果本机上有Apache服务器,可以先折算Apache需要的内存,然后修改堆大小。建议设置为70%;建议设置[[初始化内存大小]等于[可以使用的最大内存],这样可以减少平凡分配堆而降低性能。

本例使用加入环境变量的方式:

# vi /etc/profile

加入:export JAVA_OPTS=”$JAVA_OPTS -Xms700 –Xmx700

# source /etc/profile

2009年2月17日星期二

宝宝取名及名字评分

何睿宣 90
何夏天 85
何叶紫 76
何江晨 90
何顺顺 81
何静孜 96
何谕辛
何岳萱 99.5

2009年2月12日星期四

NFS /etc/exports

Nfs服务器的配置,配置文件/etc/exports:
Exports文件中一些选项的含义
选项 说明
Ro 该主机对该共享目录有只读权限
Rw 该主机对该共享目录有读写权限
Root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户
No_root_squash 客户机用root访问该共享文件夹时,不映射root用户
All_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户
Anonuid 将客户机上的用户映射成指定的本地用户ID的用户
Anongid 将客户机上的用户映射成属于指定的本地用户组ID
Sync 资料同步写入到内存与硬盘中
Async 资料会先暂存于内存中,而非直接写入硬盘
Insecure 允许从这台机器过来的非授权访问
例/ zhang (rw) wang (rw,no_root_squash) 表示共享服务器上的根目录(/)只有zhang和wang两台主机可以访问,且有读写权限;zhang主机用root用户身份访问时,将客户机的root用户映射成服务器上的匿名用户(root_squash,该参数为缺省参数),相当于在服务器使用nobody用户访问目录;wang主机用root用户身份访问该共享目录时,不映射root用户(no_root_squash),即相当于在服务器上用root身份访问该目录
/root/share/ 192.168.1.20 (rw,insecure,sync,all_squash) 表示共享服务器上的/root/share/目录只有192.168.1.20主机可以访问,且有读写权限;此主机用任何身份访问时,将客户机的用户都映射成服务器上的匿名用户(all_squash),相当于在服务器上用nobody用户访问该目录(若客户机要在该共享目录上保存文件(即写操作),则服务器上的nobody用户对该目录必须有写的权限)
/home/ljm/ *.gdfs.edu.cn (rw,insecure,sync,all_squash) 表示共享/home/ljm/目录,*.gdfs.edu.cn域中所有的主机都可以访问该目录,且有读写权限
/home/share/ .gdfs.edu.cn (ro,sync,all_squash,anonuid=student,anongid=math) 表示共享目录/home/share/,*.gdfs.edu.cn域中的所有主机都可以访问,但只有只读的权限,所有用户都映射成服务器上的uid为student、gid为math的用户
启动nfs后又修改了/etc/exports,不用重启该服务,使用exports命令即可:
Exports [-aruv]
-a 全部mount或umount文件/etc/exports中的内容
-r 重新mount文件/etc/exports中的共享内容
-u umount目录
-v 在export的时候,将详细的信息输出到屏幕上
例[root@localhost ~]#exports –rv 全部重新export一次
[root@localhost ~]#exports –au 全部卸载
Nfs客户端的配置:
若是临时使用可直接执行mount命令:mount servername(or IP): 共享目录 本地挂载目录
若客户机启动就自动挂载服务器的共享目录,则需修改客户机上的/etc/fstab文件
/etc/fstab格式:(192.168.233.139:/share /mnt nfs defaults 0 2)
Fs_spec fs_file fs_type fs_options fs_dump fs_pass
Fs_spec:定义希望加载的文件系统所在的设备或远程文件系统,对于nfs则设为IP:/共享目录
Fs_file:本地挂载点
Fs_type:挂载类型
Fs_options:挂载参数
Fs_dump:该选项被“dump”命令使用来检查一个文件系统该以多快频率进行转储,若不需转储即为0
Fs_pass:该字段被fsck命令使用来决定在启动时需要被扫描的文件系统的顺序,根文件系统“/”对应该字段值为1,其他文件系统为2,若该文件系统无需在启动时被扫描则为0
安全提醒:确保网络安全,使用nfs时结合tcp_wrappers来限制使用范围(如只想192.168.5.123主机可挂载nfs服务器上的共享目录),另外还可结合iptables来加强安全性。
[root@localhost ~]#vi /etc/hosts.allow
Portmap:192.168.5.123:allow
[root@localhost ~]#vi /etc/hosts.deny
Portmap:ALL:deny
关机时若nfs server上有client联机时,先关掉portmap与nfs两个系统服务。若无法正确将此2项服务关掉,用netstat –utlp找出PID,然后用kill杀掉进程才关机
Nfsstat查看NFS的运行状态,调整NFS运行大有帮助
Rpcinfo查看rpc执行信息,用于检测rpc运行情况
挂载格式:mount –t nfs hostname(or IP):/directory /mount point
卸载:umount /本地挂载目录(本地client卸载方法,但用exports –au为server卸载)
Showmount –e IP(查看NFS服务器上共享了那些目录)Showmount –a IP(用于nfs server上,显示已经mount上本机NFS服务器的client(客户机))

2009年2月11日星期三

Sybase中bcp的用法

  BCP是SYBASE公司提供专门用于数据库表一级数据备份的工具。

  一般存放在所安装的ASE或者Open Client 的BIN目录中。

  12版本以前的ASE,bcp存放目录为 $SYBASE/bin

  12版本(含12版本)以后存放目录为 $SYBASE/OCS-12_x/bin

  其中$SYBASE为SYBASE安装目录,12_x代表12.0、12.5版本,显示为12_0或者12_5

  可执行文件名称为bcp.EXE

  参数列表如下:(可用 bcp – 得到)

  usage: bcp [[database_name.]owner.]table_name[:slice_number] {in | out} datafile

  [-m maxerrors] [-f formatfile] [-e errfile]

  [-F firstrow] [-L lastrow] [-b batchsize]

  [-n] [-c] [-t field_terminator] [-r row_terminator]

  [-U username] [-P password] [-I interfaces_file] [-S server]

  [-a display_charset] [-q datafile_charset] [-z language] [-v]

  [-A packet size] [-J client character set]

  [-T text or image size] [-E] [-g id_start_value] [-N] [-X]

  [-M LabelName LabelValue] [-labeled]

  [-K keytab_file] [-R remote_server_principal]

  [-V [security_options]] [-Z security_mechanism] [-Q]

  常用数据备份格式为:

  bcp dbname..tablename out c:\temp\filename -Usa -Ppassword –Sservername –c

  即可。

  其中 –U后为SYBASE登录名称,–P后为SYBASE登录口令,–S后为SYBASE服务名称,–c代表使用可见文本方式导出数据

  如果为数据恢复只需要将out 替换为 in 即可。

  可用如下方法生成一个可以一次导出一个数据库中所有表的数据的执行脚本。

  编辑一个如下文本文件 文件名称例为 bcpscript:

  use dbname 选中将要导出数据的数据库

  go

  select 'bcp dbname..' + name + ' out c:\temp\' + name + ' -Usa -P -Ssybcdsrv -c' from sysobjects where type = 'U' 在sysobjects系统表中type为U的表为用户表,系统表为S。

  go

  用如下格式执行:

  isql –Usa –Ppassword –Sservername –i bcpscript –o bcpout.bat

  i参数后为输入文件,o参数后文件为输入文件执行后得到的输出文件。

  执行后可以得到一个后缀名为 BAT 的批处理文件(在unix下则生成一个shell文件并更改相应的执行权限),可直接执行。即在指定的目录下导出了相应的数据文件。一个表的数据为一个文件。如在UNIX下则可不用BAT后缀。

  备份得到的数据文件如果需要重新往数据库中恢复,只需要将上面操作步骤中BCP命令中的out 参数换为in参数即可。

  注意:在对正式数据做操作前最好先作一些测试。

  另外,如果牵涉到使用bcp进行字符集的更改,可以采用 –J charset 参数进行

  关于BCP等工具的具体使用指南,请参见SYBASE相关文档。

  针对系统移植所需做的工作,应该有如下几个步骤:

  1. 安装新环境的硬件环境,包括网络,硬盘状况;

  2. 安装新环境的操作系统,包括Service Pack;

  3. 安装相同版本的SYBASE数据库产品,包括补丁;

  4. 添加数据库用户,设备等相关信息,应与老系统中一致

  5. 创建新系统数据库;

  6. 利用你所拥有的表脚本或者通过SYBASE CENTRAL中的生成DDL功能,将老系统中的建表脚本导出,生成数据库中的表.最好将建表脚本与建立表上约束(主键,外键等)的脚本分开,先在表上不建约束,在数据导入后,再加上.;

  7. BCP OUT 老系统中数据,根据上面提到的方法;

  8. 运行建立其他对象的脚本,包括索引,主键,外键及存储过程,触发器,缺省等;

  9. 在新系统中对需要更改的表结构做更改,或者添加新表;

  10. 测试应用系统是否工作正常.

2009年1月8日星期四

各个银行卡异地取款手续费

牡丹灵通卡 中国工商银行
异地ATM取款:异地本行ATM跨行取款每笔取款金额的1%,最低1元,最高50元;异地跨行ATM取款每笔手续费为2元+取款金额的1%,1%部分最低1元,最高50元;
异地存款手续费:按存款金额的0.5%收取手续费,最低1元,最高50元。
异地取款手续费:按取款金额的0.5%收取手续费,最低1元,最高50元。

金穗借记卡 中国农业银行
异地ATM取款:异地本行ATM跨行取款每笔取款金额的1%,最低1元;异地跨行ATM取款每笔手续费为2元+取款金额的1%;
异地存款手续费:省内异地柜台:交易金额的0.5%,最低1元,最高50元;跨省异地柜台:交易金额的0.5%,最低1元,最高100元。
异地取款手续费:省内异地柜台:交易金额的1%,最低1元,最高50元;跨省异地柜台:交易金额的1%,最低1元,最高100元。

长城电子借记卡 中国银行
异地ATM取款:异地本行ATM跨行取款每笔10元;异地跨行ATM取款每笔手续费为12元;
异地存款手续费:异地本行存款只能办理汇款按当地电汇标准收取
异地取款手续费:只能在异地ATM机上取款

龙卡储蓄卡 中国建设银行
异地ATM取款:异地本行ATM跨行取款每笔取款金额的1%,最低2元;异地跨行ATM取款每笔手续费为2元+取款金额的1%,1%部分最低2元;
异地存款手续费:按存款金额的0.5%收取手续费,最低2元,最高50元。
异地取款手续费:按取款金额的0.5%收取手续费,最低2元,不设上限。

一卡通 招商银行
异地ATM取款:异地本行ATM跨行取款每笔取款金额的0.5%;异地跨行ATM取款每笔手续费为2元+取款金额的0.5%;
异地存款手续费:按存款金额的0.5%收取手续费。
异地取款手续费:按取款金额的0.5%收取手续费。

太平洋借记卡 交通银行
异地ATM取款:异地本行ATM跨行取款每笔取款金额的0.8%;异地跨行ATM取款每笔手续费为2元+取款金额的0.8%;
异地存款手续费:存款金额的万分之五,最低10元,最高50元
异地取款手续费:取款金额的1%,最低10元,最高100元

华夏卡 华夏银行
异地ATM取款:异地本行ATM机取款每笔收取手续费1元;异地跨行ATM机取款每笔收取手续费2元;
异地存款手续费:按存款金额的0.1%收取手续费,最高10元。
异地取款手续费:按取款金额的0.5%收取手续费。

东方借记卡 上海浦东发展银行
异地ATM取款:0元
异地存款手续费:0元
异地取款手续费:0元

阳光卡 中国光大银行
异地ATM取款:异地本行和跨行取款一律收取0.5%的手续费,最低5元,最高50元
异地存款手续费:按交易金额的0.5%收取手续费,最低2元,最高20元
异地取款手续费:按交易金额的0.5%收取手续费,最低5元,最高50元

民生借记卡 中国民生银行
异地ATM取款:5元/笔
异地存款手续费:0元
异地取款手续费:交易金额0.3%,最低5元

中信借记卡 中信实业银行
异地ATM取款:异地跨行收款0.5%的手续费
异地存款手续费:按交易金额的0.5%收取手续费,最高10元
异地取款手续费:按交易金额的0.5%收取手续费,最高200元

兴业卡 兴业银行
异地ATM取款:同城跨行ATM机取款前三笔免收手续费,第四笔开始每笔2元;异地本行ATM机取款免收手续费;异地跨行ATM机取款厦门、深圳、南京不收手续费,其他城市前三笔不收手续费从第四笔开始每笔收取手续费2元;
异地存款手续费:存款金额的0.1%收取手续费,最低1元,最高20元。
异地取款手续费:取款金额的0.3%收取手续费,最高500元。

理财通卡 广东发展银行
异地ATM取款:异地跨行收款1%的手续费
异地存款手续费:存款金额的万分之五,最高20元
异地取款手续费:取款金额的1%,最高10元

2009年1月5日星期一

CMD/DOS下符号的作用参考(转自DOS联盟)

因关于DOS符号的总结很少,所以根据[1],经过几次整理之后,写了下面这个《CMD/DOS符号参考》,推荐新手好好看看,老手温习。

标题:[整理参考] CMD/DOS下符号的作用参考
作者:lxmxn [at] bbs.cn-dos.net
时间:2007-5-27
邮箱:lxmxn520[at]163.com
说明:1、转帖请注明原帖出处属于中国DOS联盟(www.cn-dos.net/forum);
   2、欢迎大家补充还未说明到的符号;
   3、有任何错误还请不吝指出;
   4、特别感谢 qzwqzw 对此资料提出的补充和建议。

正文开始:
__________________________________________________________________________________________
            一、单符号
~
① 在for中表示使用增强的变量扩展。
② 在%var:~n,m%中表示使用扩展环境变量指定位置的字符串。
③ 在set/a中表示一元运算符,将操作数按位取反。

!
① 在set /a中一元运算符,表示逻辑非。比如set /a a=!0,这时a就表示逻辑1。

@
① 隐藏命令行本身的回显,常用于批处理中。

$
① 在findstr命令里面表示一行的结束。
② 在prompt命令里面,表示将其后的字符转义(符号化或者效果化)。

%
① 在set /a中的二元运算符,表示算术取余。
② 命令行环境下,在for命令in前,后面接一个字符(可以是字母、数字或者一些特定字符),表示指定一个循环或者遍历指标变量。
③ 批处理中,后接一个数字表示引用本批处理当前执行时的指定的参数。
④ 其它情况下,%将会被脱去(批处理)或保留(命令行)

^
① 取消特定字符的转义作用,比如& > < ! "等,但不包括%。比如要在屏幕显示一些特殊的字符,比如> >> ^ &等符号时,就可以在其前面加一个^符号来显示这个^后面的字符了,^^就是显示一个^,^就是显示一个字符了;
② 在set/a中的二元运算符,表示按位异或。
③ 在findstr/r的[]中表示不匹配指定的字符集。

&
① 命令连接字符。比如我要在一行文本上同时执行两个命令,就可以用&命令连接这两个命令。
② 在set/a中是按位与。

*
① 代表任意个任意字符,就是我们通常所说的"通配符";比如想在c盘的根目录查找c盘根目录里所有的文本文件(.txt),那么就可以输入命令"dir c:\*.txt"。
② 在set /a中的二元运算符,表示算术乘法。
③ 在findstr/r中表示将前一个字符多次匹配。

-
① 范围表示符,比如日期的查找,for命令里的tokens操作中就可以用到这个字符。
② 在findstr/r中连接两个字符表示匹配范围。
③ -跟在某些命令的/后表示取反向的开关。
④ 在set /a中:
1.表示一个负数。
2.表示算术减运算。

+
① 主要是在copy命令里面会用到它,表示将很多个文件合并为一个文件,就要用到这个+字符了。
② 在set/a中的二元运算符,表示算术加法。

:
① 标签定位符,表示其后的字符串为以标签,可以作为goto命令的作用对象。比如在批处理文件里面定义了一个":begin"标签,用"goto begin"命令就可以转到":begin"标签后面来执行批处理命令了。
② 在%var:string1=string2%中分隔变量名和被替换字串关系。


① 管道符,就是将上一个命令的输出,作为下一个命令的输入."dir /a/b more"就可以逐屏的显示dir命令所输出的信息。
② 在set/a中的二元运算符,表示按位或。
③ 在帮助文档中表示其前后两个开关、选项或参数是二选一的。

/
① 表示其后的字符(串)是命令的功能开关(选项)。比如"dir /s/b/a-d"表示"dir"命令指定的不同的参数。
② 在set/a中表示除法。

>
① 命令重定向符,将其前面的命令的输出结果重新定向到其后面的设备中去,后面的设备中的内容被覆盖。比如可以用"dir > lxmxn.txt"将"dir"命令的结果输出到"lxmxn.txt"这个文本文件中去。
② 在findstr/r中表示匹配单词的右边界,需要配合转义字符\使用。

<
① 将其后面的文件的内容作为其前面命令的输入。
② 在findstr/r中表示匹配单词的左边界,需要配合转义字符\使用。

=
① 赋值符号,用于变量的赋值。比如"set a=windows"的意思意思是将"windows"这个字符串赋给变量"a"。
② 在set/a中表示算术运算,比如"set /a x=5-6*5"。

\
① 这个"\"符号在有的情况下,代表的是当前路径的根目录.比如当前目录在c:\windows\system32下,那么你"dir \"的话,就相当与"dir c:\"。
② 在findstr/r中表示正则转义字符。

,
① 在set /a中表示连续表达式的分割符。
② 在某些命令中分割元素。

.
① 在路径的\后紧跟或者单独出现时:
一个.表示当前目录。
两个.表示上一级目录。
② 在路径中的文件名中出现时:
最后的一个.表示主文件名与扩展文件名的分隔。

?
① 在findstr/r中表示在此位置匹配一个任意字符。
② 在路径中表示在此位置通配任意一个字符。
③ 紧跟在/后表示获取命令的帮助文档。

__________________________________________________________________________________________

            二、多符号(符号不能分隔)

&&
① 连接两个命令,当&&前的命令成功时,才执行&&后的命令。


① 连接两个命令,当前的命令失败时,才执行后的命令。

>&
① 将一个句柄的输出写入到另一个句柄的输入中。

<&
① 从一个句柄读取输入并将其写入到另一个句柄输出中。

%%
① 两个连续的%表示在预处理中脱为一个%。
② 批处理中,在for语句的in子句之前,连续两个%紧跟一个字符(可以是字母、数字和一些特定字符),表示指定一个循

环或者遍历指标变量。
③ 批处理中,在for语句中,使用与in之前指定的指标变量相同的串,表示引用这个指标变量。

>>
① 命令重定向符,将其前面的命令的输出结果追加到其后面的设备中去。
② 在set /a中的二元运算符,表示逻辑右移。

==
① 在if命令中判断==两边的元素是否相同。

<<
① 在set /a中的二元运算符,表示逻辑左移。

+=
① 在set /a中的二元运算符。例如set /a a+=b表示将a加上b的结果赋值给a。

-=
① 在set /a中的二元运算符。例如set /a a-=b表示将a减去b的结果赋值给a。

*=
① 在set /a中的二元运算符。例如set /a a*=b表示将a乘以b的结果赋值给a。

/=
① 在set /a中的二元运算符。例如set /a a/=b表示将a除以b的结果赋值给a。

%=
① 在set /a中的二元运算符。例如set /a a%=b表示将a除以b的余数赋值给a。
【注:命令行可以直接用 set /a a%=b ,在批处理里面可以用 set /a a%%=b 。】

^=
① 在set /a中的二元运算符。例如set /a a"^="b表示将a与b按位异的结果赋值给a。
【注:这里 "^=" 加引号是为了防止^被转义,下同。】

&=
① 在set /a中的二元运算符。例如set /a a"&="b表示将a与b按位与的结果赋值给a。

=
① 在set /a中的二元运算符。例如set /a a"="b表示将a与b按位或的结果赋值给a。

<<=
① 在set /a中的二元运算符。例如set /a a"<<="b表示将a按位左移b位的结果赋值给a。

>>=
① 在set /a中的二元运算符。例如set /a a">>="b表示将a按位右移b位的结果赋值给a。

\<
① 在findstr的一般表达式中表示字的开始处。

\>
① 在findstr的一般表达式中表示字的结束处。

__________________________________________________________________________________________

            三、双符号对(两个符号之间须指定字符串)

! !
① 当启用变量延迟时,使用!!将变量名扩起来表示对变量值的引用。

' '
① 在for/f中表示将它们包含的内容当作命令行执行并分析其输出。
② 在for/f "usebackq"中表示将它们包含的字符串当作字符串分析。

( )
① 命令包含或者是具有优先权的界定符,比如for命令要用到这个(),我们还可以在if,echo等命令中见到它的身影。
② 在set /a中表示表达式分组。

" "
① 界定符,在表示带有空格的路径时常要用""来将路径括起来,在一些命令里面也需要" "符号。
② 在for/f中将表示它们包含的内容当作字符串分析。
③ 在for/f "usebackq"表示它们包含的内容当作文件路径并分析其文件的内容。
④ 在其它情况下表示其中的内容是一个完整的字符串,其中的>、>>、<、&、、空格等不再转义。

` `
① 在for/f中表示它们所包含的内容当作命令行执行并分析它的输出。

% %
① 使用两个单独的%包含一个字符串表示引用以此串为名的环境变量。比如一个%time%可以扩展到当前的系统时间。

[ ]
① 在帮助文档表示其中的开关、选项或参数是可选的。
② 在findstr /r中表示按其中指定的字符集匹配。


________________________________________________________________________________________



PAUL2SMOON 的共享项目