手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2010年05月的文章

国内软件公司为何无法做大做强?

其实关于标题这个问题一向是被很多人所拿来讨论的,但其实放到国内任何一家企业都可以套用这种问题,为什么国内的小企业无法做大做强。但原理还都是一样的。当我把我转贴的这篇文章告诉我同事时,他说,很早在大富翁论坛上就已经有过讨论了。

再看看目前的软件业,软件从业人员,也能够了解一些,当我们还在努力的为工资打拼时,挣一份兼职时,却总有人跳出来破坏市场。记得在04年~05年左右,那时候在QQ群里面有人放单5000元左右,结果讨论的人不是在如何为接单议论,而是在打拼价格,最终是一名在校生以800元左右的价格接下来了。事后问那位放单的人员,才知道,后续问题一堆,接单的人做完后就消失了。仔细想来却是学校里的学生没有就业压力,接单纯粹是为了多一点生活费而考虑,而且有大把的时间,这样的情况下,计算生产成本就是不一样的了。而做出来后,却又忽略后续维护(试想接了N单之后,人人都要你维护,你有这个精力吗?只能装消失了。)这样就影响了外界对软件从业人员的误会,也认为价格和服务就这样了。唉。。

下面还是转贴文章吧,反正都可以被任何行业套用。

纵览,国内比较大的软件公司(以下统一简称"国软"),清一色都是做政府项目的(他们能做大的原因我就不用说了吧),真正能做大的国软又有几家呢? 这是为什么呢?
今天风吹就给大家简单分析下:

1."作坊"式管理
  "作坊"往往是效率最高的,国软几乎都是从作坊走过来的,
   但把作坊式的管理模式套用到一个不断壮大的公司中显然是不行的.
   组织架构到达一定程度后就必然要进行分工的细化,依靠作坊式的"暴力开发"是行不通的.

 2."法制社会"
   上班必须打卡,迟到要扣钱,还一次比一次多,加班没有加班费,反正算下来就是,只有扣钱的项目,没有加钱的项目.
   比起外企,人家上班不打卡,迟到不扣钱,加班有加班费,这样宽松点的环境不好吗?
 
3.自身自灭
   国软一般没有师徒制,有的话也只是形式上的,公司基本没人管你,你也不用去管别人,
   新进的员工,不管会不会,先丢个东西给你做,自己研究,不懂的google去.
   这也是为什么国软喜欢招有经验的人,因为没经验的人熬不住,跑了几个以后,国软就不招了.

