印度软件开发
在工作中,接触到印度软件公司开发出来的软件:
整个体系架构非常清晰,按照我们的要求实现了全部功能,而且相当
稳定。但是打开具体的代码一看,拖沓冗长,水平不咋样。我们自己的一
些程序员就有怪话了,说他们水平真低。但是!印度人能够把软件整体把
握得很好,能够完成软件,并得到相当好的设计文档。
而中国人在那里琢磨数据结构、算法,界面人员就还没编码就想着是
Outlook式的还是Visual Studio式的界面。到最后就成为Code高手,对某
些特定的开发工具精通,但是就是不能保证能够把一个软件稳当、完整的
开发出来。
举个简单的例子:
软件中需要一个列表,用来表示我们处理的事务。该类表在业务繁忙
的时候将变得很大。中国人就用双向链表,抱着《数据结构》书在那里写
链表的类。印度人开了一个大数组,然后就开始干。为什么印度人不用链
表,他们说:
1.你们给出的设备(小型机),最少具备512M内存,浪费一些没有什
么。
2.数组方式访问方便、效率高。
看出了一拿到东西就吭哧吭哧作Code,和好好进行软件分析的不同了
吗?正好前几天我有几个同事从印度回来和我们交流,那家公司是CMM4级
公司。我感受的几点:
1.流程重于项目
2.QC(就是QA)独立于研发部门,专门检查研发部门的开发流程是不
是按照既定流程走。如果QC觉得流程不对,他会直接上报高层,项目肯定
就此停止。
3.所谓的项目经理(PC)一般也是从编码人员升上来的,并不是所谓
的不懂技术,一般都至少有四年以上的经验
4.PC主要就是制定开发计划,负责协调,填写各种表格。
5.所有的东西(包括草稿)都有文档。
6.详细文档要求达到只有这个文档就可以编码的程度,一般写文档时
间占60%,编码时间极少
7.有各种详细的review(同行评审),项目组内的,项目组之间的,
客户的……
8.计划很详细,的确能达到小时级,但是实际情况还是误差比较大,
所以他们也有加班。
先学习UML和Rose以及RUP,不要总是要找着证据。在中国的软件开发
水平下,很难给你一个好的例子,OK?中国人总是要看到一个东西有了试
验田,而且稻子长得好,才换稻种。要知道在国外上述的软件开发模式的
应用,大可以看看 Rational网页上的story。Just do it!一句话,中国
的软件开发水平低得很。赶不上印度人,印度的软件公司可以让高中生编
代码,它的软件工程水平可想而知。
当然,你如果是个很牛的程序员。估计够呛,因为中国的气氛中,很
牛的程序员都很难接受软件工程的。你可以测试一下自己,看看自己适不
适合现在学习软件工程:
1.你是不是不能忍受一个编程序不如你的人做你的项目经理?
2.你是不是觉得你的老板对客户吹牛皮、夸大自己而感到不舒服?
3.你是不是一个拿到一个需求脑袋里第一念头就是如何实现的人?
4.你是不是很崇拜Stallman,Linus,很讨厌Microsoft?
5.你是不是曾经在深夜编码的时候,突然感觉到一种乏味,对Code的
生涯感到一种无趣?
我们现在处于深深的自卑当中,感到中国的软件工程水平的低下已经
是牵涉到民族劣根性的问题了。
1.他们的软件教育水平:我们招聘印度人,给应聘者出了一份与国内
差不多的试卷,有基础概念和编程题目。等到他们完成后,我们这些中国
的自认高手惊呆了!他们的编程题目简直象是抄袭的??程序结构,注释,
变量命名就不说了吧,全部都是极其类似!
反观中国的牛人、高手,每个人有自己的一套。到了新的岗位,先把
前任的程序贬损一通,然后自己再开发更多的问题的代码来代替。我的公
司统计,一个软件中有4个以上CSocket版本,每个人都觉得别人做得差,
自己再搞一套。中国人,就是这个样子,还会辩解说“我们这样有创造
性”。其实软件发展,早就走过了求伯君那个编码英雄的年代,程序员已
经是个坐办公室的蓝领了。你具备拧好一个螺丝钉的能力就可以了,Code
是最低级的事情了。
2.他们许多公司的项目经理根本就不懂技术。中国的项目经理如果不
能在技术上压服下属,那么下属将与他搞鬼,越是高手越喜欢搞鬼,根本
不知道作软件的终极目的是从别人兜里掏钱,而在内部搞不团结。技术高
手都会纠集一些对他技术上崇拜的菜鸟,与管理层作对。
而印度的软件经理根本就不懂正在做的东西,许多甚至直接就是MBA,
或者是领域专家(工业设计、地理专家等),而不是编码的专家。但是却
能够领导大群素质良好的程序员把工作做好,没有内部不团结的情况。许
多印度的程序员加入一个公司很长时间,都不知道自己整天编的代码是干
什么用的。给他们的任务可能就是一个函数的声明以及该函数要实现的功
能。我们呢?
3.他们的编程人员的流动率达到 30%!他们的编程人员流动率(包括
内部项目之间的流动)高达 30%,可以想见他们的文档水平如何。他们的
产品不依赖任何一个人,谁都可以立即辞职,产品的开发还是会正常进行。
而中国,是老板怕总工。技术骨干拥兵自重,抗拒管理。任何制定好的计
划,都有可能被技术人员推翻或者跟你消极怠工。
4.他们的开发计划能够做到小时级别。如果一个印度公司的项目经理
没有上班,那么他的下属将可能不知道作什么。他们的计划一般都定到天,
每个基层开发人员每天的工作量就是 8小时。而我们能够给出月度计划的
公司就很少,而给出的月度计划要么不可能实现,要么就可能被取消。开
发人员被初略的给个任务,他在月初,可以慢慢琢磨是做成什么样子,然
后上上网,聊聊天。到了月中和月末,就开始熬夜编码。
看到每年,从各大高校不尽牛人滚滚来,我们是不得不要召人,同时
又是不抱希望。我公司现在有意以后将核心软件开发外包给印度公司,中
国人?做做界面吧,中国人做界面会极尽奇技淫巧,搞得花里胡哨的。
BTW ,我公司非外企,大家不要误会我们有什么种族歧视。但是我们现在
就是对自己歧视,自卑得很。中科院那么多研究院,连个能用的操作系统
都搞不定。
北大开发一些东西,比如什么青鸟CASE,就是给一帮人评职称的。杨
芙清院士整天搞来搞去,搞出了什么东西?B大,T大的人最难管理,牛得
看不见人。中国的程序员骂微软,追 Linux是全世界最狠的,可是我们除
了汉化Linux,做了什么东西出来。CDE 是瑞典人写的,Linus是芬兰的,
GNome是墨西哥人写的。哎,我们曾经是多么的瞧不起印度人。
Terrorist Threat for Americans in Guangzhou
November 13, 2005
The United States Government has received credible information that a terrorist threat may exist against official U.S. Government facilities in Guangzhou. This threat also may exist for places where Americans are known to congregate or visit, including clubs, restaurants, places of worship, schools or outdoor recreation events.
American citizens in south China are advised to be aware of their surroundings and remain alert to possible threats. Americans living or traveling in China are encouraged to register with the U.S. Consulate General in Guangzhou through the State Department's travel registration website, https://travelregistration.state.gov/. By registering, American citizens make it easier for the Consulate to contact them in case of emergency.
U.S. citizens planning to travel to China should consult the Department of State's country-specific Public Announcements, Travel Warnings, Consular Information Sheets, the Worldwide Caution Public Announcement and other information, available at http://travel.state.gov/. Up-to-date information on security conditions can also be obtained by calling 1-888-407-4747 in the U.S. and for callers outside the U.S. and Canada a regular toll line at 1-202-501-4444.
American Citizen Services
United States Consulate General Guangzhou
5/F Tianyu Garden (II Phase)
136-142 Lin He Zhong Lu
Tian He District, Guangzhou
Tel: (86-20) 8518-7605 Fax: (86-20) 3884-4410
Email: guangzhouacs@state.gov
http://www.usembassy-china.org.cn/guangzhou
资、薪金所得的个人所得税按超额累进税率来计算:
1.计算出你的 月工资、薪金所得。
2.月应纳税所得额 = 月工资、薪金所得-800(元)
(注:北京、上海为减去1000元,深圳为减去1600元。)
3.月应纳税额 = 月应纳税所得额×适用税率-速算扣除数
个人所得税税率表(工资、薪金所得适用)
级数 全月应纳税所得额 税率(%) 速算扣除数(元)
1 不超过500元的 5 0
2 超过500元至2000元的部分 10 25
3 超过2000元至5000元的部分 15 125
4 超过5000元至20000元的部分 20 375
5 超过20000元至40000元的部分 25 1375
6 超过40000元至60000元的部分 30 3375
7 超过60000元至80000元的部分 35 6375
8 超过80000元至100000元的部分 40 10375
9 超过100000元的部分 45 15375
几种不同的个人所得税计算方法
来源: 亚太经济时报
在广州市某企业打工的大学毕业生小王最近有点烦:几个月前,他和同学小张同时应聘现在他们工作的这家企业,身份都是临时工,协议中的月工资均为3000元,但每个月实际拿到手的,小张为2885元,他却只有2428元。为什么同样的工资,实际所得却会不一样呢?
小王说,他一开始还以为是自己工作做得不如小张,公司才扣了自己的钱,所以也不好意思去问。但几个月后,他感觉自己的业绩明显比小张好很多,相信当月的工资应该比小张高些,起码也应该持平。但是两人一对帐,小王的还是2428元,小张也还是2885元,只是奖金有些差别,小王的要多一些。小王这时觉得,自己的工资比小张少不是因为业绩,他怀疑公司没按当初商定的协议办事。
当小王到公司财务部询问详情时,才知道自己跟小张实际到手的工资有差别,主要是因为他们跟公司签订了不一样的合同。小张跟单位签订的是为期一年的劳动合同,属于有固定雇佣关系的合同工,而小王只是跟单位达成口头协议,属于非雇佣关系的临时人员。对小张,公司按照税法上“工资薪金所得”的相关规定扣缴个税,对小王,公司是按“劳务报酬”的相关规定来计算个人所得税,所以他们两人实际的税后所得会不一样。
其实,这种情况几乎家家公司都有,每位工薪阶层都有可能碰到。如果不想因为合同问题导致自己缴纳更多的税,就请大家仔细看看以下常见的三种个人所得税的计算方法,自己有个小算盘,以免吃了哑巴亏。
工资:月入1600不上税
广州个人所得税起征点自2004年1月起调至1600元。依照新规定,纳税人每月取得工资就先减去个人的基本养老保险金、医疗保险金、失业保险金及按省政府规定标准缴纳的住房公积金,再减去费用扣除额1600元/月,为应纳税所得额。应纳税所得额按九级超额累进税率计算。
计算公式:应纳个人所得税税额=应纳税所得额×适用税率-速算扣除数。
其中,速算扣除数是按全额累进税率计算的税额与按超额累进税率计算税额之间的差数,在税率表上是常数。(附表)
年终奖:工资不同算法两种
现在的公司到年底大都会发放年终奖,这其中的算法又会因工资不同有异。个人取得全年一次性奖金(包括年终加薪)的,分两种情况计算缴纳个人所得税:一是个人当月工资、薪金所得高于(或等于)税法规定的费用扣除额。其计算方法是用全年一次性奖金总额除以12个月,按其商数对照工资、薪金所得项目税率表,确定适用税率和对应的速算扣除数,计算缴纳个人所得税。
计算公式:应纳个人所得税税额=个人当月取得全年一次性奖金×适用税率-速算扣除数。
二是个人当月的工资、薪金所得低于税法规定的费用扣除额,其计算方法是用全年一次性奖金减去“个人当月工资、薪金所得与费用扣除额的差额”后的余额除以12个月,按其商数对照工资、薪金所得项目税率表,确定适用税率和对应的速算扣除数,计算缴纳个人所得税。
计算公式:应纳个人所得税税额=(个人当月取得全年一次性奖金-个人当月工资、薪金所得与费用扣除额的差额)×适用税率-速算扣除数。
由于这种计算方法是一种优惠,在一个纳税年度内,对每一个人,该纳税法只许采用一次。
劳务报酬:稿费属特例
劳务报酬所得是指个人从事设计、装璜、影视、广告、经纪服务、代办服务及其它劳务的所得。劳务报酬所得的应纳税所得额为:每次劳务报酬收入不足4000元的,用收入减去800元费用;每次劳务报酬收入超过4000元的,用收入减去收入额的20%。劳务报酬所得适用20%的税率。
计算公式为:应纳个人所得税税额=应纳税所得额×20%;
对劳务报酬所得一次收入奇高(应纳税所得额超过20000元)的,要实行加成征收办法,具体是:一次取得劳务报酬收入,减除收入的20%后的余额(即应纳税所得额)中超过2万元、不足5万元的部分,按照税法规定计算出的应纳税额,加征五成;超过5万元的部分,加征十成。
另外,兼职中的稿酬所得执行特殊纳税标准。其虽然亦适用20%的比例税率,但可以免纳30%的税额。
计算公式为:应纳个人所得税税额=应纳税所得额×适用税率×(1-30%)。
作者:黄叶
postgresql的好用不亚于mysql,下文介绍了几种编程工具与postgresql的交互。
1.C操作postgreSql
程序:
/*程序在redhat6.0上调试通过
*该程序使用pgsql的内部函数实现数据库的一般功能
*这里create,insert,select,update,drop几个最常用的SQL语句
*具体还有些更强大的功能,如阻塞等,需要进一步研究
*详细资料可以查看参考手册,那边有所有的函数调用*/
/*头文件*/
#include
#include
main() {
char *pghost,
*pgport,
*pgoptions,
*pgtty;
char *dbName;
int nFields;
int i, j;
PGconn *conn;
PGresult *res;
/*
* 程序开头需要设定连接到数据库服务器的一些参数,如果设置值为NULL,
* 则使用环境变量中设置的缺省值。
*/
pghost = NULL; /* 服务器的主机名 */
pgport = NULL; /* 服务器端口 */
pgoptions = NULL;/* 附加的功能参数 */
pgtty = NULL; /* 服务器的调试tty */
dbName = "mytest"; /* 要操作的数据库名 */
/* 连接数据库服务器*/
conn = PQsetdb(pghost, pgport, pgoptions, pgtty, dbName);
/* 检查连接是否成功 */
if (PQstatus(conn) == CONNECTION_BAD)
{
fprintf(stderr, "Connection to database '%s' failed.", dbName);
fprintf(stderr, "%s", PQerrorMessage(conn));
exit_nicely(conn);
}
/* 开始处理数据块 */
res = PQexec(conn, "BEGIN");
if (!res' 'PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr, "BEGIN command failed");
PQclear(res);
exit_nicely(conn);
}
/*调用PQclear在PQresult的游标不再使用后清除游标,防止内存溢出 */
PQclear(res);
/* 建立一个叫test1的表 */
PQexec(conn,"create table test1 (name char(20),age int4)");
/* 插入数据 */
PQexec(conn,"insert into test1 values ('cjm',10)");
PQexec(conn,"insert into test1 values ('eight',20)");
PQexec(conn,"insert into test1 values ('linuxaid',30)");
/* 开始查询 */
printf("all the date is:");
res = PQexec(conn, "select * from test1");
for (i = 0; i < PQntuples(res); i++)
{
for (j = 0; j < PQnfields(res); j++)
printf("%-15s", PQgetvalue(res, i, j));
printf("");
}
PQclear(res);
/* 使用SQL的update函数 */
PQexec(conn,"update test1 set age=25 where name='eight'");
/* 打印出更新后的数据 */
printf(" the new date is:");
res = PQexec(conn, "select * from test1");
for (i = 0; i < PQntuples(res); i++)
{
for (j = 0; j < PQnfields(res); j++)
printf("%-15s", PQgetvalue(res, i, j));
printf("");
}
PQclear(res);
/* 删除表 */
PQexec(conn,"drop table test1");
/* 关闭和数据库的连接 */
PQfinish(conn);
}
在C下操作postGreSql比较简单,Sample很多,下面介绍一下用Java操作postGreSql.
2.JAVA操作postGreSql
需要postgreSQl的java driver(jdbc),从网上下一个吧,解包后发现,其实就是一个jar文件,将这个jar文件的路径加入到classpath中.注意,我在这上面困了很久.我装的jdk1.2使用时不需要classpath,因此开始的时候,我将该jar文件放到jdk的目录下,在makefile文件中指定路径,死活通不过,总是该死的class not found错误,创建classpath环境变量后才得以通过(不要问我为什么我也不知,:-( ); 在用JDBC时要不断的使用try{...}catch(..){..},否则总出错, 下面给一个简单的sample,大家happy一下.程序中用到的数据库非常简单,按以下方法创建就可以了(以postgres用户创建):
1.启动数据库ostmaster -S -i
2.创建其他用户:createuser eight
3.创建数据库:createdb mytest
4.创建table: 首先psql mytest
mytest=>create table test1( name char(10), age int(4));
注意,命令要以;结尾。
mydb=>q 退出psql.
import java.lang.*;
import java.util.*;
import java.sql.*;
public class db {
public static void main(String argv[]) {
System.out.println("start...");
//init database connection
Connection pdb;
try
{
Class.forName("postgresql.Driver");
}
catch(java.lang.ClassNotFoundException e) {
System.out.println("err:class.forname.");
}
try
{
pdb=DriverManager.getConnection("jdbcostgresql:mytest","eight","");
Statement stmt=pdb.createStatement();
ResultSet rs=stmt.executeQuery("select * from test1");
if(rs!=null)
{
System.out.println("get data from database:");
while(rs.next())
{
System.out.print(rs.getString(1));
System.out.print(rs.getint(2));
System.out.print("");
}
}
rs.close();
stmt.close();
pdb.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
3.PHP操作postGreSql
使用PHPLIB处理各种数据库的方式都一样,只需要扩充PHPLIB,加入所需要PHPLIB文件既可。PHPLIB通过一个名为DB_Sql的类来操作SQL数据库。在你的代码中包含适合你的数据库的版本。在下面的例子中,我使用postGreSql版本。为了在代码中得到DB_Sql,在 PHPLIB要求的目录下安装PHPLIB文件。然后,找到cgi-bin目录,在cgi-bin目录下创建phplib目录。接着,拷贝所有的 PHPLIB中的.inc文件到phplib目录下。最后,将phplib目录放在php.ini文件中include_path = 的那行上。include_path是PHP引用在include()或require()中文件名的地方。在每一个PHP页面的顶端为
require(common.php3);
?>
common.php3在包含目录中,包含对每一页都通用的所有的数据和函数。在common.php3中,为
require(db_pgsql.inc);
require(ct_sql.inc);
require(session.inc);
require(auth.inc);
require(perm.inc);
require(user.inc);
require(page.inc);
?>
下面是一个操作PostgreSql的例子
$conn = pg_connect("","","","","mytest");
if (!$conn)
{
echo "无法连接数据库.";
exit;
}
echo "
| " . $fields[$i] . " | ";|
|---|---|
| "; | " . $value . " | ";
pg_close($conn);
?>
国际金融报
域名抢注和域名投资成了当下的热门话题,并且有愈演愈烈的趋势,许多保护不力的知名企业CN域名纷纷遭抢注。昨日,记者登陆麦当劳“我就喜欢”网站时意外发现,“wojiuxihuan.cn”CN域名竟被标价5万元出售。
在中国互联网络信息中心查询系统,记者发现,wojiuxihuan.com.cn今年3月已被麦当劳公司注册,但遗憾的是,麦当劳公司的保护并不完整,仍然遗漏了wojiuxihuan.cn这个CN域名。而盯上该域名的是北京中策联合策划中心,该公司在今年5月30日将其收入囊中,并在网上打出了“该域名5万元起价”的出售广告。
“众所周知,麦当劳自去年展开全效公关以来,就将其宣传口号定为‘我就喜欢’”。北京中策联合策划中心负责人吕先生告诉记者,自己在吃麦当劳的时候恰巧发现麦当劳新开了“我就喜欢”网站,但是一查发现,“wojiuxihuan.cn”CN域名尚未被注册,于是赶紧抢注下来。
吕先生表示,他已咨询过正在炒域名的专家。他们都表示,鉴于麦当劳的知名度和现在推广“我就喜欢”活动的力度,该域名至少值5万元。
今年以来,知名企业CN域名遭抢的事件屡屡发生,包括恒源祥、白猫、海狮、南极人、红双喜、三枪等知名品牌;北京吉普CN域名(jeep.cn)因未续费也立遭抢注。
[评论] lym328 : 客源CRM非常不错-----如有需要可以了解
[评论] kevinwu : 作用肯定是有的,Google会首先搜索站
[评论] ss : 其实还真的感觉不到sitemap的作用~
[评论] kevinwu : 谢谢你的关注 :-)
[评论] h51h : 贵博客写得非常的好,界面简洁但内
[评论] snguo : 这里很好 来这里支持下呢?
[评论] redondo : 感谢你分享知识! 这篇文章我转载到
[评论] kevinwu : 就是这本;看来我买的贵了点 - 8折;我
[评论] 安妮 : 《Flex3.0 RIA开发详解:基于ActionScript3.0