Sintaxis en servicios WCF asíncronos

A la hora de generar servicios escalables que aprovechen el procesamiento en paralelo algunos detalles sintácticos deben realizarse literalmente. La nomenclatura puede perderse por el camino generando errores en el momento de ejecutar los servicios:

Your begin method must take an AsyncCallback and an object as the last two arguments and return an IAsyncResult.

Signatura no válida del método Begin asincrónico para el método miFuncionAsyncIniciar en el tipo de XXXX. El método Begin debe tomar AsyncCallback y un objeto como los dos últimos argumentos y devolver IAsyncResult

 

El procedimiento debe tener asociadas la tareas iniciando con el nombre Begin con los dos últimos parámetros AsynCallBack y object:

 

public interface IEjemplo
{

    [OperationContractAttribute]
    string MiFuncion(string mensaje, int otroParametro);

    [OperationContractAttribute(AsyncPattern = true)]
    IAsyncResult BeginMiFuncion(string mensaje, int otroParametro, AsyncCallback callback, object asyncState);

    //No se especifica OperationContractAttribute para el método de finalización.
    string EndMiFuncion(IAsyncResult result);

}

La documentación esta clara pero la traducción puede generar confusión con un sencillo erros de sintaxis obligatoria. 

 

How to: Implement an Asynchronous Service Operation

Sessions, Instancing, and Concurrency

 

Ejemplo completo de una excepción tipo:

 

