====== Developers Training ====== - Primi passi in Django (overview + tutorials): https://docs.djangoproject.com/en/2.2/#first-steps - Rifare i tutorial dentro un ''virtualenv''. Da creare con ''pipenv'': https://pipenv.readthedocs.io/en/latest/ - Creare un account su https://github.com e uno su https://gitlab.com - (Eventualmente generare e) caricare la propria cave pubblica tra le impostazioni del proprio profilo nelle 2 piattaforme - https://docs.gitlab.com/ee/ssh/README.html#types-of-ssh-keys-and-which-to-choose - Installare ''git'' e seguire i primi passi: https://docs.gitlab.com/ee/gitlab-basics/start-using-git.html - Leggere [[dev:git-forking-workflow|il workflow git]] adottato da beFair: - Leggere [[dev:release-management]] adottato da beFair; - Clonare il progetto ''simpleinvoice'': https://github.com/befair/simpleinvoice ===== Test di Gasista Felice ===== Test da effettuare con Gasista Felice, ma da specificare meglio: - Clonare Gasista Felice: https://github.com/befair/gasistafelice - Recarsi sul branch master-dj17 - approntare il sistema per Gasista Felice - installare Gasista Felice docs/dev/quickstart.md - lanciare i test di gasista felice - cercare di correggere uno che non va - fare una push sul proprio repository forkato - fare una pull request delle modifiche ====== Materiale di riferimento ====== === Vim === * [[training:vim|Plugin e comandi utili]] * [[coding:vimrc|.vimrc di Luca `fero`]] * http://lugscandiano.org/index.php/Sopravvivere_con_vim * http://robertames.com/files/vim-editing.html * [[http://lgcrsll.altervista.org/pgi/pgl/videoscrittura/Vim-II-LC.tar.lzma | Piccole Guide Linux: VIM II edizione]] === Django === * Scaricare ed installare Django * http://docs.djangoproject.com * Avviare un progetto ``django-admin startproject test_gasista`` * Avviare un'applicazione ``./manage.py startapp base`` * Installare l'applicazione (aggiungere in ``settings.py`` l'applicazione base alle INSTALLED_APPS) * Sincronizzare il db ``./manage.py syncdb`` * Gestione di una chiave ManyToManyField * Documentazione con docstrings * Shell interattiva ipython ``./manage.py shell`` * QuerySet * View, template, autenticazione * Prova di alcune batteries: databrowse, admin * Accenno a pinax Attualmente si sviluppa con Django 1.3, ma l'obiettivo è di passare alla 1.4 per i nuovi progetti. Per questo la reference punta alla 1.4. * [[https://docs.djangoproject.com/en/1.4/contents/|Manuale]] - sezione **Getting started** tutta con ordine * [[https://docs.djangoproject.com/en/dev/releases/1.4/|Release notes 1.4]] - come punto di riferimento per cose che non funzionano nella 1.3 Una delle principali differenze che si percepiranno è nella strutturazione della directory del progetto Django che ora vede il ''manage.py'' in una directory superiore alla directory del progetto (non allo stesso livello del settings.py). Per alcune pratiche di utilizzo di Django nei progetti beFair si faccia riferimento allo stile di programmazione beFair. === Git: sviluppo collaborativo === * Inizializzazione di un nuovo repository * Aggiornamento * Diff * Branch/Tag * Clonazione * Workflow: master, dev, dev-fero, dev-seldon, dev-dom * [[http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#repositories-and-branches|Git User Manual ('repositories e branches')]] - partire clonando il [[https://github.com/feroda/gasistafelice|repository di Gasista Felice]] * [[http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html|gittutorial]], presente agevolmente nei vostri sistemi con ''man gittutorial'' * [[http://www.kernel.org/pub/software/scm/git/docs/gittutorial-2.html|gittutorial-2]], presente agevolmente nei vostri sistemi con ''man gittutorial-2'' * [[http://www.kernel.org/pub/software/scm/git/docs/everyday.html|Everyday GIT with 20 Commands Or So]] * [[http://www.youtube.com/watch?v=4XpnKHJAok8|Video Linus Torvalds on Git]] * [[http://christoph.ruegg.name/blog/git-howto-revert-a-commit-already-pushed-to-a-remote-reposit.html|Come ribasare un branch interattivamente,senza modificare la history]] === Python === * Glossario Python https://docs.python.org/2/glossary.html * Stile di programmazione [[http://www.python.org/dev/peps/pep-0008/|PEP-8]] * Quacosa di python idiomatico... * [[http://lgiordani.com/blog/2014/08/20/python-3-oop-part-1-objects-and-types/|Python 3 OOP]] * [[http://www.fullstackpython.com/|Full Stack Python]] * [[http://nedbatchelder.com/text/names.html|Facts and myths about Python names and values]] === Testing === * [[ http://blog.fogcreek.com/refactoring-to-a-happier-development-team-interview-with-coraline-ada-ehmke/| ]] === IMPORTANTE === Se sei arrivato qui, vuol dire che "ti sei fatto un po' le ossa" e puoi leggere le linee guida che Luca ha definito per lo sviluppo di progetto python+Django. Non ti conviene leggere prima questa sezione perché dovresti avere confidenza con codice python e Django. * [[https://github.com/feroda/gasistafelice/blob/master/doc-dev/source/GUIDELINES.rst]] **da imparare "come il Padre Nostro"** (si diceva...) * I commit si fanno con l'indirizzo @befair.it [PER ORA CHI NON LO HA NON SI FERMI LI FACCIA CON IL SUO INDIRIZZO PERSONALE] === Sphinx === Lo strumento di documentazione utilizzato è [[http://sphinx.pocoo.org/|Sphinx]] e la sintassi [[http://sphinx.pocoo.org/rest.html|.rst]] TODO === Books === * https://github.com/vhf/free-programming-books === Appunti di VueJS e web UI=== 17/02/2024 e affini - ''v-use'': da guardare. Sembra che bindi variabili del modello con il localStorage; - nel localStorage si possono salvare le preferenze dell'utente, ma attenzione se l'utente utilizza l'applicazione su più dispositivi - em vs rem: nel secondo caso la proporzione è relativa al font-size nel tag '''' - concetto di variabile Reactive - griglia responsive con v-col e attributi sm e md - dal server ottengo il contenuto, ma il javascript può accedere a tutto il browser, url compreso - installare estensione Vue DevTools e usare il mirino per debuggare un componente Vue - ''props'': parametri che si possono passare a quella componente - ''structuredClone'' è una funzione Javascript recente per clonare un oggetto Javascript - Metodi array Javascript: - map: applica la modifica ad ogni elemento - every: tutti soddisfano - some: qualcuno soddisfa (per i flag) - filter: restituisce i record se true - find: trova - findLast: trova l'ultimo - findIndex: trova indice - findLastIndex: trova l'ultimo indice - Object.assign è come l'update in python. NOTA: Modifica il primo parametro e lo restituisce anche;