Monday, October 15, 2007

drupal 5.2 使用心得

安装:推荐使用LAMP套装

设置:apache2-enable rewirte模块,在 /etc/apche2/sites-available(ubutu 7.04)添加drupal站点的虚拟主机。
sudo a2ensite yousite

mysql-建立与drupal相连的数据库及用户。

drupal:在sites目录中新建站点目录,copy default站点的 settings.php至站点目录。修改setttings.php中的base_url与数据库路径。

php5:添加drupal所在路径至php.ini文件中的include_path参数

Saturday, April 07, 2007

无题

已经千百次地告诉自己要决然回头就此陌路却只能痴痴地望着你的背影渐行渐远直到泪水模糊你纤弱的肩头萧索的脚印并在嘴角泛起一丝冰冷的苦,从此我将活在自己的世界那里是阳光下的黑暗罂粟上的芬芳玫瑰旁的毒蛇.我将高唱这卑浊的人世让它如潮水般淹没所有的喜怒哀伤踟蹰怅惘,我的心将和所有与你的笑与诗悲与曲缱绻共眠,用那记曾燃烧了我的灵魂的你的吻封印在那沧海深处.

Monday, April 02, 2007

将客户端的动态内容变成静态页面的一部分?

在设法实现如题所示的想法之前,我考虑的是这样做是不是有意义?诚然用户体验至上,但是没有人愿意让用户对自己的服务器乱来,"all input is evil",更何况是修改页面这样的事情.而且要实现的不仅是修改一下网页模板,增删文章内容这样简单,而是让用户对网页的DOM操作发送到服务器!

虽然如此,我还是要做下去,因为这件事看起来挺有难度,而且——很酷.整件事情可以分为两个部分,或者称步骤:将操作上传到服务器,储存到数据库;将数据库的更新数据写入静态页面.第一步使用的技术必然是AJAX,因为对DOM的操作信息最后用XML格式来异步发送是最合适的,但是目前对如何在servlet上解析传递的xml参数来更新数据库还有困惑,因此在写到发出异步请求时卡住了.第二步倒是基本实现,再假设数据库更新的前提下设置缓存页,读取数据库信息并写入原静态页面.只是过程中发生了久违的字符编码问题.晕,Filter不也是Servlet的子类么?为什么request.setEncording(String str)的方法显得毫无意义呢?

烦,明天再Google.咳,Oracle的进度已经落下好长一段了.

Thursday, March 29, 2007

转帖:我在重庆九龙坡查访最牛钉子户事件



原文作者:Zola,链接:

我在重庆九龙坡查访最牛钉子户事件



在我的新闻敏感性和企图一夜成名的欲望的驱动下,我星期一中午喝完朋友雄的喜酒后,到娄底市转(A73)火车到贵阳市,然后从贵阳市转火车(5608)到
重庆市,星期三的凌晨终于像一颗疯狂的石头一样滚到了重庆,准备利用私人BLOG来报道重庆九龙坡区杨家坪的"最牛钉子户"事件。



众所周知,这种涉及官方政府的新闻肯定会有一些报道不能面世,或者新闻稿件被不知名的"相关部门"的要求下删除。之前在新浪有一个BLOG在全程24小时
报道,但后来那个BLOG消失了。所以我意识到这是一次机会,我决定千里迢迢来重庆明查暗访,企图了解多方观点。这也许是一个于公于私都非常有益的举动。
于公,可以让更多的人了解到政府是不是依法办事的政府,拆迁户的户主吴苹和杨武是不是守法的公民;于私,如果我因此花上几天时间加上几百块钱路费而名声大
振的话,我将来可以有更多的社会资源用来成就一番事业。如果你能理解,请留言支持我。



从重庆火车站坐207到达杨家坪站,然后去吃米粉,顺便和米粉店老板交流了一下。米粉店老板所了解到的是,据说吴苹他们索价2000万,房地产管理局在报
纸上说"不会接受漫天要价",米粉店老板认为钉子户的户主做得太过份了。我吃完又麻又辣的米粉后,在他们指的方向下继续找"钉子",结果碰到一个正拿着报
纸去上班的男青年,他说让我跟他走就行。我询问他的看法,他表示支持吴苹和杨武,他还告诉我,吴苹他们的父辈是人大代表。快到钉子户大坑的时候,他指给我
看透过房子与房子之间的空隙看到的杨武的房子顶上的国旗,然后他就与我分手了。我于是找制高点拍摄这一奇景,结果发现旁边有一个轻轨站台,叫杨家坪站。重
庆没有地下铁,只有这种"地上铁",叫轻轨。我登上站台后才发现,杨武之所以在自家房顶上放一个写着"公民的合法私有财产不受侵犯"的白条幅,是因为这个
白色条幅会让来来往往的轻轨乘客看到,并且许多乘客在站台上以那个房子为背景用手机拍照留念。这也就是重庆钉子户之所以声名远扬的重要因素之一。并且这块
区域是一个黄金区域,附近有一个步行街,轻轨站也带来许多人流,这块区域更显得寸土寸金了。谁都知道,在上海、北京、广州和深圳等有地铁的城市,拥有地铁
站出口的便利的商品房就会特别贵。



