@ZEAL Blog·厉
WWW Zeal Blog
We stand alone,
TOGETHER.
+ 1 - 1 | §心情是否黃健翔?

  当意大利最终涉险过关的时候, calfen 在 MSN 上给我发来这么一条消息。

  “心情是否黄健翔?”

  当然因为我之前说的,“上视体育的几个解说不错,但底下滚动播出的那些球迷评论实在可以算得上是视觉污染了。央视的几个解说水平难以恭维,算得上是听觉污染。所以我选择看卫星电视,享受纯粹的足球乐趣。” 所以我正看着的是卫星转播,以至于完全听不懂这句话的意思。

  然后他说:黄健翔的嗓子都喊哑了。

  原来是这么回事。那作为铁杆意大利球迷的我心情自然是相当的黄健翔。作为央视唯一还算保有几分激情的评论员,他喊上几嗓子也算正常。

  但到后来我才发现,黄同学可远不只是喊几嗓子那么简单。自诩为意大利粉的本人听完他那段歇斯底里的呐喊,也只能甘拜下风。

  对这样的一场胜利我只为意大利感到庆幸,可不敢跟骄傲扯上关系。尽管判给糙人马特拉奇的那张红牌也多少值得商榷;但依靠一个纯属误判的点球来赢得比赛,我宁愿意大利象欧锦赛对荷兰那样坚持到点球决胜。喊那样一通不知所谓的垃圾出来污染几亿(不知道央视的影响力有没有到这个程度?)球迷的耳朵,基本上跟足球流氓一个水平了。

  话说回来,如果哪一天只有 cctv5 可看了,要我挑评论员的话,我还是宁愿被黄健翔这样的激动过度给流氓一下。

  对黄同学来说,检讨自己的行为是必须的,但被封杀?还是请高抬贵手吧!

标签 ( 体育 ) :
+ 0 - 0 | §MysqlConnectionPoolDataSource

  oracle.jdbc.pool.OracleConnectionPoolDataSource , com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource 这两个来自各自的 jdbc 驱动里面的类看上去是如此相似,但事实上实现的却是两样事情。

  OracleConnectionPoolDataSource 确实是一个 Connection Pool 实现,算得上是最轻量级的 Oracle 数据库连接池实现方式;而 MysqlConnectionPoolDataSource 实际上只是一个提供给 ConnectionPool 使用的 DataSource 而已,并没有任何的连接池功能。

  所以如果你熟悉 OracleConnectionPoolDataSource 的话,可能会被 mysql Connector/J 驱动引擎里面的这个 MysqlConnectionPoolDataSource 类的名字给欺骗而把它当作连接池来使用。带来的结果就是无穷的 connection leak 。但这一点似乎 MySQL 在官方的 Manual 里面并没有很清晰的说明,以至于有人只好通过分析它的源代码来推测其实际的意义。倒是在MySQL Forum 里面 Mark Matthews 做了有一段很明确的解释

  1. Unless you're an application server vendor (or you are installing Connector/J into an application server that wants to use ConnectionPoolDataSources such as IBM Websphere), you shouldn't be using MysqlConnectionPoolDataSource
  2. In any case, the physical connection does not go away until you call PooledConnection.close(), calling conn.close() only closes the 'logical' connection, which requires that any listeners on the ConnectionPoolDataSource be called so that it can _reclaim_ but not close the physical connection so that it can be handed out again, and
  3. You're using very old versions of both Connector/J and MySQL and might want to consider upgrading (Connector/J is at 3.0.16 and the last release of MySQL 4.0 is at 4.0.24 currently, although the 'current' stable release is 4.1.10).

    ConnectionPoolDataSources are _not_ connection pools! They are 'vendors' of connections to connection pooling code. If you don't have your own connection pooling code, then you definitely don't want to be going this route!

  所以目前来说 mysql Connector/J 里面并没有一个能像使用 OracleConnectionPoolDataSource 那样在 java 程序里面简便的实现 MySQL 数据库 connection pooling 的实现。你必须自己实现或者使用第三方的连接池实现,比如 c3p0 和  proxool

