网站开发 | 咸水鳄

咸水鳄



如何快速将Metadata导入MySource Matrix系统

Category: Linux, 网站开发
标签:, ,

本地的PWC进行的他们公司对外和局域网的网站建设断断续续已经进行了一年多了, 跟很多澳洲政府教育相关部门一样, PWC的新INTERNET和INTRANET网站都是在MySource Matrix这个CMS系统上进行搭建的.  这个系统特点就是…..复杂, 它包含了太多的功能, 感觉他的终极目标就是让一个不懂PHP的人也能借助这个系统和HTML/CSS/JS知识构建一个功能强大的网站. 但是降低门槛的同时也就提高了操作繁琐性, 由于我们做为外聘的开发人员不能自由访问修改服务器上代码文件, 而MATRIX系统本身虽然开源但其开发团队代码开发文档方面十分小气(SQUIZ主要要靠出售技术支持为收入), 导致很多可以简单代码完成功能不得不靠MATRIX繁琐后台各种ASSET来拼凑. 而这系统本身说实话也十分缓慢, 甚至于ASSET LISTING仅仅是排序分类仅仅一千多个PDF图纸文件就要花上整整一分钟才能完成….而进行一系列SQL语句的优化以后其实需要 半秒….

话题扯远了好像…….闲话归闲话, 一年多来也算在这个系统使用积累了些技巧经验, 现在就分享一则.

PWC面向公众的网站很重要的一部分就是他们 的Standard Drawings查询系统, 由水电公司的一班POWER SUPPLY和WATER SEWERAGE的工程师维护. 主要就提供一千多份水电相关零部件设备PDF图纸用户查询. 当初这个系统是纯手工由HTML和CSS构建的, 导入到Matrix系统以后基本是大走样, 当时最头疼的问题之一就是一千多个PDF文件, 每个文件都有两附属数据要加上, 我们可以把属性以METADATA的形式加到所有PDF类文件上, 但是这些数据怎么录入? 手动的话基本得把活人弄死, 而MATRIX本身的导入工具又无法完成类似任务, 跟同事讨论半天没啥结果, 感觉只能动动外部用PHP直接数据库导入的方法了. 但是从来没对MATRIX的数据直接操作过, 而且话说MQTRIX用的POSTGRESS数据库我也没用过, 就这么愣写, 好像有点二叉… 无奈之下求助MATRIX的论坛, 别说还真就有高人通过修改MATRIX本身带的一个导入工具写出了把METADATA导入数据的PHP程序. 代码本身刚下载下来的时候不适用, 因为原代码是以asset ID在数据库中查询的,但是我当时的数据只有asset文件名,于是我自己修改了一下总算是可以成功导入了, 但是由于导入时以asset文件名为准, 有时便会出现冲突的情况, 我就又改了下代码, 这样冲突的时候可以记下编号, 去MATRIX系统里进行修正. -_-

导入前的准备工作也比较无奈, 原来的数据都是网页形式, 而导入程序需要CSV格式数据, 我只得先把网页上数据成EXCEL格式再转存CSV…. 转换时候还闹出些笑话, 比如有的日期没写月份, 于是转出来的EXCEL文件里写着日期年份是1905年……..-____-

程序具体使用我就用我的导入经验举例了.

  1. 需要准备CSV数据文件格式为: [Asset文件名], [Metadata Schema ID], [Metadata Schema 数据]     —— 后面两个metadata schema的id和数据想放多少放多少, 中间放逗号 (文章最后有附示例文件)
  2. WINSCP把PHP文件和CSV数据放至服务器根
  3. PUTTY登入服务器ROOT.
  4. 输入命令式: php import_metadata.php [Matrix所在的目录] [csv file name]
  5. 回车导入开始.
  6. 如果有冲突会有提示, 把ID记下来以便过后调整, 然后按C继续.

全部一千多个PDF花了将近半小时导入成功. 速度慢了点, 但是毕竟比手工录入已经快了不知道多少倍了. 在这感谢代码的原修改者Tim Everist.

希望这篇文章对有相关需要朋友有所帮助.

附:

用于导入METADATA的PHP程序及示例文件下载:

metadata_import1.zip

注意, 对MATRIX数据库的直接操作一定要谨慎进行, 对于本程序造成的任何后果本人不负任何责任.



How to access Bluehost cPanel if you’re behind a strict port blocking firewall?

Category: IT相关, 网站开发
标签:, ,

Either,
Login with this URL:

http://www.yourdomainname.com:2095/xfercpanel/

Or,
Access your webmail first by

http://www.yourdomainname.com/webmail

or

http://www.yourdomainname.com:2095

And then click “return to cPanel” below.



用PHP实现根据国内或国外的IP地址显示Twitter或者饭否

Category: 网站开发

