Design patterns

Introduction to design patterns Introduzione personale 🟩 I design patterns sono simili a dei plug and play, ossia delle soluzioni che hanno funzionato bene in passato e che sono ora riutilizzati. Solitamente dovrebbe essere una abilità implicita, cioè un buon programmatore è in grado di fare senza pensarci, dovrebbe essere automatico. Infatti quando uno fa il design non lo fa esplitamente seguendo un certo modello, ma farlo solitamente risulta utile per guidare il processo. ...

4 min Â· Xuanqiang 'Angelo' Huang

Dipolo elettrico

Questo problema è stato trattato in modo un po’ più semplificato (nel caso in cui la carica era esattamente a metà in Campo elettrico#Dipolo elettrico). Questo problema è stato storico, utilizzato per analizzare l’atomo. Potenziale del dipolo elettrico 🟩– $$ V(P) = V_{r^{+}} + V_{r^{-}} = \frac{q}{4\pi\varepsilon_{0}}\left( \frac{1}{r^{+}} - \frac{1}{r^{-}} \right) $$$$ r^{+} - r^{-} = -a \cos \theta $$$$ \left( \frac{1}{r^{+}} - \frac{1}{r^{-}} \right) = \frac{a\cos \theta}{r^{2}} $$$$ V(P) = \frac{1}{4\pi\varepsilon_{0}}\frac{qa\cos \theta}{r^{2}} = \frac{1}{4\pi\varepsilon_{0}}\frac{P\cos \theta}{r^{2}} = \frac{1}{4\pi\varepsilon_{0}} \frac{\vec{P}\cdot \hat{r}}{r^{2}} $$ Direttamente proporzionale al momento di tipolo Inversamente proporzionale al quadrato del raggio. Campo elettrico nel dipolo $$ \vec{E} = \frac{1}{4\pi\varepsilon_{0}} \vec{P} \cdot \frac{\hat{r}}{r^{3}} $$$$ \vec{E} = -\vec{\nabla} V $$Componente parallela 🟩 $$ \vec{E} = - \vec{\nabla}V = -\frac{\delta V}{\delta x}\hat{i} -\frac{\delta V}{\delta y}\hat{j} -\frac{\delta V}{\delta z}\hat{k} $$ Sappiamo che $\vec{P} = P\hat{k}$ e $\vec{r} = x\hat{i} + y \hat{j} + z \hat{k}$ allora abbiamo che $\vec{P} \cdot \vec{r} = Pz$ Poi abbiamo che $z = r \cos \theta$ ...

6 min Â· Xuanqiang 'Angelo' Huang

Divergenza e Circuitazione

Scalare Scalare e gradiente 🟩 $$ \varphi(x, y, z) : \mathbb{R}^{3} \to \mathbb{R} $$$$\vec{\nabla}\varphi = ( \frac{\delta\varphi}{\delta x}, \frac{\delta\varphi}{\delta y}, \frac{\delta\varphi}{\delta z}) = \frac{\delta\varphi}{\delta x} \hat{i} + \frac{\delta\varphi}{\delta y} \hat{j} + \frac{\delta\varphi}{\delta z} \hat{k}$$ Se consideriamo il gradiente da solo è un campo vettoriale (dice la direzione della derivata multidimensionale). Gradiente in coordinate polari 🟨 Questo è un po’ più difficile da gestire, però è abbastanza facile una volta che si fanno certe osservazioni. Sappiamo che $dV = \vec{\nabla} V \cdot d\vec{s}$, TODO: finire la dimostrazione, è descritta bene a pagina 47 del mazzoldi. ...

7 min Â· Xuanqiang 'Angelo' Huang

General SWE principles

This small note sections tries to fix 5 important concepts in software engineering Sub-system and modules 🟩 We need to differentiate from sub-system, which is a part of a system that tries to achieve some objective, and a module, which is more language specific way of saying imported file, or set of functions or classes. Information hiding 🟩 This is a very important principle present in object oriented programming. Within this philosophy we should be able to access only public methods or data, this allows the construction of abstractions that allow us to think at a higher level. ...

2 min Â· Xuanqiang 'Angelo' Huang

Introduction to computational statistics

What is it for Estimation Sampling generate numbers from any distribution! (distributions are important in statistics). Density Cumulative distribution (and others similar). Optimization how to find computationally the min and max of functions. Generating? Random (difficile anche filosoficamente definire cosa significa questo). Molto importante perché si assume in Comp stats che abbiamo il random vero, e questa assunzione che non vale può rompere cose. And independent Sample proportion Average of something (example of the lake cannonball). ...

2 min Â· Xuanqiang 'Angelo' Huang

La qualità del software

Dato che il software sta diventando sempre più diffuso, diventa sempre più importante andare a definire delle metriche che possano garantirne la qualità, ossia la non frequenza di errori o bug che possono in qualche modo limitarne la qualità. Error, Fault and Failure Secondo la definizione esatta data da IEEE, questi tre termini hanno un significato ben specifico, molto diverso. Error, sono comportamenti non previsti da un comportamento dell’utente, oppure il programmatore capisce male le specifiche. Fault sono i bugs, degli errori nel codice che creano un comportamento non previsto Failure, sono comportamenti non previsti da specifiche, che crea un guasto e non permette il funzionamento Qualità del software Rating and Ranking Il rating è l’assegnazione di un punteggio assoluto di qualità riguardo al prodotto. ...

3 min Â· Xuanqiang 'Angelo' Huang

Magnetismo nella materia

Analisi macroscopica Setting dell’esperimento 🟩 $$ \vec{F} = -\vec{\nabla} \cdot U \implies F = -\vec{\nabla}(\vec{m} \cdot \vec{B}) = \pm m \frac{dB}{dx} $$ La prima relazione si deriva da definizione di lavoro e forza. (esteso al caso di una forza applicata su spira che non è banale, facciamola brevemente). $$ Fds = dW = -dU = i \nabla \Phi(B) ds \implies F = i\nabla \Phi(B) = m \cdot \nabla B = -\nabla U $$La cosa da notare è che per campi uniformi abbiamo che si può definire il lavoro. ...

10 min Â· Xuanqiang 'Angelo' Huang

Modelli AGILE

Socialità dello sviluppo del software (3) 🟨- Si assume che È difficile assegnarsi i compiti, bisogni di utenti, tempi di consegna (+ persone difficile) È facile scrivere software (almeno software classico, e non computazione scientifica) La gente sia brava tecnicamente che socialmente è una cosa rara VS Waterfall (3) 🟨++ Pianificare tutto come viene descritto nel modello del waterfall non è possibile. Per i seguenti motivi Non è chiaro cosa vuole l’utente finale (quindi sarebbe meglio avere feedback continuo). Non si sa già dall’inizio cosa è che interessa all’utente, per questo motivo si consegna il prodotto passo passo per feedback continuo dato che i requisiti cambiano nel tempo. Giustificazione agile alto livello 🟩 Vorremo una metodologia che permetta una iterazione ossia un cambio continuo specifiche in funzione di un utente, vogliamo fare le cose a seconda di quanto vuole l’utente. ...

9 min Â· Xuanqiang 'Angelo' Huang

Modelli Lineari di sviluppo

Introduzione ai modelli lineari Processi di sviluppo Definizione L’insieme strutturato di attività, eventi, documenti e procedure necessari per la costruzione di un sistema software Cosa viene descritto (4) 🟩 Questo è proprio quanto vuole studiare l’ingegneria del software -> metodi di sviluppo, in modo da portare i migliori risultati possibile. Nella formazione classica va a definire 4 concetti (soprattutto utili nel lavoro di gruppo, al fine di comunicare nella maniera più efficace): ...

3 min Â· Xuanqiang 'Angelo' Huang

Onde elettromagnetiche

$$ \vec{\nabla} \times \vec{B} = \mu_{0}\vec{J} + \mu_{0}\varepsilon_{0} \frac{\delta \vec{E}}{\delta t} $$$$ \vec{\nabla} \times \vec{E} = - \frac{\delta \vec{B}}{\delta t} $$ Con questi abbiamo le onde elettromagnetiche. Nel vuoto possiamo dire che non abbiamo densità di corrente, per questo posso andare nel vuoto, sono due cose che si autosostengono. Sono simmetriche a meno di costante. Questo ci dice che Preso un campo elettrico che varia nel tempo (tipo una carica oscillante). Questo mi dice che si genera un campo magnetico prima non esistente Questo campo che varia nel tempo va a creare un altro campo elettrico Quindi abbiamo un processo che continua così all’infinito sostenendosi. In queste due equazioni abbiamo la luce. 2 circuitazioni 2 Leggi di gauss e le 4 equazioni di Maxwell sono in grado di descrivere tutti i fenomeni elettromagnetici. ...

6 min Â· Xuanqiang 'Angelo' Huang