育炜's profile有为PhotosBlogLists Tools Help

Blog


    March 09

    这个标题啊

    一直觉得这个blog比较失败的地方就是必须让人写标题。还在旁边明明白白写着必填。
     
    好久没有更新过这个blog。自从微软开始跟随facebook的世界潮流时,我就越来越用不懂这个Space。
     
    周围的诱惑和选择越多,就越是随波逐流了。原本告诫自己千万要知道什么时候要做什么事。结果发现不知不觉就着了生活的道了。啥叫人在江湖,身不由己。一句老掉牙的话还是可以拿出来推卸责任。思想退步了,觉悟降低了,眼界狭隘了,啥都觉得没意思了。
     
    坚持啊,不能忘记革命传统。
     
    October 15

    什么是教育[转]

    在一封邮件里面看到的,找不到出处了。

    "生命真是美极了,它不是我们制造出的这些丑恶。唯独当你对所有事物革新之后,才能欣赏到它的丰富、深度及可爱。革新组织化的宗教、传统和现今败坏的
    社会,然后以人本的立场来探究什么是真理(不是去模仿),这才是教育"
      "这是一个疯狂的、完全混乱的世界,每个人都在和别人作对,极力想达到一个安全的位置,一个有权势或享福的位置。这个世界被冲突的信念、阶级意
    识、不同的国家主义、各种形式的愚蠢及残酷所分割,而这就是你要学者去适应的世界。
    然而,教育的意义只是帮助你顺应这个败坏的社会制度吗?还是要给你自由,一种全然的自由,来让你成长并创造一个不同的社会,一个新世界?我们必须拥有这
    份自由,不是在未来,而是现在,否则我们将被彻底消灭。我们必须立刻创造出自由的气氛,你可以在其中生活并且探索什么是真相,然后你会变得有智慧、及有
    能力了解这个世界,而不只是顺服它。因为在你的心底深处,你是不断在革新的,也只有那些不断革新的人,才会发现什么是真理,那些服从与跟随传统的人是无
    法做到这一点的。只有不停探索、不停观察、不停学习,你才会发现真理、上帝或爱。如果你的心中有恐惧,你就不能探索、观察、学习,不能深入的察觉。所
    以,教育的意义显然就是消除外在或内在破坏人类思想、关系及爱的那份恐惧"

    September 16

    [转]AGDC: Blizzard's Morhaime On Overcoming 'Myth' With WoW

    来源地址:http://www.gamasutra.com/php-bin/news_index.php?story=15369

    Think every aspect of your game play has to be customized for regional players? Blizzard disagrees, and in his keynote for the Austin GDC, president Mike Morhaime discussed this and other lessons learned throughout the company's release history.

    Morhaime's keynote speech focused on the ten lessons Blizzard has learned in globalizing its IP, and started with a brief rundown of the company history, starting with him and his 2 recent UCLA graduate friends in 1991, and the $10,000 each they got as graduation presents or borrowed from their grandmothers.

    Blizzard: The Beginning

    Cutting their teeth and learning about game development by doing Amiga and Mac conversions of PC games and moving to 16 bit console titles, the decline of the console market focused the company on PC games, where it began with Warcraft.

    World of Warcraft, said Morhaime, has "really transformed the company in ways we couldn’t possibly have imagined at the time, but through that process and all these years, we've really stayed committed to the same core philosophies that we were committed to at the beginning."

    First and foremost was "gameplay first," "one of our mantras," said Morhaime, and though he admitted it wasn't going to be a design talk as with the previous Austin GDC, "I should say right off the bat that if we don’t get this part right, none of the rest of this matters."

    Morhaime said Blizzard uses a model of the market of a donut, with core gamers in the middle -- the opinion makers, and casual players as the ring around.

    "In order to be real successful we want to hit both of those markets," he said, achievable by trying to build games "deep and replayable while being accessible to wide market," through low system requirements, and the separate mantra, "easy to learn, difficult to master."

    On Brand Protection Above All

    The next philosophy is to "build and protect the brand" –- "The Blizzard name is our most important property," he said, and it stands for "high quality, fun, and polish." The company thinks of its brand as a bank account, constantly trying to "make 'brand deposits' and avoid 'brand withdrawals.'"

    Next, Morhaime said the company always resists the pressure to ship early. Pressure, he said, comes from all around to ship the game as soon as possible, something Blizzard tries to resist as shipping early is "very risky," and, referring to the last point, "shipping a game early can do tremendous damage to a brand or a franchise."

    He pleaded that the industry "think long term" and said "shipping early and losing players is very short term mentality." The company fought this battle in 1996 when Diablo missed its holiday release schedule, which, in the end, perhaps impacted day one sales, but went on to sell well throughout 1997.

    "Nobody looks back at Diablo and says 'if only they’d released it 3 weeks earlier'," said Morhaime, and through that experience the company was able to educate its parent company that it's quality that matters -- something Blizzard had to deal with again as Burning Crusade missed its own holiday deadline.

    Morhaime: Focus On Specifics

    Next, Morhaime said developers should “resist the pressure to do everything at once”: there's a lot of pressure to do everything, to compete everywhere, to not miss an opportunity, but he instead said to "build on your successes, gain expertise, then get more ambitious – if you try to do everything at once, your risk goes up at not getting anything right."

    Morhaime then looked specifically at how Blizzard has evolved as a global company. When the company stated, the U.S. was its most important market, and it would complete a game in English and then go on to localize it for other markets.

    It found, though, as Europe became more important, that the grey market of importers was having an impact on sales -- hardcore fans would have already imported the game on its U.S. release, so the company worked to shorten the delay between regional launches.

    Asia developed quite differently, he said, noting that in the region game rooms were very important, with some 20,000 in Korea, and 200,000 in China. By contrast, he said, "there are about 30,000 McDonalds in the whole world," and said making sure your game operates well in game rooms is very important.

    The 'Myth Of Regional Taste'

    Morhaime then turned to the “myth of regional taste” -- something he said might be a controversial point. "You hear a lot of talk that the way to succeed internationally is to localize and customize your game for local tastes, to have people in each region to tell you local tastes, and that’s the key. We don’t think about it like that."

    "We think there are different styles of play that exist everywhere, just in different concentrations," he continued, such as the prevalence of PVP versus PVE players in Korea, "but you still have both, and you still have both here."

    Instead Blizzard takes the approach that there are different styles of play that exist everywhere, "so instead of creating 15 different versions, we look at what the different styles are and make sure the game provides something for the different styles," striving to "make everyone feel welcome in the game."

    Morhaime did note that it was important to "think globally," noting its experience in adding a samurai panda race in Warcraft 3, upsetting Chinese players as they saw their own animal in Japanese garb. Blizzard quickly changed the race to wear Chinese armor and weaponry, and got a lot of appreciative response that Blizzard was actually listening.

    Global thinking leads to global challenges, though, and Morhaime noted that the company was very wrong about its estimates of World of Warcraft demand, which it always considered would fall under the ceiling of Warcraft 3, previously its best-selling game.

    "We had to stop shipping boxes to retail because we didn’t have capacity to support them," he said, and immediately after launching the game Blizzard was "in the fire of trying to play catch up."

    The Difficulties Of Scaling

    That's when the company learned its next lesson that "HR is really important" in scaling up entire business overnight. Blizzard also found at that time that "running a MMORPG is not just game development."

    Though it'd already had experience running BattleNet, "when you go to running a subscription based service with paying subscribers, it’s really a whole new ballgame. We thought we understood this."

    "It’s all of these other things that impact players experience that are maybe just as important as the game itself," said Morhaime, saying the company had to "shift our mindset that we weren’t just a game developer, we were a service company, and we needed to apply things that service companies do."

    Those things included, most importantly, communication. Blizzard frequently had to deal with a doubly bad situation where the developers couldn't yet identify a bug, so therefore community managers couldn't relate the problem to players, falling into a "holding pattern of not saying anything, while the community is 'wigging out', which is what communities do when you don’t talk with them."

    Blizzard set up a process to keep both the community and international staff informed through formalized email lists, and by adding a "layer of people around the development team to keep internal people informed."

    'Never Trust Version 1.0'

    Next, Morhaime said the company strove to "avoid financial incentives," not internally but with this player. He said, simply, "What happens if there’s a financial reward for doing something is many people go out and do that thing."

    In the real world, he said, if it's possible to sell gold to make money, people will farm gold to sell, and of course this has implications in the game world as well. Between sweatshops to farm gold, trojans to steal accounts and stolen credit cards, all to sell gold and items to "rich Americans," Blizzard said it was the company's duty to "protect our players" and "minimize the financial rewards from behaving in this way," which he characterized as "a constant battle."

    Morhaime concluded with his key point, that testing was also of the utmost importance, and to "never trust version 1.0." "Everyone at Blizzard tests," he said, from private alphas to public betas.

    He said you will always "find out a few things you don’t find out internally" through public betas, not just in server loads, but in what Blizzard refers to as "cheese."

    "If there’s a most efficient way to play the game that will get you accomplishments faster, that’s what people will do, even if it’s boring and tedious," he said. "They’ll do it and think your game is boring and tedious and not fun –- try to eliminate those."

    For the Burning Crusade launch, Morhaime said they applied all of the rules, padding forecasts for day one demand, and, happily, "This time we were prepared – servers withstood initial demand very well, and our customer service guys felt Burning Crusade launched like a very smooth patch release," the best case scenario for the company.

     

    中文来源:http://www.it.com.cn/f/games/079/7/474276.htm

    【暴雪新作推荐】:魔兽世界:巫妖王之怒》专区 《星际争霸2》游戏资料专区

      暴雪创办人兼总裁Michael Morhaime在GDC Austin上发表了演讲,谈论他从《魔兽世界》和其他暴雪游戏中总结出来的十条经验。

      1·游戏性第一。如果你了解暴雪,那你知道他们在游戏平衡性上力尽完美,或者说比任何人做的都好。暴雪哲学好懂但难掌握。他们希望你入门容易而维持长时间的兴趣,用同一款产品同时吸引休闲和核心玩家。

      2·打造并保护品牌。暴雪的目标是要消费者进入商店,看到暴雪的商标就知道那是好东西。但个人认为暴雪这方面做的不好,为何?他们欺负了可怜的BNetD(战网私服)人员,控告一群没有反抗能力的开发者。暴雪真坏。

      3·抗拒提早上市的诱惑。这一点很多人都做不到。游戏是要在完成之后再推出,而不是当日历上某个时候到来。如果照着日历办事,那你的结果就是创世纪9,更糟糕的,就是多bug的微软恶梦般的操作系统。

      Michael指出,公司应该用长远的目光去看,而不是考虑短期。短期考虑通常不会有好结果。《暗黑破坏神》错过了圣诞假期,在12月31日推出。你会觉得暗黑是个错过了圣诞的游戏,还是个卖了几百万的游戏?《燃烧远征》也错过了圣诞假期,但在第一天就卖出了240万份。

      4·不要所有东西都同时做。知道自己能做什么,然后把它做好。《魔兽世界》并不是他们第一款在线游戏,《魔兽3》就有大量在线内容,《暗黑2》也是。从它们之中吸取经验,WOW就诞生了。

      5·暴雪是一个全球性的企业。它曾经只是美国的公司。东西先做好英文的再去做其它地区的。游戏先在北美发售,然后到欧洲,然后到其它地方。这种做法有好些弊端。

      星际争霸,韩国的国家级游戏,显示的却不是本地语言。唯一有本地语言的是日本版,但这个版本又与其它的冲突,韩国人玩的是英文版。而北美和欧洲的灰色市场意味着当游戏在美国发售,那在欧洲发售日期之前人们就能拿到它,而当游戏正式在欧洲发售的时候,人们已经买到了,销售自然不好,零售商也不高兴。

      解决方法就是平等的对待所有玩家。进行全球范围的同步发售。这需要更多时间,但绝对值得。《暗黑2》便是全球同时发售,而结果也相当好。

      6·地区性口味的神话。暴雪不相信有地区性口味这玩意儿,全球兴趣都是一样的,只是人数不同。如果你制作一款适合所有人口味得游戏,那你就不用针对每个市场各做一个版本了。

      有一件事还是得注意,就是文化问题,比如魔兽3里的熊猫。游戏里的熊猫穿着日本服装拿着日本武器。中国玩家对此颇有怨言。因此它后来就改穿了中式服装和中式武器,问题就解决了。

      7·运营网络游戏不属于游戏开发。你在三个大陆上24小时不停得运行着数千台服务器。你还需要管理一群活跃但虚拟的社区。

      举个例子,你的开发小组在为游戏增加内容,但如果小组需要修正服务器的问题,他们就不能继续开发那些内容,哪个更重要?暴雪特别成立了一个小组专门应付游戏里的问题,这样开发小组就可以专注于他们的工作了。

      8·交流。内部交流、外部交流。如果你有社区,跟他们交谈,经常的,清楚的。如果有个大bug,或者服务器挂了,工作人员马上就开始工作,他们不会到论坛里解释问题,时间就这样浪费了。

      因为这样,内部无关人员不知道发生了什么事,外面的人也不知道发生了什么事,然后人们开始抓狂,在论坛上疯狂发贴然后论坛就挂了。

      为了解决这个问题,暴雪建立了一个正式的邮件系统。开发小组可以与内部人员交流,消息可以有秩序的传播开去。

      9·避免涉及金钱。只要你在WOW里显露出一点商机,人们就会滥用它。如果你把它隐藏,问题就变小了。如果坏人不能赚钱,淘金、窃取帐号、伪造信用卡等等这些问题就不再存在了。

      10·持续测试游戏,不要相信Ver.1.0。你测试的越多就越好,但很少人能做到。在暴雪,每时每刻每人都在测试。先有封测,然后公测,然后发售,希望游戏到了发售日的时候能有平衡性、流畅、无bug。

      暴雪在燃烧远征的发售上相当接近这个目标。服务器的结构升级以减少网络延迟,并提升了容量。他们补充了很多的内容,最后把发售日期推迟到完成的那一天。

      最后,他们在当地时间凌晨发售了。一天卖掉了240万份,这是很好的成绩。有管理员表示当他看着服务器的灯一个接一个亮起来的时候他感到非常欣慰。

      暴雪奋斗了16年,现在有数百万玩家在线游戏,他们做出了不错的成绩。任何技术都会出现问题,但暴雪总能把它们减轻。希望日后的网络游戏可以从他们的错误和成功中学到一些经验。

     
    August 05

    从新开始的生活

    一些事情终于结束了。 
    好像清晰了,好像又一下没了方向。
    还是需要时间慢慢完成进化。
    May 22

    从一个精致得角度看过去

    每天走过的路,搭过的车,吃过的饭,以及见过的保安都是一样的。这,被很多人称之为习惯。

    许久以来,我们过于依赖这样的习惯,并且认为别人也是这样。因为我们成了人群中习惯着每一天的大部分的人。

    我们无法让自己灵魂深处的信仰得见光明。时间逝去的时候,给所有曾经的闪光积上厚厚的尘。

    希望走过的曲线可以从更精致的角度记录下什么。

    May 21

    中午又和一个要离职的同事吃了饭,说到了当下比较混沌的状态。

    也不知道现在正在做什么,做的事情有什么意义。以后又该做什么。

    一切也没个头,没个尾。

    好像搭上了一班车,就这么跟着,不知道哪站再下去搭另外一班车。

    May 07

    寄托和信仰

    一个长假就这么快过去了,似乎每天都没闲着。只要你愿意,永远都有很多事情等着你。

    有开心的,有不开心的,有希望发生的,也有不希望的。不过这些事情总是没有选择的追着就来了。躲不掉。

    这么着挺好,挺有活着的感觉。忙啊忙的,瞎忙。

    今天是长假最后一天,眼看一个假期就过去了。

    距离我来公司就快半年了,不知道什么时候开始时间过的飞快。超出我的想象。

    和我刚来的时候,似乎没有什么太大的变化。一切如常。

    原来的朋友们也忙着各自的事业和生活,和半年前一样,大家都很平淡的平淡的生活。

    我看到他们的平淡,却形容不出来。那种感觉,恐怕我很难体会。不是因为我多了不起,多忙,是因为我早丢掉了我的寄托和信仰。

    March 06

    关于产品设计

    互联网产品的特点

    互联网产品和软件产品不同,相比来说,互联网产品需要更快的开发速度,更灵活的结构,更好的拓展性,更快的更新速度。互联网产品,往往不仅限于功能的实现。而一个成功的产品,除了和用户的交互,功能的强大,便捷,容错能力强之外,文化和氛围的形成,建立,也会对产品起到异常重要的作用。而在产品规模到达一个层面的时候,通常需要对平台本身结构,功能,技术,体验等方面的突破,以至达到概念的突破,才能让产品再次迸发出生命力和竞争力。

    什么时候需要产品设计

    任何时候产品都需要不断的更迭和完善。但是基于互联网产品的特点,在产品新推出,和平台到达一个规模瓶颈的时候,尤其需要通过设计来提高产品的竞争力,从而迅速占领市场。产品前期的结构是否合理和灵活,也决定了产品后期的改造,平台整合,功能和资源输出是否能快速小代价的执行。

    什么人应该懂得产品设计

    产品设计人员(产品的功能设计人员)无疑需要精通产品设计。其实,一个产品生产团队的所有人,都应该或多或少懂得产品设计,至少有产品设计的理念。一个再好的功能设计师,也没办法把所有执行层面的产品细节设计到位。而且也没有充足的时间让大家这么作。那么遇到产品执行细节的时候,必定需要各执行层的人员在专业技能之外,用产品的理念进行执行。

    例子:

    比如yahoo美国首页的更多服务菜单,这个菜单通过一次点击从左边移出。产品人员可以设计这个菜单的通过什么动作激活出现,从什么地方出现,什么时候消失,但是没办法设计这个菜单移出的速度。是匀速移出,加速移出还是减速移出。移出到制定位置的时候是否要做急停或者抖动效果。

    上述的这些是需要动画设计师和工程师合作来完成的,不仅仅是产品人员。

    产品人员在设计流程的时候,也可能不甚了解某个新特效或者交互形式的应用,会对现有的开发有多大程度的影响。这时候,产品人员需要和相关的技术工程师沟通来确定具体的流程或者交互逻辑应该如何设计。

    因此好的产品人员不一定在各个执行层面都是强手,但是好的产品人员一定要懂得如何和专业人员沟通,从而可行的好的产品方案。

    产品设计都设计什么

    产品设计绝不是单纯对功能的增减。往往出现的一个现象,是产品人员拿着功能列表的单子,和大家讨论哪些功能要,哪些不要,哪些一期做,哪些二期做。在时机不恰当的时候,就陷入了细节的泥潭,而忘记整体的目标。最后的产品就成了一个功能堆砌的场所,而很难表现出原本的主张。之前说过,很多的细节是需要和专业的执行人员协调沟通来执行的。产品人员一定要在整个过程中,可以看到大的产品目标和方向,不能让自己迷失。这个时候一定不能忘记目标用户群、平台优势、定位、资源。

    关于用户心理模型和产品设计模型

    产品的设计模型,其实我更愿意说产品实现模型。往往设计模型和实现模型是有差距的。而用户也往往没有按照我们预先设计的模型来使用产品。一个产品模型为用户提供了很多可能。产品人员也要通过最终用户的使用情况来判断产品的实现模型是否和用户的心理模型匹配。

    用户使用产品的时候通常现如下:

    需求目标->分解成若干任务->按照产品规则进行交互->对照心理预期验证执行结果

    这个路径通常不是唯一的,也可能在交互的过程中,用户的早期需求目标就发生了改变。因此,条条大路通罗马。关键是不要总让用户在最后失望。

    产品设计的依据

    如何判断产品设计是否合格,是否达到了目标。产品的数据指标是足够客观的。但是也往往难以直接揭示问题。而且往往在产品发布之前,产品人员就需要取得足够的依据以便可以在验证团队的想法。

    通常评审产品的方法有“焦点小组”和“用户可用性测试”。焦点小组的评审方式更崇尚经验和专业。而互联网产品的用户群体和文化往往变化较快,所以焦点小组的评审略显主观和狭窄。目前业界更为推崇“用户可用性测试”。

    在可执行层面来说,部分主要功能的可用性测试,整体使用流程的可用性测试,还有在线调查的方式都可以在设计前期取得相当的数据依据。在产品上线后再辅以数据分析,进行产品的调整。

    如何理解“我们”设计的平台

    产品人员是否真的“懂”我们要设计的平台。对一个有交互氛围的产品平台进行设计把握,一定要真的懂得用户是如何使用类似的平台,用户如何使用我们的平台。这需要产品人员能充分的体验用户使用这些平台的感受,更要能预测出用户即将产生的需求。产品人员一定要大量的使用这些平台,要让自己先成为一个足够深度的“玩家”。

    Colors Reference [Transshipment]

    source url:http://www.smashingmagazine.com/category/color

     

    Sometimes we just don’t know what color to use. Sometimes we have no idea which colors to combine in order to create a beautiful color palette which would attract the visitors of our web-sites. That’s why we’ve decided to create some kind of visual reference cards or cheat sheets for the most popular colors of Web 2.0. Green, Purple, Black, White and other colors will be reviewed and analyzed in the next articles.

    Today’s Color is green. You can download it from our web-site. Please don’t refer to the image in your blog posts, but to this article. We’ve invested a lot of time creating it. So if you’d like to use it, at least appreciate our work. Please.


     

     

     

     

    February 24

    过年归来

    一个年又过去了,和去年一样,还是在火车上,睡的混天黑地之间接到无数的新年祝福短信。太多了,为了公平起见,就都没有回复,倒头又睡了。
     
    走之前的几天一直加班,又发烧又感冒,没怎么睡觉,正好省得在车上无聊了。200多的卧铺钱真没浪费,从上车睡到下车。
     
    回家过年越来越成了一种形式,和老同学的聚会也变成了机械的推杯换盏,没意思透了。不知道是我变了,还是他们变了,话题除了说谁结婚了,似乎就没什么可说的了。
     
    过年最好的娱乐项目也就是打麻将了。恰好我又不擅长这个,每次都是给大家点炮,命中率相当的高。
     
    第一次去延福寺祈愿,小时候在那边住了好久,似乎印象中不记得还有一个乾隆题过寺名的香火鼎盛的寺庙。在老朋友的指引下把寺庙的所有神圣都拜遍了,第一次拜佛拜的那么虔诚。似乎越长大,就越觉得很多事太无助,只能乞求上苍,不为能得到什么,只为让自己觉得还有所牵挂。
     
    下次春节不知道什么状况。一年一年的,时间过的好快。
     
    February 12

    一些事,终于结束了

    有一些事,终于结束了。
    和06年的流年预测一样,只有前半句应验了。不知道07年会是什么情况。
    希望在另外一面能有一个开始。
    October 09

    页面滚动,浮动层不动

    从同事那里得来一法,我说是“猫盖屎”。同事教导我说,“能盖住屎的就是好猫!”哈哈哈哈。
     
    <html>
    <head>
    <script>
    function fl(){
        var s=document.getElementById("bd");
        s.contentWindow.document.body.innerHTML="<div style='border:1px solid blue;height:1000px;width:800px;padding:3px;'>the main content</div>";
    }   
    </script>
    </head>
    <body onload="fl();" style="margin:0px;">
        <div style="position:absolute;right:30px;bottom:5px;background:yellow;">floating</div>
        <iframe id=bd frameborder=0 src="" style="width:100%;height:100%;"></iframe>
    </body>
    </html>
    September 05

    [转]清洗各种污渍的方法

    是朋友邮件发给我的,也没有地址。所以无法写明出处。

     

    So 厉害,share 一下

     

    1.除咖啡、茶渍三法
    衣服上洒上咖啡或茶水,如果立即脱下用热水搓洗,便可洗干净。如果污渍已干,那就要用较复杂的办法洗涤了。 

    ①用甘油和蛋黄的混合溶液涂拭污渍处,待稍干后,再用清水洗涤即可。
    ②先用甘油涂在污渍处,再撒上一些硼酸粉,然后浸入开水中洗涤即可除污渍。
    ③用稀氨水、硼砂和温开水涂擦,也可除去污渍。若是羊毛混纺织品,不需滴氨水,只用10%的甘油溶液洗涤即可。


    2.除酒渍
    如果是刚染上的色酒、啤酒或其他酒渍,用清水就能洗去。若是陈迹则必须放在加有氨水的硼砂溶液内,才能去除。


    3.除果汁渍三法
    ①新染上的果汁,可先撒些食盐,轻轻地用水润湿,然后浸在肥皂水中洗涤。
    ②对于轻微的果渍可用冷水洗除,一次洗不净,再洗一次,洗净为止。污染较重的,可用稀氨水(1份氨水冲20份水)来中和果汁中的有机酸,再用肥皂洗净。呢绒衣服可用酒石酸溶液洗。丝绸可用柠檬酸或用肥皂、酒精溶液来搓洗。
    ③在果汁渍上滴几滴食醋,用手揉搓几次,再用清水洗净。

    4.除柿子渍
    新渍,用葡萄酒加浓盐水一起揉搓,再用肥皂和水清洗,或用5%稀氨水和洗涤剂一起揉搓,然后用水漂洗干净。丝绸织物则用10%柠檬酸溶液洗涤。


    5.除泡泡糖渍
    用汽油或酒精擦洗即可去除。

    6.除口香糖渍
    将粘有口香糖而难以洗除的衣物,放入冰箱的冷藏格中冷冻一段时间,糖渍变脆,用小刀轻轻一刮,就能剥离干净。


    7.除冰淇淋渍
    用汽油即可擦洗干净。


    8.除酱油渍
    在温洗衣粉溶液中加少量氨水和硼砂,再将织品搓洗,即能去除。
    返回

    9.除番茄酱渍
    将干的污渍刮去后,用温洗衣粉溶液洗净。


    10.除鸡蛋渍
    如果鸡蛋液污染了衣服,应等污迹干后,再用蛋黄和甘油的混合液擦拭,然后再把衣服放到水中清洗即可。


    11.除动植物油渍
    衣服上被动植物油污染后,挤点牙膏于渍处,轻轻擦几次,再用清水搓洗,油污即可清除。


    12.除咖喱油渍
    用5%浓度的次氯酸钠洗后,再用清水洗净。
    返回

    13.除蟹黄渍
    可在已煮熟的蟹中取出白鳃搓拭,再放在冷水中用肥皂洗涤。


    14.除圆珠笔油渍
    将污渍用冷水浸湿后,用苯丙酮或四氯化碳轻轻擦去,再用洗涤剂、清水洗净。不能用汽油洗。也可涂些牙膏加少量肥皂轻轻揉搓,如有残痕,再用酒精擦拭。


    15.除红墨水渍
    先用洗涤剂洗,然后用10%的酒精擦洗,再用清水洗净。也可用0.25%的高锰酸钾溶液清除。用芥子末涂在红墨水迹上面,经过几小时,红墨水迹也会消退。


    16.除蓝墨水渍
    新污染的衣物可先在冷水中浸泡,然后用肥皂搓洗。陈迹则要放在2%的草酸溶液中浸泡几分钟,然后用洗涤剂洗除。


    17.除墨渍
    先用清水洗,再用洗涤剂和饭粒一起搓揉,然后用纱布或脱脂棉一点一点粘吸。残迹可用氨水洗涤。也可用牙膏、牛奶等擦洗,再用清水漂净。

    18.除复写纸、蜡笔色渍
    先在温热的洗涤剂溶液中搓洗,尔后用汽油、煤油洗,再用酒精擦除。


    19.除印油渍
    用肥皂和汽油的混合液(不含水)浸漂或涂在色渍上,轻轻搓洗,使其溶解脱落,再用肥皂水洗涤,用清水漂净。若经过肥皂洗涤,油脂已除,颜色尚在,应作褪色处理。要用漂白粉或保险粉(用于真丝衣物的)来消除颜色渍。


    20.除汗渍五法
    ①先用喷雾器在有汗渍的衣服上喷上一些食醋,过一会儿再洗,效果特别好。
    ②将冬瓜一块捣烂,倒进布袋中,将其液汁挤出,用来搓洗沾有汗渍的衣服,然后再用清水漂净。
    ③在清水里加几滴氨水,把有汗渍的衣服放进去漂洗一下,再用清水洗净。
    ④把汗渍衣服放在5%的食盐水中,浸泡1小时,再轻轻揉搓,用清水洗净。
    ⑤把生姜切成碎末,放在衣服汗渍洗,然后用清水漂净。


    21.除血、奶渍二法
    ①胡萝卜研碎拌上盐,涂在沾有血、奶渍的衣服上揉搓,再用清水漂净。
    ②衣服上沾有血、奶迹,先用洗,然后蘸冷水搓洗,可不留痕迹。


    22.除尿渍
    刚污染的尿渍可用水洗除。若是陈迹,可用温热的洗衣粉(肥皂)溶液或淡氨水、或硼砂溶液搓洗,再用清水漂净。


    23.除油渍
    翻毛裘衣,若沾上油渍,可在油渍处适当撒些生面粉,再用棕刷顺着毛擦刷,直至油渍去掉。然后,用藤条之类拍打毛面,去掉余粉,使毛绒蓬松清洁。滑雪衫若沾上油渍,用冷水把少许面粉冲调成浆糊状,涂于油渍处,几小时后,用刷子蘸水刷去粉末,油渍就会消失。

    24.除黄泥渍
    衣裤上有黄泥斑痕,先用生姜汁涂擦,再用清水洗涤,黄斑会立刻褪去。


    25.除胶类渍
    灯芯绒衣物上沾有胶类等物时,可用清水浸泡后轻轻擦拭,切忌干搓,以防拔掉绒毛。


    26.除霉渍四法
    ①梅雨季节,洗好的衣服不易晒干,常有一股难闻的霉味。若将衣服放在加有少量醋和牛奶的水中再洗一遍,便能除去霉味。若收藏的衣服或床单有发黄的地方,可涂抹些牛奶,放到太阳下晒几个小时,再用通常的方法洗一遍即可。
    ②如果呢绒织物上有了霉迹,须先将其挂在阴凉通风处晾干,再用棉花蘸少量的汽油在霉迹处反复擦拭即可。
    ③新长的霉斑,先用刷子刷,再用酒精清除。陈旧霉斑需涂上氨水,放置一会儿,再涂高锰酸钾溶液,最后用亚硫酸氢钠溶液浸湿并用水冲洗。以 ④皮件(皮衣、皮手套等)上长了霉,不宜用湿布揩,最好晒干(或烘干)后把霉刷掉。为了防霉,可配制一些药水,成分是:对硝基酚(可在化工商店买到)3份、肥皂10份、水100份,溶解后涂在皮件上,晾干即可。


    27.除锈渍
    用1%的草酸溶液擦拭衣服上的锈渍处,再用清水漂洗。

    28.除漆渍二法
    ①乘油漆未干,先用煤油反复涂擦,再涂擦一些稀醋酸(不用醋酸也可以,只是效果要差些),最后经水洗,即可除去。干了的油漆迹较难除去,有一种简单的方法:锅内加2.5公斤水、100克碱面和少许石灰,把衣服放到里面煮20分钟,取出后用肥皂洗净,油漆便会脱落。要注意的是:有色的衣服最好不用此法,以免脱色。
    ②衣物上不慎沾上漆渍,用汽油、香蕉水(乙酸乙脂)消除,会影响衣料质地。最好的办法是用清凉油涂拭:在漆渍处正反面涂清凉油少许,隔几分钟,用棉花球顺衣料的纹擦拭,会收到理想的效果。


    29.除桐油渍
    可用汽油、煤油或洗涤剂擦洗,也可用豆腐渣擦洗,然后用清水漂净。

    30.除柏油渍
    可用汽油和煤油擦洗。如没有汽油或煤油,也可将花生油、机油涂在被沾污处,待柏油溶解后,就容易擦掉了。


    31.除蜡烛油渍
    衣服上沾上了蜡烛油,用一般洗涤办法是洗不掉的。可先用刀片轻轻刮去衣服表面的蜡质,然后将衣服平放在桌子上,让带有蜡油的一面朝上,在上面放一两张吸附纸,用熨斗反复熨几下即可。


    32.除烟油渍二法
    ①衣服上刚滴上了烟筒油,应立即用汽油搓洗,如搓洗后仍留有色斑,可用2%的草酸液擦拭,再用清水洗净。
    ②一旦衣物上滴上烟油,要速取炉灰一小撮,均匀撒在上面,待片刻炉灰干后,清去炉灰,烟油自掉。如果衣物上的烟油已干,而且时间较久,可先用清水浸湿油迹处,然后再取炉灰适量撒在上面,干后油渍即除。


    33.除沥青渍
    先用小刀将衣服沾有的沥青轻轻刮去,然后用四氯化碳水(药店有售)略浸一会,再放入热水中揉洗。还可用松节油反复涂擦多次,再浸入热的肥皂水中洗涤即可。
    返回

    34.除青草渍
    用食盐水(1升水加100克盐)浸泡,即可除掉。


    35.除红药末渍
    先用温洗衣粉溶液洗,再分别用草酸、高锰酸钾处理,最后用草酸脱色,用清水漂净。


    36.除碘酒渍
    先用亚硫酸钠溶液(温的)处理,再用清水反复漂洗。也可用酒精擦洗。


    37.除药膏渍
    先用汽油、煤油刷洗,也可用酒精或烧酒搓擦,待起污后用洗涤剂浸洗,再用清水漂净。

    38.除高锰酸钾渍
    先用柠檬酸或2%的草酸溶液洗涤,后用清水漂净。


    食油渍
    轻涂牙膏于渍处,再用清水搓洗。


    酱油渍
    可倒入2%的硼砂溶液,或加入适量氨水于温水中冲洗 (不用适于丝毛织品与织品的衣料)


    原子笔油迹
    可用沾湿酒精的布擦掉,或涂些洗发水于污处,将衣物浸在混了白醋的水中,半小时后再用刷子轻轻擦洗即可。


    鞋油渍
    可用汽油、松节油或酒精擦拭 ;至于陈旧的油渍再用含氨的浓皂液洗除。


    印油渍
    将含汽油皂水浸于印油渍上,使其溶解,再用皂水洗净。


    油漆渍
    在油漆末干时,涂擦些煤油,再涂擦一些稀醋酸,然后用水洗除。


    沥青渍
    先刮去衣服上的沥青,然后浸于四氯化碳水,再用热水清洗。此外,你亦可用花生油或机油涂在被沾污处,待沥青溶解之后再用肥皂水搓洗。


    机械油渍
    用汽油大力洗刷即可。

    July 25

    再见了Embed,一些媒体播放器的符合web标准的代码[转]

    再见了Embed,一些媒体播放器的符合web标准的代码

     

    由于Embed标签是Netscape的私有财产,故一直未被W3C认可,对于各种媒体文件使用Embed标签是非标准的,如何改变?Elizabeth

    Castro Bye Bye Embed

    一文对于各种媒体播放器给出了很好的符合web标准的代码。

     

    在线媒体播放--Google Video and YouTube

     

    <object type="application/x-shockwave-flash"

      data="http://video.google.com/googleplayer.swf? » 8755581808731033658"

      width="400" height="326" id="VideoPlayback">

      <param name="movie"

        value="http://video.google.com/googleplayer.swf? » docId=8755581808731033658" />

      <param name="allowScriptAcess" value="sameDomain" />

      <param name="quality" value="best" />

      <param name="bgcolor" value="#FFFFFF" />

      <param name="scale" value="noScale" />

      <param name="salign" value="TL" />

      <param name="FlashVars" value="playerMode=embedded" /> </object>

    其实就是FLASH文件的调用

     

    Windows Media Player 文件

     

    <object type="video/x-ms-wmv"

      data="http://www.sarahsnotecards.com/catalunyalive/ » fishstore.wmv"

      width="320" height="260">

      <param name="src"

        value="http://www.sarahsnotecards.com/catalunyalive/ » fishstore.wmv" />

      <param name="autostart" value="true" />

      <param name="controller" value="true" /> </object>

    上面的代码没有Windows Media

    Player特有的classid,作者在IE5.5, IE6, IE7, Opera Win/Mac, Firefox Win/Mac, Safari下测试通过。

     

    QuickTime movies 没有 embed 标签

     

     

    <object classid="clsid:02BF25D5-8C17-4B23-BC80- » D3488ABDDC6B"

      codebase="http://www.apple.com/qtactivex/qtplugin.cab"

      width="320" height="260">

      <param name="src"

        value="http://www.sarahsnotecards.com/catalunyalive/ » diables.mov" />

      <param name="controller" value="true" />

      <param name="autoplay" value="false" />

      <!--[if !IE]>-->

      <object type="video/quicktime"

        data="http://www.sarahsnotecards.com/catalunyalive/ » diables.mov"

        width="320" height="260">

        <param name="autoplay" value="false" />

        <param name="controller" value="true" />

      </object>

      <!--<![endif]-->

    </object>

    出处:蓝色理想

     

    --~--~---------~--~----~------------~-------~--~----~

    You received this message because you are subscribed to the Google Groups "web

    技术研究与应用" group.

    To post to this group, send email to webbase@googlegroups.com To unsubscribe from this group, send email to webbase-unsubscribe@googlegroups.com

    For more options, visit this group at http://groups.google.com/group/webbase

    -~----------~----~----~----~------~----~------~--~---

     

    July 21

    用ASP.NET上传图片并生成带版权信息的缩略图

    <%@ Page Language="C#" ResponseEncoding="gb2312" %>
    <%@ import Namespace="System" %>
    <%@ import Namespace="System.IO" %>
    <%@ import Namespace="System.Drawing" %>
    <%@ import Namespace="System.Drawing.Imaging" %>
    <script runat="server">

    void Page_Load(Object sender, EventArgs e)
    {
    if(!Page.IsPostBack)
    {
    ImgPreview.Visible=false;
    }
    }
    void GetThumbnailImage(int width,int height,string strInfo,int left,int right)
    {
    string file="Uploads/"+uploadFile.PostedFile.FileName.Substring(uploadFile.PostedFile.FileName.LastIndexOf('\\')+1);
    string newfile="Uploads/"+uploadFile.PostedFile.FileName.Substring(uploadFile.PostedFile.FileName.LastIndexOf('\\')+1)+".jpg";
    string strAdd=strInfo;
    System.Drawing.Image oldimage = System.Drawing.Image.FromFile(Server.MapPath(file));
    System.Drawing.Image thumbnailImage =
    oldimage.GetThumbnailImage(width, height,new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero);
    Response.Clear();
    Bitmap output=new Bitmap(thumbnailImage);
    Graphics g=Graphics.FromImage(output);
    g.DrawString(strAdd,new Font("Courier New", 14),new SolidBrush(Color.Red),left,right);
    output.Save(Server.MapPath(newfile),System.Drawing.Imaging.ImageFormat.Jpeg);
    Response.ContentType = "image/gif";
    ImgPreview.Visible=true;
    ImgPreview.ImageUrl=newfile;
    }
    bool ThumbnailCallback()
    {
    return true;
    }

    void Button_Click(object sender, EventArgs e)
    {
    int width,height,left,right;
    string strAddInfo=txtAddInfo.Text;
    width=Int32.Parse(txtWidth.Text);
    height=Int32.Parse(txtHeight.Text);
    left=Int32.Parse(txtLeft.Text);
    right=Int32.Parse(txtRight.Text);
    if(!(uploadFile.PostedFile.ContentLength>0))
    {
    lblErrInfo.Text="没有选择文件";
    }
    else
    {

    string path = Server.MapPath("./Uploads/"+uploadFile.PostedFile.FileName.Substring(uploadFile.PostedFile.FileName.LastIndexOf('\\')+1));
    if(File.Exists(path))
    {
    lblErrInfo.Text="已经有同名文件";
    }
    else
    {
    uploadFile.PostedFile.SaveAs(path);
    GetThumbnailImage(width,height,strAddInfo,left,right);
    }
    }
    }
    </script>
    <html>
    <head>
    </head>
    <body>
    <form method="post" enctype="multipart/form-data" runat="server">
    <p>
    <input id="uploadFile" type="file" runat="server" />
    <asp:Label id="lblErrInfo" runat="server" forecolor="Red"></asp:Label>
    </p>
    <p>
    width:<asp:TextBox id="txtWidth" runat="server" Width="40px">100</asp:TextBox>
    height:<asp:TextBox id="txtHeight" runat="server" Width="40px">150</asp:TextBox>

    </p>
    <p>
    添加信息:<asp:TextBox id="txtAddInfo" runat="server">AspxBoy.Com</asp:TextBox>
    </p>
    <p>
    信息位置:left:<asp:TextBox id="txtLeft" runat="server" Width="40px">10</asp:TextBox>
    right:<asp:TextBox id="txtRight" runat="server" Width="40px">135</asp:TextBox>
    </p>
    <p>

    <input id="button" type="button" value="上传生成缩略图" onServerClick="Button_Click" runat="server" />
    </p>
    <p><asp:Image id="ImgPreview" runat="server"></asp:Image>
    </p>
    <!-- Insert content here -->
    </form>
    </body>
    </html>
    July 18

    MSN无法登陆(登录)的解决方法[转]

     
    不知道怎么回事,最近一段时间MSN登陆非常困难,必须尝试多次才有可能成功。一个偶然的机会,发现下面的方法可以快速登陆。

    MSN无法登录的几种可能原因和解决方法:

    1、最有可能的原因: 系统时间错误

    返回信息:80048820,总是说防火墙设置阻止MSN的连接。但在MSN的网络连接测试中都是成功。

    解决方法:系统日期不对造成的!!!!,请你认真查看是否在你升级到MSN7.5以后,系统日期变成了2004年,如果是直接将系统日期改成现在的时间。

    点击右下角系统时间设置为当前正确时间。OK!

     

    2、原因不明:系统为MSN 7.5

    解决方法:打开“Internet Explorer”,点击“工具”里的“Internet选项”,选“高级”,点击“还原默认设置”,再点击“应用”,最后“确定”,一切搞定,就这么简单

    3、原因不明:

    解决方法:当登陆MSN返回“重试”,“取消”和“帮助”三个选项时,先选择“帮助”,再选择“重试”,这样很快就登陆成功了。

    这种方法是某网友WINDOWS 2000,ADSL上网,安装了FW。


    4、80048820 错误

    故障现象:80048820 错误,用MSN连接检测一下说端口有问题,检查时间是正确的

    解决方法:把INTERNET 选项里的 检查服务器证书吊销状态的勾去掉就可以了。

    谢谢,我的也是报的这样的错,用这个方法成功了

    5、由于病毒防火墙引起

    解决方法:如果用的是norton病毒防火墙,在Norton个人防火墙设置中,将程序列表中有MSN MESSAGE程序,左击中间下拉菜单,将其改为全部允许.

     
    6、封包长度不对

    故障现象:80048820


    解决方法:MSN 7.5,adsl路由器,问题出在封包上,路由器的封包长度由1496调到1420后一切就OK 了

    供参考:
    登录路由器-〉网络参数-〉WAN口设置-〉在PPPoE高级设置里,把数据包MTU 1492改成1480。
    此办法也可解决Foxmail无法发送附件和无法在网页邮件中粘贴附件的问题。

    网友提供的其他一些解决方法:


    可能存在以下情况:
    - 您的 Microsoft .NET Passport 设置不正确。
    - 防火墙设置阻止了 MSN Messenger。
    - 安全设置阻止了 MSN Messenger。
    - 您的时间日期设置可能不正确。
    - 一个反病毒程序可能与MSN Messsenger相冲突。
    - 您在使用不正确的密码或电子邮件地址尝试登录。

    请按照所列顺序尝试以下解决方法:
    1. 使用“连接问题疑难解答程序”解决问题。
    a. 启动 MSN Messenger。
    b. 在“工具”菜单上,单击“选项”。
    c. 在“选项”对话框中,单击“连接”,然后在“连接设置”下单击“连接测试”。
    注意:对于MSN Messenger 7.5,单击“连接”,然后在“连接问题疑难解答程序”在单击“开始”。
    d. 按照“连接问题疑难解答程序”中的步骤进行操作。

    2. 确认MSN Messenger是否被防火墙所阻止。请移至http://webmessenger.msn.com/ 登录Web Messenger。点击“启动MSN Web Messenger”确认您是否可以登录。如果可以,那么MSN Messenger有可能被防火墙所阻止。如果您的计算机运行的是第三方(非 Microsoft)软件或防火墙软件(例如,Zone Alarm,Norton网络安全专家,或McAfee),请确保该软件配置为允许 Messenger 运行,然后再次尝试登录 MSN Messenger。请移至http://messenger.msn.com/help/issues.aspx 参阅相关信息。

    3. 通过执行下列操作调整 Internet Explorer 中的代理服务器设置:
    a. 打开 Internet Explorer。
    b. 在“工具”菜单上,单击“Internet 选项”。
    c. 单击“连接”选项卡,然后单击“局域网设置”。
    d. 清除“自动检测设置”复选框。
    e. 单击“确定”,然后再次单击“确定”。

    4. 请按如下步骤在MSN Messenger中清除代理服务器设置:

    -MSN Messenger6.2
    a. 开启MSN Messenger6.2
    b. 在“工具”菜单上单击“选项”。
    c. 在“选项”对话框中单击“连接”选项卡。清除“我使用代理服务器”设置。请不要选择此选项,除非网络管理员建议您这样做。
    d. 连续按两次“确定”。

    -MSN Messenger7.0
    a. 开启MSN Messenger7.0
    b. 单击“工具”菜单上的“选项”。
    c. 在“选项”对话框左侧的主题列表中单击“连接”,然后单击“高级设置”。
    d. 在SOCKS 4下删除内容
    e. 在SOCKS 5下删除内容
    f. 在HTTP代理服务器下删除内容
    g. 连续按两次“确定”保存设置。

    -MSN Messenger7.5
    a. 开启MSN Messenger7.5
    b. 单击“工具”菜单上的“选项”。
    c. 单击“连接”,然后点击“高级设置”
    d. 在SOCKS 下删除内容
    e. 连续按两次“确定”保存设置。

    5. 调整 Microsoft Internet Explorer 安全设置:
    a. 启动 Internet Explorer。
    b. 在“工具”菜单上,单击“Internet 选项”,然后单击“高级”选项卡。
    c. 在“安全”部分,确保选中了以下所有复选框:
    - 检查服务器证书吊销
    - 使用 SSL 2.0
    - 使用 SSL 3.0
    d. 单击“确定”关闭窗口。
    e. 注册 SSL 安全库。要执行此操作,请单击“开始”,单击“运行”,然后按照适用于您的操作系统的步骤进行操作。

    注意 在成功执行每个命令后,您都会收到“DllRegisterServer succeeded.”消息。请在收到此消息后再执行下一条命令。

    - Microsoft Windows XP 和 Microsoft Windows 2000:
    i. 键入 %windir%\system32\REGSVR32 softpub.dll,然后按 ENTER 键。
    ii. 键入 %windir%\system32\REGSVR32 wintrust.dll,然后按 ENTER 键。
    iii. 键入 %windir%\system32\REGSVR32 initpki.dll,然后按 ENTER 键。

    - Microsoft Windows Millennium Edition (Me) 和 Microsoft Windows 98:
    i. 键入 %windir%\system\REGSVR32 softpub.dll,然后按 ENTER 键。
    ii. 键入 %windir%\system\REGSVR32 wintrust.dll,然后按 ENTER 键。
    iii. 键入 %windir%\system\REGSVR32 initpki.dll,然后按 ENTER 键。

    f. 如果您使用的是 Windows XP,请清除安全套接字层 (SSL) 状态和自动完成历史记录:
    i. 启动 Internet Explorer。
    ii. 在“工具”菜单上,单击“Internet 选项”,然后单击“内容”选项卡。
    iii. 在“证书”下,单击“清除 SSL 状态”。
    iv. 收到报告 SSL 缓存成功清除的消息后单击“确定”。

    6. 双击屏幕右下角的时区验证您的计算机的日期和时间设置正确无误。

    7. 请再次尝试登录MSN Messenger

    8. 如果您正在运行反病毒程序,请先关闭,看是否能登录MSN Messenger。如果可以,请联系您的软件制造厂商或查看相关文件如何配置解决此冲突。

    9. 如果您收到“无效的用户名或密码”或“81000303”错误信息,请确保您使用的是正确的用户名和密码。确认您可以使用此帐户登录任何站点,请移至 http://www.passport.com 点击“登录”,如果您可以成功登录,您会看见“登出”按钮。如果失败,请更改您的密码,您可以到http: //memberservices.passport.net/default.srf/ 。 如果此方法有效,尝试再次登录MSN Messenger,请按如下步骤:

    -MSN Messenger7.0或更早的版本
    a. 在MSN Messenger主窗口的“文件”菜单中点击“登录”
    b.输入电子邮件地址和密码
    c.对于Microsoft Windows XP 和Microsoft Server2003,选择“自动登录”,然后按“确定”。
    对于Microsoft Windows98,Microsoft Windows ME,和 Windows2000,选择“在这台电脑上保存我的用户名和密码”,然后按“确定”。

    -MSN Messenger7.5
    a. 在MSN Messenger 登录窗口,先清除“记住我的密码”复选框
    b. 输入密码
    c. 选择“记住我的密码”保存新的密码
    d. 再选择“自动为我登录”

    10. 如果您仍然无法登录MSN Messenger, .NET Messenger服务可能临时不可用。请等待几分钟后再尝试登录。或者移至visit http://messenger.msn.com/status.aspx 查看服务器状态。

    再试试

    @ECHO OFF
    ECHO.如果你msn中修复不了就运行吧.
    ECHO *****************************************************************
    ECHO * This file is provided by msn-problems.com *
    ECHO * Copyright (C) 2004-2005 *
    ECHO *****************************************************************
    ECHO.
    ECHO 等一下.

    REM Following files only needed in windows XP
    IF NOT "%os%"=="Windows_NT" GOTO WIN9X
    regsvr32 Dssenh.dll /s
    regsvr32 Gpkcsp.dll /s
    regsvr32 Slbcsp.dll /s
    regsvr32 Sccbase.dll /s

    :WIN9X
    IF NOT "%os%"=="Windows_NT" CD %windir%\System\
    REM Needed by both XP and 9X
    regsvr32 Softpub.dll /s
    regsvr32 Wintrust.dll /s
    regsvr32 Initpki.dll /s
    regsvr32 Rsaenh.dll /s
    regsvr32 Mssip32.dll /s
    regsvr32 Cryptdlg.dll /s
    regsvr32 Msxml3.dll /s
    ECHO.
    ECHO 搞定,还不可以到这网站的论坛询问 www.msn-problems.com
    ECHO.
    pause

    July 16

    又想起重庆森林的片断

    下面是阿武的一段独白,也是影片最开始我们看到的。
     
    “先生,这个罐头明天就过期了,那边还有很多,你再换一罐吧?”
      “不用了,谢谢。”
      我们分手的那天是愚人节,所以我一直当她是开玩笑,我愿意让她这个玩笑维持一个月。从分手的那一天开始,我每天买一罐5月1号到期的凤梨罐头,因为凤梨是阿May最爱吃的东西,而5月1号是我的生日。我告诉我自己,当我买满30罐的时候,她如果还不回来,这段感情就会过期。
      已经六个月都没有破过案,可是我今天抓到一个通缉犯。每一次我有好消息,我第一个想通知的就是我的女朋友阿May。
     
    我们也分开一段时间了,我不当这个是玩笑,也许从开始就不会结束的。如果下周结束以后她还没有联系我,那么这段感情也就过期了。
     
    每段感情开始的可能很意外,分开却都像宿命一样,无可挽回。也许这本就是我的宿命。
    感冒一周了,还没完全好。不知道下周结束的时候是不是会好。
    July 15

    世界上总会剩下一个人

    她走了,可能很久才回来。
    我也放个假,世界上总会剩下一个人的。
    July 12

    基本好了

    感觉好多了。
    药很苦
    July 10

    GOOGLE的个性化主页拖搁功能的实现方法[转]

    CSS代码
    <style>
    .dragTable{

     border-top:1px solid #3366cc;

     margin-bottom: 10px;

     width:100%;

     background-color:#FFFFFF;

    }

    td{vertical-align:top; }

    .dragTR{

     cursor:move;

     color:#7787cc;
     text-decoration:underline;

     background-color:#e5eef9;
     padding:10px 0 10px 5px;

     font-weight:bold;

    }

    #parentTable{

     border-collapse:collapse;

     letter-spacing:25px;

    }

    </style>
    Jscript代码
    <script defer language="jscript">

     var Drag={dragged:false,

     ao:null,

     tdiv:null,

    dragStart:function(){

     Drag.ao=event.srcElement;

     if((Drag.ao.tagName=="TD")||(Drag.ao.tagName=="TR")){

     Drag.ao=Drag.ao.offsetParent;

     Drag.ao.style.zIndex=100;

     }else

     return;

     Drag.dragged=true;

     Drag.tdiv=document.createElement("div");

     Drag.tdiv.innerHTML=Drag.ao.outerHTML;

     Drag.ao.style.border="1px dashed red";

     Drag.tdiv.style.display="block";

     Drag.tdiv.style.position="absolute";

     Drag.tdiv.style.filter="alpha(opacity=70)";

     Drag.tdiv.style.cursor="move";

     Drag.tdiv.style.border="1px solid #000000";

     Drag.tdiv.style.width=Drag.ao.offsetWidth;

     Drag.tdiv.style.height=Drag.ao.offsetHeight;

     Drag.tdiv.style.top=Drag.getInfo(Drag.ao).top;

     Drag.tdiv.style.left=Drag.getInfo(Drag.ao).left;

     document.body.appendChild(Drag.tdiv);

     Drag.lastX=event.clientX;

     Drag.lastY=event.clientY;

     Drag.lastLeft=Drag.tdiv.style.left;

     Drag.lastTop=Drag.tdiv.style.top;

    },

     draging:function(){//重要:判断MOUSE的位置

     if(!Drag.dragged||Drag.ao==null)return;

     var tX=event.clientX;

     var tY=event.clientY;

     Drag.tdiv.style.left=parseInt(Drag.lastLeft)+tX-Drag.lastX;

     Drag.tdiv.style.top=parseInt(Drag.lastTop)+tY-Drag.lastY;

     for(var i=0;i<parentTable.cells.length;i++){

     var parentCell=Drag.getInfo(parentTable.cells[i]);

     if(tX>=parentCell.left&&tX<=parentCell.right&&tY>=parentCell.top&&tY<=parentCell.bottom){

     var subTables=parentTable.cells[i].getElementsByTagName("table");

     if(subTables.length==0){

     if(tX>=parentCell.left&&tX<=parentCell.right&&tY>=parentCell.top&&tY<=parentCell.bottom){

     parentTable.cells[i].appendChild(Drag.ao);

     }

     break;

     }

     for(var j=0;j<subTables.length;j++){

     var subTable=Drag.getInfo(subTables[j]);

     if(tX>=subTable.left&&tX<=subTable.right&&tY>=subTable.top&&tY<=subTable.bottom){

     parentTable.cells[i].insertBefore(Drag.ao,subTables[j]);

     break;

     }else{

     parentTable.cells[i].appendChild(Drag.ao);

     } 

     }

     }

     }

    }

    ,

     dragEnd:function(){

     if(!Drag.dragged)return;

     Drag.dragged=false;

     Drag.mm=Drag.repos(150,15);

     Drag.ao.style.borderWidth="0px";

     Drag.ao.style.borderTop="1px solid #3366cc";

     Drag.tdiv.style.borderWidth="0px";

     Drag.ao.style.zIndex=1;

    },

    getInfo:function(o){//取得坐标

     var to=new Object();

     to.left=to.right=to.top=to.bottom=0;

     var twidth=o.offsetWidth;

     var theight=o.offsetHeight;

     while(o!=document.body){

     to.left+=o.offsetLeft;

     to.top+=o.offsetTop;

     o=o.offsetParent;

     }

     to.right=to.left+twidth;

     to.bottom=to.top+theight;

     return to;

    },

    repos:function(aa,ab){

     var f=Drag.tdiv.filters.alpha.opacity;

     var tl=parseInt(Drag.getInfo(Drag.tdiv).left);

     var tt=parseInt(Drag.getInfo(Drag.tdiv).top);

     var kl=(tl-Drag.getInfo(Drag.ao).left)/ab;

     var kt=(tt-Drag.getInfo(Drag.ao).top)/ab;

     var kf=f/ab;

     return setInterval(function(){if(ab<1){

     clearInterval(Drag.mm);

     Drag.tdiv.removeNode(true);

     Drag.ao=null;

     return;

     }

     ab--;

     tl-=kl;

     tt-=kt;

     f-=kf;

     Drag.tdiv.style.left=parseInt(tl)+"px";

     Drag.tdiv.style.top=parseInt(tt)+"px";

     Drag.tdiv.filters.alpha.opacity=f;

     }

    ,aa/ab)

    },

     inint:function(){//初始化

     for(var i=0;i<parentTable.cells.length;i++){

     var subTables=parentTable.cells[i].getElementsByTagName("table");

     for(var j=0;j<subTables.length;j++){

     if(subTables[j].className!="dragTable")break;

     subTables[j].rows[0].className="dragTR";

     subTables[j].rows[0].attachEvent("onmousedown",Drag.dragStart);

     }

     }

     document.onmousemove=Drag.draging;

     document.onmouseup=Drag.dragEnd;

    }

    //end of Object Drag

    }

    Drag.inint();

    function _show(str){

     var w=window.open('','');

     var d=w.document;

     d.open();

     str=str.replace(/=(?!")(.*?)(?!")( |>)/g,"=\"$1\"$2");

     str=str.replace(/(<)(.*?)(>)/g,"<span style='color:red;'><$2></span><br />");

     str=str.replace(/\r/g,"<br />\n");

     d.write(str);

    }

    </script>

    HTML代码

    <table border="0" cellpadding="0" cellspacing="10" width="100%" id="parentTable">
     <tr>
     <td width="25%">
     <table border=0 class="dragTable" cellspacing="0">
     <tr>
     <td><b>传说中的标题</b></td>
     </tr>
     <tr>
     <td>我什么也没看见</td>
     <tr>
     </table>
     </td>
     <td width="25%">
     <table border=0 class="dragTable" cellspacing="0">
     <tr>
     <td><b>传说中的标题</b></td>
     </tr>
     <tr>
     <td>我什么也没看见</td>
     <tr>
     </table>
     </td>
     <td width="25%">
     <table border=0 class="dragTable" cellspacing="0">
     <tr>
     <td><b>传说中的标题</b></td>
     </tr>
     <tr>
     <td>我什么也没看见</td>
     <tr>
     </table>
     </td>
    </tr>
    </table>