Tuesday, January 10, 2012

Sociedad > México > Seguridad



Mucho se habla de la inseguridad en México y realmente la prensa interna no colabora mucho con mejorarla. Como consecuencia se vive una sensación poca seguridad aunque tampoco es como comentan ciertos círculos fuera de México.

Si le preguntas a las personas en el exterior de México te dirán que los muertos son millones, que se están matando cada día y lo peor es que no hacen excepciones de los lugares y las circunstancias en las que esto ocurre.

Es cierto que la zona Norte de México es hoy día muy peligrosa, en extremos diría yo. Sus mismos habitantes la están abandonando y eso de por si es una clara muestra de lo que sucede. Esas zonas fronterizas están hoy bajo la guerra de los carteles de drogras y están prácticamente fuera del control del gobierno, aunque si están haciendo lo que es materialmente posible, tomando en cuenta lo complejo de la sociedad, los bajos ingresos y lo arraigada e impune que está determinado tipo de delincuencia.

Ahora, otra cosa es el resto del país, otra cosa es la capital (D.F.), otra cosa es Guadalajara, etc, por ponerles ejemplos de las ciudades que conocí. No es que estas ciudades estén excentas de violencia pero no es el pan nuestro de cada día, ni te matan por cualquier cosa.

Sarcásticamente, pudiera decirse que es un tipo de delincuencia “educada”: de los que te asaltan para quitarte lo que lleves encima de dinero y cosas materiales y sobre todo el móvil, que esta muy de moda. Pero la experiencia dicta que la vida vale mas que un móvil o 100 pesos por lo que lo recomendable es ceder al asalto y no llegaran a la violencia física.

Me han comentado de otros países que también esta de moda el asalto para robarte el teléfono móvil y primero te dan el golpe y después te lo piden.  

Cuando llegue a Ciudad México y me soltaron a caminar en la Avenida Reforma (la principal arteria comercial y financiera de México y América Latina) recuerdo que iba “cagandome en los pantalones”. Me decía: “en cualquier momento se dan cuenta que soy extranjero y me asaltan”, jaja. Ahora me río pero no era para menos. Un amigo de Miami, que había pasado una semana por México me había dicho: “Tu eres un foco en México, todos saben que eres extranjero, allá son de rasgos indígenas casi todos”.

Bien, nada mas alejado de la realidad. El DF es una ciudad con muchos inmigrantes (Argentinos, Centroamericanos, etc). Estuve casi 9 meses en Mexico y todo fue muy bien, nunca tuve problemas. Anduve por sus calles a media noche e incluso un poco más. Estuve en las calles de Guadalajara igualmente de tarde y jamas tuve un problema. Suerte? tal vez, pero a decir verdad no puedo apoyar la teoría que en México no se puede vivir.

Igualmente estas experiencias son compartidas por varios amigos que aun viven alla, no es mia sola.

Ahora bien, esto no quiere decir que debas andar descuidado. Siempre es bueno estar alertas, no andar por zonas muy malas, como en todos los países del mundo. Esta claro que también residí siempre en zonas metropolitanas del D.F, zonas de alto estándar de vida, de mayor seguridad por así decirlo, pero es como todo, también pagaba un poco mas de renta a cambio.

Siempre debes intentar seleccionar un taxi “seguro”: son servicios de taxis que radican en zonas fijas y que tienen taxis asociados. Estos son los llamados “taxis de sitio” que están perfectamente identificados. Ahora, yo usé mucho taxi y no siempre estuve seleccionando, jeje.

Pero una preocupación muy grande que tienen los Cubanos y cualquiera que llegue a México es:  Cómo salir del aeropuerto de forma segura?
No se preocupen para nada. Si no los esta esperando un amigo o familiar pues todos los aeropuerto de México, y muy en especial el del D.F., cuentan con un servicio de “Taxis Seguros” y son bien seguros. Incluso en el aeropuerto del D.F. es Zona Federal bajo un control estricto de seguridad, así que tranquilos, nadie los asaltará ni nada malo les pasara en esa zona. Puede, con seguridad, mudarse de una terminal a otra incluso.

