Browse Source

now use one layout file and load even the content as a partial

release0.1.6
Georg Hopp 12 years ago
parent
commit
4825831ca7
  1. 37
      assets/html/_author.html
  2. 83
      assets/html/_documentation.html
  3. 43
      assets/html/_download.html
  4. 185
      assets/html/_main.html
  5. 81
      assets/html/author.html
  6. 1
      assets/html/author.html
  7. 127
      assets/html/documentation.html
  8. 1
      assets/html/documentation.html
  9. 118
      assets/html/download.html
  10. 1
      assets/html/download.html
  11. 43
      assets/html/layout.html
  12. 229
      assets/html/main.html
  13. 1
      assets/html/main.html
  14. 19
      assets/js/init.js

37
assets/html/_author.html

@ -0,0 +1,37 @@
<div class="border">
<div class="tl"></div>
<div class="t"></div>
<div class="tr"></div>
<div class="l"></div>
<div class="img">
<img src="/image/waldschrat.jpg" />
</div>
<div class="r"></div>
<div class="bl"></div>
<div class="b"></div>
<div class="br"></div>
</div>
<h1>The Author</h1>
<hr />
<p class="abstract">
<span class="author">[GH]</span>
Here you get a little background about me. Lern who I
am and what have I done in the past. Some of my interests
and so on. What exactly I do not know, I found it
always difficult to write something about myself.
</p>
<hr />
<br /><br /><br /><br /><br /><br />
<h2>Some words about me</h2>
<h3>The most important thing in my life. My family</h3>
<h2>Skill profile</h2>
<h2>Short vitae</h2>
<!-- vim: set ts=4 sw=4: -->

83
assets/html/_documentation.html

@ -0,0 +1,83 @@
<h1>Documentation</h1>
<hr />
<p class="abstract">
<span class="author">[GH]</span>
Currently this is more a changelog and a description
how to use new features.
</p>
<hr />
<h2>API Doc and test coverage</h2>
<p>
There is the beginning of a api doc and automated
test coverage reports.<br />
Both don't cover the complete code.<br />
There is the beginning of a generated API doc
<a href="/doc/index.html" target="_blank">here</a>.<br />
I also started automated regression tests. The
results can be seen
<a href="/coverage/index.html" target="_blank">here</a>.
</p>
<h2>Version 0.1.5</h2>
<p>
Another step on the way. Now basic signup is possible.
Users and credential will be stored in gdbm files.
If you do not want to signup you can use the pre created
guest account to login.<br/><br/>
<b>username:</b> guest<br/>
<b>password:</b> guest<br/><br/>
This user will not be available if you build your own
version of taskrambler.
</p>
<h3>Usage</h3>
<p>
The signup and login can be testes by clicking on
signup or login in the menu. A popup should occur where
you can enter the neccessary informations. Currently
no sanity checks are done on the given data. The key
is the email address.
</p>
<p>
If you signup with an email address
that is already in the database nothing happens, else
a user will be created and logged in.
</p>
<p>
After a successful login the first and surname will be
visible in the upper right corner of the page.
</p>
<p>
Additionally to the name you can find the version,
session id as well as an indicator how long the session
lasts. A session lasts 5 minutes since the last preocessed
request.
</p>
<h3>Changes</h3>
<p>
<ul>
<li>add storage layer</li>
<li>add signup functionality</li>
<ul>
<li>store users</li>
<li>store passwords as PBKDF2 sha512</li>
</ul>
<li>make login work agains ldap and stored passwords</li>
<li>add favicon</li>
<li>show version, session info and login info on each page</li>
</ul>
</p>
<!-- vim: set ts=4 sw=4: -->

43
assets/html/_download.html

