1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键 PHPChina讯:3D图像最先普及在电玩游戏中,然后进入操作系统,而最新发展,是网络浏览器也朝向3D迈出重大的一步。 管理OpenGL图像界面的Khronos Group宣布,该组织与Mozilla合作将硬件加速3D图像带入网络的工作,已经拟定出一份标准草案。这项标准称为WebGL,能让使用JavaScript语言的
据国外媒体报道,临近岁末,资讯网站eWeek于上周评出了《九款年度重磅产品》。无独有偶,该网站此番又评选出2009年度最不受用户欢迎的九大事件: 1、亚马逊删书门 今年七月份,在线销售巨人亚马逊(Amazon)通过侵入终端用户的Kindle设备,直接删掉了涉嫌侵犯版权的两本图书(1984和动物庄园)。官方的粗暴行为直接引起众多用户的愤怒,公司信誉遭受严重打击。 迫于压力,亚马逊全球CEO杰夫-贝索斯亲自向Kindle用户表示,为上述行为表示道歉,并称我们是自作自受,因此用户对我们的批评是我们罪有应得。我们将吸取这一教训以提醒我们在未来不断改进。 尽管后来事件得到妥善平息,但是亚马逊如此草率的举动让人感觉与其行业大佬的身份极端不相称。 2、Windows 7精简版UAC UAC(用户帐户控制)是Vista系统的一大创新,任何需要系统资源的操作都要经过管理员许可,它的出现大大提高了Widows的安全性,所以UAC同样被移植到新一代操作系统Windows 7中。 但让人诧异的是,微软通过削弱UAC对系统的控制程序来简化操作,导致Windows 7 Beta版中出现UAC失效的情况发生。虽然这一漏洞在Windows 7RC、RTM版本中得到修复,但精简版的UAC对于系统的安全意义已经被大大削弱。 今年最猖獗的病毒当属Conficker,微软和各大安全公司如临大敌,疲于应对。事后的安全统计报告显示,Conficker创造了最大的僵尸网络,因为30%的windows计算机没有更新微软二零零八年十月释放的补丁,而最终受害电脑高达1500万之多。 Conficker给人们的警示在于,号称无比安全的技术其实仍然存在诸多漏洞。 ACTA的全称是反假冒贸易协议,创建初衷是为了打击盗版贸易对经济发展的危害,在许多国家推行。 但是由于信息泄露,ACTA变成了版权所有者谋取利益的工具,违背了互联网公平原则,加深了许多发展中国家和发达国家的差距。同时也不利于世界资源技术共享。 iTunes 是一款数字媒体播放应用程序,用于播放以及管理数字音乐和与视频档案,Mac音乐播放的常用工具。但是在Windows环境下问题不断:运行缓慢,无法兼容,占用过多CPU等。 曾经的通信行业巨人ATT在经历了合并重组再拆分独立的一连串折腾之后,服务质量和公司实力受到严重影响。旗下的3G和移动通信业务时常出现无法连接的情况。 今年二月份,著名社交网站Facebook修改了其TOS(用户服务条款),修改后的条款中Facebook用户信息的最高所有权归Facebook官方所有,即时用户账号注销后信息仍然储存在服务器备份中。 这对于一贯看重个人隐私和信息安全的用户来说十分不公平,后来迫于用户施加的压力,Facebook首席运营官Mark Zuckerberg发表声明,尊重用户信息和隐私,取消TOS修改。 上月中旬,美国联邦航空管理局的服务器发生故障,导致全国航班的延误。后来查明原因是,位于盐湖城的路由器连线短路所致。该事情为过于依赖高科技的美国社会敲响了警钟。 Gmail是谷歌旗下的电子邮件服务,以免费、功能丰富、整合多项谷歌服务吸引了全球范围内的数千万名用户。新版Gmail还增加离线下载/上传功能。 但是从今年开始,Gmail发生了多次较为严重的宕机,其中仅九月份就有2次。许多Gmail用户都发现无法连接服务器。电子邮件是现代办公、学习的重要工具,不难想象频繁宕机给人们带来的不便。尽管谷歌承诺决不发生类似事件,结合事实,人们不禁对于谷歌这样的承诺产生怀疑。 XtraBackup 是一个用来备份 MySQL 的 InnoDB 数据库的开源工具。
<table border oncontextmenu=return(false)> <td>no </table> 可用于Table
2. <body onselectstart="return false"> 取消选取、防止复制
3. onpaste="return false" 不准粘贴
4. oncopy="return false;" oncut="return false;" 防止复制
5. <link rel="Shortcut Icon" xhref="favicon.ico"> IE地址栏前换成自己的图标
6. <link rel="Bookmark" xhref="favicon.ico"> 可以在收藏夹中显示出你的图标
7. <input style="ime-mode:disabled"> 关闭输入法
8. 永远都会带着
3D Web标准草案WebGL出炉,浏览器朝3D迈步
Dec 17, 2009 05:02:15 PM | Comments(0) | Category:默认分类 | Tags:
eWeek:09年IT界最愚蠢的九件事 Windows7精简版UAC上榜
Dec 17, 2009 05:00:49 PM | Comments(0) | Category:PHP学习 | Tags:
3、Conficker蠕虫肆虐
4、ACTA徒有虚名
5、苹果iTune升级难题
6、ATT的3G和移动网络业务
7、Facebook改变服务条款
8、路由短路导致全美航班停飞事件
9、Gmail频繁宕机MySQL备份XtraBackup 1.0版本发布
Dec 14, 2009 05:23:38 PM | Comments(0) | Category:PHP学习 | Tags:
Changelog:
XtraBackup is ported to Windows. The .MSI package as well as .tar.gz is available for 32 bit platform
Be more verbose on reporting scp errors
还修复了一些bug,下载地址:http://www.percona.com/mysql/xtrabackup/1.0/
YII Blog
Yeah Cheung 's Yeah Cheung
yeah

