存档

文章标签 ‘乱七八糟’

SQLite语法 PRAGMA

2009年3月2日 16hot 没有评论

SQLite支持的编译指令(pragma)

PRAGMA命令是用于修改SQlite库或查询SQLite库内部数据(non-table)的特殊命令。PRAGMA 命令使用与其它SQLite命令(e.g. SELECT, INSERT)相同的接口,但在如下重要方面与其它命令不同:

* 在未来的SQLite版本中部分pragma可能被删除或添加,小心使用。
* 当使用未知的pragma语句时不产生报错。未知的pragma仅仅会被忽略,即是说若是打错了pragma语句SQLite不会提示用户。
* 一些pragma在SQL编译阶段生效而非执行阶段。即是说若使用C语言的sqlite3_compile(), sqlite3_step(), sqlite3_finalize() API (或类似的封装接口中),pragma可能在调用sqlite3_compile()期间起作用。
* pragma命令不与其它SQL引擎兼容。

可用的pragma命令有如下四个基本类型:

* 用于察看当前数据库的模式。
* 用于修改SQLite库的操作或查询当前的操作模式。
* 用于查询或修改两个数据库的版本号,schema-version和user-version.
* 用于调试库和校验数据库文件。



PRAGMA命令语法

 

sql-statement ::= PRAGMA name [= value] |
PRAGMA
function(arg)

使用整数值value的pragma也可以使用符号表示,字符串"on", "true",和 "yes" 等同于1,"off", "false",和 "no"等同于0. 这些字符串大小写不敏感且无须进行引用。无法识别的字符串被当作1且不会报错。value返回时是整数。



用于修改SQLite库的操作的Pragma

  • PRAGMA auto_vacuum;
    PRAGMA auto_vacuum =
    0 | 1;

    查询或设置数据库的auto-vacuum标记。

    正常情况下,当提交一个从数据库中删除数据的事务时,数据库文件不改变大小。未使用的文件页被标记并在以后的添加操作中 再次使用。这种情况下使用VACUUM命令释放删除得到的空间。

    当开启auto-vacuum,当提交一个从数据库中删除数据的事务时,数据库文件自动收缩, (VACUUM命令在auto-vacuum开启的数据库中不起作用)。数据库会在内部存储一些信息以便支持这一功能,这使得 数据库文件比不开启该选项时稍微大一些。

    只有在数据库中未建任何表时才能改变auto-vacuum标记。试图在已有表的情况下修改不会导致报错。

  • PRAGMA cache_size;
    PRAGMA cache_size =
    Number-of-pages;

    查询或修改SQLite一次存储在内存中的数据库文件页数。每页使用约1.5K内存,缺省的缓存大小是2000. 若需要使用改变大量多行的UPDATE或DELETE命令,并且不介意SQLite使用更多的内存的话,可以增大缓存以提高性能。

    当使用cache_size pragma改变缓存大小时,改变仅对当前对话有效,当数据库关闭重新打开时缓存大小恢复到缺省大小。 要想永久改变缓存大小,使用default_cache_size pragma.

  • PRAGMA case_sensitive_like;
    PRAGMA case_sensitive_like =
    0 | 1;

    LIKE运算符的缺省行为是忽略latin1字符的大小写。因此在缺省情况下'a' LIKE 'A'的值为真。可以通过打开 case_sensitive_like pragma来改变这一缺省行为。当启用case_sensitive_like,'a' LIKE 'A'为假而 'a' LIKE 'a'依然为真。

  • PRAGMA count_changes;
    PRAGMA count_changes =
    0 | 1;

    查 询或更改count-changes标记。正常情况下INSERT, UPDATE和DELETE语句不返回数据。 当开启count-changes,以上语句返回一行含一个整数值的数据——该语句插入,修改或删除的行数。 返回的行数不包括由触发器产生的插入,修改或删除等改变的行数。

  • PRAGMA default_cache_size;
    PRAGMA default_cache_size =
    Number-of-pages;

    查询或修改SQLite一次存储在内存中的数据库文件页数。每页使用约1.5K内存,它与 cache_sizepragma类似,只是它永久性地改变缓存大小。 利用该pragma,你可以设定一次缓存大小,并且每次重新打开数据库时都继续使用该值。

  • PRAGMA default_synchronous;

    该语句在2.8版本中可用,但在3.0版中被去掉了。这条pragma很危险且不推荐使用,安全起见在该文档中不涉及此pragma的用法。

  • PRAGMA empty_result_callbacks;
    PRAGMA empty_result_callbacks =
    0 | 1;

    查询或更改empty-result-callbacks标记。

    empty- result-callbacks标记仅仅影响sqlite3_exec API函数。正常情况下,empty-result-callbacks标记清空, 则对返回0行数据的命令不调用sqlite3_exec()的回叫函数,当设置了empty-result-callbacks,则调用回叫 函数一次,置第三个参数为0 (NULL).这使得使用sqlite3_exec() API的程序即使在一条查询不返回数据时依然检索字段名。

  • PRAGMA encoding;
    PRAGMA encoding = "UTF-8";
    PRAGMA encoding = "UTF-16";
    PRAGMA encoding = "UTF-16le";
    PRAGMA encoding = "UTF-16be";

    在 第一种形式中,若主数据库已创建,这条pragma返回主数据库使用得文本编码格式,为 "UTF-8", "UTF-16le" (little-endian UTF-16 encoding) 或者"UTF-16be" (big-endian UTF-16 encoding)中的一种。 若主数据库未创建,返回值为当前会话创建的主数据库将要使用的文本编码格式。

    第二种及以后几种形式只在主数据库未创建时有效。这时该pragma设置当前会话创建的主数据库将要使用的文本编码格式。 "UTF-16"表示"使用本机字节顺序的UTF-16编码"。若这些形式在主数据库创建后使用,将被忽略且不产生任何效果。

    数据库的编码格式设置后不能够被改变。

    ATTACH命令创建的数据库使用与主数据库相同的编码格式。

  • PRAGMA full_column_names;
    PRAGMA full_column_names =
    0 | 1;

    查询或更改the full-column-names标记。该标记影响SQLite命名SELECT语句(当字段表达式为表-字段或通配符"*"时) 返回的字段名的方式。正常情况下,当SELECT语句将两个或多个表连接时, 这类结果字段的返回名为 ,当SELECT语句查询一个单独的表时, 返回字段名为。当设置了full-column-names标记,返回的字段名将统一为 不管是否对表进行了连接。

    若short-column-names和full-column-names标记同时被设置,则使用full-column-names方式。

  • PRAGMA fullfsync
    PRAGMA fullfsync =
    0 | 1;

    查询或更改fullfsync标记。该标记决定是否在支持的系统上使用F_FULLFSYNC同步模式。缺省值为off.截至目前(2006-02-10) 只有Mac OS X 系统支持F_FULLFSYNC.

  • PRAGMA page_size;
    PRAGMA page_size =
    bytes;

    查询或设置page-size值。只有在未创建数据库时才能设置page-size。页面大小必须是2的整数倍且大于等于512小于等于8192。 上限可以通过在编译时修改宏定义SQLITE_MAX_PAGE_SIZE的值来改变。上限的上限是32768.

  • PRAGMA read_uncommitted;
    PRAGMA read_uncommitted =
    0 | 1;

    查 询,设置或清除READ UNCOMMITTED isolation(读取未授权的分隔符).缺省的SQLite分隔符等级是SERIALIZABLE. 任何线程或进程可选用READ UNCOMMITTED isolation,但除了共享公共页和schema缓存的连接之间以外的地方也会 使用SERIALIZABLE.缓存共享通过 sqlite3_enable_shared_cache() API开启,且只在运行同一线程的连接间有效。缺省情况下缓存共享是关闭的。

  • PRAGMA short_column_names;
    PRAGMA short_column_names =
    0 | 1;

    查询或更改the short-column-names标记。该标记影响SQLite命名SELECT语句(当字段表达式为表-字段或通配符"*"时) 返回的字段名的方式。正常情况下,当SELECT语句将两个或多个表连接时, 这类结果字段的返回名为 ,当SELECT语句查询一个单独的表时, 返回字段名为。当设置了full-column-names标记,返回的字段名将统一为 不管是否对表进行了连接。

    若short-column-names和full-column-names标记同时被设置,则使用full-column-names方式。

  • PRAGMA synchronous;
    PRAGMA synchronous = FULL;
    (2)
    PRAGMA synchronous = NORMAL;
    (1)
    PRAGMA synchronous = OFF;
    (0)

    查 询或更改"synchronous"标记的设定。第一种形式(查询)返回整数值。 当synchronous设置为FULL (2), SQLite数据库引擎在紧急时刻会暂停以确定数据已经写入磁盘。 这使系统崩溃或电源出问题时能确保数据库在重起后不会损坏。FULL synchronous很安全但很慢。 当synchronous设置为NORMAL, SQLite数据库引擎在大部分紧急时刻会暂停,但不像FULL模式下那么频繁。 NORMAL模式下有很小的几率(但不是不存在)发生电源故障导致数据库损坏的情况。但实际上,在这种情况 下很可能你的硬盘已经不能使用,或者发生了其他的不可恢复的硬件错误。 设置为synchronous OFF (0)时,SQLite在传递数据给系统以后直接继续而不暂停。若运行SQLite的应用程序崩溃, 数据不会损伤,但在系统崩溃或写入数据时意外断电的情况下数据库可能会损坏。另一方面,在synchronous OFF时 一些操作可能会快50倍甚至更多。

    在SQLite 2中,缺省值为NORMAL.而在3中修改为FULL.

  • PRAGMA temp_store;
    PRAGMA temp_store = DEFAULT;
    (0)
    PRAGMA temp_store = FILE;
    (1)
    PRAGMA temp_store = MEMORY;
    (2)

    查询或更改"temp_store" 参数的设置。当temp_store设置为DEFAULT (0),使用编译时的C预处理宏 TEMP_STORE来定义储存临时表和临时索引的位置。当设置为MEMORY (2)临时表和索引存放于内存中。 当设置为FILE (1)则存放于文件中。temp_store_directory pragma 可用于指定存放该文件的目录。当改变temp_store设置,所有已存在的临时表,索引,触发器及视图将被立即删除。

    库中的编译时C预处理标志TEMP_STORE可以覆盖该pragma设置。下面的表给出TEMP_STORE预处理宏和 temp_store pragma交互作用的总结:

    TEMP_STORE PRAGMA
    temp_store
    临时表和索引
    使用的存储方式
    0 any 文件
    1 0 文件
    1 1 文件
    1 2 内存
    2 0 内存
    2 1 文件
    2 2 内存
    3 any 内存

  • PRAGMA temp_store_directory;
    PRAGMA temp_store_directory = 'directory-name';

    查询或更改"temp_store_directory"设置——存储临时表和索引的文件所在的目录。 仅在当前连接有效,在建立新连接时重置为缺省值。

    当改变了temp_store_directory设置,所有已有的临时表,索引,触发器,视图会被直接删除。 建议在数据库一打开时就设置好temp_store_directory.

    directory-name需用单引号引起来。要想恢复缺省目录,把directory-name设为空字符串。例如 PRAGMA temp_store_directory = ''.若directory-name未找到或不可写会引发错误。

    临时文件的缺省目录与主机的系统有关,使用Unix/Linux/OSX系统的主机,缺省目录是如下序列之中第一个可写的 /var/tmp, /usr/tmp, /tmp,current-directory.对于Windows NT,缺省目录由Windows决定,一般为 C:Documents and Settingsuser-nameLocal SettingsTemp. SQLite创建的临时文件在使用完毕时就被unlink,所以操作系统可以在SQLite进程进行中自动删除临时文件。 于是,正常情况下不能通过lsdir命令看到临时文件。



用于查询数据库的schema的Pragma

  • PRAGMA database_list;

    对每个打开的数据库,使用该数据库的信息调用一次回叫函数。使用包括附加的数据库名和索引名在内的参数。第一行用于主数据库,第二行用于存放临时表的临时数据库。

  • PRAGMA foreign_key_list(table-name);

    对于参数表中每个涉及到字段的外键,使用该外键的信息调用一次回叫函数。每个外键中的每个字段都将调用一次回叫函数。

  • PRAGMA index_info(index-name);

    对该索引涉及到的每个字段,使用字段信息(字段名,字段号)调用一次回叫函数。

  • PRAGMA index_list(table-name);

    对表中的每个索引,使用索引信息调用回叫函数。参数包括索引名和一个指示索引是否唯一的标志。

  • PRAGMA table_info(table-name);

    对于表中的每个字段,使用字段信息(字段名,数据类型,可否为空,缺省值)调用回叫函数。



用于查询/更改版本信息的Pragma

  • PRAGMA [database.]schema_version;
    PRAGMA [database.]schema_version =
    integer ;
    PRAGMA [database.]user_version;
    PRAGMA [database.]user_version =
    integer ;

    这两条pragma分别用于设置schema-version和user-version的值。schema-version 和user-version均为32位有符号整数,存放于数据库头中。

    schema- version通常只由SQLite内部操作。每当数据库的schema改变时(创建或撤消表或索引),SQLite 将这个值增大。schema版本在每一次query被执行时被SQLite所使用,以确定编译SQL query时内部cache的schema与编译后的query实际执行时数据库的schema相匹配。使用"PRAGMA schema_version"更改schema-version会破坏这一机制,有导致程序崩溃或数据库损坏的潜在危险。请小心使用!

    user-version不在SQLite内部使用,任何程序可以用它来做任何事。



用于库debug的Pragma

  • PRAGMA integrity_check;

    该命令对整个数据库进行完整性检查,查找次序颠倒的记录,丢失的页,残缺的记录以及损坏的索引。若发现任何问题则返回一形容问题所在的字符串,若一切正常返回"ok".

  • PRAGMA parser_trace = ON; (1)
    PRAGMA parser_trace = OFF;
    (0)

    打开或关闭SQLite库中的SQL语法分析追踪,用于debug.只有当SQLite不使用NDEBUG宏进行编译时该pragma才可用。

  • PRAGMA vdbe_trace = ON; (1)
    PRAGMA vdbe_trace = OFF;
    (0)

    打开或关闭SQLite库中的虚拟数据库引擎追踪,用于debug.更多信息,察看 VDBE文档。

  • PRAGMA vdbe_listing = ON; (1)
    PRAGMA vdbe_listing = OFF;
    (0)

    打开或关闭虚拟机程序列表,当开启列表功能,整个程序的内容在执行前被打印出来,就像在每条语句之前自动执行EXPLAIN. 语句在打印列表之后正常执行。用于debug.更多信息,察看 VDBE文档。

分类: 开发 标签:

一些连接

2009年2月10日 16hot 没有评论
分类: 开发 标签:

2009

2009年1月1日 16hot 没有评论

2008年,已经过去了。

这一年很辛苦,也有很多收获。印证了一份耕耘,一份收获。

从部门经理升级为技术总监,虽然没有直接做开发的工作,而是更多的参与运维方面工作。但是项目方面的进展,也有所收获。

智能DNS产品方面,连续发布了3个版本,从功能和品质方面,都大大的提升了。而且下载次数达4000次,安装使用的用户也越来越多。

在2009年,没有太多豪言壮语,继续默默的努力。相信付出终会有收获的。

分类: 16hot 杂记 标签:

升级服务器

2008年12月29日 16hot 没有评论

终于在今天将服务器的硬件升级好了。

买了近半年了,一直在做稳定测试和系统测试。升级后一切正常。记录一下。

分类: 16hot 杂记 标签:

[业界] 华为没有秘密 任正非没有密码

2008年12月12日 16hot 没有评论

任正非荣膺“2008年度25位最具影响力的企业领袖”终身成就奖,感觉虽然有点迟到,但确实是众望所归。任正非以自己沉默的力量,影响了华为公司,影响了中国的企业和企业家,也正在影响着全球的通讯行业。我们有理由向他表示敬意和献礼,他也有资格获得这一殊荣。

  但是,以本人对他的了解,任正非一如既往地又要使主办单位小小的尴尬一下,他肯定不会出席颁奖大会。

  但有一点是肯定的,任正非会对他的员工讲:“我在技术上、管理上、财务上,基本是个半明白人,处在边学习、边实践的状态。因此,他必须,也只有谦虚地 团结一群人,发挥集体管理的作用去推动企业的发展。我是一个很普通的人,即使有一点影响力,也仅仅在华为内部。”“对外界和媒体的各种议论大家不要太在 乎,还是好好地努力工作。我也一样,也不会背上包袱的,也会像您们一样活泼、轻松、记性不好的,还会继续为公司的未来而努力工作的。”(引自任正非被《时 代周刊》评为2005年度“全球最具影响力的100人”时的内部讲话)

  本人认为,这些话可以作为任正非终身成就奖的获奖感言。

  经过了20年,借着中国改革开放的大潮,任正非领导的华为公司经过艰苦奋斗,在屡战屡败,屡败屡战中搏杀,今天已成为中国企业界的翘楚,成为中国制造 的楷模、典范和标杆,在激烈的市场竞争中华为已脱颖而出,成为国内知名的电信制造商,加入“巨大中华”的行列,而且让其按规模顺序颠倒过来,而且改变了世 界通信制造业的竞争格局。

  今天,华为已经拥有近9万员工,2007年销售规模达到125.7亿美元,超越北电,进入全球通讯设备制造前五强。2008年,预计华为销售额将达到230亿美元(约合1570亿元人民币),同比增长近44%。

  仅从数字上看,华为还很弱小——虽然已经由“土狼”变成了狮子,与那些企业丛林中的巨人相比,还存在着一定的距离,还有更长的路要走。但是,十几年前 任正非所讲的“十年之后,世界通信行业三分天下,华为将占一份”,或许在不远的将来将成为现实。华为董事长孙亚芳女士曾讲:“我们不想成为世界第一,但我 们不得不走在成为世界第一的路上。”

  任正非领导的华为已经成为一种现象。对于华为和任正非,国内学界和企业界给予了很多的关注,从不同角度探讨不可复制的“华为现象”和创造这一现象的企 业家,以便供中国企业来复制和学习,而实际上往往是徒劳无益。华为没有秘密,任正非没有密码。倒是有几组数字值得中国的企业和企业家们深思:

  至少在十年前,任正非就将“我们保证按销售额的10%拨付研发经费,有必要且可能时还将加大拨付的比例”写进了《华为公司基本法》。去年华为以 1365件专利申请数跃居世界总排名的第四位,紧跟松下、飞利浦和西门子之后,成为拥有专利最多的中国企业;华为的销售收入中,有72%来自国际市场,今 年这一比例还将扩大。