我从站台上拍了几张照片后,然后绕到工地的围墙的大门口附近,也就是杨武的房子背向的那边。门口紧闭着,门内有六七个穿保安制服的人在里面聊天。门上面有
一块牌子,上面写着"施工场地,为了您的安全,未经引领允许,不得进入",我转了一圈,可能是去得太早的缘故,没有发现记者蹲守。然后我买了四份不同的报
纸,找了一个地方坐下来慢慢看,结果没有发现与"最牛钉子户"的报道,旁边有人告诉我,昨天的报纸就有报导。后来,来了一个五六十多岁的老人,我以为他也
想看报纸,我就把另一份报纸递给他,他没看,于是我问他知不知钉子户的事,想不到他居然不正面回答我,而是说了一句很让我震撼的话:" 啥子钉子户哦,那是当官的给他们起的名字!"
这让我很惊奇,我于是掏出手机打开录音功能,我求他再说一次以便我将这么深刻的说法放到网上给人听听,可是他说,录音我就不讲了,然后告诉我"他们只是维
权"就走开了。原来他们以为我是记者了。后来,又来了一位抱着孙子的退休教师,她告诉我,吴苹他们没有什么背景,长辈不是人大代表,杨武的儿子在读书(应
朋友们提醒,已经隐去儿子的相关介绍,请转载的朋友相应改动一下)"。杨武一家在那里开火锅店是开得最早的,生意是最好的,他们没有开价2000万,他们
的房子被估价250万,房地产开发商加100万价,共是愿意支付350万给钉子户,但他们只要求"原地点,原面积,原朝向"的房子,他们不要钱。她还告诉
我,她说她以前在铁马集团的房子也是被恐吓下拆迁的,当时是"工人下岗、干部撤职"的行政手段让他们屈服的,杨武他们之所以敢硬颈,就是因为他们是个体
户,不受体制内的胁迫。



后来,我再到杨家坪站台上时,发现有些人在讨论"钉子户",我于是站在旁边听。原来是两个有类似遭遇的人在诉说,一个是64岁的渝中区的老太,她的有房产
证的房子在渝中区化新村的房子被要求以低于市场价3000元/平800元的2200元/平的补偿价拆掉,安置房却是比补偿价还要贵的尾房;另一位先生是戴
军功章的48岁的陈先生,来自珠海。他的八层楼的房子在哄骗和毒打后被拆掉了,还有集资款被吞了,上访到北京,被一封"来事项转送告知单"推到广东省信访
局,广东省信访局开了介绍信到"珠海市信访局",结果珠海市信访局连信封都不打开,看都不看就报警了,他只好离开。他看到凤凰卫视报道了"重庆钉子户",
所以赶过来看能不能守到记者让记者报道一下。他们问我是不是记者,我说我不是,我只是弄了一个个人网站,我的网站的内容不会被删除。我说我想看一下相关资
料,于是,陈先生带我去他那里拿U盘里的资料,然后刘奶奶也说要我去化龙桥看一下,看能不能也报道一下。于是刘老太和我一起去陈生下塌的地方,拿了一些资
料,看了一些照片,我决定帮他发在我的网站上,利用SEO技术让更多的人知道这些事情。我拿了资料要走的时候,陈生掏出几百块钱塞给我,说是给我的路费。
我从来没有见过这种场面,我从来没有想过帮人家发稿子就能拿钱,我坚持不要,我说我只是出于正义感而帮你,也不一定有什么效果,我说你要感谢我,就请我吃
饭吧。他同意了。其实,我的真实想法是,我若收了他的钱,那我和蓝成长有什么区别?收了第一次辛苦费,也许我还会去收第二次,这会离我展现正义感的初衷会
越来越远。


告别了陈生,我和老太坐车去化龙桥。我接到陈生的电话,说是要帮我订一个房间,我也就心安理得的接受。反正我也要在九龙坡呆几天报道钉子户的事件。