Twitter用了一段时间了, 前阵子被国内给封了, 国内的朋友看不到, 就在昨天注册了个饭否, 于是牛逼的一幕发生了, 我才注册了一天的饭否, 由于众所周知的原因, 昨天晚上开始维护, 今天早上就彻底上不去了, 在这里不得不佩服一下伟大的GFW.

好了, 回到正题. 注册饭否以后我就开始用hellotxt + Gtalk配合的方式同步更新Twitter和饭否. 以前博客的模版上是显示Twitter更新的, 但是现在又有饭否, 又有Twitter, 而且国内的朋友反映说我博客上闲扯(Twitter)那块儿在他们瞅来是一片空白..当然了..被封了, 能不空白么. 所以就想着能不能根据不同IP地址(国内or国外)来显示不同的微博, 国内的访问就显示饭否, 国外的访问就显示Twitter. 我的博客本身是WordPress的, 所以用PHP做起来比较容易些, 方法很简单, 就是几行代码. 下面分享一下, 希望能对其它想要同样效果的朋友有帮助.

得到IP地址很容易, 只要一行代码

$ipaddr = $_SERVER['REMOTE_ADDR'];

$ipaddr就是用PHP得到的访问者的IP地址. 稍微麻烦点的是得到地理位置, 我一开始试了国内的http://www.ip168.com/, 但是这东西的API最后结果就是给个document.write(‘国家’);  类似这样的东西, 调用起来麻烦点. 所以我找了一个API是可以PHP调用的, 名字叫GeoBytes(http://www.geobytes.com/),  它是个提供地理位置服务的网站, PHP下调用的API代码如下:

$tags = get_meta_tags(‘http://www.geobytes.com/IpLocator.htm?GetLocation&template=php3.txt&IpAddress=$ipaddr’);

$ipaddr就是刚才得到的访问者的IP地址. $tags是一个数组, 是根据你提供的IP地址返回的相关信息, 里面包含了很多东西, 具体是啥我也没研究, 因为我只用上一样就够, 就是国家(Country).

$tags['country'] 得到的就是国家的英文了. 只要判断这个变量是不是China, 如果是的话就显示Twitter的代码, 如果不是就显示饭否的代码.

 

全部代码如下:

<?php
$ipaddr = $_SERVER['REMOTE_ADDR'];

$tags = get_meta_tags(‘http://www.geobytes.com/IpLocator.htm?GetLocation&template=php3.txt&IpAddress=$ipaddr’);
if ($tags['country']==’China’) {
?>

//这里放你显示饭否的代码

<?php
}else{
?>

//这里放你显示Twitter的代码
<?php } ?>

 

最后得到的结果就像我博客上显示得一样了, 如果是国内IP访问, 就会显示饭否的最新更新, 如果是国外的IP访问, 就会显示Twitter的.

 

后记: 事实证明这个GeoBytes要付钱才能一直帮着根据IP获取地址, 我不得不换了个方法, 稍后再博一篇分享现在的方法.



刚为兴记餐馆做的网站

Category: 网站开发

hingston

地址: http://www.hingstonnt.com

暂时只有主页和几个PDF的各式菜单, 具体的今天还要跟老板娘继续商量..



Multiple IE – 使多版本IE共存

Category: 网站开发

做网站时候经常有些客户要求网站compatible with很多版本的IE, safari, FF, 但是正常来说IE只能装一个版本,装新版时候就会自动更新, 把原来的版本抹掉,IE现在已经更新到IE 8 beta, 可大多政府学校机构还在使用IE 6(万恶的IE6……)  而偏偏由于IE本身对CSS/ javascript解释的问题, 网页在不同版本的浏览器, 甚至不同版本的IE中都有不同的样子…. 为了方便测试, 几乎每个网站开发人员都想过多个IE一起装进电脑里并存吧…(有的客户甚至要求网站跟IE5也兼容…-_-) , 于是这个叫Multi-IE的软件就在几个老外的努力下诞生了. 软件里包括了IE3-6, 由于新版IE 8 Beta有模拟IE 7的功能, 所以IE 7暂时没有列入其中.

软件使用很简单, 下载后安装, 选择想要的IE版本既可. 值得注意的是IE developer toolbar在Multi-IE的IE6里是不会工作的, 只会在你正常安装的当前版本IE里工作, 如果实在想在IE 6里用IE developer toolbar, 那唯一的办法貌似就是在virtual machine里全新安装一个win XP, 不要更新其中的IE, 在其中安装IE developer toolbar然后进行调试了. 而有时Multi-IE中的IE也会无故crash…比如我上一个项目里做的javascript的渐变图像, 有时在IE 6 中鼠标无意双击, 就会导致crash…-_- 另外这个软件包跟Vista不兼容, 不过目前没有多少开发人员在用Vista吧, 如果实在想在Vista下使用IE 6的话, 我稍后会发一篇Vista下安装IE 6的指南.  虽然有些不完美的地方, 但暇不掩玉, 这个软件实用性还是很强.

软件的安装界面如下:

image

安装后的效果:

image

下载地址: Multiple IE Installer (10.3MB)



IE 8 beta vs. Firefox 3 vs Safari 3.1.1

Category: 网站开发

说实话, 对一个网站开发人员来说, 最头疼事情之一的就是网站代码与各个不同版本浏览器的兼容性了, 现在市场上浏览器主流的虽不多, 但是设置和解释代码的方式却各不相同, 着实很烦, IE 7 , IE 6/5.5,  FF 2/3, Safari, Opera…..  等等 经常在写CSS的时候为了能让网站在这些主流浏览器中看起来一模一样, 而写各种各样的所谓 "HACK", 见过很多抓狂了的老外程序员甚至在CSS的comment里面就出言讽刺IE (实话实说.. IE确实很无语, 尤其是IE 6及以下版本, 连PNG图象都不支持, IE 7 明里说支持, 其实有些时候也会出问题, 说到PNG..更无语了, 又是另一个无穷HACK的故事…) 比如什么.."/*Holy SUPER HAAAACK for our BELOVED IE 6"  . IE 系列有很多问题, 尤其是老版本IE 6 ,不支持纯css的下拉菜单, 不支持PNG图像的半透明效果, 都要靠各种hack, fix 来实现.  但偏偏现在很多的政府部门还有私人大多都在使用ie 6  让人不胜其烦…

好了, 言归正传, 来谈谈我们今天的三大主角..  都是最新版本的主流浏览器, IE 不用说了, 广大群众的最爱, FF则是天才少年的作品, 现在有Mozilla 撑腰, 简洁高效, 我的最爱 =P. Safari 则是苹果机上的标准浏览器, 大多搞图形,影视, 音频的人老外都用这, 再就是苹果机在国外类似一种文化, 虽然性价比不高, 但是却总是有那么一批固定用户群, 于是safari也是不可忽视. 如何让网站在这些不同标准下兼容而正常工作, 就是个问题.

再来讲下现在一个很著名的acid 测试, 本文中将要用的是acid 2 和acid 3, acid 2 可以说主要是一个css 测试, 用来检查浏览器是否能够正确的以标准方式解释CSS代码, 而acid 3 则主要是一个javascript测试.

acid 2 和 acid 3的网址分别为

acid2: http://acid2.acidtests.org/

http://www.webstandards.org/files/acid2/test.html

acid3: http://acid3.acidtests.org/

先从ACID 2 开始,

image   这是acid2 的标准结果图, 出现这个图 代表该浏览器已通过测试.  如果有一丝不同, 便是FAIL.  =.=|||

先来看FF和Safari.

FireFox3: image  Safari 3.1.1: image

IE 8 beta 自称通过了ACID 2 测试, 但是这里却出了点小问题.

如果登录http://www.webstandards.org/files/acid2/test.html 这个地址来进行acid 2 测试, 则IE 8 的图示如下

image

但若是通过http://acid2.acidtests.org/ 这个地址进行测试, IE 8 则完完全全的是FAIL…如图

image

至于这个问题… 微软的Phil Nachreiner同志进行了解释. 据他所说 由于两个地址中的测试代码是一样的, 所以不存在因代码不同而使IE 8无法通过其中一个测试的说法, 而是因为IE 8 beta中本身的一个cross domain security设置, 而在acid2测试的代码中有object tag (去网站看源码就知道我在说啥了) , 而本身ie 8 beta对object tag 一类的解释方式有所不同, 其实是因为不同域名而导至的测试失败, 却不是IE 8  本身代码编译标准的问题.

好吧..至此 IE 8 beta, Firefox 3, Safari 3.1.1 都通过了acid 2 测试. CSS民工们可以欢呼了. 俺们迎来了互联网一个全新的时代..&$!^!#%^$!,….

 

切慢..

 

话说Acid2后..还有个ACID3测试呢… ( -.- |||)  ,专门给浏览器javascript挑刺儿的…(多亏了这些挑刺儿的….)

这是ACID 3 的标准图

image

开始吧 事先说明吧, acid3 要拿 100/100分才算pass, 具体说明去网站一看便知, 而这三个浏览器.. 嗯, 没有一个通过的.

Firefox 3: image

Safari 3.1.1 : image

重头戏来了, 看我们伟大的IE 8 …

image

这是多少分我都看不见….不过据同事讲, 他们前几天做测试时是17分.. (成吉思汗 – -|||)

据说IE 5.5 在ACID 3里都比IE 7/8 分高…

 

测试结束…废话不用多说了, 于是 CSS民工们欢呼吧.. js 民工们.. IE 8 beta版便是这样了.. 希望正式版能好起来, 不然新版IE 给js同志们不仅带不来解脱…还得带来更多的BUG 也就是更多的痛苦… = =.