出家如初,成佛有余

ZARA商业模式学习之拥抱变化

Posted in Uncategorized by chuanliang on 2009/04/30

    学习ZARA商业模式的过程中,最让我震撼的是ZARA、H&M这样的公司应对市场变化的能力。

    ZARA所在的时装行业的变幻可以称得上日新月异,每天在伦敦、纽约、巴黎、米兰的时尚界中各种流行风潮风起云涌,颇有“你方唱罢我登场, 城头变幻大王旗”的味道。时装行业顾客的需求也在不断变化且很难满足,他们追求个性化,偏好生命周期短、更新快的产品。按照郎咸平的分析:“一款计算机产品平均每天贬值0.1%,而一款服装平均每天贬值0.7%,如果能提前10天卖出去,就会少贬值7%,毛利率也会随之增加13%”。因此,一旦服装企业掌握了效率,就能把握市场的先机,捕捉稍纵即逝的赢利机会。而ZARA通过整合与优化供应链来应对这种变化,对系统优化和供应链“整体通过能力”的追求使ZARA实现了规模和利润的双增长。ZARA的目标是15天就完成产品从设计、采购、生产到全球各地专卖店上架销售(国内服装企业一般补单都要超过30天),24小时内配送到达欧洲大部分店,48小时到达美国,72小时到达上海和日本。

    新经济社会下,企业间竞争特点不是大龟吃小鱼,而是快鱼吃慢鱼。只有快速满足消费者需要,才能使库存和资金占用降至最低,资金周转速度达到最快,企业效率提到最高。当速度成为胜败的决定性力量时,以速度打击规模,以速度利润战胜规模利润就成为最强的竟争手段。

    简单分析一下ZARA我们很容易得出这样的结论:正是在信息化建设方面的卓越表现,才使得ZARA拥有惊人的业务反应速度。一种商业模式的成功不可能只是一种因素的成功,但一个公司能够真正长久成功(不是如PPG那样的过往云烟)必然是企业文化的成功。IT信息系统只是ZARA模式的核心要素之一但不是全部,IT系统是企业经营理念的集中体现,IT系统只有与企业流程无缝融合在一起才能够真正发挥其威力。在ZARA背后整个企业的管理能力、执行能力、运营能力才是ZARA能够快速应对变化的根本要素,没有这些ZARA的快时尚模式就无法得到有效的贯彻执行,ZARA就无法从众多同样使用了IT系统的竞争对手中脱颖而出。很遗憾没有相关的资料来从组织层面、管理制度层面来分析ZARA成功故事背后的故事。

    对比ZARA对IT系统近乎极致的应用、对比ZARA拥抱市场变化的能力,我们这些整天倒腾高科技“敏捷软件开发”、“精细化运营”、“统一软件开发”、“信息架构”、“用户体验”、“用户为中心”这些先进理念的IT公司们会如此的自惭形秽。我们号称“以用户为中心的交互设计”,但我们的产品经理们又有多少真正像ZARA用诸如“用信息库追踪流行风”、“用POS汇集顾客喜好”这样的各种手段来收集、挖掘并满足用户真正的需求呢,对于我们而言,只有产品经理才是负责产品需求、用户体验的人员,市场需求的变化与我们无关;我们号称要“快速响应客户需求变化”,但面对市场每天繁琐的需求我们似乎都可以让大企业规范化的“需求变化流程”等来消化掉这些变化,众多的创新机会就丧失在教条化的制度体系下;我们号称“架构具有灵活的扩展性”,但面对市场及业务模式的变化时候,我们抱怨产品、抱怨技术、抱怨运营、抱怨销售当初不明确的需求,于是一切推倒从头再来。其实照理来说ZARA所擅长的IT系统的建设和应用应该是我们这样的IT公司所擅长的,但似乎尚未见到那一家初创的IT公司能够将IT系统应用到如此的极致。

    我们这样初创型的IT企业在拥抱变化的过程中出现的上述问题,根本的原因不在于变化本身,而在于企业管理本身。对于大部分初创的IT企业而言,企业才刚刚诞生了短短的几年,我们很容易迷失在追求商业模式创新、追求成功速度的过程中,而遗忘了作为企业最根本的企业文化、企业制度这样内功的修炼。于是乎每天我们都会看到众多的公司因模式创新而生,又有众多的公司因整个企业跟不上创新所必须的速度要求而成为昨日黄花。

    其实中国企业要在某件事情上追求最大速度本身很容易,正如众多企业中老板们所关心的“老板工程”一样。这样的项目并不一定是有用的项目,但由于这样的项目是亲近老板、讨好老板的最佳机会,因此只要老板一声令下,众多的喽啰们就会扔下手上所有的重要事情以最快速度完成这些“老板工程”。但某件事情上、某个短暂时期的速度并不代表什么,速度必须以,只有像ZARA一样让速度具有可复制性、可持续性时候,这样的速度对于企业才具有价值。而这不单纯是IT系统就能够解决的,必须依赖于企业的制度建设。

    学习ZARA,我们不单纯要学习其对IT技术的近乎完美的应用,更应当学习其IT系统后面企业的制度建设、团队建设、文化建设,只有这样我们才真正能够从根本上来拥抱变化,也才能够“因迅速满足顾客需求而带来超额利润”。

 

Advertisements

基于Firefox的操作自动化工具

