Roland's homepage

My random knot in the Web

Articles about programming

  1. Simple setup.py for python scripts

    Installing Python scripts (as opposed to modules) is a too involved using distutils/setuptools. Those do not take into account zipped archives and scripts using a GUI toolkit. The latter is a problem on ms-windows.

    So I wrote my own setup scripts to do things differently;

    • A simple setup script that works on single-file scripts.
    • A setup script that can wrap applications plus their custom module up in a zip-file and install it as a single self-contained file.
    • They should work on POSIX and ms-windows without root/administrator privileges.
    • And they should not require anything outside the python standard library.

    These scripts are now available on github as setup-py-script.

  2. Switching to SSH keys for github

    This article covers some aspects of using SSH keys with github that are left out of the original documentation on github.

    It assumes that you’ve been using HTTPS with a password for remote access to github.

  3. On the nature of GUI programs

    This is based on answers (1, 2) I gave on stackoverflow. That answer is specific to the tkinter toolkit that comes with Python. The principles apply to other GUI toolkits and languages as well but the terminology used (like mainloop and idle task) may be different.

  4. Command-line versus GUI program

    TL;DR

    When you are exploring a problem, in general first write a command-line program whenever possible.

    It will take less effort to write then a full-blown GUI.

    Introduction

    Recently I wrote a program to remove the protection from ms-excel files.

    The original version was written as a command-line program. Later I re-used the relevant code for a GUI program for use on ms-windows. This was mainly for the benefit of some colleagues who are not comfortable with using the command-line.

    In this article I want to contrast the two programs.

  5. How convenient is multithreading compared to multiprocessing?

    There are basically two ways in which one can make use of a modern CPU with multiple cores for computationally intensive work.

    1. Using multiple threads within one program (multithreading).
    2. Using multiple (single-threaded) programs that communicate (multiprocessing).

    In the first case, all data is implicitly shared. In the second case, data must be explicitly shared or communicated.

    The first option is often said to be more convenient. I would like to make the case that this usually makes the task more difficult, because of the need to manage all shared data.

  6. Including binary data in Python scripts

    Sometimes I need to use some binary data (e.g. a bitmap image) in a Python script. In a package, you can store this data portable in a data subdirectory of a modules using the package_data argument of setuptools.setup. This won’t work in a standalone script. You can of course make your script into a package, but here I want to show an alternative solution.


←  Page 1 Page 2 / 4 Page 3 →