tkosiak sandbox

Tomasz Kosiak Sandbox

Below is my sandbox --tkosiak

Click here for more info on formatting rules or here to go to the home page


% hello Hello World

hello.c Tcl_HelloObjCmd

Hello_Init { Tcl_CtreateObjCmd (hello, Tcl_HelloObjCmd) }

hello.c => hello.so

tclsh load hello.so hello

---

Embeddable HTTP/1.1 web server and client library in pure Tcl

   https://wiki.tcl-lang.org/20887 - tothttpd = TheOneTclHTTPD (''the one to rule them all'')

Using Tcl you can construct simple web server in hundred lines of code so in this wiki there are many examples of such simple HTTP servers. TclHttpd and Wub are fairly complex web servers written in pure Tcl which aspire to be general purpose HTTP servers. There are also quite a few Apache modules which allow to build dynamic websites in Tcl. Finally there is AOLserver - developed in C, multithreaded, Tcl-enabled, high performance web server used for large scale, dynamic web sites.

The problem is that simple Tcl-only web servers are rather feature-crippled. They usually have no support for handling multipart/form-data POSTs, HTTP methods other then GET/HEAD/POST, international encodings, other auth schemes than basic, custom errors and multi-threading, Even established Tcl-only projects like TclHttpd and Wub doesn't support fully support HTTP/1.1 advanced mechanisms like persistent connections, request pipelining, chunked encoding, byte ranges, deflate & gzip transfer encodings, resource caching headers (e-tag, if-modified-since, expire). AOLserver on the other hand is overkill for embedding into application. So there is a need for another Tcl-only HTTP server suitable for easy web enabling application. Nowadays it has to support rich web applications (build with AJAX & Flex) that often require mentioned capabilities to achieve best user experience.

Therefore this summer (2008) I and my former student (who analyzed those problems in his last year master degree dissertation) plan to further enhance prototypes we've already build - unfortunately only as a part time assignment. We seek highly motivated student to join our team (full time) so we could direct to him/her implementation of selected problems. His role would be also to write automated test cases so in this process we expect to refine standard Tcl HTTP client library to fully support HTTP/1.1 (see http).

  • Requirements for students

Medium experience in web app development (for example with PHP), basic knowledge of Tcl & HTTP. Earlier HTTP/1.1 standard self studies. Being able to meet personally in the early stages of the project or communicate in polish is a big plus.

  • Benefit to student

Gaining very practical insight into HTTP/1.1 protocol internals and its usage in RIA, mastering advanced Tcl coding techniques, especially network programming.

  • Benefit to community

Unification of existing Tcl-only servers into HTTP/1.1 functional one. We will try to provide compatibility API for AOLserver ns_* so any application could be upsized to full blown web server in C if needed. Further Tcl-only HTTP/1.1 client library advancement (we plan to start with http2.6 from tclsoap project at [L1 ]


Cross-platform framework for database application GUI development based on Tcl/Tk + Tile *

   https://wiki.tcl-lang.org/20889

Tcl/Tk toolkit with Tile (theming support) allows building cross-platform GUI with native look & feel for MS Windows, Linux & Mac OS X. Recent TIP #308: Tcl Database Connectivity (TDBC) proposes standard SQL database API for Tcl. Selection of high quality tabular widgets combined with excellent retrospection capabilities of Tcl allowing to effortlessly create (like in Ruby on Rails) editing forms, provides basis for a framework for building database applications and their user interface GUI. Unlike in popular RAD (ex. Borland Delphi) we would like to build GUI by generating code not visually - as this is a recommended way to create GUI with Tcl/Tk.

First step in this project is to gain real life experience in cross platform Tk/Tile development by building simple time tracker like gtimelog (used further to track project progress). Next step is an attempt to port to Tcl/Tk/Tile selected fragments of quite complex business application UI build with RAD. This process should lead to choosing appropriate widgets, showing how to use and glue them together with database API.

Mentioned commercial database application will be provided by a mentor, who has full access to its source code and its primary authors.

  • Requirements for students

Experience with some kind of RAD, database bindings, good SQL knowledge, basic Tcl & Tk knowledge and high motivation. Being able to meet personally in the early stages of the project or communicate in polish is a big plus.

  • Benefit to student

Getting to know Tcl/Tk toolkit with native widget support by Tile extension (integrated in Tk as ttk::* namespace commands).

  • Benefit to community

Verification and consolidation of separate components needed to build very common kind of application.


Unified HTTP/1.1 server and client library in pure Tcl

   https://wiki.tcl-lang.org/20887 - tothttpd = TheOneTclHTTPD (''the one to rule them all'')
   Using Tcl you can construct simple web server in hundred lines of code so in this wiki there are dozens examples of such simple HTTP servers.
   TclHttpd and Wub are fairly complex web servers written in pure Tcl which aspire to be general purpose HTTP servers.
   There are quite a few Apache modules which allows
   Finally there is AOLserver high performance webserver developed in C with ...

   Tcl is used to enhaced application with scripting - it can be used to web enabled by sourcing pure Tcl HTTPd implementation.

   Elegent implementation for minimum feature complete applications server
   modular design
   extensible with modules to handle complexity

   There is missing simple - feature - crippled

   there are many possible tasks in that area for students
   - clarification - sistematization
   - writing test cases testing features and implementation
   -

   like db

 what is [AOLserver]
 what is [GD]
 what we've got and where
 where is a problem to be solved
 possible tasks

Consolidate best practices from existing custom-built Tcl web servers into one multiplatform (unix/windows/embedded) embeddable, multi-threaded application web server in pure Tcl - modular, supporting HTTP/1.1 mechanisms like pipelining, caching, streaming data. Something like Mongrel for Ruby or Simple for Java. wub and tclhttpd should be considered in the plan

Full HTTP/1.1 support in core http library (smaller part or counterpart of above tothttpd) This problem is already discussed in the wiki http. There is also an implementation http2.6 in tclsoap project at [L2 ]

  • Benefit to student

Experience in HTTP protocol internals, developing an Tcl API for very common problem, multi-threaded development in Tcl Practical insight into HTTP/1.1 protocol internals. Building API in Tcl to solve very common problem. Network programming.

  • Benefit to community

There will be one fully functional HTTP server to embed in Tcl application instead of many non functional ones. Web application written to it's API could be ported to AOLServer (fully blown web server developed in C) as we plan to provide with compatibility API.

Currently Tcl http library supports only HTTP/1.0. Supporting HTTP/1.1 out of the box will allow to easily use from Tcl advanced mechanism like streaming, chunk transfer encoding, persistent connection, etc.


Cross-platform framework for database application UI development based on Tcl/Tk/Tile *

   https://wiki.tcl-lang.org/20889

based cross platform framework for development of database application UI (like build with RAD's such as Borland Delphi)**

Tcl/Tk/Tile framework for building form-based database application as pioneered by Borland Delphi. Project aim is to compose sample application from available components, integrating it and showing how to use and glue them together to accomplish database UI application in Tcl with native look & feel.

  • Requirements for students

Medium experience in web app development (for example with PHP), basic knowledge of Tcl & HTTP. Earlier HTTP/1.1 standard self studies. Being able to meet personally in the early stages of the project or communicate in polish is a big plus.

  • Benefit to student

Getting to know Tcl/Tk toolkit with native widget support by Tile extension (integrated in Tk as ttk::* namespace).

  • Benefit to community

Consolidation of separate components needed to build very common kind of application.


THIS IS stolen TEMPLATE for GSoC 2008

HTTP Server in pure Tcl (the one to rule them all)

   [tothttpd] TheOneTclHTTPd
 what is [AOLserver]
 what is [GD]
 what we've got and where
 where is a problem to be solved
 possible tasks
  • Benefit to student
  • Benefit to community