¿Como dar el ancho o el alto a un div en relación a nuestra pantalla? #html5 #css3

Hace tiempo para poner a un div o a un elemento HTML el tamaño a relación del monitor donde es mostrado teníamos que hacer uso de javascript, pero gracias a CSS3 ahora se puede hacer por medio de 2 nuevas unidades de medida llamadas VH y VW.

VH= su unidad equivale al 1% del alto del tamaño del dispositivo donde se muestra el elemento.

VW= su unidad equivale al 1% del ancho del tamaño del dispositivo donde se muestra el elemento.

De esta manera podemos hacer que un div crezca dependiendo donde es mostrado, por ejemplo si deseamos que se vea al 80% de alto y al 50% de ancho de nuestra pantalla basta hacerlo de la siguiente manera:


<div style="height:80vh;width:50vw;"></div>

8 curiosidades sobre las neuronas

Las neuronas son la base del procesamiento del cerebro, y forman una red en la cual se desarrolla la funcionalidad motora y comportamiento de los seres vivos.

En las ciencias computacionales forman parte como la base de lo que conocemos como redes neuronales, las cuales funcionan simulando el comportamiento de las neuronas, las células de la mente.
En este artículo veremos 8 hechos sobre las neuronas.

1. Son células

Son un tipo de célula, las cuales forman una red de comunicación en el cerebro del reino animal. Su número es variable, se puede encontrar en gusanos cantidades de 300 neuronas hasta cien mil millones en el ser humano.

2.- Su descubrimiento

Las neuronas fueron descubiertas a finales del siglo XIX por Santiago Ramón y Cajal, un español que más tarde gano el premio nobel por este descubrimiento. Dentro de su descubrimientos, por medio del microscopio, observo que entre cada neurona rara vez se tocan directamente, mas tarde esto tomaría gran relevancia en el manejo de los mensajes comunicados neurona a neurona.

3.- La conexión

La conexión de las neuronas se realiza por medio del axón y las dendritas, dos ramificaciones que realizan el papel de emisor (axón) y receptor (dendrita). La zona de interacción de las neuronas se llama sinapsis, y lo que pasa en esta sección sirve para explicar las acciones del cerebro, tanto motoras como de comportamiento.
Existen a su vez dos tipos de sinapsis, una es eléctrica y otra química, siendo la segunda más compleja, y es donde se han encontrado relaciones de los procesos realizados con las emociones.

4.- La química de las neuronas.

La sinapsis eléctrica de las neuronas es una conexión directa, la cual ocurre instantáneamente, pero la sinapsis química, tiene más complejidad y es donde hay más material de estudio para comprender como funciona el cerebro.


Como mención anteriormente, las neuronas se conectan por medio de una ramificación llamada axón la cual lleva el mensaje, y las dendritas las cuales reciben el dato. La parte final del axón contiene varias estructuras sinápticas de nombre vesículas, estas son unas bolsistas que guardan los neurotransmisores, por su parte las dendritas tienen una proteína que actúa como receptor, al momento de la sinapsis, las vesículas reciben el mensaje que conlleva el axón y dependiendo el tipo de llamada, arrojan el neurotransmisor adecuado, el cual es recibido por la proteína en la dendrita. Continuando el ciclo hasta llegar al fin de la red, ya sea un musculo o una parte del cerebro.

5.- Los Neurotransmisores

Los neurotransmisores son moléculas químicas, existen tres tipos de estos: aminoácidos, aminas y péptidos.
Dependiendo el neurotransmisor enviado de la neurona mensajera, existe un receptor adecuado para recibirla. Antes se pensaba que solo existía un tipo de receptor para cada tipo de neurotransmisor, pero estudios recientes han demostrado que existen distintos tipos de proteínas receptoras, por lo cual el número de combinaciones de funcionalidad crece.

6.- Efectos de los venenos