@ -0,0 +1,43 @@
<h1>Download</h1>
<hr />
<p class="abstract">
<span class="author">[GH]</span>
Here you will find links to snapshots, but please
keep in might that this is an unfinished project.
It also will contain some links.
</p>
<hr />
<h2>Tarballs of my tags</h2>
<p>
&nbsp;&nbsp;Also this is not ready at all I create tags as
well as tarballs from revisions I think of as stable.
Currently the following tarballs are available:
</p>
<ul>
<li><a href="http://redmine.weird-web-workers.org/attachments/download/3/taskrambler-0.1.tar.gz">taskrambler-0.1</a></li>
<li><a href="http://redmine.weird-web-workers.org/attachments/download/6/taskrambler-0.1.3.tar.gz">taskrambler-0.1.3</a></li>
<li><a href="http://redmine.weird-web-workers.org/attachments/download/7/taskrambler-0.1.4.tar.gz">taskrambler-0.1.4</a></li>
<li><a href="http://redmine.weird-web-workers.org/attachments/download/11/taskrambler-0.1.5.tar.gz">taskrambler-0.1.5</a></li>
</ul>
<h2>Project page</h2>
<p>
&nbsp;&nbsp;Well, as taskrambler is not ready now I have to
use another project management system to organize this
project. The redmine project page for this project can be
found
<a href="http://redmine.weird-web-workers.org/projects/taskrambler" target="_blank">here</a>.
</p>
<h2>Github</h2>
&nbsp;&nbsp;There is also a github project of this.
The state of this is always the same as on the above
mentioned redmine. The github page can be found
<a href="https://github.com/georghopp/taskrambler" target="_blank">here</a>.
<!-- vim: set ts=4 sw=4: -->

185
assets/html/_main.html

