Torna indietro   Hardware Upgrade Forum > Software > Programmazione

MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
Abbiamo provato MSI PRO MAX EDGE AI+, un mini-PC professionale progettato per eseguire modelli di intelligenza artificiale in locale, senza dipendere dal cloud. Il sistema abbina il processore AMD Ryzen AI Max+ 395, 128 GB di memoria unificata e un telaio in alluminio da appena 4 litri, con l'obiettivo di offrire capacità di elaborazione elevate in un formato compatto.
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista
Il nuovo top di gamma vivo punta su un comparto fotografico particolarmente articolato, con un teleobiettivo da 200 megapixel e teleconvertitori esterni capaci di arrivare a 400 mm equivalenti. Lo abbiamo provato a Tenerife, mettendo alla prova fotocamere, prestazioni, autonomia e accessori. Ecco come si è comportato.
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
Un mondo affollato e vivo, personaggi destinati a sparire a fine test e nessuno a inseguire l'oggetto giusto. Beta e stress test di World of Warcraft: Forever hanno fatto emergere un roleplay spontaneo, tra danze a Goldshire e code ordinate ai PNG
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 26-03-2012, 10:31   #1
*andre*
Senior Member
 
Iscritto dal: Sep 2007
Messaggi: 1071
[Python] Implementare MVC

Ciao ragazzi!
da tempo non posto sul forum, pero adesso mi sorge un problema.
Sto cercando di realizzare un programma per gestire un semplice database SQLite e vorrei utilizzare il pattern MVC per la separazione tra logica e GUI del programma.

Mi sono documentato un pò e penso di aver capito abbastanza il funzionamento dell'arquitettura, ora il problema è como la implemento?

Cioè in termini di classi come posso dividere il progetto?
Avete qualche riferimento o suggerimento in particolare?

Conoscete qualche risorsa web dove ci sia un esempio completo di una piccola implementazione?

Grazie mille!!

PS: Sto utilizzando Python + PyQt4
__________________
Affari: ariakasneverborne, PanCar, Luk@°°°, Fabio310, kintaro oe, krike, fabry180384, dariox am2, chiadoz, windsofchange, dado1979, Rudyduca, aleforumista, Sheva77
*andre* è offline   Rispondi citando il messaggio o parte di esso
Old 26-03-2012, 11:25   #2
ingframin
Senior Member
 
L'Avatar di ingframin
 
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
Io sto facendo esattamente la stessa cosa ma con wxPython
Sto facendo un programma che serve a costruire la mappa di memoria di un integrato e a generare automaticamente sia il file vhdl che la documentazione word.
In pratica ho una classe che mi rappresenta il registro (ovvero i dati veri e propri) e una classe RegisterMap che mi serve per accedere ai dati presenti nei vari registri. Poi ho la classe MainWindow che e' la classe principale della gui fatta in wxPython e che al suo interno contiene un'istanza di RegisterMap.
Infine ho una classe Parser (anch'essa con un'istanza contenuta in MainWindow) che su comando da parte della gui si legge i dati contenuti in RegisterMap e costruisce i due file in output.
Parser si chiama cosi' perche' funziona facendo il parsing del file ottenuto dalla register map e costruisce il suo output facendo il parsing di altri due file che usa come template.
Invece di usare un database ho usato un file di testo al momento per lasciare la possibilita' di modificare manualmente il "malloppo" di registri ma il passaggio a sqlite e' gia' in cantiere.
Inoltre uno scambio di dati cosi' "limpido" mi da modo di poter cambiare le altre parti (RegisterMap e MainWindow) senza dover toccare il parser, basta che il file di testo in input al parser sia sempre strutturato correttamente (di fatto le prime prove le ho fatte scrivendolo a mano, cosi' ho potuto sviluppare le tre parti separatamente).
In ogni caso i consigli sono:
1) cerca di disaccoppiare piu' possibile i vari pezzetti
2) Stabilisci delle interfacce tra i moduli e rispetta quello che stabilisci
3) Non mischiare i pezzi (niente pezzi di gui nel modello dei dati o nel controller, niente accesso al database nel controller e nella gui, niente operazioni sui dati nel modello dei dati e nella gui)
4) implementa i vari metodi "standard" nel modello dei dati (__add__, __cmp__,__str__,ecc...), ti assicuro che il tuo codice ne guadagna moltissimo sia in leggibilita' che in correttezza.
5) Se hai dei container (tipo la mia RegisterMap) non vergognarti a implementare i metodi __iter__ e next() oppure ad estendere classi base di python (molto utile dict ad esempio).
6) Fai una buona pianificazione all'inizio altrimenti diventa difficile tenere traccia di cosa hai in memoria e ti trovi incasinato quando devi cambiare schermata nella gui e conservare lo stato del programma.