4.销售-开发-维护脱节
   这点是非常严重的,会直接导致项目流产的.国软的典型的做法是,销售为了业绩,在没有调研的情况下就签了合同(这里主要是指项目型的,产品型的一般可以控 制),而且合同的范围也非常模糊,可大可小,接下来就是调研人员上场,调研后发现,10w块钱的合同,调研出来了100w的需求,接下来就是和客户扯皮, 最后直接导致项目流产,甚至打上官司.项目或产品上线后,维护人员对系统不了解(一方面是没有文档,另外一方面维护人员一般没有参与到开发中),接下来往 往就会发生两种情况:
   a.维护人员在不了解系统的情况下擅自修改,结果导致系统越改问题越多.
   b.维护人员一不做二不休,所有客户反馈的问题全部打回给开发人员,于是开发人员就生不如死,在做别的项目的同时还要维护以前的项目,结果就是导致几个项 目都失败.

 5.缺乏规划
   今天要用这个,明天想用那个(笔者就经历了公司在半年的时间内对框架进行了两次大的变动,导致开发人员都必须重新学习框架)
   产品也接,项目也接,大的也接,小的也接.

   今天领导说往左走,明天说往右走,也不能怪领导,他也没经验,我们就是他的DEMO.
   公司没有一个明确的目标,要做成什么样,只是一味的提出做大做强,但是没有规划出如何做大做强.(和我的标题一样哦)

 6.三无-无需求,无设计,无测试.
   a.没有文档是国软的通病,曾几何时,产品经理丢过来的那一句话:"喂,**,给我做一个**模块来",然后开发人员就开始埋头苦写了.
   b.当然如果你天资聪慧,可以轻易理解出产品经理的意思,那有没有设计都无所谓了,但是,当有一天别人要维护你的程序的时候问题就出现了,
   没有文档,代码又那么天马行空,怎么维护?改了这个地方,又影响了那个地方...
   c.其实程序员都懂得测试的意义,可以工时安排的那么紧,哪来的时间测试?测试又没有算工时.所以几乎所有的程序员的做法就是,直接丢给用户测试
   这 时候有人肯定要问:那项目经理呢?他不是可以测试吗?请记住这是国软,刚才写代码的那个人就是项目经理,还是售前,还是设计人员,还是维护,还是...
   归结还是成本问题,在外资软件公司中,做文档的工时是比做开发的工时更多的,国软为了节省成本,这块当然要CUT掉了.不必去追去文档有多么详细多么美 观,需要做的就是找到一个平衡点,一份适合自己的文档.

 7.员工都是"十项全能"
  在国软里面的员工各个都是十项全能(笔者就是一个鲜明的例子,从系统调研分析设计,到进度管理,开发,测试,验收,实施,维护,甚至拉给客户拉网线都需要 我去.)
  直接导致的结果就是这些员工每过多久就直接出来自己开公司了...嘿嘿又一家作坊诞生了...
  这样做对员工个人其实是有好处的,但是对于企业本上来说是没有好处的,并不是说员工成立了作坊,成为了你的竞争对手,而是让员工各个都是十项全能的结果就 是
  a.员工都是"十项全不能".
  b.员工一旦离职,他手头的项目必定流产.
  c.对公司的发展是不利的(细化分工).

 8.莫不关心
  老板并不知道员工在做什么,员工也不知道老板在做什么.
  上级很少去关心下级的工作,更别说去关心下级的生活,一个东西丢给你,一个月后交差,中间不管你任何事情,交不了差就唯你是问.
  下级也不知道能为上级分担什么,只有等着上级分配任务.
  甚至还有些老板都不不知道员工的名字,在这样的国软的,每个人都是孤立的,又怎么能做大做强呢?

 9.企业文化
  所谓十年树木,百年树人.
  国软的企业文化表面功夫算是做的很好的了,什么"为客户创造价值","做最好的行业解决方案","软件公司的最大资源就是人才"等等,要多华丽有多华丽,
  重复体现了"口号文化".真正做到企业文化又有多少呢?有多少仅仅是为了做给客户看的呢?

 10.盲目跟风
  很多国软看到人家外企软件公司最近在搞什么推进活动,就跟风,效仿外企做,可是无法领悟精髓,纯粹只是在模仿.
  (外企集体笑:"一直被模仿,从未被超越")
  做完了也不知道这么做的意义,劳民伤财.

 11.缺乏"执行力"
  国软的通病,就是"执行力",国软的学习劲头很足,今天提出要完善测试标准,明天提出要每周写工作报告,可是又有哪些东西能真正的去执行呢?
  导致这个问题的主要原因有两个:

  a.提出来的东西到底有没必要做,还是只是应付领导走个过场.
  b.谁来跟踪这些东西?员工写了工作报告,领导没有去查看,去反馈, 员工觉得写的也没意义,自然不会继续执行下去.

 12.管理混乱
    没有划分清楚员工的归属组织,员工并不明确他的上级领导是谁,导致有的员工处于游离状态,有的是员工又是多个领导,不懂要听谁的,有些人忙的要死,有些人 又闲的要命,最后搞的最痛苦的就是员工,导致员工离职.

 13.缺乏团队精神
   为什么会缺乏团队精神呢?并不是国软没有这方面的概念,国软也很希望培养员工的团队观念和精神,
   无奈因为国软,一般都是一个人负责一个或者多个项目,连团队都没有,何来的团队精神?

 14.无法做到补足
   一个项目一旦中途有人辞职,这个项目就会流产.
   一个员工一旦辞职,会有N个项目没人维护.
   A组的员工无法胜任B组的工作,归根结底就是组织上根本没有考虑过组织变动对项目的影响,没有提前培养人员.

 15.一成不变和随心所欲
   有两类人一种是把前辈的东西COPY过来,不作任何修改,因为他深信,前辈的一定是对的,
   还有一类是不管前人怎么做的,一律不要,全凭自己的"经验",随心所欲,天马行空的进行自主研发,

   造成的结果就是错的还是错的,乱的更乱了.

 16.人才育成
   成本,还是成本,培养一个人要多少成本?
   这就是国软做不大的原因,永远只能停留在"作坊"的原因.

 17.向心力.
     老板做的是事业,员工做的是事情,这是国软员工的一致观点.

 18.恶性循环
     a.人员力量不足 -> 接不了项目 -> 收入少 -> 人员流失.
     b.人员力量不足 -> 强行接项目 -> 亏本    -> 破产.

 最后我想说一句的是:成也国软,败也国软.说的不对的地方请大家指出,或者补充下没说到的地方.

