setgetweb.com - Notes

Google
 

Docker

Installing Docker for Windows in order to load/deploy Dockerfiles for WebSphere Application Server traditional.


Blockchain

Playing with IBM's online Blockchain development environment.

For more information see the IBM developer blockchain page at developer.ibm.com/blockchain/.


Password-less login and remote execution

To achieve a password-less login from Unix host A to remote Unix host B, see SSH public-key authentication. You can leverage this functionality to automate execution of processes on the remote host.


Sporadic exceptions

Sporadic exceptions in a clustered environment generally indicate that one of the cluster members is misconfigured. For example, a jar file version is out-of-date on one of the cluster members. Or, if you are making web service calls to a VIP that load balances to multiple producer hosts, and you are getting sporadic errors related to SOAP calls, this generally indicates that one of the web service producer hosts is misconfigured.


Friday Night Poker Party

I finally got around to digitizing my collection of Friday Night Poker Party radio shows. For cognoscenti only. Enjoy.


WAS front ends

  • WAS web server plug-in

    Interface between a web server and an application server that determines server to which a client request, such as servlets, needs to be routed.

  • WebSphere DataPower

    Secure appliance-based proxy server offering enhanced functionality, including WS-Addressing, custom advisors, QOS, and SLA.

  • WAS proxy server

    Routes HTTP requests to content servers. Can be the initial point of entry for requests to servers in the enterprise. Not safe for DMZ deployment. Typically fronted by a web server, or used in internal only environments where stringent host security requirements are not required.

  • DMZ Proxy Server for IBM WAS

    Designed to be safely installed on a stand-alone node in a DMZ. Provides session affinity, failover support, and workload balancing for the WAS topology. The DMZ is a safe zone between firewalls, typically located between a client and a backend server. Accepts requests from clients on the Internet, and forwards the requests to servers in the enterprise environment.

  • On Demand Router (ODR)

    Intelligent router that is aware of the dynamic state of the cell. If one server in the cell fails, the requests are routed to another server. The configuration of the ODR in the DMZ is not supported.


DataPower XI52 in a nutshell

The IBM DataPower XI52 appliance provides an ESB backbone that facilitates (brokers) communication between services. Features include...

Protocol virtualization Communication between parties who use different protocols such as http, https, ftp, MQ. ESB bridges (converts) these protocols.
Message format virtualization For example, one party sends XML (SOAP) message, ESB converts to JSON, which is sent to backend.
Endpoint virtualization WSDL services that used to exist on servers can be moved to ESB.
XML attack security Including DoS, MMXDos, and other attacks.
Configuration driven interface Less code to write
XML processing at wire speed. Versus server-based ESB solutions that operate at software speed.


Agile vs. Waterfall

Having now worked in both Agile and Waterfall software development shops, an analogy came to mind: Agile is in-memory data, Waterfall is persisted data. Agile shops value talk over the written word, generally eschewing documentation as an insalubrious chore. Talk is the preferred medium of knowledge transfer, with the information transferring directly into the memory of target individuals. Cached in a person's brain, retrieval is very fast. With Waterfall, documentation is the preferred method of knowledge transfer. Patterns and procedures are refined, signal to noise ratios are increased, and new team members, for whom the original chatter is gone with the wind, can get up to speed in a comprehensive and rigorous manner. Both have their advantages and disadvantages.


Join lines

HTML with line breaks in the middle of the sentence can be made continuous by running lastword.sh to display the last word of any text, and then running join.sh against the output.


Winter 2014

An epic winter in my home state of Minnesota. Even the grizzled locals are exasperated. Me, I spent most of it at the Miami Hilton, courtesy of a client engagement. There were, however, some white-knuckle rides driving the treacherous stretch through the Minnesota river valley that converys one to-and-from the MSP airport and Mankato.


Plain old HTML files

To get plain old HTML files from IBM's Portal and WCM Wiki, go to the translation page, and choose English.


Add anchor tags

A just-good-enough script to add anchor tags for each line with an <h3> tag.

    for i in `ls *.html`
    do
        echo $i
        ./anchor.sh $i
    done
    

You might want to remove tags first...


Create a table of contents

To create a table of contents...


XC10 DataPower

On a more mundane note, my work continues with multiple XC10 implementations, mostly up in Canada. Using the XC10 as a replacment for local DynaCache and local session management.

Sturgeon! Dick! Asimov! Heinlein! DeCamp! Bradbury! Sheckley! Pohl!

All my favorites!

Public key authentication using Cygwin

Lots of work with the WebSphere Datapower XC10 appliance, used, in this case, for eXtreme Scale dynamic cache grids supporting WebSphere Commerce.


Standard Deviation

For example, hosts foo and bar both have an average response time of 24 seconds. Host foo has response times of 22, 24, 26, and 24 ms. Host bar has response times of 2, 40, 50, and 4. Although mean time is the same, the standard deviation of host bar is greater.