如需合作,请发邮件! (realloveyou@foxmail.com)
热门文章
搜索
计数器
64985
最新留言
链接
最新评论
URL重定向
Dec 24, 2009 12:32:32 AM | Comments(14) | Category:PHP学习 | Tags:URL 重定向
<?php
/**
* URL重定向
*
* @param string $url
* @param int $time
* @param boolean $js
* @param string $msg
public function redirect($url,$time=0, $js = false, $msg='')
{
//多行URL地址支持
$url = str_replace(array("\n", "\r"), '', $url); //如果为多行地址,去除\n \r
if (!headers_sent()) { //判断header头是否已经发送
// redirect
if(0===$time) {
header("Location: ".$url);
}else {
header("refresh:{$time};url={$url}");
echo($msg);
}
exit();
} else if(!$js) { //header头已经发送,并且采用非js方式跳转
$str = "<meta http-equiv='Refresh' content='{$time};URL={$url}'>";
if($time!=0)
$str .= $msg;
exit($str);
} else { //采用js方式跳转
$str = "<script type=\"text/javascript\">
alert('" . $msg . "');
setTimeout(\"location='" . $url . "';\", " . $time . ");";
}
}
?>
/**
* URL重定向
*
* @param string $url
* @param int $time
* @param boolean $js
* @param string $msg
public function redirect($url,$time=0, $js = false, $msg='')
{
//多行URL地址支持
$url = str_replace(array("\n", "\r"), '', $url); //如果为多行地址,去除\n \r
if (!headers_sent()) { //判断header头是否已经发送
// redirect
if(0===$time) {
header("Location: ".$url);
}else {
header("refresh:{$time};url={$url}");
echo($msg);
}
exit();
} else if(!$js) { //header头已经发送,并且采用非js方式跳转
$str = "<meta http-equiv='Refresh' content='{$time};URL={$url}'>";
if($time!=0)
$str .= $msg;
exit($str);
} else { //采用js方式跳转
$str = "<script type=\"text/javascript\">
alert('" . $msg . "');
setTimeout(\"location='" . $url . "';\", " . $time . ");";
}
}
?>
备份,恢复数据库
Dec 23, 2009 10:53:21 PM | Comments(1) | Category:PHP学习 | Tags:备份 恢复数据库
<?php
/*备份数据库,参数$tables如果手工设定地话,不需要给出表前缀
$dbname 数据库名字
$bakfile可以不指定(备份在PHP程序同一目录下),
也可以是一个目录(自动生成个文件名备份在此目录下),也可以是一个包含路径的文件名
*/
public function backup($bakupFile = null, $tables = array())
{
if (empty($bakupFile)) {
$backupFile = $this->dbname . date("Ymdhis") . '.sql';
} elseif (is_dir($backupFile)) { //判断$backupFile是否为目录
if (preg_match('/\/$/', $backupFile)) { //如果$backupFile 的格式为 "目录名/"
$backupFile = $backupFile . $this->dbname . date("Ymdhis") . '.sql';
} else {
$backupFile = $backupFile . '/' . $this->dbname . date("Ymdhis") . '.sql';
}
}
if (!$tables) { //如果数组 $tables为空,则备份所有表
$this->query("SHOW TABLES");
while ($row = mysql_fetch_row($this->queryID)) {
$tables[] = $row[0];
}
} else {
foreach ($tables as $k => $v) {
$tables[$k] = $this->tablePrefix . $v;
}
}
if ($fp = fopen($bakfile, 'wb')) {
if ($this->dbcharset) { //是否设置了数据库的编码格式
fwrite($fp, "SET NAMES " . $this->dbcharset . ";\n\n");
}
foreach ($tables as $table) {
$this->dumpTable($table, $fp); //备份表
fwrite($fp, "\n");
}//foreach
fclose($fp);
return true;
} else {
return false;
}//if
}
//私有方法 导出表格
protected function dumpTable($table, $fp)
{
//备份表结构
//fwrite($fp, "-- \n-- {$table}\n-- \n");
$row = $this->findBySql("SHOW CREATE TABLE `{$table}`");
fwrite($fp, str_replace("\n","", $row['Create Table']) . ";\n\n" );
//备份表数据
$this->query("SELECT * FROM `{$table}`");
while ($row = mysql_fetch_assoc($this->queryID)) {
foreach ($row as $k=>$v) {
$row[$k] = "'" . $this->qstr($v) . "'" ; //用mysql_real_escape_string 转义字符
}
$sql = "INSERT INTO `$table` VALUES (" . join(",", $row) . ");\n";
fwrite($fp, $sql);
}
mysql_free_result($this->queryID);
fwrite($fp, "\n");
}
//恢复数据库文件
public function restore($bakfile)
{
if ($fp = fopen($bakfile, 'r')) {
$sql = '';
while (!feof($fp)) {
$line = fgets($fp);
if (strpos($line,'--')!==0)
{
$sql .= $line;
//pp($sql);
}
if (preg_match('/;\s*$/', $sql)) {
$this->query($sql);
$sql = '';
}
}
fclose($fp);
return true;
} else {
return false;
}
}
?>
/*备份数据库,参数$tables如果手工设定地话,不需要给出表前缀
$dbname 数据库名字
$bakfile可以不指定(备份在PHP程序同一目录下),
也可以是一个目录(自动生成个文件名备份在此目录下),也可以是一个包含路径的文件名
*/
public function backup($bakupFile = null, $tables = array())
{
if (empty($bakupFile)) {
$backupFile = $this->dbname . date("Ymdhis") . '.sql';
} elseif (is_dir($backupFile)) { //判断$backupFile是否为目录
if (preg_match('/\/$/', $backupFile)) { //如果$backupFile 的格式为 "目录名/"
$backupFile = $backupFile . $this->dbname . date("Ymdhis") . '.sql';
} else {
$backupFile = $backupFile . '/' . $this->dbname . date("Ymdhis") . '.sql';
}
}
if (!$tables) { //如果数组 $tables为空,则备份所有表
$this->query("SHOW TABLES");
while ($row = mysql_fetch_row($this->queryID)) {
$tables[] = $row[0];
}
} else {
foreach ($tables as $k => $v) {
$tables[$k] = $this->tablePrefix . $v;
}
}
if ($fp = fopen($bakfile, 'wb')) {
if ($this->dbcharset) { //是否设置了数据库的编码格式
fwrite($fp, "SET NAMES " . $this->dbcharset . ";\n\n");
}
foreach ($tables as $table) {
$this->dumpTable($table, $fp); //备份表
fwrite($fp, "\n");
}//foreach
fclose($fp);
return true;
} else {
return false;
}//if
}
//私有方法 导出表格
protected function dumpTable($table, $fp)
{
//备份表结构
//fwrite($fp, "-- \n-- {$table}\n-- \n");
$row = $this->findBySql("SHOW CREATE TABLE `{$table}`");
fwrite($fp, str_replace("\n","", $row['Create Table']) . ";\n\n" );
//备份表数据
$this->query("SELECT * FROM `{$table}`");
while ($row = mysql_fetch_assoc($this->queryID)) {
foreach ($row as $k=>$v) {
$row[$k] = "'" . $this->qstr($v) . "'" ; //用mysql_real_escape_string 转义字符
}
$sql = "INSERT INTO `$table` VALUES (" . join(",", $row) . ");\n";
fwrite($fp, $sql);
}
mysql_free_result($this->queryID);
fwrite($fp, "\n");
}
//恢复数据库文件
public function restore($bakfile)
{
if ($fp = fopen($bakfile, 'r')) {
$sql = '';
while (!feof($fp)) {
$line = fgets($fp);
if (strpos($line,'--')!==0)
{
$sql .= $line;
//pp($sql);
}
if (preg_match('/;\s*$/', $sql)) {
$this->query($sql);
$sql = '';
}
}
fclose($fp);
return true;
} else {
return false;
}
}
?>