--EOF--

原文来自:http://www.cnblogs.com/saul/archive/2010/04/20/1715793.html

Tags: 软件公司, 规模

福珑2E电脑硬盘重装系统、系统Ghost以及简单配置

前两天,突然接到一个电话,看来源是江苏的,接起来后感觉到意外,原来是龙芯那边打来的,问我福珑2E用的怎么样。这才让我想起,原来我的福珑2E已经扔在抽屉里2年多了。买福珑本身是一个小意外,当初的想法是利用这样的小盒子连软件一起打包卖的,但最后,接单的项目结束了,被人忽悠了一下,但是电脑也买了回来,于是就自己折腾了一段时间。但后来还是没有正式使用。

如今我又想使用了,想用它来代替电视的机顶盒,看电影啥的。可是却发现原来我的机器不能启动了,而且,还不会安装。这不,网上找了点资料,先备份一下,然后过两天慢慢折腾(主要是没有显示器了。。。)

原文很长。。。不过也得转呀。来源是:http://hi.baidu.com/busybox/blog/item/19aa3f8b69ccadd5fc1f104d.html

--START--

我的条件是有了台能上网的X86电脑,装有XP,软硬齐全。
一、硬盘重装系统

1.把随机附送的光盘在XP下做成debian.iso镜像文件,也可以重网上直接下载http://www.lemote.com/debian/iso/里 面直接下载,重命名为debian.iso,重命名的好处是以后输入命令后方便。

2.先介绍下我的盒子的分区:
/根分区挂载的是/dev/hda1
/home分区挂载的是/dev/hda2
/swap分区挂载的是/dev/hda3
/opt分区挂载的是/dev/hda4
把debian.iso文件拷到盒子里的/home分区,在终端输入如下命令:
su
mount -o loop /home/debian /cdrom
cd /cdrom/boot
cp setup /

3.重启电脑按DEL键进入BIOS,进入BIOS后在PMON下输入如下命令:
PMON>load /dev/fs/ext2@wd0a/setup
PMON>g console=tty
开始硬盘重装系统。

4.根据提示依次选择"语言"->"简体中文","国家"->"中国","键盘"->"美式英语"。

5.在Debian安装程序主菜单出现后,按"Alt+F2",然后再按"Enter"。出现命令提示符,输入如下命令:
cd /mnt
mkdir home iso
mount /dev/hda2 /home
mount home/debian.iso iso
输入完成后,按"Alt+F1"返回Debian安装程序主菜单。

6.选择“探测并挂载CD-ROM”,根据提示依次选择:
"从驱动软盘中加载光盘驱动器的驱动吗?"->"否"
"手动选择光盘驱动器设备及其模式吗?"->"是"
"使用此光盘驱动器所需要加载的模块"->"none"
"光盘驱动器所对应的设备文件"->"键入/dev/loop0"
最后选择"继续"。

7.然后依次选择"配置网络"、"探测网络设备"
"使用DHCP进行网络自动配置"->"是"
"网络自动设置失效"(因为我的盒子没有联网)->"继续"
"网络配置方式"->"现在不进行网络配置"
"主机名"->"debian"
"Debian归档镜像"->"www.lemote.com"
"HTTP代理信息"(留空)->"继续"
"无效的归档镜像"(因为没联网)->"继续"
又返回到"选择归档镜像"->"返回"。

8.选择"探测磁盘"->"继续进行分区吗?"->"是"->"手动"分区。我的分区如下:
/根目录挂载/dev/hda1-----格式化成ext3
/home挂载/dev/hda2------不格式化,保持现有数据
/swap挂载/dev/hda3-------格式化成swap格式
/opt挂载/dev/hda4---------不格式化,保持现有数据
最后,选择"分区设定结束并将修改写入磁盘"->"将改动写入磁盘吗?"->"是"。

9.系统时间设置。提示"您的系统时间设置为UTC?"->"是"。

