mirror of
https://github.com/acanas/swad-core.git
synced 2024-09-23 00:00:50 +02:00
220 lines
8.8 KiB
HTML
220 lines
8.8 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
|
|
<head>
|
|
<title>SWAD: Source code</title>
|
|
<link rel="StyleSheet" href="/swad.css" type="text/css" />
|
|
<script>
|
|
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
|
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
|
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
|
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
|
|
|
ga('create', 'UA-40768375-1', 'openswad.org', {
|
|
'anonymizeIp': true,
|
|
'storage': 'none',
|
|
'clientId': window.localStorage.getItem('ga_clientId')
|
|
});
|
|
ga(function(tracker) {
|
|
window.localStorage.setItem('ga_clientID', tracker.get('clientId'));
|
|
});
|
|
ga('send', 'pageview');
|
|
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
<table width="100%" border="0" cellpadding="20" cellspacing="0">
|
|
<tr>
|
|
<td align="center">
|
|
<table width="90%" border="0" cellspacing="20">
|
|
|
|
<tr>
|
|
<td align="center" class="SWAD">
|
|
<a href="http://openswad.org/" class="SWAD"><img src="/logo/swad224x64.png" alt="SWAD" width="224" height="64" />
|
|
<br />shared workspace at a distance</a>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center">
|
|
<h1>Source code</h1>
|
|
<a href="http://creativecommons.org/licenses/by-sa/3.0/deed.es_ES" title="License of text on this page" class="COPYRIGHT"><img src="/img/cc-by-sa.png" style="width:88px; height=31px; vertical-align:middle;" alt="CC BY-SA" /></a>
|
|
<a href="http://www.ugr.es/~acanas/">Antonio Cañas Vargas</a>, 1999-2015
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center">
|
|
<cite>
|
|
You're frozen<br />
|
|
When your heart's not open<br />
|
|
</cite>
|
|
Frozen, Madonna
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left">
|
|
|
|
<h2>Free software</h2>
|
|
|
|
<p align="justify">
|
|
<a href="http://openswad.org/">SWAD</a>
|
|
is free software, so it can be used at any university or educational institution
|
|
(schools, colleges, academies, ...),
|
|
and other programmers can contribute to its development.
|
|
</p>
|
|
|
|
<h3>Downloading and installing</h3>
|
|
|
|
<p align="justify">
|
|
You can download all the software from <a href="/download/">the download page</a>
|
|
respecting free software licenses indicated in each case,
|
|
and install it by following the steps in <a href="/install/">the installation procedure</a>.
|
|
</p>
|
|
|
|
<h3>Collaborate in the development</h3>
|
|
|
|
<p align="left">
|
|
<em>"Cuando me preguntan cuándo estará listo un programa, contesto:
|
|
depende de cuánto trabaje usted en ello."</em><br>
|
|
--Richard Stallman
|
|
<sup><a href="http://www.elmundo.es/navegante/2004/04/27/entrevistas/1083074999.html">1</a></sup>
|
|
</p>
|
|
|
|
<p align="justify">
|
|
SWAD not assigned a budget for its development,
|
|
although it has received some scholarships in teaching innovation projects.
|
|
Therefore potential partners generally should not expect money for their work,
|
|
but learning, fun, achievement, recognition, and, if desired,
|
|
a certificate of collaboration in the development of SWAD.
|
|
</p>
|
|
|
|
<h2>Description of modules</h2>
|
|
|
|
<p align="justify">
|
|
SWAD platform is implemented mostly as a single program
|
|
(actually one for <a href="../translation/">each language</a>)
|
|
that uses the <a href="http://en.wikipedia.org/wiki/Common_Gateway_Interface">CGI</a> specification.
|
|
This program runs on the <a href="http://swad.ugr.es/server/">server</a>
|
|
every time a user clicks a button or link within the platform,
|
|
queries database and performs the necessary calculations for the current action,
|
|
and generates all the <a href="https://en.wikipedia.org/wiki/HTML5">HTML5</a> code
|
|
that is sent to <a href="http://en.wikipedia.org/wiki/Client_%28computing%29">client</a>.
|
|
</p>
|
|
|
|
<h3>Main core (<code>swad-core</code>)</h3>
|
|
<a href="img/lineas-codigo-modulo-principal.png"><img src="img/lineas-codigo-modulo-principal.png" width="50%" height="50%" border="0" alt="Main swad core code lines" align="right" hspace="30" vspace="30"></a>
|
|
|
|
<p align="justify">
|
|
Programmed by <a href="https://github.com/acanas">Antonio Cañas Vargas</a>.
|
|
</p>
|
|
|
|
<p align="justify">
|
|
SWAD main core (the CGI mentioned above) performs almost all the functionality of the platform,
|
|
with the exception of photographs processing, chat, log in from a extern web service,
|
|
and <a href="/mobile/">mobile applications</a>.
|
|
</p>
|
|
|
|
<p align="justify">
|
|
The module has been programmed in <a href="http://en.wikipedia.org/wiki/Ansi_C">ANSI C</a>
|
|
and <a href="/database/">the database</a> can use
|
|
<a href="http://en.wikipedia.org/wiki/Database">database management system</a>
|
|
<a href="http://www.mysql.com/">MySQL</a> or <a href="https://mariadb.org/">MariaDB</a>.
|
|
The reader will probably think "a web application written in C?"
|
|
Yes, it is not usual, <a href="http://www.youtube.com/watch?v=1S1fISh-pag">but... ;-)</a>
|
|
</p>
|
|
|
|
<p align="justify">
|
|
SWAD core has about 185 000 <a href="http://en.wikipedia.org/wiki/Source_lines_of_code">lines of source code</a>.
|
|
Each executable program (one for each language) has a size of 1.85 <a href="http://en.wikipedia.org/wiki/Mebibyte">MiB</a>
|
|
and in most of the possible actions
|
|
generates the <a href="http://en.wikipedia.org/wiki/Web_page">page</a> in few milliseconds.
|
|
</p>
|
|
|
|
<p align="justify">
|
|
For <a href="http://en.wikipedia.org/wiki/Cryptography">encryption</a> of passwords
|
|
the <a href="http://en.wikipedia.org/wiki/SHA_hash_functions">SHA-512</a> algorithm is used.
|
|
For encryption of session codes, users' photograph names and user codes sent as parameters,
|
|
the <a href="http://en.wikipedia.org/wiki/SHA_hash_functions">SHA-256</a> algorithm is used.
|
|
In both cases we have employed the <a href="http://www.ouah.org/ogay/sha2/">Olivier Gay's C implementation</a>.
|
|
</p>
|
|
|
|
<p align="justify">
|
|
SWAD core uses <a href="http://www.dropzonejs.com/" target="_blank">DropzoneJS</a>,
|
|
an open source library that provides drag'n'drop file uploads with image previews.
|
|
</p>
|
|
|
|
<p align="justify">
|
|
SWAD core uses the tool <a href="http://www.cs.fsu.edu/~engelen/soap.html">gSOAP</a>
|
|
to implement the <a href="http://en.wikipedia.org/wiki/SOAP">SOAP</a> server protocol
|
|
of the <a href="https://openswad.org/ws/">web service</a>.
|
|
</p>
|
|
|
|
<br clear="all" />
|
|
|
|
<h3>Photo processing module (<code>fotomaton</code>)</h3>
|
|
|
|
<p align="justify">
|
|
Programmed by <a href="http://es.linkedin.com/in/dcalandria">Daniel Jesús Calandria Hernández</a>.
|
|
</p>
|
|
|
|
<p align="justify">
|
|
The photographic processing is performed by a separate module written in
|
|
<a href="http://en.wikipedia.org/wiki/C%2B%2B">C++</a>.
|
|
The first version of this module was developed by former students of Computer Engineering
|
|
Jesús Álvarez Martín and <a href="http://www.xing.com/profile/Alberto_RodrigoGamiz">Alberto Rodrigo Gámiz</a>.
|
|
Currently it uses a version completely rewritten
|
|
by <a href="http://es.linkedin.com/in/dcalandria">Daniel Jesús Calandria Hernández</a>.
|
|
The module detects human faces present in the picture,
|
|
resize the image, and performs various improvements
|
|
such as checking the clarity of background, noise removal, contrast and saturation improvement, and white balance.
|
|
The module uses the <a href="http://opencv.willowgarage.com/wiki/">Intel OpenCV library</a>,
|
|
and detects human faces present in images using a cascade classifier trained by AdaBoost algorithm
|
|
(Paul Viola, Michael Jones: "Robust Real-time Object Detection". International Journal of Computer Vision, 2001).
|
|
</p>
|
|
|
|
<h3>Photographs averaging modules (<code>foto_mediana</code> and <code>foto_promedio</code>)</h3>
|
|
|
|
<p align="justify">
|
|
Programmed by <a href="http://es.linkedin.com/in/dcalandria">Daniel Jesús Calandria Hernández</a>.
|
|
</p>
|
|
|
|
<p align="justify">
|
|
The photographs averaging is performed by two separate programs
|
|
written in <a href="http://en.wikipedia.org/wiki/C%2B%2B">C++</a>.
|
|
These two programs respectively calculated the median and average
|
|
(pixel by pixel) of several photographs,
|
|
and are called by <code>swad</code> core to calculate the average photograph for each degree.
|
|
</p>
|
|
|
|
<h3>Chat server (<code>swad-ircd</code>)</h3>
|
|
|
|
<p align="justify">
|
|
Programmed in <a href="http://en.wikipedia.org/wiki/C%2B%2B">C++</a>
|
|
by <a href="http://es.linkedin.com/in/dcalandria">Daniel Jesús Calandria Hernández</a>.
|
|
</p>
|
|
|
|
<h3>Chat client (<code>swad_chat</code>)</h3>
|
|
|
|
<p align="justify">
|
|
Chat client is a <a href="http://en.wikipedia.org/wiki/Java_applet">Java applet</a>
|
|
programmed by <a href="http://es.linkedin.com/in/dcalandria">Daniel Jesús Calandria Hernández</a>.
|
|
</p>
|
|
|
|
<h3>Application for Android devices (SWADroid)</h3>
|
|
|
|
<a href="/swadroid/">Information about SWADroid</a>.
|
|
|
|
</td>
|
|
</tr>
|
|
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</body>
|
|
|
|
</html>
|