text:
# Distrito de Teotitlán
El distrito de Teotitlán es uno de los 30 distritos que conforman al estado mexicano de Oaxaca y uno de los dos en que se divide la Región Sierra de Flores Magón. Se conforma de 677 localidades repartidas entre 25 municipios.

## Municipios
| Código INEGI | Municipio                    | Cabecera                     |
| ------------ | ---------------------------- | ---------------------------- |
| 029          | Eloxochitlán de Flores Magón | Eloxochitlán de Flores Magón |
| 040          | Huautepec                    | Huautepec                    |
| 041          | Huautla de Jiménez           | Huautla de Jiménez           |
| 058          | Mazatlán Villa de Flores     | Mazatlán Villa de Flores     |
| 109          | San Antonio Nanahuatipam     | San Antonio Nanahuatipam     |
| 116          | San Bartolomé Ayautla        | San Bartolomé Ayautla        |
| 142          | San Francisco Huehuetlán     | San Francisco Huehuetlán     |
| 163          | San Jerónimo Tecóatl         | San Jerónimo Tecóatl         |
| 171          | San José Tenango             | San José Tenango             |
| 187          | San Juan Coatzóspam          | San Juan Coatzóspam          |
| 206          | San Juan de los Cués         | San Juan de los Cués         |
| 228          | San Lorenzo Cuaunecuiltitla  | San Lorenzo Cuaunecuiltitla  |
| 234          | San Lucas Zoquiápam          | San Lucas Zoquiápam          |
| 244          | San Martín Toxpalan          | San Martín Toxpalan          |
| 249          | San Mateo Yoloxochitlán      | San Mateo Yoloxochitlán      |
| 322          | San Pedro Ocopetatillo       | San Pedro Ocopetatillo       |
| 354          | Santa Ana Ateixtlahuaca      | Santa Ana Ateixtlahuaca      |
| 374          | Santa Cruz Acatepec          | Santa Cruz Acatepec          |
| 396          | Santa María la Asunción      | Santa María la Asunción      |
| 406          | Santa María Chilchotla       | Santa María Chilchotla       |
| 416          | Santa María Ixcatlán         | Santa María Ixcatlán         |
| 431          | Santa María Tecomavaca       | Santa María Tecomavaca       |
| 434          | Santa María Teopoxco         | Santa María Teopoxco         |
| 490          | Santiago Texcalcingo         | Santiago Texcalcingo         |
| 545          | Teotitlán de Flores Magón    | Teotitlán de Flores Magón    |

## Demografía
En el distrito habitan 146 270 personas, que representan el 3.85% de la población del estado. De ellos 114 057 dominan alguna lengua indígena.

title: Distrito de Teotitlán