In bocca al lupo, se trovo il tempo di ripulirlo un po' ti mando il mio codice.
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli!
ingframin è offline   Rispondi citando il messaggio o parte di esso
Old 26-03-2012, 18:30   #3
*andre*
Senior Member
 
Iscritto dal: Sep 2007
Messaggi: 1071
grazie per la risposta

In più Python lo conosco da poco, quindi mi sto ancora abituando a pensare in the Python-Way

Comunque ho recuperato dalla biblioteca Head First Design Patterns e me lo sto leggendo per bene..

Guarda se non hai nulla in contrario inviami il tuo codice, così tra l'altro vedo un progetto in Python
(ti mando la mia mail in PM)
__________________
Affari: ariakasneverborne, PanCar, Luk@°°°, Fabio310, kintaro oe, krike, fabry180384, dariox am2, chiadoz, windsofchange, dado1979, Rudyduca, aleforumista, Sheva77
*andre* è offline   Rispondi citando il messaggio o parte di esso
Old 29-03-2012, 21:51   #4
*andre*
Senior Member
 
Iscritto dal: Sep 2007
Messaggi: 1071
ok, ho guardato per bene l'esempio di MVC del libro Head First..

Il disegno che deve avere una semplice applicazione l'ho implementato e funziona. Il mio dubbio è, per esempio, il caso in cui ho una interfaccia grafica complessa, con tante viste e non simili tra loro.

Il fatto che il Controller gestisca tutti gli input dell'utente rende quest'ultimo difficile da gestire per quanto riguarda l'aggiunta di ulteriori viste nel futuro..

Come posso codificare il caso in cui ho molte viste?

Una soluzione che mi è venuta in mente è creare un Controller per ogni vista. Costruisco la finestra e i layout con il Controller e la vista principali, poi ogni vista ottiene un riferimento al proprio Controller con un metodo statico del sub-Controller (pattern Singleton). Sempre implementando Singleton tutti i controller utilizzano lo stesso modello per gestire i dati da un solo punto.
Opinioni?

Con questa opzione se voglio aggiungere una vista basta che creo la classe che la controlla e il widget. Di classi esistenti devo solo modificare la vista principale (inevitabile per aggiungere il widget al layout) e il modello (inevitabile visto che lo uso come punto di accesso al DB)
__________________
Affari: ariakasneverborne, PanCar, Luk@°°°, Fabio310, kintaro oe, krike, fabry180384, dariox am2, chiadoz, windsofchange, dado1979, Rudyduca, aleforumista, Sheva77
*andre* è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB...
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista Recensione vivo X500 Pro Max: la fotografia mobi...
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
SpaceX sceglie Qualcomm per la rete 5G t...
AMD mette la freccia e si prepara allo s...
Sony Santa Monica posticipa God of War L...
Il telescopio spaziale Swift è ri...
Black Friday HONOR, prezzi giù fi...
AliExpress sfida Amazon sui prezzi: e-bi...
Gemini sotto accusa in Ungheria: per l'a...
Windows 11 può girare sulla NPU invece d...
MediaWorld diventa cinese: l'UE dice s&i...
Akamai potenzia il proprio cloud con due...
Steam, Valve cambia le regole: le revisi...
Canva licenzia (anche) per colpa dell'IA...
Axerta: l’IA traina la crescita delle te...
Galaxy A38, la batteria cresce ma il pre...
Notifica su Facebook: 'Effettuerai la mi...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:52.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v