Las neuronas controlan el sistema motor, entre ellos el sistema respiratorio. Algunos venenos (El de la cobra por ejemplo) han evolucionado a tal grado de imitar a un neurotransmisor, pero con la diferencia de no eliminarse, si no queda pegado en la proteína receptora de las dendritas. Imagina que una llave queda atascada en la puerta, la puerta ya no puede recibir una nueva llave para abrirse. De esta manera el veneno bloquea la sinapsis, es por ello que si no se atiende a tiempo, el veneno se expande por la red neuronal, taponeando los receptores, y a su vez impidiendo las instrucciones como respirar, es por ello que las personas con mordedura de cobra, mueren por paro respiratorio.

7.- Efectos de las drogas

Al igual que los venenos, las drogas actúan como neurotransmisores, elevando placer o adrenalina, gracias a que pueden aumentar el envió de neurotransmisores que producen placer.
El problema de las drogas es que conocemos poco aun de cómo actúan los neurotransmisores, por ello ocasionan efectos secundarios. Esto es, por que un neurotransmisor que sirve para una cosa, puede servir para otra, todo depende la proteína receptora que lo reciba. Así que si la droga no induce un incremento de dopamina (neurotransmisor para el control de estados depresivos), la misma dopamina es empleada por las neuronas para el control motor, por lo cual pueden producir taquicardias, o vómitos.

8.- Muerte de las neuronas

Cada día mueren más de 10 mil neuronas, es un pequeño número para la cantidad que tenemos. Estas comienzan a morir en el caso de los humanos, cuando se cumplen los 20 años. Hay un grupo pequeño de neuronas que tienen la función de dividirse y crear nuevas, pero el grupo es muy pequeño, las demás mueren debido a un proceso natural. Existen casos en los cuales se acelera el asesinato de las neuronas como enfermedades que aceleran su destrucción, como el Parkinson o Alzheimer, o ingerir drogas.

Estos son 8 hechos sobre las neuronas, la unidad del cerebro, que conforme pasa el tiempo más sabemos de ellas, pero aun estamos en la etapa larval en descifrar el órgano más complicado, el cerebro.

Función para encriptar en sha256 en C# .Net

La siguiente función nos sirve para realizar una encriptación en SHA256 en C# .Net:

public class Encrypt{
  public static string GetSHA256(string str)
  {
            SHA256 sha256 = SHA256Managed.Create();
            ASCIIEncoding encoding = new ASCIIEncoding();
            byte[] stream = null;
            StringBuilder sb = new StringBuilder();
            stream = sha256.ComputeHash(encoding.GetBytes(str));
            for (int i = 0; i < stream.Length; i++) sb.AppendFormat("{0:x2}", stream[i]);
            return sb.ToString();
  }

}

Y se utiliza de la siguiente forma


string cadenaEncriptada=Encrypt.GetSha256("patito");

Recuerda agregar las siguientes librerías para utilizarla:


using System.Security.Cryptography;
using System.Text;

¿Cómo hacer que una caja de texto solo acepte valores numéricos positivos? #jquery #js #html5

Para lograrlo vamos a utilizar el disparador keyup y jquery y haremos un selector por clase, en este caso la llamaremos positive, así podemos reutilizarlo en las cajas de texto que deseemos, código a continuación:

Código HTML


 <input value="" class="positive" min="1" type="number" step="1" name="cajita" id="cajita" />
 <input value="" class="positive" min="1" type="number" step="1" name="cajita2" id="cajita2" />

Código Javascript


$(".positive").keyup(function () {

            var valor = $(this).prop("value");

            //evaluamos si es negativo, y ponemos 1 por defecto
            if (valor < 0)
                $(this).prop("value", "1");
})

Crear sonido con el navegador con javascript, #HTML5, sin mp3, ni wav

Una forma para crear sonido sin utilizar una pista de sonido es utilizando la interface OscillatorNode la cual sirve para reproducir frecuencias en específico, esta interface nos ofrece algunos tipos de sonido y solo basta con crear el objeto y poner los atributos deseados, en el siguiente ejemplo tengo un arreglo el cual tiene las frecuencias de las notas musicales (hay unas redondeadas espero que no me crucifiquen los músicos) y dependiendo el botón presionado se ejecuta el sonido:

Demo:

Código HTML


