05 November 2015

Peculiar Acronyms

As we know, there several peculiar acronyms from computer science:

GNU: GNU's Not Unix

PATRICIA (tree): Practical Algorithm to Retrieve Information Coded in Alphanumeric

20 October 2015

Software Architecture Patterns

Very interesting free ebook from O'reilly: Software Architecture Patterns

It analyzes 5 Architectures providing Pros & Cons of each one, adding good thoughts. (please, read the book, it is small enough :P ).

A summary among the different characteristics can be found at:


14 October 2015

WebLogic Server 10.3.6 for Mac OSX

If you are trying to install WLS 10.3.6 in OS X Yosemite 10.10.5 then a couple error you may face:

1) Download generic installer; if you choose cocoa mac installer, then you'll get:

(or using system property: -Dos.name=unix  )

Exception in thread "chmodFile" java.lang.Error: unix is not a supported OS platform.
    at java.lang.UNIXProcess$Platform.get(UNIXProcess.java:164)
    at java.lang.UNIXProcess.(UNIXProcess.java:168)
    at java.lang.ProcessImpl.start(ProcessImpl.java:130)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
    at java.lang.Runtime.exec(Runtime.java:620)
    at java.lang.Runtime.exec(Runtime.java:485)
    at com.bea.plateng.common.util.Chmod.chmod(Chmod.java:71)
    at com.bea.plateng.common.util.Chmod.wildcardChmod(Chmod.java:110)
    at com.bea.plateng.common.util.Chmod.wildcardChmod(Chmod.java:104)
    at com.bea.plateng.wizard.installer.utils.chmod.ChmodHelper.chmodFromDefinition(ChmodHelper.java:98)
    at com.bea.plateng.wizard.installer.silent.tasks.ChmodFileTask.execute(ChmodFileTask.java:80)
    at com.bea.plateng.wizard.installer.silent.tasks.ChmodFileTask.run(ChmodFileTask.java:75)
    at java.lang.Thread.run(Thread.java:745)

2) If you receive the message "Insufficient disk space!" , although you know you have enough space, the use the following parameter:


java -Dspace.detection=false -Xmx1024m -jar wls1036_generic.jar

(also, a small installer window could appear, and it is from the same reason).

12 October 2015

Books for Programming Challenges & Puzzles

This is a list of books for Programming Challenges and Puzzles. It is not exhaustive, but with the most interesting books I've found. (Evolutive List)

- Programming Challenges: The Programming Contest Training Manual
- Algorithmic Puzzles
- The Commodore Puzzle Book: BASIC Brainteasers

TODO: covers!

15 September 2015

It is not a bug

PPA: NO_PUBKEY C2518248EEA14886

I faced the following error in Ubuntu 15.04 when trying to: sudo apt-get update

GPG error: http://ppa.launchpad.net vivid Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY C2518248EEA14886
Googling, there are several solutions for it, but none worked.
Only a old script that is in a couple of Ubuntu forums:



# This script adds PPA keys to the primary keyring in /etc/apt/trusted.gpg
# thus getting around the GPG limit of 40 keyrings.
# WARNING: It's only intended as the last resort measure.
# Rather than using it, reduce your use of PPAs.
set -e


[ -r /etc/lsb-release ] && . /etc/lsb-release ||
{ echo Cannot read /etc/lsb-release >&2; exit 1;}

[ Ubuntu = "$DISTRIB_ID" ] ||
{ echo This script is supposed to run on Ubuntu >&2; exit 2;}

{ echo Cannot determine installed Ubuntu release >&2; exit 2;}

usage() {
# Parameter: $1 - error message
<<! cat >&2
Usage: sudo $0
Example: sudo $0 $codename
exit 3

[ 0 = `id -u` ] || usage "Please run with sudo"

if [ -x /usr/bin/ubuntu-distro-info ]
codenames=`/usr/bin/ubuntu-distro-info --all | tr '\n' \|`
eval \
case \$1 in \
"$codenames$codename"') codename=$1;;
*) usage "Wrong release name: $1";;' \
[ 12 -le "${release%%.*}" ] &&
<<! cat >&2
This script works best with package 'distro-info' installed.