Posted in Uncategorized by chuanliang on 2009/04/28

    用于摘录各种觉得有价值的文章的digg系统,最近老是被一帮老外不停灌水,每天都要花很多时间去手动删除这些帖子。pligg的管理后台并没有提供帖子直接删除功能,只能将帖子状态置为discard状态,然后通过dreamhost主机提供的phpmyadmin去执行sql语句删除状态置为discard的帖子,过程极其麻烦,于是希望能够将登录phpmyadmin管理界面及执行sql的过程自动化。另外在日常软件功能测试中,其实也有很多类似的需要重复执行的事情。

    像Loadrunner这样的测试自动化工具在功能是能够较好满足需要,但这样的工具太好、太强大了,用于我这些相对简单的应用有点大材小用,找了一些基于firefox的能够处理自动化操作的扩展。

    来个十全大补丸,主要有如下一些Firefox的扩展支持操作自动化功能:

    1、Selenium IDE:http://seleniumhq.org/projects/ide/

    2、iMacros:https://addons.mozilla.org/en-US/firefox/addon/3863

    3、Dejaclick:http://www.dejaclick.com/

    4、Coscripter:http://coscripter.research.ibm.com/coscripter

    5、Molybdenum:http://www.molyb.org

    6、Chickenfoot:http://groups.csail.mit.edu/uid/chickenfoot/index.php

    7、Windmill Testing Framework:http://www.getwindmill.com/

    8、TestGen4Web:http://developer.spikesource.com/wiki/index.php/Projects:TestGen4Web

    9、FireWatir:http://code.google.com/p/firewatir/

    10、TestMaker:http://www.pushtotest.com/

     简单测试了一下如上几个工具,初步的感觉如下:

    iMacros:iMacros for Firefox号称“你能用 Firefox 做的事,iMacros 都可以自动化帮你完成”,从功能而言,iMacros还是比较全面和灵活的,按照此官方说法,其典型的应用的场景包括:填表器和密码管理器、自动下载和上传、数据提取、网页测试、社会型脚本(社会型书签)等。因此开始选择了iMacros来测试,使用倒是挺方便的,但在录制脚本过程中遇到了很多问题(包括iMacros for IE也存在问题),感觉iMacros尽管似乎功能强大,但并不是很稳定,与其他Firefox扩展也存在冲突。在测试执行登录phpmyadmin并删除操作时候存在开启多个Tab的现象,始终报“RuntimeError: Tab number 2 does not exist, line 6”这样的错误、,测试iMacros带的“Demo-Tabs.iim”的例子,也是报“RuntimeError: Tab number 4 does not exist, line 6”。怀疑是与Tab Mix Plus及其他扩展冲突,后来在干净的Firefox中测试发现,都是Block pop-up windows惹的祸,将mysql.yeeach.com加入信任站点后可以,但测试自动化登录sina邮箱时候,始终报“RuntimeError: Tab number 4 does not exist, line 5”,放弃。

   Selenium IDE:Selenium IDE应该是基于Firefox最为出名的Web自动化测试工具了,可以用于功能测试、验收测试。通过Selenium IDE可以轻易地在浏览器中录制和回放测试,也可以手工编辑测试,可设置断点进行调试,可把测试保存到HTML、Ruby、C#、Java等其他脚本格式,然后使用Selenium RC来实现并运行更加灵活和强大的测试。Selenium IDE其实是ThoughtWorks的Selenium测试工具中的其中一个,Selenium由三部分组成:Selenium IDE、Selenium Core、Selenium Remote Control。但对于普通用户而言,易用性还是一般。Molybdenum也是基于Selenium的。

    DéjàClickDéjàClick的定位是Web性能监控(Web performance monitoring system)。Alertsite提供了一系列的工具集服务,可以应用于Availability monitoring、Performance monitoring、Web transaction monitoring、Service level monitoring等领域,很专业的Web performance monitoring工具,具体可以参考Dejaclick的官方网站了解Dejaclick的各种服务。作为自动化工具,dejaclick其不仅提供了脚本录制、回放功能,在回放时候,对每一步操作的性能指标(例如对User Pause Timings、Rendering Timings、Network Timings进行了区分)有较为详细的报告,用于性能分析、调优等还是很有用。DejaClick易用性较好,很容易上手,因此选择了此工具来完成我的操作。有空再单独研究一下dejaclick的细化用法。

    Coscripter:源自IBM的产品,基于Greasemonkey,目标很诱人,只不过现实与口号及目标尚有很大距离,目前只能完成一些简单的操作,易用性也较差,放弃。关于coscripter与Greasemonkey的差异,这儿有一个较为详细的描述:

        there are a couple differences between CoScripter and Greasemonkey/userscripts. The main one is that CoScripter is targeted at non-programmers, while GM does require some JavaScript skill to create custom scripts. CoScripts are also designed to be easy to read and transparent to operate — you can see CoScripter in action as it automates a website, whereas with a GM script you have to trust that it does the right thing unless you want to read the code carefully.
        On the other hand, GM is more about customizing web pages and CoScripter is more about automating process flow through web applications. So GM has more features related to removing or adding content from web pages, whereas CoScripter is more targeted at form-filling and navigating through a sequence of pages.

    Chickenfoot:与Greasemonkey类似,源自MIT,很学院化,很有理论高度(可是得到了MIT的Winner of best paper award的论文),尤其是那几篇关于Chickenfoot的论文对于理解Chickfoot的架构及设计思想很有参考价值。Automation and Customization of Rendered Web PagesEnd-user Programming for the WebNaming Page Elements in End-User Web Automation

    TestMaker、Molybdenum、Windmill Testing Framework 、TestGen4Web、FireWatir的定位都是Web测试工具(还有Htmlunit),有空与Selenium 对比一下异同。

    总体而言,dejaclick、Selenium 、Chickenfoot、TestGen4Web都值得好好研究。

ZARA商业模式学习之IT信息管理系统

Posted in Uncategorized by chuanliang on 2009/04/26

    前两天陪爱人在中关村逛街,华宇时尚购物中心哪儿有一家ZARA的店面正在大张旗鼓地装修,爱人说好像是一家西班牙的很不错的时尚品牌。对于时尚这类的东西一向没有细胞,当时也没有在意。昨天首都经济报道中提到了前门H&M新开张的店面极其火爆,并提到是与ZARA齐名的“快时尚”品牌。在网上一搜才发现自己的孤问寡陋,其实在2000左右,ZARA的模式早已经声名在外了,国内包括郎咸平在内的很多人都在研究ZARA的快时尚模式,真的是隔行如隔山,研究电子商务时候还一直将PPG、VANCL这样的模式视为经典,其实真正应该学习的标杆是ZARA这样的快速时尚品牌,其商业模式的创新能力、对供应链的掌控能力、对IT信息系统的极致应用才是经典的学习标杆。

   按照专家们的分析,ZARA的商业模式是以快速时尚服装为核心以供应链全程控制等一系列商业模式创新密切配合为基础的整体系统,这也是ZARA之所以成功的关键所在:

    Zara商业模式创新之一:锁定个性化消费需求

    Zara商业模式创新之二:提供“与众不同”、“独一无二”的产品价值

    Zara商业模式创新之三:通过全程控制供应链,创造快速时尚的稀缺价值

    Zara商业模式创新之四:压缩的黄金渠道

    Zara商业模式创新之五:重金打造信息系统

