Wednesday, December 27, 2006

《雪狼湖》在深圳


抓拍报道
情景音乐剧《雪狼湖》4月2日在深圳会展中心演出。会展中心就是举办高交会的地方,去过的人都知道,那里是一块大平地,没有任何演出设施,但我们的雪狼湖演出机构愣是在平地上搭起了铁板看台,人踩在上面咣咣直响,用塑料椅子串上铁丝就是座椅,摆放比较密集,记者基本是在左右两边的观众胁持下看完全剧的。总的来说,演出还算成功,没有出现观众起哄喝倒彩的情形。维护现场的保安比较忙碌,他们要不停地引导迟到的观众入场,还要制止观众席中不断亮起的闪光灯,此外,他们还担负着给自己马子找一看戏的地儿的任务,是前天晚上,除了张学友最劳累的人。
   演出结束后,网上针对深圳市民的音乐素质展开了激烈的讨论,大家一致认为深圳是一个巨大的城乡接合部。同时也对《雪狼湖》的艺术含量提出置疑,认为该剧没法跟百老汇的《cats》相比。著名网友,著名迷音客猫丫介绍,《雪狼湖》整体制作是精良的,但它违反了音乐剧的一个程式,缺少一个介于旁述和主角之间的角色,这个角色担任把观众从剧中抽离的作用,譬如<西贡小姐>里的妓院老板,<歌剧魅影>里面的夫人,<贝隆夫人>里面的歌手,这是雪狼湖的一个硬伤。
   最近著名网友hengheng前往法国巴黎参观了当地的红磨房剧场,本刊将采访hengheng,请他谈谈国外音乐剧的情况。。

知识连接:
   音乐剧与歌剧的不同:音乐剧跟歌剧最大的区别是它有戏剧、有音乐、有道白,这些都是随意的。歌剧先作曲,有独唱曲,二重唱,三重唱,合唱,有一定的规格、形式。歌剧道白也是唱出来的,它必须唱什么咏叹调。音乐剧没有,根据剧情的需要,该说就说,该唱就唱,是根据戏剧的要求来进行的。




开场了,现场还是很吵闹
点击在新窗口中浏览此图片

不停地打电话找人
点击在新窗口中浏览此图片

一张票从550到1880不等,据香港网友报料,同等规模的演出,在香港票价680即可。从这张图片里,也能看到观众们坐的椅子是多么简陋逼仄,方便情侣搂肩。
点击在新窗口中浏览此图片

雪狼湖的演出据说一直是亏本的,卖1880块的票还亏本?我不太信,不过他们搭这么一个舞台也挺费钱的,而且搭两天就拆掉。能不亏本嘛。
点击在新窗口中浏览此图片

提供剧照一张
点击在新窗口中浏览此图片


【非深圳】走的狗

有谁相信,这拍于华强北,相当于上海南京路,北京王府井,广州上下九。

点击在新窗口中浏览此图片

Tuesday, December 26, 2006

【沙嘴】萌芽状态下的性产业

点击查看全图

滨河路向西,向西,向西。
向南,再向西。

就到了沙嘴村。一个和尖沙嘴查一个字的深圳自然村。按照惯例,记录下村口两行大字:沙聚金山红林醉年年乐业,嘴吟新曲绿水欢代代安居。文藻立意都差强人意,一个蹩脚中文专科生的作品。往里走,只见一篇葱茏荔枝林,亭台小榭布置其间,村民三五成群散落浓荫下,或象棋,或麻将,或谈天……怡然自乐。正如村口楹联所写,有钱,就能安居乐业。钱从哪里来?就在荔枝林后面的成片出租屋里来。

依然是整齐划一的建筑格局,依然是千篇一律的外墙颜色,与别的城中村不同的是,这里KTV和休闲中心的数量非常之多,据目测,超过同样作为港人休闲重点村水围村的数量。而且穿着性感的年轻女郎的数量也非常之多,她们散落在街道上,茶餐厅里,发廊门口,成为沙嘴村最靓丽的风景。沙嘴村还有一个经营项目与众不同:化妆屋。类似于理发店,里面有镜子以及瓶瓶罐罐的东西,但不理发,只给女孩化妆,勾唇线,画眼影……化妆屋的服务对象就是那些小姐们。

从村内的大路拐到楼与楼之间的小路上,发现刚才看到的年轻女郎只是冰山一角,她们更多集中在出租屋楼下的门面店铺里,即便是卖香烟饮料的士多店门口都有她们的身影,但都不主动搭讪,更多的是一些年纪较大的妇女或者中年男人有意无意地朝路人喊一句:“揾女仔?”说的是香港白话。因为来这里最大的主顾是香港人,沙嘴村纵横几十条小道上,都会响起这些招揽生意的声音。身边走过一个走路打手机的男人,飘落一句话在我肩头:“她现在有男朋友了,不做了……”

以租房的名义走进一栋建筑物,安全人员带我到八楼看房,楼梯上碰到几个疑似嫖娼人员,有几间屋子房门打开,里面都是年轻女郎。

为避人耳目,自称是想来沙嘴开照相馆,给女孩拍写真集,现在来沙嘴考察考察。这个说法让很多人点头称善,都说,这里女孩的钱太好赚了,你要赶紧来,现在还没有写真照相馆。我说,我的照相馆不光拍室内的,还可以拍外景。他们说,拍外景不行,这些小姐都是被人控制的,走不远的,要拍就在村里拍,除非是那些被香港人保养的小姐,她们有时间有自由。


