用Curl登录Plesk后台备份文件

Plesk很不厚道,备份文件不能轻易用压缩软件解压,很不方便。之前我也用过outlook的办法解压plesk备份文件,不过这个方法在系统升级后已经失效。

我们可以用PHP的Curl模块备份网站文件。
其主要思想是通过Curl直接抓取https后台下,file manager中的文件。
备份环境:Apache/2.2.11 (Win32) SVN/1.5.6 PHP/5.3.0 DAV/2
主要Curl代码如下

$ch = curl_init();

//https支持
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);

curl_setopt($ch, CURLOPT_URL, $url); //plesk 后台路径
curl_setopt($ch, CURLOPT_USERPWD, USERNAME.’:’.PASSWORD); //plesk 后台用户名,密码

curl_setopt($ch, CURLOPT_HEADER, 1); //输出header部分
curl_setopt($ch, CURLINFO_HEADER_OUT, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

if ($method == ‘POST’) {
curl_setopt($ch, CURLOPT_POST, 3);
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars); //post提交的urlencode数据
}
$data = curl_exec($ch);
curl_close($ch);

[巾*(穴/登)]

论坛里有些汉字比较生僻,所以发布到论坛就会成为很怪的字符,例如,我们常常可以看见“[巾*(穴/登)]”这个东西,这是‘正’字的发音,实际上是绘画的画字的意思,但古书里用的“证”字,现在已经念不通。

在PHPMyadmin里面搜索:SELECT FROM bbs_posts WHERE message like ‘%[巾(穴/登)]%’;
可是并没搜索到结果。试着把网页编码改为UTF-8,搜索结果就可以看到。

用HTTP_Request2替换Curl更新Twitter

由于更换服务器,不再支持Curl模块。所以决定使用Pear的HTTP_Request2包来更新更新Twitter。

原Curl代码:

$ch = curl_init($url);
if($postargs !== false){
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postargs);
}
if($this->username !== false && $this->password !== false)
curl_setopt($ch, CURLOPT_USERPWD, $this->username.’:’.$this->password);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_NOBODY, 0);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $this->user_agent);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $this->headers);
$response = curl_exec($ch);
$this->responseInfo=curl_getinfo($ch);
curl_close($ch);
if(intval($this->responseInfo[‘http_code’])==200){
if(class_exists(‘SimpleXMLElement’)){
$xml = new SimpleXMLElement($response);
return $xml;
}else{
return $response;
}
}else{
return false;
}

换为Pear::HTTP_Request2:

$req = new HTTP_Request2($url, HTTP_Request2::METHOD_GET);
$req->setHeader($this->headers);
if($postargs !== false){
$arr_post=explode(“&”,$postargs);
for($i=0,$imax=count($arr_post);$i<$imax;$i++){
$item_arr=explode(“=”,$arr_post[$i]);
$req->addPostParameter($item_arr[0], $item_arr[1]);
}
}
$req->setBody(‘’);
$response = $req->send()->getBody();
if (200 == $req->send()->getStatus()) {
return $response;
}else{
return false;
}

下载解压HTTP_Request2来相同目录,如需测试,还需要下载Net_URL2PHPUnit。运行AllTests.php显示如下:

PHPUnit 3.4.6 by Sebastian Bergmann.

……………………………

Time: 0 seconds, Memory: 5.00Mb

OK (33 tests, 80 assertions)
表示安装HTTP_Request2正确。

IE8上window.onresize的问题

今天发现IE8下window.onresize会作用于< select >上, 或者其他Form元素变形的时候.
本来有个脚本用于替换背景,
window.onresize = resize;
function resize() {
window.location.reload();
}
可是选择select或者其他Form元素变形的时候,resize会被触发。

如果去掉
< !DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
http://www.w3.org/TR/REC-html40/transitional.dtd“ >
发现没有这个问题,window.onresize没有被触发。

考虑用检测window的宽度是否发生变化,来替代window.onresize。