+ 0 - 0 | §究竟是谁如此无耻?

  德国 2:0 瑞典,赢得相当轻松。

  本以为这至少会是一场精彩的比赛。不论胜负,两队的前场攻击力都可以保证打出无数的流畅进攻来。即使德国开赛不久便连下两城,我仍然相信好戏还在后头。

  直到主裁西蒙笑眯眯的赏了卢西奇两张黄牌之后,我知道这场比赛已经完了。面对瑞典,德国人完全有实力可以赢得更加光明正大,更加畅快淋漓;主裁却如此迫不及待的要助东道主一臂之力。

  四年前的韩国,同样依靠场上12人的“精彩”表现破天荒杀入四强;四年之后没了主场之利,立马被打回原形。

  与其说这是东道主在背地里搞鬼,我倒宁愿相信这些都是国际足联的伎俩。当纯粹的足球牵扯到诸多利益关系的漩涡里面之后,就变成了幕后导演之下的表演秀。

  但愿下一次秀的牺牲者不是才华横溢的阿根廷。

  Updated 2006-07-01 13:53 -- 阿根廷终于倒下了,但不是倒在敌人的炮火,而是自己的畏缩和保守之中。以前不明白为什么40万大军这样一个庞大的数量也能在一夜之间被白起给活活坑杀;现在看来,主帅的无能足以把充满战斗力的团队变成任人宰割的羔羊。阿根廷再次扮演了这样一个悲哀的角色。

标签 ( 体育 ) :
+ 1 - 0 | §ConcurrentModificationException
当使用 fail-fast iterator 对 Collection 或 Map 进行迭代操作过程中尝试直接修改 Collection / Map 的内容时,即使是在单线程下运行,  java.util.ConcurrentModificationException 异常也将被抛出。  查看全文
+ 0 - 0 | §“谷歌”特色的AdSense

点击察看大图

  凭借着贴近页面整体内容和风格的表现形式这一法宝,加上全民皆兵的低门槛, Google AdSense 火了。

  相比于其他类似国产广告联盟几乎清一色的江湖老中医型广告, Google AdSense 简直可以称得上圣洁了。一个是城市牛皮癣小广告的网络版,看到就恶心;一个像超市的促销快讯,想买东西的时候还是值得一看的。

  但忽然一夜之间私家侦探和疝气治疗的广告就堂而皇之爬了上来,看得我直别扭。或许从 Google 到 谷歌 ,除了要搞定有中国特色的 GFW 之外,还需要处理好有中国特色的广告污染才行。广告业务是扩展的红火了,可投放的质量就下去了。

  再这么整,我可不敢放什么 AdSense 在 Blog 上了 -- 丢不起这人呐!

标签 ( 杂言乱语 ) :
+ 0 - 0 | §Links 2006-06-20: FeedBurner乱码
+ 0 - 0 | §Links 2006-06-19: WP优化
  • Guide To Optimizing WordPress Servers
    一篇关于优化 WP 服务器性能的文章。APC 和 MySQL Query Cache 应该说是比较通用的 LAMP 平台优化加速的方法了。而文中提到了两个 WP 专用的脚本 object-cachepost-query accelerator 则值得我们写自己的应用时借鉴一番。
  • Targeting Content
  • 女人,看球光荣!评球可耻!--IamTing
    从这点来说,我还是比较喜欢cctv5的世界杯转播,因为电视画面比较干净,没有比赛信息之外的东西,最多就是滚动一条友情提醒让球迷们调低电视音量。不像地方台的转播不停的在电视下方滚动各种各样的广告。上视体育的几个解说不错,但底下滚动播出的那些球迷评论实在可以算得上是视觉污染了。 可惜央视的几个解说水平难以恭维,算得上是听觉污染。所以我选择看卫星电视,享受纯粹的足球乐趣。