Homegrown shell scripts

This site leverages some effective, albeit cursorily written, shell scripts to perform batch editing. For example, the following script will recurse through a document root and for each html file, if the phrase is found, remove the word "easily" from a particular phrase...

    rp.sh you can easily install : we can install

rp.sh uses a colon (:) as a separator. If the line to change has a colon, substitute the colon with a period (.). For example, to change "The end:" to "The end."...

    rp.sh The end. : The end.

...or you can run a script that uses a comma as a delimiter, as long as the phrase does not contain a comma...

To convert lines with angle brackets...

    rp.sh \<li\> my phrase : \<p\> \<li\> my phrase

To remove a phrase...

    rp.sh Remove this phrase. :

For rp.sh to work efficiently, we need to grep unbroken phrases. Many html files converted from Word and PDF have lots of broken lines. These are lines that end with a word, instead of a period. We can used join.sh to find files containing our keyword at the end of the line, and join that line with the line below.

To recurse through html files and replace phrase with an inline link...

    x=/path/to/html/files
    link.sh $x myfile.html phrase to apply inline link

To generate a list link.sh commands based on titles of files in current directory...

To remove a link...

    removelink.sh setgetweb.com/path/to/file.html inline link phrase to remove

To acquire the original html files to work with, we can use wget. For example...

    wget http://foo.com/topics/file1.html
    wget http://foo.com/topics/file2.html
    wget http://foo.com/topics/file3.html
    wget http://foo.com/topics/file4.html

To download associated files, such as gifs...

    wget -r -nc http://foo.com/topics/file1.html

To convert a text file into an html file...

Sometimes navigation panels hid actual URLs behind javascript. One workaround for acquiring these URLS is to copy-paste the contents of the navigation panel to an MS Word doc, and then save the document as html.

After downloading, we beautify by running a series of sed commands.

To open all files with phrase "foo bar" in vi, run...


WebSphere Commerce Web 2.0 Coremetrics

When a Web 2.0 store refreshes a part of the page, the analyticsJS JavaScript object, loaded in every store page and waiting for a Web 2.0 event, sends JSON data to the Coremetrics Event Listener, which invokes the Coremetrics JavaScript tagging function.


Non-interactive log on to Portal

To log on automagically into Portal:

    http://host:port/wps/guest/cxml/04_SD9ePMtCP1I800I_KydQvyHFUBADPmuQy?userid=wpadmin&password=foo


Passwordless scp between hosts

To scp files from host to another without having to enter credentials, set up ssh-based public key authentication. Once configured, in addition to passwordless copies, you can execute remote commands using ssh -f. Automation via shell scripts and cron is also now enabled, with an infinite set of possibilities. Cost: $0.


Virtual portal scopes

Separation between virtual portals is achieved by scoping the portal resources of the virtual portals. Scoping means making portal resources available uniquely and separately to individual virtual portals and their users:

A portal resource scoped for virtual portals exists individually for each virtual portal and has an identification unique within the entire portal installation. The resource is available only in one particular virtual portal and we can customize such resources for each virtual portal independently.

For example, the resource...

    resource_A

...is scoped for the virtual portals...

  • VP_1
  • VP_2
  • VP_3

...as...

  • resource_A_VP_1
  • resource_A_VP_2
  • resource_A_VP_3

Customizing resource_A_VP_1 does not affect resource_A_VP_2 and resource_A_VP_3.


What the dickens?

FastCompany explains the internet to a 19th century British street urchin.


Fully-qualified URLs from Javascript content

One way to to get fully-qualified URLs from JavaScript content, such as the left navigation table on an IBM Redbook, is to copy content into MS Word, and then save document as HTML.


JCR Explorer and XPath

Been running a lot of XPath queries in JCR explorer these days, trying to fix some syndication issues.

For example, getting error...

Could not save item with id DepRef(id:121212121 type: com.aptrix.pluto.site.SiteArea nonDraft:true draft:false purged:false parentId:919191919 timeStamp:123 stateUpdate: false versions:null moved: false) because it could not find its parent.

...means parent uuid on subscriber does not match parent uuid on syndicator. To verity, in JCR Explorer, run the following queries on both systems...

//element(*, ibmcontentwcm:siteArea)[@jcr:uuid = '121212121']
//element(*, ibmcontentwcm:siteArea)[@jcr:uuid = '919191919']

You will undoubtedly find both uuids on syndicator, but not subscriber. This will be the case even if site areas show as existing on both machines from within the authoring portlet on the subscriber.

One way to fix...

  1. Delete site area child and parent on subscriber
  2. Edit site area on syndicator and then save, to give item a fresh time stamp.
  3. Re-syndicate


lsof

A paen to lsof.

See also: How can I view SOAP requests using tcpmon?. Note that SOAPUI utility provides similar information.