10 changed files with 415 additions and 556 deletions
-
37assets/html/_author.html
-
83assets/html/_documentation.html
-
43assets/html/_download.html
-
185assets/html/_main.html
-
81assets/html/author.html
-
1assets/html/author.html
-
127assets/html/documentation.html
-
1assets/html/documentation.html
-
118assets/html/download.html
-
1assets/html/download.html
-
43assets/html/layout.html
-
229assets/html/main.html
-
1assets/html/main.html
-
21assets/js/init.js
@ -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: --> |
|||
@ -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: --> |
|||
@ -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> |
|||
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> |
|||
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> |
|||
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: --> |
|||
@ -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> |
|||
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> |
|||
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> |
|||
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> |
|||
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> |
|||
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> |
|||
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> |
|||
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> |
|||
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> |
|||
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> |
|||
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> |
|||
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> |
|||
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> |
|||
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> |
|||
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: --> |
|||
@ -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 /> |
|||
© 2013 Georg Hopp - |
|||
<a href="mailto:georg@steffers.org">contact-email</a> |
|||
</div> |
|||
</div> |
|||
</body> |
|||
</html> |
|||
|
|||
<!-- vim: set ts=4 sw=4: --> |
|||
@ -0,0 +1 @@ |
|||
layout.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 /> |
|||
© 2013 Georg Hopp - |
|||
<a href="mailto:georg@steffers.org">contact-email</a> |
|||
</div> |
|||
</div> |
|||
</body> |
|||
</html> |
|||
|
|||
<!-- vim: set ts=4 sw=4: --> |
|||
@ -0,0 +1 @@ |
|||
layout.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> |
|||
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> |
|||
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> |
|||
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 /> |
|||
© 2013 Georg Hopp - |
|||
<a href="mailto:georg@steffers.org">contact-email</a> |
|||
</div> |
|||
</div> |
|||
</body> |
|||
</html> |
|||
|
|||
<!-- vim: set ts=4 sw=4: --> |
|||
@ -0,0 +1 @@ |
|||
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: --> |
|||
@ -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> |
|||
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> |
|||
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> |
|||
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> |
|||
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> |
|||
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> |
|||
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> |
|||
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> |
|||
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> |
|||
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> |
|||
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> |
|||
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> |
|||
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> |
|||
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> |
|||
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 /> |
|||
© 2013 Georg Hopp - |
|||
<a href="mailto:georg@steffers.org">contact-email</a> |
|||
</div> |
|||
</div> |
|||
</body> |
|||
</html> |
|||
|
|||
<!-- vim: set ts=4 sw=4: --> |
|||
@ -0,0 +1 @@ |
|||
layout.html |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue