Skip navigation.

Feed aggregator

I’m off to InSync10

Jeff Kemp - Mon, 2010-07-12 18:00
Perhaps you were introduced to Apex in a similar way to me. When I started using Apex, I was pleased to see a good selection of simple themes and templates I could use straight away. There was no need to worry about creating a consistent look-and-feel across my applications, I could dive right into building [...]

If at first you don’t succeed… it’s impossible.

Jeff Kemp - Mon, 2010-07-12 00:00
How many times have you tried something, got either an error or unexpected results, and decided what you were trying to do was not possible? Have you later on discovered someone quietly doing the impossible? I think this phenomenon is a form of the “correlation-implies-causation” fallacy. Unfortunately, this seems to happen too often, if the [...]

Quick Draw Fail

Jeff Kemp - Tue, 2010-07-06 19:00
It rarely pays to answer too quickly. Yesterday’s question at the PL/SQL Challenge was about aliases for expressions in cursor-based record types. DECLARE CURSOR profitable_internet_stocks IS SELECT SUM (share_price) FROM nasdaq_listings WHERE profits > 0 AND sector = 'INTERNET'; few_and_far_in_between profitable_internet_stocks%ROWTYPE; BEGIN OPEN profitable_internet_stocks; FETCH profitable_internet_stocks INTO few_and_far_in_between; CLOSE profitable_internet_stocks; /*[display_statement]*/ END; The question asked [...]

Apex Browser Requirement

Jeff Kemp - Mon, 2010-06-28 17:30
Whereas Apex 3.2.1 (and earlier, I think) required one of: Microsoft Internet Explorer 6.0 or later version Firefox 1.0 or later Apex 4.0 requires: Microsoft Internet Explorer 7.0 or later version Mozilla Firefox 3.5 or later version Google Chrome 4.0 or later version Apple Safari 4.0 or later version While they’ve dropped support for IE [...]

Where Am I…

Bar Solutions - Sun, 2010-06-27 05:12
.code, .code pre { font-size: small; color: #00007F; font-family: “Courier New” Courier monospace; background-color: #ffffff; /*white-space: pre;*/ } .code pre { margin: 0em; } .code .rem [...]

Unit Test != Requirements

Jeff Kemp - Fri, 2010-06-25 03:00
Are one or more usage examples enough to specify the requirements for something? For example: rtrim('123000', '0'); would return '123' No, as can be seen here: Oracle 8, SQL: RTRIM for string manipulation is not working as expected (Stackoverflow) When I read that question I thought of TDD (Test Driven Development), something I think I [...]

Querying for Contiguous Series

Jeff Kemp - Thu, 2010-06-24 22:30
A deceptively simple question: How to select the first continous group of rows using Oracle SQL (Stackoverflow) The solution given by Malgrat works nicely. He generates a “gap” column which detects changes in the data, then uses a running total to restrict the results to the first “group”. I haven’t come up with a more [...]

TAPI vs. XAPI

Jeff Kemp - Tue, 2010-06-22 22:30
I just wanted to bring attention to some very interesting discussion (that’s been going on for years now) regarding Table APIs (TAPI) versus Transactional APIs (XAPI). Some very nice answers, as well as a bit of controversy “Understanding the differences between Table and Transaction API’s” (Stackoverflow) “Considering SQL as a Service” (AskTom) Business Logic APIs [...]

My favourite 11g thing

Jeff Kemp - Tue, 2010-06-22 03:00
For too long I’ve muddled my way through using the built-in “explain plan” feature of the IDE-that-shall-remain-nameless provided by the client; but now that they’ve successfully upgraded from 9i to 11g, I’m now in a much better place. No longer will I wonder which table each step in a plan refers to, or what filters [...]

OracleOverflow?

Jeff Kemp - Sun, 2010-06-20 22:30
I’ve enjoyed reading and participating in StackOverflow for over a year now. With the introduction of Area51, there is now the possibility of starting a new Q&A site for all things Oracle – as pointed out by Rob Van Wijk and Gary Myers. Sure there are other fora such as OTN, but they don’t have the [...]

Architecture as a navigation system

IT Eye - Wed, 2010-06-16 04:52

Ever tried explaining architecture to a layman? How did you do it? Did you, at some point, refer to the original field of architecture – the one associated with names like Gaudí, Koolhaas and Hundertwasser? Maybe the layman brought it up himself? Did it help the discussion?

Probably it did, actually. While IT and Business architecture isn’t really the same, the original field of architecture works well as a metaphor. It’s such a natural comparison that it doesn’t feel as a metaphor. Plus, it fits kinda neatly – as long as you don’t look too close. And that’s exactly where the metaphor loses its value, both because the layman’s knowledge of brick-and-mortar architecture proves inadequate and because, in the end, the fields are just not the same.

Still, metaphors have value in communicating different aspects of architecture. So I’d like to explore different perspectives on architecture using different metaphors, starting with: navigation!

‘Turn left after the next project, onto new middleware street’

Most of us know what a navigation system is, right? Disregarding the humorous mistakes these things can sometimes cause, they can make our lives a lot easier. Just type in your destination, your preferred type of route, and it will calculate a route for you. Easy as pie, isn’t it?

Well, no not really. There’s a lot going on below the surface which needs to be arranged for a navigation system to function properly. Think about it:

1)      How would you like to travel? Shortest distance? Fastest route? Avoiding highways? By pre-set waypoints? Only traveling outside rush hours? There are so many options, all of which affect how ‘good’ a certain route is.

