美国奥巴马总统下令,所有政府单位要开放 API 出来

笔者观察到即使是先进者美国,也在奥巴马的支持下,通过了类kickstarter群众募资平台的法源基础。进一步给予已经蓬勃发展的第三方支付,线上创新金流法律上支持的力道。这预计也将创造数以百万计的工作机会,鼓励更多的创新。

奥巴马发备忘录,要政府开放API

这两天,又看到奥巴马的新动作–他直接下了一个备忘录给联邦政府各级单位,限期要各单位在十二个月内完成美国政府资讯长发布的二十一世纪数字政府战略的规范,三个月内要看到每个单位放上网页,公开说明实行进度。

这个二十一世纪数位政府战略规定了什么呢?笔者简要如下:

1. 政府应将开放资料,内容与Web API为基本任务。尤其是既有高价值的资料,应尽速透过Web API开放。

2. 建立共用平台,节省政府支出。(例如未整合采购与开发的各单位做法)。

3. 以民众为导向,用现代技术及行动科技提供更好的数位服务。

4. 用新科技提升安全与隐私。

关于为什么要这么做的整体战略思维,欧巴马在备忘录中说得很清楚:

Ultimately, this Strategy will ensure that agencies use emerging technologies to serve the public as effectively as possible. As a Government,

更多...

insert into 后获得自动插入的id(select @@identity)

当运行完插入语句后,执行select   @@identity就可得到自动生成的id

如果是sql server 最好用select SCOPE_IDENTITY() as id
因为@@identity全局的

同类还有IDENT_CURRENT(‘table’)

IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。
@@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。
SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值

SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。但是,SCOPE_IDENTITY 只返回插入到当前作用域中的值;@@IDENTITY 不受限于特定的作用域。… 更多...

从程序员到经理的历练

作为一个技术人员,想成为管理者并不难,只要你坚持这个工作。在国内的氛围中,当技术人员,在经验、能力、年龄达到一定层面后,公司都会想办法提升他的职位,进入管理岗位,如项目经理、研发主管、技术部经理、技术总监等等。很少会有公司能允许一个三十多岁的程序员存在,即便他做着技术工作,也会给他安个什么大牌的头衔。

当进入管理岗位后,痛苦就开始了。专业技术人员与技术管理人员,虽然都是技术性工作,前者侧重于技术,后则侧重于管理,工作性质已经有了明显区别。相较于技术,管理工作更复杂。管理工作是面对人,技术工作是面对电脑,人比电脑复杂得太多了。没有学不会的技术,管理则需要岁月历炼。管理的英语单词“Manage”,就是男人与岁月的合成词。

我也是做技术出身的,我经历过的痛苦,或许可以帮助大家快速成长。

国王的命运

管理性工作,不管你做的有多好,总会有人给你提意见,总会有人不满意。相比较而言,做技术性工作,真是太幸福了,不用操心,专心至致,不会有人打扰,做起来也顺手,工作成果总会受到大家的赞誉。

当我在做经理后,总是忍不住回过头来写代码,一方面是因为管理能力不足,任务分解不出去,一方面是对他们做的工作不满意,最主要的还是,写代码的感觉实在太幸福了。虽然我现在也写代码,但目的已经不是为了体验幸福,而是觉得作为一个技术方面的管理者,不应该丢弃技术,工作重点已经不是程序编写。

在那个阶段,我非常迷茫,不知道怎么才能把工作做好,团队成员整天提意见,公司领导责备多于鼓励,我的自信心跌到了冰点,甚至有想过放弃管理工作。但说实话,又有些不甘心,也有些中国人官本位思想,毕竟是混到个小领导了,真是再下来了,多没有面子。

在这个过程中,我看了很多管理的书、管理的讲座,始终不得要领。有一次在书店闲逛,看到《沉思录》随手拿起来翻看,我知道这本书,之前中央领导向社会推荐读物,温家宝推荐了《沉思录》。也就是这一翻,看到了将会影响我终生的一句话(一点儿也不夸张)。

“国王的命运,就是行善事而遭恶誉”。