09年的不许

  1. 不许偷菜
    目前,文化部已经要求开心网等企业的“偷菜”游戏改名。上周,“开心农场”研发者“五分钟”公司负责在接受媒体采访时称,“因为考虑到价值取向等问题,人人网的开心农场、腾讯的QQ农场等我们正式授权的网站,已经一律修改为‘采摘’、不叫‘偷’了。”
  2. 不许BT
    据广电总局的统计,我国使用BT技术进行影视剧下载的网站,最多时曾达近百家,近日关闭此类网站近30家。
  3. 不许注册个人域名
    为加强域名注册信息审核工作,中国互联网络信息中心(CNNIC)日前发布公告规定,从2009年12月14日上午9时起,个人用户将没有资格进行域名注册。而工业和信息化部电信管理局副局长王建文也在15日透露,工业和信息化部将开展为期1年两个月的手机治黄专项行动,专项行动将有重点地针对业务环节漏洞开展,并着眼于建立长效机制。
  4. 不许Twitter
    伟大的GFW功不可没,但是冒出更多山寨版:新浪微博, Baidu i贴吧, QQ邮箱微博
  5. 不许WAP涉黄
    中新网12月15日电(记者 刘育英)工业和信息化部电信管理局副局长王建文15日透露,工业和信息化部将开展为期1年零2个月的手机治黄专项行动,专项行动共包括三个阶段。
  6. 不许网游
    出版署此前已经停止了《魔兽世界》的审批工作,《魔兽世界》至今未拿到出版署的审批通过文件。此次,柳斌杰署长并没有提到《魔兽世界》是否在清理范围内。如果《魔兽世界》遭到清理或被巨额罚款,《魔兽世界》五百万活跃玩家有奖不知该何去何从了。
  7. 不许谷歌涉黄
    国家有关部门18日下午召见“谷歌中国”网站(google.cn)负责人,宣布对“谷歌中国”网站的处罚措施,暂停该网站境外网页搜索业务和联想词搜索业务,并责令其立即进行整改,彻底清理低俗内容。
  8. 不许没有“绿坝·花季护航”
    5月19日,工信部下发了《关于计算机预装绿色上网过滤软件的通知》[工信部软(2009)226号,下称226号文]。226号文规定:从今年7月1日开始,在我国境内生产销售的计算机出厂时应预装“绿坝”软件;进口计算机在国内销售前应预装“绿坝”软件;“绿坝”软件应预装在计算机硬盘或随机光盘内,且在恢复分区和恢复光盘中作为备份文件。
    所有的不许都源于“中央外宣办、全国扫黄打非办、工信部等九部门将在全国范围内联合开展深入整治互联网和手机媒体淫秽色情及低俗信息专项行动。”

我们的网络干净了,纯洁了,万岁~!“XXX,不许你妈妈喊你回家吃饭”

。。。。。。“我净化的不是网络,是寂寞”

儿子满月~

bb
今天,是儿子满月的日子,我也正式荣升为父亲一个月。虽然这一个月走过来有如枪林弹雨、刀风血雨,但是看着宝宝健康成长,心里顿时没有了抱怨,对,我是心甘情愿的。

我不想比较我的上一辈是在如何恶劣的环境把我带大,是多么困难;也不论我的婚姻生活是否坎坷和蹒跚;作为负责任的父亲,我会尽我的最大努力。即使我的性格有所缺欠,我的家庭所有缺欠,这都不应成为我放弃或者推卸的理由。

现今的社会确实进步了,但世道也艰难,养育孩子也不容易,今天之后这场战斗更加轰轰烈烈,儿子快快长吧!爸爸会一直守护着你~!

Vista下无法连接Mysql5的问题