2)      The environment isn’t static, but dynamic. Traffic jams grow or dissolve, road work temporarily closes down stretches of road, or 50.000 football fans celebrating their team’s first championship ever bring your progress to a standstill. So, you need to be in touch with the world – to be connected – and to constantly recalculate your route.

3)      How do you know you’ve arrived at your destionation? The system will need both a ‘test’ – co-ordinates – and a ‘method’  - GPS – to determine whether or not you’ve reached your destionation.

4)      Last but not least, there’s you! Because even if the system gives you a perfect route, with perfect driving instructions, it does not drive the car. That´s what you are for – the driver. And you can choose to do whatever you want, including completely ignoring the instructions and taking a different route.

Comparison to architecture

So, what does this comparison show us about architecture and the process by which it is implemented? Your destination is your business strategy – it’s where your company wants to be. The actual architecture are the co-ordinates, or the manner in which you can test if you have arrived at the destination. The route are the changes you make to your company. It could be implementing new middleware, changing process owners and service-enabling existing applications. I’ll leave the interesting question of who the driver is in this metaphor for later. Let’s first look at those 4 aspects:

1)      The preferred route. The same thing exists in IT architecture. Do you want to use current personnel and expertise? Would you prefer to sit out your system lifecycles before updating them? Do culture changes preceed or follow technology changes? Questions that impact not only the timing, but also the architecture itself!

2)      The connection. This is so very crucial! An architecture team needs to know what’s going on. Where do projects stall (traffic jams), what projects are going on that should work under architecture (road work), what stakeholders are likely to resist the architecture (the fans blocking the highway), all of that influences the route while driving it.

3)      The destination. As said, the business strategy is your destination. The architecture itself, with all of its principles, guidelines and models, is how you test whether or not the company – or rather, its operations – is ‘there’. Far more complicated than in navigation, indeed.

4)      The driver. Someone drives the car. That someone can’t be the architect – he’s the algorithm, the heart of the navigation system. So who is? Well, looking at the metaphor, shouldn’t the driver be the one who actually wants to be at the new destination? And, thus, a representative of the organization, such as a board of directors or a ‘business board’ or something?
But most importantly: the car isn’t being controlled by the navigation system, but by the driver. This holds true for architecture as well: the architect isn’t driving the organization, but the business representative is. They have to choose, they are in control of the route.

Lessons learned