System.InvalidOperationException: Signatura no válida del método Begin asincrónico para el método UnirAsyncIniciar en el tipo de ServiceContract XXXXXX. El método Begin debe tomar AsyncCallback y un objeto como los dos últimos argumentos y devolver IAsyncResult.
   en System.ServiceModel.Description.ServiceReflector.IsBegin(OperationContractAttribute opSettings, MethodInfo method)
   en System.ServiceModel.Description.TypeLoader.CreateOperationDescription(ContractDescription contractDescription, MethodInfo methodInfo, MessageDirection direction, ContractReflectionInfo reflectionInfo, ContractDescription declaringContract)
   en System.ServiceModel.Description.TypeLoader.CreateOperationDescriptions(ContractDescription contractDescription, ContractReflectionInfo reflectionInfo, Type contractToGetMethodsFrom, ContractDescription declaringContract, MessageDirection direction)
   en System.ServiceModel.Description.TypeLoader.CreateContractDescription(ServiceContractAttribute contractAttr, Type contractType, Type serviceType, ContractReflectionInfo& reflectionInfo, Object serviceImplementation)
   en System.ServiceModel.Description.TypeLoader.LoadContractDescriptionHelper(Type contractType, Type serviceType, Object serviceImplementation)
   en System.ServiceModel.Description.ContractDescription.GetContract(Type contractType, Type serviceType)
   en System.ServiceModel.ServiceHost.CreateDescription(IDictionary`2& implementedContracts)
   en System.ServiceModel.ServiceHostBase.InitializeDescription(UriSchemeKeyedCollection baseAddresses)
   en System.ServiceModel.ServiceHost..ctor(Type serviceType, Uri[] baseAddresses)
   en Microsoft.Tools.SvcHost.ServiceHostHelper.CreateServiceHost(Type type, ServiceKind kind)
   en Microsoft.Tools.SvcHost.ServiceHostHelper.OpenService(ServiceInfo info)

 

 

 

Nacionalistas buscan martir

Europa ha sufrido con anterioridad repetir una mentira mil veces y nunca ha terminado bien. Habiendo nacido, crecido y vivido en una provincia donde has escuchado siempre la misma canción adoctrinadora, no resulta fácil alzar la voz frente a la manipulación, señalado y marcado por discrepar frente a las invenciones.
 
El interés propio es necesario para que la deshonestidad se intensifique, durante años se ha adoctrinado desde los colegios a niños que hoy votan con una visión sesgada y reducida de la realidad que les rodea.
Un ejemplo simplificado: si durante años en la televisión vasca han mostrado la predicción meteorológica de Euskadi y Navarra juntas con diferentes escusas. Un niño que siempre lo ha visto de esa forma, tenderá a pensar que es lo normal… los medios con los que el nacionalismo se vale para influenciar en la educación es el caldo de cultivo para lo que esta ocurriendo en nuestros días, tanto en Cataluña como en otras comunidades.
La empatía entre las partes, resulta más difícil y asimétrica en cuanto más mentiras enturbian el fondo de la cuestión. Contra más tiempo pasa, más mentiras se acumulan, más difícil acercar posiciones, más complicado despejar la verdad.
Puedo comprender en parte, en un momento dado, llegar a votar a populismos desde la rabia, cayendo en las trampas de un discurso elaborado con lo que todo español cabreado por una situación de crisis podría pensar.
Frente a un contenido vacío de propuestas realistas siempre llega la coherencia necesaria, nunca desde la vieja escuela ni desde el discurso facilón.
No se equivoquen, el uno de octubre esta planeado desde hace tiempo, la búsqueda de confrontación física en la calle es una de las armas que utilizarán sin dudarlo. Que más desean en el des-gobierno actual de Cataluña que la foto de uno de sus integrantes con sangre o grilletes llenara la prensa, todo en favor de su dogma.
 
Esperemos que el Gobierno de España no materialice, como solución rápida, la asignación pública o en diferido de mayores beneficios fiscales o competencias. Postergando un nuevo enfrentamiento para generaciones futuras. Una más a añadir a la historia reciente.

Nacionalistas y populistas tienen un objetivo común, romper y dividir España en su propio beneficio.

Algo a lo que no estamos acostumbrados, en público sobre todo, luchar contra la mentira. La actitud pasiva de quienes no defienden la verdad es suficiente para que la deshonestidad se imponga por repetición. No es posible quedarse callado.
 
  • Carles Puigdemont: “Defenderemos hasta el final el derecho de todos los catalanes a decidir su futuro”
    En Cataluña se han celebrado 35 elecciones con garantías democráticas, entre ellas la ratificación de la constitución por mayoría.
  • Carles Puigdemont: “Los ciudadanos estamos convocados el día 1 de octubre para defender la democracia frente a un régimen represivo e intimidatorio”
    Mientras señaláis en carteles a quienes no comulgan con el nacionalismo.
  • Pablo Iglesias: “Si alguna vez llegamos al ejecutivo permitiremos que los catalanes puedan votar en un referéndum de autodeterminación”
    O como un comunista declarado tomaría el paso previo a un resultado no deseado, como en 1956 en Hungría.
     
  • Irene Montero: “Formaremos una Asamblea de parlamentarios y alcaldes por la libertad, la fraternidad y la convivencia frente a la opresión antidemocrática del PP”
    Por que el resultado de las elecciones parece no ser lo suficientemente democrático para sus intereses, excluyendo a quienes no piensan como ellos, se gana su mayoría como en los países a los que apoyan abiertamente…

 

 

Fuentes de alimentación Samsung: TV y monitores

Nos encontramos con un monitor de ordenador, pero se aplica también a televisores, el cual aleatoriamente se pone la pantalla en negro, puede que primero se encienda unos segundos, luego se apague, o tarde en encender desde segundos a minutos… cada vez funciona menos tiempo… «le cuesta arrancar al monitor» suelen describirlo. El piloto indicador esta iluminado pero el panel no muestra ninguna imagen, ni siquiera cuando pulsamos en los botones del propio monitor (menú, brillo…)

La fuente de alimentación ha empezado a funcionar mal, aunque es capaz de suministrar algo de tensión. En estos casos la propia placa suele estar protegida, al no llegar la corriente correcta se apaga. El problema y la solución que se describe a continuación es habitual, pero no quiere decir que sea el único posible problema.

Lo primero desmontamos el monitor, puedes utilizar una espátula de plástico o metal, mejor que un destornillador plano para no dejar marcas. La mayoría de estos modelos Samsung de la época no tienen ningún tornillo, van ensamblados con pestañas de plástico a presión, entre el marco trasero y el frontal:

Una vez quitada tapa exterior, con cuidado de no golpear el panel frontal, retiramos la protección de los conectores, dos solapas que mostraran las clavijas, en este caso son 4 (cuidado de no intercambiarlos entre ellos, marcarlos antes de retirarlos. En la parte superior presionar las dos pestañas para deslizar el conector plano hacia fuera, en conector lateral tiene una pequeña lengüeta igual que los del lado opuesto:

Ya tenemos acceso a la fuente de alimentación, Samsung suele nombrarlas como BN44-XXXXXX según cada modelo, en este caso BN44-0123B. Desconectamos el arnés y retiramos los 3 tornillos, el inferior izquierdo de la foto es el que hace masa con el cuerpo metálico y es diferente a los otros dos:

Con la fuente de alimentación fuera, observamos (en este caso) uno de los condensadores (capacitadores) dañado. Se puede apreciar a simple vista (en la foto algo más difícil, se señala con la flecha roja), en otros casos pueden estar rotos/explotados, dependiendo del tipo se separan de las placas o de la cubierta.

Junto al condensador en mal estado a la izquierda, el nuevo que sustituiremos des-soldando de la placa. Con la molestia que nos hemos tomado, podemos sustituir los otros 3, aunque no parezca que tengan daños externos, el coste de los 4 es inferior a los 50 céntimos.

Volvemos a montar a la inversa, podremos seguir funcionando con nuestro monitor. Este mismo proceso puede aplicarse a otros modelos y fabricantes similares.

 

Evolución y entornos Wifi: 802.11ac Wave 2

Wi-fi Alliance empezó a certificar en 2013 los primeros equipos con la primera revisión. Ha pasado más de un año (junio 2016), desde que se anunció la actualización del estándar Wifi, algunos de los dispositivos han podido actualizarse desde la primera especificación (wave 1) pero en la práctica suele ser más complejo pasar a Wave 2
 
Vamos a aclarar algunos de los términos más comunes para evaluar las mejorar según el entorno:
 
MIMO: Multiple input, multiple output. Esta característica viene utilizándose desde la aparición del estándar N. Simplificando podemos decir que la señal puede llegar al dispositivo por varias rutas, rebotando contra las paredes, por ejemplo, aumentando la velocidad y la cobertura tanto para el envío como la recepción.
Ahora que ya tenemos una conexión estable y funcional, nos encontramos con la limitación que en su día tenían las conexiones por cable al ser half-duplex, es decir, solo puede enviar o recibir, pero no las dos al mismo tiempo.
SU-MIMO: Single User MIMO. Se añade la posibilidad de emitir y recibir al mismo tiempo entre dos dispositivos (un punto de acceso y un móvil, por ejemplo) Mientras un dispositivo está enviando o recibiendo, el resto de equipos conectados al mismo punto de acceso debe esperar a que el medio esté disponible.
 
 
MU-MIMO: Multiple User MIMO. Varios dispositivos pueden enviar y recibir al mismo tiempo, se mejora en eficiencia añadiendo más flujos de transmisión, pero no se llega a un medio full-duplex.
 
Spatial streams: Flujos de transmisión. Pasamos de 3 a 4 posibles. Debemos tener en cuenta que cada vez que se añaden más flujos, se incrementa la complejidad de la radio transmisión, requiriendo menos ruido (SNR)
 
 
 
Ahora que ya tenemos varios dispositivos conectados al mismo tiempo, podemos ver las ventajas en cuanto a densidad, si un móvil utiliza 1-stream en un medio MU-MIMO se permiten conexiones simultaneas de varios equipos.
Si los dispositivos clientes son mezcla de SU-MIMO y MU-MIMO obtendremos mejora, pero no tanto como sería un entorno ideal con todos MU-MIMO.
Beamforming: la banda de 5Ghz tiene menos alcance que la de 2.4 GHz, se utiliza esta técnica para focalizar sobre los dispositivos la señal a mayor distancia, intentado reconocer elementos que causen bajo rendimiento de la señal (paredes, interferencias…) alterando la fase de las señales. En la práctica es difícil aplicar sobre dispositivos en movimiento, introduciendo errores, el fabricante Ruckus introdujo el concepto antena adaptativa BeamFlex asociado a este concepto con mejores resultados aunque cada fabricante tiene sus mejoras. Demostración de multipath y BeamFlex:
 
El utilizar solo la banda de 5 GHz viene motivado por el menor número de interferencias en estas frecuencias y un ancho de canal más grande
256-QAM: Quadrature Amplitude Modulation. Modulación de amplitudes en cuadratura. Nos adentramos en las ondas de radio propiamente, son diferentes técnicas para representar ceros y unos en un medio mediante la modulación de una señal portadora… como esto puede sonar demasiado técnico, mejor un gráfico para ilustrar brevemente de por dónde va el concepto:
 
 
 
Algunas otras técnicas:
  • PD: Polarization Diversity. Adapta la orientación de la antena para enviar y recibir ondas verticales y horizontales selectivamente. 
  • LPDC: Low density parity check. Mejora la corrección de errores en entornos ruidosos con errores.
  • STBS: Space Time Block Codes. Permite el envío de múltiples copias de datos a través de varias antenas, al recibir varias copias se comprueba el mejor resultado.
  • Channel Bonding: combinar canales independientes a bajo nivel, también utilizado en ADSL DOCSIS, lo que sería trunk bajo Ethernet…
Antenas múltiples: hasta 4 se definen por ahora, el número de antenas determina la velocidad, y ambos equipos deben disponer de ellas.
Canales de 160 Mhz: se dobla desde los 80 Mhz a través de la banda de 5 Ghz con más canales disponibles.
 
Cada escenario de implementación es diferente, ampliar los canales disponibles o su división (20/40/80/160Mhz) no tiene porque significar en la práctica mejorar el rendimiento, es necesario planificar si la división de canales tiene como objetivo aumentar la transferencia, cobertura, concurrencia, densidad…
Podemos tener un medio wifi de última generación, pero debemos prestar atención a otros factores: distancia a los puntos, obstáculos, interferencias, número de clientes conectados, tipo de tráfico habitual… o posibles cuellos de botella que podrían generarse al conectarlos a equipos cableados, donde empezará a ser imperativo utilizar 10GbE
Cuidado con el marketing de Wave 2, la realidad en cada entorno y la planificación a medio-largo plazo.
 
 
 
 

Atentado en las Ramblas: periodismo, política y realidad

La tecnología nos rodea en todos nuestros días, también en aquellos momentos en los que el ser humano saca a relucir su peor cara. Tras el atentado terrorista sufrido en las Ramblas, vuelve a quedar patente la responsabilidad individual y colectiva de su buena utilización.

Hemos evolucionado desde una limitación de fuentes de información, pasando por medios más o menos objetivos y variados hacia una sociedad interconectada en redes sociales muy fluidas, con la posibilidad de comunicar de forma libre en cualquier web. Vivimos con anterioridad esa rapidez de información llegando a intoxicar la veracidad, bautizada con el eufemismo de post-verdad.

Cualquier persona puede captar con su teléfono móvil imágenes y videos, lo que no le convierte automáticamente en reportero o periodista, pero si en una fuente de información bruta con todo lo que ello conlleva.

La recomendación de no retransmitir los contenidos para preservar la intimidad de familias y victimas es acertada, pero más concisa sería hacerlo sobre contenidos donde se pueda identificarlas. Un arma de doble filo, entre alejar la cruda realidad de nosotros y causar terror o publicidad a los autores. Cada persona puede interpretar de forma diferente un video, causando sentimientos diferentes y encontrados.

Cabe preguntarnos con sinceridad:

  • ¿Habría reaccionado igual ante la noticia sin el contenido visual en bruto?
  • ¿Reenviando el material gráfico estoy colaborando a transmitir un sentimiento bien intencionado o simple publicidad morbosa?
  • ¿Si el origen del contenido estaría a miles de kilómetros de distancia actuaría igual?

La insensibilización progresiva a la violencia lleva años cuajando entre nosotros; cada uno debe medir, en la medida de lo posible, el ámbito de repercusión que provocan sus acciones. Tarea nada fácil.

Lo que si debe quedar claro, las fuerzas de seguridad se emplean a fondo para garantizar la seguridad de los ciudadanos, no es una profesión es una vocación;  las injerencias de la política en los mandos policiales deberían alarmarnos en igual medida.

En la misma Cataluña, dos meses antes, la destitución del mando general de los Mossos y  asignación de Pere Soler i Campins, dentro del carácter totalitario de un nacionalismo en el que se prioriza la facilitación de incumplimientos de leyes frente a la protección de los ciudadanos, hayan votado o no al mismo partido que le puso al mando, dice mucho de las prioridades de algunos políticos.

Estos momentos de consternación y dolor deben ayudar a reflexionar, buscando la unidad de los demócratas en Cataluña y en el resto de España. Otro crespón negro junto al nombre de la ciudad: Londres, Estocolmo, Burgas, París, Copenhague, Bruselas, Niza, Berlín, Estocolmo, Manchester… no sirve si no se acompaña de acciones reales más allá del papel o el blog.