在车上遇到一位中年教师,他用普通话告诉我,钉子户确实没有背景,但他们抓住了政府的软肋。这件事的关键的关键是,地产商还没有获得所有拆迁户的同意就擅
自破土动工,政府监管失职;还有就是,九龙坡区没有一块绿地,这块地在规划中是公园,但政府卖给房地产开发商建造商品房,这是政府不对。这才是19号下判
决,本应该在22日的时候就拆除,但至今仍未拆除的真正原因,这里面有内幕交易。他还说,并且还有搞笑的不合理的地方是,本来是房地产商应该上法院告杨武
吴苹夫妇,但居然原告是九龙坡房管局。也就是说,本来是房子可卖可不卖的民事纠纷变成了行政诉讼。



到了化龙桥,那里一片狼籍,很多信宅楼都空了,还有百分之十的住户由于无处可去而不得不留在那里,都是一些老头老太,他们"摆开龙门阵",跟我讲,政府用
"吓哄骗"的手段让他们服从,而且有不戴肩章的穿制服的人打人,不按市场价给补偿,安置房又是旧房。他们说他们的声音无法发出,所以希望我写写放在网上。
我拍了一些照片


精彩图片我稍候去网吧上传。我先用GPRS上网发了文字再说。欢迎转载,本站所有文章不制止商业转载,只需署名和注明出处。推荐使用标题:最牛网志作者Zola暗访最牛"钉子户"。欢迎关注本站的后续报道。



Monday, March 19, 2007

Java Web 日记:Ajax(三)

理所应当的,写js的高手都应该是对DOM认识深刻的人.对DOM的操作水准直接体现其能力.啥也不说了.以下方法属性纯为备忘.对于其中的Node的使用,IE可能很不上道,切记!

  • 节点属性
    • NodeName
    • nodeValue
    • parentNode
    • childNodes
    • firstChild
    • lastChild
    • previousSibling
    • nextSibling
    • attributes
  • 节点方法
    • insertBefore(newChild,srcNode)
    • replaceChild(newChild,oldChild)
    • removeChild(oldChild)
    • appendChile(newChild)
    • hasChlidNodes()
    • hasAttributes()
  • 文档节点(document)
    • createElement(elementName);
    • createTextNode(text);
    • createAttribute(attributeName);
  • 元素节点
    • getAttribute(name)
    • removeAttribute(name)
    • setAttribute(name,value);
    • getAttributeNode(name);
    • removeAttributeNode(node);
  • 属性节点
    • getAttribute(name);
    • removeAttribute(name)
    • setAttribute(name,value)
  • 文本节点
    • appendData(text);
    • insertData(position,text);
    • replaceData(position,length,text);
  • 节点类型常量
    • Node.ELEMENT_NODE;
    • Node.ATTRIBUTE_NODE;
    • Node.TEXT_NODE;
    • Node.DOCUMENT_NODE;

Java Web 日记:Ajax(二)

几乎立刻的,遇到了跨浏览器的问题.为什么IE就这么不让人省心呢?不但创建XMLHttpRequest有一前一后两个方法,许多相关的属性和方法也无法应用,比如onprogress,onerror;最烦的是对待同URL请求的返回结果的处理.FF是重新请求responseText,而IE先在XML缓存在客户端的数据中查找是否有返回结果,如果有,直接用;没有则再请求服务器.平心而论,这两种处理方式没有正邪之分,但是绝大部分程序员要的是更新后的数据.因此,IE的做法真是天怒人怨(好吧,有点夸大,但至少也是"少数不明真相的群众"的愤怒吧?).就因为这个不兼容,前天的试验项目最终把我的异步回调功能给砍了!简直无比郁闷.

后来上网查了下,解决的方法,一是使用临时URL参数让请求看起来是新的;而是xmlHttp.setRequestHeader("If-Modified-Since","0");每次请求前清空XML缓存.

郁闷,真郁闷.微软这家伙,总是想把世界变成自己的.真希望它也有那么一天,困惑地倒在人民的口水里,喃喃道:"为什么?这到底是为什么?我什么都给他们安排好了,为什么他们不感激我呐?"

Thursday, March 15, 2007

Java Web 日记:Ajax

最近越来越觉得,自己的学习笔记就像是对developerWork、W3shcools这些网站内容的复述.自己只不过是用更适合自己阅读的方式来记载而已.

Welcome Back.Ajax者,常常被认作是Asynchronous javascript and xml 的缩写.但Jesse Garrett否认了这一点.目前为止,只看到一个新玩意儿:XMLHttpRequest.

按照以前的思路,web提交表单数据,服务器执行操作,返回响应.在返回响应前,用户不能做任何事情.而Ajax正如它宣称的那样,实现了异步回调,但其实异步回调有一个暗示,即服务器不能在执行操作后跳转页面,这应该是用户做的事情,他想待在哪里就待在哪里.

据说Ajax导致了web程序业务逻辑和显示逻辑的混乱,没有一个清晰的分离.不过目前为止,我还没有感受到这一点(单从异步回调这个功能上讲).多出来的js代码并没有过多干预servlet上的事情.当然大家言之凿凿,相信我很快就会感受到这一点.这样的话,对程序员的要求就又高了.

