Differences between revisions 1 and 2
Revision 1 as of 2009-06-17 08:52:21
Size: 55
Editor: 77-56-110-124
Comment:
Revision 2 as of 2009-06-30 16:02:12
Size: 6652
Editor: 84-75-191-209
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
#redirect Workstations/Linux/Applications/Programming ## page was renamed from Programming
= Programming =
<<TableOfContents(2)>>

== ANSI C ==
 * [[http://www.cs.cf.ac.uk/Dave/C/|Programming in C]]
 * [[http://www.lysator.liu.se/c/|C Programming Resources]] at Lysator University, Sweden
 * [[http://www.snippets.org/|Snippets of C Code]] Just the bits you have been looking for.
== C++ ==
 * [[http://en.wikibooks.org/wiki/C++_Programming|C++ programming introduction]]
 * [[http://www.parashift.com/c++-faq-lite/|C++ FAQ Lite]] C++ introduction by [[http://www.cerfnet.com/~mpcline/|Marshall Cline]], cline@parashift.com .
 * [[http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html|Thinking in C++]] This book is also available online: [[http://www.planetpdf.com/mainpage.asp?WebPageID=315|Download]]. Recommended by [[mailto:workingbalz@gmx.ch|Balz Schreier]].
== Java ==
 * [[http://java.sun.com/docs/books/tutorial/|Sun Java (tm) tutorial]] Java programming samples.
 * [[http://java.sun.com/reference/api/|Sun Java (tm) API reference]] Full documentation of Java classes.
== OpenGL ==
=== Compiling OpenGL applications on Debian Linux ===
The Debian platform managed by the ISG.EE has a new directory layout for the OpenGL libraries and headers:

Libraries:

{{{
The /usr/!X11R6/lib/libGL* libraries are symbolic links to the hardware-specific libraries. There is a mechanism in the starup process of each client workstation which detects the accurate OpenGL library based on the information about the graphics card and the kernel driver.
}}}
Header Files:

{{{
1. For compatibility reasons, the default OpenGL headers (from the MESA package) are saved in their default location, i.e. /usr/X11R6/include/GL which points to the same directory as /usr/include/GL.
2. The extended OpenGL header files from Nvidia are stored in /usr/lib/nvidia/include/GL which have to be included in the compile path in order to use the extended Nvidia functions.
}}}
Compiling sources and linking against the NVidia libraries:

{{{
add to CFLAGS / CPPFLAGS / CXXFLAGS
`-I/usr/lib/nvidia/include/GL`
add to LDFLAGS ``
`-L/usr/lib/nvidia/lib` ` -Wl,-rpath -Wl,/usr/lib/nvidia/lib`
}}}
Remarks:

{{{
If you are using the libGLU you will get the following linker warning: `/usr/bin/ld: warning: libstdc++.so.5, needed by /usr/bin/../lib/libGLU.so, may conflict with libstdc++.so.6`
This shouldn't affect your programs (the libGLU was linked against the old C++ standard library and most of the installed gnu compilers will link against the newer library).
If you have problems linking against `libGL.so` from `/usr/lib` it is possible to access symbols directly from the NVidia opengl library in `/usr/lib/nvidia/lib`:
remove `-L/usr/lib` and add instead `-L/usr/lib/nvidia/lib -lGL` to your `LDFLAGS` environment/ make variable.
}}}
== Perl ==
 * [[http://www.unix.org.ua/orelly/perl/learn/index.htm|Learning Perl]] A free O'Reilly book!
 * [[http://perl-seiten.homepage.t-online.de/|Perlkurs auf Deutsch]] A great introduction into the Perl programming language in German.
{{{
Note that our Perl interpreter is located in /usr/sepp/bin/perl. You might run into problems if you use the system's own perl interpreter (/usr/bin/perl). This is most often the reason for people complaining that they cannot find our perl modules.
}}}
== Network Programming ==
 * [[http://www.hu.freebsd.org/hu/doc/psd/20.ipctut/paper.html|An introductory 4.4BSD interprocess communication tutorial]] To aid the programmer in developing programs which are comprised of cooperating processes, the different choices are discussed and a series of example programs are presented. by Stuart Sechrest [[http://www.ecst.csuchico.edu/~beej/guide/net/|Beej's Guide to network programming]] This document should give the average competent C programmer the edge s/he needs to get a grip on this networking noise.
 * [[http://www.uwo.ca/its/doc/courses/notes/socket/index.html|An Introduction to socket programming]] These course notes are directed at Unix application programmers who want to develop client/server applications in the TCP/IP domain. [[http://www.ecst.csuchico.edu/~beej/guide/net/|Unix socket programming]] Amongst other things, this is the home of the unix-socket-faq.
== X11 ==
 * [[http://www.rahul.net/kenton/xsites.framed.html|X11 Programming]] X is a graphical network based windows systems, it was developed from MIT in 1984. This system gives the basis for many Unix windows systems. [[http://www.trolltech.com/|Qt GUI Toolkit]] Qt is the C++ library which builds the base of KDE. Qt is the ideal starting point for your graphical unix applications. Qt is installed on Tardis. Check out its entry in the [[http://computing.ee.ethz.ch/sepp/|SEPP Application Catalog]] to learn how to use Qt in your own software. [[http://www.gtk.org/|GTK+ GUI Toolkit]] GTK+ was initially developed for and used by the [[http://www.gimp.org/|GIMP]], the GNU Image Manipulation Program. Therefore, it is named "The GIMP Toolkit", so that the origins of the project are remembered. Today GTK+ is used by a large number of applications, and is the toolkit used by the GNU project's [[http://www.gnome.org/|GNOME]] desktop. Check out its entry in the [[http://www.sepp.ee.ethz.ch/|SEPP Application Catalog]] to learn how to use Qt in your own software.
== Debugger ==
Unfortunately, it is difficult to write bug-free programs. A good debugger is very helpful tracking down errors. On the Tardis cluster we recommend to use the Data Display Debugger (DDD). DDD supports a variety of programming languages: Ada, C, C++, Chill, Fortran, Java, Modula, Pascal, Perl, Python.

For a current list go to the DDD manual, local comments on the SEPP documentation.

== Database programming ==
If you want to learn about database design and programming you can get an account on our MySQL database server. Get in touch with us and let us know what your plans are. The Address of our database server is {{{mysql.ee.ethz.ch}}} where mysql runs on the default port (3306). For database configuration and setup tasks you can also make use of our [[http://mysql.ee.ethz.ch|phpMyAdmin]] setup.

 * [[http://sunsite.cnlab-switch.ch/ftp/mirror/mysql|Swiss MySQL mirror site]] MySQL is a true multi-user, multi-threaded SQL database server. SQL is the most popular database language in the world. MySQL is a client/server implementation that consists of a server daemon mysqld and many different client programs and libraries.
== Miscellaneous ==
 * [[http://dns.easysw.com/~mike/serial/|Serial programming guide for POSIX]] by Michael Sweet is a great online book on programming Unix serial ports.

Programming

ANSI C

C++

Java

OpenGL

Compiling OpenGL applications on Debian Linux

The Debian platform managed by the ISG.EE has a new directory layout for the OpenGL libraries and headers:

Libraries:

The /usr/!X11R6/lib/libGL* libraries are symbolic links to the hardware-specific libraries. There is a mechanism in the starup process of each client workstation which detects the accurate OpenGL library based on the information about the graphics card and the kernel driver.

Header Files:

1. For compatibility reasons, the default OpenGL headers (from the MESA package) are saved in their default location, i.e. /usr/X11R6/include/GL which points to the same directory as /usr/include/GL.
2. The extended OpenGL header files from Nvidia are stored in /usr/lib/nvidia/include/GL which have to be included in the compile path in order to use the extended Nvidia functions.

Compiling sources and linking against the NVidia libraries:

add to CFLAGS / CPPFLAGS / CXXFLAGS
`-I/usr/lib/nvidia/include/GL`
add to LDFLAGS ``
`-L/usr/lib/nvidia/lib` ` -Wl,-rpath -Wl,/usr/lib/nvidia/lib`

Remarks:

If you are using the libGLU you will get the following linker warning: `/usr/bin/ld: warning: libstdc++.so.5, needed by /usr/bin/../lib/libGLU.so, may conflict with libstdc++.so.6`
This shouldn't affect your programs (the libGLU was linked against the old C++ standard library and most of the installed gnu compilers will link against the newer library).
If you have problems linking against `libGL.so` from `/usr/lib` it is possible to access symbols directly from the NVidia opengl library in `/usr/lib/nvidia/lib`:
remove `-L/usr/lib` and add instead `-L/usr/lib/nvidia/lib -lGL` to your `LDFLAGS` environment/ make variable.

Perl

Note that our Perl interpreter is located in /usr/sepp/bin/perl. You might run into problems if you use the system's own perl interpreter (/usr/bin/perl). This is most often the reason for people complaining that they cannot find our perl modules.

Network Programming

X11

  • X11 Programming X is a graphical network based windows systems, it was developed from MIT in 1984. This system gives the basis for many Unix windows systems. Qt GUI Toolkit Qt is the C++ library which builds the base of KDE. Qt is the ideal starting point for your graphical unix applications. Qt is installed on Tardis. Check out its entry in the SEPP Application Catalog to learn how to use Qt in your own software. GTK+ GUI Toolkit GTK+ was initially developed for and used by the GIMP, the GNU Image Manipulation Program. Therefore, it is named "The GIMP Toolkit", so that the origins of the project are remembered. Today GTK+ is used by a large number of applications, and is the toolkit used by the GNU project's GNOME desktop. Check out its entry in the SEPP Application Catalog to learn how to use Qt in your own software.

Debugger

Unfortunately, it is difficult to write bug-free programs. A good debugger is very helpful tracking down errors. On the Tardis cluster we recommend to use the Data Display Debugger (DDD). DDD supports a variety of programming languages: Ada, C, C++, Chill, Fortran, Java, Modula, Pascal, Perl, Python.

For a current list go to the DDD manual, local comments on the SEPP documentation.

Database programming

If you want to learn about database design and programming you can get an account on our MySQL database server. Get in touch with us and let us know what your plans are. The Address of our database server is mysql.ee.ethz.ch where mysql runs on the default port (3306). For database configuration and setup tasks you can also make use of our phpMyAdmin setup.

  • Swiss MySQL mirror site MySQL is a true multi-user, multi-threaded SQL database server. SQL is the most popular database language in the world. MySQL is a client/server implementation that consists of a server daemon mysqld and many different client programs and libraries.

Miscellaneous

Programming (last edited 2020-09-02 14:17:57 by davidsch)