我毫不犹豫的买下这本书,如果一本书有一句话值得拥有,这几十块钱就花值了。

前一段,有个朋友刚当了项目经理,很痛苦,在QQ上向我诉苦。我说,我送你一句话,“国王的命运,就是行善事而遭恶誉”,管理者就要有王的胸怀,不仅要敢于担当,还要有胸襟承受非议,相信自己是对的,做就是了。几秒钟后,他的QQ签名变成了这句话;几个月后,说他感觉自己已经可以胜任了。

在我的管理工作中,每次提拔主管时,我都会赠送这句话给他们。我不担心他们的技术能力,我担心他们的心理承受能力。其实这句话,有些类似于“走自己路,让别人去说吧”的意思,但是它更有气魄。

《梓人传》

当刚开始做管理工作时,任务分解是一个让我非常头痛的问题。

如何能够合理的把任务分配给团队成员,让他们轻松完成,而且又能保证质量,这对我来说,实在是个难以解决的问题。

往往是,任务分解不出去,自己埋头干活,团队进度没时间把控;要么就是团队成员做完工作,不合要求,自己伸手把任务又重做一遍。很显然,我做得更好,更快。看着程序员们崇拜的目光,也有点小小的成就感。可到头来,自己累得要死,并没有落好,还净落埋怨。

在这个过程中,我着重学习了项目管理,后来还考了一个信息系统的项目管理师。我很清楚,自己应该高屋建棱,我还自己总结了一句话,“低姿态工作,高视角审视”。事实上,我根本不知道该如何去“高视角”。虽然书上讲了很多方法,但操作起来总是不能令自己满意。

很偶然的,我在图书馆看杂书,看到柳宗元的《梓人传》,有些感触,后来上班时无事时,在网又搜这篇文章,仔细的阅读,还看了很多人的点评。虽然没有醍醐灌顶吧,但也受用良多。

例如文中所述:

“彼将舍其艺,而专其心智,能知体要欤”

“不炫能,不矜名,不亲小劳,不侵众宫,日与天下英才讨论其大经。如梓人之善运众工,而不伐艺。”

它说的这些原则,我全违背了,思路不正确,方法再正确也没有用。

法、术、势

为了规范开发行为,我制订了很多制度,因为从我自身管理思想上来说,我是崇尚制度化管理的。我学习了很多开发方法、开发模式,研习了很久,但任何一种方法,应用到研发工作中,都是一堆问题。当有人质疑时,我总会引章据典的予以辩论,说得对方无可反驳,其实我也清楚,他是“口服心不服”。

我不知道自己哪里出了问题,我相信自己学习的东西都是正确的。为什么就实施不起来呢?

前几天和一个朋友还在聊这类事情,他也很迷茫,我告诉他,其实我也经历过这个阶段,我建议你有时间看看《韩非子》。我当时就是认真的看了《韩非子》(其实也没有看完了,至少比以前看得仔细了)之后,才有了较大改观。

《韩非子》是法家思想经典之作。我们总是以为,法家思想提倡“法”,就是制度化管理。事实上,法家的精髓不仅是“法”,而是包括:法、术、势。

法,是制度,是条例,也是规范,它有一定的约束性,但它不是为了约束,而是为了规范。

术,是手段,是技巧,例如,当发现别人做得不符合要求时,不要批评,而应该说:“你做得很好,但我认为,还有很大的提升空间。”

势,是权力,是职责,例如,韩非子中说,桀纣虽然很坏,但如果不是坐在王的位置上,也不能危害天下;尧舜虽然贤明,如果不是坐在王的位置上,也不能造福天下。

我们评论法家思想,总会说“法太苛”,并举秦朝失败的案例,事实上,至从秦朝之后,无论哪个朝代都在延用法家思想,也就是所谓的“儒表法里”(表面是儒,其实是法)。到了唐朝,则大范围照搬秦制,为了不让别人说闲话,柳宗元说了句名言为唐朝开脱,“秦之失,失于政,非失于制”,就是说秦朝的制度是非常好的,是他们管理上出了问题。

