pkm/30-resources/tech/notes-onenote.md
2026-05-14 15:01:32 +02:00

1278 lines
40 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
type: archive
source: OneNote PA-Perso
periode: 2019-2026
---
# Notes techniques - Import OneNote
## SQL (22 mai 2020)
Index clustered :
Index ordonné, 1 index par table
Plan de formation
Bonnes pratiques
- : Limiter le nombre de colonnes retournés
- idéal
- Over Indexing : Ne jamais créer des index pour rien
- Duplicate Index :
Management -
---
## Linux Ubuntu (25 avril 2024)
Formation 1
---
## WSL (4 novembre 2025)
Installation
wsl.exe --install Ubuntu-24.04
sudo apt install -y curl git zip unzip
sudo apt install php
- PHP & extensions indispensables
sudo apt update
sudo apt install -y php php-cli php-xml php-mbstring php-zip php-curl php-intl php-sqlite3 php-mysql unzip git
php -v
- Composer
composer -V || {
cd ~
php -r "copy('https://getcomposer.org/installer','composer-setup.php');"
php composer-setup.php
sudo mv composer.phar /usr/local/bin/composer
composer -V
}
- Symfony CLI (recommandé)
curl -sS https://dl.cloudsmith.io/public/symfony/stable/setup.deb.sh | sudo bash
sudo apt install -y symfony-cli
symfony -v
1) Installer Composer (si besoin)
composer -V || {
cd ~
php -r "copy('https://getcomposer.org/installer','composer-setup.php');"
php composer-setup.php
sudo mv composer.phar /usr/local/bin/composer
composer -V
}
2) Installer les vendors du projet
Place-toi à la racine du projet (celle qui contient composer.json) :
cd /mnt/d/travail/cockpit/cockpit-api
# Si tu as un composer.lock :
composer install --no-interaction
# Sil ny a PAS de composer.lock (ou projet tout neuf) :
# composer update --no-interaction
---
## EfCore (9 mai 2022)
Amorcage des données
- Data Seed : https://docs.microsoft.com/en-us/ef/core/modeling/data-seeding
set ASPNETCORE_ENVIRONMENT='Development.PA'
Update-database
20220818151253_Alerte_V2
Installation
du tool global
---
## Dapper (26 janvier 2023)
Products/GetProductById
I6TM47
(4673.7
ms)
Thu, 26 Jan 2023 16:35:30 GMT
duration (ms)
sql (ms)
https://prod.yeswehome.6tm.eu/api/v1.0/products/645a334c-70d4-4d04-8d2d-614f9d0dac44
2.9
0.9 (1)
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
4667.9
4200.9 (10)
sql:
89.9 %
more columns show trivial
Call Type
Step
Duration (from start)
Call Stack
Command
sql - Open
https://prod.yeswehome.6tm.eu/api/v1.0/products/645a334c-70d4-4d04-8d2d-614f9d0dac44
0.2 ms (T+1.5 ms)
InitializeReader > ExecuteReader > Open > OpenInternal > ConnectionOpening > BroadcastConnectionOpening > DispatchEventData > Write
Connection Open()
sql - ExecuteReader
https://prod.yeswehome.6tm.eu/api/v1.0/products/645a334c-70d4-4d04-8d2d-614f9d0dac44
0.5 ms (T+1.7 ms)
Execute > InitializeReader > ExecuteReader > CommandReaderExecuting > BroadcastCommandExecuting > DispatchEventData > Write
SELECTTOP(1) [c].[Id], [c].[Actif], [c].[AdresseID], [c].[ClientParentID], [c].[DateCreation], [c].[DateLastSynchro], [c].[DateUpdate], [c].[DistributeurID], [c].[FormeJuridique], [c].[IdentifiantExterne], [c].[IsSynchronizationRunning], [c].[Logo], [c].[Nom], [c].[PaysID], [c].[TypesDeStructure]
FROM[Clients] AS[c]
WHERE[c].[Id] = 2de82684-e644-418f-9385-9c7d574ec15e
sql - Close
https://prod.yeswehome.6tm.eu/api/v1.0/products/645a334c-70d4-4d04-8d2d-614f9d0dac44
0.2 ms (T+2.4 ms)
SingleOrDefault > Dispose > Dispose > Close > ConnectionClosing > BroadcastConnectionClosing > DispatchEventData > Write
Connection Close()
sql - Open
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.2 ms (T+4.8 ms)
InitializeReader > ExecuteReader > Open > OpenInternal > ConnectionOpening > BroadcastConnectionOpening > DispatchEventData > Write
Connection Open()
sql - ExecuteReader
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.6 ms (T+5.1 ms)
Execute > InitializeReader > ExecuteReader > CommandReaderExecuting > BroadcastCommandExecuting > DispatchEventData > Write
SELECT[t].[Id], [t].[Actif], [t].[AffichageDimensionEpaisseur], [t].[CatalogueID], [t].[ClasseEnergetique], [t].[CodeEAN], [t].[CodeEANDeRemplacement], [t].[CodeEANEquivalent], [t].[CodeTransport], [t].[DateCreation], [t].[DateUpdate], [t].[Description], [t].[Duree], [t].[Hashtags], [t].[IdentifiantExterne], [t].[IsDecline], [t].[Libelle], [t].[MarqueID], [t].[ParentId], [t].[PiecesDetachesCommentaire], [t].[PiecesDetachesDuree], [t].[Points], [t].[PointsDePose], [t].[PointsDeSacem], [t].[PrixConseille], [t].[ReferenceCommande], [t].[ReferenceFabriquant], [t].[ReferenceInterne], [t].[Relation], [t].[Sens], [t].[Statut], [t].[TvaTaux], [t].[TvaTauxReduit], [t].[UniteDeVente], [p0].[Id], [p0].[Actif], [p0].[AffichageDimensionEpaisseur], [p0].[CatalogueID], [p0].[ClasseEnergetique], [p0].[CodeEAN], [p0].[CodeEANDeRemplacement], [p0].[CodeEANEquivalent], [p0].[CodeTransport], [p0].[DateCreation], [p0].[DateUpdate], [p0].[Description], [p0].[Duree], [p0].[Hashtags], [p0].[IdentifiantExterne], [p0].[IsDecline], [p0].[Libelle], [p0].[MarqueID], [p0].[ParentId], [p0].[PiecesDetachesCommentaire], [p0].[PiecesDetachesDuree], [p0].[Points], [p0].[PointsDePose], [p0].[PointsDeSacem], [p0].[PrixConseille], [p0].[ReferenceCommande], [p0].[ReferenceFabriquant], [p0].[ReferenceInterne], [p0].[Relation], [p0].[Sens], [p0].[Statut], [p0].[TvaTaux], [p0].[TvaTauxReduit], [p0].[UniteDeVente]
FROM(
SELECTTOP(1) [p].[Id], [p].[Actif], [p].[AffichageDimensionEpaisseur], [p].[CatalogueID], [p].[ClasseEnergetique], [p].[CodeEAN], [p].[CodeEANDeRemplacement], [p].[CodeEANEquivalent], [p].[CodeTransport], [p].[DateCreation], [p].[DateUpdate], [p].[Description], [p].[Duree], [p].[Hashtags], [p].[IdentifiantExterne], [p].[IsDecline], [p].[Libelle], [p].[MarqueID], [p].[ParentId], [p].[PiecesDetachesCommentaire], [p].[PiecesDetachesDuree], [p].[Points], [p].[PointsDePose], [p].[PointsDeSacem], [p].[PrixConseille], [p].[ReferenceCommande], [p].[ReferenceFabriquant], [p].[ReferenceInterne], [p].[Relation], [p].[Sens], [p].[Statut], [p].[TvaTaux], [p].[TvaTauxReduit], [p].[UniteDeVente]
FROM[Produits] AS[p]
WHERE[p].[Id] = 645a334c-70d4-4d04-8d2d-614f9d0dac44
) AS[t]
LEFTJOIN[Produits] AS[p0] ON[t].[Id] = [p0].[ParentId]
ORDERBY[t].[Id], [p0].[Id]
232.70 ms
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync — 232.70 ms
sql - Close
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.4 ms (T+238.4 ms)
SingleOrDefault > Dispose > Dispose > Close > ConnectionClosing > BroadcastConnectionClosing > DispatchEventData > Write
Connection Close()
sql - Open
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.3 ms (T+240.1 ms)
InitializeReader > ExecuteReader > Open > OpenInternal > ConnectionOpening > BroadcastConnectionOpening > DispatchEventData > Write
Connection Open()
sql - ExecuteReader
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
189.4 ms (T+240.5 ms)
Execute > InitializeReader > ExecuteReader > CommandReaderExecuting > BroadcastCommandExecuting > DispatchEventData > Write
SELECT[t0].[Libelle], [t0].[CaracteristiquesDistributeurID] AS[Id], [t0].[Valeur], [t0].[Ordre]
FROM(
SELECTDISTINCT[c].[Libelle], [p1].[CaracteristiquesDistributeurID], [p1].[Valeur], [c].[Ordre]
FROM[Produits] AS[p]
INNERJOIN[Produits] AS[p0] ON[p].[Id] = [p0].[ParentId]
INNERJOIN[ProduitCaracteristiqueDistributeurs] AS[p1] ON[p0].[Id] = [p1].[ProduitID]
INNERJOIN[CaracteristiqueDistributeurs] AS[c] ON[p1].[CaracteristiquesDistributeurID] = [c].[Id]
WHERE(([p].[Id] = 645a334c-70d4-4d04-8d2d-614f9d0dac44) AND([p].[Actif] = CAST(1ASbit))) ANDEXISTS(
SELECT1FROM[Produits] AS[p2]
INNERJOIN(
SELECT[p3].[ProduitID], [p3].[CaracteristiquesDistributeurID], [p3].[DateCreation], [p3].[DateUpdate], [p3].[Id], [p3].[IsDeclinable], [p3].[Valeur]
FROM[ProduitCaracteristiqueDistributeurs] AS[p3]
WHERE[p3].[IsDeclinable] = CAST(1ASbit)
) AS[t] ON[p2].[Id] = [t].[ProduitID]
WHERE([p2].[Id] = 645a334c-70d4-4d04-8d2d-614f9d0dac44) AND([t].[CaracteristiquesDistributeurID] = [p1].[CaracteristiquesDistributeurID]))
) AS[t0]
ORDERBY[t0].[Ordre]
sql - Close
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.4 ms (T+430.4 ms)
GetDeclinableCaract > ToList > Dispose > Dispose > Close > ConnectionClosing > BroadcastConnectionClosing > DispatchEventData > Write
Connection Close()
37.20 ms
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync — 37.20 ms
sql - Open
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.4 ms (T+468.0 ms)
InitializeReader > ExecuteReader > Open > OpenInternal > ConnectionOpening > BroadcastConnectionOpening > DispatchEventData > Write
Connection Open()
4.30 ms
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync — 4.30 ms
sql - ExecuteReader
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
383.8 ms (T+472.7 ms)
Execute > InitializeReader > ExecuteReader > CommandReaderExecuting > BroadcastCommandExecuting > DispatchEventData > Write
SELECT[t].[Id], [t].[Actif], [t].[AffichageDimensionEpaisseur], [t].[CatalogueID], [t].[ClasseEnergetique], [t].[CodeEAN], [t].[CodeEANDeRemplacement], [t].[CodeEANEquivalent], [t].[CodeTransport], [t].[DateCreation], [t].[DateUpdate], [t].[Description], [t].[Duree], [t].[Hashtags], [t].[IdentifiantExterne], [t].[IsDecline], [t].[Libelle], [t].[MarqueID], [t].[ParentId], [t].[PiecesDetachesCommentaire], [t].[PiecesDetachesDuree], [t].[Points], [t].[PointsDePose], [t].[PointsDeSacem], [t].[PrixConseille], [t].[ReferenceCommande], [t].[ReferenceFabriquant], [t].[ReferenceInterne], [t].[Relation], [t].[Sens], [t].[Statut], [t].[TvaTaux], [t].[TvaTauxReduit], [t].[UniteDeVente], [t].[Id0], [p2].[ProduitID], [p2].[CaracteristiquesDistributeurID], [p2].[DateCreation], [p2].[DateUpdate], [p2].[Id], [p2].[IsDeclinable], [p2].[Valeur]
FROM(
SELECTTOP(1) [p0].[Id], [p0].[Actif], [p0].[AffichageDimensionEpaisseur], [p0].[CatalogueID], [p0].[ClasseEnergetique], [p0].[CodeEAN], [p0].[CodeEANDeRemplacement], [p0].[CodeEANEquivalent], [p0].[CodeTransport], [p0].[DateCreation], [p0].[DateUpdate], [p0].[Description], [p0].[Duree], [p0].[Hashtags], [p0].[IdentifiantExterne], [p0].[IsDecline], [p0].[Libelle], [p0].[MarqueID], [p0].[ParentId], [p0].[PiecesDetachesCommentaire], [p0].[PiecesDetachesDuree], [p0].[Points], [p0].[PointsDePose], [p0].[PointsDeSacem], [p0].[PrixConseille], [p0].[ReferenceCommande], [p0].[ReferenceFabriquant], [p0].[ReferenceInterne], [p0].[Relation], [p0].[Sens], [p0].[Statut], [p0].[TvaTaux], [p0].[TvaTauxReduit], [p0].[UniteDeVente], [p].[Id] AS[Id0]
FROM[Produits] AS[p]
INNERJOIN[Produits] AS[p0] ON[p].[Id] = [p0].[ParentId]
WHERE([p].[Id] = 645a334c-70d4-4d04-8d2d-614f9d0dac44) AND((
SELECTCOUNT(*)
FROM[ProduitCaracteristiqueDistributeurs] AS[p1]
WHERE([p0].[Id] = [p1].[ProduitID]) ANDEXISTS(
SELECT1FROM(
SELECTTOP(<R><V Guid0="b9ce7697-d3c7-4a3b-b06c-2e3db6b1f255"String0="2"/><V Guid0="00659f66-65d7-433a-ba8a-29f926b77d99"String0="Gauche"/><V Guid0="bebb9f7b-5c97-40f0-82e4-9b2730a67910"String0="J&#x20;-&#x20;Jazz"/><V Guid0="fc6af0c1-66c5-4ba3-a858-ea50110f6165"String0="DON&#x20;GIOVANNI"/></R>)
I.value('@Guid0[1] cast as xs:string?', 'uniqueidentifier') AS[Guid0],
I.value('@String0[1] cast as xs:string?', 'varchar(max)') AS[String0]
FROM<R><V Guid0="b9ce7697-d3c7-4a3b-b06c-2e3db6b1f255"String0="2"/><V Guid0="00659f66-65d7-433a-ba8a-29f926b77d99"String0="Gauche"/><V Guid0="bebb9f7b-5c97-40f0-82e4-9b2730a67910"String0="J&#x20;-&#x20;Jazz"/><V Guid0="fc6af0c1-66c5-4ba3-a858-ea50110f6165"String0="DON&#x20;GIOVANNI"/></R>.nodes('/R/V') N(I)
) AS[q]
WHERE([q].[Guid0] = [p1].[CaracteristiquesDistributeurID]) AND([q].[String0] = [p1].[Valeur]))) = 4)
ORDERBY[p0].[DateCreation]
) AS[t]
LEFTJOIN[ProduitCaracteristiqueDistributeurs] AS[p2] ON[t].[Id] = [p2].[ProduitID]
ORDERBY[t].[DateCreation], [t].[Id0], [t].[Id], [p2].[ProduitID], [p2].[CaracteristiquesDistributeurID]
40.00 ms
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync — 40.00 ms
sql - Close
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.4 ms (T+896.5 ms)
SingleOrDefault > Dispose > Dispose > Close > ConnectionClosing > BroadcastConnectionClosing > DispatchEventData > Write
Connection Close()
8.80 ms
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync — 8.80 ms
sql - Open
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.3 ms (T+905.7 ms)
InitializeReader > ExecuteReader > Open > OpenInternal > ConnectionOpening > BroadcastConnectionOpening > DispatchEventData > Write
Connection Open()
sql - ExecuteReader
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
1551.1 ms (T+906.4 ms)
Execute > InitializeReader > ExecuteReader > CommandReaderExecuting > BroadcastCommandExecuting > DispatchEventData > Write
SELECT[t0].[Libelle], [t0].[CaracteristiquesDistributeurID] AS[Id], [t0].[Valeur], [t0].[Ordre]
FROM(
SELECTDISTINCT[c].[Libelle], [p1].[CaracteristiquesDistributeurID], [p1].[Valeur], [c].[Ordre]
FROM[Produits] AS[p]
INNERJOIN[Produits] AS[p0] ON[p].[Id] = [p0].[ParentId]
INNERJOIN[ProduitCaracteristiqueDistributeurs] AS[p1] ON[p0].[Id] = [p1].[ProduitID]
INNERJOIN[CaracteristiqueDistributeurs] AS[c] ON[p1].[CaracteristiquesDistributeurID] = [c].[Id]
WHERE((([p].[Id] = 645a334c-70d4-4d04-8d2d-614f9d0dac44) AND([p].[Actif] = CAST(1ASbit))) AND((
SELECTCOUNT(*)
FROM[ProduitCaracteristiqueDistributeurs] AS[p2]
WHERE([p0].[Id] = [p2].[ProduitID]) ANDEXISTS(
SELECT1FROM(
SELECTTOP(<R><V Guid0="b9ce7697-d3c7-4a3b-b06c-2e3db6b1f255"String0="2"/><V Guid0="00659f66-65d7-433a-ba8a-29f926b77d99"String0="Gauche"/><V Guid0="bebb9f7b-5c97-40f0-82e4-9b2730a67910"String0="J&#x20;-&#x20;Jazz"/><V Guid0="fc6af0c1-66c5-4ba3-a858-ea50110f6165"String0="DON&#x20;GIOVANNI"/></R>)
I.value('@Guid0[1] cast as xs:string?', 'uniqueidentifier') AS[Guid0],
I.value('@String0[1] cast as xs:string?', 'varchar(max)') AS[String0]
FROM<R><V Guid0="b9ce7697-d3c7-4a3b-b06c-2e3db6b1f255"String0="2"/><V Guid0="00659f66-65d7-433a-ba8a-29f926b77d99"String0="Gauche"/><V Guid0="bebb9f7b-5c97-40f0-82e4-9b2730a67910"String0="J&#x20;-&#x20;Jazz"/><V Guid0="fc6af0c1-66c5-4ba3-a858-ea50110f6165"String0="DON&#x20;GIOVANNI"/></R>.nodes('/R/V') N(I)
) AS[q]
WHERE([q].[Guid0] = [p2].[CaracteristiquesDistributeurID]) AND([q].[String0] = [p2].[Valeur]))) = 4)) ANDEXISTS(
SELECT1FROM[Produits] AS[p3]
INNERJOIN(
SELECT[p4].[ProduitID], [p4].[CaracteristiquesDistributeurID], [p4].[DateCreation], [p4].[DateUpdate], [p4].[Id], [p4].[IsDeclinable], [p4].[Valeur]
FROM[ProduitCaracteristiqueDistributeurs] AS[p4]
WHERE[p4].[IsDeclinable] = CAST(1ASbit)
) AS[t] ON[p3].[Id] = [t].[ProduitID]
WHERE([p3].[Id] = 645a334c-70d4-4d04-8d2d-614f9d0dac44) AND([t].[CaracteristiquesDistributeurID] = [p1].[CaracteristiquesDistributeurID]))
) AS[t0]
ORDERBY[t0].[Ordre]
sql - Close
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.4 ms (T+2457.7 ms)
GetDeclinableCaract > ToList > Dispose > Dispose > Close > ConnectionClosing > BroadcastConnectionClosing > DispatchEventData > Write
Connection Close()
sql - Open
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.3 ms (T+2460.0 ms)
InitializeReader > ExecuteReader > Open > OpenInternal > ConnectionOpening > BroadcastConnectionOpening > DispatchEventData > Write
Connection Open()
sql - ExecuteReader
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
2067.3 ms (T+2460.4 ms)
Execute > InitializeReader > ExecuteReader > CommandReaderExecuting > BroadcastCommandExecuting > DispatchEventData > Write
SELECT[t3].[c], [t3].[Id], [t3].[Libelle], [t3].[Id0], [t3].[Libelle0], [t3].[Id1], [t3].[Nom], [t3].[c0], [t3].[Points], [t3].[Id2], [t3].[Libelle1], [t3].[PrixConseille], [t3].[ParentId], [t3].[c1], [t3].[ReferenceFabriquant], [t3].[c2], [t3].[ReferenceCommande], [t3].[Id3], [t3].[Libelle2], [t3].[c3], [t3].[c4], [t3].[Libelle3], [t3].[Description], [t3].[ReferenceFabriquant0], [t3].[c5], [t3].[Id4], [t3].[Id5], [t3].[Id6], [t3].[RegroupementID], [t3].[ProduitID], [t3].[Id7], [t4].[Id], [t4].[DateCreation], [t4].[DateUpdate], [t4].[DistributeurId], [t4].[HasValues], [t4].[IdentifiantExterne], [t4].[Libelle], [t4].[Ordre], [t4].[Theme], [t4].[TypeMetier], [t4].[ProduitID], [t4].[CaracteristiquesDistributeurID], [t4].[CaracteristiquePimID], [t4].[CaracteristiqueDistributeurID], [t4].[DateCreation0], [t4].[DateUpdate0], [t4].[Id0], [t5].[TypeDeFichier], [t5].[Ordre], [t5].[URL], [t5].[Description], [t5].[Libelle], [t5].[Id], [p4].[Id], [p4].[Actif], [p4].[ClientAcheteurID], [p4].[DateCreation], [p4].[DateUpdate], [p4].[Description], [p4].[Libelle], [p4].[Ordre], [p4].[ProduitID], [p4].[TypeDeFichier], [p4].[URL], [t6].[TypeDeFichier], [t6].[Ordre], [t6].[URL], [t6].[Description], [t6].[Libelle], [t6].[Id], [p6].[Id], CAST([p6].[TypeEcotaxeId] ASint), [p6].[Code], [p6].[MontantHt], [p6].[MontantTtc], [p6].[ProduitID], [p6].[TypeEcotaxeId], [t7].[Id], [t7].[ClientID], [t7].[DateCreation], [t7].[DateUpdate], [t7].[IdentifiantExterne], [t7].[Libelle], [t7].[Ordre], [t7].[Theme], [t7].[Valeur], [t7].[IsDeclinable], [t7].[Id0], [t8].[Id], [t8].[DateCreation], [t8].[DateUpdate], [t8].[DistributeurId], [t8].[HasValues], [t8].[IdentifiantExterne], [t8].[Libelle], [t8].[Ordre], [t8].[Theme], [t8].[TypeMetier], [t8].[Valeur], [t8].[IsDeclinable], [t8].[ProduitID], [t8].[CaracteristiquesDistributeurID], [t8].[CaracteristiquePimID], [t8].[CaracteristiqueDistributeurID], [t8].[DateCreation0], [t8].[DateUpdate0], [t8].[Id0], [t10].[Id], [t10].[Code], [t10].[ProduitID], [t10].[NomenclatureID], [t10].[Id0], [t10].[NomenclaturePimID], [t10].[NomenclatureDistributeurID], [c5].[Id], [c5].[ClientID], [c5].[DateCreation], [c5].[DateUpdate], [c5].[Description], [c5].[Libelle], [c5].[PrixConseille], [c5].[ProduitID], [c5].[ReferenceFabriquant]
FROM(
SELECTTOP(1) CASEWHEN[p].[ParentId] ISNULLTHENCAST(1ASbit)
ELSECAST(0ASbit)
ENDAS[c], [p0].[Id], [p0].[Libelle], [m].[Id] AS[Id0], [m].[Libelle] AS[Libelle0], [c0].[Id] AS[Id1], [c0].[Nom], COALESCE([p].[Description], N'') AS[c0], [p].[Points], [p].[Id] AS[Id2], [p].[Libelle] AS[Libelle1], [p].[PrixConseille], [p].[ParentId], COALESCE([p].[Hashtags], N'') AS[c1], [p].[ReferenceFabriquant], CASEWHEN[p1].[Id] ISNOTNULLTHENCAST(1ASbit)
ELSECAST(0ASbit)
ENDAS[c2], [p].[ReferenceCommande], [t0].[Id] AS[Id3], [t0].[Libelle] AS[Libelle2], [t0].[c] AS[c3], CASEWHENEXISTS(
SELECT1FROM[ClientProduitSurcharge] AS[c]
WHERE[p].[Id] = [c].[ProduitID]) THENCAST(1ASbit)
ELSECAST(0ASbit)
ENDAS[c4], [t2].[Libelle] AS[Libelle3], [t2].[Description], [t2].[ReferenceFabriquant] AS[ReferenceFabriquant0], [t2].[c] AS[c5], [d].[Id] AS[Id4], [a].[Id] AS[Id5], [p1].[Id] AS[Id6], [t0].[RegroupementID], [t0].[ProduitID], [t2].[Id] AS[Id7]
FROM[Produits] AS[p]
INNERJOIN[Catalogues] AS[c0] ON[p].[CatalogueID] = [c0].[Id]
INNERJOIN[Distributeurs] AS[d] ON[c0].[DistributeurID] = [d].[Id]
INNERJOIN[Adresses] AS[a] ON[d].[AdresseID] = [a].[Id]
INNERJOIN[Pays] AS[p0] ON[a].[PaysID] = [p0].[Id]
INNERJOIN[Marques] AS[m] ON[p].[MarqueID] = [m].[Id]
LEFTJOIN[Produits] AS[p1] ON[p].[ParentId] = [p1].[Id]
LEFTJOIN(
SELECT[t].[Id], [t].[Libelle], [t].[c], [t].[RegroupementID], [t].[ProduitID]
FROM(
SELECT[r0].[Id], [r0].[Libelle], 1AS[c], [r].[RegroupementID], [r].[ProduitID], ROW_NUMBER() OVER(PARTITIONBY[r].[ProduitID] ORDERBY[r].[RegroupementID], [r].[ProduitID], [r0].[Id]) AS[row]
FROM[RegroupementProduits] AS[r]
INNERJOIN[Regroupement] AS[r0] ON[r].[RegroupementID] = [r0].[Id]
) AS[t]
WHERE[t].[row] <= 1) AS[t0] ON[p].[Id] = [t0].[ProduitID]
LEFTJOIN(
SELECT[t1].[Libelle], [t1].[Description], [t1].[ReferenceFabriquant], [t1].[c], [t1].[Id], [t1].[ProduitID]
FROM(
SELECT[c1].[Libelle], [c1].[Description], [c1].[ReferenceFabriquant], 1AS[c], [c1].[Id], [c1].[ProduitID], ROW_NUMBER() OVER(PARTITIONBY[c1].[ProduitID] ORDERBY[c1].[Id]) AS[row]
FROM[ClientProduitSurcharge] AS[c1]
) AS[t1]
WHERE[t1].[row] <= 1) AS[t2] ON[p].[Id] = [t2].[ProduitID]
WHERE([p].[Id] = 1188a6a4-9558-4d63-b180-c76016bb7ef4) AND([p].[Actif] = CAST(1ASbit))
) AS[t3]
LEFTJOIN(
SELECT[c2].[Id], [c2].[DateCreation], [c2].[DateUpdate], [c2].[DistributeurId], [c2].[HasValues], [c2].[IdentifiantExterne], [c2].[Libelle], [c2].[Ordre], [c2].[Theme], [c2].[TypeMetier], [p2].[ProduitID], [p2].[CaracteristiquesDistributeurID], [m0].[CaracteristiquePimID], [m0].[CaracteristiqueDistributeurID], [m0].[DateCreation] AS[DateCreation0], [m0].[DateUpdate] AS[DateUpdate0], [m0].[Id] AS[Id0]
FROM[ProduitCaracteristiqueDistributeurs] AS[p2]
INNERJOIN[CaracteristiqueDistributeurs] AS[c2] ON[p2].[CaracteristiquesDistributeurID] = [c2].[Id]
LEFTJOIN[MappageCaracteristiquePimCaracteristiqueDistributeur] AS[m0] ON[c2].[Id] = [m0].[CaracteristiqueDistributeurID]
) AS[t4] ON[t3].[Id2] = [t4].[ProduitID]
LEFTJOIN(
SELECT[p3].[TypeDeFichier], [p3].[Ordre], [p3].[URL], [p3].[Description], [p3].[Libelle], [p3].[Id], [p3].[ProduitID]
FROM[ProduitFichiers] AS[p3]
WHERE[p3].[Actif] = CAST(1ASbit)
) AS[t5] ON[t3].[Id2] = [t5].[ProduitID]
LEFTJOIN[ProduitFichiers] AS[p4] ON[t3].[Id6] = [p4].[ProduitID]
LEFTJOIN(
SELECT[p5].[TypeDeFichier], [p5].[Ordre], [p5].[URL], [p5].[Description], [p5].[Libelle], [p5].[Id], [p5].[ProduitID]
FROM[ProduitFichiers] AS[p5]
WHERE[p5].[Actif] = CAST(1ASbit)
) AS[t6] ON[t3].[Id6] = [t6].[ProduitID]
LEFTJOIN[ProduitEcotaxe] AS[p6] ON[t3].[Id2] = [p6].[ProduitID]
LEFTJOIN(
SELECT[c3].[Id], [c3].[ClientID], [c3].[DateCreation], [c3].[DateUpdate], [c3].[IdentifiantExterne], [c3].[Libelle], [c3].[Ordre], [c3].[Theme], [p7].[Valeur], [p7].[IsDeclinable], [p7].[Id] AS[Id0], [p7].[ProduitID]
FROM[ProduitCaracteristiqueAcheteur] AS[p7]
INNERJOIN[CaracteristiquesAcheteur] AS[c3] ON[p7].[CaracteristiquesAcheteurID] = [c3].[Id]
) AS[t7] ON[t3].[Id2] = [t7].[ProduitID]
LEFTJOIN(
SELECT[c4].[Id], [c4].[DateCreation], [c4].[DateUpdate], [c4].[DistributeurId], [c4].[HasValues], [c4].[IdentifiantExterne], [c4].[Libelle], [c4].[Ordre], [c4].[Theme], [c4].[TypeMetier], [p8].[Valeur], [p8].[IsDeclinable], [p8].[ProduitID], [p8].[CaracteristiquesDistributeurID], [m1].[CaracteristiquePimID], [m1].[CaracteristiqueDistributeurID], [m1].[DateCreation] AS[DateCreation0], [m1].[DateUpdate] AS[DateUpdate0], [m1].[Id] AS[Id0]
FROM[ProduitCaracteristiqueDistributeurs] AS[p8]
INNERJOIN[CaracteristiqueDistributeurs] AS[c4] ON[p8].[CaracteristiquesDistributeurID] = [c4].[Id]
LEFTJOIN[MappageCaracteristiquePimCaracteristiqueDistributeur] AS[m1] ON[c4].[Id] = [m1].[CaracteristiqueDistributeurID]
) AS[t8] ON[t3].[Id2] = [t8].[ProduitID]
LEFTJOIN(
SELECT[t9].[Id], [t9].[Code], [p9].[ProduitID], [p9].[NomenclatureID], [n].[Id] AS[Id0], [t9].[NomenclaturePimID], [t9].[NomenclatureDistributeurID]
FROM[ProduitNomenclatureDistributeurs] AS[p9]
INNERJOIN[NomenclatureDistributeurs] AS[n] ON[p9].[NomenclatureID] = [n].[Id]
INNERJOIN(
SELECT[n0].[Id], [n0].[Code], [m2].[NomenclaturePimID], [m2].[NomenclatureDistributeurID]
FROM[MappageNomenclaturePimNomenclatureDistributeur] AS[m2]
INNERJOIN[NomenclaturePIMs] AS[n0] ON[m2].[NomenclaturePimID] = [n0].[Id]
) AS[t9] ON[n].[Id] = [t9].[NomenclatureDistributeurID]
) AS[t10] ON[t3].[Id2] = [t10].[ProduitID]
LEFTJOIN[ClientProduitSurcharge] AS[c5] ON[t3].[Id2] = [c5].[ProduitID]
ORDERBY[t3].[Id2], [t3].[Id1], [t3].[Id4], [t3].[Id5], [t3].[Id], [t3].[Id0], [t3].[Id6], [t3].[RegroupementID], [t3].[ProduitID], [t3].[Id3], [t3].[Id7], [t4].[ProduitID], [t4].[CaracteristiquesDistributeurID], [t4].[Id], [t4].[CaracteristiquePimID], [t4].[CaracteristiqueDistributeurID], [t5].[Id], [p4].[Id], [t6].[Id], [p6].[ProduitID], [p6].[TypeEcotaxeId], [t7].[Id0], [t7].[Id], [t8].[ProduitID], [t8].[CaracteristiquesDistributeurID], [t8].[Id], [t8].[CaracteristiquePimID], [t8].[CaracteristiqueDistributeurID], [t10].[ProduitID], [t10].[NomenclatureID], [t10].[Id0], [t10].[NomenclaturePimID], [t10].[NomenclatureDistributeurID], [t10].[Id], [c5].[Id]
135.10 ms
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync — 135.10 ms
sql - Close
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.4 ms (T+4662.8 ms)
SingleOrDefault > Dispose > Dispose > Close > ConnectionClosing > BroadcastConnectionClosing > DispatchEventData > Write
Connection Close()
sql - Open
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.2 ms (T+4664.4 ms)
InitializeReader > ExecuteReader > Open > OpenInternal > ConnectionOpening > BroadcastConnectionOpening > DispatchEventData > Write
Connection Open()
sql - ExecuteReader
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.9 ms (T+4664.8 ms)
Execute > InitializeReader > ExecuteReader > CommandReaderExecuting > BroadcastCommandExecuting > DispatchEventData > Write
SELECTTOP(1) [g].[Id], [g].[Actif], [g].[CatalogueID], [g].[ClientAcheteurID], [g].[CoefficientAchatParDefaut], [g].[CoefficientAjustementAchatParDefaut], [g].[CoefficientDeVenteParDefaut], [g].[DateCreation], [g].[DateDeDebutDeValidite], [g].[DateDeFinDeValidite], [g].[DateUpdate], [g].[Description], [g].[Exclu], [g].[GrilleTarifaireMaitreID], [g].[IdentifiantExterne], [g].[Libelle]
FROM[Clients] AS[c]
INNERJOIN[ClientTarifs] AS[c0] ON[c].[Id] = [c0].[ClientID]
INNERJOIN[GrilleTarifaires] AS[g] ON[c0].[TarifID] = [g].[Id]
WHERE(([c].[Id] = 2de82684-e644-418f-9385-9c7d574ec15e) AND([c0].[Actif] = CAST(1ASbit))) AND(((([g].[CatalogueID] = 75549207-8571-4d2a-a74f-2437d9d9dd51) AND([g].[Actif] = CAST(1ASbit))) AND([g].[DateDeFinDeValidite] >= GETDATE())) AND([g].[DateDeDebutDeValidite] <= GETDATE()))
ORDERBY[g].[DateDeDebutDeValidite] DESC
sql - Close
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.2 ms (T+4665.9 ms)
SingleOrDefault > Dispose > Dispose > Close > ConnectionClosing > BroadcastConnectionClosing > DispatchEventData > Write
Connection Close()
sql - Open
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.2 ms (T+4666.3 ms)
InitializeReader > ExecuteReader > Open > OpenInternal > ConnectionOpening > BroadcastConnectionOpening > DispatchEventData > Write
Connection Open()
sql - ExecuteReader
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.4 ms (T+4666.6 ms)
Execute > InitializeReader > ExecuteReader > CommandReaderExecuting > BroadcastCommandExecuting > DispatchEventData > Write
SELECT[g].[ProduitID], [g].[GrilleTarifaireID], [g].[CodeEAN], [g].[CoefficientAchat], [g].[CoefficientAjustementAchat], [g].[CoefficientDeVente], [g].[DateCreation], [g].[DateReappro], [g].[DateUpdate], [g].[Exclu], [g].[Id], [g].[IdentifiantExterne], [g].[IsAvailable], [g].[QuantiteEnReappro], [g].[QuantiteEnReliquat], [g].[ReferenceFabriquant], [g].[Stock]
FROM[GrilleTarifaireProduits] AS[g]
WHERE([g].[GrilleTarifaireID] = 740e759c-e245-4c88-8cd3-2562f9a6f356) AND([g].[ProduitID] = 1188a6a4-9558-4d63-b180-c76016bb7ef4)
sql - Close
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.2 ms (T+4667.1 ms)
ToArray > AddRange > Dispose > Dispose > Close > ConnectionClosing > BroadcastConnectionClosing > DispatchEventData > Write
Connection Close()
sql - OpenAsync
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.3 ms (T+4667.8 ms)
OpenInternalAsync > Start > Start > MoveNext > ConnectionOpeningAsync > BroadcastConnectionOpening > DispatchEventData > Write
Connection OpenAsync()
sql - ExecuteReader (Async)
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
1.1 ms (T+4668.2 ms)
ExecuteReaderAsync > Start > Start > MoveNext > CommandReaderExecutingAsync > BroadcastCommandExecuting > DispatchEventData > Write
SELECT[t].[Id], [t].[Actif], [t].[CatalogueID], [t].[ClientAcheteurID], [t].[CoefficientAchatParDefaut], [t].[CoefficientAjustementAchatParDefaut], [t].[CoefficientDeVenteParDefaut], [t].[DateCreation], [t].[DateDeDebutDeValidite], [t].[DateDeFinDeValidite], [t].[DateUpdate], [t].[Description], [t].[Exclu], [t].[GrilleTarifaireMaitreID], [t].[IdentifiantExterne], [t].[Libelle], [t0].[Id], [t0].[Actif], [t0].[CatalogueID], [t0].[ClientAcheteurID], [t0].[CoefficientAchatParDefaut], [t0].[CoefficientAjustementAchatParDefaut], [t0].[CoefficientDeVenteParDefaut], [t0].[DateCreation], [t0].[DateDeDebutDeValidite], [t0].[DateDeFinDeValidite], [t0].[DateUpdate], [t0].[Description], [t0].[Exclu], [t0].[GrilleTarifaireMaitreID], [t0].[IdentifiantExterne], [t0].[Libelle]
FROM(
SELECTTOP(1) [g].[Id], [g].[Actif], [g].[CatalogueID], [g].[ClientAcheteurID], [g].[CoefficientAchatParDefaut], [g].[CoefficientAjustementAchatParDefaut], [g].[CoefficientDeVenteParDefaut], [g].[DateCreation], [g].[DateDeDebutDeValidite], [g].[DateDeFinDeValidite], [g].[DateUpdate], [g].[Description], [g].[Exclu], [g].[GrilleTarifaireMaitreID], [g].[IdentifiantExterne], [g].[Libelle]
FROM[GrilleTarifaires] AS[g]
WHERE[g].[Id] = 740e759c-e245-4c88-8cd3-2562f9a6f356
) AS[t]
LEFTJOIN(
SELECT[g0].[Id], [g0].[Actif], [g0].[CatalogueID], [g0].[ClientAcheteurID], [g0].[CoefficientAchatParDefaut], [g0].[CoefficientAjustementAchatParDefaut], [g0].[CoefficientDeVenteParDefaut], [g0].[DateCreation], [g0].[DateDeDebutDeValidite], [g0].[DateDeFinDeValidite], [g0].[DateUpdate], [g0].[Description], [g0].[Exclu], [g0].[GrilleTarifaireMaitreID], [g0].[IdentifiantExterne], [g0].[Libelle]
FROM[GrilleTarifaires] AS[g0]
WHERE([g0].[ClientAcheteurID] = 2de82684-e644-418f-9385-9c7d574ec15e) AND([g0].[GrilleTarifaireMaitreID] = 740e759c-e245-4c88-8cd3-2562f9a6f356)
) AS[t0] ON[t].[Id] = [t0].[GrilleTarifaireMaitreID]
ORDERBY[t].[Id], [t0].[Id]
sql - CloseAsync
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.2 ms (T+4669.6 ms)
MoveNext > CloseAsync > Start > Start > MoveNext > ConnectionClosingAsync > BroadcastConnectionClosing > DispatchEventData > Write
Connection CloseAsync()
sql - OpenAsync
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.2 ms (T+4670.0 ms)
OpenInternalAsync > Start > Start > MoveNext > ConnectionOpeningAsync > BroadcastConnectionOpening > DispatchEventData > Write
Connection OpenAsync()
sql - ExecuteReader (Async)
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.4 ms (T+4670.3 ms)
ExecuteReaderAsync > Start > Start > MoveNext > CommandReaderExecutingAsync > BroadcastCommandExecuting > DispatchEventData > Write
SELECTTOP(1) [g].[ProduitID], [g].[GrilleTarifaireID], [g].[CodeEAN], [g].[CoefficientAchat], [g].[CoefficientAjustementAchat], [g].[CoefficientDeVente], [g].[DateCreation], [g].[DateReappro], [g].[DateUpdate], [g].[Exclu], [g].[Id], [g].[IdentifiantExterne], [g].[IsAvailable], [g].[QuantiteEnReappro], [g].[QuantiteEnReliquat], [g].[ReferenceFabriquant], [g].[Stock]
FROM[GrilleTarifaireProduits] AS[g]
WHERE([g].[GrilleTarifaireID] = 740e759c-e245-4c88-8cd3-2562f9a6f356) AND([g].[ProduitID] = 1188a6a4-9558-4d63-b180-c76016bb7ef4)
sql - CloseAsync
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.1 ms (T+4670.8 ms)
MoveNext > CloseAsync > Start > Start > MoveNext > ConnectionClosingAsync > BroadcastConnectionClosing > DispatchEventData > Write
Connection CloseAsync()
sql - OpenAsync
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.2 ms (T+4671.1 ms)
OpenInternalAsync > Start > Start > MoveNext > ConnectionOpeningAsync > BroadcastConnectionOpening > DispatchEventData > Write
Connection OpenAsync()
sql - ExecuteReader (Async)
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.5 ms (T+4671.4 ms)
ExecuteReaderAsync > Start > Start > MoveNext > CommandReaderExecutingAsync > BroadcastCommandExecuting > DispatchEventData > Write
SELECTTOP(1) [g].[ProduitID], [g].[GrilleTarifaireID], [g].[CodeEAN], [g].[CoefficientAchat], [g].[CoefficientAjustementAchat], [g].[CoefficientDeVente], [g].[DateCreation], [g].[DateReappro], [g].[DateUpdate], [g].[Exclu], [g].[Id], [g].[IdentifiantExterne], [g].[IsAvailable], [g].[QuantiteEnReappro], [g].[QuantiteEnReliquat], [g].[ReferenceFabriquant], [g].[Stock]
FROM[GrilleTarifaireProduits] AS[g]
WHERE([g].[GrilleTarifaireID] = 551ec3f9-169f-4534-9c5d-8e6d3e810b22) AND([g].[ProduitID] = 1188a6a4-9558-4d63-b180-c76016bb7ef4)
sql - CloseAsync
Controller Action:
A6tm.Gesteos.Pim.GatewayApi.Controllers.ProductsController.GetProductByIdAsync
0.1 ms (T+4672.0 ms)
MoveNext > CloseAsync > Start > Start > MoveNext > ConnectionClosingAsync > BroadcastConnectionClosing > DispatchEventData > Write
Connection CloseAsync()
toggle trivial gaps
À
partir de ladresse <https://prod.yeswehome.6tm.eu/api/profiler/results?id=10b93f89-19e8-4f19-b984-d721e68f921a>
Connexion
---
## auto parallels (28 juin 2022)
https://gearupwindows.com/windows11-missing-checkbox-users-must-enter-a-user-name-and-password-to-use-this-computer/
Passer la valeur à 0
---
## Linux (29 juin 2022)
Mise en place ubuntu
: https://doc.ubuntu-fr.org/wsl
Tuto: Mettre en place un
environnement de développement avec wsl2 + Docker + VSCode + PhpStorm.
Ubuntu
---
## VSCode (4 juin 2022)
Plugins :
- Émet
- EsLint
- Prettier
- Es7 react redux
- Raccourcis composant: rfc
- GitLens
- MarkDownLint
- Docker
Config Eslint and Prettier in Visual Studio Code for React js development | by Manish Mandal | How To React | Medium
yarn add eslint
--dev
yarn run eslint
--init
yarn global add prettier
---
## Hooks (4 août 2022)
UseRef pour avoir la
ref dun composant
---
## pnpm (5 février 2023)
- npm install -g pnpm
- pnpm config set store-dir D:/.pnpm-store
Vite
pnpm create vite
app.checkandimprove
Choisir React +
TypeScript
Disque -
---
## nettoyage espace purgeable (18 mai 2022)
Cd /volumes
&& ls
Cd Donnees
for d in
$(tmutil listlocalsnapshotdates | grep "-"); do sudo tmutil
deletelocalsnapshots $d; done
---
## AzureAd (14 juillet 2022)
- Install-Module -Name
---
## Rappel ES6 (25 juillet 2022)
Différence entre var, let, const
- var a une portée globale => il faut éviter de l'utiliser (exemple si on utilise le même nom qu'une variable d'une bilbiothèque
- let a une portée de block
=> utiliser
systématiquement let
Fonctions fléchées :
- Facilite la syntaxe, notamment pour les callbacks
- Attention dans une fonction fléchées this est le contexte englobant (window par exemple), this dans une fontion classique est le contexte appelant (l'objet par exemple)
Spread operator = > étendre
console.log(…arr) => renvoie tous les
élements du tableau
arr2 […arr1,4]
Rest operator => dans les paramètres d'une
fonction
Function
add(a,b,…args) => tous les aarguments qui restent
Fonctions pures : ne dépendent pas d'un
contexte exterieurs, renvoi toujours la même chose
=> évite les
erreurs, paradigmes de la programmation fonctionnelle.
Fonctions d'ordre supérieur : prend une
fonction en paramètre ou en retourne une ou les 2.
=> fait partie de
la programmation fonctionnelle, permet d'avoir des fonctions pouvant faire plus
de choses.
Exemple de fonctions
d'ordre > : map,filter, foreach
Destructuring ;
const {nom,
population} = pays;
Const GetNomPays =
({nom} => nom;
Console.log(data(pays));
---
## Documentation (6 août 2022)
Quel est le pb :
- Peu de doc, rarement à jour
Résultats attendus :
- La doc est générée automatiquement et permet de comprendre le projet
Living Documentation : vo
us allez aimer la documentation ! (Cyrille Martraire)
But de la
documentation :
- Transmettre la connaissance
- Rendre accessible
- Peut être obligatoire
- Garder la connaissance dans le temps
=>
Le savoir
Transmission
d'info
- La + efficace : la conversation : maximum de bande passante, d'interaction, juste à temps (pas de travail à l'avance, pas de stock = pas de gaspillage)
- Pair Programming : investissement sur la documentation et la transformation
- Le Code est de la documentation
- Est-ce qu'en lisant le code je comprends le métier
Idée : Investing
Wall, Obession Wall => savoir stable
Savoir Stable :
EverGreenDocument => uniquement les éléments stables
Pour les
comportements métier => BDD : conversation
- scénario
A voir SpecFlow,
pciklesdoc, cucumber
Mermaid : dPlaintext
- diagram
Docx fx :
- Installer le zip dans d:\travail\_doc\docfx\
- Dans le projet : d:\travail\_doc\docfx\docfx init -q
- d:\travail\_doc\docfx\docfx "D:\Travail\6tm\prod.6tm.com\docs\docfx\docfx_project\docfx.json"
--serve
Docusaurus :
npx
create-docusaurus@latest docs.prod.6tm.com classic --typescript
Y
Quels sont les pbs :
- Doc xml de visual studio => trop technique, la valeur ajoutée est noyée
- SpecFlow et gherkin => les
---
## Architecture (6 août 2022)
DDD, en vrai pour le
développeur (Cyrille Martraire)
---
## Code Legacy (25 décembre 2022)
[Software Crafts·wo·manship] Dette technique et entropie du logiciel (Arnaud Lemaire)
Code Legacy :
- Il coûte plus cher à maintenir qu'il ne rapporte
- Ajouter une fonctionnalité coûte plus cher qu'elle ne rapporte
---
## Micro-services (25 décembre 2022)
On achète de la complexité obligatoire :
Ca répond à quel besoin :
- Au fait qu'on a des charges très différentes en fonction des zones du SI
C'est rarement le cas et encore mieux ce n'est jamais le cas en début de projet
- Vidéo à 22 minutes
[Software Crafts·wo·manship] Dette technique et entropie du logiciel (Arnaud Lemaire)
Vérifier si la complexité de la solution est bien fonction de la complexité du problème
Faire simple ce n'est pas facile :
- ne pas confondre simplicite et facilité, complexite et compliqué
- La facilité est subjective quand la simplicité est objective
Visual
---
## Studio 2022 (10 août 2022)
- IIS à jour
- Visual studio 2022 avec module linguistique
- Codemaid
- Markdown
- Visual studio code
- SQL 2019
- Node
- SourceTree
- Configuration des droits
- Powershell 7
- Copier le fichier nuget
Visual
---
## Flux (28 août 2022)
Valeur ajoutée = ce
que le client est prêt à payer
Pour développer le
CA : augmenter les capacités en supprimant les goulots du flux
---
## Docker (29 août 2022)
Portainer.io : piloter swarm, docker pour les nuls
Swarm : cluser de
docker
- Stack = 1 ensemble de service et 1 service = un ensemble de docker
Traefik : 2eme
rupture protocolaire route vers le port qui va bien, gère les certificats
letsencrypt
- 10K / an
Thomas :
3 vms
- clusters
Résultats attendus :
- Utiliser sur des preprods :
- Utilisable sur les environnements de dev <->
=>
Comprendre les limites et bonnes pratiques de Docker :
- Debug : compliqué
- Test - windows / IIS
1
- Haute disponibilité : crash de VM => reprise sur un autre nœud
Exemple gitLab avec maj
2
- PRA - PCA : Datacenter => Restau -
3
- Optimiser déploiment
4
---
## runner (14 septembre 2023)
Suivre les étapes
depuis gitlab
Elastic
---
## Pull request (8 janvier 2026)
Rebase avec
lupdate-ref
Fowler met en avant
lapproche Ship / Show / Ask comme compromis pour garder une intégration
fréquente tout en profitant des PR :
- Ship : merge direct (pas de PR)
- Show : merge tout de suite, mais ouvre une PR pour review/visibilité
- Ask : PR avant merge (quand tu as besoin daccord/discussion)
r = rebase
--interactive --update-refs --autosquash
Gîtlens dans vscode
https://github.com/benoitmasson/stacked-prs-demo
Dan north ce quon
veut tester cest ce qui apporte de la valeur au produit
Valeur Produit : quelle est le prochain
comportement que mon utilisateur attend
Garantit que la
valeur produite est toujours présente
Exemple concret
Prompt de lia
questionner le test
Créé avec OneNote.
---