@ -0,0 +1,185 @@
<img
style="float:left;margin-right:10px;"
src="/image/rambler-logo-small.jpg" />
<h1>Taskrambler</h1>
<hr />
<p class="abstract">
<span class="author">[GH]</span>
Welcome to taskrambler, the multi user task organization
and management tool. If you ever felt working together
is difficult and I really don't know whats going on at
the moment this tool might be helpful.
</p>
<hr />
<br />
<h2>What is taskrambler</h2>
<h3>What is it right now.</h3>
<p>
&nbsp;&nbsp;Right now this is a HTTP server. It's written from
scratch in C and serves as the user interface provider for
taskrambler.
</p>
<p>
&nbsp;&nbsp;It delivers static assets placed within the project
to webbrowsers. In fact the pages you read right now are
delivered by taskrambler.
</p>
<h3>What it will be</h3>
<p>
&nbsp;&nbsp;The plan is to build a multi user task
management system inspired by
<a
href="http://taskwarrior.org/"
target="_blank">
taskwarrior</a>.
Users may log in and manage the tasks they have to do.
Priorize them, assign them to projects, track the time
spend on a given task and so on.
Users also can configure who would be able to see what
task and users with special roles, like managers will
be able to see all tasks of their team, etc.
It will be possible to create reports about what work was
done etc.
</p>
<p>
&nbsp;&nbsp;Additionally this will serve as a ticket system.
Tasks may be assigned to users and all the things
possible with a ticket system will be possible here too.
So this will combine a personal task management tool with a
ticket system. Thus providing a getting things done tool
that will improve the productivity of all persons working
on a project.
</p>
<h2>What is it not</h2>
<p>
&nbsp;&nbsp;It is not another web server and it is not a
web application as you might be used to. It will not run
under any given web server. It brings it's own web server.
</p>
<h2>History</h2>
<p>
&nbsp;&nbsp;About two year ago I stepped across the
<a
href="http://en.wikipedia.org/wiki/C10k_problem"
target="_blank">
C10k</a>
problem. At that time, and in fact still right now, I don't
feel experienced enough to face this problem. But anyway,
it made me curious. Curious if I would be able to write an
HTTP server by my own. So I started work on this.
</p>
<p>
&nbsp;&nbsp;Well, there are enough web servers available
right now, even the C10k problem has brought up some really
interesting exemplars. So I decided not to build another
multi purpose HTTP server application but try another thing.
I wanted to build an application with a user interface
provided via browser. But what kind of application.
</p>
<p>
&nbsp;&nbsp;At the time I started this I was working for
bigpoint, which is one of the worlds biggest browser
game providers. So the first answer was obviously to build
a game. But soon I realized that it needs much to build
a game from scratch. You need a fascinating storyboard,
well ballancing and game design and so on. So I dropped this
idea again.
</p>
<p>
&nbsp;&nbsp;Approximately at the same time I started working
with
<a
href="http://taskwarrior.org/"
target="_blank">
taskwarrior</a> which I found a really useful tool.
I thought what about making something like this but for
multiple users. It is pretty clear to you what you need for
this and it would be cool to have something like this...
and with some luck there are others who might be interested in
such a thing too.
</p>
<p>
&nbsp;&nbsp;From the first day on the idea was to build
this completely in C. This primary decision for this was
that I really like the language and it had been a very long
time since I last had the opportunity to do something in that
language. Maybe another reason was that I had the hope to
compete with some of the other C10k webservers. And well,
taskrambler does not perform to bad at all. I did not
choose C++ also I like some of the object oriented
concepts because as most other OOP languages I think of
it as bloated with stuff I never need. Please don"t flame
on this, its only my opinion.
</p>
<p>
&nbsp;&nbsp;There are three things I really like in OOP,
objects and their definition via classes, interfaces
and inheritance. Why? Because if you ask me the whole topic
is about reusability and maintanability.
Obviously a well designed class is reusable. What makes
it well defined? It implements an interface an reacts in
a sane way on it. Well and inheritance is "sometimes" a good
way to prevent duplicate code.
</p>
<p>
&nbsp;&nbsp;Some time ago I had read a book called
<a
href="https://ritdml.rit.edu/handle/1850/8544"
target="_blank">
Object oriented programming with ANSI-C</a> from
Axel-Tobias Schreiner. It has some really interesting
concepts in it but goes a step to for for my taste with
creating an own code preprocessor and other things. Anyway
this was the base of a class like code framework which
consists mostly of preprocessor code and some C code lines,
as well as a code convention.
This gives me the possibility to implement a well defined
interface on various objects. I can extend and inject
classes. All objects have a constructor and a destructor and
if needed a clone constructor.
Finishing this was the first building block of taskrambler.
</p>
<p>
&nbsp;&nbsp;The next goal was a working HTTP server
implementation. I created a lot of classes, rewrote then
dropped them again and thought about other solutions.
At a given point I was really disappointed because on heave
load the servers droped connection and I was unable to
find out why. At that point I stopped working on this for
over a year. But now I started again added some new cool
code and think that the connection wasn"t been dropped by
taskrambler but by the kernel. Shortly before I loose
connection I found a kernel log entry that says that
syn flood protection was been activated.
</p>
<p>
&nbsp;&nbsp;Right now this is an HTTP server that is able
to handle cookies, speeks SSL and implements the subset
of the HTTP protocol that I need. It performs not to bad
but others should mesure this, I have no time for this.
I know a lot of places where optimization is still possible.
</p>
<!-- vim: set ts=4 sw=4: -->

81
assets/html/author.html