可以说,任正非具备了企业领袖所共有的天赋、素质和能力。

  十余年的军旅生涯,给予他的是坚毅、果敢、坚韧、谦恭、责任、执行、务实、使命、奉献、信仰、自律、敬畏、开放和合作;

  二十年的华为管理实践,给予他的是对商业规律与商业模式的领悟,对企业运作与成长规律的深刻思考,对公司内外部环境变化的敏锐感知,对国内外市场与行业发展的正确判断,对客户需求及其变化的准确把握;

  二十年管理华为的实践,任正非系统地思考和梳理,形成了自己的管理哲学和管理理念:坚守均衡、灰色和妥协,关注大势、方向和节奏,坚持不断地自我批 判,信守在商言商和实事求是,追求无为而治,崇尚天道酬勤和艰苦奋斗,坚信“从泥坑里爬起来的人是圣人”、“是太阳总会升起的”、“烧不死的鸟是凤凰 ”;

  几十年的跌宕起伏的人生苦难,给予他的是对人生的顿悟,对人性的深刻把握,对生活和生命的热诚,对事业的执着与偏执,对利益相关者的诚信,对家人和员工的关爱,对自己的持续不断的自我批判;

  几十年孜孜不倦的学习与领悟,给予他的是不断地进步、成长和提升。他是“华为公司进步最快的人”,其成功之道是“读万卷书,行万里路,干一件事 ”。看《莫斯科保卫战》,他悟出的是中层不决策;看《野战排》,他悟出的是不同领导者对于团队的影响作用;看《汉武大帝》,他思考的是如何对待个人的荣 辱;看《千手观音》和《可可西里》,他诠释了华为文化的内涵;听《北国之春》和《喀秋莎》,他想到的是“我们每一个人的成功,都来自亲人的无私奉献,我们 生活、工作和事业的原动力,首先来自妈妈御冬的寒衣,来自沉默寡言的父兄,故乡的水车、小屋、独木桥,还有曾经爱过你但已分别的姑娘……”

  作为企业领袖,任正非的上述特质,可能具有共性,其特性来自于所领导与管理的公司与事业。华为的成长,又反证了其作为企业领袖的巨大影响力。如果说,管理学是人们对企业成功实践的总结,企业领袖则是以其巨大的影响力对企业成功实践的造就。

  在任正非的领导下,华为成为中国高科技企业成长的领先者,其标杆意义在于,探索出一条在中国发展与管理高科技企业的道路,这条路因之由混沌而变得清晰。

  在任正非的领导下,华为成功地探索出有中国特色又与国际接轨的商业模式、经营模式、营运流程、内在机制和管理体系,并创造性地解决了国际先进企业管理模式如何在中国成功落地的课题,实现国外先进管理体系的中国化。

  在任正非的领导下,华为成功地探索出IT企业的企业价值观体系、战略管理体系、研发管理体系、市场营销体系、干部管理体系、人力资源管理体系、财务管控体系、供应链体系。

  在任正非的领导下,华为成功地迈出了由“活下去”到“走出去”,再到“走上去”的惊险一跳,依靠独特的国际化战略,改变行业竞争格局,让竞争对手由“忽视”华为到“平视”华为,到“重视”华为。

  在任正非的领导下,华为成功地探索出有特色管理知识员工、激励与约束知识员工、回报知识员工、分享知识的管理平台,实现了知识资本化和资本知识化的成功结合,体现了知识的价值,开发知识的潜力,提高知识工作者的效率。

  在任正非的领导下,《华为公司基本法》成为改革开放以来第一部企业宪章,不仅引领了中国企业对企业文化建设实践,而且华为的企业文化建设实践为中国企业所效仿。

  在外部人面前,任正非给人的印象肯定是神秘,不接受记者采访,不在电视台露面,不出席各种峰会。《中国企业家》杂志社社长刘东华认为:“任正非几乎是中国最有静气和最有定力的一个企业家。”

 其实任总并不神秘,他的解释是:“我为什么不见媒体,我有自知之明,见媒体说什么,说好恐怕言过其实;说不好别人又不相信,甚至还认为虚伪,只好不见为 好。因此,我才耐得住寂寞,甘于平淡。我知道自己的缺点并不比优点少,并不是所谓的刻意低调。”“外界总喜欢将成绩扣到一个人头上,不然不生动,以虚拟的 方法塑造一个虚化的人。我不认为自己像外界传说的那样有影响力,但是很敬业、无私、能团结人。这些年华为有一点成绩,是全体员工的团结努力,以及在核心管 理团队的集体领导下取得的。只是整个管理团队也很谦虚,于是就把一些虚荣虚拟地加到了我的头上,其实难符。”

  在华为内部,任正非也低调但并不神秘。他是个性情中人,有个性,有喜怒哀乐,有儿女情长;他没有专车,没有专职司机,没有专门的餐厅,每天按时驾私家 车上班,边开车边听四十分钟的外语;身患多种疾病,国内外出差很少带秘书,周末自己拖着行李箱,抱着书在世界各地机场出没;自掏腰包买公司的手机;自签文 件对自己的失误进行惩罚;自动申请降薪;自我稀释股份,让公司85%的员工持股;自愿申请买断工龄,将001的工号变成十万多号。他也曾失败过,也曾痛苦 过,也曾忧郁过,也经常被妖魔化过;这才是一个真实的企业家,一个没有被神化或妖魔化的企业家。

  在刻意或者无意保持低调的同时,任正非以自己的思考、理性、智慧和勤奋,不断地让中国企业界分享着他的思考。《华为的红旗能打多久》、《华为的冬 天》、《北国之春》、《华为的核心价值观》、《在理性与平和中发展》等都成为许多中国企业的管理读本,其中许多名言还被传颂:“什么叫成功?是像日本那些 企业那样,经九死一生还能好好地活着。”“十年来我天天思考的都是失败,对成功视而不见,也没有什么荣誉感、自豪感,而是危机感……”

  至于许多人关注的华为是否会上市,任正非从没有排斥过。正因为他对资本市场有着深刻的理解,所以他对此保持高度的审慎和敬畏。当看到一个个高扬资本运 作大旗,最终被资本运作得满地找牙的企业时,我们能够理解任正非的用心良苦。笔者倒不希望华为短期上市,一个非上市的、中国的、民营的、高科技的企业(而 不是“集团”),如果能早日成为世界级企业,或许更有非典型意义。

  至于华为的接班人问题,任正非也并没有回避。其实早在十几年前,他就深思熟虑过这个问题,并在《华为公司基本法》第一百零二条有明文规定。笔者认为,选择接班人并不重要,重要的在于缔造企业优秀接班人的生成机制。华为的问题不是人选太少,而是可选择的人太多。

  任正非和华为的未来还会像以往一样,充满艰辛与坎坷,还会历经磨难,但对于经历过IT严寒冬天并到经受十余年严冬的日本取过经的企业家来讲,相信他一定会从容淡定地应对;对于一个以活下去为目标的怕死的企业来讲,相信它一定会好好活着,一定会长寿。

  (本文作者为中国人民大学公共管理学院博士生导师、知名管理学家)

  任正非,沙漠里的孤独“狐狸”

  在对改革开放30年的总结关口上,

  《中国企业家》评价任总,这是相当有意义的 文 | 深圳万科股份有限公司董事长 王石

  《中国企业家》今年把任总评为“终身成就奖”,我非常高兴。

  这个奖对任总来说晚吗?在2008年不合时宜吗?我觉得不存在这些问题。作为2007年“终身成就奖”得主,我对这个奖的理解是,我们不是评圣人榜,也不是评一个劳资关系大奖,而是评中国企业家在对30年改革开放的贡献奖。

  至于说任总一直有危机感、“过冬论”,因此,这个奖在今年冬天是不是更有意义?我觉得,有危机感是很多企业家的经营风格,“终身成就奖”并不一定凸显这一点。

  我感受最深的,华为对新一代企业、尤其是民营企业来说,是他的经营模式,在国际舞台上叫板,他完全是硬碰硬打出去的。中国面临改革开放30年后的大转 型,我们看华为做技术转型实际上做了一个样本,它已经改变了简单的来料加工、赚血汗钱的商业模式,它是有技术含量的,而且发挥了中国人的聪明、低成本优 势,我觉得肯定任总的价值点在这里。实际上万科也正在学习华为的这种模式,从营销生产型向研发技术型转变。

  在对改革开放30年的总结上,《中国企业家》评价任总,这是相当有意义的。我们转型往哪里走?华为做了非常好的样本,这是我非常非常佩服的地方。只不过在这个节骨眼上,全球金融危机带来的调整跟困难的时候,显得更危机性一些,那只是巧合。

  评价30年的贡献,重要的是他30年来做了什么。比如牟其中,他在某个历史阶段扮演了角色,但显然我们对任总这样的一个奖励、肯定,我觉得前瞻未来他的价值更大。

  我跟任总交流应该说不是很多,也就是两三年见一次面,吃一顿饭。任总说话表现是很随和,但实际上话里有不露声色的很强硬的东西和坚持不变的东西。这点 是我印象非常深的。另外他为人低调,这恐怕是40年代末50年代初出生的一代人的共同特征,像柳传志、张瑞敏、鲁冠球——我是个例外了,比较张扬、彰显。 任总那就更像沙漠上一只孤独的狐狸了。(或者狼?)他自己说是狼,但我觉得狐狸更确切。

  他本身是很愿意跟人交流的,从谈吐当中可以感觉到他国际商界政界的交际面很广。他在生活上是很有品质的,比如他对工作环境的营造是相当有品位的。华为 不是外界想像的那样苦兮兮的。我去各地探险,在南美、非洲的机场经常遇到华为的员工,他们不是工作而是度假。我跟任正非一起吃饭聊天,相当多的由头,不是 我找他,而是他找我——不是向我请教,他是买万科的房子啊,谈如何营造他们生活的环境,满足配套要求。

  我也希望你们这次借着任总的这个荣誉,还原一个真实、深入的华为和任正非。

