Monday, November 22, 2004

add links

finally I got some time today to add my frequent visited links to my links. it will make it easier for me to navigate them.

Thursday, November 11, 2004

some typical WAS HA configuration

For a typical WAS HA architecture, it's sth like the following:

WTE(Caching Proxy)<---->ND (Network Dispatcher)<-->multiple IHS <---> WAS cluster (vertically cloned WAS) <--> DB2/MQ

Each one occupies a physical machine. Pretty expensive cost, multiple points of failure if not set up correctly, each one performs its own function.




HD enclousre works like a charm

I bought this Powerdata HD enclousre 2.5" for $14.99CAN and 1 year in store warranty. It 's pretty darn fast and I'd copied 900M in about 5 minutes. I like this design since it's pluggable and I can still use my notebook HD for other purpose.

Tivoli Performance Viewer jumpstart hack

TPV turns out to be a usable tool for PD and performance monitoring. At once I used it to find if a suspicious EJB method has been called. That really helped our dreadful deadlock hunting in WCS.

If you happen to have a WAS 5.x installed but without TPV installed, you can just copy from someone else's WAS with TPV by doing the following:

1. copy tperfviewer.bat/.sh to the $WAS_HOME/bin
2. copy perf*.jar, pmi*.jar, chart.jar (KL group's chart widget) to $WAS_HOME/lib.

I call it jumpstart since it 's like copy some files from the working one to the non-working one.

Now you are ready to fire it up like "tperfviewer ", soap port is 8879 for WAS ND by default.




Tuesday, November 02, 2004

Murphy's Love Laws

1. All the good ones are taken.
2. If the person isn't taken, there's a reason. (corr. to 1)
3. The nicer someone is, the farther away (s)he is from you.
4. Brains x Beauty x Availability = Constant.
5. The amount of love someone feels for you is inversely proportional to how much you love them.
6. Money can't buy love, but it sure gets you a great bargaining position.
7.The best things in the world are free --- and worth every penny of it.
8. Every kind action has a not-so-kind reaction.
9. Nice guys(girls) finish last.
10. If it seems too good to be true, it probably is.
11. Availability is a function of time. The minute you get interested is the minute they find someone else.

Monday, October 25, 2004

Tuesday, October 19, 2004

a simple Jython timing function

for any func i'd like to time in Java, I can use it with a call

print 'foo takes=',mytime(foo,[bar1,bar2,..barN])



# a higher order func
def mytime(f,args):
start=System.currentTimeMillis()
f(*args)
end=System.currentTimeMillis()

return end-start


Wednesday, October 13, 2004

write tools in Jython

It should work with other JDBC drivers. Wrote this article at the beginning of year as a result of making my working life easier.

english
   
chinese


Thanksgiving long weekend flu

i 'd been coughing lately. half of ppl around me are coughing.. must be flu.. weekend is even busier than weekdays... toronto has a crazy night life for asian ppl.. karoke, late dinner, drinks,friends known and unknown.. just like old times.

Friday, October 08, 2004

the design of CLP

Today I took a quick look at WSLT (from BEA) as a scripting solution (written in Jython) for WebLogic admin tasks.

For the last couple of days, I implemented a mini CLP for some WAS DynaCache cache. It is simple and quite extensible. I followed the DB2 CLP design.

This brings me an interesting thought on this issue.
Which way is better?

#1: design CLP commands only in a list of string seperated by white space characters and let
platform shell to take care of flow control, variable,name space if any.

#2: a full scripting language such as WebSphere 's wsadmin and Weblogic's WSLT. It provides flow control, variable, etc. That's why Jacl or Jython has been directly exposed to the end user (i.e. administrator).

Personally, i think #1 is better in that after a while, I don't need to look at the command reference any more. If I want to control it, always go back to my favorite shell. Secondly, for anyone who don't know Tcl or Jython (as most admin from Perl or Shell) syntax well, to look up the reference is pain in the butt.

DB2 CLP design gets this right: to keep simple things simple.

Victor

Wednesday, October 06, 2004

automated QA tools using Jython

1. Grinder 3

http://grinder.sourceforge.net/g3/index.html

2. PushToTest

I've evaluated both of them from a user's perspective. I am a developer who has expericence with Silk Performancer.

Here are my opinions in summary.

  • It should provide a higher level API than writing Jython. Silk Performance BDL has a better design on this although it's somehow akward Pascal syntax. IMHO, Jython can be used to parse and eval the higher level API easily, I did this myself for writing a mini command line processor in my project, it can turn a cmd,A1...An into a function call (API) of cmd(*args). pretty cool. 1 liner of lamba function.



  • It looks like Proxy server is very popular in implemening this technique.
    The recorder 's proxy can be improved to support HTTPS. Only 1 certificate needed to install btw the browser and the proxy server for Java solution.
    Silk did better job to bypass SSL layer i think. pretty cool too.



  • The GUI is sluggish written in SWING. should use IE/browser or rich client in SWT.













Monday, October 04, 2004

things to learn in the coming month till Xmas

Try to squeeze time daily to learn

o Objective Caml.
just download it.

o Job related
more Struts, a bit more WCS maybe




Tuesday, September 28, 2004

a chat with Tao

I had a chat this morning with Tao ( a coworker at Sun). He works for TD now and a super smart guy. He is so good at Perl now and write Perl code without referencing to the manul. He loves writing closure in Perl 5.

We both are interested in functional programming. He points me to OCAML www.ocaml.org, a ML style language. I came across it before and I think i will start learn it once I've time.

Monday, September 27, 2004

four challenges for me

I had a thought on the continous learning efforts in this career.


1. learning from Technology.

It requires me to master at least 7 major languages (C, Perl, Python, Java/C++,Lisp,SQL, ksh) and other mini languages like HTML, Sed,AWK,PHP, ASP, VB, JavaScript etc. Without them, you can't see the whole picture and will never able to design an useful language by yourself.

In addition, a solid hands on experience with different OS, networking protocols, and those well-written books from Richard Steven.

Right now, I am pretty much at half way of being the master. I am pretty fast learning but need time to focus on details. It is no easy task. Sometimes I feel like a ShaoLin monk having to spend all his life to become a master in one of their (1/72?) fighting techniques.


2. learning from Product

It requires me to learn all popular products on enterprise levle such as WebSphere, WebLogic, DB2, MQ etc.. as well as Open Source level such as Apache, Tomcat, Struts, Velocity,Maven etc.


If you get deeper into this, you will see why they design it that way, practical or not. It is this part of design reverse engineering that makes it interesting besides looks good on resume. Sometimes, it is popping up in my mind I saw this happened somewhere, maybe I can reapply it over there. The product innner knowledge does get you smarter since it is the product of other smart people if it is proven to be popular:-).




