Skip to content

Commit

Permalink
#3 : add content + footer
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolas43000 committed Aug 4, 2020
1 parent 04f3e5a commit ba1148a
Show file tree
Hide file tree
Showing 13 changed files with 799 additions and 6 deletions.
30 changes: 24 additions & 6 deletions config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,27 @@ DefaultContentLanguage = "fr"
# theme
theme = "kiboko"
# site title
title = "Accueil - Kiboko"
title = "Kiboko"
# disable language
disableLanguages = []
# google analytics
googleAnalytics = "" # paste your analytics ID here. (Ex: UA-123-45)

[[menu.main]]
name = "Contactez-nous"
url = "http://kiboko.fr/fr/contactez-nous/"
name = "Kibokast"
url = "/kibokast"
weight = 1

[[menu.main]]
name = "Kibokasts"
url = "/kibokasts"
name = "Contactez-nous"
url = "http://kiboko.fr/fr/contactez-nous/"
weight = 2

[params]
logo = "images/logo.png"
logo_white = "images/logo.png"
primary_color = "#22014f"
light_color = "#fe8507"
light_color = "#ddd"
dark_color = "#22014f"
body_color = "#ddd"
text_color = "#666"
Expand Down Expand Up @@ -56,3 +56,21 @@ title = "Vous n'avez pas trouvé une réponse ?"
enable = true
label = "Contactez-nous"
link = "http://kiboko.fr/fr/contactez-nous/"


############################## social links ##############################
[[params.social]]
icon = "ti-twitter-alt" # themify icon pack : https://themify.me/themify-icons
link = "https://twitter.com/kibokolabs"

[[params.social]]
icon = "ti-github" # themify icon pack : https://themify.me/themify-icons
link = "https://github.com/kiboko-labs"

[[params.social]]
icon = "ti-linkedin" # themify icon pack : https://themify.me/themify-icons
link = "https://www.linkedin.com/company/kiboko-sas"

[[params.social]]
icon = "ti-wordpress" # themify icon pack : https://themify.me/themify-icons
link = "http://kiboko.fr/fr/"
7 changes: 7 additions & 0 deletions content/kibokasts/_index.fr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
title: "Kibokast"
date: 2020-08-04
icon: "ti-light-bulb"
description: "Les Kibokast sont des mini-formations effectués par un membre de Kiboko pour le reste de l'équipe."
type : "docs"
---
37 changes: 37 additions & 0 deletions content/kibokasts/code-review/_index.fr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
title: "Code review"
date: 2020-05-05
type : "docs"
---