来源:中国企业家网

分类: 乱七八糟 标签:

定价的7大错误

2008年10月16日 16hot 没有评论

  文/Brad Sugars

  任何公司面临的最大挑战之一就是定价。

  这规律不仅适用于创业企业,也适用于成熟企业,尤其在那些利润率低、竞争激烈的行业。多数定价问题的共同核心是风险:价格设定太高的风险——可能会失去潜在的客户;价格设定太低的风险——利润减少了。

  这种“定价矛盾”驱使多数企业家采取折扣策略。然而,多数情况下的风险可以通过获取更多的信息来消除。通常,你了解得越多,可能承受的风险就越少。从这个角度上说,定价的实质就是尽可能多地获得信息:你所在的市场、客户以及决定利润的企业内部数据。

  生意上没有秘密,只有你还不知道的信息。说到定价问题,以下是在创业阶段避免犯错的7种方法。如果你能避免这些错误,就不仅能在竞争中领先,还能超越多数其他企业。

  1.价格太低,总在减价:对有些公司来说,这并不是错误,这完全是战略,但并不是非常好的战略。价格总是走低可能会获得较高的营业收入,但也可能会损失你的利润底线,这关系到企业的生存问题。你需要平衡利润和价格的关系。

  2.所有产品保持同样的毛利率:没有规则说所有的产品都需要同样的毛利率。事实上,周转慢的项目需要更高的毛利率。如果销量很大那么还可以用低些的毛利率。即使是这样,你还是应该寻找既能增加销量又能提高毛利率的方式。

  3.不理解毛利与加价率的差别:毛利率总是基于销售价格。而加价率总是基于进货成本。我曾有一个客户不理解其中的差别,以100%的加价率报出了一系列产品的价格,然后又减掉50%达成销售。最终的结果?实际上这家商店基本上是以成本价销售。别犯同样的错误。

  4.总是遗漏某些成本因素:为了正确地定价,需要识别每一项成本。即使是微不足道的项目,像信用卡处理费,通常也会增加每笔交易1%~2%的成本。其它的项目,像送货或运输成本,也能在不知不觉中增加成本。出售商品的成本对你的生存底线有着重大影响。

  5.与竞争者采取类似策略:不要跟风竞争,多做点功课,发现你真正能为顾客提供的价值。然后根据这种价值给商品定价。这样做你就处于非常有利的位置,能抵御竞争保持价格。只要你有了自己的充足“理由”,你的报价就值这个价。

  6.基于销售价格及利润百分比设定销售佣金:对于使用基于佣金制度的销售队伍的公司来说,这和毛利率/加价率之间的区别是类似的。采用何种基数来计算佣金将直接影响公司的利润。利润是惟一重要的数字。从营业收入中支付佣金意味着你将公司的部分利益让给了销售人员。

   7.打折没有增加价值,只是减少了利润价值:打折10%,通常可能需要多销售50%的产品才能保持利润底线。在打折的游戏中成本也会增加,所以这样做的 公司差不多是将自己驱逐出商场。不要在交易中削减要价,你应该问自己是否有增加产品或服务价值的方法。这种“附加值”意味着你能“放弃”一些不能产生利润 的东西。正确实施后,它也能改善客户体验。好体验是获得回头客的关键,利润也会随之增加。

  熟练处理所谓的“定价矛盾”,你就会对所在的领域得心应手。一旦你处理得好,你就会对自己产品和服务的价值有信心,而竞争对手则往往会急于放弃价格底线。       (译/梁晓平)