+ 0 - 0 | §Links 2006-06-17: 网站恶行
+ 1 - 1 | §Links 2006-06-16: live.com
+ 0 - 1 | §中国制造之魔比斯环vs西岳奇童

  “标志着中国动漫已基本实现了与国际接轨”的3D动画魔幻大片《魔比斯环》即将在8月份暑期档上映,在这之前的7月1日则是二十年后才出完整版的《西岳奇童》首映。

  号称中国原创的《魔比斯环》从原创到导演到动画/特效监制愣是没一个中国人,而经典的纯正国产《》愣是因为人事变革一拖就是20年才得以完成。这样两部影片摆在了一道,不知道咱们的动漫产业人士们是否会感到胸闷的紧。

  花钱请滚石到中国来开一次演唱会,就说他们是中国人,未免滑天下之大稽;出资请老外做部动画片,然后贴上 Made in China 的商标到处卖,充其量也只能算是又一次的商业炒作而已。

  自打《卧虎藏龙》火了一把,咱们的导演们就开始天天看着那个小金人流口水。就为了看上去更“国际化”,连“圈圈套圈圈”之类“无稽~”的故事也编得出来。而像西游记这样历史悠久的“魔幻”题材,却要放着等斯皮尔伯格来拍

  就这样,大把大把传统的、历史的素材视若无物,成天整些虚得连自己都i搞不明白的东西来糊弄天下。这就是集体秀逗的中国电影人在琢磨的事儿。

  拿来主义不是坏事,可也要去粗存精才行。要真能学学人家 peter jackson 那样拿老美的钱拍自家的经典巨著,真正刺激本土产业,促进技术发展,我会举双手双脚欢迎。拍出来的电影就算技术上弱了点,我也原意掏钱去影院支持它。?什么玩意儿! 我还是到西岳去寻找儿时记忆里的奇童吧。

  末了,忽然想到上海的沪杭磁悬浮来。花大价钱请德国人到中国来试验他们在自己国家不敢投入使用的磁悬浮技术,人家还不愿意把核心技术告诉你。

  都说中国人在外面会做生意,怎么还一次又一次的让老外当冤大头来涮?

+ 0 - 0 | §attribute.specified属性

  Pivot 自带的 wysiwyg 编辑器功能比较少,扩展起来也不方便,虽然 1.3 版本引入TinyMCE ,但都不合自己的习惯。好在可供选择的 wysiwyg 在线编辑器多得数不过来, Genii Software 甚至专门对这些编辑器做了详细对比。最终 我选择了 "excellent and easy to use" 的 Xinha 。不过再好的东西也会有 bug (尽管有时候 javascript 的脚本所谓 bug 往往是拜浏览标准的混乱所赐)。

  最近发现用 Xinha 切换到 HTML Source 模式添加了图片 Map 区域之后( <AREA title="点击查看大图" shape="RECT" target="_blank" coords="0,0,81,150" href="http://www.zeali.net/images/lina/lina1.jpg"> ),切换回 wysiwyg 模式再切回来,AREA Tag 的 shapecoords 属性就消失了。一路跟踪下来,发现 Xinha 在 Toggle HTML Source 的过程中,使用了 HTMLArea.getHTMLWrapper 方法对整个内容进行了格式化处理,这其中用到了 attribute.specified 属性进行判断:

    if (!a.specified && !(root.tagName.toLowerCase().match(/input|option/) && a.nodeName == 'value')) {
        continue;
    }

  而让人想不通的是,对于 shapecoords 这两个属性来说,无论是否在 HTML 里面进行了设置, specified 的值都是 false ,而不是像 msdn 文档里面所描述的那样 “An attribute is specified if it is set through HTML or script”,只有像 title , target, href 这种比较常规的属性才能通过 specified 的值来判断是否已经做了设置。也正因为如此, Xinha 在对 HTML 代码进行重新格式化的时候, shapecoords 这两个属性的相关内容就被直接 continue 给忽略掉了。

  有意思的是从 Xinha 上面的那段代码来看,已经对 inputoption 这两个 Tag 的 value 属性进行了排除,可见 value 属性遭受的“不公平”待遇类似于 shapecoords 。可惜 Xinha 好事没做到底,msdn 貌似也没有明确的指出哪些 Tag 的哪些属性无法通过 specified 的值来判断存在与否,所以也只能是发现一例例外就在原来的语句基础上增加一个过滤语句了:

    ... &&
    !(root.tagName.toLowerCase() == 'area' && a.nodeName.toLowerCase().match(/shape|coords/))

  搞定,收工。

