miércoles, agosto 22, 2012

3 consejos para evitar el malware en Windows

Los antivirus no son necesarios. Yo ya no los uso y no he tenido una infección en mucho tiempo, tanto que no recuerdo cuando fue la última.

Todo el malware viene de dos posibles lugares (ambos externos) que son cualquier dispositivo de almacenamiento (memorias USB, discos DVD u otros, etc.) e internet. Así que si aprendemos cuales son las cosas que debemos de evitar de estos medios, podemos estar seguros.

#1 Desactivar la reproducción automática
Las memorias USB, CDs, DVDs, etc. tienen un archivo que le indica al computadora qué programas de los que contiene el dispositivo que se acaba de conectar/introducir debe ejecutar, automáticamente. Los virus aprovechan este archivo para ejecutarse ellos mismos automáticamente e infectar tu ordenador. Puedes evitar esto desactivando la reproducción automática.

En Windows 7:
  1. Ve a panel de control (control panel)
  2. Has clic en Hardware y sonido (Hardware and Sound)
  3. Has clic en Reproducción automática (Autoplay)
  4. Desmarca la casilla "Usar la reproducción automática para todos los medios y dispositivos (User Autoplay for all media and devices)"
Y ya has terminado.

En windows XP:
    Puedes seguir este tutorial de CristaLab.

#2 Fíjate en las extensiones de los archivos
Las extensiones de los archivos son los caracteres que están después del ultimo punto del nombre del archivo. Por defecto en Windows las extensiones están ocultas, lo que para mi es un riesgo, bueno, por lo menos si sabes lo que significan la mayoría de las extensiones, sino te explico lo básico que debes saber:







Los archivos de vídeo terminan en:
• AVI
• FLV
• MOV
• MP4
• MPEG
• MPG
• MKV
• WMV

Los archivos de imágenes tienen las extensiones:
• BMP
• GIF
• ICO
• JPE, JPEG, JPG, JPG2
• PNG
• PSD (Adobe Photoshop)

Extensiones de documentos:
• PDF
• TXT: archivos de texto que no admiten ningún formato.
• DOC, DOCX: documentos de MS Word
• PPT, PPTX: docs.de MS Power Point
• XLS, XLSX: docs. de MS Excel.


Otras extensiones:
• ZIP, RAR, 7ZIP, Z, ISO: archivos comprimidos
• HTML, HTM: páginas web
• DAT: archivos de datos.
• DLL: son "pequeños programas" que utilizan otros programas.

Ahora, las extensiones con las que tienes que tener cuidado son:
EXE, BAT, COM, CMD, VBS, , VB, VBE, PIF, REG.

Estás extensiones son programas o sentencias de código que pueden provocar daño a tu equipo. Nunca ejecutes ningún archivo con una de estas extensiones si no estás seguro de qué se trata.

Muchas personajes caen en el viejo truco en el que un contacto del viejo MSN (¿todavía lo usas?) le manda un enlace a una foto donde, supuestamente, sale alguien que conoces o tú mismo, pero cuando te fijas en la extensión del archivo es un .exe, .bat, .cmd u otro y obviamente una fotografía no debe tener la extensión de un archivo ejecutable, por lo que es un engaño y un malware.

Si quieres obtener información sobre alguna extensión que no conozcas de un archivo que te parezca sospechoso, puedes buscar información en cualquiera de las siguientes páginas:

Notas:
De todas las categorías hay muchas más extensiones de archivos, solo he puesto las más comunes.
Las mayúsculas o minúsculas no importan.

Para poder ver las extensiones de los archivos en Windows XP/7 puedes seguir este pequeño tutorial de Microsoft.

#3 Descarga por torrent o de páginas conocidas
Una gran parte de las infecciones viene por las descargas de internet. Mi recomendación es que cuando vayas a descargar una película, un albúm de un artista, un programa con crack, o cualquier cosa pirata lo hagas por torrent, ya que es muy raro encontrar un virus por torrent. O lo hagas por páginas a la que acostumbras a visitar como TaringaPorDescargaDirectaVagos.es (ahora Zasca), Fanatico o cualquier otra de ese tipo de páginas y lee lo comentarios antes de descargar para ver que dicen los que ya lo han hecho.

Si quieres programas gratis o una licencia de prueba, lo mejor es descargarlos de su página oficial que puedes buscar en Google.

lunes, julio 09, 2012

Obtener un numero único en javascript

En javascript tenemos la opción de utilizar el método getTime() del objeto Date para obtener un numero unico. El método getTime() lo que devuelve es el número de milisegundos que han pasado desde 1 de Enero de 1970. Que es la forma que muchos lenguajes de programación utilizan para calcular una fecha.

De esta manera el número devuelto por getTime() nunca se repetirá ya que las fechas nunca se repiten, a menos que la función se invocada dos veces exactamente en el mismo milisegundo, lo cual ciertamente no es imposible dada la velocidad de los ordenadores actuales, por lo que si quieres generar un numero único en una aplicación que la usen varios usuarios simultáneamente, tal vez esto no sea una buena idea.

Por ejemplo, en mi computadora, si ejecuto el codigo siguiente:
<script type="text/javascript">
function unico(){
 for(var i = 0; i < 1000; i++) {
  document.write(i + " = " + new Date().getTime() + "
");
 }
}
</script>
Veo la función se ejecuta entre 1 y 50 veces antes de cambiar de numero, dependiendo del milisegundo exacto en que empezó la ejecución de la función. Pero podemos hacer lo siguiente para perfeccionar un poco la función. Y es que podemos ajustarla para que se ejecute una vez cada cada 100 milisegundos.
<script type="text/javascript">
a = new Array();

function unico(){
 a.push(new Date().getTime());
 if(a.length > 100){
  clearInterval(id);
  imprimir();
 }
}

function imprimir(){
 for(var i = 0; i < a.length; i++){
  document.write(i +" = " + a[i] + "
")
 }
 
 for(var i = 0; i < a.length; i++){
  if(a[i] == a[++i]){
   alert('hay problema');
  }
  
 }
 
}
</script>

Y desde el body del html ejecutamos la función de la siguiente manera: 
<script type="text/javascript">
id = setInterval(unico, 100);
</script>


Pruébalo:
Nota: El código está en la pestaña HTML.
Cuando presiones el botón de play (Run Again) o la pestaña Result, debes esperar un poco ya que la función está programada para ejecutarse a los 100 milisegundos.



domingo, abril 22, 2012

Redondear un número sin usar estructura If...else

Durante el curso que ofrece Stanford en la página Udacity, "Building a search engine" tenía que hacer un pequeño programa que redondeara un número dejando 0 espacios decimales.
Por ejemplo:
El número 3.289 debería redondearlo a 3.
El 74.701 debería redondearlo a 75.
El 5.5 debería redondearlo a 6.

Bueno, la única forma que se me ocurrió era evaluar el número después del punto decimal y pasarlo por una condición como "si el número es mayor o igual a 5 entonces incrementa el número en 1", luego convertir el número a string para poder solamente extraer los caracteres antes del punto decimal. Pero, el problema es que, aunque la solución es perfectamente válida, se suponía que debía de hacerse solamente con lo que había visto del curso, y hasta ese momento no habíamos visto la estructura if...else.

jueves, abril 19, 2012

Demostración de data JSON

Lección anterior: Introducción a JSON - CBDS

En esta lección jugaremos un poco con JSON. Veremos que cosas son válidas sintáctica y semánticamente. Los datos que se usan son prácticamente los mismos de la lección con XML. Así que puedes compararlos y formar tu propia opinión.

Les dejo con el vídeo directamente ya que no había mucho que sacar del PDF.

Nota: para que los subtítulos de youtube se visualizen mejor, recomiendo que le pongan un fondo. Pueden hacerlo presionando el botón "CC"  y luego configuraciones y finalmente seleccionar "Fondo".





Descarga: Demostración de data JSON. Subtitulos. Datos JSON. Esquema JSON.

domingo, abril 15, 2012

Introducción a JSON - CBDS

Lección anterior: Álgebra Relacional II - CBDS

Me he retrasado unas semanas en la publicación de los vídeos, pero a partir de hoy retomaré el ritmo.

En este post veremos una introducción a JSON, este tema no estaba pautado en la planificación del curso, pero un día entré a db class y ahí estaba, después de XML.

Esta vez, como el vídeo no tenía subtítulos originales en inglés, use la transcripción de voz automática de youtube como una ayuda para subtitular y luego me ocupé de traducirlos al español. Por esa razón, el vídeo está en youtube.

JSON es muy similar a XML. Su principal diferencia está a la hora de serializar objetos, tarea en la que JSON es más efectivo. También los archivos JSON o un objeto serializado con JSON será generalmente más ligero que uno con XML. Una desventaja temporal de JSON es que es relativamente nuevo y todavía no cuenta con herramientas "estandarizadas" para su uso.

En mi opinión, JSON viene a hacer como una mejora de XML que todavía no está pulida.

sábado, febrero 25, 2012

Álgebra Relacional II - CBDS

Lección anterior: Álgebra Relacional I - CBDS

En esta lección estaremos viendo las operaciones básicas de conjuntos: unión, diferencia e intersección. Aunque se trate de bases de datos, no se diferencia mucho del concepto de matemática (recuerda que el tema se llama "Álgebra Relacional"), por eso te recomiendo que te vas los siguientes vídeos para que refresques la memoria y absorbas mejore las explicaciones.

Operaciones entre conjuntos (1/3)
Operaciones entre conjuntos (2/3)
Operaciones entre conjuntos (3/3)

Los conjuntos en matemáticas es un tema muy bonito y sencillo. Sinceramente me ayudó a comprender mejor las mismas operaciones pero aplicadas a las bases de datos.

También veremos el operador de Renombre o Renombrar y un poco de las distintas notaciones que se usan para escribir consultas en álgebra relacional.

Como siempre, veamos el resumen del PDF:

Usamos la base de datos ficticia de estudiantes admitidos a universidades.
Universidad(uNombre, estado, inscripciones)
Estudiante(eID, eNombre, GPA, tamañoEsc)
Aplica(eID, uNombre, especialidad, decision)

*Puedes pasar el cursor por las cursivas para ver una descripción

Lista de nombres de universidades y estudiantes
$ {\LARGE \pi} _{\small uNombre} {\large Universidad} {\LARGE \; \; \cup \; \; \pi} _{\small eNombre} {\large Estudiante} $

IDs y nombres de estudiantes que no han aplicado a ninguna parte
$ {\LARGE \pi} _{\small eNombre} {\large ((} {\LARGE \pi} _{\small eID} {\large Estudiante -} {\LARGE \pi} _{\small eID} {\large Aplica) \, \infty \, Estudiante)} $

Nombres comunes entre universidades y estudiantes
$ {\LARGE \pi} _{\small eNombre} {\large Universidad} {\LARGE \;\; \cap \;\; \pi} _{\small eNombre} {\large Estudiante} $

jueves, enero 26, 2012

Álgebra Relacional I - CBDS

Lección anterior: Esquema XML

Empezamos con un tema nuevo, muy interesante, importante y útil. Es el álgebra relacional, entender esto bien nos ayudará mucho a la hora de hacer consultas reales en una base de datos implementada, ya que el álgebra relacional se puede traducir directamente al lenguaje SQL.

Como siempre dice mi profesor: "Las bases de datos no están hechas para entrar información si no para sacar información". Claro que lo que él quiere decir es que lo más importante es la información que se puede extraer de una base de datos (véase minería de datos). Así que pongamos mucha atención a este tema; que yo personalmente, no me llevo bien con las consultas.

Veamos el material traducido del PDF:

 Una consulta (o expresión) en un conjunto de relaciones produce una relación como resultado.


Los ejemplos se realizan utilizando una base de datos del sistema de admisión de una universidad. El esquema es el siguiente:

Universidad(uNombre, estado, inscripciones)
Estudiante(eID, eNombre, GPA, tamañoEsc)
Aplica(eID, uNombre, especialidad, decision)

*Puedes pasar el cursor por las cursivas para ver una descripción

martes, enero 17, 2012

Esquema XML - CBDS

Lección anterior: Definición de tipo de documento (DTD), ID & IDREFs - CBDS

Continuamos con XML. En esta ocasión veremos el Esquema XML con el que podemos establecer una especificación para datos XML mucho más específica y, por lo tanto, poderosa. Los documentos de especificación (los esquemas XML) son liosos, así que como la profesora menciona varias veces en el vídeo te recomiendo que lo descargues (al final están los enlaces) y lo analices por ti mismo.

En esta lección tenemos una verdadera prueba y ejercicios. La recomendación de siempre es que traten de completarlos todas las veces que sea necesario hasta que alcancen la puntuación máxima.

Como siempre les dejo el material traducido del PDF:

  • Lenguaje amplio
  • Como los DTDs, podemos especificar elementos, atributos, orden, anidamiento, número de apariciones
  • También tipos de datos, llaves, punteros (tipados) y más
  • XSD se escribe en XML
El vídeo es un "ejemplo sencillo", el lenguaje es muy amplio.

Para validar un archivo XML que usa un XSD (además de tener instalado el programa) se debe navegar a través del terminal a donde se encuentran los archivos y luego escribir este comando:

xmllint --schema NombreDelArchivoXSD --noout NombreDelArchivoXML

martes, enero 10, 2012

Definición de tipo de documento (DTD), ID & IDREFs - CBDS

Lección anterior: XML correctamente estructurado

En esta lección continuamos hablando de otro aspecto de las bases de datos en XML, es la Definición de Tipo de Documento (DTD). Un DTD asociado a un documento XML nos permite definir la estructura que tiene el XML, con esto me refiero a los elementos, atributos, subelementos y al número de ocurrencias de esos mismos elementos.

Para construir un DTD se usan las expresiones regulares, que como su nombre lo dice, es una expresión combinada con símbolos usadas como un patrón para comparar -en nuestro caso- un DTD con su respectivo XML. Esas expresiones son estándares para todos los lenguajes que permitan su uso.

Los símbolos que se usan para formar las expresiones son como un "comodín" que indica cuáles elementos se pueden elegir, si se pueden elegir varios o solo uno, si tiene que haber mínimo uno, etc.

Siendo así, veamos las más comunes, que de hecho, son las mismas que se usan para construir un DTD.

sábado, enero 07, 2012

Encuesta sobre los subtítulos del Curso de BD de Stanford

Primero que todo tengo que dejarles saber que durante esta semana estuve de "vacaciones" y por eso no hubo nada nuevo.

Cuando traduzco los subtítulos siempre me pregunto que cual sería la forma más cómoda de leerlos, si hacer que aparezcan y desaparezcan al mismo ritmo al que lo dice la persona o mostrar oraciones completas con sentido. Hoy eso es lo que quiero saber a través de una encuesta.

Miren los vídeos a continuación. El primero muestra los subtítulos con sentido completo, por oraciones. Para mi es la forma más cómoda:



El segundo es la continuación del primer vídeo, pero fíjense que los subtítulos se muestran diferentes. Ahora aparecen y desaparecen mientras la persona habla. Aunque no se me hubiera ido la mano en algunas partes con la sincronización, de todos modos esta manera, a mi personalmente no me gusta, tengo que tener todo el tiempo la vista fija en la parte de las letras.



¿Qué me dicen ustedes?