RSS feed [root] /



title search:


Sun Jul 23 22:00:11 HKT 2017

(google search) (amazon search)
download zip of files only

Thu Mar 30 14:47:41 HKT 2017 From /weblog/software_engineering/testing

test data

Suggestion of how to manage the test datas -[..]citcon-melbourne-2008-managing-test.html

Difference Pattern of managing test datas -[..]damentals-of-data-testing-setup-and.html

How to get the data feed and design automated test trading system -[..]m/2011/02/16/trading-system-testability/

False assumption about time -[..]alsehoods-programmers-believe-about-time

Create your own clock -[..]3/12/the-virtual-clock-test-pattern.html

Just change the return of Calendar -

Discussion about creating test data -[..]est-data-builders-and-object-mother.html[..]r-data-access-code-unit-tests-are-waste/

Dummy, fake, stub, spy and mock -[..]

Generation of test data -[..]/tools/open-source-test-data-generators/

Using test container, and compare it with other test data solution -[..]28/database-testing-with-testcontainers/

(google search) (amazon search)

Mon Mar 27 10:38:42 HKT 2017 From /weblog/java/features


Good : dynamic, generic
Bad: slow, don't work with Obfuscators and most searching and refactoring tools

A very nice tool to get parameter name - (e.g.: user of getUser(User user))

How to improve the performance -[..]-reflection-as-fast-as-direct-calls.html

The problem of using reflection to modify final field -[..]7-writing-to-final-fields-via-reflection

Using reflection for using test -[..]f-hacking-enums-and-modifying-final.html

Sharing about using invokedynamic -[..]ticles/Invokedynamic-Javas-secret-weapon

(google search) (amazon search)

Sun Mar 26 00:09:52 HKT 2017 From /weblog/java/string


Introduction to a library which support faster regular expression processing:[..]ite/archive/2006/03/a_faster_java_r.html[..]-expression-library-benchmarks-2015.html

Regex helper -

java-regular-expressions-cheat-sheet -[..]abs/java-regular-expressions-cheat-sheet

(google search) (amazon search)

Wed Mar 22 00:08:56 HKT 2017 From /weblog/business


Tips for getting the most from meeting -

No meeting should ever be more than an hour, under penalty of death.
Every meeting should have a clearly defined mission statement.
Do your homework before the meeting.
Make it optional.
Summarize to-dos at the end of the meeting.[..]/02/meetings-where-work-goes-to-die.html

Good and bad thing from meeting -

「兩個披薩」和「六頁備忘錄」, meeting attendant should not eat more than 2 plazas and the discussion item should not more than 6 pages -[..]zza-rule-for-productive-meetings-2013-10[..]zza-rule-for-productive-meetings-2013-10[..]ve-signs-your-meetings-are-waste-of.html <- I like this one: "Sign 4: Someone asks: "who will document the results of this meeting?""

上班族必學-在會議中教人刮目相看的十招, I double if it working...... -[..]%B8%E7%9C%8B%E7%9A%84%E5%8D%81%E6%8B%9B/[..]7/13/meetings-are-legalized-robbery.html

A team might agree around the conference table, but then express doubts in the “safer” environment of the hallway or coffee shop. -[..]14/03/the-meeting-after-the-meeting.html

(google search) (amazon search)

Tue Mar 21 14:31:55 HKT 2017 From /weblog/software_engineering/team


Recently I help the company offshore some work to CN developers, many difficulty I've encounter, most difficult one is it is hard to share the vision and big picture to CN developers.

This article mention a few good notes , the one I think I am lacking is having short meeting with them often. I will see if we can have video conferencing so that we are easier to meet.

The other tips here -[..]_id=45367&asrc=EM_NLN_1439070&uid=703565 but I think the tips list is too long and probably only apply to large enterprise

Tips of communication with offshore team -[..]on-in-software-development-projects.html

(google search) (amazon search)

Tue Mar 21 14:30:43 HKT 2017 From /weblog/security


Introduction to Cryptography Basic Principles -[..]01/diffie-hellman-key-exchange-algorithm[..]tography-theory-1-meaning-of-secure.html

getting-a-list-of-available-cryptographic-algorithms -[..]t-of-available-cryptographic-algorithms/

Differential privacy -

(google search) (amazon search)

Sun Mar 19 10:25:58 HKT 2017 From /weblog/design


The Hidden Dividends of Microservices -

Best practices -[..]constructing-micro-service-system-part03

Compare using library / service -[..]cy-management-whether-library-or-service