没想到在Vista SP2 下安装Mysql5会遇到麻烦,安装过程都很顺利,Dos下访问mysql也完全没问题。可是通过Apache访问phpmyadmin就是不行,提示如下错误:
A connection attempt failed because the connected party did not (trying to connect via tcp://localhost:3306)

开始以为是mysql的版本问题,我先装的是5.1, 然后是5.43、5.0,均出现同样的问题。也根据网上流传的Vista下Mysql5.0无法运行的帖子,试过用ResHacker.exe修改MySQLInstanceConfig.exe,还是没能解决。

后来检查过VIsta的防火墙设置,3306端口已经打开,没有发现问题。开始估计问题出在 PHP脚本上,根据mysql_connect的官方解释:
Note: Whenever you specify “localhost” or “localhost:port” as server, the MySQL client library will override this and try to connect to a local socket (named pipe on Windows). If you want to use TCP/IP, use “127.0.0.1” instead of “localhost”. If the MySQL client library tries to connect to the wrong local socket, you should set the correct path as Runtime Configuration in your PHP configuration and leave the server field blank.

把localhost改为127.0.0.1,一起正常~

都是Vista SP2惹得祸

就为了把Vista升级到SP2,折腾了大半天~,安装后本以为一切顺利,谁知重启系统后,系统出现如下错误无法登录。

!! 0xc0190036 !! 2303/57080 (mscorrc.dll)
估计出错原因是SP2需要的DLL丢失。

系统无法登陆后,首先想到的是还原系统,于是我试着修复系统,谁知修复失败,恍然大悟,我是在安全模式下升级的SP2,因为以前在正常模式下已经尝试过安装sp2几次,均告失败。

这下脑子蒙了~接着尝试备份系统里的数据。可是备份数据又遇到更多的困难:

  • 电脑是笔记本,拆卸硬盘不靠谱
  • 整个系统只有一个C盘,PQMagic也无法分出多余的空间来做分区,安装新系统
  • 系统分区为NTFS,利用深山红叶光盘进入DOS,但是下面无法直接访问。
    --安装ntfspro4.3exe可以解决dos访问NTFS的问题,不过由于dos下中文为乱码,xcopy文件再次失败
  • 系统修复可以进入命令行,但是无法把数据复制到USB接口的移动硬盘
    --试了udos.exe(无法辨认模块)和usbmass.exe(初始化到5就死机),均告失败
  • 尝试安装光盘版XP-WinPE,进入PE后居然找不到硬盘
    –原因是硬盘为SATA硬盘,PE无法辨认。最后通过修改BIOS,将SATA改为兼容模式,硬盘终于露出庐山真面目。
    数据备份成功后,无奈将系统还原到出厂状态,一个字:累!

事后回想咱们这个VISTA也算是正版,也应该享有正版服务啊,可是系统里,网络上就是找不到VISTA的客户投诉方法,无奈还是回到http://social.answers.microsoft.com,看看我提交的问题有否回应,下面倒是有这么一条:

安全模式能进么?
是预装的系统还是购买光盘的?
让人有些哭笑不得~突然觉得移动和电信的客服还是不错的哦

心里不停低估着:微软是不是也应该为SP2升级出错对我们造成的困扰表示道歉吧~

升级Blender到2.49b出现的问题

今天把Blender从2.48a升级到2.49b(Python2.62),完成后发现Collada Export从Export菜单中消失,无法导出dae文件。于是自己从Collada 1.4.0 Plug-in下载来安装,装好后发现导出dae出现如下错误:
FEEDBACK: Illusoft Collada 1.4 Plugin v0.3.159 started
Traceback (most recent call last):
File “<string>”, line 1, in <module>
ImportError: No module named BPyRegistry

Traceback (most recent call last):
File “C:Program FilesBlender FoundationBlender.blenderscriptsbpymodules
colladaImExcstartup.py”, line 609, in ButtonEvent

看来是scripts中py脚本丢失了,试着卸载重新安装,在安装的时候选择脚本安装在blender的安装目录下(C:Program FilesBlender FoundationBlender.blenderscripts),问题解决所有不见的exporter又回来了。

另外,GFW真是弱智,Python的下载网页有必要被墙么?只增笑尔~

打造自己的FireFox插件(Add-ons)

根据最新的FF官方插件教程,再加上7zip的帮助,我们可以轻松打造自己的FireFox插件。
先准备生成xpi的所有文件,目录结构如下:(假设插件名为zhaiduo)

  • 插件目录zhaiduo

    • 文件install.rdf
    • 文件chrome.manifest
    • 目录chrome

      *   目录content
      
              *   文件overlay.xul
      *   文件overlay.js
      
          *   目录locale
      
              *   目录en-US
      
                      *   文件zhaiduo.dtd
      
          *   目录skin
      
              *   文件overlay.css
      *   文件icon.png
      

      根据教程准备好文件后,安装好7zip,然后利用下面的bat脚本调用7-zip自动生成xpi文件即可:

      set x=%cd%
      md buildchrome
      cd chrome
      7z a -tzip “%x%.jar” -r -mx=0
      move “%x%.jar” ..buildchrome
      cd ..
      copy install.
      build
      copy chrome.manifest build
      cd build
      7z a -tzip “%x%.xpi” * -r -mx=9
      move “%x%.xpi” ..
      cd ..
      rd build /s/q

初学OpenGL

p20091012180252

  1. Glut替换Glaux,Glaux已经过时,前功能尚有欠缺,没有Glut强大。
  2. 推荐OGL教程:

  3. Glew来使用GLSL,方便转换不同版本。 如ARB(deprecated in OGL3.2)、OpenGL 2.0等,需要glext.h扩展

  4. 推荐GLSL教程:

游戏:Borderlands

borderlands
Borderlands是一款独特的第一人称角色扮演射击游戏,它以独特的概念艺术渲染方式,通过手绘材质结合传统的虚拟现实渲染模式,勾勒出厚重而炫目的高画质游戏画面,带给你不同于传统三维射击游戏的全新视觉体验。

这款游戏是由Gearbox开发,基于Unreal Engine 3游戏引擎,(Gears of War 2战争机器二就是用的这款引擎)利用最新图形渲染技术,结合运用了diffuse, normal和specular三种材质映射,加上照明,阴影和边缘处理技术,达到令人惊叹的电影效果,是真正的三维与艺术的完美结合。
borderlandsborderlands2borderlands3

老板与劣质虚拟主机

上个月底网站的主页被黑客添加类似这样的代码

< body >< iframe src=”http://hacker-statistic/……” width=”0” height=”0” frameborder=”0” > < / iframe >
以至于被Google的安全浏览功能屏蔽,用Firefox网站无法访问。
p20090915154533

从文件权限666来看,文件可以被写入,好像是权限设置问题。但是我尝试把权限改为600,文件仍然被修改。从这里我们可以判断:是服务器的安全有问题,可以猜测是黑客在服务器上拥有写的权限。这说明什么,当然是虚拟主机提供商太劣质。但是…

老板发现后,我说明我的看法,但是老板自己认为:网页权限是666,就是是任何人都可以修改,通过网页也可以被修改。加上咨询虚拟主机提供商的意见(他们的意见和老板一致,是文件权限666造成网页被修改,而且还很善意的帮我们修改FTP密码,并提供一些安全建议,做的很全套,很有说服力),老板强烈建议我重新审视现用系统的安全性,特别注意不要设置666,不要把密码随便记录在文件中。我中肯的点点头。

作为做技术的我,我的确在权限设置上不够严谨,但是666并不是我愿意设置的,而是根据系统需要和虚拟主机上可以写文件的条件造成,要不我完全可以设置权限为660,甚至600。

我知道的原因在老板看来不是问题,或者说是不能明白。于是老板接受了虚拟主机提供商的意见。我也再次加强系统的安全防范。就这样事情慢慢被淡忘…

半个月后的今天,网站主页再次被修改。老板是乎这才明白过来,问题出在服务器上,在劣质虚拟主机提供商的身上。也许我这才可以松口气,也许我会继续郁闷与老板在技术问题的沟通上,也许我会继续争扎在是老板和劣质虚拟主机提供商的怪圈中…

后续更新2009-09-16:
老板再次提出质疑:说我的电脑是否有装防病毒软件,最好用杀毒软件杀杀毒。
真是郁闷,如果我的电脑有病毒,为什么只是那个网站有问题,而别的网站没事,那这个黑客真是好心,只黑我们一个网站的主页而已。

用VC++测试OpenGL和DirectX9

测试环境WinXP专业版SP3:

Microsoft Visual C++ 2008 Express Edition
Microsoft DirectX SDK (March 2009)

测试DirectX9.aspx)遇到的问题:

错误:Cannot convert from ‘const char [..]’ to ‘LPCTSTR’

Problem

This error message means that you are trying to pass a multi-byte string (const char [12]) to a function which expects a unicode string (LPCTSTR). The LPCTSTR type extends to const TCHAR, where TCHAR is char when you compile for multi-byte and *wchar_t for unicode. Since the compiler doesn’t accept the char array, we can safely assume that the actual type of TCHAR, in this compilation, is wchar_t.

解决办法
Change your project configuration to use multibyte strings. Press ALT+F7 to open the properties, and navigate to Configuration Properties > General. Switch Character Set to “Use Multi-Byte Character Set“.

错误:Error LNK2019: unresolved external symbol _Direct3DCreate@4 referenced in function “long_cdecl InitD3D(struct HWND*)”(?InitD3D@@YAJPAUHHWD@@@Z)

解决办法 确保DirectX SDK安装正确,检查下列路径:
Tools->Options->Projects and Solutions->VC++ Directories.
Under the selection box “Show Directories For”, select “Library Files” and check the directory “C:/DXSDK/Lib”;
then the same for “Include Files” and check “C:/DXSDK/Include”.

然后

Those are linker errors, not compiler errors, so they don’t involve missing headers.
You need to link to the appropriate DirectX import libraries.
when you make a project, select Project->Properties->Linker->Input, and under Additional Dependencies, enter these items separated by a space: d3d9.lib d3dx9.lib“;

或者可以直接在源文件里加入

#pragma comment(lib, “d3d9.lib”)

#pragma comment(lib, “d3dx9.lib”)

#pragma comment(lib, “dxerr9.lib”)

测试OpenGL遇到的问题:

Problem:

error LNK2019: unresolved external_ Help me please

LNK2019: unresolved external symbol _gluPerspective@32 referenced in function

