Posts about python (old posts, page 45)

2013-04-10 10:23

Forget about "incognito mode", use a throwaway browser!

It's not because I wrote it (ok, yes, it's because I wrote it) but if you ever need a "clean" browser, without cookies etc for tests, you can do worse than using my Devicenzo like this:

rm -f ~/.config/ralsina/devicenzo.conf
curl | python

The first line removes all configuration, cookies, etc, you may have and the second one downloads the latest version (don't worry, it takes about 2 seconds) and launches it.

And voilá, a completely fresh out-of-the-box, webkit-based browser, with no previous history, cookies, or configuration, fairly feature-complete.


this requires you having python and PyQt already installed (which is why devicenzo itself is so tiny)

2013-04-08 10:14

Serbo-Croatian version of PyQt By Example!

A while ago I got an email from Anja Skrba asking me for permission to translate PyQt by Example into Serbo-Croatian.

And here it is all nice and translated. Lots of thanks to Anja for the hard work!

2013-04-05 21:54

Using rst2pdf in Different Ways

This was an idea by Dinu Gherman: you can use rst2pdf as a flowable generator for reportlab. Suppose you want to create, in a reportlab "story", a bunch of paragraphs, with emphasis, links, etc, and perhaps a table.

Using restructured text, it's something like this:

This is a paragraph. It has a link: and then some random text.

| A table     | With cells                |
|             |                           |
|             |                           |
|             |                           |
|             |                           |
| And inside                              |
| it some                                 |
| more text                               |
|                                         |
|                                         |

* And a list
* Just to make it harder

  + with a nested item here

It is, of course, perfectly possible to generate a bunch of reportlab (or rather platypus) flowables to represent all this. It will just mean some 75 lines of code. And if you change anything, then you have to edit code!

Or you can take advantage of rst2pdf and do this:

from docutils.core import publish_doctree
from rst2pdf.createpdf import RstToPdf
from reportlab.lib.units import cm
from reportlab.pdfgen.canvas import Canvas
from reportlab.platypus import Frame

rest_text = """

| A table     | With cells                |
|             |                           |
|             |                           |
|             |                           |
|             |                           |
| And inside                              |
| it some                                 |
| more text                               |
|                                         |
|                                         |

* And a list
* Just to make it harder

    + with a nested item here
r2p = RstToPdf()
doctree = publish_doctree(rest_text)
story = r2p.gen_elements(doctree)
canv = Canvas("platypus-rest.pdf")
f = Frame(2 * cm, 2 * cm, 16 * cm, 18 * cm, showBoundary=True)
f.addFromList(story, canv)

This produces this pdf. And of course editing it is rather easier than editing code. Since you are not using rst2pdf to do the final PDF generation, you can use these flowables in your own documents.

The bad news

Some things will not work, like headings, since rst2pdf creates flowables that do a ton of things like adding themselves on indexes and such. If you want a heading-like thing you can use classes:

.. class:: heading1

This will look like a heading

This is a regular paragraph.

Other random restructured text features may or may not work, like footnotes or citations.

2013-03-26 12:34

The Password Is Password (follow the link to see what I mean)

I think this is a first in the world of static site generators :-)

Now Nikola supports password-protected pages. How does it work?

If you add a password metadata field, then it will "Just Work". Like this:

I think this is a first in the world of static site generators :-) And the result is what you are seeing now.

How is it implemented? Nikola will encrypt the content using RC4, then wrap it in a <div>, and tack a form at the end that triggers Javascript code to decrypt it, and show it.

Is it secure? Well, I am not a cryptographer, so assume no. Specifically, while RC4 is considered secure, I am not discarding the beginning of they keystream, and the implementations I am using are not audited.

So, don't use this for anything that could get you in trouble. Have fun!

UPDATE Remember when I asked "Is it secure?" well, really, no it's not. It's not stupid in the sense that decoding what's written in the post will require at least a modicum of effort by whoever is so interested in reading what you are posting in your site, but people with crypto chops will crack it like a WEP-secured AP, mmmmkay? It's also stupidly easy to bruteforce this, so be smart about passwords.

OTOH, it's more secure than HTTP simple auth, since you can't sniff it (not that simple auth is secure) and it can hide a piece of the page, which using server-based auth can't.

I may do a more secure version eventually, but this is not it. Therefore, use for fun stuff, not to hide important/illegal stuff.

2013-03-22 11:01

Nikola Internals Doc


2013-03-15 00:39

Migrating from Wordpress to Nikola

Several people have migrated from Wordpress into Nikola, and here are some of their descriptions of the process:

In general, it seems to be working, but there's some work still to be done. Wordpress supports many different plugins and extensions which react to markup in their pages, and supporting that's almost an infinite task. Currently Nikola's importer handles a few of the more common. But if you try to import your blog and get less than ideal results, please file a bug and I'll do my best to fix it.

Usually the fixes are rather simple, it's just that I have never seen that specific thing ;-)

Have fun!

2013-03-12 20:09

Standalone Search in Nikola









<script type="text/javascript">
$(document).ready(function() {
        'mode': 'json',
        'showUrl': false





2013-03-10 20:23

Doing Your Homework, With Style









Sort it by these criteria:





from collections import defaultdict
d1 = defaultdict(list)


Contents © 2000-2018 Roberto Alsina