Entrepreneurs
One way to make a living in Open Source is to create a proprietory format based on Open standards with proprietory extensions. Here is an example. You modify and build a custom portal from an Open Source portal. Your tool creates JSR-168 or JSR-286 war files (open standard) with proprietory extensions. Give it a .portal file suffix. The majority of the format respects the portlet standard and the extensions make it proprietory. With some modifications from a professional it can become standard therefore interesting to the Free Software Community.
Everything Java Apache Geospatial Open Source. Hello Shinning Stars!!! Vincent Massol, Raphael Luta, Santiago Gala, Carsten Z.
Friday, January 12, 2007
Tuesday, January 02, 2007
I am working on a funded project for government emergency response management in the united states. There is an early open source version of this, http://www.mapimage.com/openaddress.org/. It is derived from MapServer and MapTools software.
I have contributed a MapServer integration project to the Apache Portals project. The source code is here, http://svn.apache.org/repos/asf/portals/bridges/trunk/mapserver. The documentation is here, http://wiki.apache.org/portals/MapServerPortlet.
I studied general geology and computer science leading me to a career as a independent consultant. My products include portals, internet mapping apps, xml utilities, database tools, development and compile platforms derived primarily from Apache projects.
The Java platform is my preferred development environment although I am also a competent database and Linux system administrator. I have been programming in Java for 8 years and have been working with open source software for 5 years.
I have contributed a MapServer integration project to the Apache Portals project. The source code is here, http://svn.apache.org/repos/asf/portals/bridges/trunk/mapserver. The documentation is here, http://wiki.apache.org/portals/MapServerPortlet.
I studied general geology and computer science leading me to a career as a independent consultant. My products include portals, internet mapping apps, xml utilities, database tools, development and compile platforms derived primarily from Apache projects.
The Java platform is my preferred development environment although I am also a competent database and Linux system administrator. I have been programming in Java for 8 years and have been working with open source software for 5 years.
Squeezing the Dojo Toolkit and AndroMDA into Apache Portals Jetspeed 2
Apache Portals Jetspeed is a component based Enterprise Portal Server implementing the JSR-168 Portlet Standard. The Dojo Toolkit is an Ajax ready rich client interface for creating Web 2.0 pages. AndroMDA is a code generator that make using UML useful. When combined these three tools make data integration fun again. All stacked up in combination with the Apache httpd web server and Apache Tomcat and Apache Harmony to bring database Apache DB Derby cross platform web applications to the browser of your choice. This talk will demonstrating using an integrated Apache web platform with tight single sign on security to web applications running on the Internet.
Apache Portals Jetspeed is a component based Enterprise Portal Server implementing the JSR-168 Portlet Standard. The Dojo Toolkit is an Ajax ready rich client interface for creating Web 2.0 pages. AndroMDA is a code generator that make using UML useful. When combined these three tools make data integration fun again. All stacked up in combination with the Apache httpd web server and Apache Tomcat and Apache Harmony to bring database Apache DB Derby cross platform web applications to the browser of your choice. This talk will demonstrating using an integrated Apache web platform with tight single sign on security to web applications running on the Internet.
Tuesday, December 12, 2006
Cartographic Symbols and Lines

Getting a common street lines to render using MapServer is done using the symbol directive. Define the symbol.
SYMBOL
NAME 'circle'
TYPE ELLIPSE
POINTS 1 1 END
FILLED TRUE
END
And define your line layer with two style objects. One for the solid line and one for the outline.
LAYER
NAME Streets
TYPE LINE
STATUS OFF
DATA StreetsRR/CompletedCenterlines1-3
LABELITEM 'Fename'
CLASS
STYLE
SYMBOL 'circle'
COLOR 180 180 180
SIZE 3
END
STYLE
SYMBOL 'circle'
COLOR 255 255 255
SIZE 1
END
LABEL
ANGLE auto
TYPE truetype
FONT luxisr
MINFEATURESIZE 40
MINDISTANCE 150
SIZE 12
COLOR 0 0 0
END
TEMPLATE "templates/StreetsRR/Streets.html"
END
HEADER "templates/StreetsRR/Streets_header.html"
FOOTER "templates/StreetsRR/Streets_footer.html"
END

