Version 1

    This is something I threw together the other day for my own amusement. Other developers might find it an interesting idea (or a totally silly, over the top, thing to do).

     

    Our team mostly uses Windows 7 for local development, then the code is checked into svn for an automated build process on a Unix box. When developing features, customising code, and fixing bugs we're restarting our local dev environments a fair amount & I found it useful to know how long it'd be until the Jive app was available.

     

    We use a bunch of helper scripts to;

     

    • Stop the app server
    • Build a plugin & on success install it to the d/b directly (no messing with the plugin upload page.. useful when the app isn't running)
    • Build the whole app, and start the app if it doesn't error
    • Start the app server
    • Ping the welcome page when the build is up (which helps get everything loaded into memory & get soy compiled)

     

    I've recently added a bunch of extra commands to these helper scripts that write to a small XML file that records what's going on;

     

    build-progress.log

    <status><percent>100</percent><msg>Running</msg></status> 
    

     

    What we can then do is read this using another app.. in my case I like the Windows Sidebar gadgets on my 24" monitor, so I hacked together a quick gadget to surface the information from the XML file. It updates itself every 5 seconds. You could do something similar in other widget/gadget frameworks like Rainmeter.

     

    jive-dev-gadget.png

     

    Scripts

     

    set-progress.cmd -- I could/should have put this in set-progress.vbs, but didn't

    @echo off
    echo ^<status^>^<percent^>%1^</percent^>^<msg^>%2^</msg^>^</status^> > c:\jive\web\build-progress.log
    

     

    set-progress.vbs -- call set-progress.cmd but hide the command window that usually pops up

    Set oShell = CreateObject ("Wscript.Shell") 
    Dim strArgs
    strArgs = "cmd /c C:\jive\web\set-progress.cmd " + Wscript.Arguments(0) + " " + Wscript.Arguments(1)
    oShell.Run strArgs, 0, false
    

     

    Now you can call set-progress.vbs from your other scripts.. scatter them around liberally so that your widget knows what's going on. In our app start script (a .cmd file), it'd look like this..

     

    call c:\windows\system32\wscript.exe C:\jive\web\set-progress.vbs 0 Initialising
    

     

     

    LogExpert

     

    The stuff above gives you part of the picture.. you can now work out how far through the startup process the app server is by using a feature in LogExpert. We run LogExpert in the background to spool sbs.log. It has a feature called 'Highlighting & Triggers', so you can trigger an executable when a certain phrase is seen.. in our case, we can scroll through and find certain phrases spaced out by approx a minute (could be any amount of time).

     

    I set up about 9 phases to spot, each trigger the 'set-progress.vbs' script with a percentage + message...

     

    jive-dev-logex.png