El modelo estándar de las partículas elementales

Hace pocos días ha salido a la luz unos resultados experimentales de dos grupos de investigación del Fermilab (DZero y CDF). Estos resultados han obtenido cierta relevancia en internet, apareciendo en algunos blogs. Algunos de ellos son los siguientes:

http://francisthemulenews.wordpress.com/2011/07/01/confirmada-a-4-sigma-la-asimetria-cp-en-los-mesones-bs-neutros-tras-analizar-9-fb-de-colisiones-en-dzero-del-tevatron-en-el-fermilab/

http://ultima-hora.bichotoblog.com/confirmada-a-4-sigma-la-asimetria-cp-en-los-mesones-bs-neutros-tras-analizar-9-fb-de-colisiones-en-dzero.html

http://resonaances.blogspot.com/2011/07/d0-4-sigma-like-sign-dimuon-anomaly.html

Imagen aérea Fermilab
Vista aerea del Fermilab con localización de DZero y CDF

Todos ellos basados en estos resultados experimentales hechos públicos hasta la fecha:

http://arxiv.org/pdf/1106.6308v1
http://www-d0.fnal.gov/Run2Physics/WWW/results/final/B/B11B/BruceHoeneisen_WineCheese30June2011.pdf

También han surgido algunas críticas en cuanto al lenguaje empleado en estos artículos que ciertamente no eran dirigidos a neofitos en la materia. Muchos de ellos eran simples copias/traducciones de las publicaciones de estos científicos.

En el siguiente artículo trataré de explicar lo que se comenta en alguno de estos artículos y su importancia relativa. Para ello empezaré copiando parte del artículo de francisthemulenews.wordpress.com para intentar ir explicando lo que se dice aquí y su significado:

El modelo estándar de las partículas elementales predice un valor de −0,028 ± 0,005 pero el experimento DZero del Tevatrón en el Fermilab ha obtenido un valor de −0,787 ± 0,172 (stat) ± 0,093 (syst), que difieren en 3,9 σ (desviaciones estándares), es decir, con una confianza estadística del 99,99%. Casi un descubrimiento definitivo (que requiere 5 σ), este resultado indica que la violación de la simetría CP en la física de los mesones Bs neutros, formados por un par quark-antiquark de tipo bottom (b) y extraño (s), es mucho mayor de lo predicho por el modelo estándar. Aún no se conoce el origen de esta asimetría CP y por qué solo parece actuar sobre los mesones Bs, pero dicha fuente podría ser la responsable de la asimetría entre materia y antimateria en el universo temprano. En1964, los físicos Christenson, Cronin, Fitch, y Turlay descubrieron una asimetría CP similar en los mesones K neutros, compuestos de un par quark-antiquark strange (s) y down (d), pero dicha asimetría es más débil de lo necesario para explicar la asimetría observada en el universo entre materia y antimateria, lo que sugiere que debe haber otras asimetrías CP adicionales y la nueva asimetría en mesones Bs podría ser la respuesta. Os recuerdo que la asimetría CP indica que el mesón Bs formado por un quark b y un antiquark s se desintegra de forma diferente al formado por un quark s y un antiquark b. Los dos experimentos del Tevatrón, CDF y DZero, han observado esta anomalía. Seguramente durante este verano se publicarán resultados sobre ella en los experimentos del LHC del CERN, en concreto ATLAS, CMS y sobre todo LHCb; para finales de este año sabremos de forma definitiva si esta anomalía existe. Muchos creen que el primer gran resultado científico del LHC del CERN será la confirmación de esta anomalía y de que tiene la magnitud suficiente para explicar la asimetría entre materia y antimateria en el universo. Los interesados en detalles técnicos pueden consultar el artículo técnico DZero Collaboration, “Measurement of the anomalous like-sign dimuon charge asymmetry with 9 fb^-1 of p pbar collisions,” ArXiv, 30 Jun 2011 [todas las figuras del estudio]. También recomiendo consultar la charla de Bruce Hoeneisen, “Measurement of the anomalous like-sign dimuon charge asymmetry with 9 /fb of p-pbar collisions,” Fermilab Wine & Cheese, 30 June 2011.

Pues bien, para comenzar por el principio necesitamos saber que es eso del “modelo estándar de las partículas elementales“. Pues bien este modelo estándar de la física de partículas es una teoria que trata de explicar las interacciones que gobiernan las relaciones entre partículas elementales que componen toda la materia de nuestro universo. Esta teoría está basada en la teoría cuántica de campos y es consistente con la relatividad especial y la mecánica cuantica. Es una teoría no completa pues sólo tiene en cuenta 3 de las 4 interacciones fundamentales: la electromagnética, la nuclear fuerte y la nuclear débil. Quedando excluida la gravitatoria.

Las interacciones nucleares tanto fuertes como debiles tienen un rango de actuación muy limitado. Confinados en regiones inferiores a las de un núcleo atómico (de ahí su nombre). La fuerza nuclear fuerte tiene un alcance inferior a 10^-15 metros (los neutrones y protones son sólo alrededor de 3 veces más grandes). Y la fuerza nuclear débil tiene un alcance de como mucho 10^-18 metros. Mil veces más pequeño que un núcleo atómico. Además esta fuerza es 10^13 veces más débil que la fuerza nuclear fuerte de ahí su nombre.

Por otro lado necesitamos conocer también cuales son las partículas elementales de este modelo. Podemos clasificar estas partículos en 2 grandes grupos: los bosones y los fermiones

Los bosones tienen las siguientes características:

– Tienen un momento angular intrínseco o espín entero (0,1,2,…)
– No cumplen el principio de exclusión de Pauli y siguen la estadística de Bose-Einstein
– La función de onda cuántica que describe sistemas de bosones es simétrica respecto al intercambio de partículas

La segunda y tercera característica son consecuencia de la primera.

Existen bosones compuestos como el pión, el núcleo de deuterio, los núcleos de helio-4 (partículas alfa) o en definitiva cualquier núcleo de espín entero. Los bosones simples serían: los fotones (responsables de la interacción electromagnética), los bosones W y Z (responsables de la interacción débil), los gluones (responsables de la interacción fuerte), el bosón de Higgs (teórico) y los bosones X (teóricos)

Son este tipo de pártículas las mediadoras en las interacciones fundamentales. Un bosón virtual interacciona con fermiones reales dando lugar a dichas interacciones o fuerzas fundamentales.

Los fermiones es el otro tipo de partícula sus caracteristicas principales son:

– Tienen un espín semientero (1/2,3/2,…)
– Cumplén el principio de exclusión de Pauli y siguen las estadísticas de Fermi-Dirac
– Tienen funciones de onda antisimétricas

Una partícula compuesta, formada por varias elementales, será un fermión o un bosón dependiendo sólo del número de fermiones que contenga. Si tiene un número par de fermiones será un bosón y si contiene un número impar será un fermión.

Las partículas elementales que son fermiones serán los quark (sufren la interacción nuclear fuerte) y los leptones (electrones, muones, taones y los 3 neutrinos de cada uno de los anteriores). Los leptones no experimentan la interacción fuerte.

Los quarks por su parte se presentan en 6 sabores diferentes (arriba (up), abajo (down), cima (top), fondo (bottom), encanto (charm) y extraño (strange))) y nunca se encuentran aislados en la naturales sino siempre formando agrupaciones llamadas hadrones. Una agrupación de 2 quarks es conocida como mesón y una de 3 como bariones. Existen evidencias experimentales de que existen tetraquarks y pentaquarks (agrupaciones de 4 y 5 quarks respectivamente).

Los mesones estarían formados por quark y antiquark y dos ejemplos de este grupo de partículas serían los piones y los kaones. Este es el grupo de partículas que se mencionan en el artículo. Concretamente la de los mesones Bs neutros formados por un quark/antiquark fondo y un quark/antiquark extraño.