经过几个小时的游荡,得出一个结论,这里已经是一个不折不扣的红灯区了,性从业人员多在发廊,士多店,化妆屋,KTV里展览,与阿姆斯特丹的橱窗女郎不一样的是,交易要经过一个中介人员,中介会从中抽水。也与泰国的“金鱼缸女郎”不一样,后者是企业化集团化经营,在沙嘴,他们更像游击战雇佣军。这里的性产业虽然还处于萌芽状态,但它的外在性经济效应已经相当明显。所谓的外在经济,是科斯提出来的说法,一个经济单位的活动对另一个经济单位的影响,如果是正面的有益的就叫外在经济,反之是外在非经济,具体例子好比果园傍边开养蜂场,蜜蜂要酿蜜,就要去果园采花粉,不仅蜜蜂养殖者有蜜糖收益,果园也提高了产量。由于性产业的相对发达,吸引了大批港人北上消费,也带动了这里的非性服务产业的蓬勃发展,装潢豪华的洗脚按摩中心和茶餐厅,各种金壁辉煌的KTV酒吧。沙嘴村的房东们也因为性产业给他们带来的高出租率而可以安闲地在村口荔枝林里下象棋。性产业甚至在沙嘴触发了一个新兴的服务业——化妆屋。为小姐们提供美丽的工作妆容,以提高竞争力。高收入的小姐的大量存在,也引来了另外一种外在经济——大量小偷在沙嘴村觅食。据一个交谈对象讲,她最近两次被人在夜间用迷药迷晕,醒来后发现衣物证件整整齐齐码放在沙发上,手机和现金统统不见。

前段时间,为了拍好沙嘴村,我准备到村子里租个房子住的,现在的决定是:我不在沙嘴村住了。1,我怕相机被偷,2,基本没有机会拍照片,这里的人警惕性非常高,庞大的利益链条让街头巷尾每一个人都成为眼线,都是警报器,一旦被人盯上,根本无法走脱。3,即便在屋子里,也无法拍摄,楼与楼之间的间距非常之近,一旦被对面房子里的人发现行迹可疑,会被搞成瓮中捉鳖。4,这里的人对相机很敏感,租房的时候,我提到相机二字,对方马上警告,这里不准拍照。所以,即便我住进去了,机会也近似于无。


Sunday, December 24, 2006

【通知】关于休刊期限的情况说明

自从本月10日起,抓拍城市编辑部遭到流感病毒光顾,高烧不退,睡思昏沉,全体人员无一幸免,不得不延长五一以来的休刊期限,望广大读者谅解。

据可靠消息,目前病情已有好转迹象,会马上恢复出刊。

                                                                                         抓拍城市编辑部
                                                                                            5月13日


Tuesday, December 19, 2006

【杂志】博客杂志第三期出街

抓拍城市第三期博客杂志,也就是2005年5月号杂志出街,点击下载。为什么去年的东西今年才做成电子杂志呢,因为去年的时候,我还不会做电子杂志。

不好意思,第三期比第二期薄了很多,因为去年5月份我拍的东西不多。这次拉了一个建筑师朋友,李程,来给我凑版面,他写的建筑评论被我安插在了专栏这个栏目里。从此以后,我就没法再说这份杂志是我一手原创的了。不过,地产大鹅李程答应我在我杂志上投放地产广告,广告费是10元,我还要给他支付稿费10元,这买卖做得很公允。

本期主要内容:

1,专题题目:色情泰国 旅游&想象,是去年我去泰国苏梅岛的一些照片,为了吸引眼球,题目取的有点过,但我保证,里面有一些裸体照片。

2,黑白之城,我已色盲的一些老照片,这期内容少,拿这些老照片凑数。

3,街头歌手大狗。深圳有一个DV大拿:24格,她专门给这个大狗拍了一部记录片,大家看了这期杂志可以去搜索一下,这部记录片。

……还有许多内容,请
下载文件 (已下载 38 次)

Monday, December 18, 2006

Sunday, December 17, 2006

Friday, December 15, 2006

【意外】民工子弟学校长的“邀请”

在皇岗公园街附近有两所学校,一所是深圳教育国际交流学院,提供不同于国内教育体系的高中教育,全英文授课,学生在课堂上用英语回答生物物理数学问题,这里所有的学生的去向将是国外名校,今年就有四个学生去了剑桥大学,当然这里的学费也是昂贵的,一年近7万,是LM学校——我将要讲到的附近另一所学校——学费的一百多倍。

LM学校是一所民办学校,面向深圳外来打工者的子女招生,目前有1100多个学生在这所学校里上学,整个学校只有两栋二层的建筑,学生的体育课就在楼之间的路面上进行,好像是在上足球课,学生围成一圈,体育老师在中间,把一个软皮球不断地踢向学生,学生躲闪着,嘻笑着,在楼与楼之间逼仄的空间就是他们的操场。我站在高处拍了一些照片,这个时候,我发现这个学校的人突然带领着三四个潮州青年出现在我面前,这位主任模样的人吩咐那几个年轻人:“不要让他走了”,一边打起电话来。在我刚按完110,还没有拨打的时候,一个戴着硕大金戒指,夹着一根红双喜烟,长着一个酒糟鼻子的人出现了,他说他叫老卢,是学校的负责人,让我去他办公室谈谈。在那条清冷的小巷里,这是一个不得不接受的建议,我跟他们穿过那些正在课外活动的学生人群,上了楼,进了屋,喝了潮州功夫茶,说了一些情况,老卢他提了一个我不得不拒绝的建议,你把相机留下,人可以走。

事情陷入了僵局,我只好把话题叉开,说起民办学校的功劳来,民办学校的存在是非常必要的,不仅给外来工的子女解决了上学问题,还解决了一部分教师的就业问题,这在客观上给政府帮了很大的忙。老卢的脸色开始缓和下来,手下的几个青年也陆续退去,我提出,这样吧,我把相机里的卡留下,你们看一下,没问题的话,我过几天来取。老卢沉吟了半天,旁边有个体育老师问,你这相机有自带内存的吗?我装做没听见,老卢好像也没听懂这自带内存是什么意思,说好吧,你再把你的身份证给我复印一下。

所以,今天的日志没有照片,因为卡在老卢那里,我可以保证,那张俯拍的圈中踢球照片非常精彩,可惜了。


Friday, December 08, 2006

【沙尾】外国特务