应用到我们管理中,制度化是必须的,其次还要考虑管理手段问题,不能完全依靠制度。最后,就是把合适的人放到合适的位置,明确其职责。

关于“法”,我们可以学习别人,甚至照搬。而“术”,则需要因地制异,需要管理艺术。而“势”,则需要因人而异、量才适用,它不仅需要高超的管理艺术,还要大胆授权、敢于放权。

后记

前一段想写篇文章,叫《保持精神世界的生物多样性》,后来起了个头,一直没有往下写。技术人员是专家,管理人员是杂家,多读书对自己会有好处的,只要是好书,管它哪个方面的,只管去读,总会有用到的时候。

国外的管理书籍,都比较通俗易懂,但咱们中华文明的瑰宝,还有很多营养需要我们吸取。… 更多...

Windows启动过程

当你启动计算机之后,windows的启动过程就开始执行了。下面是详细步骤:

1 BIOS执行一些初始系统检查,并读取磁盘的第零簇的内容。第零簇内容有一个特殊的称谓 – 操作系统主引导扇区 MBR(Master Boot Record)。

2 MBR保护两部分:

1 系统启动代码 (共有446 bytes)

2 分区表入口(16 bytes colored entries in the bottom)

3 根据系统代码,我们可以找到系统所有的分区,并找到系统启动分区。如果分区表入口的第一个字节值为0x80,那么可以确认这就是分区表入口,它也被称为根分区或系统卷 . MBR中有四个分区入口,是不是意味着我们只能有四个系统驱动?这也就意味着我们还得有扩展分区入口.

4 除了分区得到确认外,还能够确认系统启动分区的第一个磁盘簇。具体的值存储在启动代码的8th-12th字节。上图中这个值为3f 00 00 00,按照小端计算,其值为0000003f,即第63rd扇区。

5 启动入口第63rd扇区又称为启动扇区,从这里开始可以读取到文件读取根磁盘(c:)的文件ntldr(NT loader)。

6 有时候,系统启动中提示错误信息“NTLDR is missing”,正是因为读取不到这个文件。 读取这个文件的信息后,windows开始把内核文件加载到内存中。先确定页面大小,然后读取ntdetect.com,根据BIOS设置进行硬件检测,最后读取boot.ini以显示启动菜单,即提示有哪些操作系统。

 … 更多...

柯达破产

美国华盛顿邮报报道,几乎是摄影同义词的柯达公司濒临破产,引来摄影爱好者的一片惋惜,他们纷纷在社交网站上发表评论表达自己的感伤。一条评论这样写道:“让人悲伤的是,我们的孩子有一天可能不明白何谓‘柯达时刻’”。尽管如此,柯达的破产却已进入倒计时。

在我很小很小的时候,家里开照相馆,每天的玩具就是这些圆滚滚的柯达胶卷,没想到以后连这个也只能是回忆了。… 更多...

做自己

我们各自心中都有某些不愿意摒弃的东西,即使这个东西使我们痛苦得要死。我们就是这样,就像古老的凯尔特传说中的荆棘鸟,泣血而啼,呕出了血淋淋的心而死。咱们自己制造了自己的荆棘,而且从来不计算其代价,我们所做的一切就是忍受痛苦的煎熬,并且告诉自己这非常值得。–麦卡洛《荆棘鸟》… 更多...

JSP表单中的form传值

不同JSP页面之间、不同action之间,以及JSP中form与其对应的action之间,JSP中form与其不对应的action之间如何传值。本文将介绍JSP表单中的form传值。

页面间链接和数据传递的三种方式

(1)通过JSP表单form将数据提交到下一个页面;

(2)通过JSP表单链接将数据提交到下一个页面;

(3)通过JSP表单Session将数据提交到后续页面,session是一次会话只要浏览器不关闭就不会关闭会话,一般默认保存30分钟可以根据自己的需要更改 。

例:

  1. 01.html
  2. <html>
  3. <head>
  4. <title>利用表单传递数据</title>
  5. </head>
  6. <body>
  7. <h3>利用表单传递数据</h3>
  8. <form name=“form1” method=“post” action=“02.jsp”>
  9. <p>你的姓名:
  10.      <input type=“text” name=“name”>
  11. </p>