Los bariones por su parte están formados por agrupaciones de 3 quarks y pertenecen a este grupo los neutrones y los protones. Aunque existen multitud de ellos aunque son todos inestables.

He mencionado arriba la dicotomía particula/antipartícula, o quark-antiquark. Una particula se diferencia de su antipartícula exclusivamente en que tiene una carga de sentido contrario a esta.

Pues bien ya tenemos todos los ingredientes necesarios para entender lo que es el modelo estándar. Sólo nos falta saber algo sobre las reglas que determinan las interacciones permitidas entre las partículas elementales. Recordemos que existen 3 tipos de interacciones en el modelo estándar (electromagnética, nuclear fuerte y nuclear débil) y las partículas que, resumiendo, podemos dividir en bosones y fermiones.

Las interacción entre las partículas se pueden representar mediante lo que se conoce como diagramas de Feymann

Diagrama de Feymann mostrando la aniquilación de un electrón y un positrón produciendo quarks y gluones
Diagrama de Feymann mostrando la aniquilación de un electrón y un positrón produciendo quarks y gluones

Ahora sólo hay que ver que reglas siguen todas estas interacciones. Pues bien; las reglas principales para poder predecir que tipos de interacciones puede darse entre diferentes partículas no son más que las dictadas por las leyes de conservación que deben seguir todas estas interacciones. Por ejemplo una de ellas es la de la conservación de la carga. La carga debe permanecer igual en una interacción. Otra la conservación del espín. Existen multitud de ellas. Pero ¿De donde surgen estas leyes de conservación?

La matemática alemana Emmy Noether enunció un teorema que dice lo siguiente “Toda simetría lleva asociada un ley de conservación y viceversa”. Este teorema, llamado teorema de Noether, es quizás uno de los teoremas matemáticos más importantes jamás probados entre los que guían el desarrollo de la física moderna.

Ahora la pregunta queda reformulada de la siguiente manera ¿Cuales son las simetrías que existen en nuestro universo? (y que a su vez definirán las leyes de conservación que rigen las relaciones entre las partículas elementales)

Existen 3 tipos principales de simetrías:

La simetría C (carga) o simetría de carga: Las leyes de la física serían las mismas si se pudiesen intercambiar las partículas con carga positiva y las de carga negativa.

La simetría P (paridad) o simetría especular: El universo se comportaría igual que su imagen especular

La simetría T (tiempo) o simetría temporal: El universo se comportaría igual si invirtieramos el avance sobre el tiempo

Existen además combinaciones de estas simetrías. Por ejemplo la simetría CP sería la unión de la simetría C y la simetría P

La interacción nuclear fuerte, la gravedad y el electromagnetismo cumplen la simetría CP. Pero a mediados del siglo XX se descubrió que la interacción débil no cumple esta simetría. Como se menciona en el artículo esto fue en 1964 por los físicos Christenson, Cronin, Fitch, y Turlay. Esta interacción débil es la que se manifiesta en ciertas desintegraciones radiactivas.

Admitiendo la violación de esta simetría se puede explicar por qué en el universo existe más materia que antimateria.

El artículo trata precisamente de este tema. Tras estudiar un tipo de mesones Bs neutros formados por quark y antiquark bottom y strange se afirma que el efecto de la violación de simetría CP es mayor de lo esperado bajo las predicciones del modelo estadar además de que la interacción detectada puede implicar la existencia de una partícula desconocida y de un neutrino. Aunque el rango de certeza no es suficiente hasta la fecha para afirmarlo con rotundidad. Es posible que el LHC (Large Hadron Collider en Ginebra) pueda arrojar más luz sobre este descubrimiento.

Glosario de terminos empleado en el artículo (para entenderlo todavia mejor)

