|
29
|
Special User Sections / N.A.N.Y. 2010 / NANY 2010 Final Release: Library Management System
|
on: December 25, 2009, 07:26:12 PM
|
| Application Name | Library Management System | | Version | 0.7.1 | | Short Description | A browser-based application for library management. | | Supported OSes | Anything that runs Python | | Web Page | | | Download Link | Download page | | System Requirements | - Minimum: Python 2.6, Web2Py 1.74.3, a database engine of your choice, and the Python adapter for that engine.
- Optional: A webserver with WSGI and SSL capabilities (such as Apache with mod_wsgi and mod_ssl) and lxml and python-amazon-product-api packages for Amazon support.
| | Version History | See here
| | Author | Jon Prater | DescriptionWhat it is: A tool for keeping track of your book collection and who you've loaned copies of your books to. What it isn't: A full-blown system for keeping track of the collection of a public library.  I wrote this to keep track of my personal library at home. It would take some modifying for it to be ready for use with a really HUGE collection in a public environment. Why I wrote it: Other tools didn't really seem to offer me the functionality my wife and I wanted for keeping track of our books. We wanted something nice and simple that could do certain things, and we didn't want a lot of fluff. So it's fairly minimalist. The features we need, and none of the ones we don't.  If you want a feature that's not there, feel free to email me about it via the discussion group. Features (Current and Planned)- Adding new books to the database
- Searching for books by keywords
- Updating/deleting existing books in the database
- Authentication and user management (disabled by default)
- Adding/updating/deleting information on who has been loaned a book
- Pull author/title by ISBN
Also See project page. ScreenshotsThe main page of the application... [attachthumb=1] The add book page... [attachthumb=2] The keyword search... [attachthumb=3] With results... [attachthumb=4] UsageInstallationDetailed installation instructions are here. Using the ApplicationSee Getting Started. UninstallationIf you're not using web2py other than for this, you can simply delete the web2py folder from your disk. Otherwise, the site admin page has an uninstall link to remove applications. Known IssuesThe lxml and python-amazon-product-api packages must be installed in Python to use the Amazon lookup features. Links to download them will be added to the project site.
|
|
|
|
|
30
|
Other Software / Announce Your Software/Service/Product / Library Management System 0.7 -- A tool for keeping track of your books!
|
on: December 25, 2009, 04:12:24 PM
|
What it is: A tool for keeping track of your book collection and who you've loaned copies of your books to. What it isn't: A full-blown system for keeping track of the collection of a public library.  I wrote this to keep track of my personal library at home. It would take some modifying for it to be ready for use with a really HUGE collection in a public environment. Why I wrote it: Other tools didn't really seem to offer me the functionality my wife and I wanted for keeping track of our books. We wanted something nice and simple that could do certain things, and we didn't want a lot of fluff. So it's fairly minimalist. The features we need, and none of the ones we don't.  If you want a feature that's not there, feel free to email me about it via the discussion group (see below). Current features include: - View/Edit/Delete existing books
- Add new books
- Search Amazon for book information when adding
- Track copies of books loaned to people
- Comment on each book or loan
- Works with almost any popular database engine
- Runs on Python using the web2py framework
Where to get it: Download it from the project website. Installation instructions are on the site. It's open-source hosted on GoogleCode.  There's also a project discussion group hosted on Google Groups, so please send any comments, suggestions, or issues there.
|
|
|
|
|
32
|
Special User Sections / N.A.N.Y. 2010 / Re: NANY 2010 RELEASE: FARR Plugin ProcessInfo
|
on: December 17, 2009, 04:21:53 AM
|
|
Yup. Although, if I type that executable's path directly into the search field, it shows the icon that Explorer displays for that executable w/out issue. Perhaps its simply that explorer is intelligent about assigning icons automatically, whereas FARR isn't and usually doesn't have to be.
|
|
|
|
|
33
|
Special User Sections / N.A.N.Y. 2010 / Re: NANY 2010 RELEASE: FARR Plugin ProcessInfo
|
on: December 16, 2009, 08:53:22 PM
|
|
OK, I have a suitable icon, but here's the problem: Not every process that I can get a path to has its own icon. I'm thinking maybe I should just go with the standard generic icon, unless someone knows how to check for the presence of icons built into executables programmatically... Any opinions either way?
|
|
|
|
|
35
|
Special User Sections / N.A.N.Y. 2010 / Re: NANY 2010 RELEASE: FARR Plugin ProcessInfo
|
on: December 16, 2009, 06:42:33 PM
|
a note, you can return the full path of the exe as the icon file and farr should load the appropriate icon from the file.. i think.
That's if the full path can be captured in the first place.  Not all processes appear to store their paths in a readable form in the WMI repository. (See here) And of course, for remote machines, if the process' executable doesn't exist in the same place on the local machine, I can't very well detect its icon, unless I can pull some gyrations with grabbing it from the executable on the remote machine itself.
|
|
|
|
|
36
|
Special User Sections / N.A.N.Y. 2010 / Re: NANY 2010 RELEASE: FARR Plugin ProcessInfo
|
on: December 16, 2009, 02:39:06 PM
|
Nice, this will come in handy! A couple of initial remarks: Am I supposed to press Space after 'pinfo'? I would've thought that just typing 'pinfo' would be enough... (I suppose this might be possible if I change an alias setting in FARR, though) And +sall modifier doesn't work, so I only get a short list and need to know what I'm looking for. support for +sall or an option to display full list of processes would be very nice. Great stuff!  Thanks, glad you like it.  Yes, you need a space after pinfo to make it start searching. I'll add support for +sall to my issue list.
|
|
|
|
|
38
|
Other Software / Developer's Corner / Re: Crazy Autohotkey issue
|
on: December 14, 2009, 07:30:41 PM
|
thanks for the explanation, could help others  kudos for sticking at it AND advising the fix  Thank you, mouser and Target.  The DllCall relied on having a valid hWnd for the script's window, but it was written based on the script running in the AutoHotkey interpreter, not compiled independently. The class was still the same, but the window title wouldn't match anymore because the title of a compiled Autohotkey script's window becomes the path to the executable (unless otherwise set).
|
|
|
|
|
40
|
Other Software / Developer's Corner / Re: Crazy Autohotkey issue
|
on: December 14, 2009, 11:41:12 AM
|
I've at least figured out where the problem is really happening. It's nothing to do with the compiler; it's the DllCall in LockDetect.ahk. That DllCall is failing repeatedly, and only in the compiled version. Calling DllCall( "GetLastError" ) returns the error code 87, which translates (according to this reference) into INVALID_PARAMETER. But I'm sure the parameters given in the DllCall are correct! If the parameters were wrong, why would they only be wrong in the compiled version, and not also in the original interpreted script? 
|
|
|
|
|
41
|
Other Software / Developer's Corner / Crazy Autohotkey issue
|
on: December 14, 2009, 09:58:55 AM
|
I've already posted about this over at the Autohotkey forum, but maybe someone here has seen this issue before. I'm having a post-compile issue with one of my scripts. I have the following two files: ld.ahk Formatted for AutoIt with the GeSHI Syntax Highlighter [ copy or print] #include LockDetect.ahk #NoTrayIcon IfNotExist, LD_Settings.ini IniWrite, ., LD_Settings .ini, logsettings , logpath IniRead, LogPath , LD_Settings .ini, logsettings , logpath FormatTime, StartTime,, MM-dd-yyyy_HH-mm-ss FormatTime, StartTime1,, MM-dd-yyyy HH-mm-ss PID : = DllCall("GetCurrentProcessId")LogFileName := A_ComputerName . "_" . StartTime . "_" . PID . ".txt" LogFile := LogPath . "\\" . LogFileName IfNotExist, %LogPath% FileCreateDir, %LogPath% FileAppend, Process %PID% started at %StartTime1% `n, %LogFile% notify_lock_unlock() on_lock() { FormatTime, TimeString,, MM-dd-yyyy HH-mm-ss FileAppend, Locked at %TimeString% `n, %LogFile% } on_unlock() { FormatTime, TimeString,, MM-dd-yyyy HH-mm-ss FileAppend, Unlocked at %TimeString% `n, %LogFile% }
And LockDetect.ahk, copied from notifylockunlock.ahk in http://www.autohotkey.com/forum/topic5359.html. Formatted for AutoIt with the GeSHI Syntax Highlighter [ copy or print] ;--------------------------------------------------------------- ;Notify Lock\Unlock ; This script monitors LockWorkstation calls ; ; If a change is detected it 'notifies' the calling script ; On Lock ; This script will call function "on_lock()" ; On Unlock ; This script will call fucntion "on_unlock()" ;IMPORTANT: The functions "on_lock()" and "on_unlock()" DO NOT ;exist in this script, they are to be created in the script that ;calls notify_lock_unlock() (presumably your main script) ;--------------------------------------------------------------- ;Re-purposed by WTO605 ;Last edited 2009-08-18 16:34 UTC ;--------------------------------------------------------------- ;Based on Winamp_Lock_Pause by MrInferno ;Posted: Fri Apr 21, 2006 4:49 am ;Source: http://www.autohotkey.com/forum/topic9384.html ;--------------------------------------------------------------- ;Winamp_Lock_Pause was/is based on script codes from "shimanov" ;Posted: Thu Sep 15, 2005 12:26 am ;Source: http://www.autohotkey.com/forum/viewtopic.php?t=5359 ;Posted: Tue Dec 06, 2005 9:14 pm ;Source: http://www.autohotkey.com/forum/viewtopic.php?t=6755 ;--------------------------------------------------------------- ;Initialize global constants WTS_SESSION_LOCK := 0x7 WTS_SESSION_UNLOCK := 0x8 NOTIFY_FOR_ALL_SESSIONS := 1 NOTIFY_FOR_THIS_SESSION := 0 WM_WTSSESSION_CHANGE := 0x02B1 notify_lock_unlock() { hw_ahk := FindWindowEx( 0, 0, "AutoHotkey", a_ScriptFullPath " - AutoHotkey v" a_AhkVersion ) OnMessage( WM_WTSSESSION_CHANGE, "Handle_WTSSESSION_CHANGE" ) success : = DllCall( "wtsapi32.dll\WTSRegisterSessionNotification", "uint", hw_ahk , "uint", NOTIFY_FOR_ALL_SESSIONS ) if( ErrorLevel OR ! success ) { success : = DllCall( "wtsapi32.dll\WTSUnRegisterSessionNotification", "uint", hw_ahk ) ;If DLL registration fails, wait 20 seconds and try again notify_lock_unlock() ;MsgBox, [WTSRegisterSessionNotification] failed: EL = %ErrorLevel% } } Handle_WTSSESSION_CHANGE( p_w, p_l, p_m, p_hw ) ; p_w = wParam ;Session state change event ; p_l = lParam ;Session ID ; p_m = Msg ;WM_WTSSESSION_CHANGE ; p_hw = hWnd ;Handle to Window { If ( p_w = WTS_SESSION_LOCK ) { on_lock() } Else If ( p_w = WTS_SESSION_UNLOCK ) { on_unlock() } } FindWindowEx( p_hw_parent, p_hw_child, p_class, p_title ) { return, DllCall( "FindWindowEx", "uint", p_hw_parent , "uint", p_hw_child , "str", p_class , "str", p_title ) }
If I run the above ld.ahk, which has #include lockdetect.ahk at the very top, everything runs perfectly. I get exactly the behavior I expect. However, if I compile ld.ahk, which operation should build the code in the included lockdetect.ahk into the resulting .exe file, when I run the .exe, I get the behavior expected up until the script should try to run code included from LockDetect.ahk. This also happens if I copy the code manually from LockDetect.ahk to the top of ld.ahk. I am using the very latest version of autohotkey, 1.0.48.05.
|
|
|
|
|
43
|
Special User Sections / N.A.N.Y. 2010 / Re: NANY 2010 TEASER: FARR Plugin ProcessInfo
|
on: December 12, 2009, 10:12:01 PM
|
you might consider trying to show and filter results live.. that is, always return to farr the complete list of processes running and let FARR filter them to match what user types. i'm just impressed that you are grabbing this info using javascript! that's pretty damn cool.
 Thanks. I'm using WMI to retrieve it (using the SWbemServices interface, which plays well with anything that works with COM; I could've written this plugin using python, too  ). And I already do filter results live, following a previous suggestion from you. Taking out the alias makes sense, though. For the detail display, though, I need the memo mode to display everything coherently.