Add “opengl32.lib glu32.lib glaux.lib“ to Project Properties->Configuration Properties->Linker->Input->Additional Dependencies.

LNK1104: cannot open file ‘glaux.lib’

r u running VS2008?
if so, just remove glaux.lib from the link inputs.

我被中国电信“省钱”

现在家里用的是3M带宽的E8套餐(228元全包),其中包含价值25元免费无线宽带,后来接到中国电信电话说加1元就可以升级到带宽4M的E9套餐,于是很爽快的升级了。最近仔细看了看收到的电信收费收据,居然还扣了我25元无线宽带费和5元无线收音机。一个月就这样被省了30块大洋,真是一不留神啊~!

气愤之余上网到电信服务厅投诉:

欢迎使用中国电信在线客服,客服人员热忱为您服务!为了您的信息安全,请不要在此对话框输入银行帐号、密码等保密资料。
工号(gzes25)正在为您服务!
gzes25: 你好!请问有什么需要帮忙吗?
8×××××××: 我是从E8套餐加1元升级到E9套餐,当时工作人员说只需要加一元钱 但是现在E9套餐居然还收我25元无线宽带费+5元无线收音机,为什么?
8×××××××: ??
8×××××××: 这算哪门子在线服务?
gzes25: 对不起,让您久等。
gzes25: 很抱歉,在线客服只提供网站导航,为了更好解答您的问题。请您到本网站的客户服务->业务咨询提出您的问题,谢谢
……

就这样被客服了。。。

2009-09-11日更新:电信人员承诺退还之前扣掉的4个月无线宽带费用,一共100元~~1188455801363

创新工场引导中国创新革命?


离开谷歌的谷歌全球副总裁兼大中华区总裁李开复创建的“创新工场”是一个全方位的创业平台和投资公司,旨在帮助中国青年成功创业。作为一个创新产业的孵化器,创新工场借鉴了美国创意实验室(IdeaLab)的成功经验,希望给予在中国的从事创新产业,但是缺少投资资本和初期培训的年轻企业家帮助和扶持。这是一个令人眼睛一亮的新兴事件,让沉闷的中国创意产业乃至中国的教育界如沐清风。

眼下国内抄袭现象严重,创新这个词形同虚设,仅仅是面子工程的常用摆设。从动漫产业、电影、电视节目到建筑设计、广告宣传,打着创新旗帜的山寨创意比比皆是。本以为创新之路在中国已死,悉听开复先生的创意宣告,心中不由一动,中国实在是太需要李开复先生这样的有识之士,来刺激和推动中国人的创新革命。

虽然前路崎岖,但是凭借李开复先生的热情与决心,我相信中国的创新革命已经悄然开始。

GoogleAppEngine和GoogleCode继续测试

GoogleAppEngine测试
去年申请GoogleAppEngine帐号,用Python写了个简单的TwitterUpdate到现在,已经有段时间了。现在希望那个有时间把它完善一下,也正好满足Twitter被墙后的需要。
GoogleAppEngine主要命令:
devserver.py yourapp/ 启动运行环境
appcfg.py –email=zhaiduo@gmail.com update yourapp/ 提交

出现的问题:
AppConfigNotFoundError - 注意文件名不要错误: devserver.py yourapp/
< type ‘exceptions.SyntaxError’ >: Non-ASCII character ……, but no encoding declared; - 中文编码问题

办法:添加到Python文件头:# -- coding:utf-8 -- #必须在第一行或者第二行
GoogleCode测试
选用Subversion作为更新方式,工具用的是Tortoisesvn

为什么要测试GoogleAppEngine和GoogleCode这两种Google提供服务?
1. 了解Google开发项目的程序和过程,以提高自己的项目维护、管理和开发能力。
2. 熟悉GoogleAppEngine,SVN和Python。
3. 可以当作免费存储空间。(AppEngine是限制流量:每天下载量可以到50G; GoogleCode:单个文件最大: 100 MB. 共2G空间 )

Flash导入动态三维DAE文件

Flash导入DAE文件制作三维动画的一些参考网址:
Papervision3D GreatWhite : MD2 Animation
http://sleepydesign.blogspot.com/2008/01/papervision3d-greatwhite-md2-animation.html

DAEMC
http://tracehello.wordpress.com/2009/04/

DAE & MD2 Example
http://techblog.floorplanner.com/2009/05/

Cast3D
http://cast3d.org/demos:lwalkfig