磨刀师傅是湖北人,儿子在沙尾村附近打工,他也跟着来深圳了,平时没什么事,就抗着磨刀凳在沙尾村里走街,菜刀剪刀,镰刀,两块钱一磨,粗石打刃,细条腻平,手艺非常得不错。我在他旁边转悠了很久,掏出相机拍了又拍。最后选了这张拍糊的,有点半晌磨一镰,霜刃未曾试的意思。这时候过来一个小平头,三十出头的样子,在旁边阴阳怪气,语气上好像是在跟老头说话,但明显是针对我的:要注意啊,这是外国间谍,把我们中国落后的东西都拍走,告诉他们这儿还很穷。然后又冲我幽幽说了一句:相信你也是一个中国人。申请肃穆得让我哭笑不得。

点击在新窗口中浏览此图片

去年年底,东京一个商业电视台来我老家拍纪录片,题材是绍兴手工黄酒的工艺制作,有很多镜头是在我伯父家的酒坊里拍的,差不多拍了一个星期,前后一直有个中年妇女跟着,缩着脖子,笼着衣袖,也不说话,就是从头到尾的看着,我一开始不知道她是干嘛的,问了拍摄队的日语翻译,说是上海外事局派来监视日本人的,她的功能就是阻止日本人,不要拍落后贫穷的东西。我一听就心里冒火,我们家哪个地方落后到会给中国形象摸黑了。第二天绍兴的外事局的人也来了,说要审查录像带,好像我们家有大规模杀伤性武器似的。他们关心的不是黄酒的知识产权,而是中国人在外国人面前的形象问题。以前不知道还有外事局这样的机构,现在知道了,这个机构是专门梗阻中外文化活动的,顺便抓几个特务。

无论是外事局的官员,还是城中村的那个小平头,他们的神经系统中有一根是正常人所没有的,是那个旧时代阶级斗争为纲朝代留下来的,满脑子都是特务和间谍,这也难怪他们,在那个时代,连国家主席都可能是国民党特务,别说普通人了。


内文分页: [1] [2]


【拾遗】牛看人

翻看旧图片,发现一张挺有意思的图。
点击在新窗口中浏览此图片

Tuesday, December 05, 2006

【奇闻】一个八旬老太和她的城堡

“我借来一柄斧头,走到瓦尔登湖的森林里,到达我预备造房子的地方,开始砍伐一些箭矢似的,高耸入云而还年幼的白松,来做我的建筑材料……那是愉快的春日,人们感到难过的冬天正跟冻土一样地消融,而蛰居的生命开始舒伸了”这是隐居名人——美国梭罗在《瓦尔登湖》里描写自己建木屋的情境,如果让油松的陈佩君也来写她的建房过程,她也许会写成这样:“我背着一个硕大的编织袋,走到工业开发区工地的边缘,开始寻找那些被遗弃的木板和瓷砖,那些雕花的木窗棂,来做我的建筑材料……那是炎热的夏天,人们都盘腿坐在新水泥房的门前空地上打麻将,喝浓酽的功夫茶,而我总感觉时间不够用……”

点击在新窗口中浏览此图片

陈佩君,女,今年83岁,潮州人。在她年轻的时候,从一个遥远的地方步行来到深圳,准备偷渡去香港,没有成功,流落到深圳龙华,与当地村民游贵和结婚生子,期间,陈婆婆利用建筑工地的边角废料建造了一座城堡,历时43年,她的半个人生,就耗在了这栋怪异的建筑上,一直到她老了,做不动了,才不得不宣布完工。城堡历经文革风雨飘摇的岁月,改革大潮的风起浪涌,岿然不动。

点击在新窗口中浏览此图片

“城堡”没有使用一根钢筋、全部用砖头、黄泥、木板废料等手工建成,“城堡”共4层,占地面积60平方米左右,高约10米,“身体”下宽上窄,呈圆形状修筑。从外面一个极其隐蔽的小“洞口”弯腰拾级而上,好似逛迷宫,里面别有洞天。城堡的每层两侧分别修有上下通道,通道还分岔口,分别通向不同的房间,各个通道的出入口都建有门框门楣,装饰着圆润的小凸起,在狭窄的楼道口上方,钉有一块块木板。法国建筑大拿勒·柯布西耶就自己的住宅设计提出过五点,其中有一条是要有屋顶花园,陈婆婆就在第二层的户外建了露台,葡萄藤蔓垂下来,将这方空间遮盖得密不透风。“这里以前可以乘凉。”老人说,夏天夜晚,坐在这里抬头就可以摘串葡萄吃!第二层也是她的住处,一间小房中刚够放下一张木板床。床边挂着一面镜子,卧室旁边,还有个厕所。越往上,楼道越窄,其中一边楼道竟然悬空而建。宛如华上南峰上的长空栈道。“城堡”每层均有多个垛口,小孔外翠竹挺拔,藤蔓青青。第三层的墙壁上,老人画有壁画,甚至还有一首六祖慧能的偈句:“菩提本无树,明镜亦非台,本是无一物,何处染尘埃”,地上则是拼凑的颜色各异的残片瓷砖。

在主塔楼的旁边,还有一个附楼,是厕所和一间储藏室,依靠在主楼旁边,像联体婴儿一样,与主楼连接为一体。整个城堡被绿色植物包裹着,如果把这些藤蔓枝叶全部拔掉,呈现在眼前的城堡造型是一个带把的大肚子南瓜。没有方正的断面和棱角,整个城堡的端面连接都是圆润的,温和的。让你你不得不想起钢筋混凝土出现之前,西班牙建筑怪才高迪设计的房子,那些镶嵌在地上墙上的瓷砖残片,颇有高迪贴在戈埃尔公园墙上马赛克和彩陶的意思。

点击在新窗口中浏览此图片

