Python custom exceptions in C(++) extensions

Python is a nice scripting language, but it has the fame of being difficult to embed and interact with existing projects.

Until now, I have been able to embed it in the software I work on with pybind11 and Binder (half of my MS degree thesis is about that), I had some problems, but I was able to solve most of them. But recently I have experienced a problem that is quite uncommon on the Internet: declaring a new exception in a native (C++/C module) with some custom methods/properties.

The existing proposal

I quickly looked on the Internet for the problem. The Python C API makes creating an exception type possible with PyObject *PyErr_NewException(const char *name, PyObject *bases, PyObject *dict): the first parameter is the name of the exception, in the modulename.ExceptionName format, the second parameter is the base or bases of the new exception (can be a PyType, or a tuple of PyTypes), and a dictionary of custom members and methods for the new type.

However both the second and third parameter can be left to NULL: in this case the new type will inherit from PyExc_Exception and will not have customizations. This is the majority of the cases, and by a search on the CPython code I could not find any reference that could use as an example on how to use the dict parameter. … [Leggi il resto]

HP, EFI & Dual Boot

Contestualizzazione

Se vi interessa solo la soluzione del problema, guardate più in basso.

La settimana scorsa il portatile che girava per la casa, il Packard Bell di cui avevo già parlato, è morto, confermando la mia tesi sulla casa produttrice: meglio evitarla! Penso sia andato il BIOS, perché del monitor si accende solo la retroilluminazione, la ventola non gira e la CPU non scalda neanche.

Così abbiamo parlato un po’ in famiglia e abbiamo deciso di prenderne uno per sostituirlo.

Il budget era limitato, perché d’altronde non volevamo un computer potente, visto che ci serve solo per cose semplici come suite d’ufficio e navigare su internet, più alcune volte compiti un po’ più gravosi. Di sicuro un requisito non era una scheda grafica potente.

Abbiamo girato un po’ per i vari negozi della zona e la scelta è ricaduta su un HP 15D002SL.

Il computer è dotato di un Core i3 3110M (2,4GHz), 4GB di RAM, 500GB, scheda grafica incorporata, scheda ethernet e wireless della realtek, una USB 3.0 (e 2 2.0), Windows 8.1.

È costato 399€ e per quella cifra trovavo solo dei Pentium e dei Celeron, o altrimenti degli i3 della famiglia U, quindi con un clock più basso (tipo 1,66GHz), perciò come rapporto qualità-prezzo è stato il migliore che ho trovato. … [Leggi il resto]

Ulteriore, deludente sperimentazione sul DSL-504T

Ultimamente non ho molto tempo da dedicare ai miei progetti perché sono stato assorbito da altre attività. Il miller è fermo ormai da inizio novembre, anche se spero in dei progressi durante le festività, e dei progetti a computer non ne parliamo neanche. L’unica cosa cui ho dedicato un po’ di tempo domenica scorsa e un po’ ieri, è stato cercare di riciclare il DSL-504T di cui avevo già parlato per usarlo almeno come router insieme all’altro che ho.

Il mio chiodo fisso è quello di avere un ruoter con l’ottimo firmware libero OpenWRT per godere di funzionalità altrimenti possibili solo con router di livelli più alti. Tra queste ci sono IPv6, supportato nativamente dal mio provider, ma anche DNS interni, configurazioni avanzate di ogni servizio dovute all’accesso completo al router.

Tempo fa avevo già cercato di usarlo autonomamente, sfruttando quindi il modem ATM incluso nel dispositivo, senza tuttavia avere successo. Forse perché, come ho scoperto solo ieri, le informazioni del wiki di OpenWRT si applicano solo alla seconda generazione del 504T, la revisione C, mentre il mio è una versione A1. … [Leggi il resto]

DSL-504T: qualche appunto per la modifica

Circa di un mese fa avevo lavorato su un DSL-504T e un DWL-G700AP. Avevo anche messo tutte le informazioni sul secondo, mentre sul primo non avevo più scritto niente e vi avevo promesso che l’avrei fatto.

Purtroppo ho avuto molte cose da fare e certe cose me le trascino avanti per molto.

Crediti

Devo ringraziare innanzitutto chi contribuisce al wiki di OpenWRT, questo è un articolo derivato da loro. Quindi è rilasciato secondo licenza Creative Commons 3.0 By Sa. Gli utenti del wiki di OpenWRT sono, in ordine alfabetico, alessandro_s (guida DSL-524T), ath (guida 524T), awm1 (guida 524T), jow (pulizie varie), lorema (guida generica per i DSL-5xxT e DSL-6xxT), manty (guida 524T), netrolller3d (guida 524T), orca (guida 524T), ranma (guida 524T), scruffy (pulizia guida 524T), sutes (guida 504T). Spero di non aver dimenticato nessuno.

Come al solito: non mi prendo alcuna responsabilità sull’applicazione di quanto scritto. Neanche gli utenti sopra citati ne hanno alcuna. Ringrazio per la comprensione.

Vi linko anche le guide: … [Leggi il resto]

DSL-504T e DWL-G700AP

Recentemente ho avuto la possibilità di mettere le mani su questi vecchi dispositivi: un router ADSL (DSL-504T) e un Access Point 802.11G (DWL-G700AP).

Erano da mia sorella, ma visto che loro sono passati alla fibra Fastweb l’HAG ha rimpiazzato entrambi i dispositivi che sarebbero stati destinati alla discarica. Beh, grazie mille Pan 😊

DWL-G700AP

Questo access point è basato su un chip Realtek RTL8186 e ha risorse abbastanza limitate, soprattutto in termini di flash: solo 2MB.

Il firmware di default fa un po’ schifo, è un vecchio firmware D-Link con pochissime opzioni. Non ha neanche la client mode, anche se impostandolo in bridge è possibile usarlo come client.

Su internet ho trovato due firmware: Wive e il suo fork un po’ più aggiornato Wive-ng.

Io ho usato l’ultima versione dell’ultimo, la 0.6.1 preX basata su Linux 2.4.18.5.

Seguendo le indicazioni di questa pagina ho flashato Wive-ng passando prima per l’ultimo firmware ufficiale (avevo problemi con il flash altrimenti). … [Leggi il resto]