我是什么心理?

当我读到三表哥 – 试论贵国乡镇企业流行音乐中那句“原你妈逼创”的时候,居然会笑出声来。

你看广州那帮生意人,天天打着发烧唱片的旗号到处翻唱,卖得不亦乐乎。另一帮傻逼天天较着劲原创。原你妈逼创啊,在贵国到处都是山寨的年代,还他妈哪有原创。

看来是要分析一下,我这是什么心理了。

移动支付on the way

“移动(mobile)”是互联网应用的未来,形形色色的web2.0和mashup怎样在移动平台上大展拳脚呢?
上面这句话一行隐含了“本地客户端”似乎已经不再重要了 – 比如基于javame或者symbian,或者只需要一个比较笨的客户端容器。当然基于web的话mobile浏览器应该算是一个客户端容器 – 前提是如果应用是一个兼容移动平台的RIA(Flex)。
拿支付来说,传统支付平台其实本身并没有多少复杂的应用场景,只是如何组合从而催生出各种各样应用,而且这个领域目前是一片红海。支付平台最主要要解决的是安全问题,毕竟是关乎到老百姓的血汗钱。目前移动支付领域,我所了解的是支付宝,手付通,国外的有Billing Revolution,paypal和amazon也有类似的解决方案,大多都无非是客户端,短信,蓝牙热点,wap几种,结合市场推广。一直在想如果一定要用手机支付的话,应用场景在哪里?在家有台式机,出差有笔记本,也许唯有在路上时候才需要,或者是在排队买电影票时候?如果在这种场合下而且支付过程足够简单安全,并且还有一定的优惠那就是最合适的场景了。但是还有哪些呢:
– 和老婆逛街的时候,通过热点登录附近的书店,预览,购买
– 还是逛街时候,商家通过热点发出折扣信息,透过优惠券下载,完成支付过程
– 路过电影院,想去看电影的时候
-候机时候
。。。
客户端还是一个主要问题,如何整合到易用,简单也是一个很重要的问题。

工商银行网银登录不正确 – 已解决

–问题已经解决,谢谢工行柜台的那位客服mm。虽然是让我跑了3趟才定位了问题所在。原因是由于之前我注册的网银账户里没有开通银行卡账号登陆(或者是默认就不允许的),导致我用卡号登录不成功。让客服帮我修改了设置就ok了。

说说我用工行网银的悲惨经历吧
第一天,柜台申请网银,U盾。回家以后登录3次不成功,被冻结。
第二天,又去柜台密码重置,然后在工行营业厅里的电脑登录,登录成功,并重置密码。可回家以后还是登录失败,3次冻结。打电话给客服,翻来覆去就和我说什么输入法是不是没切换呀~大小写~换个电脑试试,“实在不行,您只能12点以后再试试了” – 敢情用工行网银要随时准备好12点以后重试的准备啊。总之工行的客服就一个字”没用“,我问难道没有其他人有类似的问题吗?得到的答案是”没有“,估计电话那头的客服帅哥在想“你丫RPWT吧”。算了,我就当自己RPWT了。上网搜了一下,发现有很多人都有和我类似的问题 – “为什么工商银行的网银登陆密码总不对??”为什么工行就那么自信自己没问题呢?
第三天,又去工行,还是用营业厅里的电脑登录,登录成功。也就没去柜台再重置。前后试了4台电脑(包括前一天的2台),IE6,7,8都不行。其中有一台是先让同事登录他自己的帐号成功,但是登录我的就不行!!

现在,我只好祈求明天人品能够好点了。

后话,这个问题本来很想,但是却浪费了这么多时间。这本身就是让人很沮丧的事。。。
其实U盾根本就是一个被淘汰的东西,再看看网银相关的那些东西,一看就知道这帮做工行网银的人从来都不知道用户和用户体验是什么东西。谁让工行是国有四大里最好的呢。。。
目前还用了招行和汇丰,相比看来,工行就是DaBian

spring事务配置总结

这里总结一下吧,否则像我这种记性差的人,下次遇到类似的问题还要重新做一遍。
背景:使用toplink jpa,存在外部webservice调用 – 内外事务”混搭”的情况
目标:将事务定义为方法级别(每个service方法都是独立一个事务,并提交),外部调用不置入事务
方法:
1.spring 事务aop配置
–要点:配置propagation为require_new,同时隔离级别设置为READ_COMMITTED – 只可读提交,不可脏读;ABCService中的所有方法配置为非事务 – propagation为NEVER(这样在执行时会报IllegalStateTransaction异常,并不会影响),或者这里外部调用也是用requirenew。;
<tx:advice id=”txAdvice” transaction-manager=”entityTransactionManager”>
<tx:attributes>
<tx:method name=”get*” read-only=”true” />
<tx:method name=”find*” read-only=”true” />
<tx:method name=”save*(..)” propagation=”REQUIRES_NEW” isolation=”READ_COMMITTED” read-only=”false” rollback-for=”java.lang.Exception”/>
<tx:method name=”create*(..)” propagation=”REQUIRES_NEW” isolation=”READ_COMMITTED” read-only=”false” rollback-for=”java.lang.Exception”/>
<tx:method name=”confirm*(..)” propagation=”REQUIRES_NEW” isolation=”READ_COMMITTED” read-only=”false” rollback-for=”java.lang.Exception”/>
<tx:method name=”redirect*(..)” propagation=”REQUIRES_NEW” isolation=”READ_COMMITTED” read-only=”false” rollback-for=”java.lang.Exception”/>
<tx:method name=”receive*(..)” propagation=”REQUIRES_NEW” isolation=”READ_COMMITTED” read-only=”false” rollback-for=”java.lang.Exception”/>
<tx:method name=”delete*(..)” propagation=”REQUIRES_NEW” isolation=”READ_COMMITTED” read-only=”false” rollback-for=”java.lang.Exception”/>
<tx:method name=”update*(..)” propagation=”REQUIRES_NEW” isolation=”READ_COMMITTED” read-only=”false” rollback-for=”java.lang.Exception”/>
<tx:method name=”*” propagation=”REQUIRES_NEW” rollback-for=”java.lang.Exception”/>
</tx:attributes>
</tx:advice>
<tx:advice id=”noTxAdvice” transaction-manager=”entityTransactionManager”>
<tx:attributes>
<tx:method name=”*” propagation=”NEVER” rollback-for=”java.lang.Exception”/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:advisor
pointcut=”execution(* com.modofo.domain.service..*.*(..))”
advice-ref=”txAdvice”  />
<aop:advisor
pointcut=”execution(* com.modofo.domain.service..ABCService*.*(..))”
advice-ref=”noTxAdvice”  />
</aop:config>

2.调用时在controller中控制内外事务的异常处理,并做相应的补偿操作。会使controller(调用端)变的复杂。但也没有想到更好的方法。

潜在问题:
1.读提交(read_committed)

Twitalk

使用手机作为Twitter客户端,通过语音识别读入信息,然后发布到Twitter
在javame有一家叫conversay的公司正主持着Java Speech API 2 (JSAPI2),专门用来做语音识别和转换的一套组件和API。还没有试用,试用后再把使用情况写出来。做语音识别的freetts更有名一些但是看了一下要jse1.4以上。
在google的时候倒是发现不少android上的相关讨论。看来通过移动设备做更多的事将是未来互联网发展的主流之一。

Powered by MoFire

常用正则表达式

正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。

匹配中文字符的正则表达式: [u4e00-u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

匹配双字节字符(包括汉字在内):[^x00-xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

匹配空白行的正则表达式:ns*r
评注:可以用来删除空白行

匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?</1>|<.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

匹配首尾空白字符的正则表达式:^s*|s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
评注:表单验证时很实用

匹配网址URL的正则表达式:[a-zA-z]+://[^s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用

匹配国内电话号码:d{3}-d{8}|d{4}-d{7}
评注:匹配形式如 0511-4405222 或 021-87888822

匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始

匹配中国邮政编码:[1-9]d{5}(?!d)
评注:中国邮政编码为6位数字

匹配身份证:d{15}|d{18}
评注:中国的身份证为15位或18位

匹配ip地址:d+.d+.d+.d+
评注:提取ip地址时有用

匹配特定数字:
^[1-9]d*$    //匹配正整数
^-[1-9]d*$   //匹配负整数
^-?[1-9]d*$   //匹配整数
^[1-9]d*|0$  //匹配非负整数(正整数 + 0)
^-[1-9]d*|0$   //匹配非正整数(负整数 + 0)
^[1-9]d*.d*|0.d*[1-9]d*$   //匹配正浮点数
^-([1-9]d*.d*|0.d*[1-9]d*)$  //匹配负浮点数
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$  //匹配浮点数
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$   //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$  //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正

匹配特定字符串:
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串
评注:最基本也是最常用的一些表达式

原载地址:http://lifesinger.3322.org/myblog/?p=185

Persistence Unit Scope

Persistence Unit Scope
An EJB-JAR, WAR, application client jar, or EAR can define a persistence unit.
When referencing a persistence unit using the unitName annotation element or persistence-
unit-name deployment descriptor element, the visibility scope of the persistence unit is
determined by its point of definition. A persistence unit that is defined at the level of an EJB-JAR,WAR,
or application client jar is scoped to that EJB-JAR, WAR, or application jar respectively and is visible to
the components defined in that jar or war. A persistence unit that is defined at the level of the EAR is
generally visible to all components in the application.
However, if a persistence unit of the same name is defined by an EJB-JAR, WAR, or application jar file
within the EAR, the persistence unit of that name defined at EAR level will not be visible to the components
defined by that EJB-JAR, WAR, or application jar file unless the persistence unit reference uses
the persistence unit name # syntax to specify a path name to disambiguate the reference. When the #
syntax is used, the path name is relative to the referencing application component jar file. For example,
the syntax ../lib/persistenceUnitRoot.jar#myPersistenceUnit refers to a persistence
unit whose name, as specified in the name element of the persistence.xml file, is myPersistenceUnit
and for which the relative path name of the root of the persistence unit is
../lib/persistenceUnitRoot.jar. The # syntax may be used with both the unitName
annotation element or persistence-unit-name deployment descriptor element to reference a
persistence unit defined at EAR level.