分类: 乱七八糟 标签:

李一男2003年在港湾给开发人员培训时的语录

2008年10月9日 16hot 没有评论

【1】好好规划自己的路,不要跟着感觉走!根据个人的理想决策安排,绝大部分人并不指望成为什么院士或教授,而是希望活得 滋润一些,爽一些。那么,就需要慎重安排自己的轨迹。从哪个行业入手,逐渐对该行业深入了解,不要频繁跳槽,特别是不要为了一点工资而转移阵地,从长远 看,这点钱根本不算什么,当你对一个行业有那么几年的体会,以后钱根本不是问题。频繁地动荡不是上策,最后你对哪个行业都没有摸透,永远是新手!

【2】可以做技术,切不可沉湎于技术。千万不可一门心思钻研技术!给自己很大压力,如果你的心思全部放在这上面,那么注定你将成为孔乙己一类的人物!适可而止为之,因为技术只不过是你今后前途的支柱之一,而且还不是最大的支柱,除非你只愿意到老还是个工程师!
 
【3】 不要去做技术高手,只去做综合素质高手!在企业里混,我们时常瞧不起某人,说他“什么都不懂,凭啥拿那么多钱,凭啥升官!”这是普遍的典型的工程师的迂腐 之言。8051很牛吗?人家能上去必然有他的本事,而且是你没有的本事。你想想,老板搞经营那么多年,难道见识不如你这个新兵?人家或许善于管理,善于领 会老板意图,善于部门协调等等。因此务必培养自己多方面的能力,包括管理,亲和力,察言观色能力,攻关能力等,要成为综合素质的高手,则前途无量,否则只 能躲在角落看示波器!技术以外的技能才是更重要的本事!!从古到今,美国日本,一律如此!

【4】多交社会三教九流的朋友!不要只和工程师 交往,认为有共同语言,其实更重要的是和其他类人物交往,如果你希望有朝一日当老板或高层管理,那么你整日面对的就是这些人。了解他们的经历,思维习惯, 爱好,学习他们处理问题的模式,了解社会各个角落的现象和问题,这是以后发展的巨大的本钱,没有这些以后就会笨手笨脚,跌跌撞撞,遇到重重困难,交不少学 费,成功的概率大大降低!

【5】知识涉猎不一定专,但一定要广!多看看其他方面的书,金融,财会,进出口,税务,法律等等,为以后做一些积累,以后的用处会更大!会少交许多学费!!

【6】 抓住时机向技术管理或市场销售方面的转变!要想有前途就不能一直搞开发,适当时候要转变为管理或销售,前途会更大,以前搞技术也没有白搞,以后还用得着。 搞管理可以培养自己的领导能力,搞销售可以培养自己的市场概念和思维,同时为自己以后发展积累庞大的人 脉!应该说这才是前途的真正支柱。。?

【7】 逐渐克服自己的心里弱点和性格缺陷!多疑,敏感,天真(贬义,并不可爱),犹豫不决,胆怯,多虑,脸皮太薄,心不够黑,教条式思维。。。这些工程师普遍存 在的性格弱点必须改变!很难吗?只在床上想一想当然不可能,去帮朋友守一个月地摊,包准有效果,去实践,而不要只想!不克服这些缺点,一切不可能,甚至连 项目经理都当不好–尽管你可能技术不错!

【8】工作的同时要为以后做准备!建立自己的工作环境!及早为自己配置一个工作环境,装备电 脑,示波器(可以买个二手的),仿真器,编程器等,业余可以接点活,一方面接触市场,培养市场感觉,同时也积累资金,更重要的是准备自己的产品,咱搞技术 的没有钱,只有技术,技术的代表不是学历和证书,而是产品,拿出象样的产品,就可技术转让或与人合作搞企业!先把东西准备好,等待机会,否则,有了机会也 抓不住!

【9】要学会善于推销自己!不仅要能干,还要能说,能写,善于利用一切机会推销自己,树立自己的品牌形象,很必要!要创造条件让 别人了解自己,不然老板怎么知道你能干?外面的投资人怎么相信你?提早把自己推销出去,机会自然会来找你!搞个个人主页是个好注意!!特别是培养自己在行 业的名气,有了名气,高薪机会自不在话下,更重要的是有合作的机会…

分类: 乱七八糟 标签:

docbook经验记录

2008年9月29日 16hot 没有评论

今天学到一点docbook经验:

(1)一个比较全面的docbook样式指引: DocBook XSL: The Complete Guide http://www.sagehill.net/docbookxsl/index.html

(2)如果图片过大,超出PDF右边界,有时候可以简单地设置图片居中让图片显示全:

<imagedata fileref="images/status/cs_status.png" align="center" />

或者更好的办法:

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE 对任何会超过 PDF 宽度的图片都可以这样把图片限制在宽度内 :

<imagedata fileref="images/api_jbpm.png" align="center" width="100%" scalefit="1" />

 

(3)自定义表格宽度: colwidth="1*"表示此column为标准长度1倍,colwidth="4*"表示此column为标准列长度的4倍:

Xml代码 
  1. <title>状态变化表</title>  
  2. <table>  
  3.  <tgroup cols="3">  
  4.   <colspec colnum="1" colname="col1" colwidth="4*" />  
  5.   <colspec colnum="2" colname="col2" colwidth="6*" />  
  6.   <colspec colnum="3" colname="col3" colwidth="1*" />      
  7.   <thead>  
  8.    <row>  

 

 

分类: 乱七八糟, 开发 标签:

docbook使用教程

2008年9月29日 16hot 没有评论

使用Docbook发布文档,需要安装以下的工具:
*DocBook DTD
*DocBook XSL 样式单
*XSLT处理程序
*XSL-FO处理程序

下面详细介绍各个工具的安装。

1.安装DocBook DTD