Getting a common street lines to render using MapServer is done using the symbol directive. Define the symbol.
SYMBOL
NAME 'circle'
TYPE ELLIPSE
POINTS 1 1 END
FILLED TRUE
END
And define your line layer with two style objects. One for the solid line and one for the outline.
LAYER
NAME Streets
TYPE LINE
STATUS OFF
DATA StreetsRR/CompletedCenterlines1-3
LABELITEM 'Fename'
CLASS
STYLE
SYMBOL 'circle'
COLOR 180 180 180
SIZE 3
END
STYLE
SYMBOL 'circle'
COLOR 255 255 255
SIZE 1
END
LABEL
ANGLE auto
TYPE truetype
FONT luxisr
MINFEATURESIZE 40
MINDISTANCE 150
SIZE 12
COLOR 0 0 0
END
TEMPLATE "templates/StreetsRR/Streets.html"
END
HEADER "templates/StreetsRR/Streets_header.html"
FOOTER "templates/StreetsRR/Streets_footer.html"
END
Linux ODBC
When you get the following command to work you've got Linux ODBC working but getting there is not always easy. I'm using Debian 3.1 other distros may vary.
isql -v myDatasource
The argument myDatasource is the name defined in /etc/odbc.ini
postgres@debian:~$ cat /etc/odbc.ini
[pg]
Description = Rose
Driver = PostgreSQL
Trace = Yes
TraceFile = /tmp/psqlodbc.log
Database = rose
Servername = localhost
UserName = postgres
Password = myPassword
Port = 5432
Protocol = 6.4
ReadOnly = No
RowVersioning = No
ShowSystemTables = No
ShowOidColumn = No
FakeOidIndex = No
ConnSettings =
Notice the username is the default postgres account. The Driver and Database are also key values.
The Driver is defined in /etc/odbcinst.ini
postgres@debian:~$ cat /etc/odbcinst.ini
[PostgreSQL]
Description = PostgreSQL ODBC driver
Driver = /usr/lib/odbc/psqlodbc.so
Setup = /usr/lib/odbc/libodbcpsqlS.so
Debug = 1
CommLog = 1
FileUsage = 1
When you get the following command to work you've got Linux ODBC working but getting there is not always easy. I'm using Debian 3.1 other distros may vary.
isql -v myDatasource
The argument myDatasource is the name defined in /etc/odbc.ini
postgres@debian:~$ cat /etc/odbc.ini
[pg]
Description = Rose
Driver = PostgreSQL
Trace = Yes
TraceFile = /tmp/psqlodbc.log
Database = rose
Servername = localhost
UserName = postgres
Password = myPassword
Port = 5432
Protocol = 6.4
ReadOnly = No
RowVersioning = No
ShowSystemTables = No
ShowOidColumn = No
FakeOidIndex = No
ConnSettings =
Notice the username is the default postgres account. The Driver and Database are also key values.
The Driver is defined in /etc/odbcinst.ini
postgres@debian:~$ cat /etc/odbcinst.ini
[PostgreSQL]
Description = PostgreSQL ODBC driver
Driver = /usr/lib/odbc/psqlodbc.so
Setup = /usr/lib/odbc/libodbcpsqlS.so
Debug = 1
CommLog = 1
FileUsage = 1
Tuesday, November 28, 2006
Marvellous discovery. The GPX format. An xml schema for GPS data. I just used it with my GPS. A garmin legend c. To sample this out I used Debian 3.1 and an excellent tool called gpsbabel version 1.3.2. It worked right out of the box.
sudo apt-get install gpsbabel
sudo gpsbabel -t -r -w -i garmin -f usb: -o gpx -F gironde.gpx
The format stores way points with latitude longitude name description current time symbols and elevation.
Tracks are stored as track segments with track points containing the latitude longitude time and elevation.
sudo apt-get install gpsbabel
sudo gpsbabel -t -r -w -i garmin -f usb: -o gpx -F gironde.gpx
The format stores way points with latitude longitude name description current time symbols and elevation.
Tracks are stored as track segments with track points containing the latitude longitude time and elevation.
Sunday, November 26, 2006
Thursday, November 23, 2006
Emulating Windows XP on Linux using QEMU
Quoting the quickstart guide.
Create an virtual Harddrive
qemu-img create -f qcow windowsxp.img 3G
Install Windows XP
qemu -cdrom /dev/cdrom -hda windowsxp.img -m 256 -boot d
This command means to boot from the d drive using 256 megabytes of RAM. The -cdrom option indicates where to find the device.
Networking is configured by default and Windows XP should configure itself with DHCP.
Quoting the quickstart guide.
Create an virtual Harddrive
qemu-img create -f qcow windowsxp.img 3G
Install Windows XP
qemu -cdrom /dev/cdrom -hda windowsxp.img -m 256 -boot d
This command means to boot from the d drive using 256 megabytes of RAM. The -cdrom option indicates where to find the device.
Networking is configured by default and Windows XP should configure itself with DHCP.
OpenSuSE 10.1 Network Install on AMD 64 Athalon
Requirements
cdrom read write
network connection
Prepare the CD
Download, write, and boot from the miniiso.
Specify Resource
At the boot menu type,
install=http://ftp.opensuse.org/pub/opensuse/distribution/SL-10.1/
Requirements
cdrom read write
network connection
Prepare the CD
Download, write, and boot from the miniiso.
Specify Resource
At the boot menu type,
install=http://ftp.opensuse.org/pub/opensuse/distribution/SL-10.1/
Sunday, November 19, 2006
Geospatial data units, commonly refered to as features, can be related to one another in one of three fundamental ways. Mutually exclusive meaning that there is no space common to both features, partially inclusive meaning that each feature overlaps the other but not entirely. They occupy space that is both common and unique to one another. And all inclusive meaning one feature si defined entirely within the bounds of the other. Points, lines and polygons can relate to polygons in this way. Yet lines can only intersect one another. Points can be part of a line and can be included in a polygon or be part of the polygons bound definition.
Thursday, November 16, 2006
I've been doing alot of security lately and I need to backup some derby databases from one machine to another. The backup strategy is simple create an compressed archive and copy it using a secure connection to another machine. I'm documenting the process here. I want to backup a directory found at /path/parent/data. And I want the archive to maintain the directory data so that when it is expanded it writes one directory data and all the contents below it.
cd /path/parent
tar czf /tmp/data-`date +%j`.tar.gz data
The archive name is created with a %j indicating the day of the year. Therefore maintaining a year of backups. The next year will start to overwrite previous backups.
Then we want to copy the data to a remote machine. A secure encrypted copy can be sent to the remote machine. But in order to incorporate this in a cron job the remote machine must accept a password-less connection. These are the steps to generate the key. Run ssh-keygen without providing a passphrase.
ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub remoteuser@remotemachine:.ssh/authorized_keys2
Now remote connections can be made without providing a password. Meaning the remote machine trusts the local machine.
cd /path/parent
tar czf /tmp/data-`date +%j`.tar.gz data
The archive name is created with a %j indicating the day of the year. Therefore maintaining a year of backups. The next year will start to overwrite previous backups.
Then we want to copy the data to a remote machine. A secure encrypted copy can be sent to the remote machine. But in order to incorporate this in a cron job the remote machine must accept a password-less connection. These are the steps to generate the key. Run ssh-keygen without providing a passphrase.
ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub remoteuser@remotemachine:.ssh/authorized_keys2
Now remote connections can be made without providing a password. Meaning the remote machine trusts the local machine.
Tuesday, November 14, 2006
Monday, November 13, 2006
Setting up an Apache2 SSL and SuSE 10 Firewall
Setting the SuSEfirewall2 to accept https connections requires a modification to /etc/sysconfig/SuSEfirewall2.
FW_SERVICES_EXT_TCP="ssh www 443 8888"
This definition allows the Internet to connect via ssh http https and a backdoor tomcat server. Apply the new rules with,
sudo /sbin/SuSEfirewall2 start
Configuring the Default SuSE Apache 2.2 SSL
Useful guides can be found in /usr/share/doc/packages/apache2. Check out README, README.QUICKSTART, README.QUICKSTART.SSL and README.SUSE.
Define a NameVirtualHost in /etc/apache2/listen.conf
NameVirtualHost www.example.com:443
Enable the ssl configuration by copying /etc/apache2/vhosts.d/vhosts-ssl.template to vhosts-ssl.conf (only files with the extension conf will be read). Change the line with _default_ as indicated below.
Create a Test Certificate
cd /usr/share/doc/packages/apache2
sudo ./certificate.sh
Restart Apache
sudo /etc/init.d/apache2 restart
Setting the SuSEfirewall2 to accept https connections requires a modification to /etc/sysconfig/SuSEfirewall2.
FW_SERVICES_EXT_TCP="ssh www 443 8888"
This definition allows the Internet to connect via ssh http https and a backdoor tomcat server. Apply the new rules with,
sudo /sbin/SuSEfirewall2 start
Configuring the Default SuSE Apache 2.2 SSL
Useful guides can be found in /usr/share/doc/packages/apache2. Check out README, README.QUICKSTART, README.QUICKSTART.SSL and README.SUSE.
Define a NameVirtualHost in /etc/apache2/listen.conf
NameVirtualHost www.example.com:443
Enable the ssl configuration by copying /etc/apache2/vhosts.d/vhosts-ssl.template to vhosts-ssl.conf (only files with the extension conf will be read). Change the line with _default_ as indicated below.
Create a Test Certificate
cd /usr/share/doc/packages/apache2
sudo ./certificate.sh
Restart Apache
sudo /etc/init.d/apache2 restart
Friday, November 10, 2006
Using Ajax Dojo Toolkit
- The first difficulty was finding out what onClick event was being called when I clicked a checkbox. (Turns out to be some event listener addition)
- Code that got things working:
dojo.event.connect(portletsTable, "updateEditor", updateEditor );
dojo.event.connect(portletsTable, "saveEntrySubmit", saveEntrySubmit );
dojo.event.connect(portletsTable, "clearAndDisableEditor", clearAndDisableEditor );
portletsTable.getNewEntryPrototype = getNewEntryPrototype;
var data = [] ;
##foreach($p in $portletPermissions)
//data.push( { name: "$p.Permission.Name", actions: "$p.Permission.Actions", roles: "$p.Roles", Id: $velocityCount } );
##end
data.push( { name: "Xin603 1", actions: "192.168.0.1", roles: "EF:E2:D5:6A:4B:44", Id: 1 } );
data.push( { name: "Xin603 2", actions: "192.168.0.2", roles: "55:E1:D2:7A:4B:44", Id: 2 } );
data.push( { name: "Xin603 3", actions: "192.168.0.3", roles: "55:A1:2D:A2:41:34", Id: 3 } );
portletsTable.js_masterdata = data;
portletsTable.js_type = "portlet";
Thursday, November 09, 2006
Debian Unstable
I've taken the leap into debian unstable territory. I needed a new version of gcc. Newer than 3.3.4. Stepping closer to the edge. The contents of my sources.list has changed to:
deb ftp://ftp2.fr.debian.org/debian/ stable main
deb-src ftp://ftp2.fr.debian.org/debian/ stable main
deb http://security.debian.org/ stable/updates main
p
I've taken the leap into debian unstable territory. I needed a new version of gcc. Newer than 3.3.4. Stepping closer to the edge. The contents of my sources.list has changed to:
deb ftp://ftp2.fr.debian.org/debian/ stable main
deb-src ftp://ftp2.fr.debian.org/debian/ stable main
deb http://security.debian.org/ stable/updates main
p
Monday, November 06, 2006
MapServer - ODBC - OGR - Postgresql 7.4.7
I'll have to admit that this is not cutting edge mapping, but it is platform independent using php4, unixodbc, and apache. It works on Linux and works on Windows. The objective here is to get map plotting working. Scalability and security are assured by using a relational database.
OGR
OGR is a vendor independent geospatial data access library included with gdal.
Simplify Data
To illustrate properly map plotting of point data such as addresses we have set up a database table containing longitude and latitude data.
Map Server
Map Server is configured to read from the database and display custom icons for point data.
OGR Configuration
ODBC:postgres/password@pg
MappingPlot
wkbPoint
MapFile Configuration
The following configuration lets the user plot different icons given the value of icon_id. The layer will only display icons from the mapping_plot table where parameters_id is equal to 1. This is achieved using the FILTERITEM and FILTER keywords. Labels are shown from the tables remarks column.
LAYER
NAME "MapPlottingbob"
CONNECTION "conf/MapPlotting.ovf"
CONNECTIONTYPE OGR
STATUS ON
TYPE POINT
DATA mapping_plot
CLASSITEM icon_id
FILTERITEM "parameters_id"
FILTER "1"
LABELITEM "remarks"
CLASS
EXPRESSION "1"
SYMBOL "/home/phil/liveaxis/src/rose-0.3.7/graphics/crime.png"
STYLE
COLOR 0 0 0
END
LABEL
MINFEATURESIZE 40
MINDISTANCE 150
POSITION UR
SIZE MEDIUM
COLOR 0 0 255
END
TEMPLATE "templates/MappingPlot/MappingPlot.html"
END
CLASS
EXPRESSION "2"
SYMBOL "/home/phil/liveaxis/src/openaddress/src/plotting/icons/1.gif"
STYLE
COLOR 0 0 0
END
LABEL
MINFEATURESIZE 40
MINDISTANCE 150
POSITION UR
SIZE MEDIUM
COLOR 0 0 255
END
TEMPLATE "templates/MappingPlot/MappingPlot.html"
END
CLASS
EXPRESSION "3"
SYMBOL "/home/phil/liveaxis/src/openaddress/src/plotting/icons/2.gif"
STYLE
COLOR 0 0 0
END
LABEL
MINFEATURESIZE 40
MINDISTANCE 150
POSITION UR
SIZE MEDIUM
COLOR 0 0 255
END
TEMPLATE "templates/MappingPlot/MappingPlot.html"
END
HEADER "templates/MappingPlot/MappingPlot_header.html"
FOOTER "templates/MappingPlot/MappingPlot_footer.html"
END
I'll have to admit that this is not cutting edge mapping, but it is platform independent using php4, unixodbc, and apache. It works on Linux and works on Windows. The objective here is to get map plotting working. Scalability and security are assured by using a relational database.
OGR
OGR is a vendor independent geospatial data access library included with gdal.
Simplify Data
To illustrate properly map plotting of point data such as addresses we have set up a database table containing longitude and latitude data.
Map Server
Map Server is configured to read from the database and display custom icons for point data.
OGR Configuration
MapFile Configuration
The following configuration lets the user plot different icons given the value of icon_id. The layer will only display icons from the mapping_plot table where parameters_id is equal to 1. This is achieved using the FILTERITEM and FILTER keywords. Labels are shown from the tables remarks column.
LAYER
NAME "MapPlottingbob"
CONNECTION "conf/MapPlotting.ovf"
CONNECTIONTYPE OGR
STATUS ON
TYPE POINT
DATA mapping_plot
CLASSITEM icon_id
FILTERITEM "parameters_id"
FILTER "1"
LABELITEM "remarks"
CLASS
EXPRESSION "1"
SYMBOL "/home/phil/liveaxis/src/rose-0.3.7/graphics/crime.png"
STYLE
COLOR 0 0 0
END
LABEL
MINFEATURESIZE 40
MINDISTANCE 150
POSITION UR
SIZE MEDIUM
COLOR 0 0 255
END
TEMPLATE "templates/MappingPlot/MappingPlot.html"
END
CLASS
EXPRESSION "2"
SYMBOL "/home/phil/liveaxis/src/openaddress/src/plotting/icons/1.gif"
STYLE
COLOR 0 0 0
END
LABEL
MINFEATURESIZE 40
MINDISTANCE 150
POSITION UR
SIZE MEDIUM
COLOR 0 0 255
END
TEMPLATE "templates/MappingPlot/MappingPlot.html"
END
CLASS
EXPRESSION "3"
SYMBOL "/home/phil/liveaxis/src/openaddress/src/plotting/icons/2.gif"
STYLE
COLOR 0 0 0
END
LABEL
MINFEATURESIZE 40
MINDISTANCE 150
POSITION UR
SIZE MEDIUM
COLOR 0 0 255
END
TEMPLATE "templates/MappingPlot/MappingPlot.html"
END
HEADER "templates/MappingPlot/MappingPlot_header.html"
FOOTER "templates/MappingPlot/MappingPlot_footer.html"
END
Tuesday, September 19, 2006
I am trademarking right now YouML! The idea is to create a yahoo google interface implemented in j2. Features are building applications from any ML.
Sqeezing Andromda 3 into Jetspeed 2 will help this effort.
What is a MDA?
An engine that enterprets the Universal Modeling Language (UML) and exposes a java datamodel to meta facades and templates.
What are meta facades?
Objects generated from a UML model describing a framework such as struts, ojb, jsf portlet, xml schema with xmlbeans, data backup and restore with ddlutils, etc. The meta facades describe aspects of the framework such as it's capabilities to display complex web interfaces.
This is one of the grey areas of Andromda. The default Cartriges don't generate jsf or struts only. But rather an Andromda developers framework or best practice for using such technologies. Anyway what's interesting is that the framework is yours to choose. But the reality is you have to write or modify Cartriges to achieve your MDA generated framework.
What is an object model?
An object model is a java model view to the framework.
What is an Repository?
The Repository is the underlying UML implementation. Eclipse Modeling Framework and Netbeans UML implementation are two examples of Repositories.
Getting familiar?
So the contents of the repository is the bizness inteligence, or process modeled in UML.
What is all this about?
It's about working fast! No, that's not true!
It's about thinking graphically. Developing in a graphic environment. Building bug free boiler plate code. You code the logic if you want. Configuration is achieved in the meta facades and object models. The user works with UML objects by assigning them stereotypes and tagged values which determine the framework implementation. That's enough for now. Try it www.andromda.org
Sqeezing Andromda 3 into Jetspeed 2 will help this effort.
What is a MDA?
An engine that enterprets the Universal Modeling Language (UML) and exposes a java datamodel to meta facades and templates.
What are meta facades?
Objects generated from a UML model describing a framework such as struts, ojb, jsf portlet, xml schema with xmlbeans, data backup and restore with ddlutils, etc. The meta facades describe aspects of the framework such as it's capabilities to display complex web interfaces.
This is one of the grey areas of Andromda. The default Cartriges don't generate jsf or struts only. But rather an Andromda developers framework or best practice for using such technologies. Anyway what's interesting is that the framework is yours to choose. But the reality is you have to write or modify Cartriges to achieve your MDA generated framework.
What is an object model?
An object model is a java model view to the framework.
What is an Repository?
The Repository is the underlying UML implementation. Eclipse Modeling Framework and Netbeans UML implementation are two examples of Repositories.
Getting familiar?
So the contents of the repository is the bizness inteligence, or process modeled in UML.
What is all this about?
It's about working fast! No, that's not true!
It's about thinking graphically. Developing in a graphic environment. Building bug free boiler plate code. You code the logic if you want. Configuration is achieved in the meta facades and object models. The user works with UML objects by assigning them stereotypes and tagged values which determine the framework implementation. That's enough for now. Try it www.andromda.org
Subscribe to:
Posts (Atom)