Magento 2 - usare Transaction per salvare oggetti

Magento 2 - usare Transaction per salvare oggetti

Magento 2 è la nuova versione della piattaforma E-commerce che offre nuove e interessanti funzionalità. Tra queste Transaction per salvare oggetti. Una funzionalità poco conosciuta, che risulta però molto utile se si desidera garantire uno stato coerente nel database. Con una singola transazione è possibile combinare molti oggetti da salvare . In tal caso sono possibili due esiti:

Transazione riuscita garantisce che tutte le operazioni SQL all'interno della transazione siano eseguite senza problemi. Quindi i dati sono validi e vengono salvati in db.

Errore di transazione qualcosa è accaduto durante l'esecuzione della transazione. I sistemi di transazione forniscono una funzione chiamata rollback in cui i dati vengono ripristinati all’istante prima dell’inizio della transazione.

Magento 2 in alcuni casi  non sembra garantire un comportamento corretto nelle operazioni verso il db. Un esempio è il mal funzionamento con "rollback della transazione asimmetrica", ossia il salvataggio di default di tutte le informazione riguardati più tabelle. Tale malfunzionamento può essere risolto usando alternativamente:TransactionFactory o Custom SQL statement transaction

TransactionFactory

Il seguente codice mostra come utilizzare TransactionFactory in Magento 2: class MyClass { protected $saveTransaction; public function __construct \Magento\Framework\DB\TransactionFactory $transactionFactory ){ $this->saveTransaction = $transactionFactory->create(); } public function saveManyObjects() { ... $this->saveTransaction->addObject($order); $this->saveTransaction->addObject($customer); $this->saveTransaction->addObject($customObject); $this->saveTransaction->save(); } }

Se si esegue il metodo saveManyObjects () di questa classe, tutti gli oggetti specificati vengono salvati contemporaneamente. Per una transazione è necessario iniettare la classe \ Magento \ Framework \ DB \ TransactionFactory, che offre tutte le funzionalità necessarie. È possibile aggiungere oggetti da salvare con il metodo addObject (). Si possono aggiungere oggetti quali: ordini, clienti, prodotti o persino oggetti personalizzati. Tramite il metodo save() viene eseguito automaticamente un commit o una rollback in base all’esito dell’operazione garantendo uno stato coerente dei dati. 

Custom SQL statement transactions

Se si vuole usare istruzioni SQL custom utilizzando le transazioni è possibile riferirsi al seguente codice di esempio: $connection = $this->getConnection(); $connection->beginTransaction(); try { ... $connection->commit(); } catch (\Exception $e) { $connection->rollBack(); throw $e; }

È possibile chiamare il metodo beginTransaction () per inizializzare una transazione sull'oggetto “connection” dell'utente. In seguito si possono creare le istruzioni di inserimento o aggiornamento. Con commit () vengono rese persistenti le operazioni sul database. Se qualcosa non è andato a buon fine, il costrutto try catch chiamerà una transaction rollBack per ripristinare uno stato coerente del database e genererà un errore. In conclusione Magento 2 offre tutto il necessario per utilizzare le transazioni. Una transazione è uno strumento utile per rendere sicure le modifiche al database, impedendo di corrompere un database se qualcosa non ha avuto esito positivo.

Pubblicato il 12 ott 2018

Potrebbero interessarti

GOOGLE: ECCO LA CRITTOGRAFIA GENERATA DALL’INTELLIGENZA ARTIFICIALE

In futuro, le macchine potranno conservare e crittografare dei dati in maniera totalmente inaccessibile ai loro stessi programmatori? Tutto ciò potrebbe diventare realtà, stando a quanto hanno ottenuto i ricercatori di Big G coinvolti nei test di Google Brain, considerando come l’intelligenza artificiale sia stata in grado di creare un metodo crittografico. Per ottenere questo risultato particolarmente interessante, i ricercatori hanno utilizzato diversi sistemi di deep learning, la cui applicazione ha permesso di mettere in evidenza come l’AI possa creare da sola una soluzione crittografica in grado di evitare che i dati contenuti al suo interno possano essere letti da qualcuno. Per l’esperimento, sono state usate le tre intelligenze artificiali Alice, Bob ed Eve: queste ultime sono in grado di comunicare tra di loro e, ancora, le stesse hanno avuto uno speciale addestramento. Nel caso di Alice, infatti, è stato chiesto di spedire un messaggio segreto a Bob, unico proprietario di una chiave utile a decifrare il messaggio, e quindi potenzialmente l’unico in grado di comprendere quanto ricevuto da Alice. Eve, infine, ha ricevuto il compito di tentare di comprendere quanto presente nel messaggio recapitato a Bob, senza aver la chiave di lettura. Per quanto il test sia stato limitato ad un messaggio composto da 16 bit (impostati sui valori 0/1), è stato comunque interessante: per ben 15’000 volte, infatti, Alice e Bob sono riusciti a comunicare in modo sicuro, senza che Eve potesse decifrare le informazioni scambiate, grazie ad una soluzione crittografica che è diventata sempre più evoluta. Ma davvero in futuro le macchine potranno comunicare senza che si riesca a decifrare i loro messaggi? Nel futuro immediato, potremmo escludere questa ipotesi, tuttavia, il machine learning ha dimostrato ancora una volta come le macchine abbiano notevoli potenzialità, considerando come Alice abbia appreso in maniera autonoma – con l’incrementare dei tentativi – ad ottimizzare la soluzione crittografica per proteggere i messaggi, un compito portato a termine senza che fosse stata programmata con un codice ad hoc.  

WORDSMITH, IL SOFTWARE CHE AUTOGENERA ARTICOLI

I robot stanno diventando sempre più presenti nella nostra vita quotidiana...Chi avrebbe mai pensato che un software sarebbe stato in grado di sostituire le persone nella creazione di articoli? Ma oltre a rappresentare un aiuto reale, ora rischiano di diventare addirittura una minaccia. La compagnia tecnologica Automated Insights sta sviluppando il software Wordsmith Beta, che sarebbe in grado di scrivere articoli giornalistici al posto degli uomini. Detto in poche parole, la figura del giornalista potrebbe essere sostituita da un robot “scrittore”. Wordsmith è un programma che si basa sull’intelligenza artificiale per generare articoli o recensioni personalizzabili. L’idea alla base di Wordsmith è quella di creare articoli e recensioni, candidandosi ad un vero e proprio programma in grado di sostituire i giornalisti e gli scrittori. Ma qual è il principio di funzionamento di Wordsmith? L’azienda creatrice ha sfruttato i notevoli passi avanti realizzati dall’intelligenza artificiale. Basti pensare, non a caso, al supercomputer Watson di IBM, in grado di analizzare immense moli di dati e riuscire a imparare delle stesse. Di fatto, Wordsmith sembra essere una piattaforma “intelligente” in grado di generare articoli e recensioni personalizzabili. Tuttavia, entrando all’interno del sito della società creatrice, si scopre che Wordsmith deve aver alcuni dati di partenza. Grazie a fonti solide, il programma è in grado di autogenerare testi. Tuttavia, il secondo passaggio richiede sempre un intervento umano. Infatti, Wordsmith richiede un passaggio intermedio in cui personalizzare il testo e lo stile di scrittura. Se da un lato questo nuovo software che non può ancora competere con i giornalisti e gli scrittori, dall’altro rappresenta un importante strumento per automatizzare una parte del processo, soprattutto quando vi sono importanti moli di dati da analizzare. Possiamo dire con certezza che la creazione di un programma di scrittura completamente automatizzata in grado di sostituire l’uomo è ancora un’utopia. Scrivere un testo è un’azione complessa per un computer e riuscire ad emulare il linguaggio, lo stile di scrittura ed il pensiero sembra essere veramente impossibile, perché nessun robot può riversare su quello che scrive le proprie emozioni, trovandosi logicamente impossibilitato a provarle. Il robot finora è stato impiegato in articoli statistici e finanziari, ed ora la società sta pensando di allargare i propri orizzonti. I ricercatori della compagnia informatica Automated Insights, stanno sviluppando un modello per creare articoli molto più complessi e incentrati sulle più disparate tematiche di attualità, introducendo attraverso tecniche basate sull’ intelligenza artificiale un alto grado di personalizzazione nella stesura del testo, facendo percepire al lettore le sensazioni ed emozioni del “giornalista”. Secondo uno studio condotto dal ricercatore Christer Clerwall, le persone tenderebbero mediamente a non distinguere tra un articolo prodotto da Wodrsmith Beta e uno scritto invece da un giornalista in carne ed ossa, il che getta inquietanti dubbi sulla nostra assuefazione alla tecnologia e su quanto i versanti strettamente teorici finiranno per prevalere presto sulla nostra componente emotiva.  