|
|
|
|
|
45
|
Special User Sections / N.A.N.Y. 2010 / NANY 2010 Final Release: FARR Plugin ProcessInfo
|
on: December 11, 2009, 08:23:31 PM
|
| Application Name | FARR Plugin ProcessInfo | | Version | 1.1.0 | | Short Description | A FindAndRunRobot plugin to display information about running processes | | Supported OSes | Windows | | System Requirements | - FARR 2.80.02 recommended (for use with latest FScript)
| | Version History | - 1.1.0: Bug fixes by mouser, including showing all processes and adding icons for many processes that didn't show them
- 1.0.1: Bug fix
- 1.0.0: Release!
- 0.9.0: pre-release
- 0.0.5: alpha testing
| | Website: | | | Author | Jonathan Prater | | Screencast | | DescriptionI'm a sysadmin by trade, and I frequently need to get quick information about processes running on a machine (either my own or a remote PC). I also frequently need to know what files the process is actually using at any given moment. And I don't necessarily want to have to access the machine directly to get that information. While there are tools already available that give me that information, none of them are particularly fast about giving it to me, and none of the are as intutive as a FARR alias/plugin could be.  So I wrote this to be the fast, simple tool that I as an admin need to get information quickly. Current Features- It queries processes matching a specified partial name, then lists them out by name and ID. - Upon selection of a specific process, it returns more detailed information, including memory used, count of handles open, and paths to actual files. Planned Features- Access to processes on remote computers. ScreencastScreenshotsInitially, the user types in pinfo... [attachthumb=1] As the user enters more characters, ProcessInfo tightens down on the processes that match what was entered. The results list looks like this: [attachthumb=2] Upon selecting the desired target process, the user gets something like this: [attachthumb=3] Installing this application: Make sure you've got FARR installed  , then download the plugin file (attached below) and unpack it to a subdirectory of $FARR_Install\Plugins. Toggle FARR and type rplugins, then click OK. One of the plugins in your list should be ProcessInfo, with an alias of pinfo. Usage: pinfo processname. Hit enter on a process you want to see details for. To see all processes, just type pinfo followed by a space. To query remote computers: pinfo c=computername processname. Uninstalling: Toggle FARR and type rplugins. Before clicking OK, delete the directory $FARR_Install\Plugins\$ProcessInfo, where $ProcessInfo is the directory you originally unpacked the plugin to.[/list]
|
|
|
|
|
47
|
DonationCoder.com Software / FARR Plugins and Aliases / Re: Plugin searches but does not respond to triggers? Fscript 1.19
|
on: December 11, 2009, 01:00:37 PM
|
The normal mode (using FARR.emitResult()). When I'm ready to actually activate a result (to get detailed information) then I go to memo mode. Here's my code as it is now (it's producing a screwy error when I try to run this, something about "expected ';'") Formatted for Javascript with the GeSHI Syntax Highlighter [ copy or print] // plugin script : displayname="ProcessInfo"; versionstring="0.0.1"; releasedatestring="12/11/09"; author="jpprater"; updateurl=""; homepageurl=""; shortdescription="ProcessInfo"; longdescription="ProcessInfo"; advconfigstring="ProcessInfo"; readmestring="ProcessInfo"; iconfilename="processinfo.ico"; aliasstr="processinfo"; regexstr=""; regexfilterstr=""; scorestr="300"; // type UNKNOWN=0; FILE=1; FOLDER=2; ALIAS=3; URL=4; PLUGIN=5; CLIP=5; // Postprocessing IMMEDIATE_DISPLAY=0; ADDSCORE=1; MATCH_AGAINST_SEARCH=2; // search state STOPPED=0; SEARCHING=1; function onSearchBegin(querykey, explicit, queryraw, querynokeyword, modifier, triggermethod) { if(!explicit) { return; } if (queryraw.match(/get/)) { FARR.setState(querykey,SEARCHING); var wbemsrv = GetObject('winmgmts://./root/cimv2'); var p = queryraw.split(' ')[2]; var procs = wbemsrv.ExecQuery("select * from Win32_Process where ProcessID = " + p.toString()); var numer = new Enumerator(procs); if(numer.item()) { var proc += numer.item().Name + " - "; var ws = numer.item().WorkingSetSize/(1024*1024); proc += ws.toString() + " MB"; } FARR.setStrValue('launch', 'showmemo ' + proc); FARR.setState(querykey,STOPPED); } else { FARR.setState(querykey,SEARCHING); var wbemsrv = GetObject('winmgmts://./root/cimv2'); var p = queryraw.split(' ')[1]; var procs = wbemsrv.ExecQuery("select * from Win32_Process where Name LIKE '%" + p + "%'"); var proclist = ""; for (var numer = new Enumerator(procs); !numer.AtEnd; numer.moveNext()) { if(numer.item()) { FARR.emitResult(querykey, numer.item().Name + " - ID " + numer.item().ProcessID.toString(), "dosearch processinfo get " + numer.item().ProcessID, iconfilename, FILE, IMMEDIATE_DISPLAY, 1000); } else { break; } } FARR.setState(querykey,STOPPED); } }
Everything I've read thus far indicates that this ought to work perfectly except for the crazy error I've mentioned above.
|
|
|
|
|
48
|
DonationCoder.com Software / FARR Plugins and Aliases / Re: Plugin searches but does not respond to triggers? Fscript 1.19
|
on: December 11, 2009, 11:59:42 AM
|
SEARCHING:
FARR plugins usually search with every keypress, and the plugin is called after every keypress. The search function sent to your plugin actually also tells you whether user hit enter at the end of their search, in case you want to handle that event as the "trigger" specially. This is most useful when you have a plugin that is not showing a list of results but is showing some output in richtext or browser mode.
Yup, I got that far. TRIGGERING: Now if your plugin is returning standard results as the user types, like internet links, program or data file paths, clipboard text snippets, or internal search strings or aliases, etc., then your plugin never has to worry about triggering anything, since farr will do this automatically. FARR does call a special trigger function that lets you intercept it's normal "trigger" functionality, both for your own results and results generated by normal search and plugin.
Unless I'm mistaken in my reading of the documentation, that's onProcessTrigger(path, caption). I've implemented that, and FARR's not responding. SO: The bottom line is, if the result is returned as a normal FARR result, then you can either let FARR handle the launching of it, or you can catch it with the special trigger function. If the results are being displayed in richtext or browser mode, then there is no official "TRIGGERING" that gets called -- instead you can either respond to the press of enter by checking the flag in the search function that is called, OR there is a new keypress function that gets called when various keys are pressed that you could use instead (cant remember the names of these functions maybe fscript gurus can help here?)
So I might be better off taking out onProcessTrigger and implementing that behavior as part of my "search" function?
|
|
|
|
|