Bueno, esto es solo un intento de comunicar mis experiencias en México que son muy agradables.

Proximo artículo: Trabajo y Salud.

Monday, September 12, 2011

Sociedad > México > Playa de Acapulco

Les comentare un poco sobre la playa de Acapulco, una de las más famosas de México,  que tuve la oportunidad de visitar recientemente. Fue una gran experiencia pues no solo me permitió conocerla y compararla con las de Cuba a nivel de playas sino conocer su autopista, las ciudades y pueblos intermedios, etc.
Fue mi primer viaje largo en carretera y comenzare por el inicio.

La autopista México-Cuernavaca-Chilpancingo-Acapulco


Esta autopista o carretera atraviesa estas importantes ciudades atravesando 2 estados: Morelos (Cuernavaca es su capital) y Guerrero (Chilpancingo es su capital y Acapulco su puerto principal).  
Casi todo el tiempo la carretera atraviesa zonas de montaña con vistas increíbles. Se nota que a fuerza han abierto las vías a través de las lomas, por lo que existen tramos cuyo lado es una pared natural enorme (la montaña claro). En muchas de esas zonas existe peligro de deslizamientos de piedras y las están fundiendo con mezcla para una mayor seguridad. En otros tramos se optó por abrir túneles que atraviesan la base de la montaña. En otros, puentes inmensos que unen 2 laderas, a una altura considerable. Es todo un espectáculo.
Llama la atención el excelente estado de la carretera. Partamos del hecho que es una autopista con cobro de Peaje, y bien caro por cierto, pero que se nota que dichos fondos se revierten en ella constantemente.
El pavimento con una calidad y terminación excelente, completamente pintado en sus líneas horizontales indicadoras. En el lateral derecho en ambos sentidos de la vía siempre cuenta con espacio suficiente llamado Acotamiento para que los vehículos puedan detenerse si lo necesitan. A determinados intervalos existen recipientes de agua. Es una carretera con separadores de concreto entre ambos sentidos durante sus más de 350 Km., diseñados para proteger bastante de un choque. Posee una Rampa de Frenado, que es una construcción especial diseñada para que si un vehículo se queda sin frenos pueda hacerlo de forma natural: no es más que un pedazo de vía, saliendo de la principal con una pendiente grande y piedras como base que posibiliten una mayor resistencia al movimiento y el frenado final. A intervalos existen dispositivos electrónicos que te dicen a qué velocidad vas circulando y de forma bien visible: algo que si bien no aporta algo muy diferente del velocímetro de tu auto al menos si te hace notar que vas a exceso de velocidad.
En varios tramos la vía estaba recibiendo mantenimiento y es llamativa la cantidad de medidas de seguridad que se aplican durante esas labores para los conductores de vehículos: personas con banderolas a cada extremos avisando con suficiente distancia y señales y separadores plásticos que crean las vías temporales de acceso para no dejar lugar a la improvisación o al despiste de un conductor. Posee servicio médico de urgencia sobre la misma carretera, servicio de mecánicos de autos y otros.
Para una persona nacida y criada en esta parte del mundo nada de lo que he comentado le llamara la atención pero para mi país de origen casi todas estas cosas son dignas de mencionar. Creo que si el Peaje se reinvierte completamente en la vía, como debería ser, pudiéramos comenzar a aplicarlo con más frecuencia en nuestro país, pero aclaro, solo si se reinvierte en su mismo mantenimiento, sino carece de sentido.

Sus ciudades y pueblos intermedios.


