Something went wrong on our end
-
Brutzman, Don authoredBrutzman, Don authored
developers.html 129.62 KiB
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<link rel="shortcut icon" href="images/X3DtextIcon16.png" title="Savage Developers Guide" />
<title>Savage Developers Guide</title>
<meta name="author" content="Don Brutzman"/>
<meta name="description" content="Configuration setup guide for Savage X3D project developers."/>
<meta name="title" content="developers.html"/>
<meta name="identifier" content="https://savage.nps.edu/Savage/developers.html"/>
<meta name="generator" content="X3D-Edit, https://savage.nps.edu/X3D-Edit"/>
<meta name="created" content="22 February 2010"/>
<!-- symbolic link: cd /var/www/html; ln -s Savage/developers.html developers.html -->
</head>
<body>
<a name="top"/>
<!-- =========================================================== -->
<table border="0" cellspacing="0" cellpadding="0" summary="" align="center">
<tr align="center">
<td><a href="https://savage.nps.edu/Savage"><img src="images/SavageLogo.png" width="83" height="100" border="0" title="to Savage X3D Models Archive" alt="to Savage X3D Models Archive"/></a></td>
<td><pre> </pre></td>
<td><h1> Savage Developers Guide </h1></td>
<td><pre> </pre></td>
<td><a href="https://www.nps.edu"><img src="images/nps_logo.jpg" width="126" height="90" border="0" title="to NPS home page" alt="to NPS home page"/></a></td>
</tr>
</table>
<p align="center">
This developers guide describes system configuration supporting various software projects by the NPS MOVES Savage Research Group.
<!-- both for client-side and server-side capabilities. -->
</p>
<!--
<table border="0" cellspacing="2" cellpadding="2" summary="" align="center" width="80%">
<tr>
<td>
</td>
</tr>
</table>
-->
<blockquote width="7s0%">
<p align="center"><small>
<a href="#Ant">Ant</a> |
<!-- TODO: Backups -->
<a href="#Chat">Chat</a> |
<a href="#Cygwin">Cygwin</a> |
<a href="#DES" title="Discrete Event Simulation (DES) Simkit, Viskit, DISkit">DES</a> |
<a href="#DIS" title="IEEE Distributed Interactive Simulation (DIS) Protocol">DIS</a> |
<a href="#Donate">Donate</a> |
<a href="#Free">Free</a> |
<a href="#hamming">hamming</a> |
<a href="#Java">Java</a> |
<a href="#JavaScript">JavaScript</a> |
<a href="#Jenkins">Jenkins</a> |
<a href="#Licensing">Licensing</a> |
<a href="#Media">Media</a> |
<a href="#MySQL">MySQL</a> |
<a href="#NetBeans">NetBeans</a> |
<a href="#Projects">Projects</a> |
<a href="#Security">Security</a> |
<a href="#Servers">Servers</a> |
<a href="#Subversion">Subversion</a> |
<a href="#telnet">telnet</a> |
<a href="#Time">Time</a> |
<a href="#Tools">Tools</a> |
<a href="#Wikis">Wikis</a> |
<a href="#Writing">Writing</a> |
<a href="https://savage.nps.edu/X3D-Edit" title="go to this page" alt="go to this page">X3D-Edit</a> |
<a href="#Xj3D">Xj3D</a> |
<a href="#XML">XML</a> |
<a href="#XmlCatalog">XML Catalog</a> |
<a href="X3dResources.html" title="go to this page" alt="go to this page">X3D Resources</a> |
<a href="X3dSceneAuthoringHints.html" title="go to this page" alt="go to this page">X3D Scene Authoring Hints</a> |
<a href="https://SavageDefense.nps.navy.mil/developers.html" title="restricted access" alt="restricted access">SavageDefense</a> |
<a href="#Contact">Contact</a>
</small></p>
</blockquote>
<p align="center">
SAVAGE stands for Scenario Authoring and Visualization for Advanced Graphics Environments.
Our mascot is a
<a href="images/SavageLogo.png">LION</a>
because <b>Like It Or Not</b>, on the Web,
open source and open standards always win!
</p>
<!-- TODO more -->
<!-- =========================================================== -->
<h2> <a name="Ant">Ant</a>
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
<a href="https://ant.apache.org">Ant</a> is a Java library and command-line tool used to automate common tasks for building projects.
Ant task syntax is in XML, making task definition and validation much simpler than other build systems.
</p>
<p>
Ant is used to maintain most Savage projects.
Key references include:
</p>
<ul>
<li>
<a href="https://ant.apache.org">Apache Ant project</a>
and
<a href="https://ant.apache.org/faq.html">Frequently Asked Questions (FAQ)</a>
</li>
<li>
<a href="https://ant.apache.org/manual">Ant manual</a>
then
<i>Ant tasks</i>
and
<i>List of tasks</i>.
</li>
<li>
<a href="https://ant-contrib.sourceforge.net">Ant-contrib</a>
site including
<a hre="https://sourceforge.net/projects/ant-contrib/files/ant-contrib">downloads</a>
plus documentation for
<a href="https://ant-contrib.sourceforge.net/tasks/index.html">installation and tasks</a>.
</li>
<li>
<a href="https://ant.apache.org/ant_in_anger.html">Ant in Anger</a>
and
<a href="https://manning.com/loughran">Ant in Action</a>
(second edition of <i>Java Development with Ant</i>)
by Steve Loughran and Erik Hatcher.
</li>
</ul>
<p>
Recommended ant configuration details follow.
</p>
<ul>
<li>
Download and install the
<a href="https://ant.apache.org">Ant</a>
binary distribution.
The default installation directory referred to by various Savage and X3D build files is
<br />
<code style="color:darkgreen"><b>C:\apache-ant-1.10.7</b></code>
</li>
<li>
Prepend the following executable paths to the
system Path variable:
<br />
<code style="color:darkgreen"><b>PATH=.;%ANT_HOME%\bin;</b></code><code>... (etc.)</code>
</li>
<li>
Set additional
system environment variables
as follows:
<br />
<code style="color:darkgreen"><b>ANT_HOME=C:\apache-ant-1.10.7</b></code>
<br />
If system memory is limited, additional options might be needed:
<br />
<code style="color:darkgreen"><b>ANT_OPTS=-Xss16m -Xmx4096M</b></code>
<i>or</i>
<code style="color:darkgreen"><b>ANT_OPTS=-Xss16m -Xmx8192M</b></code>
<i>or</i>
<code style="color:darkgreen"><b>ANT_OPTS=-Xss16m -Xmx12228M</b></code>
<blockquote>
On Windows systems, set environment variables by selecting
<br />
<i> Control Panel </i> <b>></b>
<i> System Properties </i> <b>></b>
<i> Advanced settings </i> <b>></b>
<i> Environment variables </i>
<i> System variables </i>
</blockquote>
</li>
<li>
Important: follow the
<a href="https://ant.apache.org/manual/install.html">Ant manual installation instructions</a>
to install libraries for optional ant tasks as follows
(<a href="antConfigurationFetchOutput.txt">example output</a>):
<br />
<code style="color:darkgreen"><b>C:\apache-ant-1.10.7> ant -f fetch.xml -Ddest=system</b></code>
</li>
<li>Confirm proper path and installation:
<pre><b>ant -version</b>
Apache Ant(TM) version 1.10.7 compiled on May 2 2019
</pre>
</li>
<li>
Additional requirements: several ant tasks (such as
<code>junit</code>,
<code>sshexec</code>
and
<code>scp</code>
require the addition of external
<a href="https://ant.apache.org/manual/install.html#librarydependencies">library dependencies</a>.
</li>
<ul>
<li>
Extract and install the
<a href="https://ant-contrib.sourceforge.net">ant-contribs package</a>
under <code style="color:darkgreen"><b>ANT_HOME</b></code>,
then copy
<code style="color:darkgreen"><b>ant-contrib-*.jar</b></code>
into the
<code style="color:darkgreen"><b>ANT_HOME/lib/</b></code>
subdirectory. You can now use any of the
<a href="https://ant-contrib.sourceforge.net/tasks/tasks" target="antcontrib">ant-contrib tasks</a>
by including the following top-level statement in your build.xml file.
<br />
<code style="color:darkgreen"><b><taskdef resource="net/sf/antcontrib/antcontrib.properties"/></b></code>
</li>
<li>
To build the X3D examples archives, extract the latest Apache Commons resolver
<a href="https://www.apache.org/dist/xerces/xml-commons/">xml-commons-resolver-latest.zip</a>
and then place a copy of
<code style="color:darkgreen"><b>resolver.jar</b></code>
in the
<code style="color:darkgreen"><b>ANT_HOME/lib/</b></code>
subdirectory. Also be sure to check ownership and executable permissions for this file.
</li>
<li>
When using JDK13, add the following switch to <code>NETBEANS_HOME/etc/netbeans.conf</code> configuration file
<br />
<code style="color:darkgreen"><b>-J-Djavax.xml.bind.context.factory=com.sun.xml.bind.v2.ContextFactory</b></code>
</li>
<li>
Optional: extract, build and install the latest
<a href="http://www.jcraft.com/jsch">jsch-0.1.54.jar</a> package
into the
<code style="color:darkgreen"><b>ANT_HOME/lib/</b></code>
subdirectory.
</li>
<li>
Alternatively, additional jar libraries can be added to your Ant installation within the
<code style="color:darkgreen"><b><a href="https://ant.apache.org/manual/install.html#optionalTasks">{user.home}/.ant/lib</a></b></code>
directory.
</li>
<!-- TODO is junit not in ant default build? -->
</ul>
<li>
NetBeans users can reset the default directory referred to by NetBeans:
<i>Tools</i> menu, <i>Options</i> panel, <i>Miscellaneous</i> tab, <i>Ant</i> subtab, <i>Ant home</i> <code style="color:darkgreen"><b>C:\apache-ant-1.10.7</b></code>
</li>
<li>
For server-side installations (including <a href="#Jenkins">Jenkins</a>),
the system administrator must ensure that all read/write access permissions are properly set.
</li>
<li>
Previously ssh using
maverick1.2 was added by putting
<a href="https://xmsf.svn.sourceforge.net/svnroot/xmsf/trunk/AuvWorkbench/lib/apache-ant/lib/maverick-ant.jar">maverick.ant.jar</a>
in ANT_HOME/lib.
We changed the maverick ssh tasks to use the native Ant
<code style="color:darkgreen"><b>scp</b></code> task instead.
</li>
</ul>
<p>
Further configuration options are described under
<a href="https://ant.apache.org/manual/install.html#setup">Ant Setup</a>.
</p>
<!-- =========================================================== -->
<h2> <a name="Chat">Chat</a> using XMPP Jabber
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
The Savage tools use chat software that supports the
<a href="https://xmpp.org">Extensible Messaging and Presence Protocol (XMPP)</a>,
commonly known as Jabber chat.
</p>
<ul>
<li>
<a href="chat.html">Savage XMPP Chat Support</a>
page provides connection information for our chat rooms.
</li>
<li>
The Savage chat server is
<code style="color:darkgreen"><b><a href="xmpp://conference.savage.nps.edu">xmpp://conference.savage.nps.edu</a></b></code>
and the following rooms are publicly available:
<ul>
<li>
<code style="color:darkgreen"><b><a href="xmpp://auvw@conference.savage.nps.edu">auvw</a></b></code> for AUV Workbench discussions
</li>
<li>
<code style="color:darkgreen"><b><a href="xmpp:jenkins@conference.savage.nps.edu">jenkins</a></b></code> for Jenkins build reports
</li>
<li>
<code style="color:darkgreen"><b><a href="xmpp://x3d@conference.savage.nps.edu">x3d</a></b></code> for X3D Graphics discussions
</li>
</ul>
</li>
<li>
<a href="mailto:brutzman@nps.edu(Don%20Brutzman),mcgredo@nps.edu(Don%20McGregor),?subject=Savage%20chat%20server%20password%20request">Savage chat server password request</a>
</li>
<li>
We typically use
<a href="https://www.igniterealtime.org">Ignite Real Time</a>
which provides excellent open-source software with commercial extensions
<ul>
<li>
<a href="https://www.igniterealtime.org/downloads/index.jsp#spark">Spark</a> client software
(<a href="https://www.igniterealtime.org/builds/spark/docs/spark_user_guide.pdf">user's guide</a>)
</li>
<li>
<a href="https://www.igniterealtime.org/projects/openfire">Openfire</a> server software
</li>
</ul>
</li>
<li>
<a href="https://savage.nps.edu:9091">Savage chat server administrator console</a>
</li>
</ul>
<!-- =========================================================== -->
<h2> <a name="Cygwin">Cygwin</a> Unix for Windows
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
The Cygwin distribution provide Unix command-line functionality for Windows systems.
It is not needed for macOS or Linux systems.
</p>
<ul>
<li>
<a href="https://www.cygwin.com">Download and install Cygwin</a> (only on Windows systems).
The usual default installation directory is
<code style="color:darkgreen"><b>C:\cygwin</b></code>
<ul>
<li>
Also select and add the <b>openssh</b> package in order to have console access to <code style="color:darkgreen"><b>ssh</b></code> and <code style="color:darkgreen"><b>sftp</b></code> commands.
</li>
</ul>
</li>
<li>
Modify the system PATH environment variable to include
<br />
<code style="color:darkgreen"><b>.;C:\cygwin64\bin;</b></code>
near the beginning (before any Windows default directories)
</li>
<li>
Set the
<a href="https://cygwin.com/cygwin-ug-net/using-cygwinenv.html">CYGWIN environment variable</a>
(and
<a href="https://cygwin.com/cygwin-ug-net/using.html#using-pathnames">cygwin path functionality</a>)
as follows:
<br />
<code style="color:darkgreen"><b>CYGWIN=nodosfilewarning</b></code>
</li>
<li>
<a href="https://cygwin.com/faq/">Cygwin FAQ</a>
and
<a href="https://cygwin.com/cygwin-ug-net/cygwin-ug-net.html">Cygwin User's Guide</a>
</li>
<li>
<a href="https://cygwin.com/cygwin-ug-net/setup-files.html">Customizing bash shell</a>
(see directory <code style="color:darkgreen"><b>/home/Username/</b></code> for files <code style="color:darkgreen"><b>.bashrc</b></code> <code style="color:darkgreen"><b>.bash_profile</b></code> and <code style="color:darkgreen"><b>.inputrc</b></code>)
</li>
<li>
<a name="inetutils"></a>
<a href="http://ras52-tech.blogspot.com/2007/01/telnet-on-cygwin.html">Telnet and other networking clients</a>
are in the <i>Net/inetutils</i> package
</li>
<!--
<li>
User-specific configuration files:
<code style="color:darkgreen"><b>/home/username//.bashrc</b></code>,
<code style="color:darkgreen"><b>/home/username//.bash_profile</b></code>,
<code style="color:darkgreen"><b>/home/username//.inputrc</b></code>
</li>
Your group is currently "mkpasswd". This indicates that your
gid is not in /etc/group and your uid is not in /etc/passwd.
The /etc/passwd (and possibly /etc/group) files should be rebuilt.
See the man pages for mkpasswd and mkgroup then, for example, run
mkpasswd -l [-d] > /etc/passwd
mkgroup -l [-d] > /etc/group
Note that the -d switch is necessary for domain users.
-->
</ul>
<!-- =========================================================== -->
<h2> <a name="DES">Discrete Event Simulation (DES)</a>
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
The DES projects are a suite of integrated tools for analytic simulation.
This work is entirely built using open-source Java, XML and X3D.
</p>
<ul>
<li>
<a href="http://eos.nps.edu/Simkit">Simkit</a>
<a name="Simkit"> </a>
is a Java package for creating Discrete Event Simulation (DES) models
<ul>
<li>
<a href="https://eos.nps.edu/WebSVN/listing.php?repname=Simkit" target="_blank">subversion browse</a>
</li>
<li>
<a href="https://eos.nps.edu/svn/Simkit/trunk" target="_blank">subversion source</a>,
anonymous checkout at
<code style="color:darkgreen"><b>https://eos.nps.edu/svn/Simkit/trunk</b></code>
with username <code style="color:darkgreen"><b>guest</b></code>
</li>
<li>
<a href="https://www.movesinstitute.org/mailman/listinfo/simkit">Simkit mailing list</a>
</li>
<li>
<a href="https://savage.nps.edu/jenkins/job/Simkit/">Savage jenkins server: Simkit</a>
builds Simkit nightly
</li>
<li>
<a href="https://eos.nps.edu/bugzilla/buglist.cgi?quicksearch=simkit" target="_blank">Simkit bugtracker</a>
</li>
</ul>
</li>
<li>
<b>Diskit</b>
<a name="Diskit"> </a>
is a Java package for adding the IEEE Distributed Interactive Simulation (DIS) protocol to Simkit models
<ul>
<li>
<a href="https://eos.nps.edu/WebSVN/listing.php?repname=DISKIT" target="_blank">subversion browse</a>
</li>
<li>
<a href="https://eos.nps.edu/wcm/DISKIT/trunk" target="_blank">subversion source</a>,
anonymous checkout at
<code style="color:darkgreen"><b>https://eos.nps.edu/wcm/DISKIT/trunk</b></code>
with username <code style="color:darkgreen"><b>guest</b></code>
</li>
<li>
<a href="https://savage.nps.edu/jenkins/job/Diskit/">Savage jenkins server: Diskit</a>
builds Diskit nightly
</li>
<li>
<a href="https://eos.nps.edu/bugzilla/buglist.cgi?quicksearch=Diskit" target="_blank">Diskit bugtracker</a>
</li>
</ul>
</li>
<li>
<a href="http://eos.nps.edu/Viskit">Viskit</a>
<a name="Viskit"> </a>
is a visual programming tool to create, run and analyze Simkit models
<ul>
<li>
<a href="https://eos.nps.edu/WebSVN/listing.php?repname=Viskit" target="_blank">subversion browse</a>
</li>
<li>
<a href="https://eos.nps.edu/wcm/Viskit/trunk" target="_blank">subversion source</a>,
anonymous checkout at
<code style="color:darkgreen"><b>https://eos.nps.edu/wcm/Viskit/trunk</b></code>
with username <code style="color:darkgreen"><b>guest</b></code>
</li>
<li>
<a href="https://savage.nps.edu/sub/nps/ViskitModels">ViskitModels</a> behavior libraries
</li>
<li>
<a href="https://www.movesinstitute.org/mailman/listinfo/viskit">Viskit mailing list</a>
</li>
<li>
<a href="https://savage.nps.edu/jenkins/job/Viskit/">Savage jenkins server: Viskit</a>
builds Viskit nightly
</li>
<li>
<a href="https://eos.nps.edu/bugzilla/buglist.cgi?quicksearch=Viskit" target="_blank">Viskit bugtracker</a>
</li>
<li>
TODO: update Viskit home page, put into version control, and link it
</li>
</ul>
</li>
<li>
<a name="SavageStudio"> </a>
<a href="https://xmsf.svn.sourceforge.net/svnroot/xmsf/trunk/SavageStudio">SavageStudio</a>
is a a drag+drop scenario-authoring tool.
<ul>
<li>
SavageStudio uses the Savage archives for X3D models and Viskit behaviors to construct agent-based discrete-event simulation (DES) scenarios.
</li>
<li>
SavageStudio analyst reports are repeatable, refinable and publishable.
</li>
<li>
Simulation replications can be visualized using <a href="#Xj3D">Xj3D</a>.
</li>
<li>
<a href="https://savage.nps.edu/videos/SavageStudio-Scenario-Demo.2015JAN08.mp4" target="_blank">SavageStudio Scenario Demonstration</a> video
</li>
</ul>
</li>
<li>
Experimental
<ul>
<li>
<a href="https://okane.movesinstitute.org/simkit">SimkitProjects server</a>
(using
<a href="https://www.redmine.org/guide">Redmine</a>)
was an integrated project management site for various related projects.
</li>
</ul>
</li>
</ul>
<!-- =========================================================== -->
<h2> <a name="DIS">Distributed Interactive Simulation (DIS) Protocol</a>
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
The
<a href="https://en.wikipedia.org/wiki/Distributed_Interactive_Simulation">IEEE Distributed Interactive Simulation (DIS) protocol</a>
is an IEEE standard for conducting real-time platform-level simulation across multiple host computers.
DIS is one of the most widely used modeling and simulation networking standards.
DIS is used worldwide,
especially by military organizations but also by other agencies such as those involved in space exploration and medicine.
</p>
<p>
Overview (from the standard).
Data messages, known as Protocol Data Units (PDUs), that are exchanged on a network among simulation applications are defined.
These PDUs are for interactions that take place within specified domains called protocol families, which include
Entity Information/Interaction, Warfare, Logistics, Simulation Management, Distributed Emission Regeneration, Radio Communications,
Entity Management, Minefield, Synthetic Environment, Simulation Management with Reliability, Information Operations,
Live Entity Information/Interaction, and Non-Real-Time protocol.
</p>
<ul>
<li>
DIS Standard:
<a href="https://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=6387562">IEEE Standard 1278.1-2012 for Distributed Interactive Simulation--Application Protocols</a>
<ul>
<li>
Prior version:
<a href="https://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=3700">IEEE Standard 1278.1-1995(R2002) for DIS</a>)
</li>
<li>
<a href="https://www.sisostds.org/DigitalLibrary.aspx?EntryId=29288">DIS 7 Overview, SISO PSG File Library</a>
reference documents
</li>
<li>
<a href="documents/SISO-REF-020-DRAFT%20DIS%20Plain%20and%20Simple-20131107.pdf">DIS Plain and Simple Guide</a>
(<a href="https://savage.nps.edu/Savage/documents/SISO-REF-020-DRAFT%20DIS%20Plain%20and%20Simple-20131107.pdf">online</a>),
SISO-REF-020-2007-DRAFT, March 2007
(<a href="https://www.sisostds.org/Standards-Activities/Support-Groups/DIS-PSG-Distributed-Interactive-Simulation">status</a>).
</li>
</ul>
</li>
<li>
<a href="https://open-dis.sourceforge.net/Open-DIS.html">Open-DIS</a>
implementation of the
DIS protocol
in Java, Javascript, C++, C# and Objective C
(<a href="https://savage.nps.edu/X3D-Edit/Open-DIS-flyer.pdf">flyer</a>).
<ul>
<li>
<a href="https://open-dis.sourceforge.net/Open-DIS.html">Open-DIS home</a>,
<a href="https://sourceforge.net/projects/open-dis">sourceforge site</a>,
and
<a href="https://open-dis.sourceforge.net/Documentation.html">documentation</a>
</li>
<li>
<a href="http://jsperf.com/javascript-dis-native-vs-json/2">Javascript DIS Native vs JSON</a>
browser-performance comparisons
</li>
<li>
Application:
<a href="https://savage.nps.edu/AuvWorkbench">Autonomous Unmanned Vehicle (AUV) Workbench</a>
</li>
<li>
Application:
<a href="https://savage.nps.edu/X3D-Edit/#Open-DIS">X3D-Edit</a>
</li>
<li>
Library: the DES modeling tools Simkit and Viskit are supported by
<a href="#Diskit">Diskit</a>,
a Java package for adding the IEEE DIS protocol to Simkit models.
</li>
</ul>
</li>
<li>
Educational materials
<ul>
<li>
<a href="http://movesinstitute.org/~mcgredo/MV3500/">NPS MOVES MV3500 Networked Simulation</a>
course notes by Don McGregor
<!-- TODO Sakai site -->
</li>
<li>
<a href="https://x3dgraphics.com/slidesets/X3dForAdvancedModeling/DistributedInteractiveSimulation.pdf">X3D Graphics and DIS</a>
slideset
</li>
<li>
TODO: list of relevant NPS theses
</li>
</ul>
</li>
<li>
<a href="https://www.sisostds.org/ProductsPublications/ReferenceDocuments.aspx">SISO Reference Documents</a> include
<ul>
<li>
<!-- https://stackoverflow.com/questions/16622504/escaping-ampersand-in-url to encode ampersand & as %26 -->
<!-- https://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters -->
<a href="https://www.sisostds.org/DigitalLibrary.aspx?Command=Core_Download%26EntryId=41275">SISO-REF-010-01-2013 (v2-0)</a>: Operations Manual for the Enumerations Working Group (EWG)
</li>
<li>
<a href="https://www.sisostds.org/DigitalLibrary.aspx?Command=Core_Download%26EntryId=41145">SISO-REF-010-00-2013 (v20-0)</a>: Reference for Enumerations for Simulation Interoperability
<ul>
<li>
Also known as Enumeration Byte Values (EBV)
</li>
<li>
Distribution includes reference document plus XML and spreadsheet versions of enumeration name=value definitions
</li>
<li>
Mailing list:
<a href="mailto:SISO-ENUM@discussions.sisostds.org?SISO-ENUMerations:%20">SISO-ENUM@discussions.sisostds.org</a>
(<a href="mailto:SISO-ENUM.list-request@discussions.sisostds.org?subscribe;body=subscribe">subscribe</a>)
(<a href="mailto:SISO-ENUM@discussions.sisostds.org?SISO-ENUMerations:%20">thread</a>)
</li>
<li>
<a href="https://open-dis.sourceforge.net/javadoc/disenum/docs">open-DIS Enumerations Javadoc</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<!-- =========================================================== -->
<h2> <a name="Donate">Donate</a>
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
Savage software and models are openly published without charge and funded by research proposals.
You are welcome to donate funds to support these efforts if you wish.
You are welcome to tell our benefactors about your interest in Savage and X3D Graphics:
</p>
<ul>
<li>
<a href="https://www.npsfoundation.org">Naval Postgraduate School Foundation (NPS)</a>
is the non-profit organization that supports
NPS.
</li>
<li>
<a href="https://web3d.org/donate">Web3D Consortium</a>
is the non-profit organization that supports
Extensible 3D (X3D) Graphics development.
</li>
</ul>
<p>
Please contact
<a href="https://faculty.nps.navy.mil/brutzman" target="_blank">Don Brutzman</a>
(<a href="mailto:brutzman%20at%20nps.edu%20(Don%20Brutzman)?subject=feedback:%20research%20sponsorship,%20collaboration%20"><i>brutzman at nps.edu</i></a>)
if you are interested in sponsoring or partnering on further research.
</p>
<!-- =========================================================== -->
<h2> <a name="Free">Free</a> as in Freedom
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
The free cost of open-source software has been fundamentally important to the Savage group's ability to create
applications and content that are highly capable, compliant with open standards, highly capable, maintainable
and repeatable by others.
</p>
<ul>
<li>
"Free" is more like "free puppy" than "free beer" for software development!
</li>
<li>
Care, feeding and support are needed over time. Nevertheless you always have the freedom to fix, modify and extend.
</li>
</ul>
<p>
This long-term stability is essential to our accomplishing the NPS mission of graduate education and research.
It further allows our graduates, and any other government agency, to utilize our standards-driven work compatibly with
program life-cycle requirements and industry support.
</p>
<p>
The development and use of free software avoids common problems of
"vendor lock in" through proprietary restrictions,
inability of ongoing government efforts to fund the renewal of prior licenses,
and inability to pay a company that is otherwise unwilling to perform software bugfixes and corrections.
</p>
<p>
This approach also avoids the common "short half-life" problems of companies that can either go out of business or else get acquired (and perhaps buried) by other companies.
Such business pathologies not only break software but also negate correspondingly significant investments to create content of interest.
In turn, such dependency on proprietary software leads to personnel vulnerabilities when
an expert programmer or content developer can no longer apply their skills to improve prior accomplishments.
</p>
<p>
Further information on these software imperatives can be found in the
<a href="#Licensing">Licensing</a>
section and through the following key sources.
</p>
<ul>
<li>
<a href="https://www.apache.org">Apache Software Foundation (ASF)</a>
provides support for the Apache community of open-source software projects, which provide software products for the public good.
Of particular interest are the
<a href="https://www.apache.org/licenses">Apache Licenses</a>.
</li>
<li>
<a href="https://www.gnu.org">GNU</a>
(GNU's Not Unix!) operating system
is a broad software collection of applications, libraries, and developer tools.
</li>
<li>
<a href="https://www.eff.org">Electronic Frontier Foundation (EFF)</a>
is a nonprofit organization defending civil liberties in the digital world.
</li>
<li>
<a href="https://www.fsf.org">Free Software Foundation</a>
has a worldwide mission to promote computer0user freedom and to defend the rights of all free software users.
</li>
</ul>
<!-- =========================================================== -->
<h2> <a name="hamming">hamming</a>
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
<a href="https://hamming.uc.nps.edu">hamming</a>
is the NPS supercomputer used for a variety of tasks with
X3D Earth,
Renderman rendering,
and
Viskit Design of Experiments.
</p>
<ul>
<li>
<a href="https://hamming.uc.nps.edu">hamming</a> wiki page
and
<a href="https://hamming.uc.nps.edu/ganglia">ganglia</a> cluster load
</li>
<li>
<a href="https://www.nps.edu/hpc">NPS High-Performance Computing (HPC)</a>
and
<a href="https://www.nps.edu/hpc/Facilities.html">HPC Facilities</a>
</li>
</ul>
<p>
This major asset is named for
former NPS Emeritus Professor and distinguished computer scientist
<a href="https://en.wikipedia.org/wiki/Hamming">Richard W. Hamming</a>.
</p>
<!-- =========================================================== -->
<h2> <a name="Java">Java</a>
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
Java is the primary programming language used in Savage projects.
To configure your development system:
</p>
<ul>
<li>
Download and install the latest open-source
<a href="https://jdk.java.net" target="_blank">OpenJDK Java Development Kit (JDK)</a>
or commercial-license
<a href="https://www.oracle.com/technetwork/java/javase/downloads/index.html" target="_blank">Oracle Java Development Kit (JDK)</a>.
These installations also include the
Java Runtime Environment (JRE),
which does not need to be installed separately.
</li>
<li>
OpenJDK <code style="color:darkgreen"><b>jdk-13.0.1</b></code>
is default Java version for Savage projects, used
under a
<a href="https://openjdk.java.net/legal/gplv2+ce.html" target="_blank">non-viral open-source license</a>.
</li>
<li>
Oracle
<code style="color:darkgreen"><b>jdk-13.0.1</b></code>
and
<code style="color:darkgreen"><b>jdk1.8.0_221</b></code>
are alternative Java versions used in current development.
These are tested under "Development Use" permitted by the
<a href="https://www.oracle.com/downloads/licenses/javase-license1.html" target="_blank">Oracle JDK license</a>.
</li>
<li>
Verify that the
system environment variables
are set appropriately. For example, one value for <code>JAVA_HOME</code> such as
<!--
<br />
<code style="color:darkgreen"><b>JAVA_HOME=C:\Program Files\Java\jdk1.7.0_55</b></code>
<br />
or
-->
<br />
<code style="color:darkgreen"><b>JAVA_HOME=C:\Program Files\Java\openjdk\jdk-13.0.1</b></code>
<br />
<code style="color:darkgreen"><b>JAVA_HOME=C:\Program Files\Java\jdk-13.0.1</b></code>
<br />
<code style="color:darkgreen"><b>JAVA_HOME=C:\Program Files\Java\jdk1.8.0_221</b></code>
<br />
and (usually inserted at the beginning of an existing PATH, if it already exists)
<br />
<code style="color:darkgreen"><b>PATH=.;%JAVA_HOME%\bin;%ANT_HOME%\bin;</b></code>
</li>
<li>Test what version of Java is actually installed and configured for your operating system via console command line. Examples:
<ul>
<li>
<pre>
$<b> java -version</b> # OpenJDK 13.0.1
openjdk version "13.0.1" 2019-10-15
OpenJDK Runtime Environment (build 13.0.1+9)
OpenJDK 64-Bit Server VM (build 13.0.1+9, mixed mode, sharing)
</pre>
</li>
<li>
<pre>
$<b> java -version</b> # Oracle JDK 13
java 13 2019-09-17
Java(TM) SE Runtime Environment (build 13+33)
Java HotSpot(TM) 64-Bit Server VM (build 13+33, mixed mode, sharing)
</pre>
</li>
<li>
<pre>
$<b> java -version</b> # Oracle JDK 8
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
</pre>
</li>
</ul>
</li>
<li>
<a href="https://docs.oracle.com/en/java/javase/13" target="_blank">Java 13 Documentation</a>
is useful.
<a href="https://docs.oracle.com/javase/8/docs/api" target="_blank">Java 8 Javadoc</a>
is online.
</li>
<li>
Javadoc downloads for local use are available on the
<a href="https://www.oracle.com/technetwork/java/javase/downloads/index.html" target="_blank">Java downloads</a> page.
Extract the <code style="color:darkgreen"><b>docs</b></code> directory tree provided by the .zip
into the directory containing the corresponding version of Java.
</li>
<ul>
<li>
(Note that)
<a href="https://docs.oracle.com/en/java/javase/12/" target="_blank">OpenJDK Java 12 Javadoc</a>
directs to the same javadoc as Oracle Javadoc.)
</li>
</ul>
<li>
For JDK 1.8 (but not later),
<a href="https://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html">Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 8 Download</a>
is needed to support various builds
(link also found at bottom of JavaSE downloads page).
<ul>
<li> Extract the contents (including README.txt) for inclusion in the JDK development build, for example
<br />
<code style="color:darkgreen"><b>C:\Program Files\Java\jdk1.8.0_221\jre\lib\security</b></code></li>
<li>
<a href="https://download.oracle.com/javase/8/docs/technotes/guides/security">Java(TM) Cryptography Architecture (JCA) Reference Guide</a>
</li>
<li>
<a href="https://www.oracle.com/technetwork/java/javase/tech/index-jsp-136007.html">Java SE Security</a>
has more information about JCE and the Java SE Security Model.
</li>
</ul>
</li>
<li>
Be sure to similarly configure
<a href="#Ant">Ant</a> and
<a href="#Netbeans">Netbeans</a>
as appropriate.
</li>
</ul>
<p>Additional Java resources:</p>
<ul>
<li>
<a href="https://www.oracle.com/technetwork/java/javase/documentation/index-jsp-135444.html">Javadoc Tool</a>
page provides guidance on how to write correct, effective Java documentation.
</li>
<li>
You can also visit the
<a href="https://www.java.com/en/download/installed.jsp" target="_blank">Verify Java Version</a>
page, which detects which version of Java is installed in your Web browser.
This may be a different version (for example, JRE version 1.7.*)
without interfering with the command-line PATH version used for development.
</li>
<li>
If desired, developers can choose among multiple versions of Java platforms in NetBeans
via the menu Tools > Java Platforms. Over years of practice, we earlier
found it best to only install a single version of Java on each machine to avoid configuration collisions.
</li>
<li>Style guides
<ul>
<li>
<a href="https://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html">Code Conventions for the Java Programming Language</a>).
(April 1999)
</li>
<li>
<a href="https://google.github.io/styleguide/javaguide.html">Google Java Style Guide</a>
for source code
(<a href="https://www.javaworld.com/article/2102551/java-language/googles-java-coding-standards.html">press review</a>).
</li>
</ul>
</li>
<li>
Applet security: to run a Java applet in a Web browser, you may need to add this site to your
<a href=" https://www.web3d.org/x3d/content/examples/images/JavaControlPanelSecurityExceptionSiteList.png">Java Control Panel Security Exception Site List</a>
(<a href="https://www.java.com/en/download/exception_sitelist.jsp">documentation</a>).
</li>
</ul>
<!-- =========================================================== -->
<h2> <a name="JavaScript">JavaScript</a>
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
JavaScript is a common programming language used in Web browsers for HTML and X3D scripts.
n.b. JavaScript is not the same as Java, they are different programming languages.
</p>
<ul>
<li>
<a href="https://savage.nps.edu/mcgredo/javascriptTest.html">JavaScript test</a>
to check if JavaScript is working in a Web browser.
</li>
<li>
<a href="https://get.webgl.org">WebGl test</a>
to check if JavaScript WebGl is working in a Web browser.
</li>
<li>
<a href="https://www.web3d.org/specifications/Ecma-262.pdf">ECMAScript-262 specification</a>
defines JavaScript functionality.
</li>
<li>
<a href="https://nodejs.org/en">Node.js</a>
is a JavaScript run-time engine.
</li>
<li>
<a href="https://kangax.github.io/nfe">Named function expressions demystified</a>
by Juriy "kangax" Zaytsev.
</li>
<li>
<a href="https://google.github.io/styleguide/jsguide.html">Google JavaScript Style Guide</a>
</li>
</ul>
<!-- =========================================================== -->
<h2> <a name="Jenkins">Jenkins</a>
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
The
Savage Jenkins Build Servers
are online continuous-integration servers that are used to test open-source code and content distributions.
They automatically check out versioned projects and perform a variety of custom build tasks.
This is an excellent capability that complements individual programmer efforts to support agile, effective team development.
</p>
<p>
Configuration setup for our jenkins servers includes installation of ant-contrib
as described in the <a href="#Ant">Ant</a> section.
</p>
<ul>
<li>
<a href="https://savage.nps.edu/jenkins/">Savage Jenkins Server</a>
</li>
<li>
<a href="https://mmog.ern.nps.edu/jenkins/">Savage MMOG Jenkins Server</a> (NPS intranet access)
</li>
<li>
<a href="https://SavageDefense.nps.navy.mil/jenkins/" title="restricted access" alt="restricted access">SavageDefense Jenkins Server</a> (restricted FOUO access)
</li>
<li>
<a href="https://savage.nps.edu/Savage/chat.html">Savage chat room</a> for build reports:
Jabber ID (JID)
<a href="xmpp://jenkins@conference.savage.nps.edu?join">xmpp://jenkins@conference.savage.nps.edu</a>
</li>
<li>
<a href="mailto:mcgredo@nps.edu(Don%20McGregor),brutzman@nps.edu(Don%20Brutzman)?subject=Savage%20jenkins%20account%20request">Requesting a Savage jenkins account</a>
</li>
<li>
Report a
<a href="https://www.movesinstitute.org/bugzilla/enter_bug.cgi?product=XMSF;component=Jenkins">bug</a>
with one of our local jenkins servers
</li>
<li>
Guests are now allowed to view build and workspace results
</li>
</ul>
<p>
Helpful external references:
</p>
<ul>
<li>
<a href="https://jenkins.io">Jenkins</a>
is the leading open source automation server.
</li>
<li>
<a href="http://hudson-ci.org">Hudson website</a>
and
<a href="http://wiki.hudson-ci.org">Hudson wiki</a>
</li>
<li>
<a href="http://wiki.hudson-ci.org/display/HUDSON/Meet+Hudson">Meet Hudson</a>
and
<a href="http://wiki.hudson-ci.org/display/HUDSON/Hudson+Best+Practices">Hudson Best Practices</a>
</li>
<li>
Sun whitepaper
<a href="http://blogs.sun.com/ontherecord/entry/new_whitepaper_developing_software_collaboratively">Developing Software Collaboratively with Hudson</a>
(<a href="https://www.sun.com/offers/details/hudson.xml">.pdf</a>)
</li>
</ul>
<!-- =========================================================== -->
<h2> <a name="Licensing">Licensing</a> and IPR Issues
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
Wherever possible our group utilizes both
<a href="https://en.wikipedia.org/wiki/Open_standards">open standards</a> and
<a href="https://en.wikipedia.org/wiki/Open_source">open source</a> licensing.
</p>
<p>
Motivation: as a government-funded university, it is important that our work be published publicly and made available freely.
As researchers working with military students and worldwide communities of interest, we are striving to maximize the
interoperability and 3D visualization capabilities of data streams used for situational awareness.
Our strategy to accomplish these goals is the development, testing, adoption and evaluation of Web standards.
</p>
<p>
It is always important to observe Intellectual Property Rights (IPR) requirements.
Because of our involvement in multiple groups developing open standards and open source,
it is important that our work remains "untainted" and unexposed to software that may contain patent encumbrances.
We do not want to jeopardize any of the standards or codebases that we work on.
</p>
<p>
In particular, we don't like to use tools with the following characteristics:
</p>
<ul>
<li>
Closed or proprietary standards for data or networking
</li>
<li>
Unsupported by (or inconsistent with requirements of) Navy or Department of Defense (DoD)
</li>
<li>
Requires lockin of some sort, e.g. single operating system or proprietary software
</li>
</ul>
<p>
Rationale for success:
</p>
<ul>
<li>
Stay close to what operational military users can work with,
thus best supporting our students while at NPS and after they graduate
</li>
<li>
"Walk the walk" in terms of making open standards work together properly
</li>
<li>
Gain experience that enables us to make informed recommendations about
how Navy/DoD can best deploy open standards for broad interoperability
</li>
</ul>
<p>
<a name="license">Resources:</a>
</p>
<ul>
<li>
<a href="license.html">Savage open-source license</a>
(<a href="license.txt">text version</a>)
is non-viral and business friendly. This approach encourages industry to adopt open standards by
offering our code and content for reuse without impediment.
</li>
<li>
<a href="https://creativecommons.org">Creative Commons</a> is another important source for licenses.
</li>
<li>
<a href="https://oreilly.com/catalog/9780596005818">Understanding Open Source and Free Software Licensing</a>
by
Andrew M. St. Laurent,
O'Reilly Media,
Sebastopol California, 2004.
Also
<a href="https://oreilly.com/openbook/osfreesoft/book">available online</a>.
</li>
<li>
<a href="https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#license">X3D Scene Authoring Hints: License</a>
provides further rationale on licenses for X3D scenes.
</li>
</ul>
<p>
<a name="OTD"><b>Open Technology Development (OTD)</b></a>
describes accepted best practices for open source and open standards,
emphasizing business cases for government agencies,
and providing excellent rationales and detailed guidance.
</p>
<ul>
<li>
J.C. Herz, Mark Lucas and John Scott,
<a href="https://www.acqnotes.com/Attachments/Open%20Open%20Technology%20Development%20Roadmap%20-%20April%202006.pdf" target="_blank">Open Technology Development (OTD) Roadmap</a>,
Office of the Secretary of Defense, Advanced Systems and Concepts, 2006.
</li>
<li>
John Scott, David A. Wheeler, Mark Lucas, and J.C. Herz,
<a href="https://dodcio.defense.gov/Portals/0/Documents/FOSS/OTD-lessons-learned-military-signed.pdf" target="_blank">Open Technology Development: Lessons Learned & Best Practices for Military Software</a>,
16 May 2011.
</li>
<li>
<a href="https://mil-oss.org/software/open-source-software-and-its-applications-in-military" target="_blank">Open Source Software And Its Applications In Military</a>,
MIL-OSS, 23 FEB 2019.
</li>
<li>
Perlroth, Nichole,
<a href="https://www.nytimes.com/2014/04/19/technology/heartbleed-highlights-a-contradiction-in-the-web.html" target="_blank">Heartbleed Highlights a Contradiction in the Web</a>,"
New York Times, 19 April 2014. "Companies using open software are doing little to support it."
</li>
</ul>
<p>
Contributors who wish to provide code or content for any of the archives we maintain can either use the
<a href="license.html">Savage open-source license</a>
or else another open-source license of their choice.
In this way, these public archives remain freely reusable.
</p>
<!-- =========================================================== -->
<h2> <a name="Media">Media</a> and Content
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
3D graphics modeling and Web media benefit from using open-source content. The
<a href="X3dSceneAuthoringHints.html" title="go to this page" alt="go to this page">X3D Scene Authoring Hints</a>
contain detailed tips and guidelines for creating Web content.
Here are some additional useful resources.
</p>
<h4> <a name="3D">3D</a> Models </h4>
<ul>
<li>
<a href="https://Savage.nps.edu">Savage</a>
and
<a href="https://SavageDefense.nps.navy.mil/developers.html" title="restricted access" alt="restricted access">SavageDefense</a>
model archives
</li>
<li>
<a href="https://www.web3d.org/x3d/content/examples/X3dResources.html#Examples">X3D Resources: Examples</a>
</li>
</ul>
<h4> <a name="Audio">Audio</a> </h4>
<ul>
<li>
The NPS Savage Group has limited local rights to publish and use
<a href="SoundEffects/SavageSoundReadme.html">sound effects files</a>
from
<a href="https://www.hollywoodedge.com">The Hollywood Edge</a>
library.
</li>
</ul>
<h4> <a name="Imagery">Imagery</a> </h4>
<ul>
<li>
<a href="https://www.dimoc.mil">Defense Imagery Management Operations Center</a>
<!--
<a href="https://defenseimagery.mil/products.html">Defense Imagery</a>
(including <a href="http://defenseimagery.mil/products/dodimagery.html">guidelines</a>)
-->
</li>
<li>
<a href="https://commons.wikimedia.org/wiki/Nautical_Signal_Flags">Nautical Signal Flags</a>
</li>
</ul>
<h4> <a name="Video">Video</a> </h4>
<ul>
<li>
<a href="https://savage.nps.edu/videos">Savage videos</a>
</li>
<li>
<a href="https://www.dimoc.mil">Defense Imagery Management Operations Center</a>
<!-- duplicate
<a href="http://defenseimagery.mil/products.html">Defense Imagery</a>
(including <a href="http://defenseimagery.mil/products/dodimagery.html">guidelines</a>)
-->
</li>
<li>
<a href="https://www.dvidshub.net">Defense Video and Imagery Distribution System (DVIDS)</a>
</li>
<li>
<a href="https://www.web3d.org/x3d/content/examples/X3dResources.html#Video">X3D Resources: Video</a>
</li>
</ul>
<!-- =========================================================== -->
<h2> <a name="MySQL">MySQL</a> Database Support
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
NetBeans has excellent support for MySQL databases.
The NetBeans help page "Using MySQL with the IDE" is a quick reference.
Other resources include:
</p>
<ul>
<li>
NetBeans help page "Using MySQL with the IDE"
is a helpful quick reference
</li>
<li>
<a href="https://netbeans.org/kb/articles/mysql.html">MySQL and NetBeans IDE</a>
includes two screencast videos:
<ul>
<li>
Getting Started with Database-Driven Applications using MySQL
</li>
<li>
Database Support Improvements in NetBeans IDE
</li>
</ul>
</li>
<li>
<a href="https://netbeans.org/kb/docs/ide/mysql.html">Connecting to a MySQL Database</a>
</li>
<li>
<a href="https://netbeans.org/kb/docs/web/mysql-webapp.html">Creating a Simple Web Application Using a MySQL Database</a>
</li>
<li>
<a href="https://netbeans.org/kb/docs/websvc/rest-mysql.html">Exposing a MySQL Database with RESTful Web Services</a>
</li>
</ul>
<p>
Additional resources:
</p>
<ul>
<li>
<a href="https://www.mysql.com">MySQL.com</a>
and
<a href="https://www.mysql.com/downloads/workbench/">MySQL Workbench</a> (GUI tool)
</li>
<li>
<a href="https://www.sequelpro.com">SequelPro</a>
database management application (Macintosh)
</li>
</ul>
<p>
A <b>secure shell (ssh) tunnel</b> makes it possible to create a local connection to a remote database on another server.
</p>
<!-- Credit goes to Don McGregor with an assist from Kirk Stork -->
<blockquote>
This makes a port on your local
host appear as if it is a port on the remote host.
In reality, the traffic
is first going into the port on the local host, then going across an encrypted
link to <code style="color:darkgreen"><b>RemoteHost.nps.edu</b></code>, then being decrypted on the other side, and
then sent to the MySQL port on <code style="color:darkgreen"><b>RemoteHost</b></code>. Finally the ssh tunnel returns the data
response from the database to the port on your local host.
This technique is secure because it lets us avoid having to
unblock the firewall to open the MySQL port on the remote host.
It also ensures that all the passwords and data sent across the network
are encrypted. If you are connecting to an NPS database server, you will first
need to be connected to the NPS intranet.
</blockquote>
<blockquote>
<table border="1" cellpadding="5">
<tbody>
<tr>
<td colspan="2" align="center">
<code style="color:darkgreen"><b>
ssh -N username@RemoteHost.nps.edu -L 3307:localhost:3306
</b></code>
</td>
</tr>
<tr>
<td align="right"><code style="color:darkgreen"><b>ssh</b></code></td>
<td>
Unix command for secure shell.
<code style="color:darkgreen"><b>ssh</b></code> support under Windows can be found as part of the
<a href="#Cygwin">Cygwin tools</a>.
</td>
</tr>
<tr>
<td align="right"><code style="color:darkgreen"><b>-N</b></code></td>
<td>Don't run any commands on the mmowgli host. Optional but nice.</td>
</tr>
<tr>
<td align="right"><code style="color:darkgreen"><b>username@RemoteHost.nps.edu</b></code></td>
<td>your ssh login account on the remote host</td>
</tr>
<tr>
<td align="right"><code style="color:darkgreen"><b>-L</b></code></td>
<td>Set up a tunnel</td>
</tr>
<tr>
<td align="right"> <code style="color:darkgreen"><b>3307:localhost:3306</b></code></td>
<td>
Set up a port on your system, 3307, that goes to the
MySQL port, 3306, on the remote host.
<br />
We use 3307 in this case
because there's often a development MySQL server running on
<br />
your system that's already using 3306.
</td>
</tr>
</tbody>
</table>
<p>
This technique is also helpful for locally listening to a Tomcat server port. For example:
</p>
<blockquote>
<code style="color:darkgreen"><b>ssh -N username -L 8080:tomcatServer.nps.edu:8181</b></code>
</blockquote>
<p>
lets you monitor remote <code style="color:darkgreen"><b>tomcatServer</b></code> response via your web browser at
</p>
<blockquote>
<code style="color:darkgreen"><b>http://localhost:8080</b></code>
</blockquote>
<p>
Further <code style="color:darkgreen"><b>ssh</b></code> details are available using the Unix help manual page,
<a href="https://openssh.com/manual.html"><code style="color:darkgreen"><b>man ssh</b></code></a>.
</p>
</blockquote>
<!-- =========================================================== -->
<h2> <a name="Netbeans"></a><a name="NetBeans">NetBeans</a>
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
<a href="https://www.netbeans.org" target="_blank">NetBeans</a>
is the Integrated Development Environment (IDE) used for most Savage project development.
</p>
<p>
Free book:
<a href="https://netbeans.dzone.com/articles/free-oracle-book-developing" target="_blank">Developing Applications with NetBeans IDE 8.0</a>
(<a href="https://docs.oracle.com/cd/E50453_01/doc.80/e50452/toc.htm">.html</a>
and
<a href="https://docs.oracle.com/cd/E50453_01/doc.80/e50452.pdf">.pdf</a>)
</p>
<p>
Once installed, recommended configuration settings and
suggested modules include the following:
</p>
<ul>
<li>
First-time use of Subversion under Windows can yield a
<a href="images/NetbeansSubversionClientWindows.png">warning dialog</a>,
click to accept installation of plugin
</li>
<li>
<a href="https://docs.oracle.com/cd/E50453_01/index.htm" target="_blank">Netbeans documentation</a>
and
<a href="https://docs.oracle.com/javase/8/docs" target="_blank">Java documentation</a>
are helpful.
Be sure to download Javadoc for Java from the
<a href="https://www.oracle.com/technetwork/java/javase/downloads">Java downloads</a> page.
Extract the <code style="color:darkgreen"><b>docs</b></code> directory tree provided by the .zip to the directory containing Java.
Then select the Netbeans menu for <i>Tools > Java Platform</i> and
add the local directory under the Javadoc tab. For good measure you can also add the online Java Javadoc url at
<a href="https://docs.oracle.com/javase/8/docs/api" target="_blank">https://docs.oracle.com/javase/8/docs/api</a>
there as well.
<p>
Javadoc location is configured under <i>Tools > Java Platform > select platform (JDK 1.8)</i> subtab
</p>
</li>
<li>
For backwards-compatible <code>jaxb</code> support on
<code style="color:darkgreen"><b>netbeans.conf</b></code> in Netbeans 11, append:
<br />
<b><code>netbeans_default_options</code></b>="<b><code>-J-Djavax.xml.bind.context.factory=com.sun.xml.bind.v2.ContextFactory</code></b>"
</li>
<li>
If upgrading Java without re-installing Netbeans, you may need to
<a href="https://stackoverflow.com/questions/2809366/changing-the-version-on-which-netbeans-runs">modify Netbeans version of Java platform</a>
by editing
<code style="color:darkgreen"><b>netbeans.conf</b></code>
in the program-installation directory, such as
<br />
<code style="color:darkgreen"><b>C:\Program Files\NetBeans_11.2\etc\netbeans.conf</b></code> (default user settings)
<br />
or, noting hyphen,
<code style="color:darkgreen"><b>C:\Program Files\NetBeans-11.2\etc\netbeans.conf</b></code> (default user settings)
<br />
or, for older versions of Netbeans,
<br />
<code style="color:darkgreen"><b>C:\Program Files\NetBeans 8.2\etc\netbeans.conf</b></code> (default user settings)
<br />
<code style="color:darkgreen"><b>C:\Users\<b>MyName</b>\AppData\Roaming\NetBeans\8.0.2\etc\netbeans.conf</b></code>
<br />
Modify original settings to also include:
<br />
<b><code>netbeans_default_options</code></b>="<b><code>-J-server</code> <code>-J-Xmx2g</code> <code>-J-XX:PermSize=32m</code></b>"
<br />
(for details, see <a href="https://wiki.netbeans.org/FaqSettingHeapSize">Netbeans FaqSettingHeapSize</a>)
</li>
<li>
<a href="https://plugins.netbeans.org/PluginPortal">NetBeans Plugin Portal</a>
has many useful additions for Netbeans
</li>
<li>
<a href="https://netbeans.dzone.com">DZone NetBeans Zone</a>
has interesting news and resources, including
<a href="https://refcardz.dzone.com/refcardz/netbeans-ide-7-programming">refcard: Netbeans IDE 7.0 - Programming in Java</a>
and
<a href="https://refcardz.dzone.com/refcardz/netbeans-platform-70">refcard: NetBeans Platform 7.0 Framework for Building Pluggable Enterprise Applications </a>.
</li>
<!--
<li>
(TODO verify latest, update if needed) Add
<a href="https://updates.netbeans.org/netbeans/updates/6.9/uc/m1/dev/catalog.xml">NetBeans Development</a>
Update Center to Plugins, then
<i>XML Schema and WSDL</i> plugin
</li>
-->
<li>
<a href="https://savage.nps.edu/X3D-Edit/#Downloads">Install X3D-Edit</a> (which includes KML support) as plugin modules
</li>
<li>
If X3D-Edit plugin is not installed, select
<br />
<i>Tools > Options > Miscellaneous > Files:</i> add new file type <code style="color:darkgreen"><b>x3d</b></code> with value <code style="color:darkgreen"><b>XML Files (text/xml)</b></code> to support X3D scene validation
</li>
<li>
<i>Tools > Options > Miscellaneous > Files:</i> add new file type <code style="color:darkgreen"><b>sch</b></code> with value <code style="color:darkgreen"><b>XML Files (text/xml)</b></code> to support Schematron rule-set validation
</li>
<li>
<i>Tools > Options > Miscellaneous > Ant:</i>
set directory for <a href="#Ant">local version of Ant installation</a>,
unset Reuse Output Tabs,
set Save All Modified Files,
set Always Show Output
</li>
<li>
<i>Tools > Plugins > Settings:</i>
set update interval to <i>Every Startup</i>
</li>
</ul>
<p>
<a name="NetBeansWindows64">Netbeans Windows 64-bit</a> configuration for latest Java:
</p>
<ul>
<li>
<a href="#java">Download</a> and install 64-bit Java
</li>
<li>
Add the new java installation in Netbeans via
<i>Tools, Java Platforms</i> menu
</li>
<li>s
Set the new java version in each Project Properties
</li>
<li>
Update
<br />
<code style="color:darkgreen"><b>C:\Program Files\NetBeans 8.2\etc\netbeans.conf</b></code>
<br />
or
<br />
<code style="color:darkgreen"><b>%USERPROFILE%\<AppData>\<i>Local</i> (or <i>Roaming</i>)\NetBeans\8.2\etc\netbeans.conf</b></code>
<br />
by changing
<pre>
netbeans_jdkhome="C:\Program Files (x86)\Java\jdk1.8.0_221"</pre>
to remove the <b>(x86)</b> as follows:
<pre>
netbeans_jdkhome="C:\Program Files\Java\jdk1.8.0_221"</pre>
<p>
Similarly Java Platform settings can be edited in
<br />
<code style="color:darkgreen"><b>%USERPROFILE%\<AppData>\<i>Roaming</i>\NetBeans\8.2\config\Services\Platforms\org-netbeans-api-java-Platform\JDK_1.8.xml</b></code>
</p>
</li>
<ul>
<li>
Alternative Netbeans version used in current development is
<code style="color:darkgreen"><b>NetBeans-11.2</b></code>
</li>
</ul>
<li>
Errors and exceptions are recorded in
<br />
<code style="color:darkgreen"><b>%USERPROFILE%\<AppData>\<i>Local</i> or <i>Roaming</i>\NetBeans\8.2\var\log\messages.log</b></code>
</li>
<li>
Consider changing
<br />
<code style="color:darkgreen"><b>netbeans_default_options="-J-client</b></code>
etc.
<br />
to
<br />
<code style="color:darkgreen"><b>netbeans_default_options="-J-server</b></code>
etc.
<br/>
in order to allow the JIT compiler to perform more aggressive optimizations on highly repeated code blocks.
</li>
</ul>
<p>
Other useful information:
</p>
<ul>
<li>
<a href="https://stackoverflow.com/questions/23651486/netbeans-ide-scaling-on-windows-8-10">NetBeans IDE scaling on Windows 8/10</a>:
Change parameter in
<code style="color:darkgreen"><b>netbeans.conf</b></code> file (shown above):
<br />
<code>-J-Dsun.java2d.dpiaware=true</code>
to
<code>-J-Dsun.java2d.dpiaware=false</code>
</li>
<li>
<i>Window > Debugging > Sources > (Right Click) Add Source Root</i>
<br/>
For example: <code style="color:darkgreen"><b>Xj3D Source</b></code> > <code style="color:darkgreen"><b>src/java</b></code>
</li>
<li>
<a href="http://rubenlaguna.com/wp/2008/02/22/attach-source-code-to-a-netbeans-library-wrapper-module">Attach source code to a NetBeans Library Wrapper Module</a>
</li>
</ul>
<!-- =========================================================== -->
<h2> <a name="Projects">Projects</a>
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
The Savage group maintains a large number of open-source projects.
</p>
<ul>
<li>
<a href="https://savage.nps.edu/AuvWorkbench">Autonomous Unmanned Vehicle (AUV) Workbench</a>
and
<a href="https://savage.nps.edu/Savage/AuvWorkbench/AVCL/AVCL.html">Autonomous Vehicle Control Language (AVCL)</a>
</li>
<li>
TODO: AUVW mission archives
</li>
<li>
<a href="https://savage.nps.edu/X3D-Edit/#Open-DIS">Open DIS</a>
implementation of the
<a href="https://en.wikipedia.org/wiki/Distributed_Interactive_Simulation">IEEE Distributed Interactive Simulation (DIS) protocol</a>
in Java, Javascript, C++, C# and Objective C
(<a href="https://savage.nps.edu/X3D-Edit/Open-DIS-flyer.pdf">flyer</a>)
</li>
<li>
<a href="https://savage.nps.edu/Savage/Tools/SMAL/SMAL.html">SAVAGE Modeling and Analysis Language (SMAL)</a>
</li>
<li>
<a href="https://savage.nps.edu/svn/repos/nps/list/TrackDataConversionSuite">Track Data Conversion Suite</a>
and
<a href="https://savagedefense.nps.navy.mil/svn/repos/nps/list/TrackDataConversionSuiteDefense/trunk" title="restricted access" alt="restricted access">Track Data Conversion Suite Defense</a>
(FOUO access)
</li>
</ul>
<p>
Extensible 3D (X3D) Graphics projects include the following:
</p>
<ul>
<li>
<a href="https://www.web3d.org/x3d/content/examples/X3dResources.html#AuthoringSupport" target="_blank">X3D Authoring Support</a>
lists a variety of resources
</li>
<li>
<a href="https://x3d.svn.sourceforge.net/viewvc/x3d/www.web3d.org/x3d/tools/canonical" target="_blank">X3D Canonicalization (C14N)</a>
for normalized formatting and authentication support
</li>
<li>
<a href="https://www.web3d.org/specifications">X3D DTD and Schema Validation</a>
to ensure XML document validity
(<a href="https://x3d.svn.sourceforge.net/viewvc/x3d/www.web3d.org/x3d/tools/canonical" target="_blank">subversion source</a>).
<ul>
<li>
<a href="images/X3dDtdDocumentationGenerationNetbeans.png">NetBeans DOCTYPE documentation generation</a>
is used to produce
<a href="https://www.web3d.org/specifications/X3dDoctypeDocumentation3.2.html">X3D DOCTYPE documentation</a>
</li>
<li>
<a href="images/X3dSchemaDocumentationGenerationXmlspy.png">XML Spy schema documentation generation</a>
is used to produce
<a href="https://www.web3d.org/specifications/X3dSchemaDocumentation3.2/x3d-3.2.html">X3D Schema documentation</a>
</li>
</ul>
</li>
<li>
<a href="https://savage.nps.edu/X3D-Edit">X3D-Edit</a>
is an open-source authoring tool for simple error-free editing, authoring and validation of X3D scenes
</li>
<li>
<a href="https://www.web3d.org/x3d/content/examples/X3dResources.html#Examples">X3D Example Archives</a>
(includes
<a href="https://www.web3d.org/x3d/content/examples/X3dResources.html#Examples">links</a>
to version-control sources and other details)
<ul>
<li>
<a href="https://x3d.svn.sourceforge.net/viewvc/x3d/www.web3d.org/x3d/tools/CreateContentCatalog" target="_blank">Content Catalog Creation source</a>
uses metadata in the X3D model documents themselves to automatically build all the HTML pages
</li>
<li>
<a href="https://www.web3d.org/x3d/content/examples/Basic" target="_blank">Basic</a> examples
</li>
<li>
<a href="https://www.web3d.org/x3d/content/examples/ConformanceNist" target="_blank">ConformanceNist</a> examples
</li>
<li>
<a href="https://www.web3d.org/x3d/content/examples/Vrml2.0Sourcebook" target="_blank">VRML 2.0 Sourcebook</a> examples
</li>
<li>
<a href="https://savage.nps.edu/Savage" target="_blank">Savage</a> examples
</li>
<li>
<a href="https://SavageDefense.nps.navy.mil/SavageDefense" target="_blank" title="restricted access" alt="restricted access">SavageDefense</a> examples
have restricted access,
For Official Use Only (FOUO)
</li>
<li>
<a href="https://x3dgraphics.com/examples/X3dForWebAuthors" target="_blank">X3dForWebAuthors</a> examples
</li>
</ul>
</li>
<li>
<a href="https://www.web3d.org/x3d/tools/schematron/X3dSchematron.html" target="_blank">X3D Schematron</a>
rules for quality assurance of X3D scenes
(<a href="https://x3d.svn.sourceforge.net/viewvc/x3d/www.web3d.org/x3d/tools/schematron" target="_blank">subversion source</a>)
</li>
<li>
<a href="https://www.web3d.org/x3d/content/examples/X3dResources.html#Showcase" target="_blank">X3D Showcase</a>
a data DVD of X3D players, authoring tools and content
</li>
<li>
<a href="https://www.web3d.org/x3d/content/examples/X3dResources.html#Tooltips">X3D Tooltips</a>
provide hints for each node and field in X3D
(<a href="https://x3d.svn.sourceforge.net/viewvc/x3d/www.web3d.org/x3d/tooltips" target="_blank">subversion source</a>)
</li>
<li>
<a href="#Xj3D"> Xj3D viewer - NPS Branch</a>
includes NPS branch modifications to the Xj3D source
</li>
</ul>
<!-- =========================================================== -->
<h2> <a name="Security">Security</a>
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
The NPS MOVES team maintains multiple servers.
We typically use secure <code style="color:darkgreen"><b>http<b>s</b>://</b></code>
rather than <code style="color:darkgreen"><b>http://</b></code>
for improved confidentiality between clients and servers.
</p>
<p>
Note that https certificate details can be used for confirmation of site identity:
</p>
<ul>
<li>
<a href="images/SavageHttpsCertificate.png">Savage.nps.edu https certificate</a>
</li>
<li>
<a href="images/MmowgliHttpsCertificate.png">SavageDefense.nps.navy.mil https certificate</a>
now matches the
<br />
<a href="images/MmowgliHttpsCertificate.png">mmowgli.nps.navy.mil https certificate</a>
</li>
<!--
<li>
<a href="images/MovesInstituteHttpsCertificate.png">movesInstitute.org https certificate</a>
</li>
-->
<li>
<a href="images/X3d-earthHttpsCertificate.png">x3d-earth.nps.edu https certificate</a>
</li>
<li>
<a href="images/MmogHttpsCertificate.png">mmog.ern.nps.edu https certificate</a> (NPS intranet access only)
</li>
<li>
<a href="images/EosHttpsCertificate.png">eos.nps.edu https certificate</a> (Simkit, Viskit)
</li>
</ul>
<p>
ssh/sftp public keys can be used for informal verification of site identity:
</p>
<ul>
<li>
<a href="images/Savage.SshSftpPublicKey.png">Savage.nps.edu https certificate</a>
</li>
<li>
Savage.nps.edu ssh/sftp RSA public key fingerprint is
<br />
<code style="color:darkgreen"><b>d8:d2:77:4d:52:7c:75:65:21:e7:99:da:28:50:d9:7b</b></code>
</li>
</ul>
<p>
Browser companies still have not deployed DoD Certificate Authority (CA) links
(apparently because they want the government to pay them to do so).
Thus end users have to manually confirm each of the above certificates when first accessing these servers.
</p>
<p>
Nevertheless you can
<a href="http://dodpki.c3pki.chamb.disa.mil/rootca.html">install DOD CA certificates</a> locally
(as shown in this
<a href="images/DownloadingDodCertificatePermissionsFirefox.png">Firefox dialog</a>
or, with some difficulty,
<a href="images/DownloadingDodCertificatePermissionsInternetExplorer.png">Internet Explorer dialog</a>).
</p>
<p>
If server keys are changed, you may need to clear previously cached values.
Cached certificate values can be found in directory <code style="color:darkgreen"><b>~/.ssh/known_hosts</b></code>
or else invoke <code style="color:darkgreen"><b>man ssh</b></code> for further details.
</p>
<!-- =========================================================== -->
<h2> <a name="Servers">Servers</a>
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
The NPS MOVES Savage team maintains multiple servers.
Issue tracking is maintained at
<a href="https://www.movesinstitute.org/bugzilla">https://www.movesinstitute.org/bugzilla</a>
</p>
<ul>
<li>
<a href="https://savage.nps.edu/Savage">https://savage.nps.edu/Savage</a>
X3D Archive
(<a href="https://mmog.ern.nps.edu/awstats/awstats.pl?config=savage.nps.edu" target="_blank">usage statistics</a>)
</li>
<li>
<a href="https://SavageDefense.nps.navy.mil/SavageDefense" title="restricted access" alt="restricted access">https://SavageDefense.nps.navy.mil/SavageDefense</a>
X3D Archive
has restricted access,
For Official Use Only (FOUO)
(<a href="https://mmog.ern.nps.edu/awstats/awstats.pl?config=SavageDefense.nps.navy.mil" target="_blank" title="restricted access" alt="restricted access">usage statistics</a>)
</li>
<li>
<a href="https://www.movesinstitute.org">https://www.movesinstitute.org</a>
Modeling, Virtual Environments and Simulation (MOVES) Institute
(<a href="https://mmog.ern.nps.edu/awstats/awstats.pl?config=movesinstitute.org" target="_blank">usage statistics</a>)
</li>
<li>
<a href="http://mmowgli.nps.edu">http://mmowgli.nps.edu</a>
Massive Multiplayer Online Wargame Leveraging the Internet (MMOWGLI)
<!-- Akamai-zed
(<a href="https://mmog.ern.nps.edu/awstats/awstats.pl?config=mmowgli.nps.edu" target="_blank">usage statistics</a>)
-->
</li>
<li>
<a href="http://mmowgli.nps.edu">http://web.mmowgli.nps.edu</a> image server
(<a href="https://mmog.ern.nps.edu/awstats/awstats.pl?config=web.mmowgli.nps.edu" target="_blank">usage statistics</a>)
</li>
<!-- TODO also usage stats for test.mmowgli.nps.edu and portal.mmowgli.nps.edu -->
<li>
<a href="http://oam.nps.edu">http://oam.nps.edu</a>
Open Aerial Map (OAM)
<!--
(<a href="https://mmog.ern.nps.edu/awstats/awstats.pl?config=oam.nps.edu" target="_blank">usage statistics</a>)
-->
</li>
<li>
<a href="https://x3d-earth.nps.edu">https://x3d-earth.nps.edu</a> X3D Earth server
<!--
(<a href="https://mmog.ern.nps.edu/awstats/awstats.pl?config=x3d-earth.nps.edu" target="_blank">usage statistics</a>)
-->
</li>
<li>
<a href="https://savage.nps.edu/manager/html">https://savage.nps.edu/manager/html</a>
Tomcat manager (used by
<a href="https://savage.nps.edu/X3dValidator">X3D Validator</a>
and other tools)
(TODO restrict to NPS intranet access?)
</li>
<li>
<a href="https://mmog.ern.nps.edu">https://mmog.ern.nps.edu</a>
(<a href="https://mmog.ern.nps.edu/awstats/awstats.pl?config=mmog.ern.nps.edu" target="_blank">usage statistics</a>)
(NPS intranet access)
</li>
<!-- TODO
<li>
<a href="https://mmowgli.nps.edu">https://mmowgli.nps.edu</a> CentOS Linux Tomcat cluster for high availability
</li>
-->
</ul>
<!--
(<a href="https://savage.nps.edu/usage" target="_blank">usage statistics</a>)
(<a href="https://SavageDefense.nps.navy.mil/usage" target="_blank" title="restricted access" alt="restricted access">usage statistics</a>)
(<a href="https://www.movesinstitute.org/usage" target="_blank">usage statistics</a>)
(<a href="http://mmowgli.nps.edu/usage" target="_blank">usage statistics</a>)
(<a href="http://oam.nps.edu/usage" target="_blank">usage statistics</a>)
<p>
Usage statistics
are generated using
<a href="http://www.mrunix.net/webalizer">Webalizer</a>
with the
<a href="http://httpd.apache.org">Apache</a>
http server.
</p>
-->
<p>
Mailing lists and hypermail archives:
</p>
<ul>
<li>
<a href="https://www.movesinstitute.org/mailman/listinfo">MOVES Mailing Lists</a>
</li>
<li>
Trouble reports:
please contact <a href="mailto:mailman@www.movesinstitute.org?subject=mailman%20feedback%20">mailman@www.movesinstitute.org</a>
</li>
<li>
<a href="https://www.gnu.org/software/mailman">Mailman</a>
server software
(<a href="https://www.gnu.org/software/mailman/docs.html">documentation</a>,
<a href="https://www.gnu.org/software/mailman/faq.html">FAQ</a>,
<a href="http://wiki.list.org/display/COM/Home">wiki</a>)
</li>
</ul>
<p>
Department of Defense Web Policy:
<a href="https://www.defense.gov/webmasters/policy/dod_web_policy_12071998_with_amendments_and_corrections.html">Web Site Administration Policies & Procedures</a>
</p>
<p>
Additional information:
</p>
<ul>
<li>
<a href="mailto:mcgredo@nps.edu(Don%20McGregor),brutzman@nps.edu(Don%20Brutzman)?subject=Savage%20hserver%20help%20request">Savage server help request</a>
</li>
<li>
<a href="mailto:brutzman@nps.edu(Don%20Brutzman),mcgredo@nps.edu(Don%20McGregor),?subject=Savage.nps.edu%20password%20request">savage.nps.edu password request</a>
</li>
<li>
<a href="https://www.web3d.org/x3d/learn/mimetypes">Configuring a web server for X3D MIME types</a>
</li>
<li>
<a href="http://www.bram.us/2007/05/25/office-2007-mime-types-for-iis/">MIME types for Microsoft Office</a>
(also
<a href="http://technet.microsoft.com/en-us/library/ee309278%28office.12%29.aspx">here</a>)
</li>
</ul>
<!-- =========================================================== -->
<h2> <a name="Subversion">Subversion</a>
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
Subversion is used for version control of Savage projects and files.
Support for subversion is built into NetBeans and X3D-Edit.
</p>
<p>
NPS subversion servers:
</p>
<ul>
<li>
<a href="https://savage.nps.edu/subversion.html">https://savage.nps.edu/subversion.html</a>
(with
<a href="https://savage.nps.edu/svn/repos/list">sventon browsing</a>)
has open access
</li>
<li>
<a href="https://SavageDefense.nps.navy.mil/subversion.html" title="restricted access" alt="restricted access">https://SavageDefense.nps.navy.mil/subversion.html</a>
(with
<a href="https://SavageDefense.nps.navy.mil/svn/repos/list" title="restricted access" alt="restricted access">sventon browsing</a>)
has restricted access,
For Official Use Only (FOUO)
</li>
<li>
The
<a href="#DES">Discrete Event Simulation (DES)</a>
section of this page includes information about subversion checkout for
Simkit, Viskit, Diskit, SavageStudio and the ViskitModels behavior libraries.
</li>
<li>
<a href="mailto:brutzman@nps.edu(Don%20Brutzman),mcgredo@nps.edu(Don%20McGregor),?subject=Savage%20password%20request">Savage password request</a>
</li>
<li>
<a href="https://www.movesinstitute.org/bugzilla">XMSF Issue Tracker</a>
for
<a href="https://www.movesinstitute.org/bugzilla/buglist.cgi?quicksearch=Savage">Savage bug reports</a>
and feature suggestions
</li>
</ul>
<p>
Student subversion for course work (NPS intranet access only):
</p>
<ul>
<li>
<a href="https://mmog.ern.nps.edu/svn/mv3204/Mv3204Mv4205SubversionControl.pdf">MV3204, MV4205 Student Subversion Archive</a> directions
</li>
<li>
<a href="https://mmog.ern.nps.edu/svn/mv3204">https://mmog.ern.nps.edu/svn/mv3204</a>
</li>
<li>
<a href="https://mmog.ern.nps.edu/svn/mv4205">https://mmog.ern.nps.edu/svn/mv4205</a>
</li>
<li>
<a href="https://mmog.ern.nps.edu/svn/x3dPastStudents">https://mmog.ern.nps.edu/svn/x3dPastStudents</a>
</li>
</ul>
<p>
Tutorial and resource information includes:
</p>
<ul>
<li>
<a href="https://www.movesinstitute.org/~mcgredo/primers/svn.ppt">Subversion primer</a>
by Don McGregor
</li>
<li>
<a href="https://subversion.apache.org">Apache Subversion</a>
community home, including
<a href="https://subversion.apache.org/docs">documentation</a>
</li>
<li>
<a href="http://svnbook.red-bean.com/">Version Control With Subversion</a>
is a complete manual for Subversion, in PDF and HTML formats
</li>
<li>
<a href="https://netbeans.org/kb/docs/ide/subversion.html">Guided Tour of Subversion with NetBeans</a>
</li>
<li>
<a href="https://www.tortoisesvn.net/downloads.html">TortoiseSVN client</a>
integrates with the file browsers
for Windows, OS X, and Linux
</li>
<li>
<a href="https://www.open.collab.net/downloads/subversion">Collabnet client</a>
works via command line
(<a href="http://help.collab.net/index.jsp?topic=/faq/editorcommandline.html">setting environment variable for command line</a>)
</li>
<li>
<a href="http://nedbatchelder.com/text/quicksvnbranch.html">Subversion branching quick start</a>
by Ned Batchelder
</li>
<li>
<a href="http://wiki.sventon.org">Sventon</a>
is our interface for Web-based subversion browsing
(<a href="http://wiki.sventon.org/index.php?n=Main.FAQ">FAQ</a>,
<a href="http://wiki.sventon.org">wiki</a>)
</li>
</ul>
<p>
Some advanced subversion questions:
</p>
<ul>
<li>
<i>
I checked in an HTML file, but when I view it in my web browser,
it shows up as source text rather than being rendered as a web page.
</i>
<br />
This is probably the correct behavior for a file being retrieved
as source code from a version-control server. The
purpose of a version-control system is to give you a view of the
source code; it is not to present the visual content. If you want to see
rendered HTML, you should go to the regular website address for that page.
Developers often manage all this by keeping website content under subversion control,
then using sftp to place the source code into a directory on the Apache server
which serves the actual content.
<br />
</li>
<li>
<i>
How can I make a copy of the
source code without all of the internal ".svn" subdirectories that are used by
subversion for housekeeping?
</i>
<br />
Use the subversion <b>export</b> command:
<code style="color:darkgreen"><b>svn export [RepositoryURL]</b></code>
<br />
</li>
<li>
<i>
I have checked out a project from subversion but cannot check changes back in. Why not?
</i>
<ul>
<li>
Ensure that you checked out the project with an authorized username.
If necessary, convince the project administrator that you deserve to get permissions as a project committer
(which is a serious responsibility).
</li>
<li>
If you checked out a project using http: protocol, you may need to <code>relocate</code> it using the https: protocol in order to meet security requirements for writing changes.
Use the subversion <b>relocate</b> command:
<code style="color:darkgreen"><b>svn help relocate</b></code>
</li>
</ul>
</li>
<li>
<i>
How do I set up a new subversion server with Apache?
</i>
<br></br>
If you want to set up your own Subversion server, a how-to for doing
this with apache on Linux is on the
<a href="https://www.howtoforge.com/apache_subversion_repository">HowtoForge tutorial site</a>.
<br></br>
Most developers don't need to do this and simply use an already-existing version-control server.
</li>
</ul>
<!-- =========================================================== -->
<h2> <a name="telnet">telnet</a> Network Protocol
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
The
<a href="https://en.wikipedia.org/wiki/Telnet"></a><code>telnet</code>
protocol is widely used and provides a standard way of interfacing terminal-oriented devices and processes.
Given that security vulnerabilities may exist if used surreptitiously,
modern operating systems typically require specific configuration action to enable it.
</p>
<ul>
<li>
Authoritative reference:
<a href="https://tools.ietf.org/html/rfc854">RFC 854, TELNET PROTOCOL SPECIFICATION</a>,
default port 23.
</li>
<li>
System configuration changes typically require administrator permissions.
</li>
<li>
<em>Windows 7:</em>
<i>Control Panel > Turn Windows features on or off >
<a href="images/Windows7ControlPanelTelnetClientEnabled.png">Windows features</a></i>
<!-- https://kb.ctera.com/article/how-to-open-a-telnet-session-on-windows-7-or-windows-8-os-16.html -->
</li>
<li>
<em>Windows 10:</em>
<i>Settings > Turn Windows features on or off >
<a href="images/Windows10SettingsTelnetClientEnabled.png">Windows features</a></i>
</li>
<li>
<em>Cygwin:</em>
install the <a href="#inetutils">inetutils</a> package for
<code>ssh</code> and <code>telnet</code>.
(Of note is that <code>netcat</code> is also included in Cygwin, but is quickly scrubbed by NPS antivirus routines for Windows.)
</li>
<li>
<em>macOS:</em>
preferred tool is
<code>nc (netcat)</code> which is functionally equivalent to <code>ssh</code>
and can be invoked from inside a terminal process.
Many ad hoc tools also exist (with lesser security) such as
<a href="https://brew.sh" target="_blank">brew</a>.
</li>
</ul>
<!-- =========================================================== -->
<h2> <a name="Time">Time</a>
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
Numerous simulations and network protocols depend on accurate time adjustment.
</p>
<ul>
<li>
NPS time servers for NTP are time.nps.edu matrix.nps.edu and matrix.nps.edu and stargate.nps.edu.
NPS generally disallows access to NTP servers off campus.
n.b. Subverting NTP servers is a popular element of attacks, because it affects the timestamp on logs.
</li>
<li>
NPS wiki:
<a href="https://wiki.nps.edu/display/TAC/Time+server">Time server</a>
guidance (for Mac at least).
</li>
<li>
<a href="https://www.usno.navy.mil/USNO/time">U.S. Naval Observatory (USNO) Precise Time</a>
and
<a href="https://www.usno.navy.mil/USNO/time/ntp">Network Time Protocol (NTP)</a>.
</li>
<li>
<a href="https://www.ntp.org">Network Time Foundation (ntp.org)</a>
includes information about a variety of time-related protocols and also software downloads.
</li>
</ul>
<!-- =========================================================== -->
<h2> <a name="Tools">Tools</a>
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
<a name="Altova">The</a>
<a href="https://www.altova.com">Altova XML tools</a>
(XMLSpy, Diffdog, etc.)
provide outstanding support for XML development.
</p>
<ul>
<li>
MOVES has a
<a href="mailto:brutzman%20at%20nps.edu%20(Don%20Brutzman)?subject=feedback:%20Altova%20developers%20license%20request">full developers license</a>
for academic use by students and staff.
</li>
<li>
XML Spy project files help organize large sets of XML documents
<ul>
<li>
<a href="https://www.web3d.org/specifications/X3dSchemaDtd-XmlSpyProject.spp">X3D schemas and DTDs</a>
</li>
<li>
Project catalogs for X3D example archives
are autogenerated as part of ContentCatalogCreation:
<br />
<a href="https://www.web3d.org/x3d/content/examples/Basic/ContentCatalogBasic.spp" target="_blank">Basic</a>,
<a href="https://www.web3d.org/x3d/content/examples/ConformanceNist/ContentCatalogConformanceNist.spp" target="_blank">ConformanceNist</a>,
<a href="https://www.web3d.org/x3d/content/examples/Vrml2.0Sourcebook/ContentCatalogVrml2.0Sourcebook.spp" target="_blank">Vrml 2.0 Sourcebook</a>,
<a href="https://savage.nps.edu/Savage/ContentCatalogSavage.spp" target="_blank">Savage</a>,
<a href="https://SavageDefense.nps.navy.mil/SavageDefense/ContentCatalogSavageDefense.spp" target="_blank" title="restricted access" alt="restricted access">SavageDefense</a> (FOUO access) and
<a href="https://x3dgraphics.com/examples/X3dForWebAuthors/ContentCatalogX3dForWebAuthors.spp" target="_blank">X3dForWebAuthors</a>
</li>
</ul>
</li>
</ul>
<p>
<a href="https://www.nps.edu/Technology/SoftwareLib/index.htm">NPS Downloadable Software</a>
and
<!-- TODO check and test iago url -->
<a href="\\iago\c$">NPS MOVES IAGO software archive</a>
(NPS access only, password protected)
provide a variety of locally licensed resources.
</p>
<p>
The following additional tools are also useful.
</p>
<ul>
<li>
<a href="#Cygwin">Cygwin</a> Unix for Windows provides command-line Unix commands on Windows systems
</li>
<li>
<a href="chat.html#Elluminate">Elluminate</a>
is a desktop-sharing system for meetings with remote participation
</li>
<li>
<a href="https://www.mozilla.com">Firefox</a>
Web browser and
<a href="https://www.mozillamessaging.com/en-US/thunderbird">Thunderbird</a>
email client
by Mozilla
</li>
<li>
<a href="https://www.gimp.org">GNU Image Manipulation Program (GIMP)</a> for image editing
</li>
<li>
<a href="https://www.htmlkit.com">HTML-Kit</a> advanced HTML editor by Chami
</li>
<li>
<a href="https://protege.stanford.edu">Protege</a>
ontology editor and knowledge-base framework for Semantic Web
</li>
<li>
<a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">Putty</a>
ssh and sftp
</li>
<li>
<a href="https://www.apple.com/quicktime/pro">Quicktime Pro</a> by Apple ($$) for simple movie editing
</li>
<li>
<a href="https://www.ultraedit.com">UltraEdit text editor</a>
and
<a href="https://www.ultracompare.com">UltraCompare file comparison</a>
</li>
<li>
<a href="http://windirstat.info">WinDirStat</a> is an open-source disk-usage statistics viewer and cleanup tool for Microsoft Windows.
</li>
<li>
<a href="http://winscp.net">WinSCP</a> is an open-source free SFTP, SCP and FTP client for Windows.
</li>
</ul>
<!-- =========================================================== -->
<h2> <a name="Wikis">Wiki sites</a>
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
Wikis are an excellent way to collaboratively build websites online using a simple syntax.
We typically use the same
<a href="https://www.wikimedia.org">Wikimedia</a>
server software used by
<a href="https://www.wikimedia.org">Wikipedia</a>.
</p>
<ul>
<li>
<a href="https://wiki.nps.edu">NPS wiki</a>
</li>
<li>
<a href="https://www.movesinstitute.org/wiki">https://www.movesinstitute.org/wiki</a>
<ul>
<li>
<a href="https://www.movesinstitute.org/wiki/index.php/Sweet_Spot_Project_ADL_SCORM_S1000D_X3D">Sweet Spot Project ADL SCORM S1000D X3D</a>
</li>
</ul>
</li>
<li>
<a href="https://savagedefense.nps.navy.mil/developers.html#Wikis" title="restricted access" alt="restricted access">SavageDefense wiki</a> (restricted FOUO access)
</li>
<li>
<a href="http://simkit.movesinstitute.org">Simkit Liferay Server</a>
</li>
</ul>
<!-- =========================================================== -->
<h2> <a name="Writing">Writing</a>
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
Writing up our accomplishments, in theses and reports, is crucially important.
</p>
<ul>
<li>
<a href="https://my.nps.edu/web/gwc">NPS Graduate Writing Center</a>
</li>
<li>
<a href="http://www.dtic.mil/whs/directives/plainlanguage.html">Official DoD Plain Language Website</a>
</li>
<li>
<a href="http://www.bloomberg.com/graphics/2015-paul-ford-what-is-code">What is Code?</a>
by Paul Ford, Business Week, 11 June 2015
(also
<a href="http://www.bloomberg.com/news/videos/2015-06-12/-what-is-code-charlie-rose-06-12-">interview video</a>)
</li>
</ul>
<!-- =========================================================== -->
<h2> <a name="Xj3D">Xj3D viewer</a>: NPS source
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
Xj3D is an open-source Java viewer and application codebase for X3D graphics scenes.
</p>
<ul>
<li>
NPS maintains and uses a public version of the Xj3D source, periodically synchronized with the original Xj3D.org project, to test new developments and bug fixes.
</li>
<li>
We are happy to work together with anyone who wants to help provide full support for the X3D Graphics standard in Xj3D.
</li>
<li>
The
<a href="https://web3d.org/wiki/index.php/Xj3D_Evolution">Xj3D Evolution</a>
strategy describes how
Web3D working-group stakeholders are considering and implementing further improvements to Xj3D.
</li>
<li>
Available:
<a href="https://sourceforge.net/projects/xj3d">Xj3D Sourceforge</a>
project is now established with a full history of changes included.
We are refactoring past and future branches through
formal renumbering and release.
<ul>
<li>
<b>Xj3D version 2.1</b> is the most up-to-date build, maintained by NPS as the
<a href="https://sourceforge.net/p/xj3d/code/HEAD/tree/trunk/">Xj3D trunk</a>.
</li>
<li>
<b>Xj3D version 2.0</b> is a snapshot of Yumetech-produced version at time of migration, August 2014,
available at
<a href="https://sourceforge.net/p/xj3d/code/HEAD/tree/branches/yumetechTrunk">branch/yumetechTrunk</a>.
</li>
<li>
Future version releases will integrate other
<a href="https://www.web3d.org/wiki/index.php/Xj3D_Evolution#Merge_orphaned_Xj3D_codebases">previously orphaned Xj3D builds</a>.
</li>
</ul>
</li>
<li>
We use the long-running
<a href="https://web3d.org/mailman/listinfo/source_web3d.org">source @ web3d.org</a> mailing list for Xj3D source code discussions
</li>
<li>
Xj3D source code version-control notifications:
<ul>
<li>
Mailed automatically to SourceForge Xj3D developers.
Also publicly visible at
<a href="https://sourceforge.net/p/xj3d/code/commit_browser">Browse Commits</a>
</li>
<li>
(Through October 2014)
<a href="https://web3d.org/mailman/listinfo/source_x3d_cvs_web3d.org">source-x3d-cvs AT web3d.org</a>
</li>
</ul>
</li>
<li>
Current releases use the open-source
<a href="https://jogamp.org">Jogamp</a> high performance Java libraries for 3D Graphics, Multimedia and Processing.
These include Java OpenGL (JOGL) rendering
and JOAL spatialized audio.
Xj3D can run on multiple operating systems
(Windows MacOSX Linux Solaris).
</li>
<li>
<a href="https://www.web3d.org/specifications/X3dNodeInventoryComparison.xlsx">X3D Node Inventory Comparison</a>
(<a href="https://www.web3d.org/specifications/X3dNodeInventoryComparison.pdf">.pdf</a>)
shows implementation coverage of the X3D Abstract Specification.
</li>
</ul>
<p>
Applications using Xj3D include:
<ul>
<li>
<a href="https://savage.nps.edu/X3D-Edit">X3D-Edit</a>,
an open-source Extensible 3D (X3D) Graphics authoring tool for simple error-free editing, authoring and validation of X3D scenes.
</li>
<li>
Build processes for compressing and taking offline screen snapshots
(<a href="https://www.web3d.org/x3d-resources/content/examples/Vrml2.0Sourcebook/Siggraph98Course/viewpointSlideshow.html">example</a>)
for the thousands of scenes in the
<a href="https://www.web3d.org/x3d/content/examples/X3dResources.html#Examples">X3D Example Archives</a>
</li>
<li>
<a href="https://www.web3d.org/case-studies/structure-and-form-analysis-system-safas/e-learning-and-e-design">Structure and Form Analysis System (SAFAS)</a>
by Virginia Tech (VT),
a curriculum-support application for Architecture students learning Structural Engineering.
</li>
<li>
<a href="https://savage.nps.edu/AuvWorkbench">NPS AUV Workbench</a>,
experimental open-source software that supports physics-based mission rehearsal,
real-time task-level control of robot missions, and replay of recorded results
in support of autonomous unmanned underwater, surface and air vehicles.
</li>
<li>
<a href="#DES">Viskit</a>
and
<a href="#DES">SavageStudio</a>,
a drag+drop scenario-authoring tool that uses the Savage model archives to generate Viskit discrete-event simulation (DES) scenarios that are visualized using Xj3D.
</li>
</ul>
</p>
<!-- ============================== -->
<p>
<i>Recommended for developers.</i>
The most up-to-date Xj3D code repository is now available at:
</p>
<ul>
<li>
Subversion root directory
<code style="color:darkgreen"><b><a href="https://svn.code.sf.net/p/xj3d/code/trunk">https://svn.code.sf.net/p/xj3d/code/trunk</a></b></code>
</li>
<li>
Documentation is found in the
<a href="https://sourceforge.net/p/xj3d/code/HEAD/tree/trunk/docs">docs</a> directory<!--,
<a href="https://sourceforge.net/p/xj3d/code/HEAD/tree/trunk/docs/HowToInstall.html">NPS build instructions: How To Install</a>
-->
and
<a href="https://sourceforge.net/p/xj3d/code/HEAD/tree/trunk/docs/Xj3D-Codebase-ChangeLog-NPS.txt">Change Log of modifications in NPS build</a>
by Terry Norbraten
(<a href="mailto:tdnorbra%20at%20nps.edu%20(Terry%20Norbraten)?subject=feedback:%20Xj3D"><i>tdnorbra at nps.edu</i></a>)
</li>
<li>
<!-- These installers and jars are updated nightly by Jenkins build tasks -->
Additional resources include
nightly build
<a href="https://savage.nps.edu/Xj3D.nps/izpackInstallers">installers</a>,
<a href="https://savage.nps.edu/Xj3D.nps/jars">jar files</a>,
<a href="https://savage.nps.edu/Xj3D.nps/docs/arch/overview.html">documentation</a>
and
<a href="https://savage.nps.edu/Xj3D.nps/docs/javadoc">javadoc</a>
are produced by the
<a href="https://savage.nps.edu/jenkins/job/Xj3dSourceNpsBranch">Xj3dSourceNpsBranch</a>
project on the
<a href="https://savage.nps.edu/jenkins/">Savage jenkins server</a>.
</li>
</ul>
<!-- ============================== -->
<p>
Prior links for the Xj3D code repository supporting the long-running NPS branch:
</p>
<ul>
<li>
Subversion root directory
<a href="https://svn.xj3d.org/xj3d_code/branches/NPS">https://svn.xj3d.org/xj3d_code/branches/NPS</a>
</li>
<li>
NPS build instructions
<a href="https://svn.xj3d.org/xj3d_code/branches/NPS/README">README</a>
and
<a href="https://svn.xj3d.org/xj3d_code/branches/NPS/docs/Xj3D-Codebase-ChangeLog-NPS.txt">Change Log of modifications in NPS build</a>
by Terry Norbraten
(<a href="mailto:tdnorbra%20at%20nps.edu%20(Terry%20Norbraten)?subject=feedback:%20NPS%20Xj3D.nps%20change%20log%20"><i>tdnorbra at nps.edu</i></a>)
</li>
<li>
The NPS source branch provides Netbeans project support and strives to meet best practices for Ant.
If you are developing new code, be sure to use the proper
<a href="https://svn.xj3d.org/xj3d_code/branches/NPS/build.xml">build.xml</a>
from the NPS branch.
This is probably the only file in the NPS source branch that remains quite different than
the corresponding file in the trunk.
</li>
</ul>
<!-- ============================== -->
<p>
Historic links for the original Xj3D trunk supports version 1.0 (released 15 April 2006).
</p>
<ul>
<li>
<a href="http://www.Xj3D.org">Xj3D home page</a>
by individuals from
<a href="http://www.yumetech.com">Yumetech</a>
is the primary site for the trunk.
</li>
<li>
Latest Xj3D downloads are found on the
<a href="http://www.xj3d.org/snapshots.html">Development Snapshots</a> page.
</li>
<li>
<a href="http://www.xj3d.org/svn.html">Xj3D subversion description</a>
and
subversion root directory
<code style="color:darkgreen"><b><a href="http://svn.xj3d.org/xj3d_code">http://svn.xj3d.org/xj3d_code</a></b></code>
</li>
<li>
A huge number of improvements have been made over the years, but
original development of version 2.0 has not yet resulted in a formal release.
</li>
</ul>
<!-- ============================== -->
<p>
Also available:
</p>
<ul>
<li>
<a href="http://bugzilla.xj3d.org/">Xj3D bug list</a> by Yumetech
</li>
<li>
<a href="https://www.movesinstitute.org/bugzilla/buglist.cgi?quicksearch=xj3d">XMSF Issue Tracker for Xj3D</a>
by NPS
</li>
<li>
Aniviza
<a href="http://www.aniviza.com/svn/listing.php">attempted extensions to Xj3D</a>
for NASA WorldWind
</li>
</ul>
<!-- =========================================================== -->
<h2> <a name="XML">XML</a>
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
The Extensible Markup Language (XML) is a simple text-based format for representing structured information:
documents, data, configuration, books, transactions, invoices, and much more.
It was derived from an older standard format called SGML (ISO 8879), in order to be more suitable for Web use.
</p>
<ul>
<li>
<a href="https://www.w3.org">World Wide Web Consortium (W3C)</a>
is the open standards development organization whose Recommendations govern XML.
<ul>
<li>
<a href="https://www.w3.org/XML/1999/XML-in-10-points">XML in 10 points</a>
provides a concise summary of the many capabilities possible with XML.
<ul>
<li>
Proposed addition to point 4:
<br/><i>
Efficient XML Interchange (EXI) further improves these capabilities.
Smaller compression enables bigger data on the Web, while
faster decompression saves both memory and power consumption
which can lead to the Internet of Things becoming the Web of Things. </i>
</li>
</ul>
</li>
<li>
<a href="https://www.w3.org/XML">Extensible Markup Language (XML)</a>
</li>
<li>
<a href="https://www.w3.org/XML/EXI">Efficient XML Interchange (EXI) working group</a>,
related
and NPS work on
<a href="https://wiki.nps.edu/display/NOW/Efficient+Messaging">Efficient Messaging</a>
</li>
<li>
<a href="https://www.w3.org/standards/xml/core">XML Essentials</a>
</li>
<li>
<a href="https://www.w3.org/standards/xml">XML Technology</a>
</li>
</ul>
</li>
<li>
<a href="https://google.github.io/styleguide/xmlstyle.html">Google XML Document Format Style Guide</a>
</li>
</ul>
<!-- =========================================================== -->
<h2> <a name="XmlCatalog">XML Catalog</a>
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<p>
An XML Catalog provides mappings from online URL or generic URI addresses
to specific files on the local machine. This allows tools to refer to
XML DTDs, schemas etc. to accomplish XML validation without being connected online.
</p>
<ul>
<li>
<a href="https://www.oasis-open.org/committees/download.php/14810/xml-catalogs.pdf">XML Catalogs v1.1</a>
by the
<a href="https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=entity">OASIS Entity Resolution Technical Committee (TC)</a>
</li>
<li>
<a href="http://www.sagehill.net/docbookxsl/UseCatalog.html">How to use a catalog file</a>
in
<a href="http://www.sagehill.net/docbookxsl/Catalogs.html">Chapter 5. XML catalogs</a>
from
<a href="http://www.sagehill.net/docbookxsl">DocBook XSL: The Complete Guide</a>
(Fourth Edition) by Bob Stayton
</li>
</ul>
<p>
<a href="https://www.web3d.org/specifications/OasisXmlCatalogX3D.xml">OasisXmlCatalogX3D.xml</a>
provides schema and doctype address resolution for typical offline validation of X3D scenes.
</p>
<ul>
<li>
<a href="https://x3d.svn.sourceforge.net/viewvc/x3d/www.web3d.org/x3d/tools/CreateContentCatalog/CatalogManager.properties">CatalogManager.properties</a>
</li>
<li>
The Apache resolver is available at
<a href="https://www.apache.org/dist/xerces/xml-commons/">xml-commons-resolver-latest.zip</a>
</li>
</ul>
<!-- =========================================================== -->
<hr />
<h2><a name="Contact">Contact</a>
<a href="#">
<!-- width="83" height="100" -->
<img src="images/SavageLogo.png" width="42" height="50" border="0" title="to top" alt="to top" align="right"/>
</a>
</h2>
<blockquote>
Questions, suggestions and comments about these resources are welcome.
Please send them to
<a href="https://faculty.nps.edu/brutzman" target="_blank">Don Brutzman</a>
(<a href="mailto:brutzman%20at%20nps.edu%20(Don%20Brutzman)?subject=feedback:%20Savage%20Developers%20"><i>brutzman at nps.edu</i></a>)
</blockquote>
<blockquote>
Available online at
<a href="https://savage.nps.edu/developers.html">https://savage.nps.edu/developers.html</a>
</blockquote>
<blockquote>
Revised 15 December 2019.
</blockquote>
<p>
<a href="https://www.nps.navy.mil/disclaimer" target="disclaimer">Official disclaimer</a>:
<br />
<q>
Material contained herein is made available for the purpose of
peer review and discussion and does not necessarily reflect the
views of the Department of the Navy or the Department of Defense.
</q>
</p>
</body>
</html>