## 1. Cycle de vie des PRs
- Pour la création des PRs, se reporter à la [procédure décrite dans les usages Github](usage.md#3-pull-request-pr)
- **Pas plus de 2 PRs ouvertes par personne** : tant que j'ai encore une PR non mergée, je n'entame pas de nouvelle tâche.
- **Tout le monde relit les PRs** de tout le monde
- Afin de fluidifier les développements, **il est important de relire les PRs plusieurs fois par jour** (ex : le matin en arrivant, puis après la pause déjeuner. Possibilité de relire à 2 si besoin)
- **Tout le monde peut merger** les PRs en respectant les règles de validité ci-dessous

## 2. Règles de validité d'une PR
### Prérequis
- Chaque branche doit contenir un numéro de ticket : `feature/XXX-new-feature`
- **Chaque commentaire de commit doit contenir un numéro de ticket** : `#XXX : Add new feature`
- Les tests unitaires doivent passer
- La PR doit avoir le libellé "GTM"
- La PR doit avoir une taille raisonnable
- Les commits doivent être bien découpés (pas de "fix, re-re-fix, wip")

### Règles de merge
Je merge une PR si elle respecte les critères suivants :
- Respect des prérequis décrits ci-dessus
- Déjà **2 autres personnes** ont approuvé la PR **dont un dev expérimenté**
- **Toutes les discussions sont marquées comme résolues**
- ⚠️ **Elle pointe sur la branche develop** ⚠️
- Je vérifie que le milestone est le bon pour faciliter la rédaction des notes de version

### Approbation et correction
#### En tant que relecteur
- Lorsque j'ai une question ou un retour à faire sur une PR, **je mets un commentaire** sur la ligne concernée (en restant courtois dans mes insultes)
- Lorsque je n'ai plus de retours à faire, **j'approuve la PR**. Si elle respecte les règles de validité, **je la merge sur develop**.

#### En tant que développeur
- Lorsque je corrige ma PR, **je réponds** au commentaire (en restant courtois dans mes insultes) et **je marque la discussion comme résolue**
75 changes: 75 additions & 0 deletions content/kibokasts/collections-doctrine/_index.fr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
---
title: "Collections Doctrine"
date: 2020-04-01
type : "docs"
---

* [Documentation](https://www.doctrine-project.org/projects/doctrine-collections/en/1.6/index.html)
* [Github](https://github.com/doctrine/collections/)

La collection sert à adresser le besoin de fournir des listes d'objets. Doctrine fournit une implémentation utilisée dans son ORM et ses ODM.

La collection permet de gérer une liste d'objets du même type, pour :

* filtrer
* trier
* appliquer un traitement (map)
* calculer un résultat d'après le contenu de la liste (reduce)

L'interface `Collection`
---

Il s'agit du contrat "Collection" de Doctrine, toute collection devra implémenter cette interface.

Cette interface implémente elle-même les contrats suivants :

* [`\Countable`](https://www.php.net/manual/fr/class.countable.php) : la collection pourra être utilisée avec la fonction `count()`, ce qui permettra de connaitre le nombre d'éléments contenus par la collection.
* [`\IteratorAggregate`](https://www.php.net/manual/fr/class.iteratoraggregate.php) : la collection pourra être parcourue dans une structure `foreach`
* [`\ArrayAccess`](https://www.php.net/manual/fr/class.arrayaccess.php) : la collection pourra être utilisée avec les opérateurs `[]`, de la même manière qu'on le fait avec un tableau

Les méthodes
---

### `map`

La méthode `map( callable $callback )` va appliquer la fonction de rappel passée en argument sur chaque
élément qu'elle contient et retournera une copie de la collection. Dans cette copie
chaque élément aura été remplacé avec le résultat de cette fonction.

```php
<?php
$collection = new ArrayCollection(['SKU001', 'SKU002', 'SKU003']);

$mappedCollection = $collection->map(function(string $value): Product {
return new Product($value);
}); // Retournera : [object (Product) { $sku = 'SKU001' }, object (Product) { $sku = 'SKU002' }, object (Product) { $sku = 'SKU003' }]
```

### `filter`

La méthode `filter( callable $callback )` va appliquer la fonction de rappel passée en argument sur chaque
élément qu'elle contient et retournera une copie de la collection. Dans cette copie, ne
restera que les éléments pour lesquels la fonction de rappel a renvoyé `true`

```php
<?php
$collection = new ArrayCollection([new Product('SKU001'), new Product('SKU002'), new Product('SKU003')]);

$mappedCollection = $collection->filter(function(Product $value): bool {
return in_array($value->sku, ['SKU001', 'SKU003', 'SKU005']);
}); // Retournera : [object (Product) { $sku = 'SKU001' }, object (Product) { $sku = 'SKU003' }]
```

### `slice`

La méthode `slice( int $start, null|int $length )` va retourner une nouvelle copie de la collection contenant
uniquement les éléments commençant à la position `$start`, avec au maximum `$length` éléments à partir
de ce point si ce paramètre est fourni.

```php
<?php
$collection = new ArrayCollection([new Product('SKU001'), new Product('SKU002'), new Product('SKU003'), new Product('SKU004'), new Product('SKU005')]);

$mappedCollection = $collection->slice(2, 3);
// Retournera : [object (Product) { $sku = 'SKU002' }, object (Product) { $sku = 'SKU003' }, object (Product) { $sku = 'SKU004' }]
```
112 changes: 112 additions & 0 deletions content/kibokasts/commandes-debug/_index.fr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
---
title: "Commandes Debug"
date: 2020-04-07
type : "docs"
---

# Commandes Symfony

Articles officiels présentants certaines fonctionnalités :

- https://symfony.com/blog/new-in-symfony-3-4-debug-autowiring-command
- https://symfony.com/blog/new-in-symfony-3-4-debug-form-command

Pour avoir la liste complete :
`bin/console list debug`

### Debug Router

Doc officiel : https://symfony.com/doc/3.4/routing/debug.html

Pour avoir l'ensemble des routes avec leur nom et les URLs qui correspondent

`bin/console debug:router`

Exemple pour rechercher une route "produit" dans des controllers :

`bin/console debug:router --show-controllers | grep /product`

### Debug Container

Doc officiel : https://symfony.com/doc/3.4/service_container/debug.html

Pour avoir l'ensemble des services publiques

`bin/console debug:container`

- Pour rechercher un service par son nom : `bin/console debug:container validator`
- Pour rechercher un service par tag : `bin/console debug:container --tag=form.type`
- Pour rechercher un service par parametre : `bin/console debug:container --parameter=kernel.debug`

### Debug Config

Doc officiel : https://symfony.com/doc/3.4/reference/configuration/debug.html

Pour avoir l'ensemble des configuration

`bin/console debug:config`

- Pour rechercher pour un bundle : `bin/console debug:config AppBundle`

### Debug Twig

Pour avoir l'ensemble des fonctions des filtres, des tests et des globales disponibles ainsi que les chemins chargés par l'application

`bin/console debug:twig`

### Debug Swiftmailer

Doc officiel : https://symfony.com/doc/3.4/reference/configuration/swiftmailer.html

Pour avoir les mailers disponibles

`bin/console debug:swiftmailer`

### Debug Autowiring

Doc officiel : https://symfony.com/doc/3.4/service_container/debug.html

Pour avoir l'ensemble des services déclarés en auto-wiring :

`bin/console debug:autowiring`

### Debug Forms

Pour avoir l'ensemble des formulaires (Type, Extension, Type Guessers) disponibles :

`bin/console debug:form`

### Debug Translations

Pour avoir l'ensemble des traductions par locale ou bundle :

`bin/console debug:translation`

### Debug routes JS

`bin/console fos:js-routing:debug`


# Commandes Oro

### Entity config Oro

Permet de récupérer la configuration d'une entité :

`bin/console oro:entity-config:debug AppBundle\\Entity\\Norm`

Permet de récupérer la configuration d'un champ d'une entité :

`bin/console oro:entity-config:debug AppBundle\\Entity\\Norm code`

### Layout

_à compléter_

`bin/console oro:debug:layout`

### Workflow

_à compléter_

`bin/console oro:debug:workflow:definitions`
97 changes: 97 additions & 0 deletions content/kibokasts/migrations-oro/_index.fr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
---
title: "Migrations Oro"
date: 2020-02-21
type : "docs"
---

Il y a 2 types de migrations dans Oro :
1. Migrations Schema
2. Migrations Data

Doc. Oro : https://github.com/oroinc/platform/tree/master/src/Oro/Bundle/MigrationBundle

Cours "Entities" de Yevhen (=> drive Kiboko))

## 1. Migrations Schema

Modification de schéma Doctrine => DBAL

- Pas d'utilisation d'entité/ORM dans le schéma

#### 1.1. implémentation de l'interface `Installation`

utilise des numéros de versions (=> `getVersion()`)

/!\ regroupement de l'ensemble des migrations pour créer le schéma

=> cf Schéma de Yevhen

#### 1.2. implémentation de l'interface `Migration`

/!\ quand on ajoute une Migration, il faut systématiquement :
- ajouter la migration dans l'installation en adaptant le schéma désiré
- changer le numéro de version

#### 1.3. Cas spécifiques : champs non null

utilisation des "OrderedMigration" => `getOrder():int`

Ex : ajout champ UNIQUE + NOT NULL
> migration A avec `up()` methode `alterTable()` avec ajout de la colonne déclarée en `NULL` => ajout addPostQuery()
> migration B avec `up()` methode `alterTable()` avec ajout de la colonne `NOTNULL`
#### 1.4. Cas spécifiques : modification de colonne existante

utilisation de requêtes .SQL avec la méthode `addPostQuery()`

#### 1.5. Cas spécifiques : Oro options

Utilisation de "Oro_Options"

#### 1.6. Cas spécifiques : OroConfigField

OroConfigField uniquement pour les entités crées par ce bundle

#### 1.7. Cas spécifiques : entity extend

Implements : ExtendExtensionInterface


#### 1.8. Cas spécifiques : dépendance des migrations

utilisation des "DependentMigration"


## 2. Migrations Data

Migration pour créer de la donnée.

Exécuter après les migrations de schéma => ORM

Usage : initialiser une environnement avec des données

/!\ Si Schema est mis a jour, il faut impacter les migrations de data

## 3. Nomenclature des migrations

#### 3.1. Installer

Format : `{nom_du_bundle}Installer`

ex : KibokoBarcodeBundleInstaller

#### 3.2. Migration

Le nom de la migration doit correspondre au fonctionnel de la migration.
Si le domaine est différent, on créé des fichiers différents par domaine.

ex : AddBudgetMigration ou FixProductsNorms


## 4. Tests pour vérifier la migration

- `bin/console oro:platform:update --force`
- `bin/console oro:migration:load` (si fixture en plus de `main`)
- `bin/console oro:entity-extend:cache:clear` => si erreur, PR refusée

(prochainement ajouté à la CI)
Loading

0 comments on commit ba1148a

Please sign in to comment.