pgNotex è un software libero per macOS che consente di gestire molte note testuali in Markdown, attività e documenti sia su un singolo computer che all'interno di una rete servendosi del database open source PostgreSQL 16 o seguenti (https://www.postgresql.org).
Written by xinyimanposted in Lazarus 1.0 Ottobre 21, 2019, 05:31:00 pm21060 ViewsRating: 0 (0 Rates)Print
Nello sviluppo software, il test-driven development (abbreviato in TDD e tradotto con sviluppo guidato dai test) è un modello di sviluppo del software che prevede che la stesura dei test automatici avvenga prima di quella del software che deve essere sottoposto a test, e che lo sviluppo del software applicativo sia orientato esclusivamente all'obiettivo di passare i test automatici precedentemente predisposti.
Più in dettaglio, il TDD prevede la ripetizione di un breve ciclo di sviluppo in tre fasi, detto "ciclo TDD". Nella prima fase (detta "fase rossa"), il programmatore scrive un test automatico per la nuova funzione da sviluppare, che deve fallire in quanto la funzione non è stata ancora realizzata. Nella seconda fase (detta "fase verde"), il programmatore sviluppa la quantità minima di codice necessaria per passare il test. Nella terza fase (detta "fase grigia" o di refactoring), il programmatore esegue il refactoring del codice per adeguarlo a determinati standard di qualità.
Il TDD è una delle 12 regole base dell'XP, ma viene anche usato indipendentemente da questa metodologia; la sua applicazione è anche parte fondamentale dello sviluppo agile del software.
Lazarus ci mette a disposizione dei semplici strumenti per poter adottare il TDD. Per prima cosa dobbiamo installare il package che trovate nella cartella d'installazione di lazarus nella sottodirectory components/fpunit/ide/ di nome fpcunitide.lpk
Premessa: questa metodologia è utile per sviluppare le logiche dei software e non l'interfaccia grafica.
Written by nomorelogicposted in Lazarus 1.0 Settembre 12, 2019, 04:48:00 pm21655 ViewsRating: 0 (0 Rates)Print
Docker, brevemente
Docker è stato concepito come sistema di distribuzione di applicazioni, costruito sopra un sistema operativo virtualizzato. Il sistema di virtualizzazione di Docker è molto diverso dagli altri sistemi di virtualizzazione più conosciuti, quello che ci importa sapere per capirne il funzionamento - molto brevemente - è che è costituito da immagini e container. Una immagine consiste in un file fisico che contiene l'ambiente virtualizzato (OS + applicazione). Un container è una istanza in esecuzione in memoria di una certa immagine. Il container è destinato a mutare il suo contenuto rispetto all'immagine e si possono mandare in esecuzione più container contemporaneamente a partire dalla stessa immagine.
Non vado oltre in quanto la documentazione sulla rete è molto esaustiva.
Lavorare con Docker, Lazarus e Free Pascal
Visto quindi che abbiamo a che fare con un sistema di distribuzione di applicazioni, ci sono diversi ambiti in cui una immagine docker può essere utile: 1) immagine docker con all'interno lazarus e free pascal per compilare progetti per un determinato sistema operativo 2) diverse immagini docker, una per ogni versione del compilatore fpc, in modo da compilare lo stesso progetto con diverse versioni del compilatore 3) una immagine pronta per il cross-compile
Sicuramente un sistema di questo tipo potrà essere utile anche in altre occasioni, quindi ho provato a realizzarne una, per esperienza personale, contenete Lazarus 1.8.4 e Free Pascal 3.0.2. Il sistema operativo virtualizzato è Devuan (si tratta di un fork di Debian senza systemd). Quindi se volete fare delle prove... potete installare Docker e continuare nella lettura.
Prova su strada
La prima cosa da fare è scaricare l'immagine che ho preparato e questo si fa con il seguente comando:
docker run -i -t nomorelogic/lazimages:laz184_fpc302 /bin/bash
In questo modo avete lanciato un container in modalità interattiva (-i) ed inoltre avete agganciato la vostra console alla tty virtuale di Devuan (-t): esplorate i comandi linux e potete constatare che fpc è installato.
Per uscire potete usare la combinazione di tasti Ctrl+D
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b42dcb2fb18c nomorelogic/lazimages:laz184_fpc302 "/bin/bash" 8 seconds ago Exited (130) 3 seconds ago nostalgic_matsumoto
che significa: Il container in memoria: si chiama nostalgic_matsumoto, ha come id b42dcb2fb18c, è basato sull'immagine nomorelogic/lazimages:laz184_fpc302 e qualcuno è uscito 3 secondi fa...
Bene, distruggiamo ora il container: docker rm nostalgic_matsumoto
# lancio un nuovo container chiamato testlaz, monto la cartella locale dell'host /media/dati/dev/docker/dockerout in /var/opt del container (si, avete letto bene!) ed esco (-d = detach) docker run --name testlaz -v /media/dati/dev/docker/dockerout:/var/opt -i -d nomorelogic/lazimages:laz184_fpc302
# dall'host lancio un comando nel container: clono il repo del package paxjson docker exec -d testlaz sh -c "git clone https://github.com/paxtibi/paxjson.git /home/test/packages/paxjson >/var/opt/01_gitclone_paxjson.log 2>&1"
# clono il repo del package paxlogging docker exec -d testlaz sh -c "git clone https://github.com/paxtibi/paxlogging.git /home/test/packages/paxlogging >/var/opt/02_gitclone_paxlogging.log 2>&1"
# clono il repo del package paxhttp docker exec -d testlaz sh -c "git clone https://github.com/paxtibi/paxhttp.git /home/test/packages/paxhttp >/var/opt/03_gitclone_paxhttp.log 2>&1"
# compilo il package paxhttp e redirigo l'output nella cartella del container /var/opt docker exec -d testlaz sh -c "lazbuild --add-package /home/test/packages/paxhttp/pck/paxhttp_package.lpk >/var/opt/04_lazbuild_paxhttp.log 2>&1"
# compilo il package paxjson e redirigo l'output nella cartella del container /var/opt docker exec -d testlaz sh -c "lazbuild --add-package /home/test/packages/paxjson/pck/paxjson_package.lpk >/var/opt/05_lazbuild_paxjson.log 2>&1"
# compilo il package paxlogging e redirigo l'output nella cartella del container /var/opt docker exec -d testlaz sh -c "lazbuild --add-package /home/test/packages/paxlogging/pck/paxlogging_package.lpk >/var/opt/06_lazbuild_paxlogging.log 2>&1"
# clono il progetto jsonserver che utilizza i packages di cui sopra docker exec -d testlaz sh -c "git clone --branch=master https://github.com/paxtibi/jsonserver.git /home/test/paxtibi/jsonserver >/var/opt/07_gitclone_jsonserver.log 2>&1"
# compilo il progetto jsonserver e redirigo l'output nella cartella del container /var/opt docker exec -d testlaz sh -c "lazbuild /home/test/paxtibi/jsonserver/pck/jsonserver.lpi >/var/opt/08_lazbuild_jsonserver.log 2>&1"
# fermo il container e lo elimino dalla memoria docker stop testlaz && docker rm testlaz
# ora, nella cartella precedentemente montata nell'immagine avrete i log dello script sopra.
Questo blog non rappresenta una testata giornalistica poiché viene
aggiornato senza alcuna periodicità. Non può pertanto considerarsi un
prodotto editoriale ai sensi della legge n. 62/2001.
Questo sito utilizza cookie, anche di terze parti, per offriti servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina, cliccando su un link o proseguendo la navigazione in altra maniera, acconsenti all’uso dei cookie.