标签 ( WebDev ) :
+ 0 - 0 | §sendmail Error: unknown user smmsp

sendmail突然不能用了。错误信息:

/etc/mail/submit.cf: line 423: readcf: option RunAsUser: unknown user smmsp
/etc/mail/submit.cf: line 442: readcf: option TrustedUser: unknown user smmsp
Mail submission program must have RunAsUser set to non root user

原来 sendmail 用来查询排队邮件目录的用户/组给删掉了。yjnet 在 sendmail 安装笔记中说: sendmail 必须有一个set-group-id(默认是smmsp组)的程序来在一个组可写的目录中查询 排队邮件。所以我们要建立一个smmsp用户和组。并建立如下目录并设置相应的权限,具体设置要求可查询源码目录树下sendmail/SECURITY文档。
# groupadd smmsp 
# useradd smmsp -d /var/spool/clientmqueue -s /dev/null
# mkdir /var/spool/clientmqueue
# chown -R smmsp:smmsp /var/spool/clientmqueue  
# chmod -R 770 /var/spool/clientmqueue  
# mkdir /etc/mail
# mkdir /var/spool/mqueue
# chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
# chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue

把用户和相应的组加回去在之后,问题解决。

+ 0 - 0 | §两个与Firefox相关的问题

  今天偶然发现在 Firefox 下点击我 Blog 页面头部的 RSS feed 图标并不像在 IE 下那样可以正常的跳转到 RSS feed XML 页面。难怪之前好像有朋友问我说我的 Blog 上的 RSS 订阅哪里去了?

  原因:因为我用的是 window.navigate("URL") 而不是 location.href='URL' 来做跳转;不幸的是 Firefox 并不支持 navigate 方法。所以以后任何地方要做跳转,忘了 navigate 吧!

  RSS feed 图标可以正常点进去了,又发现 RSS feed XML 的内容显示似乎有点异样。仔细一看原来是正文的内容没有被正确的转化回 html 格式化内容。

  原因:因为我为这个 xml 文件加了 xsl 定义文件,并对于每篇日志的正文部分使用了 disable-output-escaping='yes' 属性来通知浏览器的 xml parser 不要把这部分 html 代码转义。同样的,这个属性为 MSXML 所支持,但 Transformiix 引擎就不支持了。 Firefox 等浏览器使用的 XSLT Processor 恰恰是 Transformiix 。所以,对于 Transformiix 系的浏览器,只能采用“曲线救国”的方法了,利用 javascript 代码找到所有没有被浏览器自动转义回来的内容并进行正确的转义, BunnyQ 在日志中详细描述了解决方案(包括其他几个需要注意的 XSL 兼容性问题)。我最终使用了比较简便的方式:

  在原先的代码
 <div class="list_introduce" id="content">                          

 <xsl:value-of select='description' disable-output-escaping='yes' />
 </div>                                                             

  后面增加一段专门针对Transformiix的处理代码
 <xsl:if test="system-property('xsl:vendor')='Transformiix'">       
 <script language="javascript">                                     
 var el = document.getElementById("content");                       
 el.innerHTML = el.textContent;                                      
 </script>                                                          
 </xsl:if>                                                          

标签 ( WebDev ) :
+ 0 - 1 | §圣皮尔洛归来

一个状态奇佳的皮尔洛带给意大利一场不折不扣的胜利;如果能有现在的八成水平,今年的冠军杯就该属于米兰而不是巴萨了。

开始怀疑他赛季末的低迷就是为世界杯在作准备:毕竟冠军杯年年有,世界杯四年才一回。

