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.
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.
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
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.
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])
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
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 charactersand 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
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
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.
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.
Tuesday, October 05, 2004
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
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.
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.
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
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.
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.
"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.
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.
Subscribe to:
Posts (Atom)