虽然城堡外翠竹挺拔,藤蔓青青,还可以乘凉吃葡萄,令人有“诗意栖居”的错觉,其实城堡内却昏暗无比,一点都不适合人类居住。里面堆满了各种木板杂物,人在通道内行走,需侧身或躬身而过,有的地方甚至要爬行,令我有身处蚁穴的感觉。城堡内不通电,刚进一层,瞳孔来不及扩大,简直是伸手不见五指。二楼的卧室旁边,陈婆婆设计了一个厕所,因为不通水,看上去已经废弃了。因为在这么逼仄的空间内把一个尿桶搬下楼,实在是件令人抓狂的事情。除了厕所之外,陈婆婆还规划了一个空中客厅,有个小台,可以观棋不语,也可以茶过三巡,但从目前看来,这个逼仄而阴暗的城堡实在是不会有太多的客人来,空中客厅已经满地黄叶堆积,无人会,登临意。基本上,我认为,如果给陈婆婆的碉堡装上几个助推器,就是一个宇航飞船。那么逼仄的空间,那些垛口,多像飞船的舷窗。虽然脏乱差,陈婆婆对这里一直不离不弃,儿子和老伴现在已经住在敞亮宽大的新房子里了,只有她还喜欢住老房子,没事就往城堡里钻,坐在西向的露台上,透过簕杜鹃叶子,眺望那坐已经不存在变成了平地的山,一片新的工业区又将在她的城堡五十米的地方拔地而起。

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片


独居在瓦尔登湖畔的梭罗每天至少要到森林里走上4个多小时,而陈婆婆每天要在城堡里爬上爬下做肢体运动,她说,往里面一待,腰就不疼了。她现在唯一的隐忧是,村里的人认为这城堡是危房,由于没有钢筋,墙壁已经像中年男人的肚腩那样往外拱出,为安全计,需要拆除,让陈婆婆搬到新房子里去。陈婆婆并不领村干部的好意,她就是不喜欢跟别的老人扎堆打麻将聊天,她与城堡的那种默契和无声的对话是他人无法理解的。而且也只有与城堡同在,将生命的茫茫托付给她一手一脚捡回来的废品,她才不会感觉到孤独,或许与人在一起时她才是孤独的。

我也无法评判陈婆婆的城堡在建筑文化上的意义,我只是觉得,在千篇一律的混凝土城市八股文里,陈婆婆的城堡,像一个奇特的标点符号,让昏昏欲睡的阅读者,翻到此页,轻轻地“哦”了一声。

--------------------------------

从外面看,只是一棵大树,看不到城堡的一砖一瓦
点击在新窗口中浏览此图片

一楼的厕所
点击在新窗口中浏览此图片

卧室旁的厕所
点击在新窗口中浏览此图片

陈婆婆自己设计的水泥花樽
点击在新窗口中浏览此图片


点击在新窗口中浏览此图片

颇有风情的折线门楣
点击在新窗口中浏览此图片

这是整个城堡内最具装修意味的细节,那些发亮的是镶嵌的碎玻璃
点击在新窗口中浏览此图片


【人像】一个卡通版苦行僧

印度Agra泰姬陵后面一个村庄的印度教苦行僧,没有留大胡子,没有画圣志,没有光膀子缠腰布,如果不是别人提醒,我还以为他只是一个普通的乡村老人,当然看上去,他更像一个印度版的龟仙人。

点击在新窗口中浏览此图片

Monday, December 04, 2006

Saturday, December 02, 2006

【灾害】几段关于乐昌洪灾的手机短信息

佚名/文 徐超/图

点击在新窗口中浏览此图片

短信摘录

  信息1“我现在在楼顶,周围有好多栋旧的房屋都倒塌了,有几个小孩子和几个大人逃到了我家这里避难,我爸则带着我爷爷和姑妈们逃到较安全处,我这边都是小孩和老人“(时间:03:41 07-16-2006)

  信息2“现在我只求天保佑了”(时间:03:50 07-16-2006)

  信息3“现在我在楼顶喂蚊子,好多房屋都倒塌了,我们打110,但总是忙音的,总打不进去“(时间:04:03 07-16-2006)

  信息4“终于打通110了,水也浸上我家二楼了,但救援人员却说先不来”(时间:04:38 07-16-2006)

  信息5“救援人力物力严重不足,我想你去网上发求救信看下有没用,因为现在电话也打不出去了,这次真的是全城尽毁了”(时间:04:46 07-16-2006)

  信息6“你一定要去发表文章求救,记得一定要揭发市政府的无能,因为这次的洪水市政府完全没有通知,令广大市民措手不及,导致了人民财产的极大损失,很多家庭的电器都毁了,那些店铺更不用说,根本不够时间把货物转移,电台电视台都没有任何预防警告,救援缓慢,不负责任,你最好把文章发上凤凰,广东省公安厅等高级权威的政府部门网站,发多几个,重点是求救“(时间:04:58 07-16-2006)

  信息7“现在水依然在不停的下,全城一片黑暗,人们都在担心六点钟即将到来的又一个洪峰究竟还会给这个已经几乎是广东最贫穷的城市带来怎样的灾难“(时间:05:10 07-16-2006)

  信息8“其实这次大水很大的原因是上游泄洪不及,而下游又有水库闸住洪水,防止洪水涌到韶关市内,以致洪水被围困在这不能排去,所以说淹没了整个城市几乎可以认为是政府为了保住韶关不被影响而牺牲了我们这些小城市,这样做从经济建设角度来说本是无可厚非的,但在没有通知和疏散这里的群众,不顾人民生命财产的安危,这是极不人道的行为,是极不负责任的做法,应该说是政府极其重大的过失,呼吁社会各界对这里的灾情给予更多的关注与帮助,让可怜的人民能重建家园“(时间:05:33 07-16-2006)


内文分页: [1] [2]


Thursday, November 30, 2006

【投稿】睡姿

两名游客在惠州的一个公园内午睡

点击在新窗口中浏览此图片


拍摄者 / 朱细聪

Tuesday, November 28, 2006

【置顶】博客杂志第二期出街

抓拍城市第二期博客杂志发行,点击下载。第二期比第一期从内容上丰富了很多,共有63个页码,比第一期差不多增加了三倍,文件量大概是6M,没有明显的增加。

抓拍城市在2005年一共存在了10个月,我会慢慢地把这十个月的内容全都做成flash杂志,把过去落下的功课补上。

本期主要内容:

1,一个城市和它的对日情绪,用文字&图片详细记录了去年4月份发生在深圳的反日大游行,包括一些打砸抢场面。

2,柬埔寨的地雷之痛,这是去年春节去柬埔寨,在暹粒街头发现了大量被地雷炸伤的人,回来就做了这个专题。

3,黄酒世家的往昔与梦想,讲述浙江绍兴农村酿酒的故事。

……还有许多内容,请

下载文件 (已下载 41 次)


Saturday, November 25, 2006

【美女】深圳欲制造环姐

点击在新窗口中浏览此图片
5号选手马端

环球国际小姐深圳赛区晋级选手出炉。她们将参加8月8日-20日在上海杭州举行的环姐中国赛区总决赛,如果再次晋级的话,将参于在阿尔巴尼亚的全球角逐。中国是首次参加环姐比赛,展示的图片不是现场图片,是抓拍城市的资料图片,分别为获得深圳赛区亚军的冯路畅和季军的马端。

点击在新窗口中浏览此图片
12号选手冯路畅


Friday, November 24, 2006

Thursday, November 16, 2006

“MySQLicious” solution

In this solution, the schema has got just one table, it is denormalized.
This type is called “MySQLicious solution” because MySQLicious imports del.icio.us data into a table with this structure.
Intersection (AND)

Query for “search+webservice+semweb”:
SELECT *
FROM `delicious`
WHERE tags LIKE "%search%"
AND tags LIKE "%webservice%"
AND tags LIKE "%semweb%"
Union (OR)

Query for “search|webservice|semweb”:

SELECT *
FROM `delicious`
WHERE tags LIKE "%search%"
OR tags LIKE "%webservice%"
OR tags LIKE "%semweb%"
Minus

Query for “search+webservice-semweb”
SELECT *
FROM `delicious`
WHERE tags LIKE "%search%"
AND tags LIKE "%webservice%"
AND tags NOT LIKE "%semweb%"
Conclusion

The advantages of this solution:

* just one table
* the queries are very straightforward
* one can also achieve results via fulltextsearch. That might be a little faster.
* I guess the queries are pretty fast (also referring to a blog entry of Peter Cooper: section “Denormalize! Denormalize! Denormalize!”) quite slow according to good arguments. Fulltext search would speed up a bit. I did some performance tests to prove that.
* In my follow up post I dealt with MySQL fulltext concerning tagging.

Disadvantages:

* You have a limit on the number of tags per bookmark. Normally you use a 256byte field in your DB (VARCHAR). Otherwise, if you took a text field or similar, the query times would slow down, I suppose
* If you paid attention (as Patrice did) you notice that LIKE "%search" will also find tags with “websearch”. If you alter the query to LIKE " %search% " you end up having a messy solution: You have to add a space to the beginning of the tags value to make this work.

“Scuttle” solution

Scuttle organizes its data in two tables. That table “scCategories” is the “tag”-table and has got a foreign key to the “bookmark”-table. database structure of scuttle
Intersection (AND)

Query for “bookmark+webservice+semweb”:
SELECT b.*
FROM scBookmarks b, scCategories c
WHERE c.bId = b.bId
AND (c.category IN ('bookmark', 'webservice', 'semweb'))
GROUP BY b.bId
HAVING COUNT( b.bId )=3

First, all bookmark-tag combinations are searched, where the tag is “bookmark”, “webservice” or “semweb” (c.category IN ('bookmark', 'webservice', 'semweb')), then just the bookmarks that have got all three tags searched for are taken into account (HAVING COUNT(b.bId)=3).
Union (OR)

Query for “bookmark|webservice|semweb”:
Just leave out the HAVING clause and you have union:
SELECT b.*
FROM scBookmarks b, scCategories c
WHERE c.bId = b.bId
AND (c.category IN ('bookmark', 'webservice', 'semweb'))
GROUP BY b.bId
Minus (Exclusion)

Query for “bookmark+webservice-semweb”, that is: bookmark AND webservice AND NOT semweb.
SELECT b. *
FROM scBookmarks b, scCategories c
WHERE b.bId = c.bId
AND (c.category IN ('bookmark', 'webservice'))
AND b.bId NOT
IN (SELECT b.bId FROM scBookmarks b, scCategories c WHERE b.bId = c.bId AND c.category = 'semweb')
GROUP BY b.bId
HAVING COUNT( b.bId ) =2

Leaving out the HAVING COUNT leads to the Query for “bookmark|webservice-semweb”.
Credits go to Rhomboid for helping me out with this query.
Conclusion

I guess the main advantage of this solution is that it is more normalized than the first solution, and that you can have unlimited number of tags per bookmark.
“Toxi” solution


Toxi came up with a three-table structure. Via the table “tagmap” the bookmarks and the tags are n-to-m related. Each tag can be used together with different bookmarks and vice versa. This DB-schema is also used by wordpress.
The queries are quite the same as in the “scuttle” solution.
Intersection (AND)

Query for “bookmark+webservice+semweb”
SELECT b.*
FROM tagmap bt, bookmark b, tag t
WHERE bt.tag_id = t.tag_id
AND (t.name IN ('bookmark', 'webservice', 'semweb'))
AND b.id = bt.bookmark_id
GROUP BY b.id
HAVING COUNT( b.id )=3
Union (OR)

Query for “bookmark|webservice|semweb”
SELECT b.*
FROM tagmap bt, bookmark b, tag t
WHERE bt.tag_id = t.tag_id
AND (t.name IN ('bookmark', 'webservice', 'semweb'))
AND b.id = bt.bookmark_id
GROUP BY b.id
Minus (Exclusion)

Query for “bookmark+webservice-semweb”, that is: bookmark AND webservice AND NOT semweb.

SELECT b. *
FROM bookmark b, tagmap bt, tag t
WHERE b.id = bt.bookmark_id
AND bt.tag_id = t.tag_id
AND (t.name IN ('Programming', 'Algorithms'))
AND b.id NOT IN (SELECT b.id FROM bookmark b, tagmap bt, tag t WHERE b.id = bt.bookmark_id AND bt.tag_id = t.tag_id AND t.name = 'Python')
GROUP BY b.id
HAVING COUNT( b.id ) =2
Leaving out the HAVING COUNT leads to the Query for “bookmark|webservice-semweb”.
Credits go to Rhomboid for helping me out with this query.
Conclusion

The advantages of this solution:

* You can save extra information on each tag (description, tag hierarchy, …)
* This is the most normalized solution (that is, if you go for 3NF: take this one :-)