image

   摘自http://www.slideshare.net/adhirock/zara

  在ZARA整个商业模式中,基于IT信息系统的快速供应链管理是其核心竞争力,ZARA中国如何用IT复制商业模式?ZARA如何在IT平台上舞蹈? 中对ZARA的IT信息系统的建设有较为精彩的描述,ZARA的IT应用中最成功的几个因素很值得各种转型电子商务的企业学习和借鉴:

   1、 对门店极强的控制能力:每个门店都拥有与西班牙总部直接相连的信息系统,通过每天大量的销售信息交换,总部可迅速和精准地掌控每个门店的情况。

   2、 单一化的模式拷贝:ZARA在每个区域市场都保持供应链的单一节奏,最重要的是,对于每个国家的每个门店,无论是直营还是加盟,ZARA都强势地要求其使用标准化的信息系统。

   3、 高科技的物流中心:位于西班牙总部的物流中心拥有非常成熟的自动化管理软件系统,可以快速地以每周250万件的速度将货品发送到世界各地。

   4、 先进的生产模式:采用和丰田汽车公司(TOYOTA)联合开发的准时生产系统(Just In Time),可以定制生产流程,迎合市场需求。

   5、 强大的供应商管理平台:位于全球的供应商都可以在这个平台上填写海关通关、出关的数据,ZARA可以在上面看到货物的流向。同时,网络化的操作消除了因时差带来的工作拖延。

   6、 强大的系统开发能力:ZARA的大部分信息系统都是自主开发的,在西班牙总部的IT团队是熟悉业务流程和精通IT技术的双面手,只有他们才能清晰地知道ZARA想要什么系统,同时降低了公司的IT采购成本。

    关于ZARA,初步的几点感触:

   1、IT系统与业务流程的结合问题:IT系统在企业转型变革过程中的重要性已经被大家所认同,在各种咨询公司、IT公司的忽悠下,众多企业以为IT系统一建设完成企业转型就成功了,于是乎投入的大量资金建设各种IT系统,但在国内真正能够把诸如CRM、ERP这样典型的业务导向的IT系统实施好、应用好的屈指可数,最终IT系统只是作为一个简化办公流程的管理工具而不是企业转型的助推器。原因有很多,深层的原因正如ZARA如何在IT平台上舞蹈? 中提到的:相当关键的一点就在于如何在组织上下培养一种广为接受的IT与流程紧密结合的意识,久而久之则形成一种文化。在ZARA,你不会看到太多的IT专员,然而在你与他们交谈时,你会发现他们对业务流程非常熟悉,而当你与业务人员交流时,又会发现他们对IT技术如数家珍。难怪哈佛商学院麦卡菲教授对ZARA的评价说:“ZARA的门店经理讲话的感觉很像IT人员,而IT人员却像营业人员一般。”这是一种理想的状态—科技与策略必须紧密结合的广泛共识,也正是ZARA取得今天的成功的关键所在。

    2、IT系统建设的节奏感很重要:很多企业一上IT系统就求大求全,指望一下就有一个适合企业几十年需要大一统的完美系统,导致系统融合了各种乱七八糟的需求,系统越做越复杂,最后谁都觉得系统复杂难用、谁都不愿意使用系统。IT系统最终没有帮助企业转型,反而成为企业转型的桎梏。其实正如企业组织也在逐步进化一样,IT系统建设也需要在一个逐步演进的过程,在这过程中,IT系统建设的节奏是否能够吻合企业战略目标落实的节奏是衡量IT系统成败的核心标准,而不是IT系统是否功能完备。之所以强调节奏感在于企业IT文化的培育需要一个很长期的过程,在于企业组织架构及流程也是一个动态演进的过程,在于任何战略目标的落实都需要分优先级、分层次、分阶段落实。只有适合自己需要的才是最好的。

   3、这个世界上没有夕阳产业,只有夕阳思维:曾经以为服装这样的行业可以称得上是“夕阳产业”,似乎这样的行业只有黯淡的未来;曾经以为只有标准化、大批量的工业化生产或互联网模式下的长尾模式才具有竞争优势,似乎个性化、小批量的模式并不可行;曾经以为在电子商务的热浪下DELL、PPG、VANCL这样的商业模式创新机会已经不再有了,似乎电子商务行业不再有创业的机会;曾经以为像我这样的IT人员年岁大后再没有任何价值,似乎IT人员真的吃的是青春饭。ZARA商业模式的创新,无情地驳斥了我这些观点,正如郎咸平所说:“这个世界上没有夕阳产业,只有夕阳思维”。在任何年代和任何领域,只要有创新精神,都有无限多的创业机会,只是我们缺少捕获这些机会的能力而已。

 

参考资料:

    http://www.slideshare.net/adhirock/zara

    http://www.globrand.com/2009/107664.shtml

    http://blog.vsharing.com/ZARA_CASE/A434134.html

    http://yulinan.blog.sohu.com/47941680.html

    http://blog.vsharing.com/ZARA_CASE/A407263.html

    http://www.amteam.org/k/others/2005-6/494967.html

 

从Slideshare.net 下载Slide的方法

Posted in Uncategorized by chuanliang on 2009/04/26

    Slideshare.net上有很多不错的Slide都没有提供下载链接,平常倒也无所谓,都是收藏后直接在线观看的。

    这段时间对ZARA的商业模式很感兴趣,相关的文档较少,刚好在Slideshare上有几个关于ZARA不错的Slides,而且都没有提供下载,需要保存到本地以供好好研究,于是研究了一下从Slideshare下载Slide的方法。

