northben's blog

How to send ICAP request with Python

I needed to send an ICAP request to a Symantec Antivirus server. Because ICAP is HTTP-like, but not quite HTTP, I could not use the wonderful requests library. So, here's what I did instead:

Working with Amazon S3 using boto: Multithreaded Edition!

Categories:

Let's say you need to update lots of keys in Amazon S3. If you have many objects in your S3 bucket, this can be quite slow. Of course, as a Python developer, you're using the nifty boto library. We can make update all of your keys much, much faster using multiple threads!

Note to self: Always version-lock your dependencies!

Categories:

Background:

I was setting up a development copy of a client website on my computer the other day, and after I had cloned the repo, set up the database, and pip installed Django and all of the other python packages needed for the website, I faced a strange Exception coming from deep inside of one of my dependencies. After an embarrasingly long period of troubleshooting, I realized that when I specified my python dependencies, I neglected to include the version requirements for each package.

Problem:

Python coverage.py for total newbies (me!)

Categories:

I wanted to provide a super simple example of using Ned Batchelder's coverage.py for testing my Python unittest coverage. The thing that tripped me up at first is that I needed to call coverage.py in such a way to exercise Python's unittest framework. For example:

coverage run -m unittest discover;
coverage report -m;

Mocking datetime in Python 2

Categories:

Mocking dates is a well-known PITA with Python. But here's a quick explanation of how I worked around this deficiency.


Step 1: Add the date as a property to the production class. I had to refactor my code, and I suspect you will too. Before mocking this date, I was calling date.today() from the build_widget method.

from datetime import date

class WidgetWorker(object):
    date = date.today()
    def build_widget(self):
        return {'date_created': self.date}

Solution to Windows 7 Manage Wireless Network list is empty

If your list of wireless networks looks like this:Screenshot of Windows 7 Control Panel Manage Wireless Networks list is empty

 

I'll show you how to fix it.

How to Test Assertions are Raised or Handled in Python

When unit testing Python, how can one assert that exceptions are raised or handled? Here's how we do it:

First, here is the code we want to test:

def division_raises():
    print(10/0)


def division_doesnt_raise():
    try:
        print(10/0)
    except ZeroDivisionError:
        return None

And here is how we test the code above:

As a Software Developer...

As a Software Developer now, I suppose I'll start blogging about my crafty programming exploits. I work mainly with .NET at this point.


OH CRAP! This is another "Welcome to my blog" posts! fuuuuu

How to download a webpage with PowerShell

$a = new-object net.webclient;

$a.DownloadString("http://www.whattimeisit.com/")


Bam!

Working with IIS logs

Categories:

If you live in the unfortunate world of IIS6, or perhaps you're just masochistic, you're going to use ADSI in PowerShell to work with IIS. A friend of mine showed me a handy way to delete log files older than a certain date using an ADSI query in PowerShell.

Pages

Subscribe to RSS - northben's blog