Disadvantages:

* When altering or deleting bookmarks you can end up with tag-orphans.

If you want to have more complicated queries like (bookmarks OR bookmark) AND (webservice or WS) AND NOT (semweb or semanticweb) the queries tend to become very complicated. In these cases I suggest the following query/computation process:

1. Run a query for each tag appearing in your “tag-query”: SELECT b.id FROM tagmap bt, bookmark b, tag t WHERE bt.tag_id = t.tag_id AND b.id = bt.bookmark_id AND t.name = "semweb"
2. Put each id-set from the result into an array (that is: in your favourite coding language). You could cache this arrays if you want..
3. Constrain the arrays with union or intersection or whatever.

In this way, you can also do queries like (del.icio.us|delicious)+(semweb|semantic_web)-search. This type of queries (that is: the brackets) cannot be done by using the denormalized “MySQLicious solution”.
This is the most flexible data structure and I guess it should scale pretty good (that is: if you do some caching).

Update May, 2006. This arcticle got quite some attention. I wasn’t really prepared for that! It seems people keep referring to it and even some new sites that allow tagging give credit to my articles. I think the real credit goes to the contributers of the different schemas: MySQLicious, scuttle, Toxi and to all the contributors of the comments (be sure to read them!)

P.S. Thanks to Toxi for sending me the queries for the three-table-schema, Benjamin Reitzammer for pointing me to a loughing meme article (a good reference for tag queries) and powerlinux for pointing me to scuttle.

Wednesday, November 15, 2006

Tuesday, November 14, 2006

【通知】速告地址

拍成都宽窄巷子的小黑,拍顺德波伏街的懒人谷,拍上海虹口的都市醉汉,速速告知你们的联系地址,以便发放杂志刊用后的稿费。

Monday, November 13, 2006

【专栏】真假傻逼

朋友问,难道你还去SSW论坛潜水?这可太让人鄙视了。我忙不迭的回答,只是偶尔去看看,偶尔看看。就像我现在抽烟一样,偶尔抽抽。没办法,5年的习惯了。

因为有人转贴了和菜头的一张帖子,这让我在SSW论坛又翻看了几天的回帖,题为“过骠悍人生,做刚样男子”的帖子是和菜头应韩白之争而写的,他在帖子里说得很明白了,韩骂粗口是小事,白烨利用国家资源炒作私书,甚至利用美国几千条人命的悲剧炒作一本市场化的书才是大大值得批判的恶心事。SSW论坛的有些人看不到这两者的区别,还在那里义愤填膺:不许骂粗口!粗口有那么可怕吗,逼&操就真的引发礼崩乐坏了吗,想想清楚,是什么在阻止社会朝文明社会发展,不是粗口,不是“你妈逼”;而是公共资源被少数人占用,是公平规则被一些人践踏。SSW论坛的一些人真是晕了头。韩寒吵架白吵了。写了那么多,有些人只看到了其中的粗口。

陆天明帮白烨说话,陆川帮陆天明说话,高晓松帮陆川说话,因为他们是朋友关系,父子关系,在粗口和腐败面前选择批判价值,脑子有点拐不过来,可以理解。有些跟韩,白两边都没啥关系的人,本身就站在局外的人,也只看到了粗口,不见腐败,只好认为是理解能力有问题的糊涂蛋了。

突然想起来,以前在SSW论坛吵架,有个声音一直没有停止过:不许人身攻击,人身攻击的帖子利马删除,哪怕这个帖子很有价值。把脏水连带孩子一起倒掉,这等蠢事就是有些人在做。而且更绝的是,他们自己制定规则,自己来打破。他们反对人身攻击,结果自己到最后的时候,却开始了人生攻击,揭发别人搞女网友,却揭到自己的盟友上去了,真是有趣了。

国人就是怕被骂粗口,被骂一句“傻逼”就立马火爆三丈,好像真的傻了逼了一样。我在网上也被骂过傻逼,在东南亚游走的时候也被骂过fuck you,但那又怎么样呢。你难道真的像和菜头一样去买他的物理地址吗。被骂傻逼没关系,没有任何损失,走开就是了。如果在现实生活中利益被人侵占而无动于衷,那才是真的傻逼。譬如房地产维权之类的,和我一起买那个楼的很多人,明明被房地产商强奸了,还试图跟地产商讲和,地产商给点蝇头小利就和他们签了补充协议,要不就是到处看看有没有人集体找律师而他可以搭顺风车一起告。这样的人才是真傻逼。而往往是这些人,如果被骂一句“傻逼”的话,却了不得了,跟挖祖坟了似的。

其实,挖了祖坟又如何呢,地壳运动山崩海裂,有多少人的祖坟被挖被移被灭呢,难道你跟大自然去叫板??

Saturday, November 11, 2006

Thursday, November 09, 2006

【专栏】贱民之贱嗖嗖

出版达人老六创作了一个绕口令:山上有个贱嗖嗖 山下有个嗖嗖贱 有天俩人下山来比贱 不知道是嗖嗖贱比贱嗖嗖贱 还是贱嗖嗖比嗖嗖贱贱。”如果要说比贱,那谁不能跟印度贱民比。

有很多中国人去过印度,最有名的是唐僧玄奘法师,第二有名的是法显,也是个法师,晋朝人,他回来之后,在他的游记里提到贱民,说这些人很受歧视,如果要上街的话,他得敲一个随身携带的梆子,提醒路人甲乙丙丁注意闪避,以免看到他。也就是说,在1500年前的笈多王朝,一个普通印度人走在路上,一不小心看到了贱民,倒霉程度跟踩到一堆狗屎是一样的,恶心又懊悔。1500多年以后,另外一个大学问家金克木也去了印度,他看到的贱民已经不用敲梆子了,在路上走的时候,只需要有一只手时刻放在额头上,保持随时敬礼的姿势,依然是卑微而渺小。千年沧桑白云苍狗,民主改道,共和降临,对于贱民,他们只是去掉了一个梆子。

