_main.html
6.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
<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>Latest news/changes.</h3>
You can see the latest news/changes
<a href="documentation.html#latest">here</a>.
<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: -->