on domingo, 6 de abril de 2014

Buen día.

Para poder agregar comillas dobles dentro de una cadena, lo único que tenemos que hacer poner las comillas de esta forma: \”



Veamos un ejemplo:

using System;

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            string myValue = "asi se agregan las \"comillas dobles\"";

            Console.WriteLine(myValue);

            Console.ReadKey();
        }
    }
}


y asi es la salida de nuestro programa.



















gracias!!
on martes, 1 de abril de 2014
Que tal.

Buscando en mis archivos cuando era estudiante, me topé con una serie de proyectos que en su momento me costaron mucho tiempo y no tienen las mejores de las prácticas y sobre todo algunas materias recruzadas.

El día de hoy veremos un proyecto que  me toco realizar en estructura de datos.

Este proyecto se trata del acertijo de las 8 reinas y el acertijo del caballo.

Comencé primero por el acertijo de las reinas, de pronto no podía escribir nada, sentía que diseñar clases basados en el ajedrez, debían de estar bien diseñadas, al menos pretendía hacerlo de una manera más estructurada y con más infraestructura.

Podemos ver a simple vista, que una pieza de ajedrez puede moverse regida por ciertos movimientos con restricción a la pieza que se va a mover.

Los peones avanzan hacia adelante.

Las torres se mueven en línea recta, de manera vertical u horizontal, no pueden saltar piezas.

Los alfiles se mueven de forma diagonal, al igual que las torres no pueden brincar piezas.

Los caballos, se mueven en forma de L, ellos sí que saltan a las piezas.

Reina, se mueve para done quiera menos de forma de L y no puede saltar piezas.

El rey se mueve para cualquier dirección pero solo un movimiento.

Hasta aquí todo sencillo, nada más que las reglas básicas del ajedrez.

Cuando sumamos la complejidad de que un peón puede convertirse en cualquier pieza.

Me recordó bastante al patrón de estrategia.

Podemos notar que un movimiento es un comportamiento y deducimos que una pieza de ajedrez podría moverse a cualquier lado de acuerdo a su movimiento actual y su condición.

Quise intentar diseñar todo este tipo de reglas.

Aquí podrán observar la estructura de clases.



Aquí les dejo la implantación del acertijo de las 8 reinas:

         public void Insertar8Reinas( bool[] prenglones, bool[] pcolumnas,Reina reina,ref             int numeroSoluciones,int nReinas)
        {  
            int renglon = 0, columna = 0;
            bool[] lrenglones = (bool[])prenglones.Clone();
            bool[] lcolumnas = (bool[])pcolumnas.Clone();
            if (comparaBooleanos.ComparaArreglo(prenglones))
            {
                tableros[numeroSoluciones] = new TableroAjedrez();
                numeroSoluciones++;
                return;
                            
            }
            else
            {
                           
                    renglon = comparaBooleanos.TomaCualquierDelArreglo(prenglones);
                    lrenglones[renglon] = true;
                    while (!comparaBooleanos.ComparaArreglo(lcolumnas))
                    {
                       
                        columna = comparaBooleanos.TomaCualquierDelArreglo(lcolumnas);
                        if (columna == -1)
                            return;
                        lcolumnas[columna] = true;
                        reina.X = renglon;
                        reina.Y = columna;
                        if (reina.SePuedeInsertar(reina, this))
                        {
                            tablero[renglon, columna] = reina;
                            Console.SetCursorPosition(renglon, columna);
                            Console.WriteLine("R");
                            Thread.Sleep(500);
                            pcolumnas[columna] = true;
                            this.Insertar8Reinas(lrenglones,pcolumnas,reina,ref                                          numeroSoluciones, ++nReinas);
                            nReinas--;
                            pcolumnas[columna] = false;
                            //prenglones[renglon] = true;
                            tablero[renglon, columna] = null;
                            Console.SetCursorPosition(renglon, columna);
                            Console.WriteLine(" ");
                            Thread.Sleep(500);
                        }                      
                    }
            }
        }