Tevatrón: acelerador de partículas circular del Fermilab Batavia, Illinois (Estados Unidos), es un sincrotrón que acelera protones y antiprotones hasta casi 1 TeV
D0 o DZero nombre experimento consistente en coloboración mundial de cientificos para descubir la naturaleza fundamental de la materia en Fermilab
CDF (collider detector at Fermilab) otro de los experimentos de colaboración dedicado al estudio de colisiones de partículas a altas energías
σ (desviacion estándar o desviación típica) medida de la centralización o dispersión en una dispersión de datos respecto al valor promedio. En una distribución normal
fm femtometro es igual a 10^-15 metros
b barn son unidades de area empleados para medirr la area eficaz en las colisiones entre partículas 1 barn = 10^-28 metros cuadrados y es igual aproximadamente al núcleo de un átomo de uránio.

Imagen del LHC (large hadron collider) cerca de Ginebra

Imagen aérea Fermilab
Imagen del LHC (large hadron collider) cerca de Ginebra

¿Cúal es tu navegador preferido?

Volviendo al tema recurrente de la guerra de los navegadores podemos ver que firefox sigue en cabeza y con cierta ventaja respecto a su más directo competidor Internet explorer. Pero, a día de hoy, ¿Cúal es tu navegador preferido?


Compararé los datos procedentes del tráfico a este blog con las votaciones, creo que va a haber algunas sorpresas…

Así comenzó google

Equipos con los que empezó google

Estos son los equipos con los que iniciaron el proyecto en la universidad de Standford. Larry Page y Sergey Brin en aquella época tenían 25 y 24 años respectivamente. El proyecto se llamaba entonces BackRub y era el año 1996 por lo que los equipos no estaban nada mal para la época. Además los consiguieron gracias a ayudas y donaciones, principalmente de IBM.

* 4-proc PPC 604 333mhz, 512mb, eight 9gb drives
* 2-proc UltraSparc II 200mhz, 256mb, three 9gb drives, six 4gb drives
* 2-proc Pentium II 300mhz, 512mb, five 9gb drives
* 2-proc Pentium II 300mhz, 512mb, four 9gb drives

* Disk expansion, eight 9gb drives
* Disk expansion, ten 9gb drives

Este era el resultado (Captura de google 1998 desde archive.org)

captura web google en sus origenes

Hoy en día google dispone de más de 500.000 servidores no hay otra entidad pública o privada con tal cantidad de servidores en internet.

Google original servers [EN]

Un Dios todopoderoso

Pues aquí estoy yo y soy todopoderoso. No es que lo haya escogido, es que es así. Nadie me ha dado a escoger porqué sino no sería todopoderoso. Desde el inicio de los tiempos, sea lo que sea lo que esto signifique, yo era todopoderoso ya. Haya habido principio o no. Eso siempre podríais justificarlo como una limitación filosófica de vuestra mente. Yo siempre he sido todopoderoso, quedaros con esto. Aunque lo de siempre os cause también problemas. Sois unos seres muy problemáticos ¡eh!

Pero que fijación tenéis con eso de todopoderoso. Quizás porque eso también choca con vuestras limitadas mentes, igual que lo del concepto de ‘siempre’ o ‘inicio’. Soy todopoderoso. Eso significa que no puedo, ni yo mismo, poner limite a mi poder. Si, estoy de acuero, por lo tanto no soy “todopoderoso”, llamadme si queréis quasi-todopoderoso. Imaginaros que fuera todopoderoso (a vuestra manera) y decidiera limitarme en algún sentido. Estaría perdiendo mis poderes y no sería todopoderoso. Por lo tanto es imposible ser todopoderoso, tenéis razón; tengo esa limitación: no puedo quitarme poderes…. Ja, ja, ja ¿Qué putada no? Ja ja ja ja… . Si, es sarcasmo.

Dios quasi-todopoderoso
Dios quasi-todopoderoso

