20170401

El Despertador


En algunos meses estuve intentando encontrar o comprar un despertador que cumpliera con mis expectativas:
  1. Que me ayude despertar.
  2. Y en vez de oir la alarma tipica o la radio, que despierte con mi canci6n favorita.

Busque en tiendas y nada, solo te venden pura caca. Tambien intente agregarle al celular el aplicativo, y pura caca MONUMENTAL, estaba peor, las alarmas superlentas y pesadas, no entiendo porque un programa tan sencillo como es una alarma sea algo tan complejo para los programadores actuales, no MAMEN: es tan complejo hacer esto:

  if HoraProgramada = HoraActual then play('sonido.wav');






Aparte el sonido en el celular no es tan detallado(no exiten los bajos) como el sonido de una laptop o computadora de escritorio.


Asi que me determine a programar uno propio, dije no  MAMEN porque nadie se le ocurre.

Para este proyecto requeri usar el paquete PasLibVlc: Descarga AQUI

El c6digo es sencillo, aun si tienes dudas puedes escribirlo en la caja de comentarios ;-)

Aqui puedes descargar el archivo: despertador.rar
Cuándo te pregunte como guardarlo, escribe el nombre: despertador.rar
Contraseña: Dr.Wi11y
Despues de descomprimirlo, tendras que compilarlo. Usa Lazarus


Ahora si tire mi Despertador Milenario a la basura, pinche mugrero.






20160301

Codigo en Javascript para hacer un calendario (2a Parte)


En la primera parte vimos que tan fácil es hacer un calendario, pero gris. sin colores o forma. en esta ocasion haremos lo mismo pero dandole arte. Recuerden que no es lo mismo MiArte que TuArte.

<!DOCTYPE html>
<html>
<body>



<script>

// Inicializa Calendario
var mes = [0,0,0,0,0,0,0
          ,0,0,0,0,0,0,0
          ,0,0,0,0,0,0,0
          ,0,0,0,0,0,0,0
          ,0,0,0,0,0,0,0
          ,0,0,0,0,0,0,0]

// Inicializa fecha
var fecha0 = new Date(2016,2,1);//Mar2016

// Llena el calendario
var dia_semana = fecha0.getDay();

var fecha1 = new Date(2016,2,1-dia_semana);

for(var i = 0; i< 42; i++) {
   mes[i]=fecha1.getDate();
   fecha1.setDate(mes[i]+1)
}

/* Crea la Div */

var div1 = document.createElement("DIV");
div1.style = "background-color: rgb(255, 255, 255); border: 2px solid rgb(156, 0, 0); position: absolute; overflow: hidden; left: 100px; top: 68px; ";

var table1a = document.createElement("TABLE");
table1a.style = "width:100%; margin: 0px;";
table1a.cellspacing= "0px";
table1a.cellpadding="0px";
table1a.border="0px";

var row0 = table1a.insertRow(0);
var row1 = table1a.insertRow(1);
var cell0 =  row0.insertCell(0)
var cell1 =  row1.insertCell(0)
cell0.style ="font-weight: bold; color: rgb(255, 255, 255); background-color: rgb(156, 0, 0); text-align: center";
cell0.innerHTML = "Calendario";

var div2 = document.createElement("DIV");


var table2 = document.createElement("TABLE");
table2.style = "text-align: right; ";

var row2 = table2.insertRow(0);

var cell2a = row2.insertCell(0);
var cell2b = row2.insertCell(1);
var cell2c = row2.insertCell(2);


cell2a.innerHTML = "◀";
cell2b.innerHTML = "Marzo 2016";
cell2b.colSpan = "5";
cell2c.innerHTML = "▶";
cell2a.style = "text-align: center";
cell2b.style = "text-align: center";
cell2c.style = "text-align: center";


var row3 = table2.insertRow(1);
var cell3a = row3.insertCell(0);
var cell3b = row3.insertCell(1);
var cell3c = row3.insertCell(2);
var cell3d = row3.insertCell(3);
var cell3e = row3.insertCell(4);
var cell3f = row3.insertCell(5);
var cell3g = row3.insertCell(6);

cell3a.innerHTML = "Do";
cell3b.innerHTML = "Lu";
cell3c.innerHTML = "Ma";
cell3d.innerHTML = "Mi";
cell3e.innerHTML = "Ju";
cell3f.innerHTML = "Vi";
cell3g.innerHTML = "Sa";

estilo_fijo = "width:24px;max-width:24px;";
cell3a.style = estilo_fijo;
cell3b.style = estilo_fijo;
cell3c.style = estilo_fijo;
cell3d.style = estilo_fijo;
cell3e.style = estilo_fijo;
cell3f.style = estilo_fijo;
cell3g.style = estilo_fijo;

var row_tmp;
var cell_tmp;
var j = 2;
var k = 0;
for(var i = 0; i< 42; i++) {
 if(i%7==0) {
    row_tmp = table2.insertRow(j++);
    k = 0;
 }

 cell_tmp = row_tmp.insertCell(k++);
 cell_tmp.innerHTML = mes[i];
 cell_tmp.style = estilo_fijo;

}


div2.appendChild(table2);


cell1.appendChild(div2);
div1.appendChild(table1a);
document.body.appendChild(div1);


</script>

</body>
</html>

20160229

Codigo en Javascript para hacer un calendario

Anexo Codigo para generar un calendario:

<!DOCTYPE html>
<html>
<body>

<div id = "cal001"> </div>

<script>

// Inicializa Calendario
var mes = [0,0,0,0,0,0,0
          ,0,0,0,0,0,0,0
          ,0,0,0,0,0,0,0
          ,0,0,0,0,0,0,0
          ,0,0,0,0,0,0,0
          ,0,0,0,0,0,0,0]

// Inicializa fecha
var fecha0 = new Date(2016,2,1);//Mar2016

// Llena el calendario
var dia_semana = fecha0.getDay();

var fecha1 = new Date(2016,2,1-dia_semana);

for(var i = 0; i< 42; i++) {
   mes[i]=fecha1.getDate();
   fecha1.setDate(mes[i]+1)
}


// Imprime Resultado
var cal_html = "";
for(var i = 0; i< 42; i++) cal_html += (i%7==0?"<br>":",") +mes[i];



  document.getElementById("cal001").innerHTML = cal_html;   
</script>

</body>
</html>

20160225

Insertar sin Duplicar

Hay muchos dolores de cabeza cuando se duplica un registro, para esto MariaDB nos proporiciona la variante IGNORE en la Opcion INSERT, pero antes de hacer esto hay que considerar 2 cosas:
  1. El archivo My.INI debe contener la variable innodb_autoinc_lock_mode = 0, este es el modo tradicional de bloqueo para auto_increment, con esto nos aseguramos que la variable llave sea consecutivo. En modo 1 todas las transacciones son tomadas en cuenta, incluso las ignoradas y las nuevas no son consecutivas de la ultima inserccion.
  2. Cuando se crea la tabla debemos especificar la columna que deseamos que sea Unica con la variante UNIQUE, ejemplo:

    create table(id integer auto_increment, ruta varchar(100), primary key (id), unique key(ruta)); 
Despues de esto ya podemos hacer INSERT IGNORE,REMPLACE o LOAD DATA INFILE 'archivo' IGNORE INTO TABLE tabla.

Ya no la caguen. prrrrrrrrrr

20160122

Una Explain en el Query

Cuando usamos el comando Explain en MySQL, hay que considerar 2 cosas:
  1. La cantidad de registros(columna rows) sea 1 o una cantidad minima.
  2. Que extra no aparesca 'Using temporary; Using filesort' 
Saludos y felices Querys