10.用户设置:
"Root用户密码"->"输入密码"
"请再次输入以验证其正确性"->"重复输入"
"请输入用户名"->"loongson"
"您的帐号用户名"->"loongson"
"请为新用户选择一个密码"->"输入密码"
"请再次输入以验证其正确性"->"重复输入"。

11.开始安装......

12.出现提示:
"要安装的内核"->"linux-image-2.6.18-godson2e"
"使用网络镜像吗?"->"否"
"被释放掉的有关security.debian.org的条目已被加到/etc/opt/soures.list文件中"->"继续"
"您要参加软件包流行度调查吗?"->"否"
"选择要安装的软件“-”桌面环境+标准系统"(按空格键选择)->"继续"。

13.等待......出现提示:
"X服务器所使用的视频模式"-"1024*768+800*600+640*480"(按空格选择)->"继续"。

14.一段时间后,出现提示:
"您将需要手动启动/dev/hda1分区上的内核并添加内核参数root=/dev/hda1"->"继续"。

15."安装完成"-"继续",重启系统,按DEL键进入BIOS,在PMON下输入如下命令(设置系统启动内核):
PMON>load /dev/fs/ext2@wd0a/boot/vmlinux-2.6.18-godson2e
PMON>g console=tty root=/dev/hda1


二、系统Ghost(官方版本)

1.在www.lemote.com/debian-testing/for-2e/目 录下载hda1.tar.gz和hda2.tar.gz。

2.福珑的预装系统打了有两个包:hda1.tar.gz,hda2.tar.gz。只要把这两个包分别解压到hda1和hda2上就可以了。如果 你安装了两个系统,可以在第二个系统中挂载和解压操作就可以了,如果你只有一个系统,那就可以启动一个rescue内核来操作,不过这都是在字符界面下完 成。