<div>
    <button onclick="Sonido(0)">DO</button>
    <button onclick="Sonido(1)">DO#</button>
    <button onclick="Sonido(2)">RE</button>
    <button onclick="Sonido(3)">RE#</button>
    <button onclick="Sonido(4)">MI</button>
    <button onclick="Sonido(5)">FA</button>
    <button onclick="Sonido(6)">FA#</button>
    <button onclick="Sonido(7)">SOL</button>
    <button onclick="Sonido(8)">SOL#</button>
    <button onclick="Sonido(9)">LA</button>
    <button onclick="Sonido(10)">LA#</button>
    <button onclick="Sonido(11)">SI</button>
</div>

Código JS


    //contiene la vibración por segundo de la nota
    //posición en el arreglo: do=0,do#=1,re=2........
    var Sonidos= [261,277,293,311,329,349,369,392,415,440,466,493];

    //creamos contexto
    var context = new (window.AudioContext || window.webkitAudioContext)();

    function Sonido(nota){
         //creamos oscilador
        var osc = context.createOscillator();

        // admite: sine, square, sawtooth, triangle
        osc.type = 'sawtooth'; 

        osc.frequency.value=Sonidos[nota];

        //asignamos el destino para el sonido
        osc.connect(context.destination);
        //iniciamos la nota
        osc.start();
        //detenemos la nota medio segundo despues
        osc.stop(context.currentTime + .5);

    }

Un poco de canvas en este 2018

A lo largo de mi vida profesional he conocido pocos programadores que se involucran realmente en el desarrollo de videojuegos, con la llegada de HTML5 se nos facilitó el desarrollo de juegos gracias a canvas (algo inventado por Apple en el 2004), pero hoy ya más de 10 años después pocos lo conocen realmente, un propósito que tengo el siguiente año es dominarlo a la perfección, no tanto por aspectos laborales sino por un hobby que viene desde mi niñez, crear videojuegos.

Ya he realizado algunas cosas con canvas, pero como todo no por hacer unos cuantos gráficos o animaciones quiere decir que sea un experto (muchos por hacer algo ya ponen en su CV que son expertos), y no es para que todos los desarrolladores se involucren en esta tecnología ni hacer una revolución de ella la cual ya lo fue hace algunos años, sino simplemente dejar este escrito aquí para ser leído por mí un año después.

Por lo pronto abajo dejo un código que hice ahorita en 10 min para que los acompañe cuando tomen hongos o alguna otra droga psicodélica.

Código HTML

 <canvas width="500" height="500" id="myCanvas" > </canvas>

Código JAVASCRIPT


var context = document.querySelector("#myCanvas").getContext('2d');
context.beginPath();
context.arc(250,250,200,0,2*Math.PI,false)
context.fill();
context.stroke();
context.closePath();


    var i=0;
    setInterval(function(){

        DibujaPoligono("#myCanvas",3,i);
       
        if(i==360)
            i=0;  
        i++;

   },10);
    

    function DibujaPoligono(canvas,sides,iTurn){

        var context = document.querySelector(canvas).getContext('2d');
       
        context.beginPath();
        context.fillStyle = "white";
        context.strokeStyle="black";
        
        //pentagono
        var numberOfSides = sides,
            size = 200,
            Xcenter = 250,
            Ycenter = 250,
            step  = 2 * Math.PI / numberOfSides,//para pintar la figura calculamos la posicion
            shift = (Math.PI / 180.0) + iTurn; //giro


        for (var i = 0; i <= numberOfSides;i++) {
            var curStep = i * step + shift;
            
            context.lineTo (Xcenter + size * Math.cos(curStep), Ycenter + size * Math.sin(curStep));
        }


      
        context.fill();
        context.stroke();
        context.closePath();

}

¿Cómo eliminar el cero al inicio o al final de una cadena en C# .Net? o cualquier otro carácter.

Para eliminar un carácter que aparece al inicio o al final de una cadena en C# existen dos métodos en la clase string útiles, su nombre son TrimStart y TrimEnd, estos nos permiten eliminar en este caso el 0 de una cadena al inicio, es decir dejar 00012121 como 12121 o viceversa dejar 121210000 como 12121, y se hace de la siguiente forma:


//Eliminamos los ceros del inicio
string cadena="00012121";
cadena=cadena.TrimStart(new Char[] { '0' });
//resultado: 12121

//Eliminamos los ceros del final
string cadena="121210000";
cadena=cadena.TrimEnd(new Char[] { '0' });
//resultado: 12121

Si deseas eliminar otro carácter remplaza el 0 por el que necesites.

Creación de archivo PDF en C# a partir de un archivo HTML (sin crystal report, sin itextsharp)

Creación de un archivo pdf sin utilizar ni crystal report ni itextsharp, de esta manera no dependemos de dll engorrosas como Crystal Reports.

Liga de libreria: https://wkhtmltopdf.org/

¿Cuál es la diferencia de IEnumerable e IQueryable? .Net C# VB

Cuando comenzamos a utilizar Entity Framework vemos la maravilla de LINQ al obtener los datos de manera relacional, organizarlos como si de Sql se tratara, pero nunca nos preguntamos que de distinto tiene cuando utilizamos IQueryable o IEnumerable, para explicarlo rápidamente nos basaremos en la siguiente tabla (suponiendo que su nombre es tabla, literal):

Cuando obtenemos los datos con IEnumerable de la siguiente forma:


IEnumerable<tabla> lst= from d in db.tabla
                 select d;

Si quisiéramos hacer un filtrado con una clausula where posterior a nuestra obtención de datos haríamos lo siguiente:


lst= lst.Where(d=&gt;d.name=='Pedro');

Cuando utilizamos IEnumerable al llenar nuestro objeto con LINQ lo que obtenemos son los datos de la tabla en nuestra colección es decir, que al aplicar el filtrado trabajamos directamente con un conjunto de datos en memoria al cual se le hace el where directamente. Esto ocasiona un mal performance cuando nuestra tabla tiene millones de datos ya que los tendríamos en memoria y posterior aplicaríamos el filtrado, esto es una mala practica que jamas se debe hacer.

Ahora veamos la diferencia con IQueryable:


IQueryable<tabla> lst= from d in db.tabla
                 select d;

//lo que obtiene IQueryable despues de la consulta es:
// select * from tabla

Ahora haremos el mismo filtro posterior a la consulta:


lst= lst.Where(d=>d.name=='Pedro');

//y aquí lo que hacemos es concatenarle:
select * from tabla where name='Pedro'

A diferencia de IEnumerable lo que tenemos en nuestro objeto IQueryable es la consulta SQL en sí, es decir tenemos algo como lo siguiente:


select * from tabla
where name='Pedro'

En conclusión si vamos a realizar filtrados dinámicos en un conjunto de datos se debe utilizar la interface IQueryable, es la forma correcta de aplicar manipulación a nuestra consulta antes de enviarla al servidor de base de datos. ¿Cuando se realizar el envió de la consulta al servidor por parte de IQueryable? Cuando hacemos uso de los datos es decir, cuando aplicamos un foreach o hacemos un ToList().

¿Cómo utilizar un try y catch dentro de una consulta LINQ? Excepción | Exception C# VB .Net

Para poder cachar excepciones dentro de una consulta LINQ y poder manipular el error para que no truene la consulta en si misma debemos hacer uso de Lambda, esto es útil cuando nuestra base de datos puede presentar inconsistencias las cuales pueden ocasionar una excepción en ciertos casos, y podemos evitarlo de la siguiente forma:


EntityDB db= new EntityDB();
var lst = from d in db.tabla.ToList() //es importante hacerlo lista
                  select new TablaViewModel
                  {
                      id = d.id,
                      //campo es string por lo cual
                      //nuestra función delegada regresara igual string
                      campo = (new Func<string>(() => {
                                                            try {
                                                             // suponiendo que exista una referencia
                                                             // a una tabla secundaria la cual no siempre exista
                                                             // lo cual puede ocasionar una excepción
                                                             // de esta manera lo podemos manipular
                                                                 return d.tablaSecundaria.campo2;
                                                                 }
                                                            catch { return "No existe"; }
                                                        }
                                                  )
                                 )()
                  };

De esta manera nuestra consulta no tronara y podemos darle un resultado a la vista donde mostraremos nuestros datos.