So, what can we learn from this metaphor? A quick summary…

  • An organization will have to do the driving themselves. For which they should be happy.
  • You can deviate from a route. A good architect will lead you from your new position to your destionation. Just give him/her time.
  • Of course, if they want to do that, architects have to know what’s going on, or they can’t adjust the route to the current conditions. So keep them in the loop.

Any more lessons (or metaphors) that are worthwhile? Please comment!

Share and Enjoy: del.icio.us Google Bookmarks DZone LinkedIn SphereIt StumbleUpon Technorati

Permalink | No comments | del.icio.us | Technorati | digg | dzone | StumbleUpon | Architecture

Single-Point-of-Definition by Example

Jeff Kemp - Thu, 2010-06-10 23:00
Steven Feuerstein lists seven excellent “Golden Rules” in his presentation (via Eddie Awad) and says “Don’t repeat anything. Aim for a Single Point of Definition for every aspect of your application – formulas, business rules, magic values, SQL statements.” giving the following code as exhibit A: (source) I’m guessing in his presentation he spoke about various [...]

Another way to learn something new every day

Jeff Kemp - Sun, 2010-05-30 22:30
My morning routine for the last few weeks has had a small addition – just a few minutes to log on The PL/SQL Challenge at 8am (WST) and answer a quiz question. This is a great way to test the depth and breadth of your knowledge of Oracle PL/SQL. Whether you’re a beginner in the [...]

Enhanced Change Management Functionality to the IR/ISO Process

Bryan Thompson - Sat, 2010-05-29 16:41
In 12.1 and 12.1.2, Oracle has introduced long awaited improvements to the Internal Requisition/Internal Order (IR/ISO) process...

Two sides of the same fence?

Jeff Kemp - Tue, 2010-05-25 22:00
In my daily reading these two articles came fairly close together, and I have a strong feeling they are describing exactly the same project. * From one side of the fence: A total rewrite: costly, time-consuming, but worth it? “Our CMS was developed using Active Server Pages, and consisted of around 80,000 lines of VBScript [...]

ORA-01481 Invalid number format model

Jeff Kemp - Tue, 2010-05-25 03:00
My code worked perfectly fine in Oracle 9i, but after our upgrade to 11g all of a sudden it was failing with ORA-01481 “Invalid number format model”. The cause? A mixed-up number format model – I’d accidentally mixed locale-specific (“.“) and locale-safe (“G“) codes in the number format. I don’t know if this is due [...]

One insert or multiple inserts?

Jeff Kemp - Thu, 2010-05-13 03:00
A colleague asked me a trick* question today which I failed * whether it was a “trick” question is probably in the eye of the beholder, though… “What are the differences, if any, between the following two approaches to inserting multiple rows (assume v1 and v2 have different values): INSERT INTO mytable (a) SELECT :v1 [...]

Using maven-glassfish-plugin on windows

IT Eye - Mon, 2010-03-22 05:12

Not a valid Win32-Application
Last week i encountered a problem with my glassfish installation while preforming a deployment with maven.

In my maven i configured the maven-glassfish-plugin and tried to deploy my application. I received the following message:

[INFO] Unable to start domain "webui". IOException: Cannot run program "C:\prog\glassfishv3\glassfish\bin\asadmin": Crea
teProcess error=193, %1 is not a valid Win32-Application

The plugin tries to execute in my glassfish installation the application asadmin. In this directory there are to files with this name. a windows version with the .bat extension and a unix version without a extension. To solve this problem delete or rename the file without an extension to asadmin.sh. Now windows will send the request to the bat file.

Unable to deploy application

After i solved this issue i encountered a second problem. I configured the plugin to use the passwordfile that’s generated in the domain config.

<groupId>org.glassfish.maven.plugin</groupId>
<artifactId>maven-glassfish-plugin</artifactId>
<version>2.1</version>
<configuration>
<glassfishDirectory>${glassfishDirectory}</glassfishDirectory>
<user>${glassfish-user}</user>
<passwordFile>${passwordFile}</passwordFile>
<debug>true</debug>
<echo>true</echo>
<domain>
<name>${project.artifactId}</name>
<adminPort>4848</adminPort>
</domain>
<components>
<component>
<name>${project.artifactId}</name>
<artifact>${project.build.directory}/${project.build.finalName}.war</artifact>
</component>
</components>
</configuration>

