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} $