07 iulie 2022

Angular Architecture & Best Practices - ziua 1

Arhitectura aplicatiilor

Aspecte de luat in considerare: 

* App overview * App features * Domain security * Domain rules * Logging * Services & Communication * Data models * Feature components * Shared functionality










i18n = internationalization


Organizing Features and Modules

LIFT = Localizare rapida, Identificare tipul de cod (sufixe component/service/dto), Flat structure, Dry (fara repetare cod -> reutilizare)

Organizare in functie de Features vs. Conventionala

- se prefera in functie de Features (sunt de sine-statatoare)

- conventionala este ok in interiorul unui feature, daca exista prea multe subfeatures -> ex. folder components (adauga un nivel ierarhic in plus)

Minim 1 modul per Feature (se poate importa lejer din afara)

Flat structure: evitare prea multe ierarhii (neplacut la refactorizari) -> chiar daca un Feature e inclus in altul, sa fie pe acelasi nivel cu el; ajuta si la localizare


Lazy loading of modules = nu sunt declarate in app.module.ts in imports

Core modules: servicii singleton folosite in mai multe locuri in aplicatie; se pot redenumi si "common". Se importa doar in Root Module.

Shared modules: componente, pipe-uri si directive reutilizabile. Se importa oriunde este nevoie in Feature Modules.


Creare custom library:

> ng generate library my-lib     # actualizeaza "paths" in tsconfig.json

> ng build my-lib

Publicare:

> cd dist/my-lib

> npm publish

03 martie 2022

GDPR workarounds

Even in the light GDPR, deleting a user is just one option. GDPR mandates that data that is no longer used should be removed, and auditing might be a good reason to keep the data. Depending on the scenarios instead of deleting a record, it could be anonymized.

27 iulie 2021

Angular: copiere statica a librariei in node_modules

App principala:

- oprire rulare

- stergere librarie dependenta din node_modules


Librarie dependenta:

> yarn install --force

> ng build --prod

- copiere din dist rezultatul build-ului in node_modules aplicatiei principale

08 iulie 2020

Pași pentru folosire branch itrac

> git checkout -b feature/itrac-11111 master  -- crearea unui branch nou cu id-ul de pe itrac, din master
> git add .
> git commit -m "itrac-11111 your message"
> git push --set-upstream origin feature/itrac-11111

Bitbucket -> Repositories -> navigare repo corespunzător -> Branches -> Pull request

01 iulie 2020

Validare xml cu xsd in Java

private static void initialize() throws SAXException { 
    final SchemaFactory factory = 
        SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
    final InputStream xsdStream = XmlDocumentValidator.class.getClassLoader()
        .getResourceAsStream(SCHEMA_PATH);            
    final Schema schema = factory.newSchema(new StreamSource(xsdStream)); 
    validator = schema.newValidator();      
    validator.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, ""); 
    validator.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, ""); 

public static boolean validateSchema(Resource resource) { 
    try (InputStream inputStream = resource.getInputStream()) { 
        if (validator == null) { 
            initialize(); 
        } 
        validator.validate(new StreamSource(inputStream)); 
        return true; 
    } catch (final SAXException | IOException e) { 
        LOGGER.error("Schema validation failed", e); 
        return false; 
    } 
}