Consider installing distro-info with
sudo apt-get install distro-info

Continuing execution anyway


case $1 in
lucid|precise|trusty|utopic|vivid|$codename) codename=$1;;
*) usage "Wrong release name: $1";;

echo "Release: $codename"
echo Please wait...

tempfile() {
# Parameters: $1 - variable to hold the file name
# $2 - short file content description
local tmp
if tmp=`mktemp`
eval "$1='$tmp'"
currenttrap="${currenttrap}rm -f -- '$tmp';"
trap "$currenttrap" EXIT
echo "Cannot create temporary file for $2" >&2
exit 2

tempfile sources 'APT sources'
tempfile fingerprints 'key fingerprints'
tempfile key 'signing key'

eval $(apt-config shell sourcelist Dir::Etc::SourceList/f)
eval $(apt-config shell sourceparts Dir::Etc::SourceParts/d)
grep -hs '^[^#]' "$sourcelist" "$sourceparts"*.list > "$sources" ||:
grep -q '^Types:' "$sources" && {
echo "This script doesn't work with RFC822-style sources.list" >&2; exit 2

for ppaowner in $(
awk -F/ '/^deb[ \t]+.*ppa\.launchpad.*[ \t]+'$codename'/{print$4}' \
wget -qO- "$launchpadapi/~$ppaowner/ppas" |
awk -F'": "|"}' -v'RS="?, "' '/key_fingerprint/{print $2}' |
sort -u >> "$fingerprints"
for fingerprint in `sort -u "$fingerprints"`
wget -qO- "$keyserver/pks/lookup?op=get&search=0x$fingerprint" |
sed '/-BEGIN/,/-END/!d' > "$key"
if test "$fingerprint" = "$(
apt-key adv --with-colons --with-fingerprint "$key" |
awk -F: '/^fpr/{print $10}'
apt-key add "$key"
<<! cat - "$key" >&2
Key rejected: retrieved key doesn't match the fingerprint!

Fingerprint: $fingerprint

Retrieved key:
$(apt-key adv --with-fingerprint "$key")
================================================== ========

rm -f -- "$sources" "$fingerprints" "$key"
trap - EXIT

WebLogic Server XML Parsers

Many times there are question in WebLogic Server about parser factories:

java.lang.AbstractMethodError: javax.xml.parsers.DocumentBuilderFactory.setFeature

  java.lang.ClassCastException: weblogic.xml.jaxp.RegistryXMLInputFactory cannot be cast to javax.xml.stream.XMLInputFactory
    Error weblogic.xml.jaxp.RegistryXMLInputFactory cannot be cast to javax.xml.stream.XMLInputFactory

 java.lang.NoSuchMethodError: javax.xml.parsers.DocumentBuilderFactory.newInstance(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/parsers/DocumentBuilderFactory;

Because the classpath retrieve from different parts these implemenations, including the JDK6 which bundles in it now.

This is how you can change by system properties the implementation, using xerces:

-Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl -Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl -Djavax.xml.parsers.SAXParser=org.apache.xerces.jaxp.SAXParserImpl

maybe you'll need to add xercesImpl.jar to your classpath. 

More info: 


09 July 2015

Eclipse Platform Runtime Binary

Although, it is on the web, it is not easier to get a basic/minimal Eclipse installer.

You need to go to: http://download.eclipse.org/eclipse/downloads/
and get the desired version.

i.e.: 4.5 Luna: http://download.eclipse.org/eclipse/downloads/drops4/R-4.5-201506032000/

There you can find several basic binaries, such us, SDK, Plug-ins, SDK-RPC, etc.

The smallest is: Platform Runtime Binary

More details in each binary: http://download.eclipse.org/eclipse/downloads/drops4/R-4.5-201506032000/details.html#PlatformRuntime

Anyway, if you want this basic version to install another plug-ins, such us, Dynamic Languages Toolkit then you need to download another version (it is not sufficent with only PLatform Runtime Binary).

My Blog List

Search This Blog


Blog Archive

There was an error in this gadget
There was an error in this gadget


The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.
I review for the O'Reilly Reader Review Program Project Euler