This works to start and stop the domain but for deploying an application it doesn’t accept the password file. To solve this problem i created a personal password file in my userhome containing the password of my domain in this case ‘admin’ and changed in my settings.xml the value of passwordFile to my personal password file:

here the configuration in my settings.xml

<properties>
<!-- Glassfish -->
<glassfishDirectory>C:/prog/glassfishv3/glassfish</glassfishDirectory>
<passwordFile>${user.home}/passwd.local.file</passwordFile>
<glassfish-user>admin</glassfish-user>
<userPassword>admin</userPassword>
</properties>

here the content of my passwd.local.file

AS_ADMIN_PASSWORD=admin

Share and Enjoy: del.icio.us Google Bookmarks DZone LinkedIn SphereIt StumbleUpon Technorati

Permalink | No comments | del.icio.us | Technorati | digg | dzone | StumbleUpon | Software development

It's been a while...

David Litchfield - Sat, 2010-02-27 01:34

It's been a while since I wrote my last blog entry. Actually, it's been a really long while. In the interim, I've since sold NGSSoftware and after staying on for 16 months have now resigned and am taking a wee break, but planning my next venture - V3rity. All will be revealed. Soon.

Posted by David On 26/02/10 At 03:34 PM

PXE boot in VMWare Fusion using host-only adapter

Frits Hoogland - Thu, 2009-12-17 04:48

Recently I’ve done some investigation on how to PXE-boot a system and do automatic installation. To get familiar with the techniques involved, and the software, I decided to try it on my laptop on a VM in VMWare Fusion (yes, it’s on a MAC).

How does PXE-boot work? Put really simple: if PXE-booting is used (it’s in the boot-list in the BIOS of most physical systems, and also the VMWare VM BIOS), it broadcasts it wants to use PXE on the network. A DCHP server can be configured to honour this request and send a PXE image to the machine.

Using the PXE image you can do all kinds of cool stuff, like start an attended or an unintended installation. Yes! This lets you install a linux system without using physical CD’s/DVD and going to the machine. Or even install a linux system without any involvement at all (!!!!), you just need to configure some things in advance.

Back to the MAC. This didn’t work using the host-ony adapter.

Host only adapters are setup using DHCP
This means VMWare setups a DHCP server, and you can use that by selecting the ‘host only’ adapter in the VM settings, and need to set it to DHCP in your VM.

This means that in order to setup PXE booting, we need to alter the VMWare Fusion DHCP Host Only DHCP server.

Where is the host-only vmware fusion dhcp server configuration located?
/Library/Application Support/VMware Fusion/vmnet1/dhcpd.conf

What do we need to add?
We need to add two things:
next-server: the ‘next-server’ directive needs to be pointed to the tftp server serving the PXE image.
filename: the ‘filename’ directive needs to be pointed to the PXE image file.

This is how it looks in my case:

#
# Configuration file for ISC 2.0b6pl1 vmnet-dhcpd operating on vmnet1.
#
# This file was automatically generated by the VMware configuration program.
# If you modify it, it will be backed up the next time you run the
# configuration program.
#
# We set domain-name-servers to make some DHCP clients happy
# (dhclient as configued in SuSE, TurboLinux, etc.).
# We also supply a domain name to make pump (Red Hat 6.x) happy.
#
allow unknown-clients;
default-lease-time 1800; # 30 minutes
max-lease-time 7200; # 2 hours

subnet 192.168.6.0 netmask 255.255.255.0 {
range 192.168.6.128 192.168.6.254;
filename “pxelinux.0″;
next-server 192.168.6.129;
option broadcast-address 192.168.6.255;
option domain-name-servers 192.168.6.1;
option domain-name “localdomain”;
}

Do not forget the ‘;’ which is needed after every line!