Skip to content

Commit

Permalink
Misc updates
Browse files Browse the repository at this point in the history
  • Loading branch information
alsonkemp committed Nov 17, 2008
1 parent daaafff commit c8b643d
Show file tree
Hide file tree
Showing 14 changed files with 338 additions and 24 deletions.
5 changes: 5 additions & 0 deletions .gitignore
@@ -0,0 +1,5 @@
dist
tmp/cache
tmp/compiled
*.hi
*.o
5 changes: 5 additions & 0 deletions App/Controllers/Tutorial.hs
@@ -0,0 +1,5 @@

index :: Controller ()
index = return ()


2 changes: 0 additions & 2 deletions App/Views/Develop/Index.hs
@@ -1,5 +1,3 @@
module Index (page) where

page :: View XML
page = <div>
<h2>! Windows</h2>
Expand Down
21 changes: 21 additions & 0 deletions App/Views/Home/About.hs
@@ -0,0 +1,21 @@
page = <div>
<h1>Features</h1>
<p>Turbinado gives you all of the benefits of coding in Haskell and adds:</p>
<ul class="standard-list">
<li> A fast HTTP server with static- and dynamic-content serving capabilities; </li>
<li> Views built using a simple HTML-like templating syntax; </li>
<li> Automagic recompilation of Controllers, Layouts and Views; </li>
<li> <span style="font-size:10px; font-style:italic">coming soon</span> A database <% anchorTag "http://en.wikipedia.org/wiki/Object-relational_mapping" "ORM" %> to make database interaction (especially with PostgreSQL) joyful; </li>
<li> A rich set of tags to make designing pages simpler;. </li>
</ul>

<h1>... On The Backs of Giants ... </h1>
<p>Turbinado wouldn't be possible without the original work of the following people:</p>
<ul class="standard-list">
<li> <% anchorTag "http://www.haskell.org/ghc" "The GHC Team" %> for something as insane as Haskell and GHC</li>
<li> <% anchorTag "http://www.cs.chalmers.se/~d00nibro/" "Niklas Broberg" %> for Haskell Server Pages, the HSP Runtime, Haskell Source Extensions and Haskell Regular Expressions</li>
<li> <% anchorTag "http://www.cse.unsw.edu.au/~dons/hs-plugins/" "Don Stewart" %> for hs-plugins </li>
<li> <% anchorTag "http://www.cs.chalmers.se/~bringert/projects.html" "Bjorn Bringert" %> for HTTP </li>
<li> <% anchorTag "http://software.complete.org/software/projects/show/hdbc" "John Goerzen" %> for Haskell Database Connectivity.</li>
</ul>
</div>
2 changes: 2 additions & 0 deletions App/Views/Home/Hello.hs
@@ -0,0 +1,2 @@
page :: View XML
page = return $ cdata $ "Hello World"
24 changes: 10 additions & 14 deletions App/Views/Home/Index.hs
@@ -1,17 +1,13 @@
module Index (page) where

import System.Time

page :: View XML
page = <div>
<h2>Turbinado?</h2>
<div style="float:right">
<img src="http://upload.wikimedia.org/wikipedia/en/thumb/0/0e/TurbinadoSugar.jpg/757px-TurbinadoSugar.jpg" width="300" />
</div>
<p> <a href="http://en.wikipedia.org/wiki/Turbinado">Turbinado</a> is that yummy, not-so-refined sugar.
Sounds like Haskell... Sounds like this framework...</p>
<p> Turbinado is also an easy-to-use web application framework for Haskell.</p>
<h1>Turbinado?</h1>
<div style="float:right">
<img src="http://upload.wikimedia.org/wikipedia/en/thumb/0/0e/TurbinadoSugar.jpg/757px-TurbinadoSugar.jpg" width="300" />
</div>
<p><a href="http://en.wikipedia.org/wiki/Turbinado">Turbinado</a> is that yummy, not-so-refined sugar.
Sounds like Haskell... Sounds like this framework...</p>
<p>Turbinado is also an easy-to-use web application framework for Haskell.</p>

