40 KiB
| type | source | periode |
|---|---|---|
| archive | OneNote PA-Perso | 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
- 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
}
- 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
S’il n’y a PAS de composer.lock (ou projet tout neuf) :
composer update --no-interaction
EfCore (9 mai 2022)
Amorcage des données
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(<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 - Jazz"/><V Guid0="fc6af0c1-66c5-4ba3-a858-ea50110f6165"String0="DON GIOVANNI"/>)
I.value('@Guid0[1] cast as xs:string?', 'uniqueidentifier') AS[Guid0],
I.value('@String0[1] cast as xs:string?', 'varchar(max)') AS[String0]
FROM<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 - Jazz"/><V Guid0="fc6af0c1-66c5-4ba3-a858-ea50110f6165"String0="DON GIOVANNI"/>.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(<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 - Jazz"/><V Guid0="fc6af0c1-66c5-4ba3-a858-ea50110f6165"String0="DON GIOVANNI"/>)
I.value('@Guid0[1] cast as xs:string?', 'uniqueidentifier') AS[Guid0],
I.value('@String0[1] cast as xs:string?', 'varchar(max)') AS[String0]
FROM<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 - Jazz"/><V Guid0="fc6af0c1-66c5-4ba3-a858-ea50110f6165"String0="DON GIOVANNI"/>.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 l’adresse https://prod.yeswehome.6tm.eu/api/profiler/results?id=10b93f89-19e8-4f19-b984-d721e68f921a
Connexion
auto parallels (28 juin 2022)
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 d’un 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 l’update-ref
Fowler met en avant l’approche 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 d’accord/discussion)
r = rebase --interactive --update-refs --autosquash
Gîtlens dans vscode
https://github.com/benoitmasson/stacked-prs-demo
Dan north ce qu’on veut tester c’est 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 l’ia questionner le test
Créé avec OneNote.