Salvo Guadalajara no había estado en otra ciudad fuera del DF. Guadalajara viene siendo la segunda o tercera urbe de México junto a Monterrey por lo que no había tenido la oportunidad de visitar ciudades más humildes. Solo había podido contemplar la imponente riqueza y recursos de sus grandes ciudades que por mucho superan a las nuestras en Cuba, con sus grandes mercados, sus grades plazas, etc.
Pero aquí tuve la oportunidad de contemplar también la humildad de ciudades más pequeñas y de menos recursos. Por momentos me parecía que estaba en nuestro país, acompañado de un clima mucho más similar al nuestro también.
En Acapulco pude contemplar ya un poco de pobreza, negocios bastante sucios y despintados. Personas que tienen que lucharla bien duro para poder vivir también. Sus construcciones a medio terminar, en el ladrillo o el bloque crudo, optimizando los recursos también.
Cuernavaca y Chilpancingo pudiéramos decir que son ciudades similares a cualquiera de las capitales provinciales de Cuba. Tanto en tamaño como en apariencia. Ya el tipo de instalaciones no son como en el DF sino plantas bajas (2 o 3 a lo más), sin demasiada ostentación. Claro que allí el espacio sobra también.

El Clima y la playa de Acapulco


El clima es bien parecido al de Cuba aunque un poco más fresco. El promedio de máximas es de 29 a 30 grados Celsius y al estar en la costa pues es húmedo y con un sol estupendo todo el día. Incluso las noches son calientes, con una media de 23 grados para esta época de año. Por primera vez en 8 meses sentí un clima como el nuestro y es una sensación bien agradable: Un buen sol rompiéndote o quemándote la piel, jeje.
El mar es bien bravo, como es una especie de semi-bahía natural las olas rompen bien fuertes y bien altas sobre la orilla. En Cuba no vi nada parecido en ninguna de las tantas playas que visité. Si te paras a apenas uno o dos metros de la orilla la fuerza de las olas te tira sin contemplaciones contra la arena, arrollándote vulgarmente.
Ahora, lo más decepcionante es la arena de su playa. Es una arena que quizás podamos encontrar en un rio en Cuba o en cualquier arenera. No exagero, la arena es como la vulgar arena que usamos en Cuba para la construcción e incluso llega a ser mucho más gruesa o de granos gordos del tamaño de una moneda de un centavo.
Si solo fuera la diferencia del color pues bien, pero no, es todo. Por ende disfruten de nuestras playas.
Esto también se debe a que Acapulco esta sobre la costa del Pacífico. Siempre había escuchado que las playas del pacífico no son de buena calidad, ahora lo he comprobado.
Los hoteles, normales, tenemos hoteles mejores que varios que vi, otros similares y otros peores. También todo depende de la calidad del hotel pero les aseguro que al disfrutar de cualquier hotel de Santa Lucia, por ejemplo, estaríamos disfrutando de los mismos beneficios.

Wednesday, September 7, 2011

Nueva sección: Sociedad > México


A partir de hoy voy a escribir sobre algunos temas de sociedad asociados a mi estancia hasta el día de hoy en México.
Aunque parezca que estos temas sociales se salen del contenido central del Blog, no lo es tan, pues forma parte de la experiencia que he vivido y que quisiera compartir con los de adentro: familia, amigos, conocidos y desconocidos, para que, como dice la descripción principal del Blog: “la experiencia no quede sin compartir”.
Todos sabemos que uno de los grandes sueños de todo Cubano es viajar:  más allá de cualquier discusión absurda sobre política tan ligada a nuestra vida, pues también impera la propia naturaleza exploradora del ser humana de conocer todo aquello que está más allá de nuestro horizonte visible. Este sentimiento, o deseo, se multiplica debido a las historias de “los que regresan”, la dificultad para lograr un simple viaje, aunque sea de turismo, más la ausencia de los recursos financieros que se necesitan para ello.
Entonces, una de las grandes preguntas que nos pasamos toda la vida haciéndonos es:
¿Cómo será la vida fuera de Cuba?
Bien, intentare trasmitirle mi perspectiva de la vida en la Ciudad de México, en el Distrito Federal (DF).
Aclaremos que esto es una perspectiva bien personal condicionada por el nivel o clase social en la que encajo en esta sociedad asociada a la que tenía en Cuba. En ambos caso, tanto en Cuba como aquí, mi nivel de ingresos es bastante aceptable, como para ubicarme en clase media. No soy ni era rico, pero tampoco pobre, o de bajos ingresos, por lo que mi salario me da para no tener que preocuparme por las necesidades básicas elementales.
También cuento con una profesión muy solicitada como para tampoco preocuparme por quedarme sin empleo, amén de que me preocupé en su momento (y lo hago cada día) por ser más competitivo, sacrificado y eficiente. Vivo prácticamente en el Centro de la Ciudad y por ende en el centro de su vida social. A muy poca distancia a mi alrededor me quedan las principales zonas históricas, sociales y de farándula.
Entonces pues, espero que les sean de agrado y de interés los temas que trataré, entre los cuales deben estar la vivienda, el transporte, su gente, la diversidad sexual, la violencia, la seguridad, la salud, la educación, el deporte, la cultura, el empleo, la comida y el resto de las necesidades primarias.