@ -1,81 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Taskrambler - Author</title>
<link rel="stylesheet" type="text/css" href="/style/common.css">
<link rel="stylesheet" type="text/css" href="/style/taskrambler.css" />
<link rel="shortcut icon" href="/favicon.ico?v=2" />
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/serverval.js"></script>
<script type="text/javascript" src="/js/session.js"></script>
<script type="text/javascript" src="/js/init.js"></script>
</head>
<body>
<div id="login" class="hide">
</div>
<div id="signup" class="hide">
</div>
<div id="page">
<div id="statusline">
</div>
<div id="title">
</div>
<div id="menu">
</div>
<div id="main">
<div class="border">
<div class="tl"></div>
<div class="t"></div>
<div class="tr"></div>
<div class="l"></div>
<div class="img">
<img src="/image/waldschrat.jpg" />
</div>
<div class="r"></div>
<div class="bl"></div>
<div class="b"></div>
<div class="br"></div>
</div>
<h1>The Author</h1>
<hr />
<p class="abstract">
<span class="author">[GH]</span>
Here you get a little background about me. Lern who I
am and what have I done in the past. Some of my interests
and so on. What exactly I do not know, I found it
always difficult to write something about myself.
</p>
<hr />
<br /><br /><br /><br /><br /><br />
<h2>Some words about me</h2>
<h3>The most important thing in my life. My family</h3>
<h2>Skill profile</h2>
<h2>Short vitae</h2>
</div>
<div id="footer">
<hr />
&copy; 2013 Georg Hopp -
<a href="mailto:georg@steffers.org">contact-email</a>
</div>
</div>
</body>
</html>
<!-- vim: set ts=4 sw=4: -->

1
assets/html/author.html

@ -0,0 +1 @@
layout.html

127
assets/html/documentation.html

@ -1,127 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Taskrambler - Documentation</title>
<link rel="stylesheet" type="text/css" href="/style/common.css">
<link rel="stylesheet" type="text/css" href="/style/taskrambler.css" />
<link rel="shortcut icon" href="/favicon.ico?v=2" />
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/serverval.js"></script>
<script type="text/javascript" src="/js/session.js"></script>
<script type="text/javascript" src="/js/init.js"></script>
</head>
<body>
<div id="login" class="hide">
</div>
<div id="signup" class="hide">
</div>
<div id="page">
<div id="statusline">
</div>
<div id="title">
</div>
<div id="menu">
</div>
<div id="main">
<h1>Documentation</h1>
<hr />
<p class="abstract">
<span class="author">[GH]</span>
Currently this is more a changelog and a description
how to use new features.
</p>
<hr />
<h2>API Doc and test coverage</h2>
<p>
There is the beginning of a api doc and automated
test coverage reports.<br />
Both don't cover the complete code.<br />
There is the beginning of a generated API doc
<a href="/doc/index.html" target="_blank">here</a>.<br />
I also started automated regression tests. The
results can be seen
<a href="/coverage/index.html" target="_blank">here</a>.
</p>
<h2>Version 0.1.5</h2>
<p>
Another step on the way. Now basic signup is possible.
Users and credential will be stored in gdbm files.
If you do not want to signup you can use the pre created
guest account to login.<br/><br/>
<b>username:</b> guest<br/>
<b>password:</b> guest<br/><br/>
This user will not be available if you build your own
version of taskrambler.
</p>
<h3>Usage</h3>
<p>
The signup and login can be testes by clicking on
signup or login in the menu. A popup should occur where
you can enter the neccessary informations. Currently
no sanity checks are done on the given data. The key
is the email address.
</p>
<p>
If you signup with an email address
that is already in the database nothing happens, else
a user will be created and logged in.
</p>
<p>
After a successful login the first and surname will be
visible in the upper right corner of the page.
</p>
<p>
Additionally to the name you can find the version,
session id as well as an indicator how long the session
lasts. A session lasts 5 minutes since the last preocessed
request.
</p>
<h3>Changes</h3>
<p>
<ul>
<li>add storage layer</li>
<li>add signup functionality</li>
<ul>
<li>store users</li>
<li>store passwords as PBKDF2 sha512</li>
</ul>
<li>make login work agains ldap and stored passwords</li>
<li>add favicon</li>
<li>show version, session info and login info on each page</li>
</ul>
</p>
</div>
<div id="footer">
<hr />
&copy; 2013 Georg Hopp -
<a href="mailto:georg@steffers.org">contact-email</a>
</div>
</div>
</body>
</html>
<!-- vim: set ts=4 sw=4: -->