我偏向使用Blender+DAEMC来导入dae模型,如果出现形如“Couldn’t find the joint id = Bone_…”的错误,通常都是dae文件文件的问题。特别注意骨骼(armature bones)间的父子关系。
model = new DAEMC(true, null, 0);
model.load(“soldier.dae”, new MaterialsList( { soldier_flat_png: new BitmapFileMaterial(“soldier_flat.png”,true) } ));
model.scale=250;
scene.addChild(model);
startRendering();

剩下的就是如何用Blender建模、贴图、骨骼和动画,最后输出格式标准的dae文件。
p20090827132317
p20090827133140

另外感谢http://www.tomtallian.com/提供的3D人物模型。^^骨骼和动画需要自己加。

PS: javascript控制所有iframe显示内容
window.onload=function(){
for(i = 0; i < document.all.length; i++){
if(document.all(i).tagName==”IFRAME”){
document.all(i).src=”about:blank”;
}
}
}

2009-08-24存档

AS3实时光影追踪渲染(Flash ActionScript 3.0 Raytracer)
p20090824101711
source: http://www.strille.net/works/as3/raytracer/
默认画面在双核2G处理器的电脑上不太流畅,双核2.6G十分流畅,内存均为2G. 用PV3D来尝试做出类似效果,先用ShadedMaterial和ShadowCaster测试,参考zupko.info的casting shadow:

shadowCaster.setType(ShadowCaster.DIRECTIONAL);

shader = new EnvMapShader(light, envMap.bitmapData, envMap.bitmapData, 0x333333);
bitmapMaterial = new BitmapMaterial(pv3dBitmap.bitmapData, false);
bitmapMaterial.smooth = true;
var shadedMaterial:ShadedMaterial = new ShadedMaterial(bitmapMaterial, shader);
shadedMaterial.interactive = true;

bmdEnvSphere.draw(viewport, matrixEnvSphere);

速度在2.0G的CPU上巨慢,效果也不太理想,改为环境材质伪造光线追踪:

var envBlur:BitmapData = new Bitmap(new rayTracingImg(200,200)).bitmapData
envBlur.applyFilter(envBlur, envBlur.rect, new Point(), new BlurFilter(4, 4, 3));
var em:EnvMapMaterial=new EnvMapMaterial(light, envBlur);
em.smooth=true;
em.tiled=true;

速度稍快,但是已经失去了光线追踪的意义,效果也是马马虎虎,看来要做到网页Flash实时三维渲染,我还有很长的路要走.


AS3 Phongshader材质渲染

高阶的光线追踪渲染可以看看这个CUDA的教程: CUDA ray tracing tutorial

基于MVC架构的Javascript免费开源框架 - JavaScriptMVC

CSS渐变背景(Firefox 3.6)

2009-08-19存档

利用规范链接(Canonical Link)避免网站重复内容,防止被搜索引擎惩罚:Canonical Link Element (by Matt Cutts)

在< Head >中添加:
< link rel=”canonical” href=”http://example.com/page.html”/ >

更多关于规范链接(Canonical Link):Learn about the Canonical Link Element in 5 minutes

URL Rewrite: 把无www域名301导向到www前缀域名

RewriteCond %{HTTP_HOST} ^domain.com
RewriteRule ^(.*)$ http://www.domain/$1 [R=permanent,L]

匹配所有gif.jpg.png图片,名称不分大小写。
< FilesMatch “.(?i:gif|jpe?g|png)$” >
Allow from all
< / FilesMatch >

更多关于:PCRE
注意:有些版本Apache可能不支持i和?的用法,出现如下错误:

.htaccess: Regex could not be compiled
Apache version 1.3.41 (Unix)

样式表:旋转九十度

.rotate{
-webkit-transform: rotate(-90deg);
-moz-transform: rotate(-90deg);
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
}
效果如下:

p20090819112931

p20090819112921


CSS3讲解:

Hello WP again!

I use WP again.

本以为Google Blogger写博客,通过FTP发布是最经济和方便的写作方式。因为通过FTP发布只需要购买便宜的HTML的静态空间,在Blogger写博客是免费的,可以最大限度降低成本。但是在GFW宁可错杀一千不可放过一个的淫威下,这种方式已经失效。

由于GFW的限制,尝试了一段时间的Google Data APITOR来勉强更新Blogger上的博客,最近用TOR也无法登陆Blogger,API可以发送成功,但是FTP publish无效,暂不清楚原因。

p20090818115741

所以,我再次选择WP的来更新博客。

电脑遭遇战

Restored:

这两天忙着给公司换了3台新电脑和四台旧电脑。新电脑配置:

CPU双核E5300 2.6G,七彩虹p43主板,七彩虹512M 9500GT显卡,500G西数硬盘,DVD刻录机,长城19寸显示器,每台花了3000大洋多一点,确实便宜。操作系统还是02年版SP2的XP,装机很顺利。新显示器看起来还不错,感叹国产货确实也不差,回想公司之前用的HP电脑,显示器坏了五台,每次修都300大洋,品牌的机机也不过如此。后悔的是显示器买小了,感觉显示器能够并排放两个800宽的浏览器比较实用。19寸的最宽只有1440,离1600还有距离。至于旧电脑,麻烦就就出现在这里了,旧电脑需要重新调配内存,并用GHOST还原系统。也许电脑真的也有生命,换下来的有台电脑开始闹情绪,调配完内存后,无法进入XP系统,倒霉的是这台机光驱不灵光,也没有软驱。不得不硬着头皮把硬盘拆下来,接到别的机子试试。也许是传染病,换过去的硬盘也让那台机子的光驱变得扭扭捏捏,GHOST还原到最后说文件丢失,用系统光盘装机也出现文件丢失的情况,真是束手无策啊。无奈之下送去电脑城维修,师傅也用他的GHOST还原系统,谁知也出现文件丢下的情况,并且丢下一句话,硬盘铁定坏了,修旧硬盘不如换新的吧。失望之余,回到公司,回想之前曾经进入过DOS,见过里面白花花的文件名,于是想再继续试试运气。检测过硬盘,也没有发现坏道。唯一一条路就是再用光驱试试。也许是天气太热,光盘在光驱里多遛两圈就会晕倒不醒人事。再换光驱?但是又不想麻烦拆别的电脑,于是想想,那就让它透透气吧。终于,经过N次尝试,光盘里的SP3版GHOST文件顺利还原。黄澄澄的文件夹终于被我乖乖复制起来。一切天光,瘫坐椅上,脑子一片空白,隐隐作痛。打杂真累~


Adam 于 8/14/2009 12:11:00 上午 发布在 窄多之Blog

先前帖子

存档

电脑遭遇战



这两天忙着给公司换了3台新电脑和四台旧电脑。新电脑配置:CPU双核E5300 2.6G,七彩虹p43主板,七彩虹512M 9500GT显卡,500G西数硬盘,DVD刻录机,长城19寸显示器,每台花了3000大洋多一点,确实便宜。操作系统还是02年版SP2的XP,装机很顺利。新显示器看起来还不错,感叹国产货确实也不差,回想公司之前用的HP电脑,显示器坏了五台,每次修都300大洋,品牌的机机也不过如此。后悔的是显示器买小了,感觉显示器能够并排放两个800宽的浏览器比较实用。19寸的最宽只有1440,离1600还有距离。至于旧电脑,麻烦就就出现在这里了,旧电脑需要重新调配内存,并用GHOST还原系统。也许电脑真的也有生命,换下来的有台电脑开始闹情绪,调配完内存后,无法进入XP系统,倒霉的是这台机光驱不灵光,也没有软驱。不得不硬着头皮把硬盘拆下来,接到别的机子试试。也许是传染病,换过去的硬盘也让那台机子的光驱变得扭扭捏捏,GHOST还原到最后说文件丢失,用系统光盘装机也出现文件丢失的情况,真是束手无策啊。无奈之下送去电脑城维修,师傅也用他的GHOST还原系统,谁知也出现文件丢下的情况,并且丢下一句话,硬盘铁定坏了,修旧硬盘不如换新的吧。失望之余,回到公司,回想之前曾经进入过DOS,见过里面白花花的文件名,于是想再继续试试运气。检测过硬盘,也没有发现坏道。唯一一条路就是再用光驱试试。也许是天气太热,光盘在光驱里多遛两圈就会晕倒不醒人事。再换光驱?但是又不想麻烦拆别的电脑,于是想想,那就让它透透气吧。终于,经过N次尝试,光盘里的SP3版GHOST文件顺利还原。黄澄澄的文件夹终于被我乖乖复制起来。一切天光,瘫坐椅上,脑子一片空白,隐隐作痛。打杂真累~

PHP5.3.0==deprecated ^_^!

今天把内容管理系统升级,PHP升到5.3.0-windows-VC6版本,Apache升到2.2.11,Mysql升到5.1。安装过程很顺利,可是装好后,通过浏览器访问就一片混乱了,真是抓狂!

主要原因是5.3放弃了一些常用的函数:

ereg_replace() is deprecated
All ereg*-functions will be deprecated
split() is deprecated
All POSIX Regex function will be deprecated in PHP 5.3.
set_magic_quotes_runtime() is deprecated
mysql_escape_string() is deprecated
session_register(), session_unregister(), and session_is_registered() are now deprecated.
Use the $_SESSION superglobal array instead.

更多放弃和更新可以看这里:http://cvs.php.net/viewvc.cgi/php-src/UPGRADING?revision=PHP_5_3

Windows下快速安装Subversion的Apache服务器

PHP宣布使用Subversion作为新的版本控制系统。
相对于CVS而言,它主要有如下特点:
1.支持目录的版本化,复制、删除和改名操作。
2.仓库基于BerkleyDB数据库,具有更快的操作速度。
3.更加方便高效地存储任何文件,包括二进制和Unicode文件。
4.非常容易维护,和其它语言的互操作性很强。
也可以说Subversion是基于CVS的新一代版本控制系统。

Windows下快速安装Subversion的Apache服务器步骤如下:

下载Subversion 1.5.6
http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91
http://subversion.tigris.org/files/documents/15/45937/Setup-Subversion-1.5.6.msi

下载Tortoisesvn 1.6.3
http://tortoisesvn.net/downloads
http://downloads.sourceforge.net/tortoisesvn/TortoiseSVN-1.6.3.16613-win32-svn-1.6.3.msi?download

下载Apache HTTP Server 2.2.11
http://httpd.apache.org/download.cgi

分别在服务器端安装好Subversion和在客户端安装Tortoisesvn,然后在服务器端编辑Apache配置文件:
httpd.conf

取消注释
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so

在Subversion的bin目录下复制mod_dav_svn.so和mod_authz_svn.so到Apache的modules目录,在模块配置后面增加
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

最后在文件末增加
《Location /svn》
DAV svn

#SVN仓库父目录
SVNParentPath c:/SVN/

#风格样式控制文件
SVNIndexXSLT “/SVN/svnindex.xsl”

#访问控制,需要在Apache的bin目录下,用htpasswd为指定用户生成密码。

#htpasswd -cm c:SVNsvn-auth-file 用户名
AuthType Basic
AuthName “Subversion Repository”
AuthUserFile c:SVNsvn-auth-file
Require valid-user
《/Location》

启动Apache即可。

SVN简要操作

在客户端创建仓库:
打开资源管理器,c:/SVN/下添加目录zhaiduo,点击鼠标右键,在Tortoisesvn选项中点击Create Repository.
Import导入文件 推荐仓库布局/Trunk, /Branches, /Tags
checkout复制文件到在客户端本地
Commit提交修改文件
Updat更新客户端复制文件
Export导出干净文件

Tortoisesvn选项中编辑config文件,用于设置svn:keywords:Id.

Unity3D确实很酷




Unity3D是个真正的跨平台专业三维开发框架,支持各种三维游戏开发和网页三维插件,之前听说它也有一段时间了,本来想安装网页插件看看效果,但是并没有真心想去了解它,所以也就没有行动。昨天看了Unity3D is awesome!,想想4M的插件确实也不大,能够让everydayflash也惊叹的确实应该不简单。兴趣一下猛增,赶紧装来看看,结果确实让人叹为观止。


近乎真实完美的三维场景,我足足在那个天堂(Tropical Paradise)里面溜达了半个小时,相对Flash所能做出来的网页三维效果,Unity3D已经是非常成熟和先进。感叹之余希望可以从Unity3D里面学点一招半式,让我的三维世界更加丰富多彩。^_^

20090514学习

1. getDefinistionByName as Class

import flash.utils.getDefinitionByName;
var className:Class = getDefinistionByName( StringName ) as Class;
var foo:Sprite = new className();
source

2. BitmapDataUnlimited

import com.formatlos.as3.lib.display.BitmapDataUnlimited;
import com.formatlos.as3.lib.display.events.BitmapDataUnlimitedEvent;

var bdu:BitmapDataUnlimited = new BitmapDataUnlimited();
bdu.addEventListener(BitmapDataUnlimitedEvent.COMPLETE, onBmpReady);
bdu.create(5000, 5000, true);

var hugeBmp : BitmapData;

function onBmpReady(event : BitmapDataUnlimitedEvent) : void
{
hugeBmp = bdu.bitmapData;
trace(“BitmapData: w=” + hugeBmp.width + “ h=” + hugeBmp.height);
}
e.g. a BitmapData with 12000 x 12000 px needs more than 1GB.

3、Photoshop技巧:提高截屏图片打印的分辨率 - PS普通截屏图片到300dpi的分辨率