A ver, qué más. Esto de intentar aliviar vuestras pajas mentales me está dando algún que otro quebradero de cabeza. ¡Ah si!, os preguntáis si soy buena persona y me dedico a hacer el bien o no. Ja ja ja ja, es que me troncho. Venga tíos seamos serios, eso del bien y el mal lo habéis inventado vosotros y ahora me queréis meter a mi en todo este asunto. Joder yo soy como quiero ser que para eso soy quasi-todopoderoso. Habéis visto que capacidad para recoger nuevos conceptos. Eso de hacer el bien es una absurda pantomima basada en el hecho de intentar haceros la vida lo mejor posible los unos a los otros y punto. No hay más misterio, una acción “buena” os facilita las cosas a vosotros mismos y a vuesto colectivo como especie o al grupo en el que os sintáis incluidos claro, porque también el concepto es extensible a animales, plantas u otros seres. No me exijáis/pidáis o me recéis que yo os haga bien o que os haga tener hijos/pareja/dinero/no-problemas, etc o todas esas cosas que estáis haciendo algunos, intendad hacerlo por vosotros mismos. Si invirtierais el tiempo que invertís en rezar en ayudaros entre vosotros sería tiempo mejor gastado. Os lo aseguro yo y eso sí que es garantía. Si ya pensáis que soy topoderoso y bondadoso no deberían quedaros dudas.

Menos mal que además soy centro de infinita sabiduría. Ja ja ja ja, esa frase, que es vuestra, también me hace gracia. Si, soy muy gracioso, como vosotros. Y si no te ríes ahora mismo te lanzo un rayo…

Ja ja ja ja ja humanos. Mirad si os matáis entre vosotros, allá vosotros. Si os mortificáis entre vosotros allá vosotros. Joder sé que es jodido pensar que estáis sólos en el universo pero tenéis que superarlo, que ya sois mayorcitos. Yo no voy ha hacer nada por vosotros. ¿O queréis más pruebas?. ¿Me habéis visto ir en ayuda vuestra cuando llega una enfermedad, un tsunami o alguna otra desgracia?. La mayoría de soluciones a vuestros problemas lo habéis conseguido vosotros mismos. ¡Enhorabuena y muchos animos! Yo no he tenido nada que ver.

Pues ala, no intentéis justificar vuestras acciones/atrocidades fingiendo que me seguís o que seguís mi mandato. Yo no os lo he pedido y no creáis a nadie que diga hablar por mi (o que diga que escuchó a otro hablar por mi). Simple y llanamente es mentira. ¿Para qué me iba a interesar a mi tener legiones de seguidores?. Si soy quasi-todopoderoso…

Posdata: Lo del ornitorrinco fue un error ¡Vale! Lo siento…

Ornitorrinco
Me salió un animal un poco raro lo admito

Cuerpo de nutria, piel de topo, cola de castor, pico de pato, patas de rana, dientes, pone huevos y es mamífero. Para los que seguís diciendo que no tengo sentido del humor.

Estoy hasta los cojones de…

  1. Los que señalan su muñeca cuando preguntan por la hora… Ya sé donde está mi puto reloj, colega, ¿dónde tienes el tuyo? ¿Me señalo yo los huevos cuando pregunto donde está el water?
  2. Los que se levantan del sofá para buscar el mando a distancia por todo el salón porque se niegan a acercarse a la tele y cambiar el canal manualmente.
  3. Las tias que te dicen “Sí, hombre, si quieres te bajo los pantalones y, encima, te la chupo”. ¡Pues claro! ¿Para qué me vas a bajar los pantalones si no me la vas a chupar?
  4. Los que dicen “Siempre está en el último lugar en el que miras”. Pues claro. ¿Quién cojones sigue buscando algo después de encontrarlo?
  5. Los que están viendo una película y dicen “¿Has visto eso?”. No, capullo, he pagado 5 euros para venir al cine y mirar el puto suelo.
  6. Los que preguntan “¿Puedo preguntarte una cosa?”. No me dejas elección, ¿no?
  7. Los que dicen cosas como “Mis ojos ya no son lo que eran”. ¿Y qué eran? ¿Orejas? ¿Botas de agua?
  8. Los que anuncian que se van al water. Gracias, pero no me hacía falta saberlo.
  9. Los currantes del MacDonalds que fingen que no te entienden a menos que pongas el “Mac” antes de la comida que estás pidiendo… Tienes que decir una MacHamburguesa de Pollo, si dices Hamburguesa de Pollo se quedan en blanco… Bueno, pues, me pones una MacPajita y te la meto por tu MacCulo, puto MacCapullo.
  10. Cuando tienes un accidente y te preguntan “¿Estás bien?”. Sí, sí, gracias, recojo mis piernas y me largo enseguida.

