Good good study, day day up

aleung的学习笔记, aleung的idea

在《生活大爆炸》第一季中某集的场景是Sheldon在洗衣房里叠衣服,他用的是叠衣板,衣服铺上面翻三下,就方方正正的叠好了。没看过的同学可以看看下面的youtube视频片段(需要翻墙):

看着觉得真好玩,于是去淘宝找一下。淘宝果然没有买不到的东西,叫做神奇叠衣板,山寨货几十块钱,可是看了不少评价都说质量不好。在网上搜索的时候无意中看到有人说自己DIY,是啊,这么简单的东西,为什么不自己做呢。

DIY cloth folder

找到装电压力锅的纸盒,当时觉得可能还有用没舍得扔,果然派上用场了。制作非常简单,无非就是切割、折叠、粘贴固定。

DIY cloth folder

阅读全文 »

交往与空间是一本关于城市规划如何影响人的生活,怎样才能让城区更富于生机和魅力,让生活其中的人更愉快舒畅的书。这本书探讨了怎样的城市是真正的宜居城市。

周末花了大半天时间看完了这本书,看书过程挺享受的,很久没有认真看书了。边看边用手机在twitter上发读书感想,twitter是一个不错的记录读书感想的工具。


为什么老城区会让人感觉亲切?因为公共空间尺度合适,不是宏大而单调;空间没有被宽阔的机动车道割裂,联系紧密;空间功能多元化,各种人群各种活动融合在一起更有生机。

现在发达国家的城市规划逐渐摒弃功能主义,让每个区域的功能趋于综合化,使得空间更有生气和活力,也减少了时间性单向的交通压力。但我们的城市规划还是喜欢搞单一的商务区,高科技园,大学城。

阅读全文 »

这个活动由FIREXRD发起,他以”广州撑你“海报而闻名。豆瓣同城上也有活动页面

旧城相对论

展览在北京路的歌莉娅225概念会所进行,展厅面积很小,但这是由观众参与完成的装置艺术,你在那里看到的不是完成后的作品,而是不断动态更新中的,并且每人都可以参与其中。另外这个会所也值得一赞,在是旧建筑保育与商业利用结合的成功例子。

感谢国家,我冇意见,谢绝跨省

旧城相对论

阅读全文 »

Android是基于Linux的系统,这是对开发者很方便的。今天手机上网不太正常,想到抓些包来看看,于是上网google一下,就找到教程了:Debugging with Tcpdump。我的ROM没有预装tcpdump(据说cm的rom有),自己编译也太麻烦了,网上也可以找到编译好的包,搜索”tcpdump-arm”可找到。

有了tcpdump,要分析别人的应用干了些什么也方便多了。例如这是 Google Maps 获取network location的包:

POST /loc/m/api HTTP/1.1
Connection: close
Content-Type: application/binary
Content-Length: 496
Host: www.google.com
User-Agent: GMM/3.0 (dream ERE27); gzip

...."location,1.0,android,android,en_US... I.....g...........g:loc/ql......
..
.1.0.Iandroid/google/passion/passion/mahimahi:2.1/ERD72/22132:user/release-keys.#2:l-7Yxu1UHhuUZlb5:F_iqbZnw84bV2J0q*.zh_CN2
....CMCC .(...
.voicesearch..
.com.diddo.diddo.diddo..
.apps.maps..
.com.lim.android.automemman"..
..
...I...... ..(.......$....I...... ..(.....I...... ..(.....I...... ..(.....I...... ..(.....I...... ..(."...I...... ..(.0..K"...I...... ..(.0..J"...I...... ..(.0..."...I...... ..(.0...(......


HTTP/1.1 200 OK
Content-Type: application/binary
Content-Disposition: attachment
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Date: Fri, 19 Mar 2010 04:49:31 GMT
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Content-Length: 188
Server: GSE
X-XSS-Protection: 0
Connection: close

..............g...)...........`.Z... $...k.......fg./,
.....,.."....cZ
....(.
!'....S`..F...3..BP.n..j...`Q{..V..v...Z'yT;.j...]..Q+.U.d.Pm.,6..aj..j_....=..T...
goB. .U....s7.......#
)...

不过payload是binary的,没法直接看出里面是些什么东西。

阅读全文 »

Issue

SOAP WS client which uses CXF can’t run on GlassFish AS. Getting ClassCastException on invoking some CXF API. The problem was described as CXF-2237 [2].

Analysis

JAX-WS is the Java API for XML Web Service defined by JSR 224. SUN provides a JAX-WS reference implementation in Metro project, which is inside GlassFish AS. The SUN JAX-WS implement was later also merged into JDK 6. Apache CXF is another JAX-WS implementation.

An application can select different JAX-WS implementation by Provider SPI. JSR 224 [4] chapter 6.2.1 defines the algorithm of Provider implementation selection:

阅读全文 »

几乎每次过马路,我都恨不得手里有这样一块牌子,可以伸到身体前面,把来车挡住 —- 在没有交通灯的斑马线,十个司机有九个会毫不减速的冲过,而不会避让过马路的行人;即使在有交通灯的斑马线,如果不是路口,也有司机根本当红灯不存在。

我想,能不能做个可伸缩的棒,例如是套筒的方式,里面加上弹簧,缩起来的时候大概烟盒大小,可以方便的放在口袋,当需要过马路的时候,将它弹出来,变成一米左右的长度。棒身用红、黄鲜艳颜色的反光材料覆盖。为了增大可视面积,棒伸展时需要在前端弹出一个平面,应该用个弹性钢丝圈加上薄膜可以做出来,类似可折叠太阳帽的样子。过完马路后一压就能够把警示棒收起来。

Beatles四位大叔过Abbey Road时就是这样子的:

阅读全文 »

SIP messages are sent in mix of UDP and TCP

In our test we found that our client first sent SIP messages in UDP but later on it changed to TCP. Is it an issue?

In RFC 3261 (SIP) chapter 18.1.1 and 18.2.1, it says:

If a request is within 200 bytes of the path MTU, or if it is larger than 1300 bytes and the path MTU is unknown, the request MUST be sent using an RFC 2914 congestion controlled transport protocol, such as TCP. … This prevents fragmentation of messages over UDP and provides congestion control for larger messages.

For any port and interface that a server listens on for UDP, it MUST listen on that same port and interface for TCP. This is because a message may need to be sent using TCP, rather than UDP, if it is too large.

So, whether send a SIP message in UDP or TCP is decided bytransport layer. When the initial SIP message of a transaction is sent in UDP it’s possible that the consequent messages are sent in TCP.

阅读全文 »

在一个比较复杂的enterprise application (EAR)里面,往往有多个war和ejb,如果希望使用Springframework通过IoC方式来管理及装配POJO beans,就要面对如何初始化application context,由谁来初始化,如何让这些war和ejb共享application context等问题。

关于多个war、ejb共享application context的方法,在下面这两篇文章里解释得比较清楚:

在这里,我不再详细叙述上面文章中的内容,通过图解的方式希望能让它更易理解,需要对照阅读。

图中的方块、圆圈都表示实例,形状的嵌套表示它们的包含关系。在例子里,缺省值都显式写出来,方便查找。

阅读全文 »

订阅bypassgfw邮件列表后,可通过email定期会收到翻墙软件更新版本。订阅方法有两种:

  1. 访问https://groups.google.de/group/bypassgfw?hl=zh-CN(此地址已被墙),用Google/GMail账号登录,点击右侧”加入此论坛”
  2. 发邮件至 jsmith.email2009@googlemail.com 申请加入(请在标题中标明”申请加入Bypass GFW Google Group)

以下内容摘自bypassgfw的介绍:

更多翻墙软件和翻墙技巧 http://twitbrowser.net/blog墙内镜像:http://tbm001.mooo.com/

加入小组需Google/GMail账号,没有Google/GMail账号也可以直接发邮件至jsmith.email2009@googlemail.com申请加入(请在标题中标明”申请加入Bypass GFW Google Group),我会手动添加到邮件列表中

163和Hotmail会将小组邮件标为垃圾邮件,请尽量不要使用这两个邮箱订阅小组邮件

本小组仅为发送邮件所创建,每周会发送两封附件包含有效翻墙软件的邮件至所有组员邮箱,问题讨论请到http://groups.google.com/group/bypassgfwdiscussions

如果您有任何问题或无法收到邮件,请发送邮件到 jsmith.email2009@googlemail.com

阅读全文 »

JAX-RS is the Java API for RESTful web services. JSON is the most popular data binding of RESTful web service. In JAX-RS, Entity Providers supply mapping services between representations and their associated Java types. To support JSON representation, JSON provider is needed.

JSON support in Jersey and CXF

Both Jersey and Apache CXF support JSON data generated out of JAXB beans. Developer can generate JavatypefromXML schema (xsd) by JAXB ormanually write Java bean with annotations. Then the resource can support JSON representatons.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@XmlRootElement
public class StatusInfoBean {
public String status = "Idle";
public int tonerRemaining = 25;
public final Collection<JobInfoBean> jobs = new HashSet<JobInfoBean>();
}

@Path("/status")
public class MyResource {
StatusInfoBean statusInfoBean = new StatusInfoBean();
{
statusInfoBean.jobs.add(new JobInfoBean("sample.doc", "printing...", 13));
}

@GET
@Produces("application/json")
public StatusInfoBean getStatus() {
return statusInfoBean;
}

@PUT
@Consumes("application/json")
public synchronized void setStatus(StatusInfoBean status) {
this.statusInfoBean = status;
}
}

Cusomize the JSON provider

阅读全文 »