Wednesday, July 20, 2011

Nuevas plantillas para Moviles aquí en BlogSpot

Acabo de ver que esta plataforma de Blog ha puesto a nuestra disposición plantillas para dispositivos móviles: Excelente, y además con un look bastante limpio y de mi agrado.

Bienvenidas todas estas mejoras. A mis colegas les recomiendo que les den un vistazo pues cada vez son mas los que acceden a través de estos dispositivos. Basta con habilitarlas en las opciones.

LINQ to SQL. Tratamiento de Transacciones con TransactionScope (parte 3 final))


Aunque no fue mencionado, la variante primera de lograr transacciones también tenía un problema: No se admitían transacciones anidadas.
La clase TransactionScope viene a solucionar todos los problemas con transacciones, diseñada incluso para el caso que queramos, en medio de una transacción, ejecutar un bloque de código fuera de ella.  Genial!.

Su uso seria en un bloque similar al siguiente:

using (TransactionScope trans = new TransactionScope())
{
    //Operaciones

    trans.Complete();
}

Aquí se extrañaran de no ver algo parecido a un Rollback y un bloque de try..catch en el cual se llame: NO ES NECESARIO. Al utilizar el TransactionScope en un bloque using, el mismo sistema se encarga de deshacer todas las operaciones si al concluirlo no se ha llamado al método Complete().
Claro que un bloque try..catch será necesario para capturar excepciones pero no para llamar a un Rollback específicamente.
Este mecanismo está preparado para hacer transacciones sobre múltiples servidores a la vez, caso en el cual usa el servicio MSDTC de Windows como soporte.
No obstante, no todo es felicidad. Esta clase utiliza un mecanismo propio (por llamarlo de una forma más amigable) en caso que dentro de su bloque se utilice solo una conexión de datos o DataContext. Si se llegan a utilizar dos entonces hace uso del servicio MSDTC para gestionarlo lo que nos obligaría a instalarlo en las PC donde se use el sistema.
En Windows7 de 64 bit existen varios reportes de personas en Internet que no les corre por la ausencia del servicio y en mi caso lo viví en carne propia. Aunque la solución sería la instalación del servicio y listo a mí no me resultaba factible agregar un pre-requisito más a mi sistema así que ajuste el código fuente a que usara siempre una sola instancia del DataContext al menos mientras se estuviera dentro del contexto de la transacción (bloque using).
Hasta aquí lo relacionado a los problemas más relevantes que hemos tenido. Los beneficios han sido muchos más con el uso de LINQ to SQL. Solamente tendría algo importante que criticarle y es que el modelo creado no incluye un par de métodos WriteToXml y ReadFromXml como los tiene la tecnología de Ado.Net con el uso de los DataSet. No es que Linq to SQL no tenga mecanismo de exportar a Xml sino que es, por mucho, más complejo, aunque también ofrece buena flexibilidad.
Todo problema con LINQ to Sql que puedan reportar en este blog será bienvenido.

LINQ to SQL. La Cache, ¿una ventaja o un problema? (parte 2)