Forza Italy! 号角已经吹响,谁说咱们不是夺冠热门?

标签 ( 体育 ) :
+ 0 - 0 | §互联网为中心的输入法

  sogou 出了个输入法, 看上去很火。虽然马上有人指摘这个自称“无插件无广告”的东西还是偷偷装了自家的搜狗直通车,但至少从创意上来说, sogou 这次绝对是贡献不凡。

  如果说中国的软件产业里面有哪个最具创新精神的,大概非数这小小的输入法不可了。其它东西都能模仿拷贝,实在不行到 SourceForge 上找一个开源的改两改也可以大摇大摆的拿出来卖钱。唯独这中文输入,老外不懂也不感兴趣,你上哪找现成的代码去?看看这里多如牛毛的输入法,你会发现咱们中国人从来缺的不是能力,而是环境。

  不过输入法多归多,能够长领风骚的似乎总是这拼音输入。想想也是,除非是对打字速度有特殊要求的专业岗位,要为了打几个中文专门先学套理论,谁爱干哪?唯独这拼音,幼儿园小学的时候就都学会了,不存在任何心理障碍。

  既然都是拼音,剩下的关键因素就在命中率上了。 sogou 输入法通过无数互联网用户的使用习惯为依据来判断词语的优先级,无疑比单机独立的词库要准确得多了。不得不说, sogou 输入法很 web 2.0 。不知道这个创意会不会很快被微软借用在自己的拼音输入法上面? 说到流氓软件, Windows 才是个中翘楚。哪天微软把自己的输入法网络化了, sogou 的这番心思也就算是白花了。

  本来挺喜欢 sogou 的这款输入法,但总觉得那个 Logo 不但晃眼,还白白占去了屏幕的空间,可恶的很。keso 说输入法作为一种服务一定要让用户满意。我虽然对它的拼词效果相当满意,但对这花里胡哨的外衣及其厌恶,又不让我有选择的余地,所以我只好完全放弃之。对我来说,微软拼音输入法2003已经足够好用, sogou 虽然准确率高一些,却没有高到让我接受他附送的视觉污染的地步。Updated 2006-06-12 17:21 -- 更何况像 94smart 所说的那样,用惯了微软拼音输入法的人实在很难去适应一些细节上的差异。当用 sogou 输入法N次把写了一半的句子一个回车就给送了出去之后,我决定复辟了。

  删除的时候发现在常规的地方找不到入口,好在安装目录下看到了uninstall.exe。运行之后居然问也不问就把我的电脑给重启了,再次鄙视之。拜托出来混的给点专业精神好不好?

标签 ( 杂言乱语 ) :
+ 1 - 0 | §[转]callback函数使用方法

在PHP中有些诸如 call_user_function()usort() 的函数接受用户自定义的函数作为一个参数。Callback 函数不仅可以是一个简单的函数,它还可以是一个对象的方法,包括静态类的方法。

一个 PHP 函数用函数名字符串来传递。您可以传递任何内建的或者用户自定义的函数,除了 array()echo()empty()eval()exit()isset()list()print()unset()

一个对象的方法以数组的形式来传递,数组的 0 下标指明对象名,下标 1 指明方法名。

对于没有实例化为对象的静态类,要传递其方法,将数组 0 下标指明的对象名换成该类的名称即可。

Callback 函数实例

<?php
// An example callback function
function my_callback_function() {
   echo 'hello world!';
}

// An example callback method
class MyClass {
   function myCallbackMethod() {
       echo 'Hello World!';
   }
}

// Type 1: Simple callback
call_user_func('my_callback_function');

// Type 2: Static class method call
call_user_func(array('MyClass', 'myCallbackMethod'));

// Type 3: Object method call
$obj = new MyClass();
call_user_func(array($obj, 'myCallbackMethod'));
?> 

http://www.phpe.net/manual/language.pseudo-types.php
http://cn.php.net/manual/en/language.pseudo-types.php

标签 ( PHP ) :
+ 1 - 0 | §世界杯-演出开始了

四年的轮回,无论对球员还是球迷来说,艰苦的战斗都即将打响以世界杯的名义,即使是不懂足球的兄弟,也要宣誓与32强同悲喜。冠军的归属也许会出乎所有人的预料,但我们都会用激动的心情去迎接她!

标签 ( 体育 ) :
+ 0 - 0 | §Oracle Web Cache 进程监控
OracleAS Web Cache 有个 Auto-restart 的功能,可以自动监控 web cache 进程的状态,发现异常自动重启。但在 Web Cache Manager 管理界面配置好了以后就发现 web cache 进程会被 auto-restart 进程不断的重启,发疯了一样。  查看全文
+ 0 - 0 | §CSS, array_shift怪事两片

css里面漏写一个分号,在本地浏览居然还能显示正常的效果,通过域名访问css的效果就不见了;

while($val=array_shift($arr))死活shift不出东西来,改成foreach($arr as $val)才正常;

但想通过测试代码来重现这两个现象,居然重现不了,css漏写分号就是显示错误,array_shift也能正常shift。郁闷ing。

刘润说:“不要搞封建活动。”再离奇的表象都可以找到合理的技术性解释。只不过在我们发现真相之前,往往被表象指引到一个错误的方向去思考问题了。

标签 ( WebDev ) :
+ 0 - 0 | §走好,舍瓦。

走好,舍瓦
  一直以为舍瓦加盟切尔西,只是阿布和穆里尼奥的单相思而已。谁知道一转眼,谣传变成了事实,七年的感情终究敌不过家里领导的微微枕风。

  加利亚尼说:“这是英语战胜意大利语的事件。我做了我能做的一切去留住他。这是我在米兰遇到过的最困难的分离。”

  意大利那么多的美女名模也没吸引到他,倒是让说英语的美国人捷足先登了。

  巴拉克,加上舍瓦,切尔西下赛季的阵容可谓恐怖。然而这样的一支金元之师究竟能烧多久的钱?但愿舍瓦好运。

标签 ( 体育 ) :
+ 0 - 1 | §Links 2006-06-02: Java API中文版
  • Sun公司完整发布Java API文档中文版
    “如果说我这两年在Sun 公司作了哪些对中国开发人员有益的事的话,我想Java API文档中文版毫无疑问的应该算第一个。我非常清楚仍然有众多开发人员坚持认为一个好的程序员应该完全参考英文版的文档,但是我坚信该文档的中文版有其存在的意义,因为Java作为一种程序设计语言,我们希望能够有更多的开发人员 -- 而不仅仅是那些能够熟练阅读英语的清华北大毕业生 -- 来使用它,掌握它,精通它。”
    话虽如此,但在条件允许的情况下,还是强迫自己去看英文原版的文档为好。咱们的焦书记说:嚼别人吃过的馍,没味道!再好的翻译文档,也会出现与原意不符的地方,质量好坏全看译者对原文的理解程序。英语不是魔鬼。程序员们能够学好各种各样的编程语言, 为什么就不能也去学好这么一门不算复杂的自然语言?哪一天印度阿三们不再因为我们的英文水平而高枕无忧了,哪天我们的软件产业才会真正腾飞了。
  • Opera Mini 2.0,用手机上网
  • FireFox一起看世界杯
+ 0 - 1 | §Links 2006-06-01: svn DB Format
  • How FSFS is Better
    如果你打算开始使用 svn 来进行源代码版本控制,那么除了需要了解 svn 的一般特性之外,还需要决定到底采用 FSFS 还是 Berkeley DB 作为 svn repositories 的存储格式。由于历史原因, svn 开发团队最初使用了比较大众化的 Berkeley DB 。直到2004年以后,才引入了基于文本文件的 FSFS系统。相比而言, FSFS 似乎具有更多的优点。
标签 ( 开发/理论 ) :
Since 2005.04.27  梦想 就像鸡蛋 要么孵化 要么臭掉RSS Feed (Entries) | About me | Back To Home | @ZEAL | zbird.com | 沪ICP备05024379号