"The (innerHTML) property is read/write for all objects
except the following, for which it is read-only:
COL, COLGROUP, FRAMESET, HTML, STYLE, TABLE, TBODY,
TFOOT, THEAD, TITLE, TR."
(
source)
excellent ...
Intrigued by the way how
Growl reports about activities from various sources, we were looking for a similar way to report about response states, actions and general messages from an ajax laden webapp.
Daniel Mota nicely implemented Growl's Smoke and Bezel notification types in Javascript with the help of
mootols. Since
Prototype and
Script.aculo.us were already matters of fact and there was no way to accompany the two with mootols, we tryed to imitate Window.Growl with the Effects provided by Script.aculo.us.

More details and download on
http://blog.var.cc/static/growl/.
There are new css related courses by
monorom starting after autumn/fall holidays. Most noticeable: The `CSS template Werkstatt'-course which aims to examine the design of css driven and standardized templates for content management systems.
Links:
The `CSS template Werkstatt' Modernes Internetdesign mit CSS[via:
monorom]
Within the descriptions of
REST as an architectural style, every information or resource is supposed to be identifiable by a resource identifier or URI. Components in a RESTful environment can apply actions on resources according to their representational state. A webbrowser for example issues a request for a particular URI and retrieves the current state of the resource in xhtml. The browser is then capable of rendering the representation into a colorful webpage.
According to a purist view on REST, the distinctiveness of an URI implies its persistence independent of the action applied to it (/fileinfo/delete/myfile.txt and /fileinfo/add/myfile.txt are two different uris for the same resource). Moreover, REST relies on
HTTP with its variety of request methods and it is not counted to be RESTful, if all actions have to be performed via GET. Besides the argument of not using HTTP the way it should be, there are also reasons from the view of the implementation that i find more convincing: Parameters are a source for errors, lead to ambigous requests, have to be caught and evaluated etc.
The specifications suggest a mapping of HTTP request methods that refer to particular functions:
| Method |
Operation |
|
| GET |
retrieve |
retrieves the representaiton of a resource |
| HEAD |
|
retrieves metadata for the representation and the resource |
| POST |
create |
creates a resource |
| PUT |
update |
updates a resource |
| DELETE |
delete |
deletes a resource |
The perfect world is nice. However, in practice one hardly finds anything beyond GET and POST methods in relation to REST apis. GET for read-only requests and POST often combines requests to either create or update a resource. An interesting option would be to include reflection mechanisms into HEAD requests. Especially since REST doesn't has something like
the unnecessary complicated WSDL to describe a service. The ways to define REST apis seem to be quite versatile. Yahoo for example defines a single resource for the websearch api. Further adjustements on the result representation are all applicable via parameters.
References / more:
The following corrections were nescessary to get
Macromedias flash/javascript integration kit working with
mtasc:
Â
-------- JavaScriptProxy.as ---------
* Replace:
public function __resolve(functionName:String):Function
{
var f:Function = function()
{
arguments.splice(0,0, functionName);
var f:Function = call;
f.apply(this, arguments);
};
return f;
}
* With:
public function __resolve(functionName:String):Function
{
var f:Function = function()
{
arguments.splice(0,0, functionName);
var f:Function = this.call; //change!!
f.apply(this, arguments);
};
return f;
}
-------- JavaScriptSerializer.as ---------
* Replace:
/* Deserializes a Boolean Value */
public static function deserializeBoolean(s:String):String
{
return Boolean(s);
}
* With:
/* Deserializes a Boolean Value */
public static function deserializeBoolean(s:String):Boolean
{
return Boolean(s);
}
//////////////////////////////////////////
//mtasc has a more strict scope rule so
* Replace:
for(var x:Number = 0; x < len; x++)
{
arr.push(parseNode(children[x], o));
}
* With:
for(var childNo:Number = 0; childNo < len; childNo++)
{
arr.push(parseNode(children[childNo], o));
}
Via: osflash mailinglist

Subscribed to the new
open Swiss blogs list, an initiative kicked-off by
Chregu, that aims to provide an exhaustive list of swiss blogs that everyone can use. The idea is to have a central place where swiss blogs are listed to be used by services like aggregators etc. Blogug is not an
aggregator itself, but can provide lists of blogs as a resource for them. With the tagging feature, this becomes even more interesting. More info
here. Â
Support for ranges?
HEAD /test.mp3 HTTP/1.1
Host:blog.var.cc
HTTP/1.1 200 OK
Date: Sun, 18 Dec 2005 21:09:07 GMT
Server: Apache/2.0.54 (Ubuntu) PHP/5.1.1
Last-Modified: Sun, 18 Dec 2005 18:16:00 GMT
ETag: "a706f-bacb1-6d309800"
Accept-Ranges: bytes
Content-Length: 765105
Content-Type: audio/mpeg
Request the first 100 bytes
GET /test.mp3 HTTP/1.1
Host:blog.var.cc
Range: bytes=0-100
HTTP/1.1 206 Partial Content
Date: Sun, 18 Dec 2005 21:14:29 GMT
Server: Apache/2.0.54 (Ubuntu) PHP/5.1.1
Last-Modified: Sun, 18 Dec 2005 18:16:00 GMT
ETag: "a706f-bacb1-6d309800"
Accept-Ranges: bytes
Content-Length: 101
Content-Range: bytes 0-100/765105
Content-Type: audio/mpeg
Requests bytes 0-100 and 200-250. Response body contains range-parts delimited by a boundary.
GET /test.mp3 HTTP/1.1
Host:blog.var.cc
Range: bytes=0-100,200-250
HTTP/1.1 206 Partial Content
Date: Sun, 18 Dec 2005 21:16:15 GMT
Server: Apache/2.0.54 (Ubuntu) PHP/5.1.1
Last-Modified: Sun, 18 Dec 2005 18:16:00 GMT
ETag: "a706f-bacb1-6d309800"
Accept-Ranges: bytes
Content-Length: 351
Content-Type: multipart/byteranges; boundary=40838f1dda9586bd8
--40838f1dda9586bd8
Content-type: audio/mpeg
Content-range: bytes 0-100/765105
// binary data
--40838f1dda9586bd8
Content-type: audio/mpeg
Content-range: bytes 200-250/765105
// binary data
→ ftp://ftp.isi.edu/in-notes/rfc2616.txt

Monorom (of
www.intensivstation.ch fame) released three
new templates.
One of it includes an interesting `hack' using
dynamic properties. This is some Microsoft fancy to evaluate javascript code in order to dynamically set the value of certain css properties. A dynamic property can be assigned for instance to fake the min-width/min-height or max-width/max-height behaviour according to the window's scrollWidth/scrollHeight etc.
Monoroms templates are super comfortable to integrate and modify because of their readability and stability. They moreover suit well as skeletons for further elaborations towards individual designs. Â
This friday,
bitflux is organizing a
sprint for the
Bitflux CMS (BxCMS). Besides a little installation fest and introductions (e.g. how to write a plugin), it's the official release date of BxCMS 1.0RC1.
See
http://wiki.bitflux.org/BxCMS_Sprint_20040924 for details. There you can also add your name in case you're interested to attend.