1、在线视频站点的FLV文件下载方法

    对于像Youtube、优酷这样采用Flash技术的视频网站,要下载其FLV文件,有如下几种方法:

    1)、使用Firefox 的Video DownloadhelperSothink SWF Catcher 这样的插件下载

    2)、使用第三方的下载工具,诸如Orbit Grab++、维棠FLV视频下载软件、UUme FLV Spy、网络嗅探器(影音神探)等

    3)、使用一些专门提供解析流行的视频网站下载地址的服务,例如downflv.comflvcd.com

    以上方案都有其局限性,只适合或服务软件支持的一些网站,因此也很少使用。

    4)、使用Live HTTP Headers、Firebug、Wireshark、Sniffer、URL Snooper这样的抓包器抓包,获得FLV的实际下载地址,然后直接用下载工具下载

    5)、利用浏览器的临时文件夹。在通过浏览器观看视频、观看图片的时候,视频文件及图片等已经下载到浏览器的临时文件夹里了,因此可以到浏览器的临时文件夹中直接查找对应的视频即可。

      IE浏览器临时文件夹:工具->Internet选项->常规->Internet临时文件->设置->查看文件

      Firefox临时文件夹:about:cache->Disk cache device->List Cache Entries->CTRL+F查找

   以上两种方案基本上能够通吃所有的视频网站,只是相对麻烦一点。

2、Slideshare的SWF文件下载方法

    尽管Slideshare也是采用Flash技术来实现Slide展示,但与Youtube、Youku这样的视频网站不同的是,其每一个幻灯片都是独立的Flash的SWF文件,并不是FLV格式的Flash Video文件,而且近期似乎Slideshare对SWF的地址也进行了特殊处理,直接用方法4的抓包器进行抓包,并不能获得SWF文件实际的下载地址。

    例如,我要下载ZARA:Fast Fashion的SWF文件,可以有如下几种方法

    1)、清除Firefox的隐私数据,在浏览器浏览完所有的幻灯片,然后到浏览器的临时文件夹中查找对应的SWF文件。此种方案适合幻灯片较少的情况,如果幻灯片有上百页,考虑到slideshare上经常出现始终“Loading…”的情况,在线观看能否看完以及看完后查找都是一个大问题。

    2)、清除Firefox的隐私数据,访问要下载的幻灯片(只需要到初始页,不需要浏览所有的幻灯片),然后到浏览器的临时文件夹中查找对应的类似“SLIDE_NAME.xml”这样的xml文件的路径,其中SLIDE_NAME大致为幻灯片的名称,例如ZARA:Fast Fashion对应的为http://cdn.slideshare.net/zara2820.xml?1188219016 ,此xml文件实际上就是幻灯片对应的所有的SWF文件的下载地址,例如:

<Show Id="98359">
<Slide Src="
https://s3.amazonaws.com:443/slideshare/zara2820-slide-1.swf"/>
<Slide Src="
https://s3.amazonaws.com:443/slideshare/zara2820-slide-2.swf"/>
<Slide Src="
https://s3.amazonaws.com:443/slideshare/zara2820-slide-3.swf"/>

<Slide Src="
https://s3.amazonaws.com:443/slideshare/zara2820-slide-23.swf"/>
<Slide Src="
https://s3.amazonaws.com:443/slideshare/zara2820-slide-24.swf"/>
</Show>

    然后用Orbit、迅雷这样的下载工具的批量下载功能直接下载这些文件到指定的文件夹。

   另外:

    其实在Slideshare没有改变SWF的处理方式前,像Slideshare DOWNLOADerGreasmonkey Script还是挺方便的。

    可以参考:

    Download Slides from SlideShare.net – Firefox Add-on

    Download from SlideShare – slideshare DOWNLOAD dot com

3、Slideshare的SWF文件转化为PDF幻灯片

    目前尚未找到好的工具能够直接把Slideshare的SWF文件直接转化为ppt或pdf的幻灯片文件,像Flash搅拌器这样的工具其实也很难用。

    目前采用如下的方法:

    1)、安装Acrobat Professional 8。

        注意是Acrobat Professional ,不是Acrobat Reader;以前的Acrobat版本也行,只不过Acroabt 8对于合并多个PDF文件较为方便。

    2)、Acrobat安装完成后,缺省在控制面板的“打印机和传真”中创建了“Adobe PDF”的虚拟打印机,设置“Adobe PDF”的属性:

    “Adobe PDF属性->打印首选项->布局->方向”:设置为横向
    “Adobe PDF属性->打印首选项->Adobe PDF设置->Adobe PDF页面大小”:设置为Slide 7.5 x 10

    3)、将下载SWF文件直接拖到浏览器中,然后右键->打印->常规->选中Adobe PDF为打印设备->打印

    4)、使用Acrobat 8的合并文件功能,合并所有的pdf文件

    这样就得到了SWF文件对应的PDF格式的幻灯片

T43刷BIOS解决非原配硬盘2010错误

Posted in Uncategorized by chuanliang on 2009/04/24

    在淘宝上买了个二手的T43,型号为1871,机器成色蛮新的,店家服务也很不错。原配硬盘只有30G,换成了三星120G PATA接口的硬盘,启动时候,报2010错误,具体信息如下:

ERROR

2010: Warning: Your internal hard disk drive (HDD) may not function correctly on this system. Ensure that your HDD is supported on this system and that the latest HDD firmware is installed.

Press <Esc> to continue

Press <F1> to Setup

1、原因:

按照官方的说法

This message may occur on any system that uses the Intel 915 Express chip set. This new chipset uses a different hard drive interface technology (Serial ATA) to address the hard drive.

Models specifically included are of the following systems:

  • ThinkPad R52 systems
    Machine types:
    • 1846, 1847, 1848, 1849, 1850, 1858, 1859, 1860, 1861, 1862, 1863, 1870
  • ThinkPad T43 systems
    Machine types:
    • 1871, 1872, 1873, 1874, 1875, 1876, 2668, 2669, 2678, 2679, 2686, 2687
  • ThinkPad X41 systems
    Machine types:
    • 1864, 1865, 2525, 2526, 2527, 2528
  • ThinkPad X41 Tablet systems
    Machine types:
    • 1866, 1867, 1869

   按照网上的说法:

    T43/T43P使用的是915的芯片组,915芯片是通过SATA进行寻址的,而T43/T43P使用的是PATA的硬盘,因此需要一个SATA到 PATA的一个转换桥,这个转换过程是有一定危险的,可能导致硬盘数据的丢失,或者导致传输速度变慢地问题。所以IBM需要认证硬盘的fireware,以满足某些特性,才能保证良好运行。所以T43/T43P开机会检查硬盘的fireware,不满足就会抛出2010错误。事实上对于绝大多数2010错误可以不以理会。对于有2010错误的硬盘,可以安放在Ultrabay接口使用,因为Ultrabay与系统的接口是PATA的。

  