又过了五十年,不变的依然是贱民们在社会底层泥猪疥狗般的卑微生活。在阿格拉开往瓦拉纳西的火车上,我碰到一个贱民,他和他的老婆带着六个孩子蜷缩在车厢连接处的狭小空间里,相互依偎,看不出本色的脏布衣服和他黑乎乎的皮肤裹挟在一起,脏孩子们,像五子登科年画那般挂满了他的身体,如果不是他们的眼睛特别黑亮,还以为是列车员丢弃在车厢里的一堆废弃衣物。这厮会说英语,我就跟他爆破音严重得厉害的英语聊了一会,大概很久没有跟衣着光鲜的人士聊天了,他显得很高兴。这显然激发了他的顽皮劲儿,在我给另外一个锡克族大汉拍照的时候,他把他黝黑的脑袋挤进了我的取景框里,这个冒失的行为让那个大胡子锡克人很生气,大声训斥了他一声,贱民马上像被烫着了的蜥蜴一样,“哧溜”一声,重新缩回到车厢角落,变成一堆废弃衣物模样。

印度的种姓制度早已在五十多年前被法律废除,慈善达人甘地给他们取了个新名字叫哈里真(神的子民),不再叫“贱民”这个带有歧视性称呼,但这又怎么样呢,我们也在建议废除“民工”这个歧视性称呼,但煤矿依然要爆炸,薪水照旧要拖欠,世界就是这样,无论在哪里,都有骄奢者的嘴脸可以欣赏,都有卑微者的身影可以收藏。

Tuesday, November 07, 2006

【卖稿】电视没法看


“这个世界越来越快了……”,每天我打开网站新闻页的时候,我总有这样的感叹。微处理器的运算速度每18个月会翻一番;股票市场上的地产版块高歌猛进;上海出了磁悬浮后火车也越跑越快,以后深圳到北京睡一觉就到;流水线上工人的手指迅疾如群鸡啄米;周围亲朋离婚的速度同样和全球化的进程一样,越来越让人晕眩……根据爱因斯坦的理论,当速度快到一定程度后,会发生空间扭曲,这个时候,你会像纽约时报的专栏作家托马斯·弗里德曼一样发现世界是平的。
最好的一个例子就是美剧的传播速度,美国电视连续剧从来没有像今天这么火过,我最近迷上了看《越狱》,现在演到第二季了,美国人民刚刚看完的剧情,马上会通过互联网传送到太平洋的这边,期间经过数码录制、语音翻译、校对、调整时间轴、制作BT种子、上传、下载……时间差是一个晚上,《越狱》构思巧妙,非常抓人,我都感觉我的心是跟美国人民一起跳动的。上个月美国那边有个重要的棒球比赛,《越狱》停了一个月,把我撂一边了,急得我想托人给布什打电话,投诉他们的广电总局怎么一点都不急呢。
几年前,有个朋友看《流星花园》也是这般着急,那时候网络分布式点对点传输(BT)技术没有成熟,只能跑去租碟铺租《流星花园》的光盘看,一张光盘好几集,好几天出一张。去租碟铺次数多了,老板见他都熟了,“哎呀,不好意思,今天只来了5集,你过几天来吧,我先给你留着”。并劝慰我朋友不要着急,“现在台湾的观众也只看到了第九集,在大三通没有实现之前,你能看到第六集已经不错了,再说人家做光碟的也不容易嘛!用卫星电视偷摸收看,看完之后还要连夜用光碟刻录出来,再通过分销渠道到我这儿,速度已经相当快了!”结果,大三通没盼来,倒是BT技术来了。
我家的电视机有七十多个频道,每个频道里都充斥了美容广告清宫戏假模假式的武打片,我实在没有勇气让遥控器在它们身上停留一秒钟。花了钱安装了有线电视,尽是这些垃圾,还不能退货,逼得我只好到电脑上去看电视剧,互联网的好处就是,永远有一批热血沸腾的高素质精英义工在为网民免费服务,让我们能免费看到优秀美国电视连续剧,既练英语听力又欣赏编剧近乎完美的创作能力。这事儿根本没妨碍什么人,可就是有人不乐意,他们认为这种美国人的文化产品的泛滥,是一种文化侵略的具体表现,文化产品传播速度越来越畅通,说明文化侵略的步伐越来越急促。文化何辜,要被冠以侵略之名,人家的电视剧拍的就是比中国的好看,若要说侵略,那也是我们主动请来的。

Monday, November 06, 2006

Simple caching

The GridView has a property named EmptyDataText that allows you to specify the text to display when there are no records.



Hope this helps.

mariano p. szklanny | developer :: Patterns & Practices | Web Client Software Factory Team


--------------------------------------------------------------------------------



I usually use asp:panel controls -- put the GridView in one, and a message with "Sorry, no records" in the other, and then hide/show depending on what's in the dataset.






--------------------------------------------------------------------------------


Thanks everyone for the help! It’s all working perfectly, although I do have one last issue I can’t figure out:



Super simple: how do you respond in a gridview when 0 results are returned? I just get a blank space—not even the headers show up. Is there a standard tag that lets me simply post “Sorry, no records were found!” or something?



MS



I agree … remember too you can easily set priority (e.g. NotRemovable, for hi-pri items) and also set dependencies, so it’s easy to build a “tree” of cache-related items.



-Brian




Mike,



They are right. It would be easier to invalidate the cache using Cache.



Also thinking about it some more, Cache is better about handling large amounts of data. Holding large amounts of data in Application state can fill up server memory which can cause paging. Cache manages the memory issue by flushing items that are close to expiration when memory becomes scarce.



Cache it should be.



Take a look at How To : Add Items to the Cache http://windowssdk.msdn.microsoft.com/en-gb/library/18c1wd61.aspx.



-Ian Bennett




Ok, instead of using the Cache object, I would use Application state. Something like:



DataSet playerData = null;



if (Application["Players"] == null)

{

// FILL playerData WITH DATA...

Application["Players"] = playerData;

}

else

{

playerData = (DataSet)Application["Players"];

}



// NOW DO SOMETHING WITH playerData



Hope this helps.



-Ian Bennett




