Good good study, day day up

aleung的学习笔记, aleung的idea

Since WebLogic Server 9.0, new concepts for workload management is introduced. WorkManager replaces execute queue as defined in earlier releases.

All WorkManagers share a common thread pool and a priority-based queue. The size of the thread pool is determined automatically by the kernel and resized as needed. Priority of the requests is dynamic and computed internally to meet the stated goals.

The thread pool is so-called self-tunning. It monitors the overall throughput every two seconds and uses the collected data to determine if thread count needs to change. Present thread count, the measured throughput, and the past history is taken into account by the algorithm to determine if the thread count needs to increase or decrease, and new threads are automatically added to the pool or removed, as needed.

It’s no longer have to (and is unable to) configure thread counts on a WorkManager nor the common thread pool. However, it’s possible to affect how server prioritizes work and allocates threads by parameters defined in WorkManager. Each WorkManager can contain following types of components:

  • Request class
    • Fair-share
    • Response-time goal
    • Context based
  • Constraints
    • Minimum threads constraint
    • Maximum threads constraint
    • Capacity
阅读全文 »

Apigee is hot recently. It has raised $20 million in its fifth round of funding. What magic it has? I spent some time today to have a look at it.

Apigee is an API management platform and services company. It benefits both API providers and developers who build their apps with APIs.

Apigee Enterprise

Apigee Enterprise product is an API proxy plus developer portal.

Usually when an organization open its internal services or data to external, it develops the API and exposure it, with necessary document published. Application developers learn the API by reading the document, and then code to use the API.

阅读全文 »

Nexus One 手机用了两年多,升过几次系统,到现在用起来还是挺满意,但唯一的问题是内部存储(ROM)太小了,只有512M,留给安装应用的空间不足200M,而现在的应用又越来越大,已经到了当想装新应用必须先卸载其他一些的地步了。尝试过A2SD,效果不大理想,卡顿感比较明显,也可能因为我的TF卡速度不够高。

现在换的这个 Sony Xperia U 属于 Xperia NXT 系列,称为Sony下一代智能手机,包括 Xperia S, Xperia P 和 Xperia U,档次由高至低。Xperia U 在配置上其实跟 Nexus One 变化不算大(对比),主要区别是CPU双核(频率相同),内部存储容量4G,而其他的如屏幕之类都不相上下。不过,两个产品发布时间差了2年,Nexus One在当年算是旗舰级别,而现在Xperia U只是中端机型,在现在的手机大混战中一点都不起眼。这也正符合我目前的需要,相当于一个内存升级版的Nexus One。之前考虑过人称Google三儿子的Galaxy Nexus,样样都满意,不过有些特性我倒用不着,例如4.6寸大屏幕。

玩了几天,跟我的期望比较一致,总体满意。有些经验记录下来。

刷机

阅读全文 »

昨天中午拿到国行 Sony Xperia U (ST25i) 手机,开机试了一下,索尼(原来的索尼爱立信)在Android 2.3基础上的定制系统做得还可以,但大陆行货里好多功能都被阉割得不成样子。Google系列的任何东西都去掉了就不用说了,很奇怪的是居然系统里没有自带任何应用市场,国内的山寨市场也没有。可以想象一个不熟悉IT的用户买到手机后就会局限在预装的那几个应用,连升级都没有途径。比较一下SonyMobile英文与中文网站对这款手机的介绍,就会发现中文产品介绍缩水不少,好多卖点都没有了。

这样的智能手机简直就是残废,于是下班后就开始研究怎么刷机。先是在国内的一些论坛上搜索,但国内论坛真是很没有营养,里面的信息的价值很低。Android hacker的大本营在XDA,相关问题还是要到XDA论坛找靠谱。

关于Xperia系列刷机需要了解的基础知识,这篇 All that u need to know before u begin 讲得比较清楚。

无论要刷什么,前提条件是先将 bootloader 解锁。关于解锁的教程很多,SonyMobile网站上就有详细步骤,XDA上的 Xperia S/P/U/Sola Bootloader Unlocking & Relocking 附带了所需工具的下载。还有一个国产软件,号称是一键自动解锁。

但是,就在第一步,将手机boot到fastboot模式,就花了我好几个小时。按教程,手机在关机状态按着音量+键的同时将USB连接上电脑,就会进入fastboot模式,并且亮起蓝灯。但是无论我怎么反复重试,手机都不会亮起蓝灯,电脑上弹出对话框提示安装驱动程序,但当我选择操作时它又说USB设备已经断开,显示这样的错误信息:s1boot fastboot device unplugged。网上搜索,有人说是驱动没有装好的原因,最后还是从XDA里找到了解决方案。原来,Xperia手机在进入fastboot模式时,会检测电脑是否已经装上了正确的驱动程序,如果没有,就会退出fastboot模式。而电脑端刚刚提示用户安装驱动,就发现手机已经关闭了连接,就取消了驱动的安装。这种问题可以用来做经典反面案例了。XDA帖子里的解决方法还是要拼手快:预先打开设备管理器,一插上手机后,里面会出现s1boot这个设备,赶紧鼠标右键选择升级驱动,升级驱动的对话框打开后,即使设备断开了还是可以继续进行驱动程序的安装。终于看到传说中的蓝灯了,原来是在下面透明发光条发出很亮的蓝光,我之前还一直以为是右上角摄像头旁边的小灯。

阅读全文 »

当使用 Spring 作为 IoC framework 的时候,有时会利用 property placeholder 来将bean的注入属性做成可配置化。但是,一般很少会将 reference bean id 也用 property placeholder 代替,有人甚至以为这是不允许的。

利用Spring Framework的property placeholder,将bean依赖关系配置抽离Spring XML文件,就能在产品发布部署后,通过配置选项来选定不同的实现,可用于集成接口、特定业务逻辑打开关闭等。

Adaptor pattern is widely used at the point where our product integrates with external system. Product will provide several adapters to adapt to different external system interface.
We deliver our product in uniform installation package for all customers. A mechanism is required to configure which adapter to be used after system is installed.

Factory pattern can be used to create the specific adapter by configuration property. But by this way we need to create factory for each kind of adapters.

Actually Spring Framework already supports it. With property placeholder, it is able to use placeholder in bean reference and resolve the bean name from properties. The bean definition XML file is not allowed to be modified when product is released, because it’s packaged in war/ear. But properties can be modified as long as it’s store outside of the package, e.g. on file system or in configuration management (extend the PropertyPlaceholderConfigurer class).

阅读全文 »

软件团队的办公室空间可以分为三大类:团队工作空间,会议空间,公共区域。

敏捷团队在工作过程中需要有比较多沟通,团队工作空间需要为此准备必要的设施,例如带有白板的讨论区域,这样就不需要讨论一些事情都要跑很远找会议室;供张贴东西的墙面;公共信息显示屏,显示CI状态之类。

每个人的座位当然是越宽敞越好,即使条件限制,最低限度也需要保证可以增加一个人并排坐一起结对编程或讨论问题。因此应该用长条型的桌子,而不是曲尺型的桌子。

不同团队之间的空间有一定的隔离,减少相互影响,因为团队内的讨论对他人是噪音。并且,空间的尺度对心理也有影响,需要合适的尺度,过大的大厅一排排整齐排列的桌子的心理效果不好。

将公共区域,例如休息区、茶水间、打印机等,放在各个区域空间的交汇点,一方面是方便各个区域的人的到达,另外是形成汇聚点,成为人们的交流场所。公司里面需要创造让不同团队成员见面交流的机会。公共区域特别应该是开放性的,不带有物理边界,才能彰显公共属性,例如茶水间休息区与走廊不应该设墙,让它们融合起来,这样大家路过的时候就能够打个招呼聊上几句。休息家具款式可以多样化,颜色也可选择鲜明多彩的,让空间生动有活力。

阅读全文 »

个人blog再一次搬家,从 Google Application Engine (GAE) 搬到 github 上来。原来的地址依然能够访问,但是不会再更新了,新文章都发到这里。Feed订阅地址不变,建议使用Google Reader订阅本站。

搬迁原因

上一次从blogbus搬到GAE,是因为忍受不了审查制度。GAE后来也被墙了,但是即使如此,我也不会为了读者数量而再使用国内的blog服务,在被审查的状态下写东西。

这次搬到github,最主要的动机是为了使用Octopress这个blog framework。

好玩

阅读全文 »

这个blog使用的markdown解释器是kramdown,比起标准markdown有所增强。再加上Jekyll的一些插件特供的特殊功能。

Markdown基本语法

标题

标题用#开头,一个井号是一级标题,两个井号是二级标题,井号越多字体越小。

一级标题也可以通过在标题的下一行用========来标注,二级标题就是---------。更小的标题就不能用这种方式了。

阅读全文 »

前几个月看了些软件开发相关的书,读的时候有时有感悟就发条tweet,在这里备份一下。

梦断代码

开始阅读《梦断代码》,一个历时多年的软件项目惨败的故事。其实类似的案例很多很多,不过大家都不愿意承认失败,或者将失败轻描淡写而已。

可复用软件之梦有一悖论:几乎总能找到一段满足大部分需要的代码,但这些拿来的代码所不能做到的部分,恰是本项目与众不同的创新之处。

软件开发的时间估算始终是恒久难题,敏捷方法能做到的只是对于短期估算有改善:通过任务切分和开发团队亲自估算让数值看起来可靠些,通过计算迭代速率等手段让估算值反映团队近期状态;但对于长期估算,答案依然是:你丫别问了,到时自然就知道。

阅读全文 »