Edge Cases

Edge Cases


31/10/09 18:51

I can inspect a POM and see if each artifact - as they shall be known - corresponds to a rule.
Consider:-
    <dependency>
        <groupId>net.sourceforge.nekohtml</groupId>
        <artifactId>nekohtml</artifactId>
        <version>1.9.12</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-full</artifactId>
        <version>1.1-rc1</version>
    </dependency>
Issues:-


  1. Is it possible to deduce the information in above from a jar file?


  2. Where it is possible to find - starting from the most right part of the jar file name after the .jar suffix - the version and the artifactId, is it possible to find the groupId?


  3. is a sub to 1. and the answer to 1. is no completely. The first jar will be nekohtml-1.9.12 and the second spring-full-1.1-rc1, but in neither case is it possible to know the groupId.



Look at these examples:-

The simple case --
<dependency>
  <groupId>httpunit</groupId>
  <artifactId>httpunit</artifactId>
  <version>1.6.2</version>
</dependency>

and two complex cases -

<dependency>
    <groupId>mockobjects</groupId>
    <artifactId>mockobjects-jdk1.4-j2ee1.3</artifactId>
    <version>0.09</version>
</dependency>


<dependency>
  <groupId>jtidy</groupId>
  <artifactId>jtidy</artifactId>
  <version>4aug2000r7-dev</version>
</dependency>

The simple case is just httpunit-1.6.2,jar, and that is easy.

The first complex case is -
mockobjects-jdk1.4-j2ee1.3-0.09.jar

  --- Notice there are several hyphens in the artifactId, as the next case shows, it is
     not possible to know which one denotes the boundary between version and artifactId. ---

The second complex case is -
jtidy-4aug2000r7-dev.jar

  --- Here it is possible to surmise from the meaning that 4aug2000r7-dev belongs to the version,
     it would be difficult to make a reliable rule for this, as the previous case shows. ---

I have also seen in private repositories an underscore used in place of a hyphen and artifacts anonymised when placed into the repository from their source, i.e. this information striped out of their name, only to be renamed differently where they are consumed.
 --- This may seem particularly strange, but when you consider that the artifact is playing a role in a
     different project with its own release versions and naming, it makes some sort of sense. ---

I don't think it is possible to order artifacts without consulting an online service such as jarvana.
This would have benefits in that other information can be gleaned at the same time, such as dependencies and, of course, the missing groupId.
However, it can be that a needed dependency is incorrectly refered to. How does this happen?

This was needed.

<groupId>org.apache</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>2.5.1-final-20040804</version>

This is what was found.

<groupId>poi</groupId>
<artifactId>poi-scratchpad-2.5.1-final</artifactId>
<version>20040804</version>

I coped with this through renaming, and I assume that the dependency is to be found in some prior POM downloaded with another artifact? I should look into this, but either was something has to be re-edited.
Actually I think I made the wrong choice, the thing to do would have been to look into the offending POM dependency and correct it, this way the correct artifact could be downloaded to a correct position.

So, in the end, jarvana to the rescue and my ant/maven1 ---> maven2 tool has a bit of a way to go still.


Rat Outzipair


Rat Outzipair


29/10/09 18:22

This is the default high level user.
Edited by Lab Zipzipace.
One or other of these fabulous names must be lost if another one of the pair is to be created using some other name.
But how to add other users?
This is, perhaps, the most surprising, but also the most lua aspect of nanoki. Users are created according to IP!

How's it done?

I wonder what that name generation algorithm is, maybe just a text file, will check at some point.

Lab Zipzipace


29/10/09 11:58

Eurydice by Sue Hubbard

I am not afraid as I descend,
step by step, leaving behind
the salt winds blowing up the
corrugated river

The damp city streets
their sodium glare of
rush hour headlights
pitted with pearls of rain
for my eyes still reflect the half remembered moon

Already your face receads beneath the station clock
a damp smudge among the shadows
mirrored in the trains wet glass.

Will you forget me?
Steal tracks lead you out past crains and crematoria
boat yards and bike sheds

ruby shards of roman glass
and wolfbone mummified in mud.
These rows of curtains windows like
eyelids heavy with sleep to the citys green edge.

Now I stop
my ears with wax
hold fast to the memory of the song you once whispered in my ear
it's echoes tangle like briars in my thick hair

You turned to look
second fly past like birds
my hands grow cold
i am ice and cloud.

This path unravels deep in hidden rooms
filled with dust and sour night breath
the lost city is sleeping

Above the hurt sky is weeping,
soaked nightingales have ceased to sing.
Dusk has come early. I am drowning in blue.

I dream of a green garden
where the sun feathers my face
like your once eager kiss

soon, soon
i will climb from the blackened earth
into the diffident light.

Nanoki

29/10/09 01:19




Nanoki is a simple wiki engine implemented in Lua, allowing you to create, edit, and link web pages easily.

Nanoki



Run Nanoki


Start Nanoki from the command line:

cd Nanoki
lua Nanoki.lua . localhost 1080

The above command will start Nanoki on your local host at port 1080, using the local directory for storage:


Command synopsis:

Nanoki [location] [address] [port] [not|forwarded] [not|secure]

location tells Nanoki where to store its data.

address indicates which network address to bind the Nanoki server to.

port indicates what port number to use.

forwarded indicates whether x-forwarded-for should be trusted.

secure indicates whether https should be used.

Run



Create a page


To create a new page, type its name in your browser address bar:

New

If the page doesn't exists yet, Nanoki will redirect you to the page editor:

New Editor



Edit a page


To edit a page, click on its title. This will take you to the page editor:

Editor

The editor uses Markdown syntax to describe the page content.

To save your text, press Preview and then Save.



Upload a file


From the editor, you can upload files to Nanoki:

File

Each page can have its own files. You can refer to those files like so:

![Run][1]
[1]: nanoki/file/run.png

File link synopsis:

[page]/file/[name]

page is the name of the page under which the file is located.

name is the file name.



Control panel

From the editor, you can access the control panel to rename or delete a page:

Control



Revision


From the editor, you can access a page revision history by clicking on its title:

Revision

Clicking a revision number will display the page content as it was then.



Revision differences


From the revision page, you can access the revision differences by clicking on its title:

Revision differences



Related pages


Each page keep tracks of which other pages links to it:

Related



Breadcrumb navigation


Each page reflects its location using a breadcrumb trail:

Breadcrumb



Index navigation


Nanoki provides a table of content, indexed by page title:

Index



Date navigation


The date navigation indexes pages by their publication date:

Date



Recent changes


The recent changes page lists what has changed in Nanoki recently:

Recent



Search


The search allows to locate pages by their title:

Search



XML feed


Aside from the editor, most pages provide an XML feed:

Feed

Feed view



System page


The system page provides basic information about Nanoki itself:

System
top