Monday, March 12, 2007

触电人生

咳咳,不要误会,没有人陷入桃花劫中,而是,我货真价实的触电ing~~

显然我是无辜的,北京也没有犯错,只是这样的组合成为了悲剧.我相信这个世上没有人可以像我一样无时不刻被静电骚扰.当然,你很可能不屑:不就是静电嘛,又不会死人.那么,如果碰着门把手而触电的几率是60%呢?如果在这个名单中加入电梯、易拉罐、椅子、机箱乃至人、篮球?

有谁能够看到和听到在7/11的货架前伸向雪花啤酒易拉罐装的男子那欲进还退的右手和陡然上升到三位数的心跳?

有谁可以理解在电梯说出"放心摁吧,静电已经被我吸光了"的男子那咬牙切齿悲愤莫名的神情?

有谁可以习惯一边接地一边脱衣服?

......

偌大一个北京城,没有人可以体会我的悲伤.

Wednesday, January 17, 2007

Java Web日记:Servlet、JSP中的乱码

这IT世界由英语把持的弊端——或者称为给中国programmer带来的困扰——之一就是乱码吧.这也是小白我必经的一课.那么,且来认识一下字符转换问题.

之所以会出现乱码,原因在于使用的字符集(charset)不匹配.26个英文字母到哪里都OK,但是其他土著文字便没有这么轻松,如果使用的字符集没有提供相应的文字索引,那显示出来的便只有乱码.从底层来说,文字都是二进制代码形式存储.操作系统启动后便加载在内存里.我们所输出输出的,都是对文字的索引.不同字符集索引位置不一样.使用错误的字符集,便找不到正确的索引而只能是乱码.

在java编程中需要发生转码的地方.developerworks上有篇文章讲到了JSP/Servlet 中的汉字编码问题.

从我自己的体验出发,解决办法就是无保留地投向UTF-8字符集.GBK可以显示汉字,但是碰到其他东亚文字依然很糟糕.

Sunday, January 07, 2007

Java Web 日记:1.7-xml战记

其实之前对xml有过概念性的理解.xml就是一堆自定义标签的文本.因为想知道如何才能在ant构建web application时对web.xml进行操作,好像ant没有这样的语法(要有也太强了,ant成了编程语言...),所以想着不如写个java来生成web.xml.于是就陷入了JAXP、DOM、SAX、JDOM.DOM式解析器需要在内存中放下整个DOM树来进行解析,内存小数据量大是就非常吃瘪;SAX的推式处理不错,只是要编写的代码多了,毕竟需要程序员告诉机器该如何处理特定的事件;JDOM真是救星,我是说,写这个的程序员真是想到我心里去了,俺就要这样的模式.Jason Hunter,你是我的神!

Wednesday, January 03, 2007

Java Web 日记:1.3

这几天又稍稍深入了ant.好吧,上次看走了眼,其实全称是"another neat tool",随便鄙视我吧,反正在这里已经把脸面丢光了.
借助于xml的良好的可读性,看了不少示例.其实target就那么几个,但是写出来的脚本却是五花八门的,于是水准高下立分.我现在一看到那些注释太少,white space太少,代码过长,依赖关系混乱的构建文件就想死.
就像Paul Davall说的那样,"……however, if there's one thing I can't stand, anthropomorphically speaking, it's the odor of unmaintainable build scripts."
唔,总结几条:
  1. 灵活使用内置属性,降低硬编码数量.
  2. 宁用location,莫用value.力求清晰、准确.
  3. 目标明确,小而精悍.长行折短,随行注释.留足空行不用客气.
  4. IDE有许多方便,也有许多局限(例如Eclipse的ant代码提示里不会有最基本的tstamp).熟悉ant 的task和语法,做没有IDE气味的构建脚本.
  5. 是否要将构建脚本拆分为若干个脚本以及属性文件,仅取决于它对工程复杂性和平台迁移性的影响.

Monday, January 01, 2007

Java Web日记:1.1

说是要研究jsp语言,但没有想到被一个提交表格的问题困住了.tomcat的设置是没有错的.提交的表单数据也成功传给了控制器Bean,但是将数据写入数据库时发生了问题,虽然返回的executeupdate()的值等于1,但是实际上并没有向数据库写入数据,sql语句也没有发生问题.无法可想,只好放在一边,下次用更规范的MVC架构来写这个小web应用好了.看看能不能发现问题究竟在哪里.

另一方面,又尝试了用ant(Another Nest Tool)来build项目.以我看来,ant的好处就在于跨平台的项目可移植性和优秀的版本控制.ant的关键词就是两个:build、target.