3.下面介绍一下具体做法:
假设我把这两个包拷贝在系统的第四个分区(hda4)根目录(/),在第一个分区(hda1)的boot目录下有rescue内核(预装的系统中都带了这 个内核,如果你的系统中没有,可以到http://www.lemote.com/debian/boot/) 下载。开机按住空格键(或者其他键,只要不是enter就行)进入PMON界面,输入如下命令:
PMON>load /dev/fs/ext2@wd0/boot/rescue
PMON>g console=tty video=radeonfb:800x600@60
然后rescue内核就开始启动,内核启动完成后会提示:
Please press Enter to activate this console
按回车就可以激活这个控制台,这时可以用mkfs.ext3 /dev/hda1和mkfs.ext3 /dev/hda2命令将hda1和hda2格式化。
然后cd /mnt进入mnt目录下创建三个子目录hda1,hda2和hda4(创建目录用mkdir 目录名称,例如创建hda1目录可以用命令mkdir hda1)。
然后将三个分区(hda1,hda2,hda3)分别挂载到/mnt/hda1,/mnt/hda2,/mnt/hda4(挂载可以用mount命令,例 如挂载hda1到/mnt/hda1,可以用命令mount /dev/hda1 /mnt/hda1)。
挂载好以后用cd /mnt/hda4进入hda4目录,然后开始将两个包分别解压到两个分区中,解压命令是:
tar xvzf hda1.tar.gz -C /mnt/hda1/(注意这个C是大写的)。
这是将第一个分区的内容解压到hda1中,这个过程时间可能比较长,等这个过程结束后就可以解压第二个分区的内容了,命令是:
tar xvzf hda2.tar.gz -C /mnt/hda2/
这个过程是比较快的。
解压完成后系统就安装好了。
系统中有2.6.21和2.6.18两个内核,你可以在PMON中设置你想启动的内核。


三、简单配置

1.内核更新。
刚装的系统内核vmlinux-2.6.18-godson2e没有ppp模块所以不能上网。在http://www.lemote.com/download/downloads_27.html下 载福珑迷你电脑64位内核2.6.22.9(kernel_2.6.22_9_lm64.tar.gz)64位的到U盘。U盘插入盒子,自动识别出来后, 输入如下命令:
cd /media/usbdisk
cp kernel_2.6.22.9_lm64.tar.gz /home
cd /home
tar xvfz kernel_2.6.22.9_lm64.tar.gz
cd boot
mv vmlinux vmlinux-2.6.22.9-64
cp vmlinux-2.6.22.9-64 /boot
cd ..
cd lib/modules
cp -r 2.6.22.9lm64 /lib/modules
重启机器,按DEL键进入BIOS,在PMON下输入如下命令:
PMON>set al /dev/fs/ext2@wd0a/boot/vmlinux-2.6.22.9-64
PMON>set karg "console=tty root=/dev/hda1"
PMON>reboot
这样以后进入系统使用的就是64位的2.6.22.9内核了。

2.字体设置。
http://wqy.sourceforge.nethttp://wenq.org可下载最新的文泉驿字体。不过这两个网站我上不去,于是在http://www.codeput.com/soft/view-software-12667.html下 载了最新的文泉驿字体-文泉驿字体之“祈祷”的压缩包zenhei.rar。把zenhei.rar中的wqy-zenhei-0.6.26-0.deb 解压到U盘中。U盘插入盒子,执行如下命令:
cd /media/usbdisk
dpkg -i wqy-zenhei-0.6.26-0.deb
字体安装成功后,下面就可以直接在子弟设置里设置使用文泉驿字体了。

3.输入法安装
因为debian的镜像文件在/dev/hda2也就是/home分区,故可以直接用它安装。
打开终端输入如下命令:
mount -o loop /home/debian.iso /cdrom
apt-get install scim
SCIM随系统启动:
在/etc/X11/Xsession.d目录下新建一个名叫95xinput的文件,内容如下:
/usr/bin/scim -d
XMODIFIERS="@im=SCIM"
export XMODIFIERS
可以通过输入如下命令完成:
cd /etc/X11/Xsession.d
vim 95xinput
然后按键“A”开始输入:
/usr/bin/scim -d
XMODIFIERS="@im=SCIM"
export XMODIFIERS
输入完成后,按Esc键,再按:wq后,按"Enter"键后保存退出。
这样,输入法安装完成,并随系统开机启动。

4.宽带上网设置
首先从http://www.roaringpengwin.com/products/pppoe下 载rp-pppoe-3.10.tar.gz并拷入U盘。
不过我在安装rp-pppoe之前还安装了pppoeconf,因为使用pppoeconf会经常掉线,经过设置后仍然如此,故事用rp-pppoe。
先介绍pppoeconf的安装,因为debian的镜像文件在/dev/hda2也就是/home分区,故可以直接用它安装,打开终端输入如下命令:
mount -o loop /home/debian.iso /cdrom
apt-get install pppoeconf
如果用apt-get install不能安装成功,可以用以下方法:
cd /cdrom/pool/p/pppoeconf
ls
然后用dpkg -i命令安装其文件夹下的文件,一般会提示缺少的依赖,可以在/cdrom/pool目录下依次寻找并安装,然后返回安装pppoeconf就可以了。
下面介绍rp-pppoe的安装,把已经拷有rp-pppoe-3.10.tar.gz的U盘插入盒子,在终端输入如下命令:
cd /media/usbdisk
cp rp-pppoe-3.10.tar.gz /opt
cd /opt
tar xvfz rp-pppoe-3.10.tar.gz
cd rp-pppoe-3.10
./go
知道安装完成,安装完成后可以直接进行配置,也可以以后用pppoe-stup来进行配置。如果之前没安装pppoeconf,此处安装时会提示安装 ppp,所以,最好先安装pppoeconf再安装rp-pppoe。
以下是rp-pppoe的配置过程:
//以下是屏幕显示:
Welcome to the Roaring Penguin ADSL client setup. First, I will run some checks on your system to make sure the PPPoE client is installed properly...
Looks good! Now, please enter some information:
USER NAME
>>> Enter your PPPoE user name :
输入连入宽带网的账号,值得注意的是,如果接入ADSL,使用中国电信的服务可直接输入账号,而如果是接入中国网通的以太网,要紧跟着账号后面输入! Internet(I要大写)。
INTERFACE
>>> Enter the Ethernet interface connected to the ADSL modem
For Solaris, this is likely to be something like /dev/hme0.
For Linux, it will be ethn, where 'n' is a number.
(default eth0):
输入准备接入互联网的网卡名,如果是缺省的就直接敲回车键。
>>> Enter the demand value (default no):
直接回车。
DNS
>>> Enter the DNS information here:
输入有服务商提供的域名服务器地址,或输入server,由服务商自动提供(我家是自动分配IP的,所以输入的是server)。
PASSWORD
>>> Please enter your PPPoE password:
>>> Please re-enter your PPPoE password:
输入上网密码。
FIREWALLING
The firewall choices are:
0 - NONE: This script will not set any firewall rules. You are responsible for ensuring the security of your machine. You are STRONGLY recommended to use some kind of firewall rules.
1 - STANDALONE: Appropriate for a basic stand-alone web-surfing workstation
2 - MASQUERADE: Appropriate for a machine acting as an Internet gateway for a LAN
>>> Choose a type of firewall (0-2):
选择防火墙,选0。
** Summary of what you entered **
Ethernet Interface: eth0
User name: ddtthz! Internet
Activate-on-demand: No
DNS: server
Firewalling: NONE
>>> Accept these settings and adjust configuration files (y/n)?
选y。
最后,对上述配置进行确认。确认后的配置系统会写入/etc/ppp/pppoe.conf文件,熟练的用户可直接对其进行修改。
配置完成后,就可以进行拨号了。
输入以下命令进行拨号:
#pppoe-start
如果屏幕上出现:“... Connected!”就说明拨号成功了。一般而言做到这一步是没什么问题的。这时可以用ifconfig命令查看你的信息(可以使用命 令#ifconfig -a来查看)。
最后可以Ping一下互联网中的某个主机名看下是否能上网,命令如下:
#ping www.sina.com
如果出现以下信息:
PING jupiter.sina.com.cn (218.30.66.101) 56(84) bytes of data.
64 bytes from 218.30.66.101: icnp_seq=1 ttI=128 time=91.6 ms
64 bytes from 218.30.66.101: icnp_seq=2 ttI=128 time=163 ms
64 bytes from 218.30.66.101: icnp_seq=3 ttI=128 time=178 ms
......
则表明已经连上Ineternet了。
如果想开机自动连上宽带,可以按如下操作:
首先,用pppoeconf配置在/etc/ppp/peers/生成一个dsl-provider用户文件。
配置过程只要大家输入正确宽带上网的帐号密码就可以了,在最后有个提示问你是否在系统启动的时候启动pppoeconf,选择"否",因为我们配置它的目 的只是生成一个用户配置文件。
然后在终端输入如下命令:
cd /etc/network
vim interfaces
按A键开始输入,输入以下字符:
iface eth0 inet ppp
provider dsl-provider
按Esc键后,再按:wq,按Enter键后保存退出。
cd /etc
vim rc.local
按A键开始输入,输入以下字符:
/usr/sbin/pppoe-start
按Esc键后,再按:wq,按Enter键后保存退出。
这样,以后在系统启动后就能自动连上宽带了。

Tags: 福珑, 龙芯, debain

写HTML和CSS的新方法

Zen Coding 一个用来简化编写 HTML,XML, XSL (或是其它一些诸如此类格式的编辑器)。其主要是用一种缩写方式的语法来书写大量重复和无味的HTML,很像CSS语法。下面是一个例子:div#page>div.logo+ul#navigation>li*5>a

效果就是:

XML/HTML代码
  1. <div id="page">  
  2.         <div></div>  
  3.         <ul id="navigation">  
  4.                 <li><a href=""></a></li>  
  5.                 <li><a href=""></a></li>  
  6.                 <li><a href=""></a></li>  
  7.                 <li><a href=""></a></li>  
  8.                 <li><a href=""></a></li>  
  9.         </ul>  
  10. </div>  

 

这玩意是我在PHPRPC群里缘起缘灭推荐的,看了一下,效果还不错。。再去官网看了一下,居然有支持notepad++,很兴奋的下载下来使用了。效果还不错。

如果你一直是在用手写HTML代码而不是用IDE,确实 推荐一下。

上面的演示内容来自:http://coolshell.cn/?p=2406,官网请点击:Zen Coding

 PS:如果你真的不会用,没关系,这里还有一个PDF下载下来看看就行了:zencodingcheatsheet.pdf

Tags: xpath, html, css

表单提交按钮input和button的取舍

这篇文章我一直在纠结,是否要摘录过来,但我还是最终决定放上来了。
其实大家都知道,在网页中,可见的按钮有三种,一种是input,一种是button,最后一种,其实也不能管是按钮,它是由img转化而来的。最最常用的还是input和button,在以前的日子里,大家都习惯于用input,因为他直接拥有type=submit,而button没有,它更适合于表达button。
然而。。。

XML/HTML代码
  1. 首先,在IE6里,如果一个表单里有多个button形式的提交按钮,那么不管你点击其中哪个按钮,所有的button按钮都会被提交,而在IE7,8里则点击哪个按钮,才提交哪个button按钮。此时,如果想在服务端判断用户点击了哪个按钮,只能使用Javascript来处理。  

这点,在不同浏览器对回车提交表单的处理办法已经提过,但老王说的这个是变量的传递,以及在指定name的时候,POST变量的值的变化。不废话看原文:
最近写代码,处理很多表单,里面的Submit按钮有两种形式,分别是input和button,有点区别,做个试验:

先创建一个php文件demo.php, 用来接收表单数据:

<?php
var_dump($_POST);
?>

再创建一个html文件demo.html, 用来显示表单:

<form method="post" action="demo.php">
<input type="submit" name="foo" value="提交">
<input type="submit" name="bar" value="保存">
</form>

<form method="post" action="demo.php">
<button type="submit" name="foo" value="foo_value">提交</button>
<button type="submit" name="bar" value="bar_value">保存</button>
</form>

使用Firefox依次浏览,就能看到input和button的区别:input提交按钮显示的文字就是value,而button提交按钮显示的文字 和value是独立的,从这个意义上来看,button更有表现力,是更值得推荐的提交按钮实现方式。

可惜IE总是拖后腿,使用IETester里的 IE6,7,8分别浏览,就会发现button提交按钮在IE下有Bug:

首先,在IE6里,如果一个表单里有多个button形式的提交按钮,那么不管你点击其中哪个按钮,所有的button按钮都会被提交,而在IE7,8里 则点击哪个按钮,才提交哪个button按钮。此时,如果想在服务端判断用户点击了哪个按钮,只能使用Javascript来 处理。

另外,在IE6,7,8里,button形式的按钮在提交后,value属性都失效了,显示文字取代了value。

总结:从理论上来看,button形式的提交按钮优于input形式的提交按钮。但如果考虑浏览器通用性,很多时候还是只能使用input形式的提交按 钮。

参考:http://www.w3.org/TR/html401/interact/forms.html
老王的文章在:表 单提交按钮input和button的取舍

Tags: form, input, button

ySlow的计算公式

来自于hello,JavaScript的收藏,我也小小的收藏一下:

http://www.beiju123.cn/blog/?p=513
  1. F = 8×{100-[4×(JS文件数-3)+4×(CSS文件数-2)+3×(CSS背景图连接数-6) ] }  
  2.     +6×(100-10×未使用CDN的连接个数)  
  3.     +10×[100-11×(Expire时间小于172800秒的连接个数) ]  
  4.     +8×[100-11×(文件大小大于500字节且 未使用gzip的连接个数)]  
  5.     +4×[body中没有CSS连接 ? 100∶ (99-10×body中的CSS连接数) ]  
  6.     +4×(100-5×head中的JavaScript连接数)  
  7.     +3×[不存在CSS表达式 ?100: (90-2×CSS表达式数目) ]  
  8.     +3×[100-5×(域名数-4)]  
  9.     +4×(100-10×未精简的CSS与JS个数)  
  10.     +4×(100-10×Redirect个数)  
  11.     +4×[100-5×(重复的JavaScript个数+重复的CSS个数) ]  
  12.     +2×(100-11×未使用Etag的连接个数)  
  13.     +4×(100-5×未缓存或者缓存时间不足3600秒的AJAX请求个数)  
  14.     +3×(100-5×请求方式不是GET的AJAX个数)  
  15.     +3×{DOM元素数量<MaxDOM ?100∶ [99-10×⌈((DOM元素数量-900))/250⌉ ] }  
  16.     +4×(100-5×状态为404的连接个数)  
  17.     +3×[cookie大小不超过1000字节 ?100∶ (99-10×⌊页面cookie的大小/1000⌋ ) ]  
  18.     +3×(100-5×不满足cookie free要求的链接个数)  
  19.     +4×[100-(2×使用hack的filter个数+5×未使用hack的filter个数) ]  
  20.     +3×(100-5×在HTML代码中设定width和height的图片数)  
  21.     +2×[100-(favicon不可缓存或缓存时间小于3600秒 ? 5∶0)-(favicon大小超过2000字节? 5∶0)]  
  22.   
  23. Score = F / 89 

 

Tags: yslow