1
assets/html/documentation.html

@ -0,0 +1 @@
layout.html

118
assets/html/download.html

@ -1,118 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Taskrambler - Download</title>
<link rel="stylesheet" type="text/css" href="/style/common.css">
<link rel="stylesheet" type="text/css" href="/style/taskrambler.css" />
<link rel="shortcut icon" href="/favicon.ico?v=2" />
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/serverval.js"></script>
<script type="text/javascript" src="/js/session.js"></script>
<script type="text/javascript" src="/js/init.js"></script>
</head>
<body>
<div id="login" class="hide">
</div>
<div id="signup" class="hide">
</div>
<div id="page">
<div id="statusline">
<ul>
<li>
<div id="sessinfo">
Session: <canvas width="100px" height="5px"></canvas>
</div>
</li>
<li id="user"></li>
<li id="version"></li>
</ul>
<br />Session ID: <span id="sessid"></span>
</div>
<div id="title">
<a href="/main.html">
<div class="left">
<h1>Task</h1>
</div>
<img src="/image/rambler-logo2-small.jpg" />
<div class="right">
<h1>Rambler</h1>
</div>
</a>
</div>
<div id="menu">
<ul>
<li class="menuedge"></li>
<li><a href="/author.html">author</a></li>
<li><a href="/documentation.html">documentation</a></li>
<li><a href="/download.html">download</a></li>
<li class="signup"><span>signup</span></li>
<li class="login"><span>login</span></li>
<li class="logout hide"><span>logout</span></li>
<li class="menuedge"></li>
<div></div>
</ul>
<div class="clear"></div>
</div>
<div id="main">
<h1>Download</h1>
<hr />
<p class="abstract">
<span class="author">[GH]</span>
Here you will find links to snapshots, but please
keep in might that this is an unfinished project.
It also will contain some links.
</p>
<hr />
<h2>Tarballs of my tags</h2>
<p>
&nbsp;&nbsp;Also this is not ready at all I create tags as
well as tarballs from revisions I think of as stable.
Currently the following tarballs are available:
</p>
<ul>
<li><a href="http://redmine.weird-web-workers.org/attachments/download/3/taskrambler-0.1.tar.gz">taskrambler-0.1</a></li>
<li><a href="http://redmine.weird-web-workers.org/attachments/download/6/taskrambler-0.1.3.tar.gz">taskrambler-0.1.3</a></li>
<li><a href="http://redmine.weird-web-workers.org/attachments/download/7/taskrambler-0.1.4.tar.gz">taskrambler-0.1.4</a></li>
<li><a href="http://redmine.weird-web-workers.org/attachments/download/11/taskrambler-0.1.5.tar.gz">taskrambler-0.1.5</a></li>
</ul>
<h2>Project page</h2>
<p>
&nbsp;&nbsp;Well, as taskrambler is not ready now I have to
use another project management system to organize this
project. The redmine project page for this project can be
found
<a href="http://redmine.weird-web-workers.org/projects/taskrambler" target="_blank">here</a>.
</p>
<h2>Github</h2>
&nbsp;&nbsp;There is also a github project of this.
The state of this is always the same as on the above
mentioned redmine. The github page can be found
<a href="https://github.com/georghopp/taskrambler" target="_blank">here</a>.
</div>
<div id="footer">
<hr />
&copy; 2013 Georg Hopp -
<a href="mailto:georg@steffers.org">contact-email</a>
</div>
</div>
</body>
</html>
<!-- vim: set ts=4 sw=4: -->

1
assets/html/download.html

@ -0,0 +1 @@
layout.html