Bug dei microprocessori

Meltdown e Spectre sono vulnerabilità hardware scoperte dai ricercatori di Project Zero di Google, rese pubbliche il 3 gennaio 2018 tramite rumors diffusi su social, web e programmi tv. Google spiega che malintenzionati possono sfruttare la "speculative execution". Questa consiste nell'esecuzione di frammenti di codice il cui risultato è utile solo quando l'esecuzione anticipata delle istruzioni utilizza meno spazio e meno tempo in fase di lettura della memoria di sistema. Tale procedura è utilizzata in maniera malevola per leggere dati sensibili nella memoria di sistema, come password, chiavi crittografiche o eventuali informazioni sensibili nei software “aperti”. Tali vulnerabilità interessano molte CPU e inoltre coinvolgono i dispositivi e i sistemi operativi da esse eseguiti. A seguito di alcuni aggiornamenti e di alcuni studi effettuati nell’ultimo periodo, le case produttrici stanno correndo ai ripari. Ad esempio, AMD afferma che i propri processori sono risultati vulnerabili a Spectre ma non a Meltdown. Le GPU Nvidia, invece, non sono colpite da Meltdown e Spectre ma comunque Nvidia ha aggiornato i propri driver per mitigare l'impatto dell'attacco Spectre. Apple ha confermato che le vulnerabilità interessano tutti i dispositivi presenti sul mercato che eseguono iOS e macOS ma sta rilasciando continui aggiornamenti per arginare il problema. Per verificare se il proprio sistema è colpito da tale bug si può seguire questa semplice guida: Aprire una finestra di PowerShell con i permessi di amministratore (tasto destro, Esegui come amministratore)  (clicca immagine per ingrandire) Digitare il comando "Install-Module SpeculationControl". Quando richiesto, confermare (digitando S e premendo Invio) l'utilizzo del provider NuGet e in un secondo momento dell'archivio non attendibile.  (clicca immagine per ingrandire) Digitare il comando "Get-ExecutionPolicy" per verificare se si hanno i permessi di esecuzione degli script esterni. Nel caso in cui non si abbiano i permessi, digitare "Set-ExecutionPolicy RemoteSigned"  (clicca immagine per ingrandire) Successivamente, si può avviare lo script vero e proprio, tramite i comandi "Import-Module SpeculationControl" e in seguito "Get-SpeculationControlSettings"  (clicca immagine per ingrandire) La voce "Windows OS support for branch target injection mitigation"  con valore True indica che si sono installate le patch Microsoft. Il valore False indica invece l'assenza dell'aggiornamento. "Hardware support for branch target injection mitigation" suggerisce l’installazione dell'aggiornamento del firmware (UEFI/BIOS) per proteggersi da Spectre. Per una protezione completa, quindi, basterà far riferimento al sito ufficiale del produttore del PC, dispositivo o scheda madre cercando un aggiornamento del BIOS che nel proprio "changelog" presenti un riferimento all'introduzione del "microcode Intel aggiornato a gennaio 2018". In alternativa è possibile affidarsi ad un’azienda informatica che sia in grado di garantire la protezione dell’integrità fisica (hardware) e logico-funzionale (software) dei sistemi coinvolti.