| 出家如初,成佛有余's profile出家如初,成佛有余BlogListsGuestbook | Help |
出家如初,成佛有余专注电子商务领域,关注无线互联网,关注新媒体;Yeeach.com用于记录我技术生涯的点滴 |
||||
|
|
6/27/2009 广电业务杂思之统一金卡平台建设最近刚好与几个都做广电的朋友又聊起广电支撑平台建设的问题,包括BOSS系统、金卡平台、增值业务平台等等。由于广电各自为政的管理格局,因此不存在全国各广电运营商“统一标准、统一规划、统一部署”的问题,各地支撑系统的建设权都掌控在各地广电运营商手中,或许是深得我党“人有多大胆、地有多大产”的真谛,各地的广电都在所谓的战略高度上要自建各种平台,通吃上下游。 并不看好广电系统这样的做法,任何企图通吃上下游的企业最终只能扼杀自己所在行业的生机和活力,从而最终断送自己的未来。尽管作为我党的咽喉工具,在政策上会天天受到恩赐,但这样恰恰让广电始终只能够在摇篮中生长,没有机会成长。 以金卡平台建设为例,谈谈自己的思考,刚好也算是对其中一个朋友的答复。 1、支付平台 vs. 支付网关
2、产业链专业化分工 vs. 产业链上下游通吃
3、合作共赢 vs. 各自为政
参考:广电业务杂思之支付平台建设
从几个小产品的设计谈起最近刚买了几个小东西,都很便宜,只不过在使用过程中充分体会了产品设计的重要性,所谓“小东西见大世界。 第一件东西:核桃夹各位过来人的谆谆教导说孕妇要多吃核桃,因此在集贸市场买核桃时候,在旁边的小商品批发处,花5块钱买了个核桃夹。核桃夹子做工很粗糙,所用的钢、手柄上的塑料等让人一看就是质量不怎么样。只不过核桃夹子倒比较好用,由于手柄设计得比较长,因此不管是大的、小的核桃都应付自如。尽管夹子样子丑陋,但比较实用。 过了几天,爱人去沃尔玛,由于觉得刚买的核桃夹质量不怎么好,因此让她在沃尔玛花了20多元买个核桃夹。买回来一看,做工倒是挺精致的,通体都镀上不锈钢,看起来挺高档的。只不过一用来夹核桃就发现这东西中看不中用,夹子的手柄较短,对于较硬的核桃,基本上用不上劲。 去宜家逛,试图再买个好用+好看的核桃夹子,只不过一看宜家的设计与在沃尔玛买的差不多,作罢。 按照老婆大人的说法:设计核桃夹子的人应该不怎么吃核桃。
第二件东西:拖把原来在物美花了30多买的拖把快坏了,拖把用了一年多,整体感觉还是不错的。在淘宝上花了70多买了个绿色家园压固式大平板拖,号称是“央视上榜品牌,出口欧美品质”。买回来马上试用,没想到一拧上拖把杆,就把拖把杆与拖把接口处的塑料弄了个裂口。用来拖地,发现拖把杆设计极其的不合理,由于拖把杆与拖把接口处是采用塑料、且采用螺旋方式,在拖地时候,拖把杆很容易与拖把随着螺旋接口滑出。 按照老婆大人的说法:设计这拖把的人肯定是男性,不拖地的。 第三件东西:床上笔记本电脑桌为了方便在床上工作,因此在当当买书时候买了个索克的床上笔记本电脑桌。桌子质量还行,只不过使用一段时间后,发现桌子的设计存在一个很大的问题,由于凳子的脚是活动的(可以左右收缩活动)以方便折叠,在使用时候,经常由于没有放平(在床上使用一般也不容易放平),凳子脚很容易向中间收缩滑动导致凳子垮掉。 按照老婆大人的说法:这设计师真笨,像以前自己家做的折叠的凳子,在凳子脚哪儿弄几个有支撑杆的螺丝钉,在打开使用时候,用支撑杆支撑一下凳子和凳子脚,这样凳子脚就不能随意活动,不就可以了吗。 以上几个例子似乎都是“只求好看,不求好用”的代表。 几点感受: 1、以上几个例子,基本上都是那些有品牌的正规军的产品没有无品牌草根们的设计合理。其实不单纯这几个例子,在现实的开发中,这样的例子随处可见。究其原因,主要还是在于是否真正放下高贵的身段,贴近用户,用心研究产品的应用场景及目标用户对产品本质的需求。草根们没有规范化的流程去设计、评审、测试产品的设计是否合理,但通过对用户近距离的观察和贴身的服务,可以保证产品本身在核心功能上能够满足客户对于产品最基本的需求。而正规军们高高在上,总想着要创新、总想着引领潮流,每天清谈着xx 2.0、UED、UCD、IA各种时尚术语,标示自己的超凡脱俗,对于作为产品设计最基本的“业务场景分析、用户对产品最核心的需求”却没有人去仔细研究。尽管正规军们有各种流程、各种理论指导来做评审、测试、验收,最后产品包装得倒是很精美,但是却遗忘了产品最基本的功能。 2、优秀是一种习惯,只有持续对产品细节偏执的追求才能够成就伟大的产品。我相信这几个产品的设计师其实不一定缺少常识,可能与我们大部分一样,我们秉承了中国人“凑合”的中庸之道,对于所有的事情,我们都不愿意投入十分的力气去追求产品的完美,我们信奉“不鸣则已,一鸣惊人”的哲理。在我们的内心深处,始终认为:当前这个产品做成这样已经凑合了,等遇到重量级的产品时我们再认真设计。于是乎我们始终在凑合中完成一个又一个的产品,一直在等待值得我们愿意“付出十分力气”的重量级的产品出现。这也是为何中国制造还是超越不了德国制造、日本制造?不单纯是工艺问题,也不只是质量和创新问题,更不是简单的成本问题。 3、与其天天指望产品创新,还不如脚踏实地地做好当下的每一件产品,从每一件产品设计中去积累创新的基因。 4、没有流程的企业无法长大;定义了众多流程但员工没有对事业追求卓越的热情,一样不能制造出优秀的产品。以上这些企业,我相信也是标准的专业化分工,都有自己的市场、产品、技术、品管、销售等职能部门,以上产品的问题,其中任何一环的员工如果能够稍稍使用一下,问题肯定就暴露出来了。其实这些问题的根源还是,我们都认为“产品不是我负责的,是他们负责的”。类似在我们自己的软件产品设计、开发中随处可见,产品、技术、市场、销售相互抱怨,例如: 产品经理缺乏基本的常识;产品经理没有责任心,不关心自己的产品;产品经理在产品设计文档中有这样的设计,但技术在开发过程中没有遵循产品设计;技术不懂业务,因此作出的东西没人用;销售不懂产品,无法把东西销售出去;QA很差,无法保证产品质量等等。 所以为了流程而流程,与没有流程一样的糟糕,危害可能更大。 6/14/2009 创业杂感前两天一个创业不久的朋友在网上说最近很郁闷,约一块吃饭聊聊天。 朋友公司和他一起创业的几个人我都认识,之前几个人合作也挺好的,由于有创业前较好的积累,业务模式具有较大的创新性,公司的盈利模式、客户资源等基本上都是现成的,资金也不存在问题,因此一直觉得他们的创业前景应该是顺风顺水的。 与朋友聊天才发现在看似美好的创业故事背后竟然有这么多的故事,看似黄金搭配的团队竟然有这么多的问题。感叹万分,是以为记。 1、商业模式的创新并不是初创型企业决定性的因素,团队才是。再好的模式,没有强有力的执行团队,模式始终只是模式。一个成功商业模式的背后是一个适合企业模式需要的强有力团队。 2、对于初创型企业而言,商业模式这样战略问题很重要,但怎样在竞争对手复制模式前快速将模式落地成型并做到极致更为重要。 3、初创型企业所有问题的核心还是人的问题、管理的问题。 4、领导者的情商很重要,尤其是对于初创型企业的老板。小企业无法用高薪留人,但可以用感情留人、用事业留人。创业者的家属也是重要的因素。 5、有些人天生就是创业者,有些人只适合在大企业做高管。不是因为能力问题,而是心态问题。打工与创业需要完全不同的心态。 6、创业者不可能成为完人,也不需要成为完人。但应当尽量摒除自己人性中致命的缺点,让自己能够融入团队、容纳别人。 7、团队成员间的信任、包容、尊重是创业者间合作最基本的要求,连基本的信任都没有了,那还不如早点散伙。 8、创业之初就拉帮结派对企业杀伤力很大,可以断送一切未来。 9、沟通必须建立在倾听、尊重和包容基础上进行。不要在一切都无可挽回时候再沟通,哀莫大于心死。 10、不要指望所有的员工都具有创业精神。不可能让所有的人都能够像创业者自己一样为未来飘渺的理想奋斗,也不要不要指望每一个员工都是创业者、自我管理者、企业文化的缔造者,对不同层次的员工有不同的要求。 11、每个人在创业团队中都有自己的真实需求(与企业文化、企业愿景无关),只有正视这一点才可能建立起适合企业需要的管理制度。 12、没有大企业教条化制度的桎梏,能够快速应对市场需求变化是初创型企业的优势。但并不意味着初创型企业不需要制度、不需要规范化管理,恰恰相反,规范化对于初创型企业成败影响更加明显。能否快速从野蛮生长阶段上升到规范化管理阶段是企业能否快速做大的关键。 13、创业最大的悲哀莫过于无助地看着机会从指尖慢慢地滑过。 6/13/2009 无网络环境下Vmware Host主机与Guest虚拟机通信需要在一台演示用的笔记本上安装演示系统,演示系统需要安装Oracle、Tomcat、Apache等应用。由于笔记本是HP较新的 TouchSmart tx2-1012,操作系统缺省是Vista Home Premium 版本,无法安装Oracle,换成Windows XP 包括触摸屏驱动在内的很多驱动都找不到。同时由于演示系统需要供非技术人员用,需要将演示系统做成相对傻瓜化的方式,要让他们记住从系统服务里启动一堆东西是很麻烦的事情。如果所有的都做成服务随系统自动启动,Vista系统已经足够缓慢了,再加上Oracle、Tomcat等更慢的让人崩溃。 于是乎装个VMWARE倒是不错的方案,在虚拟机中装个符合演示系统需要的最简版本的Linux,将demo、Oracle、Tomcat、Apache等装到虚拟机环境中,所有的应用都做成随系统自动启动。平常不演示时候,不用启动VMWARE,演示时候再启动,这样能够较好平衡日常使用系统性能与傻瓜化使用的需要。 只不过又遇到一个问题,平常做演示的时候,很多地方并不具备网络环境。怎样在无网络的环境下让Host与Guest直接能够相互通信呢? 其实很简单,问题的关键在于理解Vmware的vmnet0、vmnet1、vmnet8。 1、vmnet0这是Vmware Bridged模式使用的Network Adapter。在Bridged模式下,Vmware实际上构建了一个也叫vmnet0的虚拟网桥,Host的物理网卡及Guest的虚拟网卡都连接到虚拟网桥的端口上。与sniffer的原理类似,Vmware通过将Host的物理网卡设置为混杂模式,连接在虚拟网桥上的Host和Guest遵循Ethernet的CSMA/CD 协议进行信道的争用和共享,这样Host的物理网卡就可以监听多个目标地址的包。 由于Host和guest都处在同一个Bridged网络中,Host 的物理网卡就可以把目标地址为Guest虚拟机的数据包截获下来,通过VMware Bridge Protocol协议转发给Guest的虚拟网卡,达到了“桥接”的功能。 由于此种模式只能在具有网络环境的情况下使用,不是我们讨论的重点。 2、vmnet1这是Vmware Host-Only模式使用的Network Adapter。在Host-Only模式下,Vmware实际上构建了一个也叫VMnet1的Virtual Network。 VMnet1 Virtual Network的子网地址为:192.168.205.0,子网掩码为:255.255.255.0,网关地址为:192.168.205.2 。 Host通过“VMWare Virtual Ethernet Adapter for VMnet1”连接到虚拟网络。对于VMnet1网络Vmware提供了DHCP服务,这样Host与Guest都可以通过Vmware的DHCP服务器可以分配到192.168.205.0网段的ip地址。 缺省情况下在host下VMware Network Adapter VMnet1属性中,vmnet1 的ip地址已经设置为192.168.205.1/255.255.255.0。 Guest虚拟机的Linux在采用DHCP的情况下,eth0获得的ip地址为192.168.205.128,由于是Host-Only模式,因此缺省情况下没有gateway。 因此在无网络环境的情况下,Host与Guest要相互通信,可以通过VMnet1的DHCP服务器给host主机的vmnet1 Network Adapter和Guest虚拟主机的Network Adapter分配的ip地址来相互通信。 3、vmnet8这是Vmware NAT模式使用的Network Adapter。在NAT模式下,Vmware实际上构建了一个叫VMnet8的Virtual Network。VMnet8 Virtual Network的子网地址为192.168.8.0,子网掩码为255.255.255.0 ,NAT网关地址为192.168.8.2。 Host通过“VMWare Virtual Ethernet Adapter for VMnet8”连接到虚拟网络。对于VMnet8网络Vmware提供了DHCP服务,这样Host与Guest虚拟机都可以通过Vmware的DHCP服务器可以分配到192.168.8.0网段的ip地址。 在Host 网络链接的VMware Network Adapter VMnet8属性中,Host主机vmnet8的ip地址已经被缺省设置为192.168.8.1/255.255.255.0。 在Guest虚拟机的Linux采用DHCP的情况下,Guest虚拟机的eth0获得的ip地址为192.168.8.130,gateway地址为192.168.8.2,实际上就是vmnet8的网关地址。当然也可以不使用DHCP,手工将虚拟机的eth0的ip地址配置为192.168.8.0网段的ip地址。 因此在具有网络环境及无网络环境的情况下,host与虚拟机要相互通信,可以通过VMnet8的DHCP服务器给host主机的vmnet8 Network Adapter适配器和虚拟主机的Network Adapter分配的ip地址来相互通信。 总结: 在无网络环境下,可以采用vmnet1、vmnet8的ip地址来完成host主机与Guest虚拟机之间的通信。相比较而言,NAT模式在具有网络的条件下也能够正常使用,因此在无网络的环境下,采用NAT模式比Host-Only模式方便得多。 Oracle 10.2.0.1 在x86-64 的Redhat AS4 Update 2安装杂记需要在一台Dell 1950 的Redhat AS4 Update 2上安装Oracle,原本打算重装操作系统升级到AS5,安装到分区时候,无法识别硬盘,没有Dell openManage Assistant光盘,也没有软驱,只好在原有的AS4 Update 2上安装Oracle。 以前在电信项目中使用Oracle都是64位的Solaris及HP-Unix,因此很少考虑CPU兼容性问题。做互联网后很少再使用Oracle了,被AMD、INTEL们宣扬的x86_64与i386向下的兼容性所迷惑,因此也没细看服务器的系统配置,习惯性地上传了以前下载的Oracle 10.1.0.2 for Linux,按照Oracle安装的标准步骤配置好相关环境变量及内核参数后,启动安装界面运行到安装数据库(Installing Oracle Database )阶段,进度条始终停在2%就停止不动了。百思不得其解,找了半天原因,后来查看了一下机器配置(uname -a),发现Dell 1950的CPU是Intel XEON x86_64位的服务器,因此怀疑是x86_64机器的问题。 只好又花了半天下载了一个Oracle 10201 linux x86_64版本 的安装包,下载完成后,解压后(gunzip 10201_database_linux_x86_64.cpio.gz;cpio -idmv < 10201_database_linux_x86_64.cpio),重新开始过程,在安装数据库阶段倒是顺利过了,但是到编译链接阶段(Linking ‘Oracle Database’),报错: Error in invoking target ‘install’ of makefile ‘/opt/oracle/product/10.2/ctx/lib/ins_ctx.mk’ 忽略错误继续安装,仍然报一堆类似的错误,看来继续安装已经没有价值了。 从现象来看,应该是libstdc、gcc的问题,按照这篇文章,检查了Linux的rpm包 rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' binutils compat-db control-center gcc gcc-c++ glibc glibc-common gnome-libs libstdc++ libstdc++-devel make pdksh sysstat xscreensaver libaio libaio-devel 结果如下: compat-db-4.1.25-9 (i386) 发现缺少了binutils、libstdc++-devel 、libaio、libaio-devel几个重要的包,下载了这几个包安装 rpm –Uvh --force libaio-0.3.103-3.x86_64.rpm libaio-0.3.103-3.i386.rpm binutils-2.15.92.0.2-15.0.0.0.2.x86_64.rpm 下载binutils时候有binutils-2.15.92.0.2-13.0.0.0.2.x86_64.rpm和binutils-2.15.92.0.2-15.0.0.0.2.x86_64.rpm两个包可供选择,按照Oracle的说明,在AS4 Update2上应当安装binutils-2.15.92.0.2-15.0.0.0.2.x86_64.rpm 安装完上述包,重新Oracle安装过程,进行到Linking Stage仍然报类似的错误。 按照这篇文章的说法,在x86_64上安装10G R2应当使用binutils-2.15.92.0.2-13.0.0.0.2.x86_64.rpm包,而不应当使用binutils-2.15.92.0.2-15.0.0.0.2.x86_64.rpm 卸载binutils-2.15.92.0.2-15.0.0.0.2.x86_64.rpm重新安装binutils-2.15.92.0.2-13.0.0.0.2.x86_64.rpm rpm -e --force binutils-2.15.92.0.2-15.0.0.0.2 ;rpm -Uvh --force binutils-2.15.92.0.2-13.0.0.0.2.x86_64.rpm 安装进行到Linking Stage仍然报类似错误。 按照这篇文章的说法,还应当安装gcc、gcc-c++-、glibc-devel、glibc-headers、glibc-kernheaders的32位及64位的相关开发包 wget http://linuxsoft.cern.ch/cern/slc4X/x86_64/yum/updates/glibc-devel-2.3.4-2.13.i386.rpm wget http://linuxsoft.cern.ch/cern/slc4X/x86_64/yum/updates/glibc-devel-2.3.4-2.13.x86_64.rpm wget http://linuxsoft.cern.ch/cern/slc4X/x86_64/yum/updates/glibc-headers-2.3.4-2.13.x86_64.rpm wget http://linuxsoft.cern.ch/cern/slc44/x86_64/yum/os/glibc-kernheaders-2.4-9.1.98.EL.x86_64.rpm rpm –Uvh glibc-devel-2.3.4-2.13.i386.rpm glibc-devel-2.3.4-2.13.x86_64.rpm glibc-headers-2.3.4-2.13.x86_64.rpm glibc-kernheaders-2.4-9.1.98.EL.x86_64.rpm 安装进行到Linking Stage仍然报错,查看日志oracle/oraInventory/logs/installActions2009-06-08_12-12-04PM.log,报/usr/lib64/libstdc++.so.5: No such file or directory 错误: INFO: INFO: - Linking liborasdkbase INFO: /coias/oracle/product/10.2/bin/genorasdksh -base INFO: $Id: genorasdksh.sh 02-mar-2005.16:22:46 mchengjr Exp $ INFO: Generating BASE ORASDK library... INFO: Creating /coias/oracle/product/10.2/lib/liborasdkbase.so.10.2 INFO: gcc: INFO: /coias/oracle/product/10.2/bin/genorasdksh: Failed to link liborasdkbase.so.10.2 INFO: make: *** [liborasdkbase] Error 1 INFO: End output from spawned process. 下载glibc-devel-2.3.4-2.13.i386.rpm、compat-gcc-32-c++-3.2.3-47.3.i386.rpm 、compat-gcc-32-3.2.3-47.3.i386.rpm wget http://whiteboxlinux.osmirror.nl/4/en/obsolete-updates/glibc-devel-2.3.4-2.13.i386.rpm wget ftp://ftp.chg.ru/pub/Linux/CentOS/4.7/os/i386/CentOS/RPMS/compat-gcc-32-c++-3.2.3-47.3.i386.rpm wget ftp://ftp.chg.ru/pub/Linux/CentOS/4.7/os/i386/CentOS/RPMS/compat-gcc-32-3.2.3-47.3.i386.rpm 安装这几个包后,重新安装Oracle,在邻近崩溃边缘终于顺利完成Oracle安装。 真不容易,整整浪费了一天多的时间。 总结如下: 1、x86_64并没有想CPU厂商宣扬的那样对32位CPU应用向下的兼容性,尤其是Intel的 2、Oracle 10.2.0.1在AS4 Update2上安装,需要依赖libaio、libaio-devel、binutils、libstdc、glibc-devel、compat-gcc-32-c++、compat-gcc-32等几个重要的包,尤其是32位(i386或i686)、64位(X86_64)对应的包 rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' binutils compat-db control-center gcc gcc-c++ glibc glibc-common gnome-libs libstdc++ libstdc++-devel make pdksh sysstat xscreensaver libaio libaio-devel glibc-devel glibc-headers glibc-kernheaders compat-gcc-32-c++ compat-gcc-32
3、这篇文档及这个帖子对于Oracle 10R2在x86_64下安装过程总结得很不错,只不过刚开始时候没有耐心看完,怀着侥幸的心理看了前面一部分就开始安装,白白浪费了很多时间。 参考资料: http://www.puschitz.com/InstallingOracle10g.shtml http://oss.oracle.com/projects/compat-oracle/files/RedHat/ http://forums.oracle.com/forums/thread.jspa?threadID=336440 http://www.freelists.org/post/oracle-l/Oracle-92-on-RH-ES-4-x86-64,5 http://forums.oracle.com/forums/thread.jspa?threadID=336440 http://space.itpub.net/4227/viewspace-69540 http://www.xxlinux.com/linux/article/development/database/20060709/2611.html
记录一下Oracle 自启动脚本配置方法,免得每一次都要写一遍 1)、vi /etc/rc.d/init.d/oracle 内容如下: 确认$ORACLE_HOME/bin/dbstart及$ORACLE_HOME/bin/dbshut中的ORATAB=/etc/oratab,如果不是,修改为 ORATAB=/etc/oratab 4)、chown oracle:dba /etc/oratab;chmod 755 /etc/oratab 5)、增加rc2.d、rc3.d、rc5.d启动、关闭脚本 ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc2.d/S99oracle ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc3.d/S99oracle ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc5.d/S99oracle ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc0.d/K01oracle ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc6.d/K01oracle
|
|||
|
|