Docbook DTD可以到OASIS的网站上下载(http://www.oasis-open.org/docbook/xml/),在这里你可以找到zip格式的压缩包。目前的最新版本是4.2。

事实上可以不下载Docbook DTD。如果你的文档DTD声明这样写:

<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">

根 据这样的定义,大部分XML处理器能够从网络上获取DTD。这样做的好处是编辑的Docbook文档移植性好,可以在没有安装Docbook DTD的机器上使用。不过由于Docbook DTD比较庞大,通过网络获取DTD会影响处理速度,在低速网络或者网络比较糟糕的情况下,影响尤为显著。

如果选择使用本地DTD,文档的DTD引用应该这样写:

Linux:
<!DOCTYPE book SYSTEM "/usr/share/docbook-4.2/docbookx.dtd">

Windows:
<!DOCTYPE book SYSTEM "file:///C:/xml/docbook42/docbookx.dtd">

Docbook提供了一种方式,让用户可以使用相同的DTD声明,但可以在使用网络获取DTD和使用本地DTD之间切换,同时拥有两者的优势。这就是catalog文件的作用。典型的catalog的声明如下:

<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<group id="DocbookDTD" prefer="public">
<system
systemId="http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
uri="file:///usr/share/xml/docbook42/docbookx.dtd"/>
</group>
</catalog>

这个声明把网络DTD映射到本地DTD。如果使用支持Catalog的XSLT Processor,它首先会查找本地文件,如果本地文件不存在,再查找网络。

2.安装Docbook XSL样式单

http://docbook.sourceforge.net上可以下载到Docbook XSL样式单,目前最新的版本是1.67.2。

解压之后,有几个比较主要的目录:
*common – 包含的是公用的模块,诸如语言之类的文件都在这里。
*extensions – 针对特定的XSLT Processor编写的扩展代码。
*fo – 生成XSL-FO文件所需的XSL样式单。
*html – 生成HTML文件所需的XSL样式单。
*images – 生成文档时所需要的图片。
*doc – 有关XSL样式单的文档,同样是Docbook文档。

其他还有像htmlhelp之类的目录,但不是生成HTML或XSL-FO所必须的。

3.安装XSLT Processor

目前有许多免费的XSLT Processor,最常用的是
*Saxon – 使用Java实现,http://saxon.sourceforge.net/
*Xalan – 有Java和C++版本,http://xml.apache.org/xalan-j/index.html
*xsltproc – 使用C实现,是最快的处理程序,http://xmlsoft.org/XSLT/

因为Saxon和Xalan都有Java版本,所以按照一般的Java程序的安装方式安装即可。下面介绍xsltproc的安装,因为它速度快,是我比较喜欢的处理程序。

如果你使用windows平台,那么你有两个方法可选:

*第一,直接下载为windows平台预编译的版本,可以在
ftp://ftp.zlatkovic.com/libxml/
上找到。你需要下载libxml, libxslt, 和iconv,它们都是zip格式,解压之后,在环境变量PATH中添加xsltproc.exe和.dll文件的路径。

如果你不想编辑环境变量,一个简单的办法是把下面这些文件复制到C:WindowsSystem32:
libxslt.dll
libxml2.dll
libexslt.dll
iconv.dll
xsltproc.exe

这样在命令行就可以直接找到这些文件了。完成之后,运行
xsltproc -version
打印出版本号则表明完成安装。

*第二,在Cygwin下安装,这是我选择使用的方式。Cygwin是一个在Windows下模拟Linux Shell的应用程序。如果你喜欢以Linux命令的方式来使用xsltproc,可以到
http://www.cygwin.com/
下载Cygwin安装程序。Cygwin的是通过网络安装的,首先你从它提供的包列表中选择libxslt,然后安装程序会根据依赖关系自动选择libxml2,确定之后,安装程序下载并安装xsltproc。完成安装之后,你就可以运行
xsltproc -version
来检查是否安装成功。

*第三,如果使用Linux,很有可能系统已经安装了xsltproc。运行
xsltproc -version
检查一下是否已经安装。如果运行命令失败,或者版本太老,那么访问下面两个URL获取最新的RPM包:
http://rpmfind.net/linux/rpm2html/search.php?query=libxml2
http://rpmfind.net/linux/rpm2html/search.php?query=libxslt

然后切换到root权限,安装新的包:
rpm -Uv libxml2-2.6.17-2.i386.rpm
rpm -Uv libxslt-1.1.12-4.i386.rpm

完成之后,就可以运行
xsltproc -version
检查安装是否完成。

安装之后,就可以使用xsltproc来生成HTML或者XSL-FO文件。

譬如,下面是根据Docbook文档生成HTML的例子:
xsltproc –output myfile.html docbook-xsl/html/docbook.xsl myfile.xml

或者根据docbook文档生成XSL-FO文档的例子:
xsltproc –output myfile.fo docbook-xsl/fo/docbook.xsl myfile.xml

http://xmlsoft.org/XSLT/xsltproc2.html上列出了所有xsltproc的命令行参数,或者直接运行
xsltproc也会打印出参数列表。

如果你只要发布HTML文档,那么到此为止。如果你还想发布PDF或是PS文档,那么需要安装XSL-FO处理程序。

4. 安装XSL-FO处理程序

XSL-FO处理程序根据XSLT处理程序生成的XSL-FO文件生成PDF或者PS文件。目前可供选择的XSL-FO处理程序远不如XSLT处理程序那么多,这是因为:
a. XSL-FO标准比XSLT标准的制订晚两年;
b.XSL-FO标准及其庞大而复杂,该标准的作者也发现其实现上的难度,从而将该标准分为基本、扩展和完整三个级别。

现在可用的免费的XSL-FO处理程序有:

*FOP – 来自Apache XML项目(http://xml.apache.org/fop/)。目前最新的版本是0.20.5,还在开发当中,还有很多特性不支持,不过已经可以满足一般的使用。

*PassiveTeX – 来自Sebastian Rahtz (http://www.tei-c.org.uk/Software/passivetex/)一款基于TeX的XSL-FO处理程序。同样也在开发中,较FOP要复杂的多。

另外有一些商业产品可供选择,可能生成的文档质量要比开源代码好,譬如:

*XEP(http://www.renderx.com)

*XSL Formatter(http://www.antennahouse.com)

下面介绍如何安装FOP。

4.1.首先需要安装JDK,这个不必多说。

4.2. 到http://www.apache.org/dyn/closer.cgi/xml/fop/下载FOP,可以选择tar或者zip压缩包。下载之后解压到本地。

4.3. 下载图形代码库。FOP自己不支持PNG之类的图片,如果在你的文档里会涉及到图片,那么需要下载额外的代码库。可以选择JAI(http://java.sun.com/products/java-media/jai/current.html),或者Jimi(http://java.sun.com/products/jimi/)。0.20.5之前的版本只能使用Jimi。下载之后,将jai_core.jar和jai_codec.jar(JAI),或者JimiProClasses.jar(Jimi)复制到FOP安装目录的lib目录下,然后在fop.bat(Windows平台)中添加

set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%jai_core.jar
set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%jai_codec.jar
或是
set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%JimiProClasses.zip

如果使用fop.sh(Linux平台),会自动搜索。

4.4. 添加扩展代码。如果Docbook XSL样式单有针对FOP的扩展代码(目前没有),像上面一样把它们添加到FOP安装目录下lib目录。

现在就可以使用FOP来生成PDF文档了。FOP提供两个脚本fop.bat(Windows平台)和fop.sh(Unix和Linux平台)以方便使用。生成PDF的命令行如下:
Linux或Unix:
fop.sh -xsl /docbook-xsl/fo/docbook.xsl -xml myfile.xml -pdf myfile.pdf

Windows:
fop.bat -xsl /docbook-xsl/fo/docbook.xsl -xml myfile.xml -pdf myfile.pdf

在处理过程中,可能会提示某些属性不支持或尚未实现,不用理会这些提示,因为FOP仍处于开发中,这并不影响生成PDF文档。

到此,一个Docbook发布系统配置完成,并可以用来发布文档了。你完全可以在Linux上编写任务,通过该系统自动发布技术文档。

分类: 乱七八糟, 开发 标签:

qemu on freebsd

2008年9月23日 16hot 没有评论

http://wiki.freebsd.org/qemu

分类: 乱七八糟, 开发 标签: