Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Topics - Ikitt

Pagine: [1]
1
Progetti e script / Pyrana reborn - binding alle librerie FFMpeg
« il: Settembre 15, 2013, 14:02 »
Ciao,

Da qualche settimana ci sto dando dentro per riprendere, migliorare ed estendere un mio vecchio progetto che era rimasto stagnante, pyrana.

Pyrana (https://bitbucket.org/mojaves/pyrana) e` un package che offre accesso alle librerie FFMpeg (libavformat, libavcodec), pur restando semplice, pratico e pythonico.

Highlights:
* puro python
* supporta python3!! [1]
* si aggancia (con CFFI) direttamente alle librerie! Niente hack con subprocess!
* (prevista) interoperabilita` con PIL/Pillow, tkinter, SDL (o altri GUI toolkit) e (in futuro) numpy
* test coverage e documentazione sono una priorita`
* licenza: il codice in se e` ZLIB (circa uguale a MIT/X/BSD), ma senza FFMpeg si va poco lontano; FFMpeg a sua volta puo` essere GPL o LGPL a seconda di com'e` configurato

Attualmente siamo vicini alla prima milestone, ma siamo ancora in pienissima fase alpha. Il presente e` per raccogliere un po' di feedback iniziale e vedere se sinora mi sto scordando qualcosa di grosso.

Quindi, chi e` interessato si faccia avanti! Ogni commento o feedback e` benvenuto!

Happy hacking,

+++

[1] Per la precisione supporta SOLO python 3! Il supporto per python 2.7 e` previsto in futuro.

2
Progetti e script / ANN: pyskiplist 0.0.1
« il: Dicembre 11, 2012, 16:00 »
Ciao,

dopo qualche falsa partenza[1][2][3] sono felice di annunciare la prima estensione per CPython abbastanza decente da essere pubblicata : http://pypi.python.org/pypi/skiplist/0.0.1

si tratta di un'implementazione della struttura dati SkipList. Per un'introduzione, wikipedia ha una buona pagina: http://en.wikipedia.org/wiki/Skip_list

Attualmente il codice e` ancora poco piu` che una techdemo/preview/mockup dell'interfaccia che un progetto rifinito, per ora va bene per giocarci e poco altro. Per ora :)

Commenti benevenuti, anche se purtroppo tenendo conto dello stato di sviluppo temo ci sia poco da commentare :)
Have fun!

+++

[1] https://bitbucket.org/france/pyrana
[2] ad onor del vero assai piu` ambiziosa
[3] tuttavia congelata, non abbandonata!

3
ciao!

Sto scrivendo nel tempo libero un'estensione per CPython, pyrana (http://github.com/mojaves/pyrana).
Finalmente l'estensione comincia a prendere forma, e proprio per questo vorrei evitare di portarmi dietro errori strutturali evitabili. Chiedo: all'infuori della documentazione ufficiale (che sto leggendo e rileggendo), c'e` qualche documento che mi possa aiutare a scrivere un'estensione ben fatta e ben pythonica?
C'e` qualche estensione in particolare (nel senso ben fatta, ben integrata) che potrei studiare per prendere spunto e ispirazione?

Qualunque puntatore a best practices nello scrivere estensioni e` benvenuto :)

4
Altre tematiche / Unit test in pratica
« il: Febbraio 10, 2010, 20:12 »
Ciao a tutti,

ho ripreso il mio progetto di riscrivere/riprendere/forkare/etc. pymedia: http://github.com/mojaves/pyrana

Approssimando molto, Pymedia/Pyrana e` poco piu` di glue code tra le librerie di ffmpeg (ffmpeg.org) e python. Ok, non e` cosi` banale, ci sono problemi (interessanti) sotto ma non c'e` molta complessita algoritmica, voglio dire.

Vorrei approfittare di questo progetto per imparare e/o approfondire alcune tecniche di programmazione, primo fra tutti l'uso pervasivo di unit-testing (non sono ancora pronto per il TDD, spiego nel corso del post perche`) che a causa di un mix di pigrizia, cattive e vecchie abitudini non ho mai applicato bene in passati progetti.

Ora, sono convinto della bonta` e dell'utilita` degli unit test. Davvero. Sperimento quotidianamente sulla mia pelle quel che vuol dire non avere una buona test suite. Ma passare dagli esempi classici e facili (eg numeri romani, currency...) ai casi veri mi risulta difficile (a proposito: puntatori a libri sull'argomento sono molto graditi).

Prendiamo per esempio proprio pyrana, la cui API e` descritta in questa bozza: http://github.com/mojaves/pyrana/blob/master/doc/pyrana-API.py
Consideriamo l'oggetto Packet http://github.com/mojaves/pyrana/blob/master/tests/packettest.py

Packet e` immutabile e rappresenta (semplificando molto) un blob + attributi. Faccio poco altro che creare Packet ad hoc e testare che i campi abbiano i valori che mi aspetto, e che non siano modificabili a posteriori.
Pensate che i test siano significativi? Ho scordato o sbagliato qualcosa?

Sin qui comunque era facile. Prendiamo Demuxer. Demuxer si aggancia ad un file-like e crea Packet. (se manca contesto o dettagli o sto dando per scontate troppe cose ditemelo ed espando con piacere).
Come faccio a testare Demuxer in modo sensato senza scrivere Mock object di complessita` molto rilevante? ("Infatti non puoi" mi va bene come risposta, ma allora parliamo di come strutturare questi mock object, che ho dubbi di altro tipo).
Praticamente dovrei crearmi un mock object file-like che simula un AVI, o un MPEG, per capirsi. Non mi sembra molto gestibile, anche perche` testare il mock object stesso non sarebbe proprio banale.

[edit]
Non son sicurissimo della sezione scelta, correzioni ovviamente benvenute
[/edit]

5
Base / concatenazione stringhe in modo pythonico
« il: Luglio 27, 2007, 15:38 »
Ciao a tutti,

prendendo spunto da un thread precedente ( http://www.python-it.org/forum/index.php?topic=91.15 ) mi piacerebbe espandere l'argomento riguardo
alcuni idiomi pythonici sulla manipolazione delle stringhe.
Mi sto riferendo all'uso di join(); a quanto pare, e` un "errore" piuttosto comune abusare della concatenazione in virtu` del piu` pythonico
(e piu` efficiente, a quanto ne so!) join() + list comprehension/generator expression. In realta` non si tratta di un vero e proprio errore,
bensi` di uso sub-ottimale dello strumento.

Un link interessante, sebbene datato, e` questo:
http://www.skymind.com/~ocrow/python_string/

L'idioma  e` evidenziato in vari documenti, per esempio "diving into python":
http://www.diveintopython.org/native_data_types/joining_lists.html

Personalmente capisco che questo possa lasciare un po interdetti, ma sono convinto che dopo appena un pochino di pratica diventi subito
molto scorrevole e naturale :)

Pagine: [1]