on sábado, 22 de febrero de 2014


Muy buena noche.

El día de hoy vamos a explicar o al menos tratar de explicar la función del patrón de estrategia.

Recordando a dos grandes pilares del paradigma orientado a objetos. El patrón de estrategia usa como base a la herencia y al polimorfismo.

Usando nuevamente el ejemplo de drogadictos, vamos a comenzar a diseñar nuestra clase protagonista.

Drogadicto.

Esta clase pertenece a un sujeto que consume varias sustancias consideradas drogas.
Veamos la codificación:

public class Drogadicto
{
    public string Nombre { get; set; }

    public IDroga Droga { get; set; }

    public void Drogarse()
    {
        Droga.ConsumirDroga();
    }
}

Esta clase puede hacer instancias a objetos con un nombre y una droga y un método de consumo.

Veamos las otras clases.

Nuestra interfaz droga que va a interactuar con el sujeto.

public interface IDroga
{
    void ConsumirDroga();
}


Nuestra clase abstracta Droga:

public abstract class Droga
{
    protected TipoDeDroga tipoDeDroga;

    protected Droga()
    {
       
    }
}

Algunas clases ejemplo de una clase base Droga.

public class Marihuana : Droga, IDroga
{
    public Marihuana()
    {
        tipoDeDroga = TipoDeDroga.Marihuana;
    }

    public void ConsumirDroga()
    {
        Console.WriteLine("fumando hierba");
    }
}

public class Peyote : Droga,IDroga
{
    public Peyote()
    {
        tipoDeDroga = TipoDeDroga.Peyote;
    }

    public void ConsumirDroga()
    {
        Console.WriteLine("consumiendo peyote");
    }
}

La clase peyote y la clase marihuana heredan y Droga e implementan su interfaz IDroga, recuerden que es para que interactue con el sujeto.



Para poder identificar una variedad de sustancias, un enumerado:

public enum TipoDeDroga
{
    Marihuana, Cigarro, Cerveza, Peyote, Lsd
}


Como pueden ver, la acción de ConsumirDroga, es la implementación de la interfaz IDroga.
Ahora veamos el siguiente escenario.




Un sujeto consume marihuana, después de eso consume peyote:
   class Program
    {
        static void Main(string[] args)
        {
            Drogadicto drogadicto1 = new Drogadicto {Droga = new Marihuana()};
            drogadicto1.Drogarse();
            drogadicto1.Droga = new Peyote();
            drogadicto1.Drogarse();
            Console.ReadKey();
        }
    }


Cualquier duda al respecto o alguna observación para mejorar en el código, háganmela saber, se los agradecería.

No sin antes agradecer a Alan Bazán que fue el que me enseño este ejemplo que fue la pauta para seguir aprendiendo sobre los objetos.

Un saludo.

on viernes, 21 de febrero de 2014


Hello there.

This is my first post in English,  I will try to write in English and Spanish too.

This is with the objective to practice my English and improve this skill, so in every post in English the translation in Spanish will be available too.

Honestly some opportunities only will be open with the key of English.  In my case, I learn this language with the help of friends and reading a lot in English. So if you have a friends to like English,  you can practice with them.  You don't need a English school to learn this language.  You only need practice, feedback and a lot of hard work to improve that.

Spanish:

Hola que tal.

Este es mi primer post en inglés,  voy a tratar de escribir en ingles y español.

Esto con el objetivo de practicar y mejorar esta habilidad que es el idioma inglés,  en cada post en inglés estará disponible su versión en español.

Algunas puertas solo se abren con la llave del inglés, en mi caso, aprendí este idioma con ayuda de amigos y leyendo mucho en inglés, si tú tienes amigos que les guste este idioma, puedes practicar con ellos,  no se necesita una escuela para aprender este lenguaje, solo necesitas practicar, retroalimentación y mucho trabajo para poder subir tu nivel.

Un saludo a todos.

Regards.

Cualquier observación o falta de ortografía hágamela saber, es importante aprender de los errores.