(google search) (amazon search)

Tue Mar 14 23:52:20 HKT 2017 From /weblog/learning


How to teach kid love coding -

(google search) (amazon search)

Mon Mar 13 23:20:23 HKT 2017 From /weblog/health/food

Health Meal

Fix muscle with good food -[..]life/food/fix-your-muscle-with-food.html

要動不要痛—調整飲食,擊退運動傷害! -[..]eat-when-you-get-hurt-from-exercise.html

【動畫●每日健康】新超級食物苔麩代替麵粉 多吃腸胃更暢通 -[..]om/realtime/supplement/20161012/55761307[..]at-makes-eating-healthier-easy/?view=all

豐富健康食譜 -

Eating for health, not weight -[..]y/the-optimal-diet.html?_r=2&ref=opinion

健康飲食還需多吃“苦” -


1.【 想要膽固醇聽話? 每天三杯柳橙汁OK!! < >】

2.【 要長壽別忘蕃茄 < >】

3.【 喝杯水再睡_喝適量的水有益健康! < >】

4.【 喝下重覆煮沸的開水會致癌 < >】

5.【 喜歡吃冷凍水餃的人請小心 < >】

6.【 小心衛生筷子 < >】

7.【 豆漿, 請多告訴你身旁的女性朋友 < >】

8.【 操作電腦時要多喝茶 < >】

9.【 老醫之家:一個不錯的中文醫療資訊網站 < >】

10.【 建議大家最近別吃生魚片及去海邊玩! < >】

11.【 養肺的季節--養肺食譜 < >】

12.【 聽過喝咖啡減肥? < >】

13.【 幫助皮膚健康的維生素 < >】

14.【 造成身材浮腫的殺手食物報告出爐 < >】

15.【 喝雞湯 細菌黏液最快排出 < >】

16.【 15種吃了腿會變瘦、變美的食物 < >】

17.【 早餐吃熱食,才能保護胃氣 < >】

18.【 五種食物,讓你百毒不侵 < >】

19.【 不要太常吃冰 < >】

20.【 喝太多鋁箔包飲料容易導致老年癡呆症 < >】

21.【 黑糖薑茶(女人一定要看) < >】


1.【 午餐後趴睡是健康的殺手 <午睡是健康的殺手.htm >】

2.【 失眠、生物電和橡皮鞋底! < >】

3.【 有午睡習慣的人比較不會老 < >】

4.【 睡眠不足 小心變笨 < >】

5.【 深夜開燈睡易致癌 < >】

6.【 用微波爐加熱水請小心 < >】

7.【 杜絕感冒的六大法則 < >】

8.【 每天更健康 < >】

9.【 小心!看不見的「波」可能讓你致癌 < >】

蒜頭飯 - 閱後傳知他人,添福添壽

一位朋友每天吃蒜頭蒸飯,晚餐用一把蒜頭切碎煮飯, 半年之後高血壓消失了,痛風症消失了,坐骨神經痛亦消失了。 對於目前流行的非典型肺炎,他認為吃蒜頭是增強免疫力的方法, 因為蒜頭是「窮人靈芝」,通血管及清除毒素,以前美軍 亦用作隨身解毒劑。

蒜頭越多越香,拍碎,用油鍋炒香蒜頭放入鹽及煮好的飯,加葫 椒鹽拌炒起鍋。 ( 菲律賓人的早餐都是這道主食 )


另一位朋友提醒要多食維他命 C,以增強抵抗力,並切忌吃煎炸熱氣食物,免引致喉嚨發

1. 約十公克的薑磨成糊狀。
2. 把薑糊放入玻璃杯裡。
3. 注入滾燙的熱開水。
4. 加入一匙蜂蜜,拌勻後飲用。

老薑切片或拍碎煮黑糖功效一樣 , 連續喝兩個月(每天早晚各喝一次 )據書本 記載的見證:
1. 身體變溫暖,手腳冰冷的『怕冷症』體質明顯改善。
2. 體重可減輕約十公斤。
3. 皮膚變得細嫩。
4. 去掉多餘贅肉,腰圍變細。


熱門瘦身食譜排行榜Top5 -

冬天多吃莓果養顏排毒又減肥 (strawberry) -

長期食素加速衰老 -

Food good for slim and skin -

10 good food... -

Food to help hair -

地中海膳食模式——一种富于水果、蔬菜、坚果、全谷物和富含不饱和脂肪酸的鱼类的膳食, 食用三文鱼, 水果,击退中风, 放下苏打,端起咖啡, 酒精:始终都要节制, 巧克力——更多时候依然视为氧化剂, 什么不能吃:限制碳水化合物, 红肉 -

日日食花生 更健康更長命 -[..]%A5%E5%BA%B7%E6%9B%B4%E9%95%B7%E5%91%BD/

busy-students-eat-healthier -[..]lp-busy-students-eat-healthier/?view=all

(google search) (amazon search)

Fri Mar 10 17:49:16 HKT 2017 From /weblog/java/concurrency


putall can cause ConcurrentModifcationException -[..]ses/sun/management/

Note on writing CopyOnWrite wrapper -[..]

Sometime this is a bit difficult for Chinese to be a good programmer, recently some colleague and me discuss about the behaviour of this class and look like we have difficult understanding

A: ConcurrentHashMap support for locking as this is thread-safe
B: ConcurrentHashMap is thread safe for read but not for write because there is no lock, we still need to have external lock to keep it thread safe. By the way, I get ConcurrentModificationException from this before.
C: ConcurrentHashMap don't support for locking but they still thread safe for all operations, which is how "This class is fully interoperable with Hashtable in programs that rely on its thread safety but not on its synchronization details." mentioned.

Too good that we can actually take a look at the source code to see what going on nowadays rather than just guessing -[..]HashMap&sourceid=opera&ie=utf-8&oe=utf-8 By the way, this constructor is useful for a lot of concurrency access but actually not many developer notice about this -[..]rrentHashMap.html#ConcurrentHashMap(int, float, int)

Lazy initialization of map values -[..]

HashMap.get() can cause infinite loop -[..]5/07/hashmapget_can_cause_an_infini.html

Discussing the effect of initCapacity() of HashMap in Java -[..]ltimatebb.cgi?ubb=get_topic&f=1&t=021171

OpenJDK and HashMap …. Safely Teaching an Old Dog New (Off-Heap!) Tricks -

We can run search in ConcurrenctHashMap -

(google search) (amazon search)

Thu Mar 09 23:13:09 HKT 2017 From /weblog/design


Someone saying that having private method is anti-pattern, here is the discussion -

Discussion of encapsulation -[..]/encapsulation-does-it-really-exist.html

My view on this is that most of the time there's little value in self-encapsulation. The value of encapsulation is proportional to the scope of the data access. Classes are usually small (at least mine are) so direct access isn't going to be an issue within that scope. Most accessors are simple assignments for the setter and retrieval for the getter, so there's little value in using them internally. -

(google search) (amazon search)

Tue Mar 07 22:50:23 HKT 2017 From /weblog/computer+science


Introduction of various java linguistics tools:


Authors homepage -

Some other Natural Language Processing links -[..]-attempt-at-natural-language-processing/

How google improve the translation -[..]016/09/a-neural-network-for-machine.html

(google search) (amazon search)

Wed Mar 01 00:26:23 HKT 2017 From /weblog/house


free to ask medical advice:

if you English is good

If not:

(google search) (amazon search)

Tue Feb 28 17:10:49 HKT 2017 From /weblog/java/fundamental


Overview of weak, soft and Phantom References
Second, PhantomReferences avoid a fundamental problem with finalization: finalize() methods can "resurrect" objects by creating new strong references to them. So what, you say? Well, the problem is that an object which overrides finalize() must now be determined to be garbage in at least two separate garbage collection cycles in order to be collected. When the first cycle determines that it is garbage, it becomes eligible for finalization. Because of the (slim, but unfortunately real) possibility that the object was "resurrected" during finalization, the garbage collector has to run again before the object can actually be removed. And because finalization might not have happened in a timely fashion, an arbitrary number of garbage collection cycles might have happened while the object was waiting for finalization. This can mean serious delays in actually cleaning up garbage objects, and is why you can get OutOfMemoryErrors even when most of the heap is garbage.

With PhantomReference, this situation is impossible -- when a PhantomReference is enqueued, there is absolutely no way to get a pointer to the now-dead object (which is good, because it isn't in memory any longer). Because PhantomReference cannot be used to resurrect an object, the object can be instantly cleaned up during the first garbage collection cycle in which it is found to be phantomly reachable. You can then dispose whatever resources you need to at your convenience.

Arguably, the finalize() method should never have been provided in the first place. PhantomReferences are definitely safer and more efficient to use, and eliminating finalize() would have made parts of the VM considerably simpler. But, they're also more work to implement, so I confess to still using finalize() most of the time. The good news is that at least you have a choice.[..]las/archive/2006/05/understanding_w.html

The other valuable reference about object life cycle -[..]ormance/1st_edition/html/

Incorrect use of reference can cause GC issue -

one more related blog -[..]garbage-collector-and-reference-objects/

(google search) (amazon search)

Tue Feb 28 16:39:40 HKT 2017 From /weblog/java/performance


Free online GC log Analyzer -

Free online thread analyzer -[..]y-and-cpu-monitoring-tools-and-technique

(google search) (amazon search)

Tue Feb 28 00:03:14 HKT 2017 From /weblog/science/animal


about-search-and-rescue-dogs -[..]arch-and-rescue-dogs-youll-want-to-know/

(google search) (amazon search)

Mon Feb 27 20:11:29 HKT 2017 From /gallery/Home/YimKan/htc


(google search) (amazon search)

Mon Feb 27 20:11:13 HKT 2017 From /gallery/Home/YimKan/htc


(google search) (amazon search)

Mon Feb 27 20:10:17 HKT 2017 From /gallery/Home/YimKan/htc


(google search) (amazon search)

Sat Feb 25 18:26:46 HKT 2017 From /weblog/software_engineering/testing

best practices

Consider the risk of not being tested -[..]sting-on-toilet-risk-driven-testing.html

Fidelity, Resilience, Precision -[..]testing-on-toilet-effective-testing.html

Attributes that unit test should have: Functionality, Accuracy, Instant, Locator -

Isolation -[..]/2012/04/is-your-unit-test-isolated.html

Tips of keeping unit tests running fast -

Testing Patterns -

Continuously to break thing so that we know our system is solid -[..]11/04/working-with-the-chaos-monkey.html

First rule -[..]08/10/01/nothing_is_too_trivial_to_test/

Test first/last is not important? Unit test either? What do you think?

* The name of the test should describe the requirement of the code
* There should be at least one test for each requirement of the code. Each possible path through of the code is a different requirement#
* Test the goal of the code, not the implementation[..]AppQuality&asrc=EM_NLN_761453&uid=703565[..]og/2007/08/how-not-to-run-beta-test.html

The teaser: Fast, Isolated, Repeatable, Self-validating, and Timely. -[..]es/2007/08/02/not-a-task-but-an-approach

Corner cases -[..]s/2007/02/testheuristicscheatsheetv1.pdf

One of the targets of TDD coding -[..]e-code-is-about-managing-complexity.aspx

Design for unit test -[..]es/content/DesigntoUnitTest/article.html

Push and Pull approach -

When not to test -

Test the story, rather than the implementation -[..]ving-to-scenario-based-unit-testing.html

Test the configuration -[..]TSS10ctqa&asrc=EM_NLN_8746433&uid=703565

Feel the deep synergy of design and test constraint -[..]athers_blog/2007/09/the-deep-synerg.html

Another set of principles for automated testing -[..]of-principles-for-automated-testing.html

Priority for tester -[..]

A lot of links -[..]-links-biased-toward-exploratory-testing[..]nit-tests-5-principles-for-unit-testing/

Some information and suggestion about setting up a local integrated testing environment -[..]

Virtual Panel: Code-to-Test Ratios, TDD and BDD -

A test is complete when its body contains all of the information you need to understand it, and concise when it doesn't contain any other distracting information. -[..]ting-on-toilet-what-makes-good-test.html

Discussion about naming the tests -[..]14/03/17/getting-junit-test-names-right/[..]ting/writing-clean-tests-naming-matters/[..]esting-on-toilet-test-behaviors-not.html <- Test behaviour, not method. This will make your tests more resilient since adding new behaviors is unlikely to break the existing tests, and clearer since each test contains code to exercise only one behavior.

Tips on having better assertion or cleaner test -[..]ur-test-code-with-custom-assertions.html[..]-friday-most-internal-dsls-are-outdated/[..]ertions-with-a-domain-specific-language/

Good to prevent setup and tearDown?

#1 Treat Test Code as Production Code
#2 Use Test Patterns to achieve great readability
#3 Avoid Unreliable Tests
#4 Test at The Appropriate Level
#5 Do Use Test Doubles[..]insights/blog/write-better-tests-5-steps[..]om/core-java/junit/junit-best-practices/

Document ‘Why’, specify ‘What’, automate ‘How’ -[..]/agile/2016/05/24/large-test-suites.html

(google search) (amazon search)

Thu Feb 23 22:03:20 HKT 2017 From /gallery/Home/YimKan/htc


(google search) (amazon search)