3. from Business domain
Basic understanding of eCommerce, finance etc is necessity

4. from People
How to deal with different people at work. People are different.



Wednesday, September 22, 2004

interceptor pattern

It is used at least:

o WAS DynaCache

o EJB

Wednesday, September 15, 2004

funny comments about Java developers

http://www.linuxworld.com/story/44251_p.htm

I laughed my head off when he is talking about how tedious to take a dinner/lunch.

eye opener for me

This is from Steve Tilkov's blog.
"What basically determines whether a language is useful is whether it can be used to solve real world problems efficiently. And this, in turn, depends very much on the libraries available — and the only chance for any language to compete with Java or C# is if it’s based on the JVM/CLR
"

I hold the same view for a while. That is why I'm interested in Jyhon as vast libraries Java has. Now I wanna know about add LISP like features on JVM such as macro.

a good book from MIT

“Structure and Interpretation of Computer Programs” http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html#%tocstart

Wednesday, September 08, 2004

WAS DynaCache

It is from IBM research to cache pages in fragment or in full.
An interesting idea to do caching on view (MVC term) level.

However one thing bugs me is their cachespec.xml. I think the rules (cache rules, invalidation/dependency rules) described in XML are not very clear, esp. missing a 1 liner of condition (logic expression) expression that telling us when to cache and invalidate. It is quite tedious to read.
The right design to make it easier and readier is to use 1 liner logic experiession like BNF syntax. XML is just used for encapsulation only.