2、解决方案

    在系统启动或安装时候按Esc键倒是能够正常启动系统,只不过每一次都这样操作挺麻烦的,不考虑。

    将BIOS升级到最新的1.29,可以在BIOS中设置一下倒可以避免每一次启动都按Esc键,只不过几秒的延迟及滴滴的蜂鸣声也挺烦人,升级使用了一下受不了,不考虑。设置步骤:BIOS Setup menu->Startup->Boot after message for HDD compatibility without having to press <Esc>,将这个选项设为“Continue”。

    由于是三星的盘,网上的所谓“升级微码”的方案似乎也不支持。

    按照网上广为流传的方案,将BIOS降级到1.02可以避免BIOS启动时候检查硬盘微码,从BIOS Update (Non-Diskette) – ThinkPad T43, T43p (2668, 2669, 2678, 2679, 2686, 2687)上下载了1.02的BIOS,只不过执行降级程序后,系统重新启动后,报错:

the diskette in the default drive will not run on this system
your system is now locked.to restart your system. press ctrl+alt+del

    倒腾半天后,从BIOS Update (Non-Diskette) – ThinkPad R52 (1858, 1859, 1860, 1861, 1862, 1863, 1958), T43 (1871, 1872, 1873, 1874, 1875, 1876) 下载了一个1.01的BIOS版本,可以正常降级,降级后不再报2010错误了,耳根终于清静了。

  搞完之后终于弄明白了,对于T43及T43的BIOS降级,不同的型号有不同的BIOS的安装包不同:

      对于2668, 2669, 2678, 2679, 2686, 2687机型,可以使用网上广泛使用1.02的BIOS的包

      对于1871, 1872, 1873, 1874, 1875, 1876机型,应该使用1.01的BIOS包

   晕,开始看BIOS Update (Non-Diskette) – ThinkPad T43, T43p (2668, 2669, 2678, 2679, 2686, 2687)的时候,以为此1.02的包适用于所有的T43型号及T43p的2668, 2669, 2678, 2679, 2686, 2687,因此也没有在意机器型号问题。

   另:

   由于915芯片组的限制,T43内存最大只能够支持到2G,试图添加到3G,在BIOS能够正常识别有3G内存,但在XP系统启动后,仍然只认2G内存。

3、参考资料:

    POST warning message 2010 after BIOS upgrade or hard drive installation – ThinkPad General

    PATA与SATA的区分

更多的信心,更多的信任,更多的包容

Posted in Uncategorized by chuanliang on 2009/04/23

    最近身边发生了很多事情,自己所在公司及朋友所在投资公司投资的几家公司都不约而同地经历了过山车似的动荡,各公司的团队在短短的时间内分崩离析,所谓的业务变革及模式创新随着新团队的解散而成为过往云烟。在金融危机面前,老板们似乎都丧失掉了曾经的信心与耐心,面对激剧萎缩和下滑的销售量,已经退居二线的老板们认真反省后,得出的最终结论就是:“只有我是带领整个公司度过难关的最佳人选”,于是乎各位老板都亲自再次出山。正如朋友及自己亲身感觉的一样,尽管各个公司的故事不同,但似乎故事的过程都一样,老板们自己亲自操刀上阵,于是乎围绕各个老板们的利益团队的格局也随之进行了激剧的变化,在金融危机中尚未完成变革的各种新业务模式推动者们被冷落到一边,各种代表老业务模式被视为值得老板信赖的成员们重新得到了重用并全面回归。路线之争的结果就是动荡、动荡、再动荡,所有的恩仇情缘在金融危机的谷底处全面爆发了。

    似乎金融危机是这几个团队分崩离析的罪魁祸首,但如果仔细分析其中的故事就会发现,其实金融危机只是加速了这个过程,深层的原因还是在于老板们对于漫长的变革过程失去了耐心,对于整个新团队的成员们失去了信任,对于不确定形势下变革的未来失去了信心。更进一步,我们可以说:老板们其实是恐慌自己对于整个公司失去了掌控能力。一个没有信心和信任支撑的团队最终只能够呜呼鸟散。其实要毁掉一个团队真的很容易,就是让其团队成员彼此之间缺乏信心和信任,彼此之间不再有信任后,团队的瓦解正如雪球在下坡路上加速滚动,所有的因素都在帮助其加速下行,速度越来越快,最终超出任何人的掌控。

    对于众多的老板而言,都希望变革能够马上见到效果,如果短期内没有效果,老板唯一的选择就是全盘否定掉整个团队及变革,然后从头再来。于是乎我们会发现在一轮又一轮的变革运动后,唯一的结果就是老板周围仍然只有那几个所谓心腹的人,仍然没有形成一个真正能够带领企业往前走的核心团队。一个能够不断成长并迈向辉煌乃至卓越的成功企业,必然有一个符合企业文化要求的核心管理团队。企业文化最核心的价值之一就是在企业进化过程中,通过一次又一次大浪淘沙的运动,能够不断的吸纳并留住各种真正有价值人才并融入到核心团队中去,围绕企业使命这个核心的圆圈不断地扩大辐射的范围。而这样核心团队的形成,需要作为创始人的老板以无比的包容心去筛选和培育。选材的标准是企业的战略目标需要什么样的人才然后唯才是举,不是谁更善于揣摩老板的心思,不是xx是跟自己打拼了多年的亲信,不是那些永不犯错的企业的“圣人”们。企业变革的失败很正常,整个变革团队分崩离析及老团队的卷土重来的场景不断上演,最可悲的莫过于企业付出了成本,但在变革失败后没有留下任何对企业成长有价值的经验和真正有价值但不完美的人,留下的只是流传于世间的争权夺利、情仇恩怨的故事。

    中国历史上历代王朝中都有各种危机出现,而这些王朝都有机会通过变革来延续帝国的伟业,但各种变革一般都行之不久,改革者因失掉大老板的信任而导致整个改革终止,于是乎帝国的危机还是延续下去,最终引发帝国大厦的崩溃。变革会触及众多既得利益者的反弹,正如心理学家弗罗姆所说:“停滞不前、故步自封和倒退,简而言之,依赖于自己所拥有的一切,这是一种很大的诱惑。人们害怕没有把握和不确定的事物,所以避免接近这些事物”。变革也不可能一帆风顺,但是只要认准了目标、认准了团队,坚持下去一定会成功,在这过程中需要老板以无比的信任和信心去包容变革过程中的挫败,而不是以一时的成败来论英雄。现在回头看柳传志的“定战略、搭班子、带团队”的名言是多么的具有哲理性啊。

    正如卓越领导者的三大关键特质中所说:心有多大事业就有多大,胸怀有多宽事业就有多广。心胸宽则能容,能容则众归,众归则才聚,才聚则事业强。海纳百川,有容乃大,所以领导者成就大事业必须要有容人、容智、容物、容事的肚量。

   

   