Across all pages… let’s suppose it’s a list of active football players and a ton of people are hitting that page…. And the list only changes every day, but the query to get that list is really expensive for whatever reason. That’s what I’m getting at here.



MS




What’s the desired scope the cache, meaning do you want it cached for each user, for all users, etc.? Do you want to share the cache across pages?



-Ian Bennett



Hey guys,



I’m trying to cache an array of values—not too many, maybe 100 strings in one array. But let’s assume the query to the database takes 30 seconds and the data won’t change more than once/day. What’s the best way to do this? I’m looking into online examples but they are all way too advanced (caching data sources, using sql dependencies, etc.)



All I want to do is build this array during Page_Load and store it for one day (60*60*24 seconds):



protected void Page_Load(object sender, EventArgs e)

{

if (not_cached)

// load the connection to the database, run the query (which returns a vector so an array can store it)

else

// use cache



// store results in a string array

whatever[]

}



MS

Sharing Master Pages between multiple web projects

The vdir method works good. We also create a base page and deploy it in the GAC that has utility classes for the master page.



http://strangeworld:8081 has more details and a working example.




--------------------------------------------------------------------------------




Storing the master page in the GAC was not a tested/supported scenario. It seems to work, but considering it wasn’t a tested scenario, I wouldn’t recommend it. (VSWhidbey 569807):



1. Scott's article about copying the precompiled dll to the application directory works.

http://weblogs.asp.net/scottgu/archive/2005/08/28/423888.aspx



2. This kb about creating virtual directory underneath the application and point to the shared master page, user control or sitemap would also be recommended and supported way.



324785 How to ahare ASP.NET pages and user controls between applications by http://support.microsoft.com/?id=324785






--------------------------------------------------------------------------------



There was another post about this a little while ago on the list, there appears to be a rather convoluted option based on the GAC described here



http://weblogs.asp.net/dwahlin/archive/2005/11/16/430779.aspx





Samuel




--------------------------------------------------------------------------------


Hi,



is there a way to share a master page between different web projects? I would like to have something like a link that we can add to every project (the same feature that is available in other project types), so updates will be propagated to all referencing projects.



Unfortunately, the source control system (CVS) does not support creating linked files. Any other techniques we could use to facilitate this?



thx,



- patrick





Patrick Schuler

How to retrieve the full name of the logged in User

You have to add the reference to System.DirectoryServices to your Project before using it.



Nuno Silva

Application Development Consultant




--------------------------------------------------------------------------------



System.DirectoryServices



Berkay


--------------------------------------------------------------------------------


Hi Berkay Meşe,



Thanks for immediate response to my query.



Can you please let me know the namespace for DirectoryEntry and DirectoryServices?



Note : I am using .Net Framework 1.1 for developing this application .





Regards

Sukesh


--------------------------------------------------------------------------------




string[] sUser;
sUser = Context.User.Identity.Name.ToString().Split(new Char[]{'\\'}, 2);

string Domain_Slash_User = Context.User.Identity.Name;
string Domain_Slash_Machine = Domain_Slash_User.Replace(@"\",@"/");
string queryString = @"WinNT://" + Domain_Slash_Machine;



DirectoryEntry obDirEntry = new DirectoryEntry(queryString);
System.DirectoryServices.PropertyCollection coll = obDirEntry.Properties;



object obVal = coll["FullName"].Value;
txtAlias.Text = obVal.ToString();



Berkay Meşe|Technology Solutions Professional|Application Platform
É90(212)-3265441È90(533)-6893610 šberkay.mese@microsoft.com

Try New Cool Features Of Biztalk Server






--------------------------------------------------------------------------------

Hi,



I am using Windows authentication for retrieving the alias and using the following code



private string [] sUser;

sUser = Context.User.Identity.Name.ToString().Split(new Char[]{'\\'}, 2);

txtAlias.Text = sUser[1];



Can anybody help me on how to retrieve the full name of the logged in User?



Regards

Sukesh

firstOne

Have a good start.

Saturday, November 04, 2006

【人物】拉琴老人和他的学校

显然,阿和在梁祝这个曲目上,还没有做到圆润两字,在半弓切弦的时候,显得有点手忙脚乱。但这并不妨碍他在全弓到底一脸沉醉的样子。行人从他身边匆匆而过,阿成和的琴匣半敞,里面有一些零星的钱。他说他爱文艺,喜欢历史,现在在蔡屋围一带拉琴卖艺,没事了就去附近的书城转一下,里面有个乐器行,有一把小提琴卖700多,阿成和看上它了,准备年底回家之前买了它。我想他只是说说而已。

点击在新窗口中浏览此图片

阿成和特别喜欢小孩,每逢有儿童经过他身边,他总是把提亲从肩上卸下来,连琴弓一起递给那些小孩,来,拉一下,而那些父母在这个时候,走得更急促了,把自己的孩子拉得跌跌撞撞,似乎离这个光头老汉越远越好。阿老汉显得很无奈,他说,我就是喜欢孩子,没办法,有一次,有个小孩过来跟我在路边学琴,被他父母看到了,拉过来就狠打了一顿,我要是有权力,都想把这种父母杀了,留着有什么用,他们教出来的孩子有什么用。老汉那张长得酷似蒋介石的脸,突然现出凶相来。

阿成和喜欢小孩到什么程度,他一直说一句话,为了孩子我把工作都丢了,他以前是西宁一个国营企业的司机,为了挣钱,他辞了铁饭碗工作,买了个卡车去跑运输,在八十年代这是不可想像的事情,结果车翻货亡,背上债务一直潦倒至今。他的梦想也就破灭,到如今依然是一个梦想,为孩子建一个学校的蓝图在记忆里已经模糊不清。

点击在新窗口中浏览此图片

未完


Thursday, November 02, 2006

【北头】没听说过的城中村

点击在新窗口中浏览此图片

深圳有个南头,不料还有个北头村,位于前海路,南新路,深南路的包夹地带,村口的对联是:北揽九州云气万丈高楼傲南山,头迎改革春风千亩蚝田泛金浪。一看这个对联就是改革既得利益者的口气,也能看出这里的村民以前是养蚝为生的。不多说了,看图。

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片