1 cannot switch camera when the phone has two camera
2 i18n
3 configrable tail
Powered by MoFire
Month: October 2009
读书笔记 – 容量规划的艺术

persistence.xml和类装载
部署时报这个错误:
java.lang.IllegalStateException: PersistenceProvider [oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider@1927691] did not return an EntityManagerFactory for name ‘mypu’
通常这样的问题是由于没有找到META-INF/persistence.xml或者是名字写错了。但是这里的配置并没有错,而且使用本地eclipse环境同样适用oc4j也是可以部署成功的。尝试把persistence.xml放到war把下的meta-inf目录,不成功。(原本这个文件是放到web-inf/lib下的一个jar里)
后来发现将war打包到ear再去发布就成功了。由此发现了oc4j对于war和ear不同的类装载策略。
关于jee的类装载层次可以看这篇文章。
-还有一种可能是toplink-essential的版本问题,这个是好使的:2.0-b41-beta2 (03/30/2007)
—-这个问题解决了.原因是使用的应用服务器oc4j在部署是会记住上一次部署时的war文件名(它会根据这个文件名创建一个临时文件夹),而在下次部署时,如果war的文件名变掉,则会还去找原来的那个文件夹!!所以部署前要把oc4j缓存清除并重启!

mini进销存软件
家里有人要开店,帮忙去看了几个进销存软件,各有特色。
管家婆是做的比较久貌似也比较有名,不过安装了一下觉得太复杂,不适合维护。三易通服装进销存界面比较简单,也不复杂,唯一的缺点是只有单机版,不过用在店铺小,对分布没有要求是可以考虑,也不贵600多,还打了个客服电话 – 那边一听就是一程序员,而且号称是终身维护的哦,免费升级。据他说以后会出网络版的 – 不过不会通过免费升级,而是另一个产品。呵呵。
最后还看了一个是生财宝,从专业的角度来说,这个产品是最先进的了,但也是操作最复杂的,对非专业的店主来说还是挺有挑战的。可以在任何地方登录,还可以通过短信来定义各种通知 – 比如员工交接班这样的东西,甚至可以远程获取监控视频。目前比较倾向于这个。
还看了一个什么赛管家,第一眼就感觉回到了VB时代(10年前),都没怎么用。
其实根据我和这位亲戚沟通,她的需求其实非常非常简单。
1.进货 – 直接输入名称,对应各种尺码和数量,进货价,销售价,最低折扣,图片附件
2.销售 – 直接根据编号调出物品信息,记录销售信息(销售价),更新库存
3.库存 – 可以查询货品及库存数量,销售记录
最多最多,还有一个会员管理,和销售数据有对应。哪里有这样的软件应用呢?

junit单元测试基类
自己写了一个用来简化代码的单元测试基类,省的每次都要初始化spring和获取相应的bean对象。
public class BaseTest {
static ApplicationContext ac = null;
static {
ac = new ClassPathXmlApplicationContext(
new String[] {"/test-*.xml"});
}
protected C target;
public BaseTest() {
}
@Before
public void setUp(){
Class targetClz = (Class) ((ParameterizedType) getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
String targetClzName = targetClz.getSimpleName();
String arg0 = targetClzName.substring(0,1).toLowerCase()+targetClzName.substring(1);
target = (C)ac.getBean(arg0);
}
}
这样,在测试用例类里就比较简单了:
public class XXXDaoImplTest extends BaseTest{
@Test
public void testFindAll() {
List l = target.findAll();
assertTrue(l.size()>0);
}
}
这样做的前提是一定要遵循命名规则 – bean的id是相应类的名的首字母小写,比如 AbcDao的实现是AbcDaoImpl,声明测试类时要给出AbcDao作为泛型参数。当然BaseTest的内容很简单,如果需要定制也很方便。

java获取昨天的日期
如果不小心还是会栽跟头,看到网上有的人只是roll(Calendar.Date,-1)就了事了。要么就是判断日,月写一大堆。
其实最简单的应该是:
GregorianCalendar cal = new GregorianCalendar();
if(cal.get(Calendar.MONTH)==0 && cal.get(Calendar.DAY_OF_YEAR)==1){
cal.roll(Calendar.YEAR, -1);
}
cal.roll(Calendar.DAY_OF_YEAR, -1);
不知道是不是最简单的