图片服务器选型方案

Posted in Uncategorized by chuanliang on 2009/04/20

    各个web项目要共享各种图片素材、手机软件,同时也需要处理用户自助上传的图片、软件在各个项目间的共享。采用了独立的图片服务器来集中存储各种图片资源,其他应用服务器通过NFS方式存取图片资源(在linux下使用nfs及软链接解决图片文件共享问题 )。起初觉得这种模式相对简单且容易实现,也不是很在意图片服务器的容灾问题,最近在部署应用时候没有按照步骤操作,直接把通过NFS方式共享的目录删除了(由于要在应用上传图片时候实时同步到图片服务器上,因此NFS目录是read、write的),这才意识到容灾的问题。

    在当前的经济形势下,遵循“少花钱、多办事”的原则,采用纯Open Source的方案,不增加硬件及软件投入。简单整理了一下图片服务器的实现时候需要考虑的几个地方:

1、操作文件系统的选择:

    非分布式文件系统方案:ReiserFS4、Ext3、JFS

    分布式文件系统方案:Redhat GFS、Lustre、ZFS、NFS

2、数据同步

    采用操作系统层分布式文件系统本身的同步功能

    采用应用层分布式文件系统同步方案:FastDFSMogileFSHadoop HDFS

    采用应用层第三方软件同步方案:csync2+inotify、rsyncunisonDRBDtsync

3、Web服务器的选择:

    采用轻量级的Lighttpd、Nginx,不采用apache

4、Cache及反向代理:

    Squid

    Lighttpd+mod_mem_cache

5、单独多个图片服务器、单独的图片服务器域名

6、数据压缩:

    HTTP HEADER的Accept-Encoding

7、客户端缓存:

     HTTP HEADER的Expires、Cache-Control、Etag、Last-Modified参数设置

8、应用层优化:

    图片按需生成、图片预先生成、根据应用场景降低图片分辨率

采用ReiserFS4+csync2+inotify方案来满足当前需要,后续有空再测试一下FastDFSMogileFSHadoop HDFS  的方案。

 

“优惠多”的新媒体梦想

Posted in Uncategorized by chuanliang on 2009/04/11

    最近陪家人去附近的物美卖场购物时候,发现卖场出口处新设了一台叫“优惠多”的终端设备,排了很长的队,一问才知是在排队参加抽奖活动,游戏规则很简单:只要拿当天物美购物小票,就可以参加免费抽奖。第一反应是:又是哪家新媒体公司弄的所谓“精准营销”的新玩意,一向对于这样的新媒体+传统连锁卖场的试验是比较感兴趣的,所谓“凡是有人停留的地方都可能形成一个新的媒体”。  

    于是体验了一下,大致了解了“优惠多”的游戏规则:“优惠多”通过扫描物美购物小票的商品代码和名称,获得消费者购买产品的特征属性值,然后根据产品间的关联规则,将相关试用装产品派发给消费者。这实际上就是各种数据挖掘厂商们、各种宣称“精准营销”的分众们一再引经据典的沃尔玛经典“跟尿布一起购买最多的商品竟是啤酒”故事的翻版。当天购买了吉列剃须泡沫、冲洗马桶的洗涤剂几件东西,中了两个试用装:开米餐具净10g试用装、清扬50ml男士去屑洗发水试用装。

    起初第一感觉“优惠多”只不过又是新媒体们在分众传媒成功故事鼓动下“圈钱<->烧钱”的跟风运动,并不能真正成其为一种商业模式,只不过仔细查看“优惠多”网站及相关资料后,不得不承认“优惠多”的模式还是挺有创新性的。

1、“优惠多”商业模式分析

    参考What is a business model?什么是商业模式)的分析模型,简单分析一下“优惠多”的商业模式

  • 价值主张(Value Proposition):“优惠多”在卖场终端引导消费者进行赠品促销体验,通过扫描顾客的购物小票来识别顾客特征,发放符合其消费特征和需求的赠品、试用装和优惠券等。
  • 消费者目标群体(Target Customer Segments):各种卖场终端渠道的快速消费品客户,互联网上热衷于新品试用的“试客”们。
  • 分销渠道(Distribution Channels):尽管也需要在传统的终端卖场铺设“优惠多”终端设备,但“优惠多”并不需要像传统卖场及各种厂商建立复杂的分销渠道,其核心的分销渠道其实就是“优惠多”的终端设备及互联网。
  • 客户关系(Customer Relationships):对于非注册会员,“优惠多”关注对客户消费行为的特征分析,并充分利用消费大众“占小便宜”的心理,以赠品、试用装和优惠券等形式来维系客户关系;对于注册用户(会员卡用户、网站注册用户),除采用非注册会员的维系手段外,还采用会员专享促销活动、优惠多会员卡体验值、互联网社区等手段来维系客户关系。
  • 价值配置(Value Configurations):“优惠多”最大的核心资产其实就是平台的运营及数据营销,并不需要涉及产业链两端诸如加工、制造等环节,典型的“轻资产公司”。
  • 核心能力(Core Capabilities):“优惠多”终端设备及后端的IT信息系统的研发、运营能力;对卖场、上游合作商家的资源整合能力;积累了海量消费数据基础上的精准营销能力。
  • 合作伙伴网络(Partner Network):沃尔玛、家乐福等全国和区域连锁零售商,各种快速消费品厂商(其实也适用于其他领域)。
  • 成本结构(Cost Structure):终端设备制造费用+卖场的场地费用+终端系统人员工资+“优惠多”IT系统运营费用。
  • 收入模型(Revenue Model):作为“赠品(新品)集中派发体验平台”,帮助各种商家发放赠品、试用装和优惠券获得的活动费;以“精准营销”为卖点,帮助各种商家进行更精准的市场调研、促销、市场营销所获得的活动费;各种商家在“优惠多”终端设备、网站等通路的广告费;对于一些高级会员收取的会员费,目前“优惠多”的会员注册及各种服务是免费,预计后期会针对一些会员推出收取费用的高级服务;为各种商家提供的营销咨询费用。