<h2>Why</h2>
<p>Haskell has no easy-to-use web framework. Turbinado is an effort to build one by lazily stealing the best ideas from <% anchorTag "www.rubyonrails.org" "Ruby On Rails" %>, <% anchorTag "www.asp.net" "ASP.NET" %>, etc.</p>
</div>
<h1>Why?</h1>
<p>Haskell has no easy-to-use web framework. Turbinado is an effort to build one by lazily stealing the best ideas from <% anchorTag "www.rubyonrails.org" "Ruby On Rails" %>, <% anchorTag "www.asp.net" "ASP.NET" %>, etc.</p>
</div>
87 changes: 87 additions & 0 deletions App/Views/Home/Performance.hs
@@ -0,0 +1,87 @@
page :: View XML
page = <div>
<h1>Performance</h1>
<p>
Turbinado is written in Haskell, so has the speed of an application framework written in a compiled language. In order to test the relative performance, Turbinado is compared to Apache and Ruby On Rails.All tests were conducted with the following command against a 1.5GHz Pentium-M ThinkPad T40 running Debian Unstable.
</p>

<h1>Dynamic Content</h1>
<p>The following command was used for the static test:</p>
<pre>sudo ab -n 1000 -c 10 http://localhost/welcome/hello (or /Home/Hello)</pre>
<h2>Turbinado - (Simple) Dynamic Content - LogLevel ERROR</h2>
<pre>
Concurrency Level: 10
Time taken for tests: 1.316121 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 142000 bytes
HTML transferred: 11000 bytes
Requests per second: 759.81 [#/sec] (mean)
Time per request: 13.161 [ms] (mean)
Time per request: 1.316 [ms] (mean, across all concurrent requests)
Transfer rate: 104.85 [Kbytes/sec] received
</pre>
<h2>Ruby On Rails - Dynamic Content - Mongrel</h2>
<pre>
Concurrency Level: 10
Time taken for tests: 45.35484 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 470000 bytes
HTML transferred: 12000 bytes
Requests per second: 22.05 [#/sec] (mean)
Time per request: 453.548 [ms] (mean)
Time per request: 45.355 [ms] (mean, across all concurrent requests)
Transfer rate: 9.92 [Kbytes/sec] received
</pre>

<h1>Static Content</h1>
<p>The following command was used for the static test:</p>
<pre>sudo ab -n 10000 -c 10 http://localhost/images/1x1.gif</pre>
<h2>Turbinado - Static Content - LogLevel ERROR</h2>
<pre>
Concurrency Level: 10
Time taken for tests: 6.78643 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 1600000 bytes
HTML transferred: 350000 bytes
Requests per second: 1645.10 [#/sec] (mean)
Time per request: 6.079 [ms] (mean)
Time per request: 0.608 [ms] (mean, across all concurrent requests)
Transfer rate: 256.97 [Kbytes/sec] received
Concurrency Level: 10
</pre>

<h2>Apache - Static Content</h2>
<pre>
Concurrency Level: 10
Time taken for tests: 2.756945 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 2870000 bytes
HTML transferred: 350000 bytes
Requests per second: 3627.20 [#/sec] (mean)
Time per request: 2.757 [ms] (mean)
Time per request: 0.276 [ms] (mean, across all concurrent requests)
Transfer rate: 1016.34 [Kbytes/sec] received
</pre>
<h2>Rails/Mongrel - Static Content</h2>
<pre>
Concurrency Level: 10
Time taken for tests: 21.980972 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 2290000 bytes
HTML transferred: 350000 bytes
Requests per second: 454.94 [#/sec] (mean)
Time per request: 21.981 [ms] (mean)
Time per request: 2.198 [ms] (mean, across all concurrent requests)
` Transfer rate: 101.72 [Kbytes/sec] received
</pre>
</div>
9 changes: 9 additions & 0 deletions App/Views/Tutorial/Index.hs
@@ -0,0 +1,9 @@
page :: View XML
page = <div>
<h2>DANGER WILL ROBINSON</h2>
<p>Developers only at this point!</p>
<p>That said, we're looking for help. Interested? Check out the
<% anchorTag "/Develop" "Development" %> section. Grab the code, look it over and tell us
how you would improve it.
</p>
</div>
49 changes: 49 additions & 0 deletions static/css/jsddm.css
@@ -0,0 +1,49 @@
/* menu styles */
#jsddm
{ margin: 0;
padding: 0}

#jsddm li
{ float: left;
list-style: none;
width: 33%;
}

#jsddm li a
{ display: block;
background: #324143;
padding: 5px 12px;
text-decoration: none;
border-left: 1px solid white;
color: #EAFFED;
white-space: nowrap;
font-size: 14px;
}

#jsddm li a:hover
{ background: #24313C}

#jsddm li ul
{ margin: 0;
padding: 0;
position: absolute;
visibility: hidden;
border-bottom: 1px solid white;
width: 231px;
}

#jsddm li ul li
{ float: none;
display: inline}

#jsddm li ul li a
{
/* width: auto; */
border-right: 1px solid white;
background: #99b2b1;
color: #24313C;
font-size: 12px;
}

#jsddm li ul li a:hover
{ background: #a9c2c1}
41 changes: 41 additions & 0 deletions static/css/normalize.css
@@ -0,0 +1,41 @@
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td {
margin:0;
padding:0;
font-size: 12px;
}

table {
border-collapse:collapse;
border-spacing:0;
}

fieldset,img {
border:0;
}

address,caption,cite,code,dfn,em,strong,th,var {
font-style:normal;
font-weight:normal;
}

ol,ul {
list-style:none;
}

caption,th {
text-align:left;
}

h1,h2,h3,h4,h5,h6 {
font-size:100%;
font-weight:normal;
}

q:before,q:after {
content:'';
}

abbr,acronym {
border:0;
}

81 changes: 73 additions & 8 deletions static/css/turbinado.css
@@ -1,34 +1,99 @@

h1 {
margin-bottom: 0px;
padding: 10px;
font-size: 26px;
font-style: bold
padding-top: 10px;
font-weight: bold;
font-size: 16px;
}

h2 {
font-size: 1.1em;
font-weight: bold;
padding-top: 10px;
text-decoration: underline;
}

p {
margin-bottom: 5px;
margin-top : 5px;
font-size: 12px;
}

.wrapper {
width: 977px;
width: 850px;
margin: auto;
padding: 20px;
}

table.wrapper td {
border: 1px solid #bbf;
margin: 5px;
padding: 5px;
}

table.wrapper tr {
vertical-align: top;
}

.container {
margin-left: 160px;
}

div.footer {
text-align: center;
}

div.content-block {
margin: 0px;
min-height: 500px;
}

body {
margin: 0;
margin: 20px 0;
font-family: Tahoma, sans-serif;
background-color: #D4E0F2;
}

.title {
text-align: center;
margin: 0 10px;
}

.title h1 {
margin: 0px;
padding: 0px;
font-size: 26px;
font-weight: normal;
}

.title h2 {
padding: 0px;
margin: 0px;
text-decoration: none;
font-size: 14px;
}

#hr-footer {
clear: both;
}

.breadcrumbs {
font-size: 10px;
font-style: italic;
color: #888;
margin-top: 10px;
}

ul.standard-list {
list-style-position:inside;
list-style-type:disc;
margin-left:15px;
font-size: 12px;
}

.clear {
clear: both;
}
.clear-left {
clear: left;
}
.clear-right {
clear: right;
}
11 changes: 11 additions & 0 deletions static/js/jquery-1.2.6.pack.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions static/js/jquery.js
24 changes: 24 additions & 0 deletions static/js/jsddm.js
@@ -0,0 +1,24 @@
var timeout = 500;
var closetimer = 0;
var ddmenuitem = 0;

function jsddm_open()
{ jsddm_canceltimer();
jsddm_close();
ddmenuitem = $(this).find('ul').eq(0).css('visibility', 'visible');}

function jsddm_close()
{ if(ddmenuitem) ddmenuitem.css('visibility', 'hidden');}

function jsddm_timer()
{ closetimer = window.setTimeout(jsddm_close, timeout);}

function jsddm_canceltimer()
{ if(closetimer)
{ window.clearTimeout(closetimer);
closetimer = null;}}

$(document).ready(function()
{ $('#jsddm > li').bind('mouseover', jsddm_open);
$('#jsddm > li').bind('mouseout', jsddm_timer);});

0 comments on commit c8b643d

Please sign in to comment.