43
assets/html/layout.html

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Taskrambler</title>
<link rel="stylesheet" type="text/css" href="/style/common.css">
<link rel="stylesheet" type="text/css" href="/style/taskrambler.css">
<link rel="shortcut icon" href="/favicon.ico?v=2" />
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/serverval.js"></script>
<script type="text/javascript" src="/js/session.js"></script>
<script type="text/javascript" src="/js/init.js"></script>
</head>
<body>
<div id="login" class="hide">
</div>
<div id="signup" class="hide">
</div>
<div id="page">
<div id="statusline">
</div>
<div id="title">
</div>
<div id="menu">
</div>
<div id="main">
</div>
<div id="footer">
</div>
</div>
</body>
</html>
<!-- vim: set ts=4 sw=4: -->

229
assets/html/main.html

@ -1,229 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Taskrambler</title>
<link rel="stylesheet" type="text/css" href="/style/common.css">
<link rel="stylesheet" type="text/css" href="/style/taskrambler.css">
<link rel="shortcut icon" href="/favicon.ico?v=2" />
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/serverval.js"></script>
<script type="text/javascript" src="/js/session.js"></script>
<script type="text/javascript" src="/js/init.js"></script>
</head>
<body>
<div id="login" class="hide">
</div>
<div id="signup" class="hide">
</div>
<div id="page">
<div id="statusline">
</div>
<div id="title">
</div>
<div id="menu">
</div>
<div id="main">
<img
style="float:left;margin-right:10px;"
src="/image/rambler-logo-small.jpg" />
<h1>Taskrambler</h1>
<hr />
<p class="abstract">
<span class="author">[GH]</span>
Welcome to taskrambler, the multi user task organization
and management tool. If you ever felt working together
is difficult and I really don't know whats going on at
the moment this tool might be helpful.
</p>
<hr />
<br />
<h2>What is taskrambler</h2>
<h3>What is it right now.</h3>
<p>
&nbsp;&nbsp;Right now this is a HTTP server. It's written from
scratch in C and serves as the user interface provider for
taskrambler.
</p>
<p>
&nbsp;&nbsp;It delivers static assets placed within the project
to webbrowsers. In fact the pages you read right now are
delivered by taskrambler.
</p>
<h3>What it will be</h3>
<p>
&nbsp;&nbsp;The plan is to build a multi user task
management system inspired by
<a
href="http://taskwarrior.org/"
target="_blank">
taskwarrior</a>.
Users may log in and manage the tasks they have to do.
Priorize them, assign them to projects, track the time
spend on a given task and so on.
Users also can configure who would be able to see what
task and users with special roles, like managers will
be able to see all tasks of their team, etc.
It will be possible to create reports about what work was
done etc.
</p>
<p>
&nbsp;&nbsp;Additionally this will serve as a ticket system.
Tasks may be assigned to users and all the things
possible with a ticket system will be possible here too.
So this will combine a personal task management tool with a
ticket system. Thus providing a getting things done tool
that will improve the productivity of all persons working
on a project.
</p>
<h2>What is it not</h2>
<p>
&nbsp;&nbsp;It is not another web server and it is not a
web application as you might be used to. It will not run
under any given web server. It brings it's own web server.
</p>
<h2>History</h2>
<p>
&nbsp;&nbsp;About two year ago I stepped across the
<a
href="http://en.wikipedia.org/wiki/C10k_problem"
target="_blank">
C10k</a>
problem. At that time, and in fact still right now, I don't
feel experienced enough to face this problem. But anyway,
it made me curious. Curious if I would be able to write an
HTTP server by my own. So I started work on this.
</p>
<p>
&nbsp;&nbsp;Well, there are enough web servers available
right now, even the C10k problem has brought up some really
interesting exemplars. So I decided not to build another
multi purpose HTTP server application but try another thing.
I wanted to build an application with a user interface
provided via browser. But what kind of application.
</p>
<p>
&nbsp;&nbsp;At the time I started this I was working for
bigpoint, which is one of the worlds biggest browser
game providers. So the first answer was obviously to build
a game. But soon I realized that it needs much to build
a game from scratch. You need a fascinating storyboard,
well ballancing and game design and so on. So I dropped this
idea again.
</p>
<p>
&nbsp;&nbsp;Approximately at the same time I started working
with
<a
href="http://taskwarrior.org/"
target="_blank">
taskwarrior</a> which I found a really useful tool.
I thought what about making something like this but for
multiple users. It is pretty clear to you what you need for
this and it would be cool to have something like this...
and with some luck there are others who might be interested in
such a thing too.
</p>
<p>
&nbsp;&nbsp;From the first day on the idea was to build
this completely in C. This primary decision for this was
that I really like the language and it had been a very long
time since I last had the opportunity to do something in that
language. Maybe another reason was that I had the hope to
compete with some of the other C10k webservers. And well,
taskrambler does not perform to bad at all. I did not
choose C++ also I like some of the object oriented
concepts because as most other OOP languages I think of
it as bloated with stuff I never need. Please don"t flame
on this, its only my opinion.
</p>
<p>
&nbsp;&nbsp;There are three things I really like in OOP,
objects and their definition via classes, interfaces
and inheritance. Why? Because if you ask me the whole topic
is about reusability and maintanability.
Obviously a well designed class is reusable. What makes
it well defined? It implements an interface an reacts in
a sane way on it. Well and inheritance is "sometimes" a good
way to prevent duplicate code.
</p>
<p>
&nbsp;&nbsp;Some time ago I had read a book called
<a
href="https://ritdml.rit.edu/handle/1850/8544"
target="_blank">
Object oriented programming with ANSI-C</a> from
Axel-Tobias Schreiner. It has some really interesting
concepts in it but goes a step to for for my taste with
creating an own code preprocessor and other things. Anyway
this was the base of a class like code framework which
consists mostly of preprocessor code and some C code lines,
as well as a code convention.
This gives me the possibility to implement a well defined
interface on various objects. I can extend and inject
classes. All objects have a constructor and a destructor and
if needed a clone constructor.
Finishing this was the first building block of taskrambler.
</p>
<p>
&nbsp;&nbsp;The next goal was a working HTTP server
implementation. I created a lot of classes, rewrote then
dropped them again and thought about other solutions.
At a given point I was really disappointed because on heave
load the servers droped connection and I was unable to
find out why. At that point I stopped working on this for
over a year. But now I started again added some new cool
code and think that the connection wasn"t been dropped by
taskrambler but by the kernel. Shortly before I loose
connection I found a kernel log entry that says that
syn flood protection was been activated.
</p>
<p>
&nbsp;&nbsp;Right now this is an HTTP server that is able
to handle cookies, speeks SSL and implements the subset
of the HTTP protocol that I need. It performs not to bad
but others should mesure this, I have no time for this.
I know a lot of places where optimization is still possible.
</p>
</div>
<div id="footer">
<hr />
&copy; 2013 Georg Hopp -
<a href="mailto:georg@steffers.org">contact-email</a>
</div>
</div>
</body>
</html>
<!-- vim: set ts=4 sw=4: -->

1
assets/html/main.html

@ -0,0 +1 @@
layout.html

19
assets/js/init.js

@ -2,9 +2,28 @@ var sess = null;
$(document).ready(function() {
var sval = new ServerVal("#randval");
var asset_exp = /^.*\/(.*)/;
var asset = '/_main.html';
var title_adds = {
'/_author.html' : ' - Author',
'/_documentation.html' : ' - Documentation',
'/_download.html' : ' - Download',
};
asset_exp.exec(this.location);
if ('' != RegExp.$1) {
asset = '/_' + RegExp.$1;
}
if (asset in title_adds) {
this.title += title_adds[asset];
}
$("#title").load("/_title.html");
$("#footer").load("/_footer.html");
$("#main").load(asset);
$("#menu").load("/_menu.html", function() {
$("div#menu ul li.signup").click(function() {

Loading…
Cancel
Save