将一个form放到td中时,form的高度老是比编辑的高度高出一截,将td撑得老高,造成了form下面一段空白,很难看 ,上网一查原来还真有解决办法。
加上<style>
form{margin: 0}
</style>
就ok了
2. 直接写如form中:
<form style='padding:0px;margin:0px;'>
阅读全文
加上<style>
form{margin: 0}
</style>
就ok了
2. 直接写如form中:
<form style='padding:0px;margin:0px;'>
阅读全文
<td width="926" bgcolor="#ffffff">
<table style="color: rgb(166, 31, 36); font-size: 12px;" width="100%%" border="0" cellpadding="0" cellspacing="0">
默认居中,于是在td里面加入 valign="top",在td里面再套table:
<td width="926" bgcolor="#ffffff" valign="top">
<table style="color: rgb(166, 31, 36); font-size: 12px;" width="100%%" border="0" cellpadding="0" cellspacing="0">
默认居中,于是在td里面加入 valign="top",在td里面再套table:
<td width="926" bgcolor="#ffffff" valign="top">
注意:
<table width=100% border="0" cellspacing="0" cellpadding="0">
如果需要5个,然而出现4个,也就按照间隔把那行排满,右边没有空行,而我们需要右边有空行(两个顺序靠左,右边剩余空着),于是得去掉: width="100%" 即可
</table>
如果需要5个,然而出现4个,也就按照间隔把那行排满,右边没有空行,而我们需要右边有空行(两个顺序靠左,右边剩余空着),于是得去掉: width="100%" 即可
</table>
private function getMcConf($type){
$configs=parse_ini_file($this->dbconf,true);
$config=$configs[$type];
$host_port = $config['host'];
$hps=explode(",",$host_port);
foreach($hps as $k){
$ret[]=split(":",$k);
}
return $ret;
}
参数一是字符串类型的参数,要传入的是配置文件的名称。
参数二是布尔类型的参数,要传入的是TRUE(布尔值)或FALSE(布尔值),该参数将会影响到配置文件读进数组后的结果。设置为TRUE会将配置文件中的数据以二维数组的方式建立,设置为FALSE则是使用一维数组。FALSE是默认值。
parse_ini_file 函数会将指定的“配置文件”依照 key 和 value 对应地读曀数组中,并依照第二个参数来决定要建立二维还是一维数组。
如果放在“配置文件”中的value 值包含非英文字母和非数字的字符,则该值要用双引号将它括起来。
在“配置文件”中的key 值,有一些保留字是不能使用的,包含:null、yes、no、true、false。
parse_ini_file 还可以搭配“常数”来使用,只要在调用 parse_ini_file 之前,先将要使用的常数定义好,然后再调用parse_ini_file ,则PHP就会将常数直接替换到数组的数据中。
提示:在“配置文件”中也是可以写“注释”,配置文件中的注释是用分号来开关的。
注意:如果读者使用建立一维数组的方式,则要注意“配置文件”中的key值名称不能重复,否则后面的数据会覆盖掉前面的数据,请读者注意。
Definition and Usage
定义和用法
The floor() function returns the value of a number rounded DOWNWARDS to the nearest integer.
floor()函数的作用是:通过舍去法取整(即:返回的值必须是小于等于给定数值的最大整数)。
Syntax
语法
floor(x)
Parameter参数 Description描述
x Required. A number
必要参数。指定一个数值对象
Example
案例
In this example we will use the floor() function on different numbers:
下面的案例使用floor ()函数返回了不同数值参数对应的不同结果,注意观察、比较:
echo(floor(0.60) . "
");
echo(floor(0.40) . "
");
echo(floor(5) . "
");
echo(floor(5.1) . "
");
echo(floor(-5.1) . "
");
echo(floor(-5.9))?>
The output of the code above will be:
上述代码将输出下面的结果:
0055-6-6
用来做分页可能有点用。
原文地址:http://www.isstudy.com/phpjc/963.html
定义和用法
The floor() function returns the value of a number rounded DOWNWARDS to the nearest integer.
floor()函数的作用是:通过舍去法取整(即:返回的值必须是小于等于给定数值的最大整数)。
Syntax
语法
floor(x)
Parameter参数 Description描述
x Required. A number
必要参数。指定一个数值对象
Example
案例
In this example we will use the floor() function on different numbers:
下面的案例使用floor ()函数返回了不同数值参数对应的不同结果,注意观察、比较:
echo(floor(0.60) . "
");
echo(floor(0.40) . "
");
echo(floor(5) . "
");
echo(floor(5.1) . "
");
echo(floor(-5.1) . "
");
echo(floor(-5.9))?>
The output of the code above will be:
上述代码将输出下面的结果:
0055-6-6
用来做分页可能有点用。
原文地址:http://www.isstudy.com/phpjc/963.html
也许已经有一部分人早就知道 Festival 这个语音合成软件,也就是所谓的 TTS (text to speech)。不过网上相关的安装资料大同小异,基本上是在 Gentoo 上安装的心得。我发现 Ubuntu 只有 Festival,而没有相关的 speechd 软件。我经过一晚上的探索,终于可以把这个 Festival 玩转起来,而且有了一些比较好的效果,下面共享自己的经验出来。
1. 安装 基本上 Ubuntu 的库里就有 Festival 软件。 $sudo apt-get install festival
2. 使用 Festival 的基本用法:
* 交互模式: 直接输入 festival 进入它的命令行界面。 $festival festival 〉 (SayText ” hello , festival is coming “) festival 〉 (tts myfile) 第二行是读取 myfile 文件里的内容。
* 命令行模式: $festival –tts myfile 直接读取 myfile 里的内容。 $ echo “hello , festival is coming ” | festival –tts 读取字符串。
3. 配置 Festival 默认用的是 oss,在一些系统会独占音频。这里我们将配置成使用 alsa 发音。 新建文件 ~/.festivalrc , 输入以下内容: (Parameter.set ‘Audio_Command “aplay -q -c 1 -t raw -f s16 -r $SR $FILE”) (Parameter.set ‘Audio_Method ‘Audio_Command) 如果想提高音量,可添加: (set! default_after_synth_hooks (list (lambda (utt) (utt.wave.rescale utt 1.6 t)))) 至此 festival 应该比较好的工作了。在集成声卡中会出现音速过快的问题。LinuxSir 上有一篇关于 Festival 的帖子,其中 wguzgg 网友曾经把网上的方法贴了出来。 我找到了如何将语速恢复正常的方法,原文在这里。主要是集成在主板上的声卡会出现语速过快的问题,解决方式是: 在 /usr/lib/festival/ 目录下创建一个文件 siteinit.scm,内容如下: (Parameter.set ‘Audio_Method ‘Audio_Command) (Parameter.set ‘Audio_Command “sox -t raw -sw -r $SR $FILE -c2 -t ossdsp /dev/dsp”) 这个参数写在 ~/.festivalrc 上也是有效的。不过就和前面我设置用 alsa 发音的设置冲突了。那个 alsa 的设置好像也能把语速减慢一点吧。我这里提供方法。你自己看着选择了。
4. 安装新语音这部分才是我写此文章的重要目的。因为在 Gentoo 的帖子,安装一个新的女声,只需要 emerge mbrola。而在 Ubuntu 的库中并没有收录此包。(也许是我不知道,谁知道告诉我)另一个原因是,默认的美国男声似乎有些含糊不清。所以我找了 mbrola 的女声来安装(注意,不得用于商业用途,他说的)。手动安装 festival mbrola 的信息,原网页。
* 安装 festival voice wrapper (这个咋翻译偶拿不准) 下载 festvox_us1.tar.gz,把它解压到 festival 的安装目录下,Ubuntu 下为 /usr/share/festival。
* 获取 MBROLA 声音文件和它的执行文件 跳到 http://tcts.fpms.ac.be/synthesis/mbrola.html ,点击 download,下载 MBROLA binary 和你需要的声音文件。这里选择美国英语女声(for us1)。 安装 MBROLA binary,这里你应该下载到一个名为 mbr301h.zip 的文件。解压后把其中名为 mbrola-linux-i386 的文件改名为 mbrola,再复制到 /usr/local/bin 目录中。 安装声音文件,这里你下载到的声音文件的文件名应该类似 us1-980512.zip,把它解压到 [festival_install_dir]/festival/lib/voices/english/us1_mbrola [festival_install_dir]为 festival 的安装目录。在 Ubuntu 下应为 /usr/share/festival。
5. 测试新的声音 在执行完上面步骤后新的美国英语女声应该安装完毕。进入 festival 命令行测试一下: festival) (voice_us1_mbrola) festival) (SayText ” hello , american english female voice is coming”) 在这里你应该听到优美的美国英语女声了吧。阅读全文
1. 安装 基本上 Ubuntu 的库里就有 Festival 软件。 $sudo apt-get install festival
2. 使用 Festival 的基本用法:
* 交互模式: 直接输入 festival 进入它的命令行界面。 $festival festival 〉 (SayText ” hello , festival is coming “) festival 〉 (tts myfile) 第二行是读取 myfile 文件里的内容。
* 命令行模式: $festival –tts myfile 直接读取 myfile 里的内容。 $ echo “hello , festival is coming ” | festival –tts 读取字符串。
3. 配置 Festival 默认用的是 oss,在一些系统会独占音频。这里我们将配置成使用 alsa 发音。 新建文件 ~/.festivalrc , 输入以下内容: (Parameter.set ‘Audio_Command “aplay -q -c 1 -t raw -f s16 -r $SR $FILE”) (Parameter.set ‘Audio_Method ‘Audio_Command) 如果想提高音量,可添加: (set! default_after_synth_hooks (list (lambda (utt) (utt.wave.rescale utt 1.6 t)))) 至此 festival 应该比较好的工作了。在集成声卡中会出现音速过快的问题。LinuxSir 上有一篇关于 Festival 的帖子,其中 wguzgg 网友曾经把网上的方法贴了出来。 我找到了如何将语速恢复正常的方法,原文在这里。主要是集成在主板上的声卡会出现语速过快的问题,解决方式是: 在 /usr/lib/festival/ 目录下创建一个文件 siteinit.scm,内容如下: (Parameter.set ‘Audio_Method ‘Audio_Command) (Parameter.set ‘Audio_Command “sox -t raw -sw -r $SR $FILE -c2 -t ossdsp /dev/dsp”) 这个参数写在 ~/.festivalrc 上也是有效的。不过就和前面我设置用 alsa 发音的设置冲突了。那个 alsa 的设置好像也能把语速减慢一点吧。我这里提供方法。你自己看着选择了。
4. 安装新语音这部分才是我写此文章的重要目的。因为在 Gentoo 的帖子,安装一个新的女声,只需要 emerge mbrola。而在 Ubuntu 的库中并没有收录此包。(也许是我不知道,谁知道告诉我)另一个原因是,默认的美国男声似乎有些含糊不清。所以我找了 mbrola 的女声来安装(注意,不得用于商业用途,他说的)。手动安装 festival mbrola 的信息,原网页。
* 安装 festival voice wrapper (这个咋翻译偶拿不准) 下载 festvox_us1.tar.gz,把它解压到 festival 的安装目录下,Ubuntu 下为 /usr/share/festival。
* 获取 MBROLA 声音文件和它的执行文件 跳到 http://tcts.fpms.ac.be/synthesis/mbrola.html ,点击 download,下载 MBROLA binary 和你需要的声音文件。这里选择美国英语女声(for us1)。 安装 MBROLA binary,这里你应该下载到一个名为 mbr301h.zip 的文件。解压后把其中名为 mbrola-linux-i386 的文件改名为 mbrola,再复制到 /usr/local/bin 目录中。 安装声音文件,这里你下载到的声音文件的文件名应该类似 us1-980512.zip,把它解压到 [festival_install_dir]/festival/lib/voices/english/us1_mbrola [festival_install_dir]为 festival 的安装目录。在 Ubuntu 下应为 /usr/share/festival。
5. 测试新的声音 在执行完上面步骤后新的美国英语女声应该安装完毕。进入 festival 命令行测试一下: festival) (voice_us1_mbrola) festival) (SayText ” hello , american english female voice is coming”) 在这里你应该听到优美的美国英语女声了吧。阅读全文
http://www.qgy18.com/2009/08/flash_externalinterface/
http://www.qgy18.com/file/code/1.html
理论是js调用flash里面的代码是合情合理的,但是遇到firefox里面的代码不兼容(上面来你哥哥链接探讨的)也就罢了,但是,发现在firefox下出现flash没有加载完毕js就去调用flash里面的代码了,于是用了个什么:setTimeout(函授入口地址名称,2000);
其实在flsh一加载就把该函数给写上可以避免必须加载完毕才能调用?
解决了该问题,但是2秒啊,其主要原因是flash是广告的flash页面较大,造成加载缓慢,有没有办法通过firefox中的js某些函数判断firefox中的flash已经加载完毕了呢?google了一下好像有喔:
1.jquery来判断:
判断Flash加载完毕,然后再传递值进去。
步骤:01、我首先想到是否可以在HTML的<body>中用onload方法。
但是,失败。
02、后来我想到是否可以在Flash中用Actionscript判断是否加载完毕,
如果加载完毕,那么getURL或者fscommand一下调用HTML中的Javascript函数。
感觉比较复杂。
但是这个应该肯定行的通。
03、最后我想到了用jQuery来判断Flash是否加载完毕。
下面的代码:
$(document).ready(function(){
});
和onload方法几乎一样,都是在Flash加载之前就执行了。
04、因此我去搜了一下,还真有这样的插件:
http://www.malsup.com/jquery/media/
这个是媒体文件的插件,可以有mp3/mov/swf/wma等等。
但是就在这个网站上,它推荐,如果只是用Flash的话,
还是:
http://jquery.lukelutman.com/plugins/flash/
比较好。
网站简单,不过很够用。
05、目前看到的是1.0.1版本,文件名是jquery.flash.js
06、首先你得给它加载进来:
<script src="static/jquery.flash.js" type="text/javascript"></script>
然后在HTML的<body>之间加上:
07、这里的src是文件的位置。
width是宽,height是高,
flashvars是变量。
08、我们在flash中有一个动态文本框,实例名称是newtest。
另有几行代码:
stop();
newtest.text = str3;
str3就是我们从外面传递进来的变量值。
09、是的,就这样。
我们就能在Flash中看到显示:aa了。
高级:我现在在考虑能否在网页显示的过程中改变flashvars。
即,我按一个按钮,更新str3的值。
目前只能实现重新建一个flash对象,非常不爽。
2.js 判断flash加载进度源码
有时候我们需要判断一个flash加载了多少;我们可以用js判断:
其实最好还是flash加载完毕后调用我们的js或者去外边取数据,这种架构要秀气多了。
本站参考:
http://www.jackxiang.com/post/2370/
http://www.qgy18.com/file/code/1.html
理论是js调用flash里面的代码是合情合理的,但是遇到firefox里面的代码不兼容(上面来你哥哥链接探讨的)也就罢了,但是,发现在firefox下出现flash没有加载完毕js就去调用flash里面的代码了,于是用了个什么:setTimeout(函授入口地址名称,2000);
window.setTimeout("show_date_time()", 1000);
其实在flsh一加载就把该函数给写上可以避免必须加载完毕才能调用?
解决了该问题,但是2秒啊,其主要原因是flash是广告的flash页面较大,造成加载缓慢,有没有办法通过firefox中的js某些函数判断firefox中的flash已经加载完毕了呢?google了一下好像有喔:
1.jquery来判断:
判断Flash加载完毕,然后再传递值进去。
function thisMovie(movieName) {
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName]
}else {
alert(document.embeds[movieName]);
return document.embeds[movieName];
}
}
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName]
}else {
alert(document.embeds[movieName]);
return document.embeds[movieName];
}
}
步骤:01、我首先想到是否可以在HTML的<body>中用onload方法。
但是,失败。
02、后来我想到是否可以在Flash中用Actionscript判断是否加载完毕,
如果加载完毕,那么getURL或者fscommand一下调用HTML中的Javascript函数。
感觉比较复杂。
但是这个应该肯定行的通。
03、最后我想到了用jQuery来判断Flash是否加载完毕。
下面的代码:
$(document).ready(function(){
});
和onload方法几乎一样,都是在Flash加载之前就执行了。
04、因此我去搜了一下,还真有这样的插件:
http://www.malsup.com/jquery/media/
这个是媒体文件的插件,可以有mp3/mov/swf/wma等等。
但是就在这个网站上,它推荐,如果只是用Flash的话,
还是:
http://jquery.lukelutman.com/plugins/flash/
比较好。
网站简单,不过很够用。
05、目前看到的是1.0.1版本,文件名是jquery.flash.js
06、首先你得给它加载进来:
<script src="static/jquery.flash.js" type="text/javascript"></script>
然后在HTML的<body>之间加上:
<body>
<div id="flash"></div>
</body>
然后是写我们自己的Javascript代码:
<script language="javascript">
$(document).ready(function(){
$('#flash').flash(
{ src: 'static/flash.swf',
width: 720,
height: 480,
flashvars: { str3: 'aa', str4: 'bb' }
},
{ version: 8 }
);
});
</script>
<div id="flash"></div>
</body>
然后是写我们自己的Javascript代码:
<script language="javascript">
$(document).ready(function(){
$('#flash').flash(
{ src: 'static/flash.swf',
width: 720,
height: 480,
flashvars: { str3: 'aa', str4: 'bb' }
},
{ version: 8 }
);
});
</script>
07、这里的src是文件的位置。
width是宽,height是高,
flashvars是变量。
08、我们在flash中有一个动态文本框,实例名称是newtest。
另有几行代码:
stop();
newtest.text = str3;
str3就是我们从外面传递进来的变量值。
09、是的,就这样。
我们就能在Flash中看到显示:aa了。
高级:我现在在考虑能否在网页显示的过程中改变flashvars。
即,我按一个按钮,更新str3的值。
目前只能实现重新建一个flash对象,非常不爽。
2.js 判断flash加载进度源码
有时候我们需要判断一个flash加载了多少;我们可以用js判断:
<div id="d1">
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="mFlash"
WIDTH="600" HEIGHT="300">
<PARAM NAME=quality VALUE=high>
<param name="Play" value="-1">
<PARAM NAME=movie VALUE="http://www.toto369.net/sydm/52.swf">
</OBJECT>
</div>
<input id="txt" type="text" value="">
<div id="d2" style="visibility:hidden">
flash已经加载完成
</div>
<script language="javascript">
function ck()
{
var mFlash=document.getElementById("mFlash");
var txt=document.getElementById("txt");
txt.value=mFlash.PercentLoaded()+"%"
if(txt.value=="100%")
{
document.getElementById("d2").style.visibility="visible"
clearInterval(timer)
}
}
var timer=setInterval("ck()",1000)
</script>
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="mFlash"
WIDTH="600" HEIGHT="300">
<PARAM NAME=quality VALUE=high>
<param name="Play" value="-1">
<PARAM NAME=movie VALUE="http://www.toto369.net/sydm/52.swf">
</OBJECT>
</div>
<input id="txt" type="text" value="">
<div id="d2" style="visibility:hidden">
flash已经加载完成
</div>
<script language="javascript">
function ck()
{
var mFlash=document.getElementById("mFlash");
var txt=document.getElementById("txt");
txt.value=mFlash.PercentLoaded()+"%"
if(txt.value=="100%")
{
document.getElementById("d2").style.visibility="visible"
clearInterval(timer)
}
}
var timer=setInterval("ck()",1000)
</script>
其实最好还是flash加载完毕后调用我们的js或者去外边取数据,这种架构要秀气多了。
本站参考:
http://www.jackxiang.com/post/2370/
这个是ie时候的页面,IE:
<object id="FlashID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="1003" height="299">
<param name="allowScriptAccess" value="always">
<param name="movie" value="top.swf">
<param name="quality" value="high">
<param name="wmode" value="opaque">
<param name="swfversion" value="8.0.35.0">
</object>
这个是firefox时候的页面,fireFox:
<embed src="top.swf" width="1003" height="299" id="FlashID" ></embed>
兼容IE,firefox:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="1002" height="770" id="FlashID">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="/swf/index.swf" />
<param name="quality" value="high" />
<param name="wmode" value="transparent" />
<embed src="/swf/index.swf" width="1002" height="770" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" wmode="transparent" id="FlashID"></embed>
</object>
兼容IE和Firefox的透明Flash代码:
兼容IE和Firefox的透明Flash代码,测试通过,opeara没测试。
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="100" height="50">
<param name="movie" value="myflash.swf"/>
<param name="quality" value="high" />
<param name="wmode" value="transparent"/>
<param name="menu" value="false"/>
<embed src="myflash.swf" width="100" height="50" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" wmode="transparent" menu="false"></embed>
</object>
<object id="FlashID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="1003" height="299">
<param name="allowScriptAccess" value="always">
<param name="movie" value="top.swf">
<param name="quality" value="high">
<param name="wmode" value="opaque">
<param name="swfversion" value="8.0.35.0">
</object>
这个是firefox时候的页面,fireFox:
<embed src="top.swf" width="1003" height="299" id="FlashID" ></embed>
兼容IE,firefox:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="1002" height="770" id="FlashID">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="/swf/index.swf" />
<param name="quality" value="high" />
<param name="wmode" value="transparent" />
<embed src="/swf/index.swf" width="1002" height="770" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" wmode="transparent" id="FlashID"></embed>
</object>
兼容IE和Firefox的透明Flash代码:
兼容IE和Firefox的透明Flash代码,测试通过,opeara没测试。
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="100" height="50">
<param name="movie" value="myflash.swf"/>
<param name="quality" value="high" />
<param name="wmode" value="transparent"/>
<param name="menu" value="false"/>
<embed src="myflash.swf" width="100" height="50" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" wmode="transparent" menu="false"></embed>
</object>
来源:
http://down.chinazhan.net/article/12/20/ChinaZhan_22527.html
http://www.blueidea.com/tech/program/2009/6787.asp
[ Web Service介绍 ]
Web Service就是为了异构系统的通信而产生的,它基本的思想就是使用基于XML的HTTP的远程调用提供一种标准的机制,而省去建立一种新协议的需求。目前进行Web Service通信有两种协议标准,一种是XML-RPC,另外一种是SOAP。XML-RPC比较简单,出现时间比较早,SOAP比较复杂,主要是一些需要稳定、健壮、安全并且复杂交互的时候使用。
PHP中集成了XML-RPC和SOAP两种协议的访问,都是集中在xmlrpc扩展当中。另外,在PHP的PEAR中,不管是PHP 4还是PHP 5,都已经默认集成了XML-RPC扩展,而且该扩展跟xmlrpc扩展无关,能够独立实现XML-RPC的协议交互,如果没有xmlrpc扩展,建议使用PEAR::XML-RPC扩展。
我们这里主要是以XML-RPC来简单描述Web Service的交互过程,部分内容来自PHP手册,更详细内容,建议参考手册。
[ 安装xmlrpc扩展 ]阅读全文
http://down.chinazhan.net/article/12/20/ChinaZhan_22527.html
http://www.blueidea.com/tech/program/2009/6787.asp
[ Web Service介绍 ]
Web Service就是为了异构系统的通信而产生的,它基本的思想就是使用基于XML的HTTP的远程调用提供一种标准的机制,而省去建立一种新协议的需求。目前进行Web Service通信有两种协议标准,一种是XML-RPC,另外一种是SOAP。XML-RPC比较简单,出现时间比较早,SOAP比较复杂,主要是一些需要稳定、健壮、安全并且复杂交互的时候使用。
PHP中集成了XML-RPC和SOAP两种协议的访问,都是集中在xmlrpc扩展当中。另外,在PHP的PEAR中,不管是PHP 4还是PHP 5,都已经默认集成了XML-RPC扩展,而且该扩展跟xmlrpc扩展无关,能够独立实现XML-RPC的协议交互,如果没有xmlrpc扩展,建议使用PEAR::XML-RPC扩展。
我们这里主要是以XML-RPC来简单描述Web Service的交互过程,部分内容来自PHP手册,更详细内容,建议参考手册。
[ 安装xmlrpc扩展 ]阅读全文
create table b as select a.id, a.name, a.address from user a;
create table b as select * from a where 1<>1
create table b as select * from a where 1<>1
呵呵,胡兄弟少了Create语句
于兄弟的SQL应该用得比我好,这是转载的,不过其实这里sql的子查询语句只是为了获得原表的结构,如果需要的只是某些列也可以将*改为那些列的名字。
复制表的某些列也可以使用这样的方法:
create table b as select a.id, a.name, a.address from user a;
讨论很有意思
参考:http://www.w3schools.com/sql/sql_select_into.asp
SQL SELECT INTO Example
Make a Backup Copy - Now we want to make an exact copy of the data in our "Persons" table.
We use the following SQL statement:
SELECT *
INTO Persons_Backup
FROM Persons
We can also use the IN clause to copy the table into another database:
SELECT *
INTO Persons_Backup IN 'Backup.mdb'
FROM Persons
We can also copy only a few fields into the new table:
SELECT LastName,FirstName
INTO Persons_Backup
FROM Persons
--------------------------------------------------------------------------------
SQL SELECT INTO - With a WHERE Clause
We can also add a WHERE clause.
The following SQL statement creates a "Persons_Backup" table with only the persons who lives in the city "Sandnes":
SELECT LastName,Firstname
INTO Persons_Backup
FROM Persons
WHERE City='Sandnes'
--------------------------------------------------------------------------------
SQL SELECT INTO - Joined Tables
Selecting data from more than one table is also possible.
The following example creates a "Persons_Order_Backup" table contains data from the two tables "Persons" and "Orders":
SELECT Persons.LastName,Orders.OrderNo
INTO Persons_Order_Backup
FROM Persons
INNER JOIN Orders
ON Persons.P_Id=Orders.P_Id
阅读全文
SQL SELECT INTO Example
Make a Backup Copy - Now we want to make an exact copy of the data in our "Persons" table.
We use the following SQL statement:
SELECT *
INTO Persons_Backup
FROM Persons
We can also use the IN clause to copy the table into another database:
SELECT *
INTO Persons_Backup IN 'Backup.mdb'
FROM Persons
We can also copy only a few fields into the new table:
SELECT LastName,FirstName
INTO Persons_Backup
FROM Persons
--------------------------------------------------------------------------------
SQL SELECT INTO - With a WHERE Clause
We can also add a WHERE clause.
The following SQL statement creates a "Persons_Backup" table with only the persons who lives in the city "Sandnes":
SELECT LastName,Firstname
INTO Persons_Backup
FROM Persons
WHERE City='Sandnes'
--------------------------------------------------------------------------------
SQL SELECT INTO - Joined Tables
Selecting data from more than one table is also possible.
The following example creates a "Persons_Order_Backup" table contains data from the two tables "Persons" and "Orders":
SELECT Persons.LastName,Orders.OrderNo
INTO Persons_Order_Backup
FROM Persons
INNER JOIN Orders
ON Persons.P_Id=Orders.P_Id
阅读全文
简单来说:pkg_add -r kde4即可完成安装,然后安装chinese里面的中文包即可。
最近在用awk拼写一段sql语句时,遇到了 单引号不能输出的 问题 。
实在让人很困惑 !
awk中如何输出单引号 如何在awk中打印输出单引号呢 shell如何处理单引号呢 ?
也就是shell中对单引号的处理问题
解决办法
awk '{print " '\'' "}'
把转义的单引号',用两个单引号括起来,使其不执行
原因是 :括在双引号中的三种特殊字符不被忽略:$,\,` ,即双引号会解释字符串的特别意思,而单引号直接使用字符串输出.
那么shell如何处理特殊字符的呢
1. 单引号 ( ' ' )
如果我们想查找的是Susan Goldberg,不能直接使用grep Susan Goldberg phonebook命令,grep会把Goldberg和phonebook当作需要搜索的文件
howard@0[script]$ grep 'Susan Gold' phonebook
Susan Goldberg 403-212-4921
当shell碰到第一个单引号时,它忽略掉其后直到右引号的所有特殊字符
2. 双引号 ( " " )
双引号作用与单引号类似,区别在于它没有那么严格。单引号告诉shell忽略所有特殊字符,而双引号只要求忽略大多数,具体说,括在双引号中的三种特殊字符不被忽略:$,\,` ,即双引号会解释字符串的特别意思,而单引号直接使用字符串.如果使用双引号将字符串赋给变量并反馈它,实际上与直接反馈变量并无差别。如果要查询包含空格的字符串,经常会用到双引号。
howard@0[script]$ x=*
howard@0[script]$ echo $x
hello.sh menus.sh misc.sh phonebook tshift.sh
howard@0[script]$ echo '$x'
$x
howard@0[script]$ echo "$x"
*
这个例子可以看出无引号、单引号和双引号之间的区别。在最后一种情况中,双引号告诉shell在引号内照样进行变量名替换,所以shell把$x替换为*,因为双引号中不做文件名替换,所以就把*作为要显示的值传递给echo。
对于第一种情况需要进一步说明,shell在给变量赋值时不进行文件名替换(这从第三种情况中也能看出来),各步骤发生的精确次序如下:
shell扫描命令行,把x的值设为星号*;
shell再次扫描命令行,碰到星号*,把它替换成当前目录下的文件清单;
shell启动执行echo命令,把文件清单作为参数传递给echo.
这个赋值的先后次序非常重要:shell先作变量替换,然后作文件名替换,最后把这行处理为参数
双引号直接斜杠转义:
cat C.txt |awk '{print "grep -r '\''^" $1 " '\'' ./36107_game_20100910.txt"}'|awk '{print $0 "|awk '\''{print awk $1 \"" " \" $2}'\''"}'
cat C.txt |awk '{print "grep -r '\''^" $1 " '\'' ./36107_game_20100910.txt"}'|awk '{print $0 "|awk '\''{print awk $1 \"" " \" $2}'\'' >> DDD.txt"}' > CCC.txt
3. 反引号(``)
命令替换是指shell能够将一个命令的标准输出插在一个命令行中任何位置。shell中有两种方法作命令替换:把shell命令用反引号或者$(...)结构括起来,其中,$(...)格式受到POSIX标准支持,也利于嵌套。
howard@0[script]$ echo The date and time is `date`
The date and time is 三 6月 15 06:10:35 CST 2005
howard@0[script]$ echo Your current working directory is $(pwd)
Your current working directory is /home/howard/script.
4. 反斜杠 backslash-escaped( \ )
反斜杠一般用作转义字符,或称逃脱字符,linux如果echo要让转义字符发生作用,就要使用-e选项,且转义字符要使用双引号
echo -e "\n"
反斜杠的另一种作用,就是当反斜杠用于一行的最后一个字符时,shell把行尾的反斜杠作为续行,这种结构在分几行输入长命令时经常使用。
awk详解
a w k是一种程序语言,对文档资料的处理具有很强的功能。awk 名称是由它三个最初设计
者的姓氏的第一个字母而命名的: Alfred V. Aho、Peter J. We i n b e rg e r、Brian W. Kernighan。
a w k最初在1 9 7 7年完成。1 9 8 5年发表了一个新版本的a w k,它的功能比旧版本增强了不少。a w k
能够用很短的程序对文档里的资料做修改、比较、提取、打印等处理。如果使用C 或P a s c a l
等语言编写程序完成上述的任务会十分不方便而且很花费时间,所写的程序也会很大。
a w k不仅仅是一个编程语言,它还是L i n u x系统管理员和程序员的一个不可缺少的工具。阅读全文
做为现实中的美工,截屏乃每日所需,近期总结了一些资料,如下:
1.Gimp,linux 下最强大的图形处理软件,带截屏功能
2.KDE 下的 ksnapshot
3.gnome-screenshot以及
gnome-panel-screenshot。区别在于后者可以抓取提示信息,比如此图中的“西安咸阳”
sleep 5;gnome-panel-screenshot
趁5妙时间未到,赶紧摆好pose吧… -window 参数截取当前激活窗口
BTW:ubuntu 附件 中的“抓图”正是 gnome-screenshot
4.ImageMagick(需要安装) 的 import
import -window root xxx.jpg
chvt 7 ; sleep 5 ; XAUTHORITY=/var/gdm/:0.Xauth DISPLAY=:0.0 import -window root /tmp/gdm-shot.png
在 tty1 中,截取 tty7 中x window登录界面
ubuntu中应该是
…XAUTHORITY=/var/lib/gdm/…
用 ps aux | grep gdm 可以查到 gdm 具体位置。
5.xwd,x window自带,无须安装。下面命令可以截取 x win 图像
sleep 3; xwd -display :0.0 -out root.xwd -root
但我在 tty 1中执行,想拿到 tty 7 的 x window 登录,得到的是花屏图像(执行,然后马上 ctrl+alt+7 切换回 tty7)。
BTW:.xwd 文件可以用 gimp 打开。
6.scrot
scrot -d 5 /tmp/1.jpeg
5秒钟后把屏幕抓图保存在/tmp/1.jpeg中
scrot -s
用鼠标选定范围,在范围内抓图
7.抓video的工具:xvidcap
8.fbgrab
9.Captrua
10.byzanz,记录你的桌面或者一个窗口,也可以包括鼠标在内的活动图象,并且保存为gif格式
参考资料:
import -window root ~/tmp/screenshot.jpeg && display -resize 50% ~/tmp/screenshot.jpeg
截取全屏并用 display 打开(50%显示)
import ~/tmp/screenshot.jpeg && display -resize 50% ~/tmp/screenshot.jpeg
截取当前窗口并用 display 打开(50%显示)
1.Gimp,linux 下最强大的图形处理软件,带截屏功能
2.KDE 下的 ksnapshot
3.gnome-screenshot以及
gnome-panel-screenshot。区别在于后者可以抓取提示信息,比如此图中的“西安咸阳”
sleep 5;gnome-panel-screenshot
趁5妙时间未到,赶紧摆好pose吧… -window 参数截取当前激活窗口
BTW:ubuntu 附件 中的“抓图”正是 gnome-screenshot
4.ImageMagick(需要安装) 的 import
import -window root xxx.jpg
chvt 7 ; sleep 5 ; XAUTHORITY=/var/gdm/:0.Xauth DISPLAY=:0.0 import -window root /tmp/gdm-shot.png
在 tty1 中,截取 tty7 中x window登录界面
ubuntu中应该是
…XAUTHORITY=/var/lib/gdm/…
用 ps aux | grep gdm 可以查到 gdm 具体位置。
5.xwd,x window自带,无须安装。下面命令可以截取 x win 图像
sleep 3; xwd -display :0.0 -out root.xwd -root
但我在 tty 1中执行,想拿到 tty 7 的 x window 登录,得到的是花屏图像(执行,然后马上 ctrl+alt+7 切换回 tty7)。
BTW:.xwd 文件可以用 gimp 打开。
6.scrot
scrot -d 5 /tmp/1.jpeg
5秒钟后把屏幕抓图保存在/tmp/1.jpeg中
scrot -s
用鼠标选定范围,在范围内抓图
7.抓video的工具:xvidcap
8.fbgrab
9.Captrua
10.byzanz,记录你的桌面或者一个窗口,也可以包括鼠标在内的活动图象,并且保存为gif格式
参考资料:
import -window root ~/tmp/screenshot.jpeg && display -resize 50% ~/tmp/screenshot.jpeg
截取全屏并用 display 打开(50%显示)
import ~/tmp/screenshot.jpeg && display -resize 50% ~/tmp/screenshot.jpeg
截取当前窗口并用 display 打开(50%显示)
Linux 学习笔记
限制 ssh root 登录和尝试次数
vi /etc/ssh/sshd_config
# #LoginGraceTime 2m
# PermitRootLogin no
# #StrictModes yes
# MaxAuthTries 4
解压 .7z 文件
sudo apt-get install p7zip
p7zip -d putyourfilename.7z
-d : decompress
mysql 备份
mysqldump -u user -p [database] > database.sql
阅读全文
限制 ssh root 登录和尝试次数
vi /etc/ssh/sshd_config
# #LoginGraceTime 2m
# PermitRootLogin no
# #StrictModes yes
# MaxAuthTries 4
解压 .7z 文件
sudo apt-get install p7zip
p7zip -d putyourfilename.7z
-d : decompress
mysql 备份
mysqldump -u user -p [database] > database.sql
阅读全文
越来越发现 chrome 和 mediawiki 好玩得很。昨天玩 mediawiki 的装 whosonline 的时候,一不留神犯了一个愚蠢而低级的错误,:(
whosonline 需要 revoke 然后重新 grant 权限,貌似我的 wiki 是直接用 root 连接的,所以俺想都没想就 revoke all from root@localshost 了,然后 grant 的时候,傻眼了…没有权限!
搜索半天,大约方法有二:
1.跳过授权表启动MYSQL。
MYSQLD –SKIP-GRANT-TABLES
来启动 MYSQL。这个时候你对所有的表都具有操作权限。更新的MYSQL.USER表的所有字段中为N的为Y就可以了。
2、就是COPY 别的有权限的MYSQL 库考到你原来的目录。不过原来的一定要备份。之后的操作和上面的一样。
注:linux shell 下 mysqladmin。
whosonline 需要 revoke 然后重新 grant 权限,貌似我的 wiki 是直接用 root 连接的,所以俺想都没想就 revoke all from root@localshost 了,然后 grant 的时候,傻眼了…没有权限!
搜索半天,大约方法有二:
1.跳过授权表启动MYSQL。
MYSQLD –SKIP-GRANT-TABLES
来启动 MYSQL。这个时候你对所有的表都具有操作权限。更新的MYSQL.USER表的所有字段中为N的为Y就可以了。
2、就是COPY 别的有权限的MYSQL 库考到你原来的目录。不过原来的一定要备份。之后的操作和上面的一样。
注:linux shell 下 mysqladmin。
假设你有网站A,以下代码可以使从域名访问网站A正常,而从百度、Google、雅虎搜索进入网站A的来源全部转向到http://www.jackxiang.com,使得后者的IP大大提升。
有兴趣的人可以自己试试。
<script>
var slyar=document.referrer
if(slyar.indexOf("baidu")>0)
self.location="http://www.jackxiang.com";
else if(slyar.indexOf("yahoo")>0)
self.location="http://www.jackxiang.com";
else if(slyar.indexOf("google")>0)
self.location="http://www.jackxiang.com";
</script>
有兴趣的人可以自己试试。
<script>
var slyar=document.referrer
if(slyar.indexOf("baidu")>0)
self.location="http://www.jackxiang.com";
else if(slyar.indexOf("yahoo")>0)
self.location="http://www.jackxiang.com";
else if(slyar.indexOf("google")>0)
self.location="http://www.jackxiang.com";
</script>