on martes, 18 de febrero de 2014


La vida da muchas vueltas y en menos de dos años pueden pasar una serie de eventos y sucesos que pueden cambiar por completo tus hábitos y costumbres.

En mi caso, la vida dio un giro de 360 grados.

Después de vivir en Torreón, termine en Aguascalientes y por último en Guadalajara.
Esto fue a que cuando estaba en torreón y renuncie a mi trabajo alegando que no tenía a nadie a quien mantener, mi novia en ese entonces salió embarazada.

No se cómo se le hizo que saliendo de con el ginecólogo recibo una llamada de recursos humanos de una empresa en Aguascalientes haciendo una oferta laboral y solicitándome que me presente inmediatamente.

Ya estando ubicado en Aguascalientes comencé a buscar muebles de segunda mano para amueblar una casa y que fuera habitable.

Mi hijo nació en enero del 2013, para mí ya era una nueva vida.
Cuando pienso que mi vida se está estabilizando, me detectan que tengo una fistula allá por donde se defeca.

Es algo raro y más que lo comparta en público, pero tengan cuidado con su peso, para ese entonces pesaba la moderada cantidad de 120 kilogramos de pura porquería, súmale que estaba todo el tiempo sentado, 120 kg no me sorprende que me enfermara.

Total, me operan y estando en rehabilitación nos damos cuenta que en ese entonces mi pareja estaba embarazada.

Uno más, no hay ningún problema.

Cuando fuimos con el obstetra nos damos cuenta que no es uno, son dos. Son unos cuates.
En ese entonces por lo menos yo  me quede en shock. No sabía que pensar ni qué hacer ni cómo reaccionar.

Para ese entonces estaba incapacitado en mi trabajo y la noticia al principio parecía casi imposible.

Paso el tiempo y el proyecto o al menos para mí llega a su fin.
Los administradores de ese proyecto deciden cortar el presupuesto y de ahí sacaron a la mitad del equipo, cosa que todos sabíamos que habían roto la columna vertebral del equipo de desarrollo.
No hay ningún problema, en ese entonces pensaba inocentemente. Trabajo en una muy buena consultora de software y seguro me asignan a otro proyecto.

Llegando con el CEO, lo único que recibo es un muy amable estrecho de manos y una frase muy peculiar “un gustazo”, seguido de palabras motivadoras.

En pocas palabras, no tenían el presupuesto para mantener mi sueldo y me ofrecían rebajarlo para que me quedara.

No me convencí y renuncie amablemente (muy asustado por mi actual situación).

Una vez más, desempleado, con un hijo y mi pareja embarazada nuevamente estaba totalmente paralizado, eso no fue motivo para dejarse vencer

Mande currículos a todas partes de la república mexicana y después de 1 mes de búsqueda logro acomodarme en la ciudad de Guadalajara.

No tenía nada de dinero, para estos casos entro mi Madre y mi suegra a la escena, prestando algo de dinero para poder moverme de ciudad.

No tengo un carro muy nuevo, tengo un VW mejor conocido como bocho o escarabajo. Modelo 78, ese carrito llego hasta Guadalajara y es el que ahora nos sigue moviendo día a día.

Después de establecernos en Guadalajara, por fin, el día sabado 15 de febrero del 2014 nacen mis cuates.
Una sensación maravillosa, una nueva vida, la familia está completa.







y no olvidemos al primero.








En mi caso, fui bendecido para tener 3 hermosos niños, no queda de otra más que agradecer a la vida por esta nueva etapa de vida.

A todos aquellos que estuvieron cerca de mí en esos tiempos, lo mínimo que puedo hacer por ustedes es agradecerles de todo corazón lo que hicieron por mí.

Es muy gratificante recordar que las buenas personas aún existen y siguen entre nosotros.

Nuevamente gracias a todos ustedes y en especial a las maravillas que te prepara la vida.
Y para todas aquellas personas que dicen que en la vida no pasa nada. Esperen y muy pronto les puede dar un giro de 360 grados.