Haciendo un buen resumen creo que me ha traído más problemas que ventajas aun cuando las ventajas sean medio invisibles por su propia naturaleza. A lo mejor una consulta es menos eficiente sin el uso del Cache pero no lo vemos.
La cuestión es que LINQ se encarga de manipular lo que ya tiene en memoria y lo que trae de la BD ante una consulta y no nos deja muchas opciones al respecto. Aun cuando existe una propiedad supuestamente bajo la cual le podemos decir al DataContext de LINQ que no utilice el Cache pues solo es funcional para datos de solo lectura.
Realmente a mí me gustaría poder decirle: No uses el Cache, tráeme siempre datos frescos.
El problema es simple, veámoslo en una secuencia de acciones, en donde todas usan un mismo objeto DataContext: 
  1. La instancia1 de la aplicación lee la existencia de un producto X = 0. LINQ lo mantiene en Cache.
  2. La instancia2 también lo lee. X = 0. LINQ lo mantiene en Cache.
  3. La instancia1 consulta de  nuevo la existencia de X y le suma 2. X = 2.
  4. La instancia2 consulta de  nuevo la existencia de X y le suma 3. Aquí debería queda X = 3 pero no, resulta que es igual a 3.
 ¿Cuál es el problema?
Que en el paso 4 cuando la instamcia2 consulta el valor de la existencia del producto X el Cache le devuelve el valor 0, aun cuando ya la instancia1 lo ha modificado.
Cuando al DataContext le solicitan datos lo hace a través de su Cache. Si el registro (siguiendo como criterio la llave de la Entidad) ya existe en la Cache entonces no lo consulta desde la BD sino que lo retorna desde allí mismo. Si no existe (solo si no existe) en la Cache entonces lo trae de la BD.
Cuando trabajamos en ambiente web con ASP.Net, sumado a que casi siempre seguimos un patrón Singleton para el DataContext general de la aplicación, no trae problema alguno. Pero en aplicaciones concurrentes es un gran problema.
Una solución es utilizar un DataContext nuevo cada vez que necesitamos datos frescos pero eso desde el punto de vista de la misma lógica no es siempre posible pues necesitamos los datos que ya tenemos y que no estarían en el nuevo DataContext.
Otra solución que encontramos, que usamos un tiempo, y que ni siquiera publicaré porque no me gusta, es crear un mecanismo (un truco) de limpieza del Cache del DataContext que usaremos cuando lo necesitemos, por ejemplo, antes de efectuar el paso 4 de la secuencia de acciones. Con esto obligamos al DataContext a traer de la BD el valor actual.
Pero aquí es donde el desconocimiento nos juega una mala pasada pues existe en el DataContext un método para ello, aun cuando esté poco documentado: Refresh.
public void Refresh(
        RefreshMode mode,
        IEnumerable entities
)

Cuando necesitemos obtener una copia fresca de los datos, por ejemplo de la tabla de Inventarios, podemos usar una sentencia similar a la siguiente justo antes de hacer uso de ella:
dc.Refresh(RefreshMode.OverwriteCurrentValues, dc.Inventories);

var inv = dc.Inventories.Where(i => i.IdProduct == op.IdProduct && i.IdLocation == op.IdLocation).SingleOrDefault();

Ahora, aun cuando esto soluciona definitivamente el problema de obtener datos frescos de la BD nos produjo una seria de problemas, algunos “mágicos” y por ende se nos iban de control.
El primero de ellos es que con una tabla de Clientes de 800 mil registros, en la cual hacíamos una búsqueda elemental, el sistema se demoraba una eternidad. Increíblemente el proceso de Refrescado casi congelaba la aplicación y no me pregunten por qué? Porque no tengo respuestas. En este caso era más factible realizar la búsqueda sobre un DataContext nuevo que sobre el existente y la velocidad era la normal. 
El segundo problema más serio aun es que el Refresh nos generaba una excepción cuando lo usábamos en un entorno de Transacciones como el mencionado arriba (parte1 de este artículo). La excepción nos decía algo así como que la conexión o la transacción no coincidía, etc, etc. Nada, un bugs que busqué un par de veces y no encontré un motivo. 
En el proceso de búsqueda de soluciones encontré una biblioteca de .Net específica para el tratamiento de excepciones. Una clase destinada a tales efectos: TransactionScope, que trataremos en la tercera parte de este artículo.