You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
216 lines
7.5 KiB
216 lines
7.5 KiB
<?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/taskrambler.css">
|
|
</head>
|
|
|
|
<body>
|
|
<div class="main">
|
|
<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>
|
|
<div class="clear"></div>
|
|
</a>
|
|
</div>
|
|
|
|
<div id="menu">
|
|
<ul>
|
|
<li> </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><a href="/example.html">example</a></li>
|
|
<li> </li>
|
|
</ul>
|
|
<div class="clear"></div>
|
|
</div>
|
|
|
|
<div>
|
|
<img
|
|
style="float:left;margin-right:10px;"
|
|
src="/image/rambler-logo-small.jpg" />
|
|
|
|
<h1>Taskrambler</h1>
|
|
|
|
<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>
|
|
|
|
<br />
|
|
|
|
<h2>What is taskrambler</h2>
|
|
|
|
<h3>What will it be</h3>
|
|
|
|
<p>
|
|
The plan is to build a multi user task
|
|
management system inspired by
|
|
<a href="http://taskwarrior.org/projects/show/taskwarrio">
|
|
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>
|
|
|
|
<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>
|
|
|
|
<h2>What is it not</h2>
|
|
|
|
<p>
|
|
It is not another web server and it is not a
|
|
web application as u might be used to. It will not run under
|
|
any given web server.
|
|
</p>
|
|
|
|
<h2>History</h2>
|
|
|
|
<p>
|
|
About two year ago I stepped across the
|
|
<a href="http://en.wikipedia.org/wiki/C10k_problem">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/projects/show/taskwarrio">
|
|
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">
|
|
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>
|
|
</body>
|
|
</html>
|
|
|
|
<!-- vim: set ts=4 sw=4: -->
|