Como recuperar el password de root en GNU/Linux

Cuando has perdido el password de root de tu máquina GNU/Linux y no sabes como recuperarlo estas en problemas. Aquí tienes una pequeña guía sobre que puedes hacer para hacerte con el control de tu máquina.

En ella explico diversas métodos que podrías emplear. Como sabes muchas cosas pueden ir mal debido a las enormes posibilidades de configuración que ofrece este sistema operativo. No te desesperes si al emplear alguno no te funciona pasa al siguiente método. Si todo sigue sin funcionar escribe un comentario en esta entrada, quizás podamos ayudarte.

La forma más sencilla sería entrar en los gestores de arranque para forzar un arranque en modo single. Si empleas LILO bastaría con pulsar Ctrl-X y escribir en el prompt:

linux single

Si empleas GRUB generalmente sólo tendrás que pulsar “p” e introducir el password de GRUB si lo tienes configurado, sino evita este paso. Cuidado pues en algunas configuraciones debes primero pulsar ESC para que aparezca el menu de GRUB. Una vez en el menú debes buscar la linea con el kernel con el que quieras arrancar, selecciona esta linea y pulsar “e” para editarla. Al final de la linea que comienza por “kernel” introduce la palabra “single” y presiona ENTER para salir del modo de edición. De vuelta en el menú sólo debes arrancar con el kernel que acabas de modificar pulsando “b” (boot).

Atención: Es posible que tanto en LILO como en GRUB ya tengas una opción disponible para arrancar el sistema en modo single. Compruébalo antes de nada (modo rescue, single-user mode pueden ser sus nombres).

Ejemplo linea antes de editarla:

kernel /boot/vmlinuz-x.x.xx-x-xxx root=/dev/sda1 ro

Tras la edición

kernel /boot/vmlinuz-x.x.xx-x-xxx root=/dev/sda1 ro single

Si esto no te ha funcionado otro método sería descargarte alguna distro Live de GNU/linux

Debian Live
Knoppix

Arranca tu sistema con este sistema live. Posiblemente tengas que acceder a la Setup de la BIOS de tu equipo para cambiar la secuencia de arranque.

Después de arrancar el nuevo sistema accede a una terminal en modo root. Monta la partición de tu disco duro que contenga la carpeta /etc/

Por ejemplo si /etc se hallaba en la partición /dev/sda1 ejecuta:

# mount /dev/sda1 /mnt

accede al directorio donde has montado la partición

# cd /mnt

Verifica que aquí tienes tu sistema correctamente montado y con todo lo necesario y ejecuta chroot

# chroot /mnt

Ahora sólo tienes que ejecutar

# passwd

Y cambiar el password al que quieras

Si por cualquier motivo no puedes emplear chroot

Puedes directamente alterar los ficheros de passwords sin necesidad de chroot

vi /mnt/etc/passwd

o si empleas shadow passwords

vi /mnt/etc/shadow

En la entrada de root en el lugar donde aparece el password encriptado debes dejarlo vacío. Por ejemplo:

root:dhfuieb$5454I$$&$&6:14180:0:99999:7:::

Debería quedar así:

root::14180:0:99999:7:::

Arranca el sistema con normalidad, quitando el arranque live (CD,DVD, USB o lo que venga en el futuro) y cuando se te pida el password de root pulsa simplemente ENTER.

Si todo esto falla vuelve a arrancar con la distro live y monta ahora la partición donde tengas tu gestor de arranque /boot/ ahora ya es posible modificar los archivos de configuración de tu gestor de arranque GRUB o LILO para entrar en modo “single” antes de reiniciar el equipo. Busca la linea que comienza con kernel y añádele al final la palabra “single” de manera análoga a como lo hicimos antes a través del menú de GRUB