更多...

菜鸟的Android 学习笔记 之四大组件总结

Activity :

activity是Android提供的界面,所有和用户交互的事情都发生在这个类。

Activity的生命周期:

OnCreate() 创建的时候会调用这个方法 设置这个Activity设置布局控件,初始化数据等。

OnStart() 当控件被我们看到的时候,就调用OnStart()方法 在OnCreate()之后 或者OnStop()后调用。

OnResume() 当重新获得用户焦点的时候就调用这个方法。

onPause() 保护现场用的 可能被另外一个透明的Dialog窗口覆盖,失去焦点,但是他仍然和窗口管理器保持连接,系统可以继续保护Activity的内部状态。

onStop()  停止和OnStart()对应,注意OnStop()和OnPause()不一样的地方是他是完全被另外一个窗口覆灭。也就是失去焦点而且不可见。

onDestory()销毁

创建一个Activity的要点

1.一个Activity就是一个类,并且这个类要继承Activity

2.需要复写onCreate方法

3.要在Androidmanifest.xml进行配置(四大组件都要进行配置)

4.为Activity添加必要的控件

在一个Activity启动另外一个Activity

Intent intent=new Intent(CurrentActivity.this,OtherActivity.class) //OtherActivity也要在AndroidManifest.xml中注册。

startActivity(intent);

Intent还可以放入各种数据 传入下一个Activity。

可以用下面的方式接收传过来的数据:

还可以用Bundel的方法发送数据。Bundel就像一个承载数据的List<> 里面可以放各种数据。但是他的key只能是string类型的,放入Intent的方式也是intent.putExtra(bundle);

Service

Service在什么时候会用到呢?比如说音乐程序的时候,需要后台运行,但是又看不到界面,此时就用到Service。这也是Service和Activity最大的不同。

Service 更多...

设计模式之Factory

工厂模式定义:提供创建对象的接口.

为何使用?
工厂模式是我们最常用的模式了,著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。

为什么工厂模式是如此常用?因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑实用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。

我们以类Sample为例, 如果我们要创建Sample的实例对象:

Sample sample=new Sample();

可是,实际情况是,通常我们都要在创建sample实例时做点初始化的工作,比如赋值 查询数据库等。

首先,我们想到的是,可以使用Sample的构造函数,这样生成实例就写成:

Sample sample=new Sample(参数);

但是,如果创建sample实例时所做的初始化工作不是象赋值这样简单的事,可能是很长一段代码,如果也写入构造函数中,那你的代码很难看了(就需要Refactor重整)。

为什么说代码很难看,初学者可能没有这种感觉,我们分析如下,初始化工作如果是很长一段代码,说明要做的工作很多,将很多工作装入一个方法中,相当于将很多鸡蛋放在一个篮子里,是很危险的,这也是有背于Java面向对象的原则,面向对象的封装(Encapsulation)和分派(Delegation)告诉我们,尽量将长的代码分派“切割”成每段,将每段再“封装”起来(减少段和段之间偶合联系性),这样,就会将风险分散,以后如果需要修改,只要更改每段,不会再发生牵一动百的事情。

在本例中,首先,我们需要将创建实例的工作与使用实例的工作分开, 也就是说,让创建实例所需要的大量初始化工作从Sample的构造函数中分离出去。

这时我们就需要Factory工厂模式来生成对象了,不能再用上面简单new Sample(参数)。还有,如果Sample有个继承如MySample, 按照面向接口编程,我们需要将Sample抽象成一个接口.现在Sample是接口,有两个子类MySample 和HisSample .我们要实例化他们时,如下:

Sample mysample=new MySample();
Sample hissample=new HisSample();

随着项目的深入,Sample可能还会”生出很多儿子出来”, 那么我们要对这些儿子一个个实例化,更糟糕的是,可能还要对以前的代码进行修改:加入后来生出儿子的实例.这在传统程序中是无法避免的.

但如果你一开始就有意识使用了工厂模式,这些麻烦就没有了.

工厂方法
你会建立一个专门生产Sample实例的工厂:

public
更多...