wikitext:
{{Ficha de entidad subnacional
|nombre completo       = Teotitlán
|unidad                = [[Distritos de Oaxaca|Distrito]]
|tipo_superior_1       = [[Organización territorial de México|Estado]]
|superior_1            = [[Oaxaca]]
|tipo_superior_2       = [[Regiones de Oaxaca|Región]]
|superior_2            = [[Región Sierra de Flores Magón|Sierra de Flores Magón]]
|bandera               = no
|escudo                = no
|mapa                  = Distrito 04 - Teotitlán.svg
|tamaño_mapa           = 220px
|pie_mapa              = Ubicación del distrito de Teotitlán en el estado de Oaxaca.
|imagen                =
|pie_de_imagen         =

|capital_denominación  = Cabecera
|capital               = [[Teotitlán de Flores Magón]]
|subdivisión           = 25 municipios

|superficie            = 2211.67
|superficie_post       = <ref name="ceieg">{{cita web |url=http://www.ceiegoaxaca.gob.mx/sim/distrito/distrito.php?cve_dtorn=04 |título=Distrito Teotitlán |editor=CEIEG Oaxaca |fecha=2010 |fechaacceso=30 de agosto de 2015 |urlarchivo=https://web.archive.org/web/20150923201554/http://www.ceiegoaxaca.gob.mx/sim/distrito/distrito.php?cve_dtorn=04 |fechaarchivo=23 de septiembre de 2015 }}</ref>
|población             = 146270
|población_año         = 2010
|población_post        = <ref name="ceieg" />

|horario               = [[UTC|UTC -6]]
|página web            =
}}
El '''distrito de Teotitlán''' es uno de los [[Distritos de Oaxaca|30 distritos]] que conforman al estado [[México|mexicano]] de [[Oaxaca]] y uno de los dos en que se divide la [[Región Sierra de Flores Magón]]. Se conforma de 677 localidades repartidas entre 25 municipios.<ref name=":1">{{Cita web|url = http://www.inafed.gob.mx/work/enciclopedia/EMM20oaxaca/index.html|título = Estado de Oaxaca|autor = INAFED|enlaceautor = |fecha = 2012|idioma = |editorial = |fechaacceso = 30 de agosto de 2015|sitioweb = |fechaarchivo = 4 de diciembre de 2013|urlarchivo = https://web.archive.org/web/20131204034540/http://www.inafed.gob.mx/work/enciclopedia/EMM20oaxaca/index.html|deadurl = yes}}</ref><ref name=":0">{{Enlace roto|1={{Cita web|url = http://ceiegoaxaca.gob.mx/sim/distrito/reporte_reg_mx.php?cve_dtorn=04|título = Ficha distrital. Teotitlán|autor = CEIEG Oaxaca|enlaceautor = |fecha = 2010|idioma = |editorial = Gobierno del estado de Oaxaca|fechaacceso = 29 de agosto de 2015|sitioweb = }} |2=http://ceiegoaxaca.gob.mx/sim/distrito/reporte_reg_mx.php?cve_dtorn=04 |bot=InternetArchiveBot }}</ref>

== Municipios ==
{| class="wikitable"
!Código INEGI
!Municipio<ref name=":1" />
!Cabecera
|-
|029
|[[Municipio de Eloxochitlán de Flores Magón|Eloxochitlán de Flores Magón]]
|[[Eloxochitlán de Flores Magón]]
|-
|040
|[[Municipio de Huautepec|Huautepec]]
|[[Huautepec]]
|-
|041
|[[Municipio de Huautla de Jiménez|Huautla de Jiménez]]
|[[Huautla de Jiménez]]
|-
|058
|[[Municipio de Mazatlán Villa de Flores|Mazatlán Villa de Flores]]
|[[Mazatlán Villa de Flores]]
|-
|109
|[[Municipio de San Antonio Nanahuatipam|San Antonio Nanahuatipam]]
|[[San Antonio Nanahuatipam]]
|-
|116
|[[Municipio de San Bartolomé Ayautla|San Bartolomé Ayautla]]
|[[San Bartolomé Ayautla]]
|-
|142
|[[Municipio de San Francisco Huehuetlán|San Francisco Huehuetlán]]
|[[San Francisco Huehuetlán]]
|-
|163
|[[Municipio de San Jerónimo Tecóatl|San Jerónimo Tecóatl]]
|[[San Jerónimo Tecóatl]]
|-
|171
|[[Municipio de San José Tenango|San José Tenango]]
|[[San José Tenango]]
|-
|187
|[[Municipio de San Juan Coatzóspam|San Juan Coatzóspam]]
|[[San Juan Coatzóspam]]
|-
|206
|[[Municipio de San Juan de los Cués|San Juan de los Cués]]
|[[San Juan de los Cués]]
|-
|228
|[[Municipio de San Lorenzo Cuaunecuiltitla|San Lorenzo Cuaunecuiltitla]]
|[[San Lorenzo Cuaunecuiltitla]]
|-
|234
|[[Municipio de San Lucas Zoquiápam|San Lucas Zoquiápam]]
|[[San Lucas Zoquiápam]]
|-
|244
|[[Municipio de San Martín Toxpalan|San Martín Toxpalan]]
|[[San Martín Toxpalan]]
|-
|249
|[[Municipio de San Mateo Yoloxochitlán|San Mateo Yoloxochitlán]]
|[[San Mateo Yoloxochitlán]]
|-
|322
|[[Municipio de San Pedro Ocopetatillo|San Pedro Ocopetatillo]]
|[[San Pedro Ocopetatillo]]
|-
|354
|[[Municipio de Santa Ana Ateixtlahuaca|Santa Ana Ateixtlahuaca]]
|[[Santa Ana Ateixtlahuaca]]
|-
|374
|[[Municipio de Santa Cruz Acatepec|Santa Cruz Acatepec]]
|[[Santa Cruz Acatepec]]
|-
|396
|[[Municipio de Santa María la Asunción|Santa María la Asunción]]
|[[Santa María la Asunción]]
|-
|406
|[[Municipio de Santa María Chilchotla|Santa María Chilchotla]]
|[[Santa María Chilchotla]]
|-
|416
|[[Municipio de Santa María Ixcatlán|Santa María Ixcatlán]]
|[[Santa María Ixcatlán]]
|-
|431
|[[Municipio de Santa María Tecomavaca|Santa María Tecomavaca]]
|[[Santa María Tecomavaca]]
|-
|434
|[[Municipio de Santa María Teopoxco|Santa María Teopoxco]]
|[[Santa María Teopoxco]]
|-
|490
|[[Municipio de Santiago Texcalcingo|Santiago Texcalcingo]]
|[[Santiago Texcalcingo]]
|-
|545
|[[Municipio de Teotitlán de Flores Magón|Teotitlán de Flores Magón]]
|[[Teotitlán de Flores Magón]]
|}

== Demografía ==
En el distrito habitan 146 270 personas, que representan el 3.85% de la población del estado. De ellos 114 057 dominan alguna lengua indígena.<ref name=":0" />

== Referencias ==
{{Listaref}}

{{Control de autoridades}}
[[Categoría:Distrito de Teotitlán|  ]]

title: Teotitlán

Cabecera: Teotitlán de Flores Magón

Entidad: Distrito

• País: México

• Estado: Oaxaca

• Región: Sierra de Flores Magón

Subdivisiones: 25 municipios

Huso horario: UTC -6


text:
# Patrón Criteria (patrón de diseño)
En diseño de software, el patrón de especificación (y en su caso particular, criteria o filter) es un patrón de diseño, mediante el cual, se permite filtrar una colección de objetos bajo diversos criterios, encadenándolos de una manera desacoplada por medio de operaciones lógicas.
Este patrón se utiliza en escenarios específicos, donde la obtención de uno o más entidades depende de reglas de negocio. Fue creado por Eric Evans y Martin Fowler

## Propósito
Filtrar colecciones de objetos según diversos criterios de forma desacoplada.
Permitir la reutilización y anidación de criterios por medio de operaciones lógicas (and, or, not). Generar una manera legible y extensible de agregar o quitar lógica para filtrar colecciones de objetos.

## Motivación
Frecuentemente, se necesita filtrar colecciones de objetos de la misma familia (clase base) utilizando criterios similares, pero en distinto orden y/o condición.
También a menudo, esta lógica para filtrar colecciones es un proceso clave o complejo como pueden ser los criterios de planificación en un Sistema Operativo o el manejo de prioridades para una cola de peticiones.
Otra caso sería el tener altas posibilidades de cambio en el futuro sobre la lógica que realiza el filtrado en esta colección de objetos. Sea quitando/modificando criterios existentes, como así también agregando nuevos.
Este patrón pone gran énfasis en la extensibilidad y reutilización de criterios, como así también en la legibilidad del código.

## Ventajas
- Extensibilidad
- Legibilidad
- Reutilización de criterios
- Facilidad para hacer test unitarios (cada criterio se puede probar independiente, el patrón asegura el uso colectivo)
- Activación de criterios en tiempo de ejecución (dependiendo del lenguaje de programación)

## Estructura
Estructura básica del patrón independiente del lenguaje de programación.

## Estructura .NET
Aquí se presenta para .NET, utilizando métodos de extensión

## Implementación (C#)
```
public

interface

ICriteria
<
E
>

{

List
<
E
>

MeetCriteria
(
List
<
E
>

entities
);

}

internal

class

AndCriteria
<
E
>

:

ICriteria
<
E
>

{

private

ICriteria
<
E
>

_criteria
;

private

ICriteria
<
E
>

_otherCriteria
;

internal

AndCriteria
(
ICriteria
<
E
>

criteria
,

ICriteria
<
E
>

otherCriteria
)

{

_criteria

=

criteria
;

_otherCriteria

=

otherCriteria
;

}

public

List
<
E
>

MeetCriteria
(
List
<
E
>

entities
)

{

var

result

=

_criteria
.
MeetCriteria
(
entities
);

// Si ya devuelve 1, es que uno solo cumplio el criterio y no

// se ejecutan los ands anidados

// Si ya devuelve 0, es que ninguno cumplio con el criterio y

// no se ejecutan los ands anidados

if

(
result
.
Count

==

0

||

result
.
Count

==

1
)

return

result
;

return

_otherCriteria
.
MeetCriteria
(
result
);

}

}

internal

class

OrCriteria
<
E
>

:

ICriteria
<
E
>

{

private

ICriteria
<
E
>

_criteria
;

private

ICriteria
<
E
>

_otherCriteria
;

internal

OrCriteria
(
ICriteria
<
E
>

criteria
,

ICriteria
<
E
>

otherCriteria
)

{

_criteria

=

criteria
;

_otherCriteria

=

otherCriteria
;

}

public

List
<
E
>

MeetCriteria
(
List
<
E
>

entities
)

{

List
<
E
>

firstCriteriaItems

=

_criteria
.
MeetCriteria
(
entities
);

List
<
E
>

otherCriteriaItems

=

_otherCriteria
.
MeetCriteria
(
entities
);

foreach

(
E

otherCriteriaItem

in

otherCriteriaItems
)

{

if
(
!
firstCriteriaItems
.
Contains
(
otherCriteriaItem
))

firstCriteriaItems
.
Add
(
otherCriteriaItem
);

}

return

firstCriteriaItems
;

}

}

internal

class

NotCriteria
<
E
>

:

ICriteria
<
E
>

{

private

ICriteria
<
E
>

_criteria
;

internal

NotCriteria
(
ICriteria
<
E
>

x
)

{

_criteria

=

x
;

}

public

List
<
E
>

MeetCriteria
(
List
<
E
>

entities
)

{

List
<
E
>

notCriteriaItems

=

_criteria
.
MeetCriteria
(
entities
);

foreach

(
E

notCriteriaItem

in

notCriteriaItems
)

entities
.
Remove
(
notCriteriaItem
);

return

entities
;

}

}

public

static

class

CriteriaExtensionMethods

{

public

static

ICriteria
<
E
>

And
<
E
>
(
this

ICriteria
<
E
>

criteria
,

ICriteria
<
E
>

otherCriteria
)

{

return

new

AndCriteria
<
E
>
(
criteria
,

otherCriteria
);

}

public

static

ICriteria
<
E
>

Or
<
E
>
(
this

ICriteria
<
E
>

criteria
,

ICriteria
<
E
>

otherCriteria
)

{

return

new

OrCriteria
<
E
>
(
criteria
,

otherCriteria
);

}

public

static

ICriteria
<
E
>

Not
<
E
>
(
this

ICriteria
<
E
>

criteria
)

{

return

new

NotCriteria
<
E
>
(
criteria
);

}

}

```

## Ejemplo de uso
Suponiendo la existencia de la clase Persona
```
public

class

Persona

{

public

int

Edad

{

get
;

set
;

}

public

string

Nombre

{

get
;

set
;

}

public

string

Descripcion

{

get
;

set
;

}

public

string

Apellido

{

get
;

set
;

}

public

Sexo

Sexo

{

get
;

set
;

}

public

Origen

Origen

{

get
;

set
;

}

public

EstadoMarital

EstadoMarital

{

get
;

set
;

}

public

Profesion

Profesion

{

get
;

set
;

}

}

```

Y creando estos criterios:
```
public

class

CriterioMasculinos

:

ICriteria
<
Persona
>

{

public

List
<
Persona
>

MeetCriteria
(
List
<
Persona
>

entities
)

{

var

hombres

=

from

h

in

entities

where

h
.
Sexo

==

Sexo
.
Masculino

select

h
;

return

hombres
.
ToList
();

}

}

public

class

CriterioFemeninos

:

ICriteria
<
Persona
>

{

public

List
<
Persona
>

MeetCriteria
(
List
<
Persona
>

entities
)

{

var

mujeres

=

from

m

in

entities

where

m
.
Sexo

==

Sexo
.
Femenino

select

m
;

return

mujeres
.
ToList
();

}

}

public

class

CriterioExtranjeros

:

ICriteria
<
Persona
>

{

public

List
<
Persona
>

MeetCriteria
(
List
<
Persona
>

entities
)

{

var

personas

=

from

h

in

entities

where

h
.
Origen

==

Origen
.
Extranjero

select

h
;

return

personas
.
ToList
();

}

}

public

class

CriterioSolteros

:

ICriteria
<
Persona
>

{

public

List
<
Persona
>

MeetCriteria
(
List
<
Persona
>

entities
)

{

var

personas

=

from

h

in

entities

where

h
.
EstadoMarital

==

EstadoMarital
.
Soltero

select

h
;

return

personas
.
ToList
();

}

}

```

Podríamos filtrar a los hombres extranjeros y solteros
```
ICriteria
<
Persona
>

masculino

=

new

CriterioMasculinos
();

ICriteria
<
Persona
>

femenino

=

new

CriterioFemeninos
();

ICriteria
<
Persona
>

soltero

=

new

CriterioSolteros
();

ICriteria
<
Persona
>

extranjero

=

new

CriterioExtranjeros
();

/* ---------- HOMBRES EXTRANJEROS Y SOLTEROS ---------- */

criterios

=

masculino
.
And
(
extranjero
).
And
(
soltero
);

foreach

(
var

persona

in

criterios
.
MeetCriteria
(
personas
))

Console
.
WriteLine
(
persona
.
Descripcion
);

Console
.
ReadLine
();

```

O a las mujeres extranjeras
```
ICriteria
<
Persona
>

masculino

=

new

CriterioMasculinos
();

ICriteria
<
Persona
>

femenino

=

new

CriterioFemeninos
();

ICriteria
<
Persona
>

soltero

=

new

CriterioSolteros
();

ICriteria
<
Persona
>

extranjero

=

new

CriterioExtranjeros
();

/* ---------- MUJERES EXTRANJERAS ---------- */

criterios

=

femenino
.
And
(
extranjero
);

// esto seria lo mismo que masculino.Not().And(extranjero)

foreach

(
var

persona

in

criterios
.
MeetCriteria
(
personas
))

Console
.
WriteLine
(
persona
.
Descripcion
);

Console
.
ReadLine
();

```

O también podríamos filtrar a los hombres o mujeres (a todos)
```
ICriteria
<
Persona
>

masculino

=

new

CriterioMasculinos
();

ICriteria
<
Persona
>

femenino

=

new

CriterioFemeninos
();

ICriteria
<
Persona
>

soltero

=

new

CriterioSolteros
();

ICriteria
<
Persona
>

extranjero

=

new

CriterioExtranjeros
();

/* ---------- HOMBRES O MUJERES ---------- */

criterios

=

masculino
.
Or
(
femenino
);

foreach

(
var

persona

in

criterios
.
MeetCriteria
(
personas
))

Console
.
WriteLine
(
persona
.
Descripcion
);

Console
.
ReadLine
();

```

wikiname: eswiki

title: Patrón Criteria (patrón de diseño)

in_language: es

wikitext:
En [[diseño de software]], el '''patrón de especificación''' (y en su caso particular, '''criteria''' o '''filter''') es un [[patrón de diseño]], mediante el cual, se permite filtrar una colección de objetos bajo diversos criterios, encadenándolos de una manera desacoplada por medio de operaciones lógicas.
Este patrón se utiliza en escenarios específicos, donde la obtención de uno o más entidades depende de [[reglas de negocio]]. Fue creado por Eric Evans y Martin Fowler<ref>Specifications by Eric Evans and Martin Fowler</ref>

== Propósito ==
Filtrar colecciones de objetos según diversos criterios de forma desacoplada.
Permitir la reutilización y anidación de criterios por medio de operaciones lógicas (and, or, not). Generar una manera legible y extensible de agregar o quitar lógica para filtrar colecciones de objetos.

== Motivación ==
Frecuentemente, se necesita filtrar colecciones de objetos de la misma familia (clase base) utilizando criterios similares, pero en distinto orden y/o condición.
También a menudo, esta lógica para filtrar colecciones es un proceso clave o complejo como pueden ser los criterios de planificación en un [[Sistema operativo|Sistema Operativo]] o el manejo de prioridades para una cola de peticiones.
Otra caso sería el tener altas posibilidades de cambio en el futuro sobre la lógica que realiza el filtrado en esta colección de objetos. Sea quitando/modificando criterios existentes, como así también agregando nuevos.
Este patrón pone gran énfasis en la extensibilidad y reutilización de criterios, como así también en la legibilidad del código.

== Ventajas ==
* Extensibilidad
* Legibilidad
* Reutilización de criterios
* Facilidad para hacer test unitarios (cada criterio se puede probar independiente, el patrón asegura el uso colectivo)
* Activación de criterios en tiempo de ejecución (dependiendo del [[lenguaje de programación]])

== Estructura ==
Estructura básica del patrón independiente del lenguaje de programación.

[[File:Patron criteria general.png]]

== Estructura .NET ==
Aquí se presenta para .NET, utilizando métodos de extensión

[[File:Patron criteria csharp.png]]

== Implementación (C#) ==
<syntaxhighlight lang="csharp">
public interface ICriteria<E>
{
   List<E> MeetCriteria(List<E> entities);
}

internal class AndCriteria<E> : ICriteria<E>
{
   private ICriteria<E> _criteria;
   private ICriteria<E> _otherCriteria;

   internal AndCriteria(ICriteria<E> criteria, ICriteria<E> otherCriteria)
   {
      _criteria = criteria;
      _otherCriteria = otherCriteria;
   }

   public List<E> MeetCriteria(List<E> entities)
   {
      var result = _criteria.MeetCriteria(entities);
      // Si ya devuelve 1, es que uno solo cumplio el criterio y no
      // se ejecutan los ands anidados
      // Si ya devuelve 0, es que ninguno cumplio con el criterio y
      // no se ejecutan los ands anidados
      if (result.Count == 0 || result.Count == 1)
         return result;

      return _otherCriteria.MeetCriteria(result);
   }
}

internal class OrCriteria<E> : ICriteria<E>
{
   private ICriteria<E> _criteria;
   private ICriteria<E> _otherCriteria;

   internal OrCriteria(ICriteria<E> criteria, ICriteria<E> otherCriteria)
   {
      _criteria = criteria;
      _otherCriteria = otherCriteria;
   }

   public List<E> MeetCriteria(List<E> entities)
   {
      List<E> firstCriteriaItems = _criteria.MeetCriteria(entities);
      List<E> otherCriteriaItems = _otherCriteria.MeetCriteria(entities);

      foreach (E otherCriteriaItem in otherCriteriaItems)
      {
         if(!firstCriteriaItems.Contains(otherCriteriaItem))
            firstCriteriaItems.Add(otherCriteriaItem);
      }

      return firstCriteriaItems;
   }
}

internal class NotCriteria<E> : ICriteria<E>
{
   private ICriteria<E> _criteria;

   internal NotCriteria(ICriteria<E> x)
   {
      _criteria = x;
   }

   public List<E> MeetCriteria(List<E> entities)
   {
      List<E> notCriteriaItems = _criteria.MeetCriteria(entities);

      foreach (E notCriteriaItem in notCriteriaItems)
         entities.Remove(notCriteriaItem);

      return entities;
   }
}

public static class CriteriaExtensionMethods
{
   public static ICriteria<E> And<E>(this ICriteria<E> criteria, ICriteria<E> otherCriteria)
   {
      return new AndCriteria<E>(criteria, otherCriteria);
   }

   public static ICriteria<E> Or<E>(this ICriteria<E> criteria, ICriteria<E> otherCriteria)
   {
      return new OrCriteria<E>(criteria, otherCriteria);
   }

   public static ICriteria<E> Not<E>(this ICriteria<E> criteria)
   {
      return new NotCriteria<E>(criteria);
   }
}
</syntaxhighlight>

== Ejemplo de uso ==
Suponiendo la existencia de la clase Persona
<syntaxhighlight lang="csharp">
public class Persona
{
   public int Edad { get; set; }
   public string Nombre { get; set; }
   public string Descripcion { get; set; }
   public string Apellido { get; set; }
   public Sexo Sexo { get; set; }
   public Origen Origen { get; set; }
   public EstadoMarital EstadoMarital { get; set; }
   public Profesion Profesion { get; set; }
}
</syntaxhighlight>

Y creando estos criterios:
<syntaxhighlight lang="csharp">
public class CriterioMasculinos : ICriteria<Persona>
    {
        public List<Persona> MeetCriteria(List<Persona> entities)
        {
            var hombres =   from h in entities
                            where h.Sexo == Sexo.Masculino
                            select h;

            return hombres.ToList();
        }
    }

    public class CriterioFemeninos : ICriteria<Persona>
    {
        public List<Persona> MeetCriteria(List<Persona> entities)
        {
            var mujeres =   from m in entities
                            where m.Sexo == Sexo.Femenino
                            select m;

            return mujeres.ToList();
        }
    }

    public class CriterioExtranjeros : ICriteria<Persona>
    {
        public List<Persona> MeetCriteria(List<Persona> entities)
        {
            var personas = from h in entities
                          where h.Origen == Origen.Extranjero
                          select h;

            return personas.ToList();
        }
    }

    public class CriterioSolteros : ICriteria<Persona>
    {
        public List<Persona> MeetCriteria(List<Persona> entities)
        {
            var personas = from h in entities
                           where h.EstadoMarital == EstadoMarital.Soltero
                           select h;

            return personas.ToList();
        }
    }
</syntaxhighlight>

Podríamos filtrar a los hombres extranjeros y solteros
<syntaxhighlight lang="csharp">
ICriteria<Persona> masculino = new CriterioMasculinos();
ICriteria<Persona> femenino = new CriterioFemeninos();
ICriteria<Persona> soltero = new CriterioSolteros();
ICriteria<Persona> extranjero = new CriterioExtranjeros();

/* ---------- HOMBRES EXTRANJEROS Y SOLTEROS ---------- */
criterios =  masculino.And(extranjero).And(soltero);

foreach (var persona in criterios.MeetCriteria(personas))
   Console.WriteLine(persona.Descripcion);

Console.ReadLine();
</syntaxhighlight>

O a las mujeres extranjeras
<syntaxhighlight lang="csharp">
ICriteria<Persona> masculino = new CriterioMasculinos();
ICriteria<Persona> femenino = new CriterioFemeninos();
ICriteria<Persona> soltero = new CriterioSolteros();
ICriteria<Persona> extranjero = new CriterioExtranjeros();

/* ---------- MUJERES EXTRANJERAS ---------- */
criterios = femenino.And(extranjero); // esto seria lo mismo que masculino.Not().And(extranjero)

foreach (var persona in criterios.MeetCriteria(personas))
   Console.WriteLine(persona.Descripcion);

Console.ReadLine();
</syntaxhighlight>

O también podríamos filtrar a los hombres o mujeres (a todos)
<syntaxhighlight lang="csharp">
ICriteria<Persona> masculino = new CriterioMasculinos();
ICriteria<Persona> femenino = new CriterioFemeninos();
ICriteria<Persona> soltero = new CriterioSolteros();
ICriteria<Persona> extranjero = new CriterioExtranjeros();

/* ---------- HOMBRES O MUJERES ---------- */
criterios = masculino.Or(femenino);

foreach (var persona in criterios.MeetCriteria(personas))
   Console.WriteLine(persona.Descripcion);

Console.ReadLine();
</syntaxhighlight>

== Referencias ==
{{listaref}}

== Enlaces externos ==
* [http://www.martinfowler.com/apsupp/spec.pdf Specifications] by Eric Evans and Martin Fowler
* [https://web.archive.org/web/20160304110618/http://www.practicasdesoftware.com.ar/2011/07/patron-criteria/ Prácticas de software].
* [http://www.slideshare.net/agrosso/patrn-de-diseo-criteria Definición del patrón]

{{Control de autoridades}}
[[Categoría:Software]]
[[Categoría:Patrones de diseño]]


text:
# Time Breakers
Time Breakers es una serie limitada de cómic de cinco números publicada en 1997 bajo el efímero sello Helix de DC Comics. Fue escrita por Rachel Pollack e ilustrada por Chris Weston.
Time Breakers narra las hazañas de un equipo auto-reclutado de viajeros del tiempo dedicados a la creación de paradojas temporales, convencidos de que este es el único método para evitar la destrucción del tiempo mismo. A diferencia de la mayoría de los demás títulos de Helix, Time Breakers consiguió una base de lectores fieles, pero las bajas ventas de la línea Helix disuadieron a DC de renovar el título para una serie adicional.

## Sinopsis de la trama
A finales de la década de 1950, Angela Attenborough es una joven ama de casa aburrida que lleva una vida cómoda pero tediosa, casada con Phillip, su esposo médico. Un día, tres personajes con atuendos extraños se le aparecen en el bosque y le entregan un disco raro capaz de alterar las ondas de probabilidad mediante el simple poder del pensamiento. Tras una serie de desventuras durante los años siguientes, Angela se libra de Phillip y se embarca en una carrera como ladrona de joyas parisina. Cuando un atraco sale mal, es rescatada y transportada fuera del tiempo por el mismo grupo heterogéneo con el que se encontró antes, incluyendo a una mujer que identifica como una versión futura de sí misma.
Angela se encuentra en el Estanque de la Paradoja, santuario y cuartel general de sus salvadores, un grupo heterogéneo que se autodenomina Rompedores del Tiempo y que incluye a Leo Kharshovsky, su futura alma gemela. Se le explica a Angela que la razón de ser de los Rompedores es unir diversos episodios de la historia mediante actos deliberados de paradoja que, de este modo, fortalecen la vida y la naturaleza misma de la realidad. De hecho, todos los miembros del equipo han sido reclutados en períodos aleatorios de la historia humana mediante actos de intervención paradójica orquestados por versiones antiguas de sí mismos.
En oposición a los Rompedores se encuentran los Héroes del Conocimiento o Conocedores, cuyas acciones, al resistir la paradoja, fomentan la destrucción del tiempo y la liberación de todas las almas de la prisión de la vida. Esta destrucción se manifiesta en forma de una tormenta temporal que se extiende desde el futuro lejano hacia atrás en el tiempo, erradicando toda la historia hasta el siglo XXI, y que pronto convergerá en el presente.
A medida que avanza el arco argumental, los Rompedores buscan influir en diversos incidentes de la historia humana, como la colaboración en Cambridge a principios del siglo XX entre Srinivasa Ramanujan y G.H. Hardy, y mantenerse a la vanguardia de los Conocedores. La narrativa concluye con la implementación de una metaparadoja que da sentido a los orígenes de las dos facciones de viajeros en el tiempo y, a la vez, destruye y preserva la continuidad de la historia.

## Temas
En su introducción al título Pollack afirmó que su motivación al escribir la serie fue explotar una nueva perspectiva del cliché del viaje en el tiempo como recurso literario. En lugar de cuestionar la lógica de las paradojas tradicionales del viaje en el tiempo, un tema ya abordado exhaustivamente por autores como Heinlein y otros, busca demostrar que una paradoja robusta y autoperpetuante puede dar sentido a la estructura del universo mismo. Por lo tanto, buscó componer una narrativa donde la creación, y no la prevención, de la paradoja fuera el objetivo de los protagonistas principales.

## Colecciones
La editorial estadounidense DC Comics perdió los derechos de Time Breakers en 2016, lo que llevó a qué Rachel Pollack y Chris Weston a recuperar los derechos de la obra, que finalmente se recopiló en una edición italiana en 2017. A fecha de mayo de 2024 Weston estaba financiando colectivamente una edición en inglés. Finalmente el cómic recopilatorio se público en octubre de 2024, en tapa dura y con un total de 124 páginas, a un precio de 45 dólares.

title: Time Breakers

wikitext:
{{Ficha de historieta
|periodicidad = Mensual
|guionistas = [[Rachel Pollack]]
|dibujantes = Chris Weston
|personajes_principales = Angela Attenborough<br>Leo Kharshovsky<br Aithon, Luis, Nkacha
}}
'''''Time Breakers''''' es una [[serie limitada]] [[Comic book|de cómic]] de cinco números publicada en 1997 bajo el efímero [[Sello editorial|sello]] Helix de [[DC Comics]]. Fue escrita por [[Rachel Pollack]] e ilustrada por [[Chris Weston]].<ref>{{Cita web |url= https://www.comicsbeat.com/interview-chris-weston/ |título= Interview: Chris Weston dishes on TIME BREAKERS copyright, AKIRA, and not getting credit for his Bat-Suit designs |sitioweb= Comics Beat |idioma= Inglés |fechaacceso= 2025-08-09 |fecha= 2024-05-03}}</ref>

''Time Breakers'' narra las hazañas de un equipo auto-reclutado de viajeros del tiempo dedicados a la creación de [[Paradoja|paradojas]] temporales, convencidos de que este es el único método para evitar la destrucción del tiempo mismo. A diferencia de la mayoría de los demás títulos de Helix, ''Time Breakers'' consiguió una base de lectores fieles, pero las bajas ventas de la línea Helix disuadieron a DC de renovar el título para una serie adicional.<ref>{{Cita web|url=http://www.rzero.com/books/TimeBreakers.html|título=Time Breakers: review|fechaacceso=2008-02-03|autor=VerBeek|nombre=Todd|fecha=1997|editorial=Radio Zero}}</ref>

== Sinopsis de la trama ==
A finales de la década de 1950, Angela Attenborough es una joven [[ama de casa]] aburrida que lleva una vida cómoda pero tediosa, casada con Phillip, su esposo médico. Un día, tres personajes con atuendos extraños se le aparecen en el bosque y le entregan un disco raro capaz de alterar las ondas de probabilidad mediante el simple poder del pensamiento. Tras una serie de desventuras durante los años siguientes, Angela se libra de Phillip y se embarca en una carrera como ladrona de joyas [[París|parisina]]. Cuando un atraco sale mal, es rescatada y transportada fuera del tiempo por el mismo grupo heterogéneo con el que se encontró antes, incluyendo a una mujer que identifica como una versión futura de sí misma.

Angela se encuentra en ''el Estanque de la Paradoja,'' santuario y cuartel general de sus salvadores, un grupo heterogéneo que se autodenomina ''Rompedores del Tiempo'' y que incluye a Leo Kharshovsky, su futura alma gemela. Se le explica a Angela que la [[wiktionary:raison d'être|razón de ser]] de los ''Rompedores'' es unir diversos episodios de la historia mediante actos deliberados de paradoja que, de este modo, fortalecen la vida y la naturaleza misma de la realidad. De hecho, todos los miembros del equipo han sido reclutados en períodos aleatorios de la [[historia]] humana mediante actos de intervención paradójica orquestados por versiones antiguas de sí mismos.

En oposición a los ''Rompedores'' se encuentran los ''Héroes del Conocimiento'' o ''Conocedores'', cuyas acciones, al resistir la paradoja, fomentan la destrucción del tiempo y la liberación de todas las almas de la prisión de la vida. Esta destrucción se manifiesta en forma de una ''tormenta temporal'' que se extiende desde el futuro lejano hacia atrás en el tiempo, erradicando toda la historia hasta el siglo XXI, y que pronto convergerá en el presente.

A medida que avanza el arco argumental, los ''Rompedores'' buscan influir en diversos incidentes de la historia humana, como la colaboración en [[Cambridge]] a principios del siglo XX entre [[Srinivasa Ramanujan]] y [[Godfrey Harold Hardy|G.H. Hardy,]] y mantenerse a la vanguardia de los ''Conocedores''. La narrativa concluye con la implementación de una metaparadoja que da sentido a los orígenes de las dos facciones de viajeros en el tiempo y, a la vez, destruye y preserva la continuidad de la historia.

== Temas ==
En su introducción al título<ref>{{Cita libro|apellidos=Pollack|nombre=Rachel|título=Time Breakers, #1, "Lives of our Time"|fecha=1997|páginas=final page}}</ref> Pollack afirmó que su motivación al escribir la serie fue explotar una nueva perspectiva del [[cliché]] del viaje en el tiempo como recurso literario. En lugar de cuestionar la lógica de las paradojas tradicionales del viaje en el tiempo, un tema ya abordado exhaustivamente por autores como [[Robert A. Heinlein|Heinlein]] y otros, busca demostrar que una paradoja robusta y autoperpetuante puede dar sentido a la estructura del universo mismo. Por lo tanto, buscó componer una narrativa donde la creación, y no la prevención, de la paradoja fuera el objetivo de los protagonistas principales.

== Colecciones ==
La editorial estadounidense [[DC Comics]] perdió los derechos de ''Time Breakers'' en 2016, lo que llevó a qué Rachel Pollack y Chris Weston a recuperar los derechos de la obra, que finalmente se recopiló en una edición italiana en 2017.<ref>{{Cita web |url= https://www.comicbookcouplescounseling.com/post/time-breakers-chris-weston-interview |título= Time Breakers is Back! |sitioweb= Comic Book Couples Counseling |idioma= Inglés |fechaacceso= 2025-08-09 |fecha= 2024-04-10}}</ref> A fecha de mayo de 2024 Weston estaba [[Micromecenazgo|financiando colectivamente]] una edición en inglés.<ref>Entrevista en ''[[Judge Dredd Megazine]]'' #467, Mayo de 2024, pp. 14-15</ref> Finalmente el cómic recopilatorio se público en octubre de 2024, en tapa dura y con un total de 124 páginas, a un precio de 45 dólares.<ref>{{Cita web |url= https://leagueofcomicgeeks.com/comic/5017360/time-breakers-the-collection-hc?utm_source=chatgpt.com |título= Time Breakers: The Collection HC |sitioweb= League of Comic Geeks |idioma= Inglés |fechaacceso= 2025-08-09}}</ref>

== Referencias ==
{{listaref}}

== Enlaces externos ==
* [https://comicvine.gamespot.com/time-breakers/4050-41473/ ''Time Breakers''] en Comic Vine
* [https://www.goodreads.com/book/show/32201927-time-breakers ''Time Breakers: The Complete Collection''] en [[Goodreads]]
* [https://leagueofcomicgeeks.com/comics/series/122505/time-breakers ''Time Breakers''] en League of Comic Geeks

{{Control de autoridades}}

[[Categoría:Historieta de ciencia ficción]]
[[Categoría:Historietas de 1997]]
[[Categoría:Viajes en el tiempo en la ficción]]
[[Categoría:Rachel Pollack]]

title: Time Breakers

País: Estados Unidos

Idioma: Inglés

Género: Ciencia ficción

title: Publicación

Periodicidad: Mensual

Editorial: Helix

title: Dirección artística

Creador(es): Rachel Pollack · Chris Weston

Guionista(s): Rachel Pollack

Dibujante(s): Chris Weston

title: Contenido

Personajes principales: Angela Attenborough · Leo Kharshovsky<br Aithon, Luis, Nkacha


text:
# Agathidium atrum
Agathidium atrum es una especie de escarabajo del género Agathidium, tribu Agathidiini, familia Leiodidae. Fue descrita científicamente por Paykull en 1798.
Se distribuye por Finlandia, Suecia, Alemania, Noruega, Reino Unido de Gran Bretaña e Irlanda del Norte, Dinamarca, Países Bajos, Austria, Estonia, Polonia, Rusia, Francia, Luxemburgo, Bélgica, Italia y Rumania. La especie se mantiene activa durante todos los meses del año.

title: Agathidium atrum

wikitext:
{{ Ficha de taxón
| name               = ''Agathidium atrum''
| image              = Agathidium atrum (Paykull, 1798) (3559447750) (2).jpg
| image_caption      =
| regnum             = [[Animalia]]
| phylum             = [[Arthropoda]]
| classis            = [[Insecta]]
| ordo               = [[Coleoptera]]
| familia            = [[Leiodidae]]
| tribus             = Agathidiini
| genus              = ''[[Agathidium]]''
| species            = '''Agathidium atrum'''
| species_authority  = (Paykull, 1798)
}}
'''''Agathidium atrum''''' es una [[Especie (biología)|especie]] de [[Coleoptera|escarabajo]] del [[Género (biología)|género]] ''[[Agathidium]]'', [[tribu (biología)|tribu]] Agathidiini, [[Familia (biología)|familia]] [[Leiodidae]]. Fue descrita científicamente por Paykull en 1798.<ref name="GBIF">{{Cita web | título = ''Agathidium atrum'' | url = https://www.gbif.org/species/5874630/metrics | sitioweb = [[Global Biodiversity Information Facility]] (GBIF) | fechaacceso = 2022-10-10 | idioma = en }}</ref>

Se distribuye por Finlandia, Suecia, Alemania, Noruega, Reino Unido de Gran Bretaña e Irlanda del Norte, Dinamarca, Países Bajos, Austria, Estonia, Polonia, Rusia, Francia, Luxemburgo, Bélgica, Italia y Rumania.<ref name=GBIF/> La especie se mantiene activa durante todos los meses del año.<ref name=GBIF/>

== Referencias ==
{{listaref}}

{{Control de autoridades}}
[[Categoría:Agathidium|atrum]]
[[Categoría:Insectos descritos en 1798]]
[[Categoría:Insectos de Europa]]

title: Taxonomía

Reino: Animalia

Filo: Arthropoda

Clase: Insecta

Orden: Coleoptera

Familia: Leiodidae

Tribu: Agathidiini

Género: Agathidium

Especie: Agathidium atrum · (Paykull, 1798)


text:
# O Smach
O Smach (también conocida como O'Smach o Ou Smach, en camboyano: អូរស្មាច់) es una pequeña ciudad de Camboya ubicada en la frontera con Tailandia, en el distrito de Samraong de la provincia de Oddar Mean Chey, de gran importancia en las importaciones y exportaciones con el vecino país. Hasta 1999, hubo algunas batallas intermitentes y el área no era completamente segura, ya que la organización guerrillera conocida como los Jemeres rojos aún controlaban parte de esas tierras. En 2003 fue inaugurada una vía de acceso fronteriza entre O Smach y la localidad de Chong Chom en la provincia de Surin, en Tailandia. Desde entonces han funcionado una serie de casinos en el área, permitiendo a los tailandeses apostar en Camboya sin necesidad de pasar por la inmigración camboyana. Las apuestas son ilegales en Tailandia y en Camboya son legales solamente para personas con pasaportes extranjeros, por lo tanto esta práctica se ha vuelto atractiva para los ciudadanos tailandeses. O Smach está localizada al final de la Ruta 68, la cual se convierte en la vía nacional n.º 6 en Kravanh, en la provincia de Siem Reap.

## Actividades fronterizas
La mayor parte de la frontera norte con Tailandia está formada por el escarpe de las montañas Dangrek. Existe un paso natural entre O Smach y la ciudad tailandesa de Chong Chom. Este lugar ha sido utilizado desde épocas ancestrales como paso entre la parte baja de Camboya y la meseta Khorat. Entre el comienzo de la guerra civil de Camboya y la rendición de los últimos miembros de los jemeres rojos que se habían refugiado en Anlong Veng, esta guerrilla controló el área, generando inconvenientes debido al intercambio ilegal de madera entre Camboya y Tailandia. Luego de la rendición final de la guerrilla en 1999, la región nuevamente se volvió segura para los turistas y los habitantes, concluyendo en la inauguración de un cruce fronterizo entre las dos naciones en el año 2003. El cruce sufrió algunos cierres entre 2008 y 2011 durante las tensiones causadas por la disputa del templo Preah Vihear entre ambos países. La mayoría de turistas que visitan la provincia de Siem Reap cruzan la frontera hacia Poipet, la cual se ha convertido en un área atractiva para los apostadores debido al fácil acceso a la misma desde la capital Bangkok.
O Smach obtiene beneficios del comercio internacional. El principal producto de exportación de Camboya a través de O Smach es la yuca o mandioca. También hay un gran mercado para las bicicletas de segunda mano, las cuales son importadas a Camboya desde tierras japonesas, siendo llevadas a O Smach y vendidas en la frontera a los tailandeses en los mercados de Chong Chom. Las importaciones primarias de O Smach son generalmente equipos de granja de segunda mano como tractores y camiones. Los materiales de construcción y productos derivados del petróleo también son importados a Camboya a través de O Smach.

## Desarrollo
En 2015 se empezó a implementar una ruta de bus entre Siem Reap y O Smach. El trayecto, de aproximadamente dos horas y media de duración, tiene un costo promedio de 12 dólares y es utilizado especialmente por camboyanos que se dirigen por una mejor atención médica al poblado de Surin, donde el dialecto jemer es comúnmente hablado. Luego de pagar 10.000 rieles camboyanos (dos dólares y medio aproximadamente) en trámites fronterizos, atraviesan la frontera a pie y toman un minivan tailandés que los lleva hacia la etapa final del viaje, un tramo de 45 minutos entre O Smach y Surin por 80 bahts tailandeses adicionales (cincuenta centavos de dólar). También en el 2015, en un encuentro de negocios llevado a cabo en Siem Reap, empresarios tailandeses y camboyanos decidieron invertir en un servicio de buses con algunas facilidades como aire acondicionado entre Siem Reap y O Smach. El servicio fue programado para ponerse en marcha antes del inicio de la exhibición de elefantes de Surin, con el fin de darle facilidad de acceso a los ciudadanos de Camboya interesados en participar de esta festividad anual.

title: O Smach

wikitext:
{{Ficha de entidad subnacional
|nombre_oficial        = O Smach
|nombre original       = អូរស្មាច់
|unidad                = [[Ciudad]]
|bandera               = no
|escudo                = no
|tipo_superior_1       = País
|superior_1            = [[Camboya]]
|mapa_loc              = Camboya
|imagen                =Phraviharngopura.jpg|pie_de_imagen=[[Templo Preah Vihear]], cerca de O Smach
}}

'''O Smach''' (también conocida como '''O'Smach''' o '''Ou Smach''', {{lang-km|អូរស្មាច់}}) es una pequeña ciudad de [[Camboya]] ubicada en la frontera con [[Tailandia]], en el distrito de Samraong de la [[provincia de Oddar Mean Chey]], de gran importancia en las importaciones y exportaciones con el vecino país. Hasta 1999, hubo algunas batallas intermitentes y el área no era completamente segura, ya que la organización guerrillera conocida como los [[Jemeres rojos]] aún controlaban parte de esas tierras. En 2003 fue inaugurada una vía de acceso fronteriza entre O Smach y la localidad de Chong Chom en la provincia de Surin, en Tailandia. Desde entonces han funcionado una serie de casinos en el área, permitiendo a los tailandeses apostar en Camboya sin necesidad de pasar por la inmigración camboyana.<ref name=econ>{{cita noticia|título=Casinos in Cambodia: When the luck runs out|url=http://www.economist.com/blogs/banyan/2014/10/casinos-cambodia|fechaacceso=10 de noviembre de 2015|obra=The Economist|fecha=23 de octubre de 2014}}</ref> Las apuestas son ilegales en Tailandia y en Camboya son legales solamente para personas con pasaportes extranjeros, por lo tanto esta práctica se ha vuelto atractiva para los ciudadanos tailandeses. O Smach está localizada al final de la Ruta 68, la cual se convierte en la vía nacional n.º 6 en Kravanh, en la provincia de [[Siem Reap]].<ref name=Hatsu>{{cita publicación|last1=Hatsukano|first1=Naomi|editor1-last=Ishida|editor1-first=Masami|título=Will the Emerald Triangle Development Cooperation Be Reactivated? : The Silent Cooperation Scheme between Cambodia, Lao PDR and Thailand|publicación=BRC Research Report|fecha=2012|volumen=11|url=http://www.ide.go.jp/English/Publish/Download/Brc/pdf/11_02.pdf|fechaacceso=10 de noviembre de 2015|series=Five Triangle Areas in The Greater Mekong Subregion|editorial=Bangkok Research Center, IDE-JETRO|ubicación=Bangkok, Thailand|urlarchivo=https://web.archive.org/web/20160304090829/http://www.ide.go.jp/English/Publish/Download/Brc/pdf/11_02.pdf|fechaarchivo=4 de marzo de 2016}}</ref>

== Actividades fronterizas ==
[[Archivo:Banner of the Communist Party of Kampuchea.svg|thumb|left|Bandera oficial de los [[Jemeres Rojos]], guerrilla que controlaba la frontera entre O Smach y [[Tailandia]]]]
La mayor parte de la frontera norte con Tailandia está formada por el [[escarpe]] de las montañas Dangrek. Existe un paso natural entre O Smach y la ciudad tailandesa de Chong Chom. Este lugar ha sido utilizado desde épocas ancestrales como paso entre la parte baja de Camboya y la meseta Khorat. Entre el comienzo de la [[Guerra Civil de Camboya|guerra civil de Camboya]] y la rendición de los últimos miembros de los jemeres rojos que se habían refugiado en Anlong Veng, esta guerrilla controló el área, generando inconvenientes debido al intercambio ilegal de madera entre Camboya y Tailandia. Luego de la rendición final de la guerrilla en 1999, la región nuevamente se volvió segura para los turistas y los habitantes, concluyendo en la inauguración de un cruce fronterizo entre las dos naciones en el año 2003. El cruce sufrió algunos cierres entre 2008 y 2011 durante las tensiones causadas por la [[disputa del templo Preah Vihear]] entre ambos países.<ref name=Hatsu /> La mayoría de turistas que visitan la provincia de Siem Reap cruzan la frontera hacia [[Poipet]], la cual se ha convertido en un área atractiva para los apostadores debido al fácil acceso a la misma desde la capital [[Bangkok]].<ref name=Hatsu /><ref>{{cita noticia|last1=Chan|first1=Muyhong|título=New border crossing set to make trade easier|url=http://www.phnompenhpost.com/new-border-crossing-set-make-trade-easier|fechaacceso=10 de noviembre de 2015|obra=The Phnom Penh Post|fecha=3 de marzo de 2015}}</ref>

O Smach obtiene beneficios del comercio internacional. El principal producto de exportación de Camboya a través de O Smach es la [[yuca]] o mandioca. También hay un gran mercado para las bicicletas de segunda mano, las cuales son importadas a Camboya desde tierras japonesas, siendo llevadas a O Smach y vendidas en la frontera a los tailandeses en los mercados de Chong Chom. Las importaciones primarias de O Smach son generalmente equipos de granja de segunda mano como tractores y camiones. Los materiales de construcción y productos derivados del petróleo también son importados a Camboya a través de O Smach.<ref name=Hatsu />

== Desarrollo ==
En 2015 se empezó a implementar una ruta de bus entre Siem Reap y O Smach. El trayecto, de aproximadamente dos horas y media de duración, tiene un costo promedio de 12 dólares y es utilizado especialmente por camboyanos que se dirigen por una mejor atención médica al poblado de Surin, donde el dialecto jemer es comúnmente hablado.<ref name=Hospital/> Luego de pagar 10.000 [[Riel camboyano|rieles camboyanos]] (dos dólares y medio aproximadamente) en trámites fronterizos, atraviesan la frontera a pie y toman un [[minivan]] tailandés que los lleva hacia la etapa final del viaje, un tramo de 45 minutos entre O Smach y Surin por 80 [[Baht tailandés|bahts tailandeses]] adicionales (cincuenta centavos de dólar).<ref name=Hospital>{{cita noticia|last1=Ritz|first1=Naomi-Collett|título=Thai Hospitals Making Inroads|url=http://www.khmertimeskh.com/news/16034/thai-hospitals-making-inroads/|fechaacceso=10 de noviembre de 2015|obra=Khmer Times|fecha=22 de septiembre de 2015}}</ref> También en el 2015, en un encuentro de negocios llevado a cabo en Siem Reap, empresarios tailandeses y camboyanos decidieron invertir en un servicio de buses con algunas facilidades como aire acondicionado entre Siem Reap y O Smach. El servicio fue programado para ponerse en marcha antes del inicio de la exhibición de elefantes de Surin, con el fin de darle facilidad de acceso a los ciudadanos de Camboya interesados en participar de esta festividad anual.<ref>{{cita noticia|título=Thai and Cambodian traders sign tens of business deals, worth nearly THB2,000m.|url=http://thainews.prd.go.th/website_en/news/news_detail/WNECO5806270010007|fechaacceso=10 de noviembre de 2015|obra=National News Bureau of Thailand|fecha=27 de junio de 2015|urlarchivo=https://web.archive.org/web/20151121083549/http://thainews.prd.go.th/website_en/news/news_detail/WNECO5806270010007|fechaarchivo=21 de noviembre de 2015}}</ref>

== Referencias ==
{{listaref}}

== Enlaces externos ==
{{Traducido ref|en|O Smach|oldid=|trad=|fecha=}}

{{Control de autoridades}}
[[Categoría:Localidades de Camboya]]

title: O Smach · អូរស្មាច់

Entidad: Ciudad

• País: Camboya


text:
# Tetiana Vodopianova
Tetiana Vodopianova –en ucraniano, Тетяна Водоп'янова– (Rokytne, 11 de enero de 1973) es una deportista ucraniana que compitió en biatlón. Ganó cinco medallas en el Campeonato Mundial de Biatlón entre los años 1996 y 2001, y dos medallas de plata en el Campeonato Europeo de Biatlón, en los años 1995 y 1996.

## Palmarés internacional
| Campeonato Mundial | Campeonato Mundial      | Campeonato Mundial | Campeonato Mundial |
| Año                | Lugar                   | Medalla            | Prueba             |
| ------------------ | ----------------------- | ------------------ | ------------------ |
| 1996               | Ruhpolding (Alemania)   | Medalla de plata   | Equipo             |
| 1996               | Ruhpolding (Alemania)   | Medalla de bronce  | Relevos            |
| 1997               | Osrblie (Eslovaquia)    | Medalla de bronce  | Equipo             |
| 2000               | Oslo (Noruega)          | Medalla de bronce  | Relevos            |
| 2001               | Pokljuka (Eslovenia)    | Medalla de bronce  | Relevos            |
| Campeonato Europeo |                         |                    |                    |
| Año                | Lugar                   | Medalla            | Prueba             |
| 1995               | Grand-Bornand (Francia) | Medalla de plata   | Relevos            |
| 1996               | Val Ridanna (Italia)    | Medalla de plata   | Relevos            |

title: Tetiana Vodopianova

wikitext:
{{Ficha de deportista
|nombre              = Tetiana Vodopianova
|nombrecompleto      = Tetiana Vodopianova
|lugar nacimiento    = [[Rokytne]], [[URSS]]
|fecha nacimiento    = {{Fecha|11|1|1973|edad}}
|lugar fallecimiento =
|fecha fallecimiento =
|representante       = {{UKR}}
|deporte             =  [[Biatlón]]
|medallista olímpico =
|medallas            =
{{Medalla deportiva|[[Biatlón]] femenino}}
{{Tabla de medallas
| [[Campeonato Mundial de Biatlón|Campeonato Mundial]] |0|1|4
| [[Campeonato Europeo de Biatlón|Campeonato Europeo]] |0|2|0
}}
}}
'''Tetiana Vodopianova''' –en [[Idioma ucraniano|ucraniano]], '''Тетяна Водоп'янова'''– ([[Rokytne]], 11 de enero de 1973) es una deportista [[Ucrania|ucraniana]] que compitió en [[biatlón]].{{olympedia|fechaacceso=25 de abril de 2024}} Ganó cinco medallas en el [[Campeonato Mundial de Biatlón]] entre los años [[Campeonato Mundial de Biatlón de 1996|1996]] y [[Campeonato Mundial de Biatlón de 2001|2001]], y dos medallas de plata en el [[Campeonato Europeo de Biatlón]], en los años [[Campeonato Europeo de Biatlón de 1995|1995]] y [[Campeonato Europeo de Biatlón de 1996|1996]].{{ibu|id=BTUKR21101197301|fechaacceso=25 de abril de 2024}}

==Palmarés internacional==
{| class="wikitable center col2izq" style="text-align:center;width:445px;"
|-
! colspan=4| [[Campeonato Mundial de Biatlón|Campeonato Mundial]]
|-
! Año
! Lugar
! Medalla
! Prueba
|-
| [[Campeonato Mundial de Biatlón de 1996|1996]]
| [[Ruhpolding]] {{CdP|GER}}
| {{Med-p}}
| Equipo
|-
| [[Campeonato Mundial de Biatlón de 1996|1996]]
| [[Ruhpolding]] {{CdP|GER}}
| {{Med-b}}
| Relevos
|-
| [[Campeonato Mundial de Biatlón de 1997|1997]]
| [[Osrblie]] {{CdP|SVK}}
| {{Med-b}}
| Equipo
|-
| [[Campeonato Mundial de Biatlón de 2000|2000]]
| [[Oslo]] {{CdP|NOR}}
| {{Med-b}}
| Relevos
|-
| [[Campeonato Mundial de Biatlón de 2001|2001]]
| [[Pokljuka]] {{CdP|SLO}}
| {{Med-b}}
| Relevos
|-
! colspan=4| [[Campeonato Europeo de Biatlón|Campeonato Europeo]]
|-
! Año
! Lugar
! Medalla
! Prueba
|-
| [[Campeonato Europeo de Biatlón de 1995|1995]]
| [[Grand-Bornand]] {{CdP|FRA}}
| {{Med-p}}
| Relevos
|-
| [[Campeonato Europeo de Biatlón de 1996|1996]]
| [[Val Ridanna]] {{CdP|ITA}}
| {{Med-p}}
| Relevos
|}

==Referencias==
{{listaref}}

{{NF|1973||Vodopianova, Tetiana}}
[[Categoría:Biatletas de Ucrania]]
[[Categoría:Nacidos en Kiev]]

title: Datos personales

Nacimiento: Rokytne, URSS · 11 de enero de 1973 (52 años)

title: Carrera deportiva

Representante de: Ucrania

Deporte: Biatlón

title: Biatlón femenino

Evento: O · P · B


text:
# Xolostitla de Morelos
Xolostitla de Morelos es una localidad de México perteneciente al municipio de Epazoyucan en el estado de Hidalgo.

## Geografía
Se encuentra entre los límites de la Comarca Minera y los llanos de Apan. A la localidad le corresponden las coordenadas geográficas 20° 3’ 58.303” de latitud norte y 98° 38’ 19.08” de longitud oeste, con una altitud de 2466 m s. n. m. Se encuentra a una distancia aproximada de 5.75 kilómetros al norte de la cabecera municipal, Epazoyucan.
En cuanto a fisiografía se encuentra dentro de las provincia del Eje Neovolcánico, dentro de la subprovincia de Lagos y Volcánes de Anáhuac; su terreno es de llanura y lomerío. En lo que respecta a la hidrografía se encuentra posicionado en la región del río Panuco, dentro de la cuenca del río Moctezuma, en la subcuenca del río Tezontepec. Cuenta con un clima semiseco templado.

## Demografía
En 2020 registró una población de 1217 personas, lo que corresponde al 7.47 % de la población municipal. De los cuales 596 son hombres y 621 son mujeres. Tiene 348 viviendas particulares habitadas.
| Gráfica de evolución demográfica de Xolostitla de Morelos entre 1900 y 2020                  |
|                                                                                |
| Población de los censos y conteos del Instituto Nacional de Estadística y Geografía (INEGI). |

## Economía
La localidad tiene un grado de marginación bajo y un grado de rezago social muy bajo.

title: Xolostitla de Morelos

wikitext:
{{Ficha de entidad subnacional
|nombre                = Xolostitla de Morelos
|unidad                =
|bandera               = no
|escudo                = no
|artículo escudo       =
|tipo_superior_1       = [[Organización territorial de México|Estado]]
|superior_1            = [[Estado de Hidalgo|Hidalgo]]
|tipo_superior_2       = [[Anexo:Municipios de Hidalgo|Municipio]]
|superior_2            = [[Epazoyucan (municipio)|Epazoyucan]]
|imagen                =
|pie_de_imagen         =
| mapa_loc             = México
| tam_mapa_loc         = 275px
| imagen_marca_loc     = Map pointer.svg
| tam_marca_loc        = 10
| mapa_loc_1           = Hidalgo
| tam_mapa_loc_1       = 275px
| imagen_marca_loc_1   = Map pointer.svg
| tam_marca_loc_1      = 10
|código_postal         = 43587<ref>{{Cita web |url=https://www.correosdemexico.gob.mx/SSLServicios/ConsultaCP/Descarga.aspx|título=Consulta Códigos Postales |autor=[[Correos de México]]|obra=[[Secretaría de Comunicaciones y Transportes]]|editorial=[[Gobierno de México]]|fechaacceso=2 de septiembre de 2018}}</ref>
|prefijo telefónico    = 771<ref>{{Cita web|url=https://telmex.com/web/buscador/claves_lada|título=Consulta de Claves LADA |autor=[[Telmex]]|obra=Teléfonos de México|fechaacceso=2 de septiembre de 2018}}</ref>
|población             = 1217
|población_año         = 2020
|población_post        = <ref name="INEGI">{{cita web |url=https://www.inegi.org.mx/app/descarga/ficha.html?tit=325911&ag=0&f=csv|título=Principales resultados por localidad (ITER). Hidalgo |fecha=2020|fechaacceso=25 de enero de 2021|autor=Instituto Nacional de Estadística y Geografía}}</ref>
|página web            =
|horario               = [[UTC-6]]
|horario_verano        = [[UTC-5]]
}}
'''Xolostitla de Morelos''' es una [[localidad de México]] perteneciente al [[municipio de Epazoyucan]] en el [[estado de Hidalgo]].

== Geografía ==

Se encuentra entre los límites de la [[Comarca Minera]] y los [[llanos de Apan]]. A la localidad le corresponden las coordenadas geográficas {{nowrap|20° 3’ 58.303”}} de [[latitud]] [[norte]] y {{nowrap|98° 38’ 19.08”}} de [[Longitud (cartografía)|longitud]] [[oeste]], con una altitud de 2466 {{esd|[[m s. n. m.]]}}<ref name="HistoricoLocalidades">{{cita web|autor=[[INEGI]]|url=https://www.inegi.org.mx/app/geo2/ahl/|título=Archivo histórico de localidades geoestadísticas|obra=[[Instituto Nacional de Estadística y Geografía]]|fechaacceso=28 de diciembre de 2020}}</ref> Se encuentra a una distancia aproximada de 5.75 kilómetros al norte de la cabecera municipal, [[Epazoyucan]].

En cuanto a [[fisiografía]] se encuentra dentro de las provincia del [[Eje Neovolcánico]], dentro de la subprovincia de Lagos y Volcánes de Anáhuac; su terreno es de [[llanura]] y [[loma|lomerío]].<ref name="INAFED">{{cita web|autor1=[[Instituto Nacional para el Federalismo y el Desarrollo Municipal]]|título=Enciclopedia de los Municipios y Delegaciones de México: Epazoyucan, Hidalgo|url=http://www.inafed.gob.mx/work/enciclopedia/EMM13hidalgo/municipios/13022a.html|obra=[[Secretaría de Gobernación de México|Secretaría de Gobernación]]|editorial=[[Gobierno de México]]|fecha=2013|fechaacceso=2 de septiembre de 2018|fechaarchivo=2 de octubre de 2017|urlarchivo=https://web.archive.org/web/20171002104442/http://www.inafed.gob.mx/work/enciclopedia/EMM13hidalgo/municipios/13022a.html|deadurl=yes}}</ref><ref name="ProntuarioHidalgo">{{cita web|autor1=INEGI|título=Epazoyucan, Hidalgo|url=http://www3.inegi.org.mx/contenidos/app/mexicocifras/datos_geograficos/13/13022.pdf|obra=Prontuario de información geográfica municipal de los Estados Unidos Mexicanos|editorial=[[Instituto Nacional de Estadística y Geografía]]|fechaacceso=2 de septiembre de 2018|formato=PDF}}</ref><ref>{{cita web|autor1=INEGI|título=Fisiografía|url=https://www.inegi.org.mx/temas/fisiografia/|obra=Marco Geoestadístico|editorial=Instituto Nacional de Estadística y Geografía|fechaacceso=28 de diciembre de 2020}}</ref> En lo que respecta a la [[hidrografía]] se encuentra posicionado en la [[Río Panuco|región del río Panuco]], dentro de la cuenca del [[río Moctezuma]], en la subcuenca del [[río Tezontepec]].<ref name="INAFED" /><ref name="ProntuarioHidalgo" /><ref>{{cita web|autor1=INEGI|título=Hidrografía|url=https://www.inegi.org.mx/temas/hidrografia/|obra=Marco Geoestadístico|editorial=Instituto Nacional de Estadística y Geografía|fechaacceso=28 de diciembre de 2020}}</ref> Cuenta con un [[clima]] semiseco templado.<ref name="INAFED" /><ref name="ProntuarioHidalgo" /><ref>{{cita web|autor1=INEGI|título=Climatología|url=https://www.inegi.org.mx/temas/climatologia/|obra=Marco Geoestadístico|editorial=Instituto Nacional de Estadística y Geografía|fechaacceso=28 de diciembre de 2020}}</ref>

== Demografía ==

En 2020 registró una población de 1217 personas, lo que corresponde al 7.47 % de la población municipal.<ref name="catalogo">{{cita web|autor=Catálogo Localidades - Microrregiones|título=Xolostitla de Morelos|url=http://www.microrregiones.gob.mx/catloc/contenido.aspx?refnac=130220025|obra=[[Secretaría de Desarrollo Social de México|Secretaría de Desarrollo Social]]|editorial=[[Gobierno de México]]|fechaacceso=2 de septiembre de 2018}}</ref> De los cuales 596 son hombres y 621 son mujeres.<ref name=catalogo /> Tiene 348 viviendas particulares habitadas.<ref name=catalogo />

{{Gráfica de evolución|tipo=demográfica|1900|297|1910|358|1921|362|1930|419|1940|432|1950|548|1960|754|1970|700|1980|882|1990|903|1995|1011|2000|1056|2005|1039|2010|1179|2020|1217|notas={{leyenda|#88c2cc|[[Población]] de los censos y conteos del [[Instituto Nacional de Estadística y Geografía]] (INEGI).<ref name="HistoricoLocalidades" />}}}}

== Economía ==
La localidad tiene un grado de [[marginación]] bajo y un grado de rezago social muy bajo.<ref name="catalogo" />

== Véase también ==
{{Portal|Hidalgo|Estado de Hidalgo}}

* [[Epazoyucan (municipio)#Localidades|Localidades del municipio de Epazoyucan]]
* [[Anexo:Localidades del estado de Hidalgo|Localidades del estado de Hidalgo]]

== Referencias ==
{{listaref|2}}

== Enlaces externos ==

* [http://epazoyucan.hidalgo.gob.mx/ H. Ayuntamiento Epazoyucan] {{Wayback|url=http://epazoyucan.hidalgo.gob.mx/ |date=20190822223634 }} - Sitio oficial
* [http://www.hidalgo.gob.mx Gobierno del estado de Hidalgo] - Sitio oficial

{{Control de autoridades}}
[[Categoría:Localidades del municipio de Epazoyucan]]
[[Categoría:Localidades epónimas de José María Morelos]]

title: Xolostitla de Morelos

Entidad: Localidad de México

• Estado: Hidalgo

• Municipio: Epazoyucan