Patrones de diseño

Un patrón de diseño (en programación orientada a objetos, POO) es una descripción de diversos objetos y clases preparados para resolver un problema de diseño general aplicado a un contexto específico. Un patrón de diseño identifica las instancias y clases que participan en dicho patrón además de sus papeles, sus relaciones y sus responsabilidades para llevar a cabo la tarea a resolver. Cada patrón de diseño se centra en resolver un problema particular en la POO. Describe cuando se puede aplicar, si puede ser aplicado desde el punto de vista de las limitaciones del diseño y las consecuencias tanto positivas como negativas que tiene su utilización.

Pongamos un ejemplo: MVC (model-view-controller) consiste en 3 tipos de objetos. El modelo son los objetos de la aplicación (lógica de la aplicación), la vista es su representación a los usuarios y el controlador define la manera en el que la interfaz con el usuario (generado por la vista) reacciona ante la introducción de datos por parte del usuario. Dentro de MVC hay varios patrones de diseño que pueden ser empleados para facilitar el desarrollo de este tipo de arquitectura.

Por ejemplo la relación vista-controlador es un ejemplo del patrón de diseño “Strategy”. Strategy es un objeto que representa un algoritmo. El patrón es útil en realidad cuando pretendes reemplazar este algoritmo estática o dinamicamente cuanto tienes varias variantes del algoritmo o cuando el algoritmo tiene una estructura de datos compleja que quieres encapsular.

MVC usa otro patrón de diseño “Factory Method” para especificar la clase controladora por defecto para una vista y “Decorator” se puede emplear por ejemplo para añadir scroll a una vista. Pero la principal relación en MVC es dado por los patrones “Observer”, “Composite” y “Strategy”

Antes de describir alguno de ellos defino brevemente los parámetros que se emplean para describir los patrones de diseño:

Nombre del patrón y clasificación, intención (¿Que hace este patrón?) ,otros nombres por los que también es conocido, motivación (escenario que ilustra su funcionamiento), aplicabilidad (en que escenarios es válido), estructura (representación gráfica de las clases involucradas y diagramas de interacción para ilustrar secuencias de peticiones y colaboraciones entre objetos), participantes (clases, objetos y sus responsabilidades), colaboraciones (como los participantes pueden colaborar en sus responsabilidades), consecuencias (¿Cómo el patrón realiza su cometido?¿Cuales son los compromisos a tener en cuenta al aceptar esta solución?), implementación (dificultades, riesgos, pistas o técnicas a tener en cuenta a la hora de implementar el patrón), ejemplo de código, usos conocidos y patrones relacionados.

Nombre: Observer
Clasificación: Behavioral Patterns
También conocido como: Dependents, Publish-Subscribe, Event-Observer
Motivación: Un problema muy común al particionar un sistema en una colección de clases cooperativas es la necesidad de mantener la consistencia entre objetos relacionados pero sin tenerlos fuertemente acoplados ya que esto reduce su reusabilidad. El patrón define un sujeto y uno o varios observadores de este suejto. Todos los observadores son notificados si el sujeto lleva a cabo un cambio de estado (evento).
Aplicabilidad:
– Cuando un objeto cambia y esto requiere el cambio de varios objetos y se desconoce el número de objetos que necesitarán este cambio
– Cuando una abstracción tiene dos aspectos, una dependiente de la otra. Encapsular estos aspectos te permite variarlos y reusarlos independientemente
– Cuando un objeto tiene que notificar a otros objetos sin hacer asunciones sobre su naturaleza. En otras palabras no se quiere que estos objetos esten fuertemente acoplados
Estructura: Diagrama de clases
Diagrama de clases patrón observer

Participantes:
– Subject (conoce sus observers que pueden ser uno, ninguno o varios y proporciona un interfaz para registrar y desregistrar observadores)
– Observer (define un intefaz para actualizar que debe ser llamado cuando el subject cambia de estado)
– ConcreteSubject (almacena el estado de interes para los objetos ConcreteObserver y les envia notificaciones cuando su estado cambia)
– ConcreteObserver (Mantiene referencia al objeto ConcreteSubject, almacena estado de manera consistente con el del objeto ConcreteSubject e implementa interfaz de actualización para las notificaciones)
Colaboraciones: ConcreteSubject notifica a sus observadores sobre un cambio que podría hacer el estado de los observadores fuera inconsistente con el suyo propio. Después de ser informado el observador del cambio en el sujeto. El observador podría requerir informacion al sujeto para conciliar su estado
Consecuencias: El patrón observer te permite cambiar sujetos y observadores de manera independiente de manera que se pueden rehusar ambos. Puede violar la separación en capas de tu aplicación pues los observadores pueden pertenecer a capas diferentes de la del sujeto. Las actualizaciones en el sujeto pueden generar un coste desconocido pues no se sabe cuantos ni cuales observadores pueden estar registrados al sujeto.
Implementación: Temas conflictivos: mapear subjects a observers y observers a más de un subject. ¿Quien dispara la actualización? 2 opciones, el propio subject cuando cambia de estado o hacer a los clientes responsables de enviar la notificacion.
Ejemplos de código: Symfony event dispatcher
Usos conocidos: Cualquier interfaz de usuario GUI implementado empleando OOP como KDE
Patrones relacionados: Mediator, Singleton

Espero que os sea de utilidad. No puedo acabar si pasar la referencia a la biblia de los patrones de diseño creado por el Gang of Four (sus 4 autores)

Design Patterns. Elements of Reusable Object-Oriented Software – Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides – Addison Wesley (GoF- Gang of Four)

Ignorar ficheros y directorios en subversion

Es bastante sencillo cuando trabajamos con subversion u otros tipos de repositorios incluir en nuestra cópia de trabajo ficheros que no debemos subir al repositorio, como compilaciones, ficheros de prueba, ficheros del sistema operativo, logs, etc. Para que subversión los ignore tenemos diversos métodos.

Todos estos métodos modifican la propiedad svn:ignore

1) Editar directamente la propiedad para un directorio en concreto


$ svn propedit svn:ignore ./ruta_ficheros_a_ignorar

A continuación podemos indicar los ficheros a ignorar dentro de la ruta especificada permitiéndose el comodín ‘*’. Así para ignorar todos los ficheros dentro del directorio basta con indicar


\*

Puedes crear una lista de ficheros, uno por linea, por ejemplo:


\*.out
data.log
\*.tmp
test_\*

2) Otro método consistiría en editar el archivo global ~/.subversion/config

Busca la sección [miscellany] dentro de este fichero y cambia la propiedad global-ignores para ignorar los archivos que no deseas subir al repositorio. Hay que emplear un espacio como separador entre “ficheros” en lugar de poner uno por línea como hacíamos antes. Así:


global-ignores = \*.out data.log \*.tmp test_\*

Esto ignorará todos los ficheros que sigan este patrón en todos los repositorios que emplees en tu máquina local

3) Un último método sería empleando el comando propset de subversion


$ svn propset svn:ignore \*.tmp .

El punto final indicaría que es el directorio actual en donde deben ignorarse los fichero son extensión tmp

Podemos especificar un fichero donde tengamos todas las reglas para ignorar ficheros con el modificador -F, así:


svn propset svn:ignore -F ignore.txt .

Recuerda además que si empleas propset y propedit debes ejecutar un commit para que todo el mundo ignore estos ficheros. Ten esto en cuenta a la hora de definir lo que no quieres versionar.. svn:ignore es una propiedad; metadatos en el repositorio que también son versionados. Cada objeto dentro de subversion (ficheros, directorios, enlaces etc) puede tener esta u otras propiedades. Para saber que propiedades tiene un objeto en concreto en nuestro repositorio o copia de trabajo basta ejecutar:


$ svn proplist /ruta_objeto