SlideShare una empresa de Scribd logo
1 de 56
Descargar para leer sin conexión
Custom entities in D8
Custom entities in D8
DrupalDay Santiago de compostela 2016
Samuel Solís (@estoyausente)
@estoyausente
Samuel Solís
Drupalday Santiago 2017 @estoyausente
Drupalday Santiago 2017 @estoyausente
¿Qué vamos a ver?
¿Qué es un tipo de entidad?
De contenido vs de configuración
Algo de terminología
Definición del tipo de entidad en bd
Formularios
Validaciones
Renderizar entidades
Drupalday Santiago 2017 @estoyausente
¿Qué es un tipo de entidad?
Un tipo de entidad es una clase
que tiene métodos y manejadores
definidos para almacenar, listar,
cargar y mostrar una estructura de
datos de forma unificada.
“
Drupalday Santiago 2017 @estoyausente
¿Qué es un tipo de entidad?
Un tipo de entidad es una clase
que tiene métodos y manejadores
definidos para almacenar, listar,
cargar y mostrar una estructura de
datos de forma unificada.
“
WTF????
Drupalday Santiago 2017 @estoyausente
Config Content
Entities
Content types
Views
Contact forms
Image styles
Nodes
Comments
Profiles
Terms
.yml files
CMI
Drupalday Santiago 2017 @estoyausente
Config Content
Entities
Content types
Views
Contact forms
Image styles
Nodes
Comments
Profiles
Terms
.yml files
CMI
Drupalday Santiago 2017 @estoyausente
Algo de terminología
Bundle Field
PropertyEntity type
node author
Page Imagen
Drupalday Santiago 2017 @estoyausente
Drupalday Santiago 2017 @estoyausente
Definición del Tipo de Entidad
Anotación
Definición de la clase
método baseFieldDefinitions
MiDrupal$
/**
* @ContentEntityType(
* id = "galician",
* label = @Translation(“Galician"),
* handlers = {
* },
* },
* base_table = “galicians",
* admin_permission = "administer galician
people",
* fieldable = FALSE,
* entity_keys = {
* "id" = "id",
* },
* admin_permission = “administer galicians”
* )
*/
vim src/Entity/Galician.php
MiDrupal$ vim src/Entity/MyEntity.php
namespace DrupalgalicianEntity;
use DrupalCoreFieldBaseFieldDefinition;
use DrupalCoreEntityContentEntityBase;
. . .
class Galician extends ContentEntityBase {
use StringTranslationTrait;
}
vim src/Entity/Galician.php
MiDrupal$ vim src/Entity/MyEntity.php
public static function
baseFieldDefinitions(EntityTypeInterface $entity_type) {
$fields['id'] = BaseFieldDefinition::create('integer')
->setLabel(t('ID'))
->setDescription(t('The ID of the galician person.'))
->setReadOnly(TRUE);
$fields['clothing'] = BaseFieldDefinition::create('string')
->setLabel(t('From'))
->setDescription(t(‘Galician clothing.’)
->setSettings(array(
'default_value' => 'Raincoat',
))
->setRequired(true);
$fields['created'] = BaseFieldDefinition::create('created')
->setLabel(t('Created'))
->setDescription(t('The time that the entity was
created.'));
}
vim src/Entity/Galician.php
MiDrupal$
$fields['province'] =
BaseFieldDefinition::create('entity_reference')
->setLabel(t('Province id.'))
->setDescription(t('The Pid of the associated
province.'))
->setSetting('target_type', 'province')
->setSetting('handler', 'default');
vim src/Entity/Galician.php
MiDrupal$
public function getClothing() {}
public function setClothing() {}
public function getOwner() {}
public function preSave() {}
public function postSave() {}
public function preCreate() {}
. . .
vim src/Entity/Galician.php
MiDrupal$
public function eatPrawns($num) {
//eat a boat of prawns.
return true;
}
vim src/Entity/Galician.php
drush en miModulo
drush entity-updates
MiDrupal$ vim any/other/Place.php
$galicianIds = Drupal::entityQuery('galician')
->condition(‘clothing’,’raincoat' , '<>')
->sort('date', 'DESC')
->execute();
}
//Dirty and easy way
$galicians = Drupal::entityTypeManager()
->getStorage(‘galician')->loadMultiple($galicianIds);
//Dependency Injection way
$galicians = $this->GalicianStorageController
—>loadMultiple($orderIds);
foreach($galicians as $galician) {
$galician->eatPrawns(100000);
}
$galician->save();
Drupalday Santiago 2017 @estoyausente
Formularios
Drupalday Santiago 2017 @estoyausente
Formularios
MiDrupal$
/**
* @ContentEntityType(
* id = "galician",
* … some stuff
* handlers = {
* "form" = {
* "add" = "DrupalgaliciaFormGalicianForm",
* "edit" = "DrupalgaliciaFormGalicianForm",
* "delete" = “DrupalCoreEntityContentEntityDeleteForm",
* },
* },
* },
* some stuff …
* )
*/
vim src/Entity/Galician.php
MiDrupal$ vim src/Entity/MyEntity.php
public static function
baseFieldDefinitions(EntityTypeInterface $entity_type) {
$fields['clothing'] = BaseFieldDefinition::create('string')
->setLabel(t('From'))
->setDescription(t(‘Galician clothing.’)
->setSettings([(
'default_value' => 'Raincoat',
])
->setDisplayConfigurable('Form', true)
->setDisplayOptions('Form', [
'weigth' => 2,
])
->setRequired(true);
}
vim src/Entity/Galician.php
MiDrupal$
namespace DrupalgalicianForm;
use DrupalCoreEntityContentEntityForm;
use DrupalCoreFormFormStateInterface;
class GalicianForm extends ContentEntityForm {
public function buildForm(array $form, FormStateInterface
$form_state) {
$form = parent::buildForm($form, $form_state);
if(isSunny()) { // <— if(false)
$form[‘clothing']['widget'][0]['default_value'] = ‘heat';
}
return $form;
}
public function submitForm(array &$form, FormStateInterface
$form_state) {
parent::submitForm($form, $form_state);
}
}
vim src/Form/GalicianForm.php
MiDrupal$
entity.galician.galician_add:

path: '/galician/add'

defaults:

_entity_form: galician.add

_title: ‘Create a new Galician person'

requirements:

_entity_create_access: 'galician'



entity.galician.galician_add:

path: '/galician/{galician}/edit'

defaults:

_entity_form: galician.edit

_title: 'Edit Galician'

requirements:

_permission: 'administer galician entity'

vim galician.routing.yml
Tia na naaaaa …
Algunos gallegos creados …
Algunos gallegos creados …
Mario Casas
Rouco Varela
Algunos gallegos creados …
Mario Casas
Rouco Varela
Algunos gallegos creados …
Mario Casas
Mariano Rajoy
Rouco Varela
Mario Conde
Algunos gallegos creados …
Mario Casas
Mariano Rajoy
Drupalday Santiago 2017 @estoyausente
Validaciones
Campos
Entidad
MiDrupal$ vim src/Entity/MyEntity.php
public static function
baseFieldDefinitions(EntityTypeInterface $entity_type) {
$fields['clothing'] = BaseFieldDefinition::create('string')
->setLabel(t('From'))
->setDescription($this->t('Galician clothing.')
->setSettings(array(
'default_value' => 'Raincoat',
))
->addConstrain('Length', ['mas' => 20])
->setRequired(true);
}
vim src/Entity/Galician.php
Campos
MiDrupal$
* @ContentEntityType(
* id = "galician",
* constraints = {
* "Galician" = {}
* }
* )
vim src/Entity/Galician.php
Entidad
MiDrupal$
namespace DrupalgalicianPluginValidationConstraint;
use SymfonyComponentValidatorConstraint;
/**
* Supports validating comment author names.
*
* @Constraint(
* id = "Galician",
* label = @Translation("Galician validation", context =
"Validation"),
* type = "entity:galician"
* )
*/
class GalicianConstraint extends Constraint {
public $messageDate = ‘Date must be 12-11-2016’;
public $messageClothing = ‘You aren’t a real Galician!!’;
}
vim src/Plugin/Validation/Contraint/GalicianConstraint.php
MiDrupal$ vim src/Plugin/Validation/Contraint/GalicianConstraintValidator.php
namespace DrupalgalicianPluginValidationConstraint;
use SymfonyComponentValidatorConstraint;
use SymfonyComponentValidatorConstraintValidator;
class GalicianConstraintValidator extends ConstraintValidator {
public function validate($entity, Constraint $constraint) {
if($entity->date != ’12-11-2016’) {
$this->context->buildViolation($constraint->messageDate)
->addViolation();
}
if($entity->clothing != ‘raincoat’) {
$this->context->buildViolation($constraint->messageClothing)
->addViolation();
}
}
}
Drupalday Santiago 2017 @estoyausente
Renderizar entidades
Completas
Listados
MiDrupal$
$fields['clothing'] = BaseFieldDefinition::create('string')
->setLabel(t('From'))
->setDescription($this->t('Galician clothing.')
->addConstrain('Length', ['mas' => 20])
->setRequired(true);
->setDisplayConfigurable('view', TRUE)
->setDisplayOptions('view', [
'label' => 'above',
'type' => 'string',
'weight' => 1,
]);
vim src/Entity/Galician.php
Completas
MiDrupal$
/**
* @ContentEntityType(
* id = "galician",
* … some stuff
* handlers = {
* "list_builder” = “DrupalgalicianController
GalicianListBuilder”,
* “view_builder” = “DrupalCoreEntityEntityViewBuilder”
* },
* },
* some stuff …
* )
*/
vim src/Entity/Galician.php
Listados
MiDrupal$ vim src/GalicianListBuilder.php
namespace DrupalgalicianEntityController;
use DrupalCoreEntityEntityInterface;
use DrupalCoreEntityEntityListBuilder;
class GalicianListBuilder extends EntityListBuilder {
public function render() {
$build['description'] = array(
'#markup' => $this->t('Galician list.'),
);
$build['table'] = parent::render();
return $build;
}
public function buildHeader() {
$header['id'] = $this->t('Order id');
$header['clothing'] = $this->t('Clothing');
return $header + parent::buildHeader();
}
public function buildRow(EntityInterface $entity) {
$row['id'] = $entity->id();
$row['clothing'] = $entity->clothing->value;
return $row + parent::buildRow($entity);
}
}
Listados
drush entity-updates
drush cr
Tia na naaaaa …
Algunos gallegos creados …
Michel Salgado
Algunos gallegos creados …
Rosalía de Castro
Michel Salgado
Algunos gallegos creados …
Rosalía de Castro
Michel Salgado
Camilo José Cela
Algunos gallegos creados …
Rosalía de Castro
Michel Salgado
Camilo José Cela
Agustín Jimenez
Algunos gallegos creados …
Rosalía de Castro
Michel Salgado
Camilo José Cela
Algunos gallegos creados …
Rosalía de Castro
Michel Salgado
Camilo José Cela Adolfo Dominguez
Algunos gallegos creados …
Drupalday Santiago 2017 @estoyausente
Para otro día
Otros maneadores disponibles
(storage, access, …)
Bundles y fields
Traducciones
Revisiones
Extensión de entidades existentes
…
Drupalday Santiago 2017 @estoyausente
Referencias
Core
La documentación de
drupal.org
Módulo Examples
Drupal console (Aunque suele generar
bastante más de lo que necesitamos)Utilidad
Drupalday Santiago 2017 @estoyausente
Coffee break!
@estoyausenteSamuel Solís
Nos vemos en IRC #drupal-es
Custom entities in d8
Custom entities in d8

Más contenido relacionado

Destacado

Formularios en Drupal 8
Formularios en Drupal 8Formularios en Drupal 8
Formularios en Drupal 8
Atenea tech
 

Destacado (8)

Julgamento de eichmann autoria mediata e tribunal de exceção uma análise jurí...
Julgamento de eichmann autoria mediata e tribunal de exceção uma análise jurí...Julgamento de eichmann autoria mediata e tribunal de exceção uma análise jurí...
Julgamento de eichmann autoria mediata e tribunal de exceção uma análise jurí...
 
Conference Migrate to Drupal 8 by Leon Cros at Drupal Developer Days 2015 in ...
Conference Migrate to Drupal 8 by Leon Cros at Drupal Developer Days 2015 in ...Conference Migrate to Drupal 8 by Leon Cros at Drupal Developer Days 2015 in ...
Conference Migrate to Drupal 8 by Leon Cros at Drupal Developer Days 2015 in ...
 
Payment processing in drupal 8 (DrupalCamp Ghent 2014)
Payment processing in drupal 8 (DrupalCamp Ghent 2014)Payment processing in drupal 8 (DrupalCamp Ghent 2014)
Payment processing in drupal 8 (DrupalCamp Ghent 2014)
 
Formularios en Drupal 8
Formularios en Drupal 8Formularios en Drupal 8
Formularios en Drupal 8
 
Entidades en drupal 8
Entidades en drupal 8Entidades en drupal 8
Entidades en drupal 8
 
Anatomy of payment systems in Drupal 8
Anatomy of payment systems in Drupal 8Anatomy of payment systems in Drupal 8
Anatomy of payment systems in Drupal 8
 
Drupal commerce 2.x for Drupal 8
Drupal commerce 2.x for Drupal 8Drupal commerce 2.x for Drupal 8
Drupal commerce 2.x for Drupal 8
 
Drupal 8 & Commerce 2.x insights
Drupal 8 & Commerce 2.x insightsDrupal 8 & Commerce 2.x insights
Drupal 8 & Commerce 2.x insights
 

Similar a Custom entities in d8

Similar a Custom entities in d8 (20)

FamilySearch Reference Client
FamilySearch Reference ClientFamilySearch Reference Client
FamilySearch Reference Client
 
Drupal 8 Services And Dependency Injection
Drupal 8 Services And Dependency InjectionDrupal 8 Services And Dependency Injection
Drupal 8 Services And Dependency Injection
 
How kris-writes-symfony-apps-london
How kris-writes-symfony-apps-londonHow kris-writes-symfony-apps-london
How kris-writes-symfony-apps-london
 
Doctrine For Beginners
Doctrine For BeginnersDoctrine For Beginners
Doctrine For Beginners
 
How Kris Writes Symfony Apps
How Kris Writes Symfony AppsHow Kris Writes Symfony Apps
How Kris Writes Symfony Apps
 
Multilingualism makes better programmers
Multilingualism makes better programmersMultilingualism makes better programmers
Multilingualism makes better programmers
 
Your Entity, Your Code
Your Entity, Your CodeYour Entity, Your Code
Your Entity, Your Code
 
Your Entity, Your Code
Your Entity, Your CodeYour Entity, Your Code
Your Entity, Your Code
 
Yii Introduction
Yii IntroductionYii Introduction
Yii Introduction
 
Why is crud a bad idea - focus on real scenarios
Why is crud a bad idea - focus on real scenariosWhy is crud a bad idea - focus on real scenarios
Why is crud a bad idea - focus on real scenarios
 
WooCommerce CRUD and Data Store by Akeda Bagus
WooCommerce CRUD and Data Store by Akeda BagusWooCommerce CRUD and Data Store by Akeda Bagus
WooCommerce CRUD and Data Store by Akeda Bagus
 
Symfony2 your way
Symfony2   your waySymfony2   your way
Symfony2 your way
 
Михаил Крайнюк - Form API + Drupal 8: Form and AJAX
Михаил Крайнюк - Form API + Drupal 8: Form and AJAXМихаил Крайнюк - Form API + Drupal 8: Form and AJAX
Михаил Крайнюк - Form API + Drupal 8: Form and AJAX
 
When cqrs meets event sourcing
When cqrs meets event sourcingWhen cqrs meets event sourcing
When cqrs meets event sourcing
 
Desymfony2013.gonzalo123
Desymfony2013.gonzalo123Desymfony2013.gonzalo123
Desymfony2013.gonzalo123
 
WordCamp San Francisco 2011: Transients, Caching, and the Complexities of Mul...
WordCamp San Francisco 2011: Transients, Caching, and the Complexities of Mul...WordCamp San Francisco 2011: Transients, Caching, and the Complexities of Mul...
WordCamp San Francisco 2011: Transients, Caching, and the Complexities of Mul...
 
Opencast Admin UI - Introduction to developing using AngularJS
Opencast Admin UI - Introduction to developing using AngularJSOpencast Admin UI - Introduction to developing using AngularJS
Opencast Admin UI - Introduction to developing using AngularJS
 
jQuery: Tips, tricks and hints for better development and Performance
jQuery: Tips, tricks and hints for better development and PerformancejQuery: Tips, tricks and hints for better development and Performance
jQuery: Tips, tricks and hints for better development and Performance
 
Drupal 8 Render Cache
Drupal 8 Render CacheDrupal 8 Render Cache
Drupal 8 Render Cache
 
Migrare da symfony 1 a Symfony2
 Migrare da symfony 1 a Symfony2  Migrare da symfony 1 a Symfony2
Migrare da symfony 1 a Symfony2
 

Más de Samuel Solís Fuentes

Más de Samuel Solís Fuentes (17)

De managers y developers
De managers y developersDe managers y developers
De managers y developers
 
Hábitos y consejos para sobrevivir a un trabajo sedentario
Hábitos y consejos para sobrevivir a un trabajo sedentarioHábitos y consejos para sobrevivir a un trabajo sedentario
Hábitos y consejos para sobrevivir a un trabajo sedentario
 
Drupal intro for Symfony developers
Drupal intro for Symfony developersDrupal intro for Symfony developers
Drupal intro for Symfony developers
 
Querying solr
Querying solrQuerying solr
Querying solr
 
Las tripas de un sistema solr
Las tripas de un sistema solrLas tripas de un sistema solr
Las tripas de un sistema solr
 
D8 Form api
D8 Form apiD8 Form api
D8 Form api
 
Mejorar tu código mejorando tu comunicación
Mejorar tu código mejorando tu comunicaciónMejorar tu código mejorando tu comunicación
Mejorar tu código mejorando tu comunicación
 
Drupal8 simplepage v2
Drupal8 simplepage v2Drupal8 simplepage v2
Drupal8 simplepage v2
 
Drupal 8 simple page: Mi primer proyecto en Drupal 8.
Drupal 8 simple page: Mi primer proyecto en Drupal 8.Drupal 8 simple page: Mi primer proyecto en Drupal 8.
Drupal 8 simple page: Mi primer proyecto en Drupal 8.
 
Como arreglar este desastre
Como arreglar este desastreComo arreglar este desastre
Como arreglar este desastre
 
Drupal y rails. Nuestra experiencia
Drupal y rails. Nuestra experienciaDrupal y rails. Nuestra experiencia
Drupal y rails. Nuestra experiencia
 
Mejorar tu código hablando con el cliente
Mejorar tu código hablando con el clienteMejorar tu código hablando con el cliente
Mejorar tu código hablando con el cliente
 
Taller de introducción al desarrollo de módulos
Taller de introducción al desarrollo de módulosTaller de introducción al desarrollo de módulos
Taller de introducción al desarrollo de módulos
 
Más limpio que un jaspe.
Más limpio que un jaspe.Más limpio que un jaspe.
Más limpio que un jaspe.
 
Drupal as a framework
Drupal as a frameworkDrupal as a framework
Drupal as a framework
 
Arquitectura de información en drupal
Arquitectura de información en drupalArquitectura de información en drupal
Arquitectura de información en drupal
 
Drupal para desarrolladores
Drupal para desarrolladoresDrupal para desarrolladores
Drupal para desarrolladores
 

Último

%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 

Último (20)

%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 

Custom entities in d8