2、“优惠多” VS. 分众传媒们

   “优惠多”算是“分众传媒”模式的追随者之一,但分众们“液晶屏”模式只能进行单向的广告信息灌输,并不能与目标客户群体的互动,更谈不上锁定真正有价值的“目标客户群”,分众们所谓的“精准营销”只能基于诸如“出入高档写字楼的全是高级白领”这样极其粗糙的假设。

    通过“扫描购物小票”这一简单行为,“优惠多”可以有效获取客户消费行为数据,从而具备了进行精准营销所必须的“锁定目标客户”的能力,再加上诸如“体验卡”、“免费参与”这样的措施,与目标客户形成了双向的互动。如果再进一步分析“优惠多”的商业模式就能够明白:为何“优惠多”的东家优识定位是“营销咨询企业”。

    其实“优惠多”骨子里具有众多新媒体的影子:

     “分众传媒”这样的新媒体的“精准营销”概念

     “17try试用网”这样的web2.0站点的“社会化社区”概念

     “亚马逊”这样的电子商务网站、web2.0新媒体的协同过滤概念

       “TechTarget”这样的数据营销公司门户的数据挖掘、数据营销概念

     如果“优惠多”能够将这些模式融合好,强化平台运营能力,相信“优惠多” 必将拥有辉煌的未来。

3、参考资料

    http://finance.sina.com.cn/leadership/mgljt/20080828/13005247146.shtml

    http://finance.sina.com.cn/roll/20081113/15495503665.shtml

    http://www.linkshop.com.cn/event/2008/yhd/   

    http://news.iresearch.cn/events/20080925/85524.shtml

    http://media.people.com.cn/GB/40628/7471408.html

 

Java环境下Imagemagick中文图片处理问题非完美解决方案

Posted in Uncategorized by chuanliang on 2009/04/09

在处理服务器与客户端交互时候,基于性能考虑(参考手机客户端网络加速技术方案实现思考),对软件介绍中的图片采用缩略图进行展现,这样涉及了实际图片缩略图的动态处理问题,采用Java的Runtime.getRuntime().exec直接来调用Imagemagick的命令来完成缩略图的动态生成。原本是一个很简单的问题,只不过由于在图片的目录路径及图片名称中存在中文,因此在处理时候又出现了FileNotFoundException,记录一下非完美解决方案。

1、系统环境:

操作系统:Red Hat Enterprise Linux AS release 4 (Nahant Update 4)

操作系统用户环境变量(参考Linux环境下资源下载中文目录及中文文件名称问题):

export LC_ALL=zh_CN.GB18030

export LANG= zh_CN.GB18030

JVM、Tomcat、数据库等相关的字符集(参考Struts2中Datetimepicker控件的中文问题):UTF-8

2、需求场景

手机客户端对于图片的请求分为两大类:图片的下载请求、图片的预览请求。

图片的下载请求:客户端请求下载实际的图片内容,此时候服务器端不需要对图片进行任何加工处理,只需要正确返回实际的图片内容。

图片的预览请求:客户端并不需要下载完整的图片内容,只需要在客户端能够预览图片,因此在分辨率及图片质量上可以稍稍降低,以节省带宽资源。在手机客户端发起图片预览请求时候,服务器端响应的所有的图片都采用缩略图(降低图片大小)及低分辨率(降低图片质量)的方式返回。

备注:通过手机浏览器或手机客户端下载1M左右以上的资源时候,如果采用Struts2的Stream Result,存在服务器端无响应的现象,具体原因没有查明,有空看看Struts2代码再说,采用传统的response写流的方式实现没有此问题。

3、实现机制

采用Runtime.getRuntime().exec(“/usr/bin/convert  -sample 75%x75% /test.jpg /test_thumb.jpg”)来动态生成缩略图。

备注:

a、考虑到jmagick并不能完整支持Imagemagick所有命令集且使用上并不是很方便,因此没有采用jmagick,直接使用Runtime.getRuntime().exec(“/usr/bin/convert  -sample 75%x75% /test.jpg /test_thumb.jpg”)的方案,使用方法具体可以参考在线主题制作技术实现方案

b、这里使用的imagemagick的命令只供测试使用,不一定是最佳的命令,具体查一下imagemagick的手册

c、由于Imagemagick生成图片相对较慢,因此并不需要每一次都生成缩略图,可以将缩略图存放在与原有图片相同的目录路径下,这样在客户端发起图片预览请求时候,服务器端先查看一下请求图片的预览图是否存在,如果存在直接返回以前生成的预览图,如果不存在则动态生成后再返回。

4、问题

在使用Runtime.getRuntime().exec调用convert来动态生成缩略图时候,由于资源在Linux服务器上存放目录及文件名称都存在中文(例如/products/material/img/101×80 /人物肖像101×8/测试.jpg),因此在调用时候会报FileNotFoundException错误。

5、方案测试

测试命令:

/usr/bin/convert -sample 75%x75%   /img/101×80/人物肖像101×8/测试.jpg  /img/101×80/人物肖像101×8/测试_thumb.jpg

试验1:

操作:操作系统编码为zh_CN.GB18030,因此在shell命令行执行convert,如果传入的字符串参数为正常的zh_CN.GBK(比zh_CN.GB18030范围小)的编码,那么不会乱码。

结果:在命令行执行,已验证。

试验2:

操作:JVM环境变量为UTF-8,Java内部本身也是采用UTF-8编码,Runtime.getRuntime().exec调用convert时候,如果将参数进行转码成zh_CN.GBK,则应该能够正常处理

private static final String CMD=”/usr/bin/convert “;
private static final String PRAM=” -sample 75%x75%  “;

