Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • osian/sucs-site
  • kais58/sucs-site
  • imranh/sucs-site
  • foshjedi2004/sucs-site
  • gigosaurus/sucs-site
  • matstn/sucs-site
  • ripp_/sucs-site
  • eggnog/sucs-site
  • sucssite/sucs-site
  • elbows/sucs-site
  • realitykiller/sucs-site
  • crox/sucs-site
  • vectre/sucs-site
  • welshbyte/sucs-site
  • paperclipman/sucs-site
15 results
Show changes
Showing
with 429 additions and 0 deletions
Just for the record: <span style="font-weight: bold;">this is <span style="font-style: italic;">not</span> scary!<br /><br /></span>Delphi is nice and simple to use, and although regarded as a cop-out by some elite-ists, is an incredibly powerful tool for creating nice pretty Win32 applications (And also some Linux ones too now, see <a href="http://www.borland.com/kylix/" title="kylix home">kylix</a>).<br />Even if your final program is not going to be written in Delphi (or rather, Object Orientated Pascal), then you can create working mock-ups in a very short amount of time using Delphi.<br /><br />But more to the point, its what some coursework is done in :-P<br /><br />So; some links to get started:<br /><br /><ul><li><a href="http://www.borland.com/delphi/" title="Delphi Home">Borland Delphi Home</a></li><li><a href="http://www.borland.com/products/downloads/download_delphi.html" title="Download it! Get going!">Download Free edition</a></li><li><a href="http://www.swissdelphicenter.ch/en/" title="Swiss Delphi Center/re (English)">Tips and Forums</a> site (Very Useful)</li></ul><h1>What is going on?</h1>OK, so you have been to the download link, got your registration key and installed it. But WTF is it?<br />Well, its an IDE (Integrated Developer Environment) which basically means its got all the tools you need to go forth and write some amazing programs :-D<br /><br /><span style="font-weight: bold;">So what </span><span style="font-style: italic; font-weight: bold;">has</span><span style="font-weight: bold;"> it got?</span><br /><ul><li>An Editor, with text highlighting (so you aren't staring at what may as well be notepad)</li><li>A Compiler (so that your code will be turned into something which is executable)</li><li>A Debugger (to find the errors, help you trace variables [we'll get to this later] etc...)</li><li>Code Insight! (This is amazing, more on this later but basically its for lazy bums like me who cant be bothered to type more than 3 characters at a time!)</li><li>GUI interface (Always useful on the eyes after 5 hours solid on intravenous caffeine)</li><li>GUI Previews/WYSIWYG (So you can see what your program will look like before you compile it)</li><li>A todo list for forgetful.. uh.. (Ho ho ho.)</li><li>Objects Panel (To quickly select and add Components [more on which later])<br /></li><li>Object Inspector (To edit the properties of said components and implement their methods)<br /></li></ul>And much more funky little bits that I've probably forgotten about, but thats the main stuff.<br /><br /><span style="font-weight: bold;">Well? What the hell </span><span style="font-style: italic; font-weight: bold;">are</span><span style="font-weight: bold;"> all these bits?</span><br style="font-weight: bold;" /><br style="font-weight: bold;" />A nice little graphical walkthrough...<br /><br /><span style="text-decoration: underline;">The Editor</span>:<br /><img width="696" vspace="0" hspace="0" height="482" border="0" alt="The Delphi Editor" src="/pictures/delphEd.jpg" /><br /><br /><span style="text-decoration: underline;">The Compiler</span>:<br />You dont really see this.. it just exists, trust me ;)<br /><br /><span style="text-decoration: underline;">The Debugger</span>:<br /><img src="/pictures/delphBugger.JPG" /><br /><br /><span style="text-decoration: underline;">Code Insight</span> (yay!):<br /><img src="/pictures/delphCodeIns.JPG" /><br /><br /><span style="text-decoration: underline;">GUI Interface</span>:<br />This really is self-explainatory. You can see from the images that its not text based... but below is a nice WYSIWYG form for you to look at too...<br /><br /><span style="text-decoration: underline;">WYSIWYG</span> (What You See Is What You Get):<br />An example from my Graphics coursework :P<br /><img src="/pictures/delphWYSIWYG.JPG" /><br /><br /><span style="text-decoration: underline;">Objects Panel</span>:<br /><img src="/pictures/delphObjectP.JPG" /><br /><br /><span style="text-decoration: underline;">Object Inspector</span>:<br /><img src="/pictures/delphObjectI.JPG" /><br /><br />And thats an overview of the main parts of Delphi. Just to get you into the terminology and such. More on what they do etc shortly...<br /><br /><h6><a href="mailto:stringfellow@sucs.org" title="email Steve P">stringfellow</a> made this page.</h6><br />
Firstly some Keyboard Shortcuts:<br /><br /><ul><li>F8 - Step function/line</li><li>F9 - Run/Compile<br /></li><li>F10 - Show/focus the main top panel (Objects Panel)</li><li>F11 - Show/focus Object Inspector<br /></li><li>F12 - Switch between form and corresponding unit and vice-versa</li><li>Ctrl+J - list preset templates (such as for...to...do begin...end)</li><li>Ctrl+Space - Show Code Insight at cursor (in case it doesnt show up automatically for example)</li><li>Ctrl+Shift+C - Complete code at cursor (when you write a function header, you can have it automatically make the actual function ready to be implementer.) NB: this doesnt seem to be available in the free edition, but certainly was in Delphi 5 Pro.</li><li>Ctrl+Alt+W - Show watch list (for debugging), which can be docked by dragging it over a window.</li><li>Ctrl+A (in watch window) - Add expression at cursor (to the watch list).</li><li>Ctrl+F2 - Reset App; use it if the program seems to hang. You shouldnt need to otherwise.<br /></li></ul>
\ No newline at end of file
<p>We are open to help SUCS members with their programming assignments and general computer queries. We will help you find bugs, fix errors, suggest algorithms and functions to use and give you example code. However we will NOT write your assignment for you!</p> <p>Initially this service is on-line only. If there is enough demand we will consider holding a regular session where questions can be answered in person. </p> <p>For now, post a message on the Forum, making it clear in the topic which language you are having problems with. Include in your post part/all of the code that you have a problem with, and explanation what the code appears to do, what it&#39;s supposed to do and where you think the problem is. If your compiler prints error messages or warnings, pasting these in their entirety is also helpful. The <a href="../../Tools/PasteBin">PasteBin</a> is also useful for posting code as it features syntax highlighting. <br /></p> <p>One of our team of volunteers will then try and answer your question as quickly as possible; however, do not expect instant answers (if you need advice quickly try asking nicely on <a href="../../Community/Milliways">Milliways</a>).</p> <p>The following is a list of languages which we are mostly able to provide help with. This is not an exhaustive list as some SUCS members know more languages but your chances of getting help with these are better than more obscure languages:</p> <ul> <li>Pascal</li><li>Python<br /></li> <li>Java</li> <li>C</li> <li>Prolog</li> <li>HTML</li> <li>PHP</li> <li>Haskell</li> <li>LaTeX/BibTeX</li> </ul> <h2>Manuals / Documentation</h2> <p>Links to documentation and manual pages.</p> <ul> <li><a href="http://java.sun.com/j2se/1.5.0/docs/api/">Java SDK</a></li><li><a href="http://docs.python.org/lib/lib.html" title="Python Library Reference">Python Library Docs</a><br /></li></ul> <h2>Examples</h2> <p>The following are pieces of example code that demonstrate certain generally useful techniques and function calls.</p> <ul> <li>C<ul> <li> Linked Lists: <a href="../../files/Help/advisory/c/linked.c">linked.c</a></li> <li> Semaphores &amp; fork: <a href="../../files/Help/advisory/c/semaphore.c">semaphore.c</a></li> </ul></li> <li>PHP<ul> <li> Database access library (PostgreSQL) <a href="../../files/Help/advisory/php/db-psql.plib">db-psql.plib</a></li> </ul></li> </ul> <p>Please feel free to submit, or request example code for other problems or languages.</p>
\ No newline at end of file
<!-- Note: please use ~pwb/public_html/readline.html instead of this. Please also replace it with the contents of this box *BEFORE* you click the update button! This is because htmlarea screws up some of the markup in this article. --> <p>Unfortunately there&#39;s no easy, standard way to read in all of an arbitrarily long line of text in C. You might think of using (f)scanf or gets, but both of these have their drawbacks.</p> <p>For a start, gets doesn&#39;t check the size of the buffer you give it, so it&#39;s easy to get a buffer overflow. For this reason <strong><span style="color: red">never ever use gets!</span></strong></p> <p>Similarly, naively using the %s format with (f)scanf <strong><span style="color: red">can easily lead to buffer overflow</span></strong>. You can get around this using something like %20s to tell it to read in only so many characters, but this unfortunately reads in <em>exactly</em> that many characters, so it&#39;s not very flexible.</p> <p>There are a few solutions to this. Here are some of them, in decreasing order of convenience and (approximately) increasing order of portability:</p> <ul> <li><a href="#scanf">Use the GNU %as extension to (f)scanf</a></li> <li><a href="#readline">Use the GNU readline library</a></li> <li><a href="#getline">Use the GNU getline function</a></li> <li><a href="#diy">Do it yourself with fgets and realloc</a></li> </ul> <a name="scanf" title="scanf"></a> <h2>Using the GNU %as extension to fscanf</h2> <p>Normally the %s format causes fscanf to read in an arbitrarily long string. As has been mentioned, this is insecure and should not be used. However, if you are using GNU libc, you can make use of the %as format. This is exactly the same as %s except that</p> <ul> <li>the function allocates as much memory as needed for the string; and</li> <li>the corresponding pointer argument will have type char ** rather than char * (since the function needs to change what the argument points to).</li> </ul> <p>So you might use something like:</p> <pre>#include &lt;stdio.h&gt;<br /><br />char * getline(FILE * f)<br />{<br /> char * buf;<br /> int result = fscanf(f,&quot;%as\n&quot;,&amp;buf);<br /> if (result &lt; 0) {<br /> if (NULL != buf) free(buf);<br /> return NULL;<br /> }<br /> return buf;<br />}<br /></pre> <p>This is a very handy mechanism. The major disadvantage to it is that it is completely incompatible with ANSI and ISO standards (in particular, %a means something different in C99). Unless you are sure you&#39;re using GNU libc and you don&#39;t mind breaking portability (usually not a good idea), you shouldn&#39;t use this.</p> <a name="readline" title="readline"></a> <h2>Using the GNU readline library</h2> <p>readline is an extremely handy library for accepting user input. Not only is it easy to use from the programmer&#39;s perspective, it provides the user with command line editing such as you would expect in e.g. the bash shell. In fact, bash uses readline for user input, as do many other programs, so you may well already be familiar with it.</p> <p>There is a lot of scope for customising readline, but for basic usage all you need is something like:</p> <pre>#include &lt;stdio.h&gt;<br />#include &lt;readline/readline.h&gt;<br /><br />char * foo()<br />{<br /> return readline(&quot;Prompt: &quot;);<br />}<br /></pre> <p>Remember to link your executable to libreadline and libtermcap (with gcc, this means using the linker switches -lreadline -ltermcap), and make sure the readline header files are in your include path. Most modern Linux distributions have readline installed by default, though you may need to install the headers yourself (they are usually in a package called something like readline-devel).</p> <p>The only drawbacks to readline are:</p> <ul> <li>it&#39;s rather big - it has lots of features you may well not need</li> <li>the person running your code may not have readline installed. You can get around this by statically linking the library, but remember it is rather big (around 167 KB for version 4.3)</li> <li>it&#39;s only suitable for interactive input from a terminal</li> </ul> <a name="getline" title="getline"></a> <h2>Using the GNU getline function</h2> <p>getline is a function added to the GNU version of libc to address the very problem this article discusses. For terminal input readline is easier to use and arguably more portable, so if you are only accepting terminal input, use that instead.</p> <p>Here&#39;s the kind of thing you&#39;ll need to do to use getline:</p> <pre>#define _GNU_SOURCE<br />#include &lt;stdio.h&gt;<br /><br />char * foo(FILE * f)<br />{<br /> int n = 0, result;<br /> char * buf;<br /><br /> result = getline(&amp;buf, &amp;n, f);<br /> if (result &lt; 0) return NULL;<br /> return buf;<br />}<br /></pre> <p>getline is an extension to the stdio library, so again it is only available if you can rely on the presence of GNU libc. It&#39;s not a good idea to statically link it as that will mean your entire code is statically linked - usually you want to link standard libraries dynamically. Moreover, updates to libc won&#39;t affect a statically linked version.</p> <p>Another disadvantage is that it trades simplicity for flexibility, so it is not quite as easy to use as (f)scanf (above) or a custom function.</p> <a name="diy" title="diy"></a> <h2>Doing it yourself with fgets and realloc</h2> <p>Once all these options are exhausted (GNU libc or readline is unavailable, you&#39;re trying to read from a file rather than a terminal, ...), the only option left is to roll your own getline function. Fortunately this is quite easy, as you can combine two completely standard library functions: fgets and realloc.</p> <p>realloc is like malloc, except that it resizes blocks of memory instead of creating new ones. When you call it on a block, the contents of the block are preserved.</p> <p>fgets reads from a stream (i.e. a FILE *) a whole line of text, unless it runs out of space or hits EOF first. So, it can only read in so much text before it has to give up. This means that, provided you do not tell it there is more space in the buffer than there really is, you will not get buffer overflows this way. You can get around this restriction by defining a function which reads from the stream repeatedly, getting more memory as needed, until finally the whole line has been read.</p> <p>Here is one possible implementation:</p> <pre>#include &lt;stdio.h&gt;<br /><br />char * getline(FILE * f)<br />{<br /> size_t size = 0;<br /> size_t len = 0;<br /> size_t last = 0;<br /> char * buf = NULL;<br /><br /> do {<br /> size += BUFSIZ; /* BUFSIZ is defined as &quot;the optimal read size for this platform&quot; */<br /> buf = realloc(buf,size); /* realloc(NULL,n) is the same as malloc(n) */ <br /> /* Actually do the read. Note that fgets puts a terminal &#39;\0&#39; on the<br /> end of the string, so we make sure we overwrite this */<br /> fgets(buf+last,size,f);<br /> len = strlen(buf);<br /> last = len - 1;<br /> } while (!feof(f) &amp;&amp; buf[last]!=&#39;\n&#39;);<br /> return buf;<br />}<br /></pre> <p>This is not quite as efficient as it could be; optimisation is left as an exercise for the reader.</p>
\ No newline at end of file
<p><tt>make</tt> is a phenomenally handy tool for organising the build process of your program. It makes it trivially easy to recompile parts of your program after changing it. It is especially handy if your program consists of many source files, or some of the code is generated automatically (e.g. by <tt>lex</tt>).</p>
<p><tt>make</tt> is used by writing a file which tells it how to do whatever it is you want it to do (such as compiling a program). This file is called a <em>makefile</em>, and is usually called <tt>Makefile</tt> (this is the name make will look for if you don&#39;t tell it otherwise).</p>
<h2>What can make do?</h2>
<ul>
<li><tt>make</tt> enables the end user to build and install your package without knowing the details of how that is done &mdash; because these details are recorded in the makefile that you supply.</li>
<li><tt>make</tt> figures out automatically which files it needs to update, based on which source files have changed. It also automatically determines the proper order for updating files, in case one non-source file depends on another non-source file. As a result, if you change a few source files and then run <tt>make</tt>, it does not need to recompile all of your program. It updates only those non-source files that depend directly or indirectly on the source files that you changed.</li>
<li><tt>make</tt> is not limited to any particular language. For each non-source file in the program, the makefile specifies the shell commands to compute it. These shell commands can run a compiler to produce an object file, the linker to produce an executable, ar to update a library, or T<sub>E</sub>X or Makeinfo to format documentation.</li>
<li><tt>make</tt> is not limited to building a package. You can also use <tt>make</tt> to control installing or deinstalling a package, generate tags tables for it, or anything else you want to do often enough to make it worth while writing down how to do it.</li>
</ul>
<p>(This list is taken from the home page of the <a href="http://www.gnu.org/">GNU</a> version of <a href="http://www.gnu.org/software/make/"><tt>make</tt></a>.)</p>
<h2>What&#39;s in a makefile?</h2>
<br />
<p>In general, a makefile contains two things:</p>
<ol>
<li>Constant definitions, such as the name of the compiler, what flags to pass it, etc</li>
<li>Rules for making files</li>
</ol>
<h3>Rules for making files</h3>
<p>A rule consists of:</p>
<ol>
<li>a target name</li>
<li>a list of prerequisites</li>
<li>a list of actions</li>
</ol>
<p>These are written like so:</p>
<pre>target: prereq1 prereq2
action1
action2</pre>
<p>When <tt>make</tt> follows one of these rules and executes the actions, we say that <tt>make</tt> <em>updates</em> the target.</p>
<p>When you run make, you give it the name of zero or more targets to update, and it <em>brings up for renewal</em> those targets and all the ones they depend on (but each target only gets updated once each time). If you don&#39;t give it any targets, it assumes you want to update the first target listed in the makefile.</p>
<p>The target name is usually the name of a file, though it does not have to be. Now, suppose a particular target comes up for renewal. If the following are all true, then make decides the target is already up to date and does not bother updating it.</p>
<ul>
<li>A file with that name exists (relative to the current directory)</li>
<li>All of its (direct or indirect) prerequisites are also the names of existing files</li>
<li>If any of those prerequisites are also targets, those targets are all up to date</li>
<li>The timestamp on the file named by the target is newer than the timestamps on all of its (direct or indirect) prerequisites</li>
</ul>
<p>On large projects especially, this can save a huge amount of time waiting for compilation of parts of the program that haven&#39;t changed.</p>
<p>A target with a name that is not the name of an existing file is called a phony target. These get updated regardless whenever you tell make to update them, e.g. on the command line or as a prerequisite. This is based partly on the assumption that the target names a file which it creates (which is quite commonly the case). So if a target has phony prerequisites, <tt>make</tt> will never think it is up to date.</p>
<h3>Constants</h3>
<p>Constants are not strictly necessary, but using them makes it easier to make major changes to the way your program is built.</p>
<p>For example, suppose you are writing a C program, and you want all of your files to be compiled with <tt>gcc</tt> using the flags <tt>-Wall -pedantic -O2</tt> (turning on lots of warnings and simple optimisations). Then you can specify:</p>
<pre>CC = gcc
CFLAGS = -Wall -pedantic -O # this comment does not get included</pre>
<p>Then, to compile a file, you would create a target for it, such as this:</p>
<pre>foo.o: foo.c foo.h
$(CC) $(CFLAGS) -c foo.c -o foo.o</pre>
<p>Notice that to refer to the constant&#39;s value you write <tt>$(CFLAGS)</tt>. That string gets replaced with whatever you put on the right hand side of the <tt>=</tt> sign (up until a <tt>#</tt> if there is one, which indicates a comment).</p>
<p>In this example we have specified the C compiler to use in the variable <tt>CC</tt>. This is good practice if you are trying to produce portable code, as it makes it easy to compile your program with a different compiler - all you need is to change the definition of <tt>CC</tt>, and all the actions referring to <tt>$(CC)</tt> will use the new definition automatically.</p>
<h2>Using <tt>make</tt></h2>
<p>To get the best out of <tt>make</tt>, you should specify a rule for each of your source files so that they get compiled separately, with the final stage being a simple linkage operation.</p>
<h3>An example makefile</h3>
<p>Here is a fairly typical example. Suppose you are writing a program called <tt>fred</tt>, and the source code for this program is in three source files, called <tt>foo.c</tt>, <tt>bar.c</tt>, and <tt>baz.l</tt>. You also have header files called <tt>fred.h</tt>, <tt>bar.h</tt> and <tt>lexer.h</tt>. <tt>baz.l</tt> is a <tt>lex</tt> file, which <tt>lex</tt> uses to generate a lexical analyser, also written in C, in the file <tt>lexer.c</tt>. You also use readline and the standard maths functions. A good makefile would look something like this:</p>
<pre>CC = gcc
LEX = flex
CFLAGS = -Wall -pedantic -O
LDFLAGS = -ltermcap -lreadline -lm -lfl
.PHONY: proper clean
fred: foo.o bar.o lexer.o
$(CC) $(CFLAGS) foo.o bar.o lexer.o $(LDFLAGS) -o fred
foo.o: fred.h bar.h foo.c
$(CC) $(CFLAGS) -c foo.c -o foo.o
bar.o: fred.h bar.h bar.c
$(CC) $(CFLAGS) -c bar.c -o bar.o
lexer.o: fred.h lexer.h lexer.c
$(CC) $(CFLAGS) -c lexer.c -o lexer.o
lexer.c: baz.l
$(LEX) -olexer.c baz.l
proper:
rm -vf *.o lexer.c
clean: proper
rm -vf fred</pre>
<p>To make the whole project, given just those source files, just type</p>
<pre>make</pre>
<p>This tells <tt>make</tt> to update the first target listed in the makefile. make notices that none of <tt>foo.o</tt>, <tt>bar.o</tt> and <tt>lexer.o</tt> actually exist yet, so it goes and updates those targets.</p>
<p>In the case of <tt>lexer.o</tt>, the file <tt>lexer.c</tt> also does not exist, because first it must be generated by lex. So before updating <tt>lexer.o</tt>, make first updates the target <tt>lexer.c</tt>, which runs <tt>lex</tt> on <tt>baz.l</tt>. Now <tt>make</tt> compiles <tt>lexer.c</tt> into <tt>lexer.o</tt>, using the <tt>-c</tt> switch to tell <tt>gcc</tt> not to do any linking yet. Once all the other prerequisites are updated, make looks at <tt>fred</tt> again and runs its action, which is linking together of the three object files along with some libraries.</p>
<p>Now suppose that, having compiled the whole program once, you change one of the source files, say, <tt>bar.h</tt>. <tt>foo.o</tt> and <tt>bar.o</tt> both depend on this file, so when you compile the program again, make will see that those object files have older timestamps than the header file they are dependent on, and so they need to be updated. However, <tt>lexer.o</tt> does not depend on bar.h, so it is still newer than all of its prerequisites. So <tt>make</tt> decides it is up to date and does not rebuild it.</p>
<p>If you want to compile only part of a program - for example, you&#39;re ironing out all the syntax errors from the lexer - you give make the name of the target(s) you want it to update, viz.:</p>
<pre>make lexer.o</pre>
<h3>Cleaning up after yourself</h3>
<p>You won&#39;t want to distribute your program, when it is finally ready, with all of the .o and executable files, and all the other intermediate files such as <tt>lexer.c</tt>. These are created during the build process, from the other source files. It&#39;s useful to have a convenient way to get rid of these before packaging. The usual way, when using <tt>make</tt>, is to have one or more phony targets which delete these files. The target which removes all files created in the build process is usually called "clean", as above. Another common target is "proper", which removes only the intermediate files, and not the final executable. Obviously one can be implemented using the other as a prerequisite. As before, to tell make to update these targets, type:</p>
<pre>make clean</pre>
<p>or</p>
<pre>make proper</pre>
<p>The .PHONY target at the top tells <tt>make</tt> which targets are always phony. If any files with those names ever actually appear in the directory, <tt>make</tt> pretends they don&#39;t exist and always updates those targets when they come up for renewal.</p>
\ No newline at end of file
<p>The Swansea University Computer Society provides the following main services to its members.
</p>
<dl>
<dt><a href="https://sucs.org/webmail/">Electronic Mail</a></dt>
<dd>Fed up of being a number? Each society member gets an email address of the form <em>membername</em>@sucs.org. You can access this <a href="https://sucs.org/webmail/">via the web</a> or from mail clients supporting pop3 or imap (that's most of them).
<p>Learn more about <a href="../../Help/SUCS%20Services/Accessing%20your%20email">society e-mail</a> </p>
</dd>
<dt>Additional Disk Space</dt>
<dd>Society members have access to additional disk space, either from the society machines or by WebDAV as a network folder on the LIS Windows machines, or your home system.
<p>Learn more about <a href="../../Help/SUCS%20Services/Using%20WebDAV">accessing disk space</a> </p>
</dd>
<dt><a href="../../Services/Library">Reference Library</a></dt>
<dd>The computer society has its own small library of fifty bought and donatedbooks available to members of the society.
<p>Learn more about <a href="../../Services/Library">the books available</a> </p>
</dd>
<dt><a href="../../Services/Room">Computer Room</a></dt>
<dd>The society has its own small room underneath the union building which has Linux desktop systems available to members twenty four hours a day, as well as connection points for personal laptops. Use of the room is governed by <a href="../../Info/Room%20Rules">the room rules</a>. In particular please note that laptops must be registered with the society to be used so that anyone misusing the system can be identified and disciplined. University computing regulations also apply at all times.
<p>Learn more about <a href="../../Info/Room%20Rules">the room usage rules</a></p>
</dd>
<dt>Personal Webspace</dt>
<dd>If you create and place files in a public_html folder they will be visible on the web at http://sucs.org/~<em>username</em>. The index or default web page is called "index.html". For the more adventurous web designers, <a href="http://php.net/">PHP scripting</a> and <a href="http://postgresql.org">PostgreSQL databases</a> are available.</dd><dt><br /></dt>
<dt><a href="../../Help/Program%20Advisory">Program Advisory</a></dt>
<dd>Assistance with computing related problems provided by members to members. If you need help or can provide help see <a href="../../Help/Program%20Advisory">the advisory page</a>.</dd><dt><br /></dt>
<dt>Web Proxy</dt>
<dd>The society operates a caching web proxy for the machines in the room and any laptops using the laptop ports. Use of the proxy is compulsory and web access is not available by other means.
<p>The proxy is <strong>proxy.sucs.org:3128</strong></p>
</dd>
<dt><a href="../../Services/Desktop%20on%20Demand">Desktop On Demand</a></dt>
<dd>Access a computer society Linux desktop anywhere that has a web browser supporting java.
<p>Learn more about <a href="../../Help/SUCS%20Services/Using%20Desktop%20on%20Demand">Desktop on Demand</a></p>
</dd>
<dt><a href="../../mailman/listinfo">Mailing lists</a></dt>
<dd>SUCS provides student societies with mailing lists which they can use to make announcements or chat.
<p>Learn about <a href="../../Help/SUCS%20Services/Using%20mailing%20lists">subscribing to and using mailing lists</a> and <a href="../../Help/SUCS%20Services/Administering%20a%20mailing%20list">administering them</a></p>
</dd>
<dt><a href="../../Services/Milliways">Milliways</a></dt>
<dd>SUCS has its own homebrewed chat system called Milliways.
<p>Learn more about <a href="../../Help/SUCS%20Services/Using%20Milliways">Milliways</a></p>
</dd>
<dt>Jabber server</dt>
<dd>Fed up with MSN spam? Switch to <a href="http://www.jabber.org/">Jabber</a> instead.
<p>Learn more about <a href="../../Help/SUCS%20Services/Jabber%20Server%20HOWTO">Jabber</a></p>
</dd> </dl>
<hr />
<p> SUCS would like to thank <a href="http://sucs.org/~rohan">Steve Whitehouse</a>, <a href="http://sucs.org/~rhys">Rhys Jones</a>, <a href="http://sucs.org/~dez">Denis Walker</a> and Alan Cox for their contribution to these Help pages.</p>
\ No newline at end of file
<p>Computer Society members all receive email accounts of the form
<em>username</em>@sucs.org. This is separate to your university email
account. </p><h3>Reading your SUCS Mail <br /></h3><p>You can access your mail <a href="../../../webmail">via the
web</a>, directly from mail clients on the SUCS machines, or elsewhere using any software compatible with secure POP3/IMAP. </p>
<p>Mozilla Thunderbird is a good mail client which is supplied on the <span style="font-style: italic">SUCS Members&#39; CD</span>. There is a walkthrough for configuring Thunderbird <a href="Accessing%20your%20email/Configuring%20Thunderbird">here</a>.</p>
<h3>Mail server details <br /></h3><p>If you need to set up a different mail client, the relevant details are as follows:</p>
<table border="0">
<tbody><tr><td>Protocol</td><td>secure IMAP or secure POP3 (via SSL) </td></tr>
<tr><td>Server</td><td>sucs.org</td></tr>
<tr><td>Username</td><td><em>your username</em></td></tr>
<tr><td>Password</td><td><em>your password</em></td></tr>
</tbody></table>
<p>The society uses a single sign-on system, so if you change your password for
WebDAV, login or email, the others follow.</p>
\ No newline at end of file
<p>Open the <span style="font-weight: bold;">Mail</span> program by clicking on its icon in the Dock:</p>
<p><img width="141" vspace="0" hspace="0" height="77" border="0" align="bottom" alt="[OS X Mail]" src="/pictures/osxmailicon.jpg" /></p>
<p>If it is the first time you have run Mail on this computer, a wizard will appear and you will be prompted for your email settings immediately.</p>
<p><img src="/pictures/osxmail1.jpg" /></p>
<p>If this is the case, <a href="#entersettings">skip to the next step</a>.</p>
<p>If you already have accounts in <span style="font-weight: bold;">Mail</span>, you will not be prompted to create an account. Instead, go to the Mail menu, and choose Preferences:</p>
<p><img src="/pictures/osxmailmenu.jpg" /></p>
<p>The preferences window will open. Make sure that &quot;Accounts&quot; is selected at the top.</p>
<p><img src="/pictures/osxmailaccounts.jpg" /></p>
<p>Click the &quot;+&quot; button at the bottom-left of the window. This will open the &quot;New Account&quot; wizard.</p>
<p><a id="entersettings"></a><img src="/pictures/osxmail2.jpg" /></p>
<p align="baseline">You will be asked for a name for the account (e.g. &quot;SUCS Account&quot;), your full name and your email address. This will be of the form <span style="font-style: italic;">[username]</span>@sucs.org. Once you have entered these, click &quot;Continue&quot;.</p>
<p><img src="/pictures/osxmail3.jpg" /></p>
<p align="baseline">Then you will be asked for the details of the incoming mail server. When you click &quot;Continue&quot;, Mail will test the server's connection.</p>
<p><img src="/pictures/osxmail4.jpg" /></p>
<p>At this point, it will fail and you should click &quot;Continue&quot; again.</p>
<p><img src="/pictures/osxmail5.jpg" /></p>
<p>On the <span style="font-weight: bold;">Incoming Mail Security</span> page, you should tick &quot;Use Secure Socket Layer (SSL)&quot; and click &quot;Continue&quot;.</p>
<p><img src="/pictures/osxmail6.jpg" /></p>
<p>The <span style="font-weight: bold;">Outgoing Mail Server</span> can be set to sucs.org, using port 25, and &quot;SSL&quot;. Click &quot;Continue&quot;.</p>
<p><img src="/pictures/osxmail7.jpg" /></p>
<p>You will be presented with a summary of the settings you have entered. Click &quot;Continue&quot; again.</p>
<p><img src="/pictures/osxmail8.jpg" /></p>
<p>Click &quot;Done&quot; and you will be taken into the Mail program.</p>
<p><img src="/pictures/osxmailapp.jpg" /></p>
<p>Click &quot;Get Mail&quot; to retrieve your mail. By default, <span style="font-weight: bold;">Mail</span> will fetch your email every five minutes.</p>
\ No newline at end of file
<p>Thunderbird is the mail client from Mozilla. You can install it from your <span style="font-style: italic">SUCS Member&#39;s CD</span> or download it from <a href="http://www.mozilla.com/thunderbird/">mozilla.org</a>.</p>
When you run Thunderbird for the first time, it will ask you to set up an account.<br />
<img src="../../../../pictures/tbnewacc.png" border="0" alt="tbnewacc.png" hspace="0" vspace="0" width="326" height="322" align="bottom" /><br />
Make sure that &quot;Email account&quot; is selected, then click <span style="font-weight: bold">Next</span>.<br />
<br />
Enter your name and your email address. Your email address will be your
SUCS username followed by &quot;@sucs.org&quot;. When you have done this, click <span style="font-weight: bold">Next</span>.<br />
<br />
<img src="../../../../pictures/tbserver.png" border="0" alt="tbserver.png" hspace="0" vspace="0" width="326" height="322" align="bottom" /><br />
You will be asked to choose between POP and IMAP mail collection. SUCS
supports both, but IMAP is generally better so choose that. Put <span style="font-style: italic">sucs.org</span>
into the boxes for both the Incoming and Outgoing servers. Note that
these settings are not complete. You will need to use secure IMAP, and
that option is not available in the wizard. When we have completed the
wizard, we will need to go back and select this option. Click <span style="font-weight: bold">Next</span>.<br />
<br />
You will now be asked for your username. Thunderbird will guess that
this is the bit before the @ sign in your email address. In this case
it is right, so click <span style="font-weight: bold">Next</span>.<br />
<br />
Now, you need to choose a name for your account. The default of your
email address is fine, but you could call it &quot;SUCS Account&quot;, for
example, if you prefer. Click <span style="font-weight: bold">Next</span>.<br /><br /><img src="../../../../pictures/tbwizardfinish.png" alt="tbwizardfinish.png" /><br />You have now completed the wizard - click <span style="font-weight: bold">Finish</span>.<br /><br /><img src="../../../../pictures/tbserversettings.png" border="0" alt="tbserversettings.png" hspace="0" vspace="0" width="446" height="370" align="bottom" /><br />Now go to the <span style="font-style: italic">Tools</span> menu and select <span style="font-style: italic">Account Settings...</span> Click on the <span style="font-style: italic">Server Settings</span> section on the left and tick <span style="font-style: italic">Use secure connection (SSL)</span>.<br /><br /><img src="../../../../pictures/tbsmtp.png" alt="tbsmtp.png" /><br />Now click on <span style="font-style: italic">Outgoing Server (SMTP)</span>. Here, you should select <span style="font-style: italic">TLS</span>. Click <span style="font-weight: bold">OK</span>. You have now completed the configuration of Thunderbird.<br />
<p>Instead of downloading your mail to your own computer, you can read your SUCS mail in situ, by running a shell-based mail client on silver. There are a number of advantages to doing this. It saves time, as you don&#39;t have to wait for the mail to be downloaded - you can start reading it immediately (and of course, delete it if you don&#39;t want it). Also, as you are viewing it as plain text and haven&#39;t downloaded it to your computer, there is no risk whatsoever of getting viruses by reading your mail in this way.</p>
<p>First, you need to <a href="../Logging%20in%20remotely">open an SSH session to silver</a>. Once you have done this, you have a variety of mail clients to choose from. You should decide which you want to use early on and stick to it because when you save mail, it will be put into your mail client&#39;s own database or directory structure. After this has happened, it is not as easy to read the messages in another client. Note that you need to be connected to silver, as this is the machine that runs the mail server and stores the mail - you will not be able to access your mail from the shell on other SUCS machines without first sshing to silver.</p>
<p>Some of the mail clients available on silver:</p>
<ul>
<li>mutt</li>
<li><a href="../../UNIX%20Commands%20and%20Concepts/Mail%20Clients/alpine" title="Alpine">alpine</a></li>
<li>elm</li>
<li>mail</li>
</ul>
\ No newline at end of file
<p>Having a mailing list allows your society to communicate easily with
its members. If your society has a SUCS account and would like to have
a mailing list, just send an email to <a href="mailto:admin%20at%20sucs.org" title="admin at sucs.org">admin at sucs.org</a> asking for one, and we will set it up, using your SUCS email as the list administrator address.</p>
<h3>Overview</h3>
<p>There are two types of mailing list:</p>
<ul>
<li>Discussion forums</li>
<li>Announcements</li>
</ul>
<p>You will need to tell us which of these you want when you ask us to create the list.</p>
<p>A discussion forum is a mailing list with which anyone subscribed to
the list can send messages to everyone else subscribed to the list. As soon as a
member sends an email to the list address (e.g. funsoc at lists.sucs.org
might be the Fun Society's mailing list address) it will be forwarded
to everyone who is subscribed to the list (except those using digest
mode, to whom it sends one email a day, containing all that day's
emails).</p>
<p>An announcements list is <span style="font-style: italic;">moderated</span>,
which means subscribers can still send messages to it, but these
messages are not immediately sent to the entire list, but are instead
held by the system for approval by a <span style="font-style: italic;">moderator</span>.
All the list administrators are also moderators, but you can additionally allow
non-administrators to be moderators. By convention these lists are
called something like <span style="font-style: italic;">funsoc-announce</span>.</p>
<p>Most administrative tasks can be done by visiting (e.g.) http://lists.sucs.org/mailman/admin/funsoc. At the top of this page is a menu with links to pages containing different categories of options.</p>
<h3>Adding users</h3>
<p>You can add a large number of addresses to the list at once by clicking on <span style="font-style: italic;">Membership Management</span> then <span style="font-style: italic;">Mass Subscription</span>. Do one of the following:</p>
<ul>
<li>Type (or paste) into the first large box the addresses you wish to add, each on a separate line; or</li>
<li>Put the addresses in a file, each on a separate line, and type this file's name into
the smaller box. The button beside it gives you an easy, graphical way
to find the file.</li>
</ul>
<p>Don't try to use both mechanisms, because it won't work.</p>
<p>The second large box can be filled in with a welcome message to send
to each address you are adding to the list. You should finish this
message with a blank line.</p>
<p>You can choose whether the addresses should be subscribed
immediately or just have an invitation sent to them (which allows them
to subscribe simply by replying to the message), and whether the list
admin address gets notified when those members actually subscribe.</p>
<p>Click 'Submit Your Changes' to subscribe the addresses to your list.</p>
<h3>Removing users</h3>
<p>If you find you need to (e.g. at the start of the year when you
purge all ex-members), you can remove a large number of addresses from
the list at the same time; though in this case you don't get to send
them a custom message, only a standard unsubscription notice.</p>
<p>To do this, click on 'Membership Management' -&gt; 'Mass Removal' and proceed more or less as for adding users.</p>
<h3>Changing the mailing list password</h3>
<p>First of all, I would like to encourage all society executives to
pass on their account details (username, password, the structure of
your website if you have one, and what else you have in your home
directory, and whatever else you can think of) to their new executive
as soon as they take over. Not only is this common sense, it also
allows for some continuity in the management of the society's account.
Not to mention that there is no more annoying thing for a sysadmin than
a user asking to have their password changed because they've forgotten
it.</p>
<p>To change your mailing list admin password, simply click on
'passwords'. This also allows you to change the moderator password,
which is used by moderators to authenticate themselves for the purposes
of moderating an announcements list. The form asks you to enter the
password twice, in case you mistype it - PLEASE don't just copy and
paste! It's recommended you change this password any time someone stops
being a list admin.</p>
<h3>General admin options</h3>
<p>Here are some options you may want to know about:</p>
<ul>
<li>Additional admin email addresses can be added under 'General
options'. Any mail relating to list administration will be sent to
these addresses. You might want to put all your executive's email
addresses here (though if you expect them to be able to do anything as
an admin, remember to tell them the password).</li>
<li>You can make non-administrators into moderators in the same way,
except using a different box. These addresses receive notifications of
posts by non-members and (for announcements lists) non-moderators.
Administrators are already moderators so they receive these emails
anyway. Again, if you expect the owners of these addresses actually to
be able to act as moderators, be sure to give them the moderator
password.</li>
<li>There are fields labelled 'description' and 'info' which you can use to describe the list. 'Description' should be brief, such as "Mailing list for Fun Society members". You can put a more detailed description (including HTML markup if you like) in the 'info' field, which is displayed at the top of the list info page.</li>
<li>If there is a discussion on your list that you find is degenerating into a <a href="http://www.catb.org/esr/jargon/html/F/flame-war.html" title="Definition of 'flame war'">flame war</a>, you can turn on emergency moderation to temporarily moderate everything posted by non-moderators.</li>
<li>Some societies (e.g. the German Society) might want to receive system messages in a language other than English. You can arrange this on the 'language options' page.</li>
<li>You can choose whether users need to confirm their subscription and if an admin must approve their membership first. You cannot disable both of these; this is to stop malicious people subscribing others to high volume lists against their will. This is under 'Privacy Options' -&gt; 'Subscription Rules'. Should you ever need to, you can also ban certain addresses from the list on this page.</li>
</ul>
\ No newline at end of file
<p>If you wish to use our games server, you must configure your web browser to connect directly using no proxy server for SSL connections.</p><p>See <a href="https://sucs.org/Knowledge/Help/SUCS%20Services/Configuring%20Proxy%20Settings#firefox" title="Firefox instructions">instructions for Firefox</a> or instructions for <a href="https://sucs.org/Knowledge/Help/SUCS%20Services/Configuring%20Proxy%20Settings#ie" title="Internet Explorer instructions">Internet Explorer</a> </p>
<h2><a name="firefox" title="firefox"></a>Firefox</h2><ol><li>Open the Firefox Options window by selecting &quot;<strong>Tools</strong>, <strong>Options...</strong>&quot; from the menu bar<br />
<img alt="Tools-&gt;Options menu bar entry" src="/pictures/screenshots/proxy/firefoxmenubar.png" /><br /><br />
</li>
<li>Click the &quot;<strong>Advanced</strong>&quot; button and select the &quot;<strong>Network</strong>&quot; tab, then click the &quot;<strong>Settings...</strong>&quot; button<br />
<img alt="Advanced-&gt;Network tab of Firefox options dialog" src="/pictures/screenshots/proxy/firefoxoptions.png" />
</li>
<li><strong>Uncheck</strong> the &quot;<em>use this proxy server for all protocols</em>&quot; box, and <strong>delete</strong> the contents of the &quot;<em>SSL Proxy</em>&quot; field, so that it&#39;s blank<br />
<img alt="Firefox connection settings" src="/pictures/screenshots/proxy/firefoxconnectionsettings.png" />
</li>
<li>That&#39;s it! Click OK, and you should be able to access the SUCS Games Server page, in addition to normal web pages</li>
</ol>
<h2><a name="ie" title="ie"></a>Internet Explorer</h2>
<ol>
<li>Open Windows Control Panel (Start-&gt;Control Panel)</li>
<li>Select the <strong>Network and Internet Connections</strong> category<br />
<img src="/pictures/screenshots/proxy/iecontrolpanel.png" />
</li>
<li>Click <strong>Internet Options</strong><br />
<img src="/pictures/screenshots/proxy/ienetworkinetsettings.png" />
</li>
<li>On the <strong>Connections</strong> tab, select <strong>LAN Settings...</strong><br />
<img src="/pictures/screenshots/proxy/ieinternetproperties.png" />
</li>
<li>Click the <strong>Advanced...</strong> button <br />
<img src="/pictures/screenshots/proxy/ielansettings.png" />
</li>
<li><strong>Untick</strong> the <em>Use the same proxy server for all protocols</em> checkbox, and <strong>delete</strong> the text from the <em>Secure</em> field<br />
<img src="/pictures/screenshots/proxy/ieproxysettings.png" />
</li>
<li>That&#39;s it! Click OK, and you should be able to access the SUCS Games Server page, in addition to normal web pages</li>
</ol>
<p>Any further problems, please contact us at <strong>games@sucs.org</strong> !</p>
\ No newline at end of file
<p>SUCS offers members the opportunity to connect their own computers to our network, providing a connection to the Internet via our firewall. In order for you to use your computer on our network, you may need to make some configuration changes to your network setup. Once you are connected, just point your web browser at <a href="../../../guestnet">https://sucs.org/guestnet</a> to register.<br /></p>
<h2>Under Windows</h2>
<p>Bring up the properties window for your network card. Select the TCP/IP component for your network card, and click Properties. Ensure that &quot;Obtain an IP address automatically&quot; is selected. Also ensure the DNS Configuration tab is set to get its settings automatically</p>
<h2>Under Linux</h2>
<p>Use what ever tool your distribution provides to setup up your network card to receive its settings via DHCP.</p>
<h2>Under Mac OS X</h2>
<p>Go to the Apple menu and choose &quot;System Preferences&quot;. Double-click on the &quot;Network&quot; icon. Select the &quot;Built-in Ethernet&quot; device from the &quot;Show&quot; drop-down, then go to the TCP/IP tab and make sure that &quot;Configure&quot; is set to &quot;using DHCP&quot;. Also check that all the other boxes on that tab are empty, then click &quot;Apply Now&quot; and close the window.</p>
\ No newline at end of file