frank's blog

Exploring Google AppEngine, Part 2

In my first experiment with Google's AppEngine, I dove straight in and started using CherryPy for development. This worked pretty well at first, but I eventually hit some issues due to lack of threading within AppEngine.

At that point, I decided to step back a bit and take a fresh look with a pure-WSGI approach. I had never used WSGI directly, so this was an interesting experiment. I definitely like the simplicity of pure-WSGI, but the question will be how much custom code I have to write versus using a prebuilt framework. (Don't get me wrong, I expect to return to CherryPy later, but I want to experiment at the lower level for now.)

You can follow the work in progress at boodebr.appspot.com
Written in WikklyText.

WikklyText 1.3.0 released

The major new feature in this release is the addition of a GUI "control center" for managing local wikis. Not only does this make WikklyText easier for new users, but it removes the tedium of starting/stopping wikis by hand. Especially useful when you run multiple local wikis. This should make WikklyText easier to integrate into environments such as PortableApps and U3.

This release also adds some new options for more "USB-friendly" usage. These options (on the admin page) allow you to turn off most disk writes, to help preserve USB life.

Changes:
  • New GUI "control center" for managing wikis. It is particularly useful if you are running several local wikis and don't want to keep starting/stopping them by hand. This is now the default command if you simply run wik.exe or wikgui.exe.
  • SiteTitle and SiteSubtitle are now rendered correctly.
  • Fixed handling of embedded Python code (<?py) so that globals are visible.
  • Added CherryPy to auto dependencies.
  • Allow turning on/off metadb usage in wiki admin page (will enable/disable logging.)
  • Allow turning on/off caching in wiki admin page.
  • Added --no-respawn command-line option to prevent wiki from doing an auto-restart on exit. (Primarily for use by wik and wikgui.)
  • Create rss.xml when running "wik render"
  • RSS feed now validates with no warnings at http://feedvalidator.org/

More information and downloads at wikklytext.com
Written in WikklyText.

boodebr library 1.2.0 released

This is a minor feature release with a few bugfixes as well.
  • boodebr.gui
    • Redid stock images as SVG.
    • Embed stock images via img2py for easier use with py2exe.
    • Synced fixed_colsorter.py with wxPython 2.8.7.1
  • boodebr.ion: Added support for pickling of complex numbers.
  • boodebr.config: Added file_exits() to fileconfig objects.
  • Moved test suite down one level in tree.

More information and downloads at the boodebr library wiki

WikklyText 1.2.2 released

This release of WikklyText updates the parser to handle wikis created with TiddlyWiki 2.4.0.

Read more and download at the WikklyText homepage


WikklyText 1.2.0 released

This release of WikklyText fixes a show-stopping bug in the XSS filter that caused almost all links to be removed. You almost certainly want to upgrade to this release. This release also added compatibility with CherryPy 3.1beta. Requests for "PageName" are now redirected to "PageName.html" (assuming "PageName" is a valid item). Other minor updates.

Read more and download at the WikklyText homepage


Running CherryPy based apps under Google's App Engine

Google's App Engine is a new application platform from Google that allows you to run custom Python code on Google's infrastructure. From their website:
Google App Engine lets you run your web applications on Google's infrastructure. App Engine applications are easy to build, easy to maintain, and easy to scale as your traffic and data storage needs grow. With App Engine, there are no servers to maintain: You just upload your application, and it's ready to serve your users.
Several websites (including Google) make the claim that App Engine is compatible with any WSGI framework, even mentioning CherryPy by name. Unfortunately, they don't give any examples using CherryPy, and it turns out that it doesn't quite work "out of the box". Fortunately it wasn't too tricky to get it working, so I documented the steps here.

Click through to read more ...
Written in WikklyText.

WikklyText 1.1 released

This is a minor update to the WikklyText stable series. Changes:

Changes:
  • Added RSS (2.0) feed to wiki. Feed is formatted to allow autodiscovery so you don't need to do anything. You can exclude items from the RSS feed by tagging them with norss.
  • Wiki will now serve any files found in folder files/ under your wiki root folder. See ServingFiles for more information.
  • API Change wikStore.py: Moved tag_add(), tag_del() and tag_toggle() into WikklyItem.
  • Always place absolute URLs in generated HTML. This was added to allow page links in the RSS feed to point to the correct location.
  • Stop putting domain names in parens next to links when rendering in safe mode. This was causing some aesthetic issues; it may be reenabled in a future release.
  • Stop performing reverse DNS lookups when showing logs. Far too slow.
  • Serve robots.txt (no restrictions currently; was added to prevent errors when crawlers request it).
  • Added more log reporting links on admin page.
  • Watch for buggy browsers that request favicon.ico instead of favicon.png as specified in <HEAD>

Downloads at the WikklyText homepage
Written in WikklyText.

WikklyText 1.0 released!

After a long period of stabilization, WikklyText 1.0 is finally available!

With this release, WikklyText now provides a full-blown wiki via the new wiki metatool "wik". This wiki is equally suitable for use as a "wiki on a stick" as well as a full multiuser wiki running behind Apache. The wiki is structured as closely as possible to a TiddlyWiki, continuing with the goal of providing compatibility with TiddlyWiki texts. And of course, the code is highly modular throughout to allow for easy reuse in your own wikitext rendering applications.

The Drupal plugin has also been updated for this stable release.

WikklyText now lives at its own domain, replacing the scattered pages here with a unified wiki. wikklytext.com runs on top of a WikklyText wiki so it serves as a good demonstration site as well.

Check it out at wikklytext.com

Written in WikklyText.

boodebr library 1.1 released

This is an update to the 1.x stable series.

This release adds several table-altering methods to sqliteQ. These routines provide replacements for functionality that is missing from SQLite's native ALTER TABLE implementation. This functionality is already available in boodebr.sql.sqlite_util but has now be brought up to the sqliteQ layer.

Added in this release are:
  • sqliteQ.add_table_column
  • sqliteQ.delete_table
  • sqliteQ.delete_table_columns
  • sqliteQ.get_table_columns
  • sqliteQ.modify_table_column
  • sqliteQ.rename_table

You can read more and download it from the boodebr library wiki
Written in WikklyText.

boodebr 1.0 now available

A new version of the boodebr library is now available. I've marked it as 1.0 to indicate that the APIs should be stable for a while now.

Changes in the release:

  • boodebr.sql.sqliteQ
    • New module for sharing SQLite connections across multiple threads.
  • boodebr.util.guid
    • A simple module for creating unique identifiers.
  • API change:
    • boodebr.sql.sqlite_util.get_tables() no longer returns special sqlite_* tables names. Pass special=True to get the previous behavior.
  • Other small bugfixes

You can read more and download it from the boodebr library wiki
Written in WikklyText.
Syndicate content