Rainer Vetter blogged about this earlier: -
Most social networks (Twitter, Blogger, etc.) provide Representational State Transfer (REST) APIs to allow users to extend functionality and interact with their content. In the world of Enterprise Social Networks you, as a Lotus Connections user, can create your own applications and scripts that manipulate Connections content and functionality through the REST / Atom Syndication Format (Atom) API. There are many situations in which you can do smarter work by automating some everyday task, exporting important information to another application, or importing pre-prepared data to your collaborative social web.
One of the most useful features of Lotus Connections is the Wikis application, with which you can collaboratively create pages in rich text, HTML, or Wiki text, sharing them across your network or keeping them as your personal work diaries. Using the REST API you are able to send the data from your selected Wiki page to an external editor or save it as a part of a HTML document. You can also save your Wiki content for off-line editing and synchronize it later with the on-line version.
In this article we demonstrate the possibilities of the Lotus Connections API—specifically, the Wikis application API—and guide you through the process of writing your own REST/Atom client in Python. We introduce some basic scripts, explaining them line by line, and show how to authenticate with Lotus Connections and retrieve and parse a Wiki, or Wiki page Atom entry. You will also learn how to get and post the page content, all of which is made possible by use of the REST/Atom API
Want to know more ? Check out Rainer's post ...
Geeking in technology since 1985, with IBM Development, focused upon Docker and Kubernetes on the IBM Z LinuxONE platform In the words of Dr Cathy Ryan, "If you don't write it down, it never happened". To paraphrase one of my clients, "Every day is a school day". I do, I learn, I share. The postings on this site are my own and don’t necessarily represent IBM’s positions, strategies or opinions. Remember, YMMV https://infosec.exchange/@davehay
Wednesday, 5 January 2011
CAT - Lotus Connections Administration Toolkit
This was posted to the Greenhouse Catalog a few weeks back.
Administering Lotus Connections requires editing XML files and sending commands in a case sensitive scripting language using “wsadmin” - the command line interface of the WebSphere Application Server.
Lotus Connections is deployed on WebSphere application server. Many Lotus Connections administrators have a background of administrating Lotus Domino using the Domino Administrator and are not used to the command line interface of the WebSphere Application Server. Domino Administrators might therefore avoid using wsadmin as much as possible.
Executing a single administrative task in Lotus Connections with wsadmin typically requires the following steps: 1. open remote console to Connections Server, 2. open DOS-BOX, 3. launch wsadmin, 4. identify and load relevant Jython scripts separately, 5. store temporary data, 6. check out XML file, 7. edit temporary data in XML file and 8. finally check in XML file.
Sample tasks that challenge even an experienced Lotus Connections administrator include:
All of the above and thousands more administrative tasks can be completed using CAT with an intuitive user interface. Administrative tasks that require several consecutive steps are carried out at once.
Want to know more ? Then click here for more details ...
Administering Lotus Connections requires editing XML files and sending commands in a case sensitive scripting language using “wsadmin” - the command line interface of the WebSphere Application Server.
Lotus Connections is deployed on WebSphere application server. Many Lotus Connections administrators have a background of administrating Lotus Domino using the Domino Administrator and are not used to the command line interface of the WebSphere Application Server. Domino Administrators might therefore avoid using wsadmin as much as possible.
Executing a single administrative task in Lotus Connections with wsadmin typically requires the following steps: 1. open remote console to Connections Server, 2. open DOS-BOX, 3. launch wsadmin, 4. identify and load relevant Jython scripts separately, 5. store temporary data, 6. check out XML file, 7. edit temporary data in XML file and 8. finally check in XML file.
Sample tasks that challenge even an experienced Lotus Connections administrator include:
- Assigning community ownership from a user that left the company to another user
- Reassign content and rights to a user after a name change
- Recover accidentally deleted activities
- Assigning the rights of one user to another user
- Assigning the rights of one user to another user
All of the above and thousands more administrative tasks can be completed using CAT with an intuitive user interface. Administrative tasks that require several consecutive steps are carried out at once.
Want to know more ? Then click here for more details ...
Tuesday, 4 January 2011
Installating IBM DB2 on Ubuntu Linux 10.10
As part of a new everything-on-one-box Lotus Connections 3.0 installation, I've updated my monster PC ( known as Orac ) to Ubuntu 10.10.
Orac has a quad core Intel CPU, 8 GB of RAM and 1.3 TB of storage, so he's a bit of a beast.
Having installed a 32-bit version Ubuntu 10.10, I was ready to go.
Oh, hang on, the free command only shows 3.X GB of RAM, despite my having 8 GB.
Ah, hang on, I forgot to install the PAE kernel - as I'm using the 32-bit distro, I need to use a kernel that can address more than 3.3 GB.
This is easy to fix - I simply ran the following command: -
sudo apt-get install linux-generic-pae
which installed three packages: -
ii linux-generic-pae 2.6.35.24.28 Complete Generic Linux kernel
ii linux-image-2.6.35-24-generic-pae 2.6.35-24.42 Linux kernel image for version 2.6.35 on x86
ii linux-image-generic-pae 2.6.35.24.28 Generic Linux kernel image
Now, after a quick reboot, the free command returns: -
total used free shared buffers cached
Mem: 8261504 5571908 2689596 0 46396 5081164
-/+ buffers/cache: 444348 7817156
Swap: 6538236 0 6538236
which is rather shiny.
So, on to DB2 ....
*NOTE* This is *NOT* a supported platform - it's merely for me to "play" with *NOTE*
Once I had overcome my problem with the TAR command, I started the installation program: -
cd /tmp
./db2setup
which immediately failed with: -
ERROR:
The required library file libaio.so.1 is not found on the system.
Check the following web site for the up-to-date system requirements
of IBM DB2 9.7
http://www.ibm.com/software/data/db2/udb/sysreqs.html
http://www.software.ibm.com/data/db2/linux/validate
Aborting the current installation ...
Run installation with the option "-f sysreq" parameter to force the installation.
:-(
However, as ever, Google had the answer, Google is my friend.
Antonio Cangiano has blogged here about this - the solution is simple: -
sudo apt-get install libstdc++5
sudo apt-get install libaio-dev
sudo ./db2setup
Once I did this, the DB2 installation worked like a dream.
I *love* it when a plan comes together :-)
*NOTE* This is *NOT* a supported platform - it's merely for me to "play" with *NOTE*
Orac has a quad core Intel CPU, 8 GB of RAM and 1.3 TB of storage, so he's a bit of a beast.
Having installed a 32-bit version Ubuntu 10.10, I was ready to go.
Oh, hang on, the free command only shows 3.X GB of RAM, despite my having 8 GB.
Ah, hang on, I forgot to install the PAE kernel - as I'm using the 32-bit distro, I need to use a kernel that can address more than 3.3 GB.
This is easy to fix - I simply ran the following command: -
sudo apt-get install linux-generic-pae
which installed three packages: -
ii linux-generic-pae 2.6.35.24.28 Complete Generic Linux kernel
ii linux-image-2.6.35-24-generic-pae 2.6.35-24.42 Linux kernel image for version 2.6.35 on x86
ii linux-image-generic-pae 2.6.35.24.28 Generic Linux kernel image
Now, after a quick reboot, the free command returns: -
total used free shared buffers cached
Mem: 8261504 5571908 2689596 0 46396 5081164
-/+ buffers/cache: 444348 7817156
Swap: 6538236 0 6538236
which is rather shiny.
So, on to DB2 ....
*NOTE* This is *NOT* a supported platform - it's merely for me to "play" with *NOTE*
Once I had overcome my problem with the TAR command, I started the installation program: -
cd /tmp
./db2setup
which immediately failed with: -
ERROR:
The required library file libaio.so.1 is not found on the system.
Check the following web site for the up-to-date system requirements
of IBM DB2 9.7
http://www.ibm.com/software/data/db2/udb/sysreqs.html
http://www.software.ibm.com/data/db2/linux/validate
Aborting the current installation ...
Run installation with the option "-f sysreq" parameter to force the installation.
:-(
However, as ever, Google had the answer, Google is my friend.
Antonio Cangiano has blogged here about this - the solution is simple: -
sudo apt-get install libstdc++5
sudo apt-get install libaio-dev
sudo ./db2setup
Once I did this, the DB2 installation worked like a dream.
I *love* it when a plan comes together :-)
*NOTE* This is *NOT* a supported platform - it's merely for me to "play" with *NOTE*
Doh!, Error "tar: .: Cannot utime: Operation not permitted" seen when expanding an archive
I saw this exception: -
tar: .: Cannot utime: Operation not permitted
tar: Exiting with failure status due to previous errors
earlier when expanding a TAR file ( DB2 9.7 as a matter of fact ) into the /tmp directory of my Ubuntu 10.10 boxen: -
cd /tmp
tar xvf /media/LenovoExternal/Products/DB297/db297linux32.tar
Googling about the exception is actually telling me that TAR cannot update the access and modification times of the files within the archive.
I was running this as a non-root user.
You can guess the rest ...
When I checked the permissions of /tmp, I saw: -
drwxrwxrwt 19 root root 4096 2011-01-04 18:22 tmp/
which suggests, to my simple mind, that I have all the right permissions, although the directory is owned by root.
Needless to say, when I ran the command "as root": -
cd /tmp
sudo tar xvf /media/LenovoExternal/Products/DB297/db297linux32.tar
all was well.
I reproduced this in my home directory: -
mkdir ~/foo
chown root:root ~/foo
chmod a+w ~/foo
cd ~/foo
tar xvf /media/LenovoExternal/Products/DB297/db297linux32.tar
This suggests to me that, despite the global RWX permissions: -
drwxrwxrwx 6 root root 4096 2011-01-04 18:34 foo/
the TAR command barfs if it's asked to update the utime of files within a directory that the user does not own.
Interesting, que ?
tar: .: Cannot utime: Operation not permitted
tar: Exiting with failure status due to previous errors
earlier when expanding a TAR file ( DB2 9.7 as a matter of fact ) into the /tmp directory of my Ubuntu 10.10 boxen: -
cd /tmp
tar xvf /media/LenovoExternal/Products/DB297/db297linux32.tar
Googling about the exception is actually telling me that TAR cannot update the access and modification times of the files within the archive.
I was running this as a non-root user.
You can guess the rest ...
When I checked the permissions of /tmp, I saw: -
drwxrwxrwt 19 root root 4096 2011-01-04 18:22 tmp/
which suggests, to my simple mind, that I have all the right permissions, although the directory is owned by root.
Needless to say, when I ran the command "as root": -
cd /tmp
sudo tar xvf /media/LenovoExternal/Products/DB297/db297linux32.tar
all was well.
I reproduced this in my home directory: -
mkdir ~/foo
chown root:root ~/foo
chmod a+w ~/foo
cd ~/foo
tar xvf /media/LenovoExternal/Products/DB297/db297linux32.tar
This suggests to me that, despite the global RWX permissions: -
drwxrwxrwx 6 root root 4096 2011-01-04 18:34 foo/
the TAR command barfs if it's asked to update the utime of files within a directory that the user does not own.
Interesting, que ?
Monday, 3 January 2011
Aide Memoire - Some useful (to me) Linux commands
Want to know what files are open ?
lsof
Want to know what files are opened by a specific process ?
lsof -p <pid>
- as an example, I've identified that WebSphere Portal is running as process ID ( pid ) 7725 so I use lsof -p 7725 to see all the files opened by that process
Want to know how large a file is ?
ls -lh
Want to see a file listing in order of modification ?
ls -ltrc
- shows the most recently modified at the bottom of the list
Want to search a binary file ?
grep --text <pattern> <filename>
or
grep -a <pattern> <filename>
- this gets around the error Binary file /opt/IBM/WebSphere/AppServer/java/bin//java matches
- I needed this to search a couple of logs files that contained some binary characters
Want to see files by type e.g. executable ?
ls -lF <filename>
- for example, this adds an asterisk to the listing to mark executable files
Want to list files without typing ls -alF ?
ll <filename>
- this is a useful little alias, as defined in ~/.bashrc
Want to know more about a process ?
Using the above example of WebSphere Portal running as process ID (pid) 7725, there are a bunch of files under the directory /proc/7725/ including: -
cat /proc/7725/status - shows memory utilisation etc.
cat /proc/7725/limits - shows various ulimits including open files etc.
- the first one was useful in confirming that my addition of ulimits -f 40000 to /opt/IBM/WebSphere/wp_profile/bin/setupCmdLine.sh had "taken" - this helped me overcome a "Too many open files" exception
lsof
Want to know what files are opened by a specific process ?
lsof -p <pid>
- as an example, I've identified that WebSphere Portal is running as process ID ( pid ) 7725 so I use lsof -p 7725 to see all the files opened by that process
Want to know how large a file is ?
ls -lh
Want to see a file listing in order of modification ?
ls -ltrc
- shows the most recently modified at the bottom of the list
Want to search a binary file ?
grep --text <pattern> <filename>
or
grep -a <pattern> <filename>
- this gets around the error Binary file /opt/IBM/WebSphere/AppServer/java/bin//java matches
- I needed this to search a couple of logs files that contained some binary characters
Want to see files by type e.g. executable ?
ls -lF <filename>
- for example, this adds an asterisk to the listing to mark executable files
Want to list files without typing ls -alF ?
ll <filename>
- this is a useful little alias, as defined in ~/.bashrc
Want to know more about a process ?
Using the above example of WebSphere Portal running as process ID (pid) 7725, there are a bunch of files under the directory /proc/7725/ including: -
cat /proc/7725/status - shows memory utilisation etc.
cat /proc/7725/limits - shows various ulimits including open files etc.
- the first one was useful in confirming that my addition of ulimits -f 40000 to /opt/IBM/WebSphere/wp_profile/bin/setupCmdLine.sh had "taken" - this helped me overcome a "Too many open files" exception
WebSphere Portal Express v7 on Ubuntu Linux - sloooooooooooooooooooow
Having installed WebSphere Portal Express v7 on Linux a while back, I'd noticed an issue where it'd fail to start, instead filling the logs with exceptions such as: -
[28/12/10 19:09:31:110 GMT] 0000000f EventLogServi I Rebuilding event log for library: Web Content
[28/12/10 19:11:31:375 GMT] 0000001d TimeoutManage I WTRN0006W: Transaction 0000012D2E629F6D00000005000000276FACDD0C7C3820993606C63E30166C874E766DD70000012D2E629F6D00000005000000276FACDD0C7C3820993606C63E30166C874E766DD700000001 has timed out after 120 seconds.
[28/12/10 19:11:31:377 GMT] 0000001d TimeoutManage I WTRN0124I: When the timeout occurred the thread with which the transaction is, or was most recently, associated was Thread[server.startup : 2,5,main]. The stack trace of this thread when the timeout occurred was:
java.util.ArrayList.indexOf(ArrayList.java:448)
java.util.ArrayList.remove(ArrayList.java:556)
java.util.Observable.deleteObserver(Observable.java:78)
org.apache.derby.impl.store.raw.data.BasePage.releaseExclusive(Unknown Source)
...
and: -
[28/12/10 19:38:21:873 GMT] 0000000f EventLogServi I Rebuilding event log for library: Blog Solo Template v70
[28/12/10 19:40:22:065 GMT] 0000001d TimeoutManage I WTRN0006W: Transaction 0000012D2E7D07F000000005000000486FACDD0C7C3820993606C63E30166C874E766DD70000012D2E7D07F000000005000000486FACDD0C7C3820993606C63E30166C874E766DD700000001 has timed out after 120 seconds.
[28/12/10 19:40:22:067 GMT] 0000001d TimeoutManage I WTRN0124I: When the timeout occurred the thread with which the transaction is, or was most recently, associated was Thread[server.startup : 2,5,main]. The stack trace of this thread when the timeout occurred was:
org.apache.derby.impl.store.access.btree.ControlRow.getIsRoot(Unknown Source)
...
and: -
[28/12/10 20:35:31:975 GMT] 0000000f EventLogServi I Rebuilding event log for library: Wiki Template v70
[28/12/10 20:37:32:087 GMT] 0000001b TimeoutManage I WTRN0006W: Transaction 0000012D2EB15E7700000005000000D76FACDD0C7C3820993606C63E30166C874E766DD70000012D2EB15E7700000005000000D76FACDD0C7C3820993606C63E30166C874E766DD700000001 has timed out after 120 seconds.
[28/12/10 20:37:32:088 GMT] 0000001b TimeoutManage I WTRN0124I: When the timeout occurred the thread with which the transaction is, or was most recently, associated was Thread[server.startup : 2,5,main]. The stack trace of this thread when the timeout occurred was:
org.apache.derby.impl.sql.execute.GenericQualifier.getOperator(Unknown Source)
...
etc.
Whilst I didn't actually resolve the issue, I simply left it running ( over the course of two days BUT with a suspend/resume somewhere in the middle ), and it sorted itself out.
Looking at the exceptions relating to org.apache.derby, I suspect that there is an issue with the Apache Derby database - I'm using the out-of-the-box version: -
[28/12/10 19:08:10:059 GMT] 00000008 InternalGener I DSRA8203I: Database product name : Apache Derby
[28/12/10 19:08:10:068 GMT] 00000008 InternalGener I DSRA8204I: Database product version : 10.3.3.1 - (883215)
[28/12/10 19:08:10:069 GMT] 00000008 InternalGener I DSRA8205I: JDBC driver name : Apache Derby Embedded JDBC Driver
[28/12/10 19:08:10:070 GMT] 00000008 InternalGener I DSRA8206I: JDBC driver version : 10.3.3.1 - (883215)
It may be simply that Derby cannot handle the event log rebuild process for the 10 WCM libraries that I have: -
*UPDATE* I note that this derby.log file is (a) marked as executable and (b) 2.3 GB ( yes, GIGABYTES ) in size. That'll make pleasant reading ...
In the meantime, if you see this, the best advice is to simply allow the rebuild to finish it's course. PS I even tried forcing a Javacore dump ( using kill -3 ) but WebSphere bravely kept running, even though I did get a Javacore logged to /opt/IBM/WebSphere/wp_profile.
[28/12/10 19:09:31:110 GMT] 0000000f EventLogServi I Rebuilding event log for library: Web Content
[28/12/10 19:11:31:375 GMT] 0000001d TimeoutManage I WTRN0006W: Transaction 0000012D2E629F6D00000005000000276FACDD0C7C3820993606C63E30166C874E766DD70000012D2E629F6D00000005000000276FACDD0C7C3820993606C63E30166C874E766DD700000001 has timed out after 120 seconds.
[28/12/10 19:11:31:377 GMT] 0000001d TimeoutManage I WTRN0124I: When the timeout occurred the thread with which the transaction is, or was most recently, associated was Thread[server.startup : 2,5,main]. The stack trace of this thread when the timeout occurred was:
java.util.ArrayList.indexOf(ArrayList.java:448)
java.util.ArrayList.remove(ArrayList.java:556)
java.util.Observable.deleteObserver(Observable.java:78)
org.apache.derby.impl.store.raw.data.BasePage.releaseExclusive(Unknown Source)
...
and: -
[28/12/10 19:38:21:873 GMT] 0000000f EventLogServi I Rebuilding event log for library: Blog Solo Template v70
[28/12/10 19:40:22:065 GMT] 0000001d TimeoutManage I WTRN0006W: Transaction 0000012D2E7D07F000000005000000486FACDD0C7C3820993606C63E30166C874E766DD70000012D2E7D07F000000005000000486FACDD0C7C3820993606C63E30166C874E766DD700000001 has timed out after 120 seconds.
[28/12/10 19:40:22:067 GMT] 0000001d TimeoutManage I WTRN0124I: When the timeout occurred the thread with which the transaction is, or was most recently, associated was Thread[server.startup : 2,5,main]. The stack trace of this thread when the timeout occurred was:
org.apache.derby.impl.store.access.btree.ControlRow.getIsRoot(Unknown Source)
...
and: -
[28/12/10 20:35:31:975 GMT] 0000000f EventLogServi I Rebuilding event log for library: Wiki Template v70
[28/12/10 20:37:32:087 GMT] 0000001b TimeoutManage I WTRN0006W: Transaction 0000012D2EB15E7700000005000000D76FACDD0C7C3820993606C63E30166C874E766DD70000012D2EB15E7700000005000000D76FACDD0C7C3820993606C63E30166C874E766DD700000001 has timed out after 120 seconds.
[28/12/10 20:37:32:088 GMT] 0000001b TimeoutManage I WTRN0124I: When the timeout occurred the thread with which the transaction is, or was most recently, associated was Thread[server.startup : 2,5,main]. The stack trace of this thread when the timeout occurred was:
org.apache.derby.impl.sql.execute.GenericQualifier.getOperator(Unknown Source)
...
etc.
Whilst I didn't actually resolve the issue, I simply left it running ( over the course of two days BUT with a suspend/resume somewhere in the middle ), and it sorted itself out.
Looking at the exceptions relating to org.apache.derby, I suspect that there is an issue with the Apache Derby database - I'm using the out-of-the-box version: -
[28/12/10 19:08:10:059 GMT] 00000008 InternalGener I DSRA8203I: Database product name : Apache Derby
[28/12/10 19:08:10:068 GMT] 00000008 InternalGener I DSRA8204I: Database product version : 10.3.3.1 - (883215)
[28/12/10 19:08:10:069 GMT] 00000008 InternalGener I DSRA8205I: JDBC driver name : Apache Derby Embedded JDBC Driver
[28/12/10 19:08:10:070 GMT] 00000008 InternalGener I DSRA8206I: JDBC driver version : 10.3.3.1 - (883215)
It may be simply that Derby cannot handle the event log rebuild process for the 10 WCM libraries that I have: -
- Blog Solo Template v70
- Blog Template v70
- C_Content
- C_Resources
- Sample
- TB_Catalog
- TB_Core
- TB_Shared
- TB_Top
- Web Content
*UPDATE* I note that this derby.log file is (a) marked as executable and (b) 2.3 GB ( yes, GIGABYTES ) in size. That'll make pleasant reading ...
In the meantime, if you see this, the best advice is to simply allow the rebuild to finish it's course. PS I even tried forcing a Javacore dump ( using kill -3 ) but WebSphere bravely kept running, even though I did get a Javacore logged to /opt/IBM/WebSphere/wp_profile.
Saturday, 1 January 2011
BlueJ - an interactive Java learning environment
One of my Twitter correspondents posted this a few weeks back, and I've been meaning to blog about it.
"The BlueJ environment was developed as part of a university research project about teaching object-orientation to beginners. The system is being developed and maintained by a joint research group at La Trobe University, Melbourne, Australia, and the University of Kent in Canterbury, UK. The project is supported by Sun Microsystems.
The aim of BlueJ is to provide an easy-to-use teaching environment for the Java language that facilitates the teaching of Java to first year students. Special emphasis has been placed on visualisation and interaction techniques to create a highly interactive environment that encourages experimentation and exploration.
BlueJ is based on the Blue system. Blue is an integrated teaching environment and language, developed at the University of Sydney and Monash University, Australia. BlueJ provides a Blue-like environment for the Java language.
The BlueJ project started at Monash University in Melbourne, and later split and migrated to its current locations.
BlueJ is implemented in Java, and regularly being tested on Solaris, Linux, Macintosh, and various Windows versions. It should run on all platforms supporting a recent Java virtual machine."
Check it out here.
"The BlueJ environment was developed as part of a university research project about teaching object-orientation to beginners. The system is being developed and maintained by a joint research group at La Trobe University, Melbourne, Australia, and the University of Kent in Canterbury, UK. The project is supported by Sun Microsystems.
The aim of BlueJ is to provide an easy-to-use teaching environment for the Java language that facilitates the teaching of Java to first year students. Special emphasis has been placed on visualisation and interaction techniques to create a highly interactive environment that encourages experimentation and exploration.
BlueJ is based on the Blue system. Blue is an integrated teaching environment and language, developed at the University of Sydney and Monash University, Australia. BlueJ provides a Blue-like environment for the Java language.
The BlueJ project started at Monash University in Melbourne, and later split and migrated to its current locations.
BlueJ is implemented in Java, and regularly being tested on Solaris, Linux, Macintosh, and various Windows versions. It should run on all platforms supporting a recent Java virtual machine."
Check it out here.
Subscribe to:
Posts (Atom)
Note to self - Firefox and local connections
Whilst trying to hit my NAS from Firefox on my Mac, I kept seeing errors such as:- Unable to connect Firefox can’t establish a connection t...
-
Error "ldap_sasl_interactive_bind_s: Unknown authentication method (-6)" on a LDAPSearch command ...Whilst building my mega Connections / Domino / Portal / Quickr / Sametime / WCM environment recently, I was using the LDAPSearch command tha...
-
I've just spent ~1 hour trying to get a pair of Powerline adapters to .... pair. This involved pressing a "Pair" button on one...
-
As per previous posts, I'm continuing to enjoy the voyage of discovery that is IBM API Connect (APIC) and IBM DataPower Gateway (IDG). T...