inputPath=new String(inputPath.getBytes(“UTF-8″),”GBK”);
outPutPath=new String(outPutPath.getBytes(“UTF-8″),”GBK”);
Process pc=Runtime.getRuntime().exec(CMD+PRAM+inputPath+” “+outPutPath);

结果:以上代码不行,将getBytes的编码换成GBK、ISO8859-1,输出编码换成UTF-8、ISO8859-1等也一样

试验3:

操作:将JVM环境变量修改为GBK

结果:似乎也不行

试验4:

操作:在java代码中,将中文路径/img/101×80/人物肖像101×8/测试.jpg  /img/101×80/人物肖像101×8/测试_thumb.jpg写入普通文本文件/home/client.aouu.com/img/img2.txt,然后在命令行调用convert来生成

Java代码(示例,不规范):

FileWriter os = new FileWriter(“/home/client.aouu.com/img/img1.txt”);
String imgPath=inputPath+” “+outPutPath;
os.write(imgPath);
os.close();
Process pc=Runtime.getRuntime().exec(“/home/client.aouu.com/img/img.sh”);
pc.waitFor();

img.sh:

#!/bin/sh

cat /home/client.aouu.com/img/img1.txt |xargs /usr/bin/convert  -sample 75%x75%

结果:不行,报告-bash: ./img.sh: cannot execute binary file

试验5:

操作:与试验4操作相同

img.sh:

#!/bin/sh

iconv -f UTF-8 -t GBK -c /home/client.aouu.com/img/img1.txt -o /home/client.aouu.com/img/img2.txt
cat /home/client.aouu.com/img/img2.txt |xargs /usr/bin/convert  -sample 75%x75%

结果:OK

结果分析:

尽管在java代码中将中文路径、中文文件名称的编码转码成GBK,但java内部本身是UTF-8编码,因此JVM通过Runtime.getRuntime().exec传给/usr/bin/convert的参数实际上仍然为UTF-8编码(?是什么编码,尚待验证),并不是GBK编码,因此convert获取输入参数后无法在操作系统找到对应的文件。

通过FileWriter写入文件的字符集也为UTF-8,通过iconv强制将UTF-8编码转化为GBK,这样convert能够正常处理。

具体的原因及机理尚待进一步考察验证,现在尚无好的办法,姑且凑合使用此种方案再说。

Linux环境下资源下载中文目录及中文文件名称问题

Posted in Uncategorized by chuanliang on 2009/04/09

项目采用UTF-8作为统一的编码(JVM中缺省字符集、Tomcat的URIEncoding字符集、Struts2的Locale字符集配置、过滤器字符集、页面统一编码、数据库编码、mysql数据库连接字符集等),基本上排除了日常开发的中文乱码问题,具体可以参考Struts2中Datetimepicker控件的中文问题

但在处理资源下载时候,由于资源在Linux服务器上存放目录及文件名称都存在中文(例如/products/material/img/101×80/人物肖像101×8/测试.jpg),因此在下载时候会报告FileNotFoundException错误,实际上仍然为中文文件名称问题,现简单总结一下处理方案:

分析思路:操作系统缺省字符集设置为zh_CN.UTF-8,JVM在存取操作系统文件时候,实际上要调用Linux操作系统本身的I/O函数来处理,而Linux的I/O函数存取中文文件时候字符集是由操作系统的环境变量决定的,因此报FileNotFoundException,应该是环境变量问题。

解决方案:将Linux操作系统本身缺省编码及字符集设为zh_CN.GB18030,这样可以正常处理中文名称。但在与JVM、数据库等相关的地方的字符集仍然采用UTF-8字符集。

备注:实际上并不需要将操作系统全局环境变量设置为zh_CN.GB18030,可以只设置运行Tomcat、Jboss的用户的环境变量,但考虑到方便性,直接设置全局的操作系统环境变量。

1、修改/etc/sysconfig/i18n

LANG=”zh_CN.GB18030″

LANGUAGE=”zh_CN.GB18030:zh_CN.GB2312:zh_CN”

SUPPORTED=”zh_CN.UTF-8:en_US.UTF-8:en_US:en:zh_CN.GB18030:zh_CN:zh:zh_TW.big5:zh_TW:zh:ja_JP.UTF-8:ja_JP:ja:ko_KR.eucKR:ko_KR:ko”

SYSFONT=”latarcyrheb-sun16″

SYSFONTACM=”8859-15″

2、设置环境变量

在/etc/profile中设置

export LC_ALL=zh_CN.GB18030

export LANG= zh_CN.GB18030

3、重启服务器

4、测试代码

<%@ page import=”java.io.*,java.net.*”%>

<%@ page language=”java” pageEncoding=”UTF-8″ contentType=”text/html;charset=UTF-8″ %>

<html>

<head>

<title>中文下载测试代码</title>

<meta http-equiv=”pragma” content=”no-cache”>

<meta http-equiv=”cache-control” content=”no-cache”>

<meta http-equiv=”expires” content=”0″>

<meta http-equiv=”keywords” content=”keyword1,keyword2,keyword3″>

<meta http-equiv=”description” content=”This is my page”>

<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″/>

</head>

<body>

<%

String filename = “/root/技术中心周报20080906(梁川).doc”;

String filename1=”技术中心周报20080906(梁川).doc”;

OutputStream outputStream = null;

InputStream inputStream = null;

try{

File file = new File(filename);

response.reset();

response.setContentType(“application/octet-stream; charset=UTF-8”);

long filelength = file.length();

response.setHeader(“Cache-Control”, “content=”no-store””);

response.setHeader(“Content-Disposition”, “attachment; filename=” + new String(filename1.getBytes(“GBK”),”ISO8859-1″));

response.setContentLength((int)filelength);

outputStream = response.getOutputStream();

inputStream = new FileInputStream(file);

byte[] buffer = new byte[1024];

int i = -1;

while ((i = inputStream.read(buffer)) != -1) {

outputStream.write(buffer, 0, i);

}

outputStream.flush();

}catch(Exception e){

}finally{

if(outputStream != null){

outputStream.close();

outputStream = null;

}

if(inputStream != null){

inputStream.close();

inputStream = null;

}

}

%>

</body></html>

备注:这是很久以前写的邮件了,懒得写、懒得整理,只是在用imagemagick 处理缩略图时候又遇见中文目录及中文文件名的问题,因此翻出来整理一下,供备查。