Category Archives: Uncategorized

coverage

Coverage.py with PyScripter (& PythonPortable w/ PyPi)

During my Udacity Class CS258 I was introduced to Coverage.py. You can read up on Code Coverage on Wikipedia but I would also recommend the free course on the subject via Udacity.

To get Coverage.py running on your installation, the easiest way is using the console command easy_install. If you are using PythonPortable, you need to navigate to App\Scripts before executing the following command:

1
easy_install coverage

Easy, wasn’t it?

PyScripter is a neat IDE packaged with PythonPortable. It has a feature called External Tools (found under the menu Tools->Tools). To make a neat shortcut you can “Configure Tools..” under the same menu.

Here are two shortcuts, one for running coverage on one file, the other for constructing the HTML:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[Tools\Tool11\ExternalTool]
Caption=Coverage
Description=http://nedbatchelder.com/code/coverage/
ApplicationName=$[PythonDir-Short]Scripts\coverage.exe
Parameters=run $[ActiveDoc-Short] $[CmdLineArgs]
WorkingDirectory=$[ActiveDoc-Dir]
ShortCut=0
Context=tcActivePythonFile
SaveFiles=sfActive
ParseTraceback=TRUE
MessagesFormat=$[FileName] $[LineNumber]
ConsoleHidden=FALSE
 
[Tools\Tool12\ExternalTool]
Caption=Coverage HTML
Description=http://nedbatchelder.com/code/coverage/
ApplicationName=$[PythonDir-Short]Scripts\coverage.exe
Parameters=html
WorkingDirectory=$[ActiveDoc-Dir]
ShortCut=0
Context=tcActiveFile
ParseTraceback=TRUE
MessagesFormat=$[FileName] $[LineNumber]
ConsoleHidden=FALSE

Just pasting this inside PyScripter.ini does require some additional fiddling, so I recommend just using the gui. The new commands will appear inside Tools->Tools. The generated HTML will be inside the scripts working directory.

Now go do some coverage testing!

Import and update a CSV file into MySQL the right way

Making a script to check, update and add a set of records to MySQL can be quite daunting. And even when done, the script will be slow. Luckily, there is a way to do this with a simple and fast SQL command.

1
2
3
4
5
6
7
8
9
10
LOAD DATA LOCAL INFILE '/location/on/drive' -- the location of the CSV
REPLACE INTO TABLE mytable -- table to 'replace' in to
CHARACTER SET charset_name -- the character set the CSV is in
FIELDS TERMINATED BY ';' -- character between fields
OPTIONALLY ENCLOSED BY '"' -- character to enclose fields
ESCAPED BY '"' -- excape character
LINES TERMINATED BY '\n' -- end of line character
IGNORE 1 LINES; -- ignore n lines, useful if first line is a header
(id, name, location, @phonenumber) -- fields, use @ to name a field that does not corespond to a existing column 
SET contact=CONCAT('Phone number: ',@phonenumber) -- maybe use the new name to set a column value

The keyword LOCAL is used to specify, that the given file is relative to the client, from which the script was run, otherwise, the path relative to the server would be used.

REPLACE replaces the lines, that have a matching unique field. IGNORE ignores them.

Resources:

“The only system which is truly secure is one which is switched off and unplugged, locked in a titanium lined safe, buried in a concrete bunker, and is surrounded by nerve gas and very highly paid armed guards. Even then, I wouldn’t stake my life on it.”

redesign

Website Redesign

There comes a time, in the life of any webpage, that a redesign is in order. Partly because my old blog RawDev.net was in need of a clean up and I really didn’t want to push that brand any more.

This site will (hopefully) always be WordPress bleeding edge, starting with WordPress 3.5 and it’s default theme Twenty Twelve – to be released December 5th.

Just a bit of visual touches and voilà!