jueves, 5 de diciembre de 2013

Windows 8.1 - El sistema operativo del buen gusto


Artículo para: Todo tipo de usuarios

Como ya viene siendo habitual, Microsoft nos ha deleitado con un sistema operativo sencillo, bonito y sobre todo optimizado para realizar nuestras tareas diarias.

Es cierto que con Windows Vista nos quedó un amargo gusto que recordó a aquella versión maravillosa llamada Millenium y que duró menos de un año (porque era una auténtica mierda), dando paso a XP. De hecho el rendimiento de Windows Vista quedó en entredicho cuando la interfaz aero se comía nuestras máquinas (que la verdad, no eran tan potentes como las que ahora podemos tener).

Mucho tiempo ha pasado desde entonces y ya nuestro querido Windows 7 nos dejó muchísimo mejor cuerpo. Todo funcionaba como un reloj, mucho más optimizado y con el mismo aspecto que el Vista, pero bien hecho.

Ahora, además de optimizar mucho mejor todos los recursos, tenemos un Windows 8.1 aún más enfocado a los usuarios finales de todas las tipologías y colores; habiendo retomado el Menú Inicio (acierto supremo, que en la versión 8 no habían añadido), han enfocado la interfaz a botones grandes y no muy numerosos y con pocos textos. La curva de aprendizaje si vienes de un Windows anterior es cierto que es grande para usuarios poco experimentados y los menúes están pensados totalmente para pantallas táctiles, pero es una gozada ver cómo lo han hecho.

Por mi parte deciros que muy recomendable, yo ya lo tengo en casa (totalmente legal) y estoy encantado de la vida; ¡vosotros mismos si aún no le habéis dado la oportunidad a los chicos de Redmond!!

Por cierto, Microsoft NO me tiene en nómina, ¡malpensados!
Windows

viernes, 22 de noviembre de 2013

Delegados y Expresiones Lambda… perdiendo el miedo

Artículo para: Desarrolladores .NET con nivel intermedio

Delegados

Antes de empezar a entrar en el detalle sobre este tema indicar que el presente documento no es un libro, por lo que no nos extenderemos mucho. Lo cierto es que suele dar bastante miedo al programador porque son conceptos que no se entienden bien ni con un libro, por lo que trataremos de explicarlo sin que sea excesivamente técnico, ni exhaustivo.

Un delegado es la definición de una función que sirve para pasarla como parámetro a otra. Así de sencillo y claro. Quizá se encuentren otras definiciones mejor redactadas y mucho más confusas, pero esta se entiende tal cual.

public delegate bool DelegateFunction(int parameter1, int parameter2);

Así se declara un delegado, no requiere más que esto y sirve como carcasa para pasar por parámetro a otra función una con este mismo tipo de declaración: dos números enteros de entrada y un booleano de salida.

Ahora viene el crear una función que utilice el delegado como parámetro:

public string ExampleFunctionWithParameterDelegate(DelegateFunction df, int p1, int p2)
{
if (df(p1, p2))
{
return String.Format("Se cumple la condición de la función df usando {0} y {1}",
                    p1,
                    p2);
}
return String.Format("NO se cumple la condición de la función df usando {0} y {1}",
                    p1,
                    p2);
}


Esto nos lleva a empezar a entender cómo funcionan los delegados. Ahora nos bastará con crear funciones que cumplan los parámetros de entrada (dos enteros) y salida (un booleano) como las que siguen:

public bool DelegateExampleFunctionP1IsLessThanP2(int parameter1, int parameter2)
{
return parameter1 < parameter2;
}

public bool DelegateExampleFunctionP1IsMoreThanP2(int parameter1, int parameter2)
{
return parameter1 > parameter2;
}

Bueno, ahora lo hilamos todo realizando llamadas como las que siguen:

var p1 = 5;
var p2 = 2;
var returned1 = ExampleFunctionWithParameterDelegate(
DelegateExampleFunctionP1IsLessThanP2, p1, p2);
var returned2 = ExampleFunctionWithParameterDelegate(
DelegateExampleFunctionP1IsMoreThanP2, p1, p2);


¿Podéis adivinar los valores de las variables returned1 y returned2 después de la ejecución del juego de instrucciones? Pues son los siguientes:

returned1 = "NO se cumple la condición de la función df usando 5 y 2"
returned2 = "Se cumple la condición de la función df usando 5 y 2"

Como podemos observar, esto nos permite hacer funciones mucho más flexibles, incluso “mutantes”. Ahora pasaremos a explicar las expresiones Lambda, utilizando el mismo ejemplo para los delegados.

Expresiones Lambda





Siguiendo la estela anterior y sin más dilación, aporto un ejemplo de expresión Lambda que servirá para comprender a la perfección cómo funcionan, comparándolo con el anterior desarrollo de ejemplo, marcamos en amarillo la expresión lambda:


var returned1 = ExampleFunctionWithParameterDelegate(
DelegateExampleFunctionP1IsLessThanP2, p1, p2);
var lambdaReturned1 = ExampleFunctionWithParameterDelegate(
(parameter1, parameter2) => { return parameter1 < parameter2; }, 
         p1, p2);

var returned2 = ExampleFunctionWithParameterDelegate(
DelegateExampleFunctionP1IsMoreThanP2, p1, p2);
var lambdaReturned2 = ExampleFunctionWithParameterDelegate(
(parameter1, parameter2) => { return parameter1 > parameter2; },
p1, p2);


Se empieza a vislumbrar que la única diferencia con el código anterior de delegados es que ahora ya no necesito las funciones auxiliares creadas, las creo “al vuelo” y sin definición directamente dentro de los parámetros de llamada de la función principal con el delegado.

Como imaginaréis, el resultado será el siguiente, exactamente idéntico a su predecesor ejemplo de delegados:

returned1 = "NO se cumple la condición de la función df usando 5 y 2"
lambdaReturned1 = "NO se cumple la condición de la función df usando 5 y 2"
returned2 = "Se cumple la condición de la función df usando 5 y 2"
lambdaReturned2 = "Se cumple la condición de la función df usando 5 y 2"


Las expresiones lambda y los delegados se encuentran implementados en multitud de funcionalidades de los objetos del framework. Uno de los sitios más usuales donde encontrarlas es en los objetos de la clase System.Collections.Generic , por ejemplo en las listas y nos será de gran utilidad su buen empleo para realizar consultas sobre dichas colecciones.
C# y Programación

jueves, 14 de noviembre de 2013

Borrado seguro de ficheros en Windows - File Predator




 


Artículo para: Todo tipo de usuarios

No os quiero asustar pero, el borrado de Windows eliminando en la papelera NO ES SEGURO. De hecho, nunca lo ha sido, por lo que hay que tener en cuenta que si hacemos un borrado de ficheros clásico, nuestros ficheros no serán realmente eliminados hasta que, por casualidades de la vida, los ficheros sean totalmente sobreescritos.

Aunque ha sido por casualidad, este tema lo ha hecho tristemente célebre la falta de conocimiento sobre el mismo a la hora de borrar los datos de un disco duro de la trama Bárcenas. Os aseguro que antes de la publicación del asunto yo ya estaba haciendo la aplicación y este post.

Antes de empezar esta entrada en sí, os explicaré cómo borra Windows los ficheros sobre el disco duro, para que podáis entender por qué es tan importante eliminar los archivos de un modo correcto, máxime si nos deshacemos de un disco duro. También indicaros que estoy tirando de memoria de la asignatura Sistemas Operativos de la carrera y cabe la posibilidad que la explicación no sea 100% precisa; pero lo que pretendo es que cualquiera lo entienda. Se aceptan comentarios para mejorar el artículo.

Cómo se distribuyen los ficheros a lo largo del disco duro
En un sistema operativo Windows (pasa lo mismo en Linux) los ficheros se almacenan en el disco duro secuencialmente (aunque esto no es exactamente así, se entiende mejor), al final, todo se reduce a secuencias de bits (ceros y unos) unos detrás de otros. Parte de esta información se denomina el nodo-i o i-nodo que es la información que el sistema operativo lee para determinar la información básica del fichero: la posición de la memoria donde empieza el fichero y sus metadatos como la longitud del fichero.
Dos ficheros eliminado en el anterior esquema del disco duro
Windows exclusivamente borra el i-nodo en las dos pasadas (mandar a la papelera y vaciarla) y, como es de esperar, la información permanece intacta en el disco duro hasta que el propio Windows pone encima de aquellos datos que estaban otros nuevos. Esto puede pasar al poco tiempo del borrado de los anteriores... ¡o podría no pasar nunca!
Cómo las aplicaciones recuperan los datos

Existen multitud de herramientas sencillas y muy baratas (incluso gratuitas) que son capaces de recuperar estos datos incluso después de formatear el disco duro (siempre que no sea un formato a bajo nivel), por lo me reafirmo: el borrado de Windows NO ES SEGURO. Dichas herramientas leen el disco duro y comprueban que ficheros se encuentran huérfanos de i-nodo y les crean uno para que Windows vuelva a mostrarlos con normalidad. Siempre que dichos ficheros no hayan sido sobreescritos en parte o en su totalidad, las aplicaciones restauradoras se harán cargo de recuperar los ficheros. De estas herramientas y sobre cómo recuperar ficheros perdidos hablaremos en el próximo post, ahora nos centraremos en el borrado seguro, motivo del presente.

Presentación File Predator

Para ayudaros a borrar vuestros ficheros de una forma segura, directamente he optado por crearos una aplicación yo mismo. Existen más y diversas, no suelen ser gratuitas. La mía sí y podéis descargarla aquí:


Unas cosas antes de empezar y son de vital importancia:

  • La aplicación es totalmente gratis y no puedes ni pagar ni cobrar por ella
  • Puedes ponerla en cualquier web siempre que no olvides poner una reseña a este blog y al post y no cambies el contenido del fichero rar que hay en mi web ni los ficheros de licencia del mismo
  • ¡Mucho cuidado con su uso! Lo que borres no serás capaz de recuperarlo.
  • Lo usas BAJO TU PROPIA RESPONSABILIDAD 
  • Me eximo de toda responsabilidad de cualquier problema que puedas tener: ni virus que te hayan adjuntado en los ejecutables, ni errores de la propia aplicación, ni errores humanos utilizándola.
Si no estás de acuerdo con lo dicho antes, no la bajes ni la utilices. Soy claro: no es mi problema. Te hago un regalo que me cuesta esfuerzo y trabajo; y te lo entrego "AS IS" (como está). Por supuesto, siempre trataré que la aplicación esté libre de fallos, pero como todos sabemos la programación tiene fallos históricos que han hecho millones de dólares en daños a grandes compañías; así que es evidente que una aplicación gratuita podrá tener fallos (es más que seguro). Si detectas fallos y quieres reportarlos por favor, comenta.

El manejo de la aplicación es sumamente sencillo e intuitivo, así que os dejo que vayáis descubriéndola y en siguientes artículos os iré poniendo al día de cómo usarla. Se entrega la compilación para ser descomprimida, requiere el framework 4.0 o superior para que se ejecute correctamente.

En próximas entradas de este blog os explicaré cómo hacer vuestros propios algoritmos de borrado seguro para que los podáis añadir en la aplicación, ¡no os lo perdáis!




Windows

martes, 3 de septiembre de 2013

Protege tu PC de virus y otra basura GRATIS



Artículo para: Novatos

Llevo un tiempo observando el desconocimiento y la torpeza de la gente a la hora de proteger sus máquinas. Aunque no pretendo asustar a nadie es SUMAMENTE PELIGROSO utilizar un PC con un sistema operativo Windows sin la protección adecuada. Para que nos entendamos y siendo un tanto tosco, el símil sería que nos soltaran en África teniendo relaciones sexuales como los conejos sin preservativo... ¿suena duro? Pues es real como la vida misma.

Cuando compras un PC, normalmente no lleva antivirus o lleva una versión de prueba de alguno que finalmente te quieren cobrar. Estas protecciones suelen costar la friolera de 50€ o más por una suscripción de apenas un año, cuando se acaba te dejan de proveer de nuevas definiciones de virus y... ¡empieza la fiesta en tu máquina!

Un virus informático, como descripción simplificada, es una aplicación que se dedica a hacer daño a tu máquina y a infectar ficheros para que no puedas volver a utilizarlos y no puedas eliminarlo fácilmente. Una aplicación Spyware es un software especialmente diseñado para sacar toda la información de tu máquina posible (pulsaciones del teclado, información personal, etc...).

Bien, por fortuna sigue habiendo gente que hace su trabajo por amor al arte (yo soy un buen ejemplo de ello, pero fuera de mi trabajo, claro está) y publica versiones de antivirus y anti-spyware totalmente gratuitas. Hoy os voy a dar dos aplicaciones totalmente gratuitas para su uso doméstico, que además son las que yo suelo usar y funcionan estupendamente.

Antes de empezar, hay que desinstalar la versión previa del antivirus que tengamos, porque si instalamos dos antivirus en la misma máquina es posible que finalmente acabemos reinstalando el sistema operativo, dado que dos aplicaciones de ese tipo suelen llevarse bastante mal. Para ello, iremos al Panel de Control, Agregar o quitar programas (en Windows más nuevos, Programas y características) y buscaremos en la lista la aplicación que corresponda eliminar, seleccionándola y haciendo clic sobre Desinstalar. Existe un antivirus cuya desinstalación es un caos, por lo que recomiendo utilizar la aplicación que ellos mismos proveen para desinstalar sus soluciones: el antivirus Norton en todas sus versiones. Puedes descargar aquí la aplicación en cuestión: Symantec Removal Tools

Una vez desinstalado el antivirus previo, procedemos a descargarnos las aplicaciones en cuestión, que son:




¿Por qué estas aplicaciones y no otras? En el caso del antivirus, para mi gusto, una aplicación desarrollada desde Microsoft será siempre más eficiente que una de terceros (a mi me parece que va como un tiro y apenas afecta a la experiencia del usuario). Es cierto que puede que no estén tan al día en las definiciones de virus como pueda estar compañías que se dedican expresamente a ello, pero en líneas generales son serios.

En el caso de Spybot S&D, es una aplicación que lleva en el mercado bastante tiempo y, siempre que sea para tu casa, va a ser gratis. 

Además, ambas aplicaciones se autogestionan y no necesitan de la intervención del usuario durante sus procesos internos, solo pedirán confirmaciones en el momento que detecten algo anómalo.

Toda esta protección es más que suficiente para un uso normal de internet (no para páginas de piratadas o pornografía rara, claro está).

No uses tu PC sin protección NUNCA, puede que te arrepientas.
Windows

sábado, 10 de agosto de 2013

Quiero conocer vuestra opinión


En líneas generales, veo una buenísima aceptación de este blog en el que prácticamente acabo de iniciarme (lo cual me encanta), pero os he de pedir una cosa: quiero conocer vuestra opinión sobre mis artículos. Por favor, comentad al pie de los mismos vuestras impresiones; para mi son lo más importante.

Muchas gracias por vuestra ayuda,
 Enrique Díaz
Info

¿Tu Windows funciona anormalmente lento?

Artículo para: Todo tipo de usuarios


Desde tiempos ancestrales (allá por el 1994, cuando me regalaron mi primer PC) una pregunta ronda mi cabeza constantemente: ¿Por qué el Windows se degrada con el tiempo?

En los tiempos que corren (ya ha llovido desde entonces) ya no me hago esa pregunta porque conozco la respuesta: el registro de Windows y las basuras que los usuarios solemos instalar (con servicios que no valen para nada) son la raíz del problema.

El registro de Windows es la base del sistema operativo. Para que nos entendamos, es una gran base de datos que contiene información de todas las aplicaciones instaladas en el sistema, además de información de procesos y servicios del sistema. La ventaja de tenerlo todo en el mismo sitio es que todo el mundo sabe dónde buscar y el problema que genera es que el acceso al mismo empieza a ser ineficiente cuando el volumen de información es excesivo... Empezamos a entenderlo ¿verdad?

La primera solución que os propongo: reinstalar el sistema operativo. Esta es la solución óptima, pero tenéis que tener en cuenta las aplicaciones que habéis instalado previamente y que no servían para nada, o volveréis a tener exactamente el mismo problema. Además, antes de reinstalar tendréis que hacer copia de seguridad de los datos, que es también un aburrimiento. Esta solución la recomiendo cuando el problema sea muy grave: la máquina tarda el triple de lo normal en arrancar y funciona mucho peor que cuando la compramos.

Cuando trabajé en PC City (ya disuelto y convertido en Worten) extraje otras soluciones (para ellos muy rentable, no me extraña lo que les ha pasado) que son bastante buenas siempre que el problema no sea gravísimo. Para la limpieza del registro de Windows existen varias aplicaciones. Incluso existen suites completas para el mantenimiento de las máquinas completo (no solo limpian el registro). Ejemplos de estas aplicaciones son las siguientes:

  • CCleaner: solo limpia el registro de Windows y también sirve para desinstalar aplicaciones, pero la ventaja clara es que es gratis. Muy recomendable.
  • TuneUp Utilities: esta es una suite completa para el mantenimiento y optimización del PC. ¿La pega? que es de pago. Hay una versión de prueba en su web y creo que por unos 30€ tendrías la completa. Muy recomendable también, no solo para el registro, sino para lo que a continuación voy a explicar.
Los servicios arrancados son el otro problema principal. En ocasiones las aplicaciones al ser instaladas nos instalan silenciosamente servicios de Windows cuya utilidad es cuanto menos, dudosa (al menos si no estamos utilizando esa aplicación) y suelen venir arrancadas por defecto. Con suites como TuneUp ya mencionada, nos propondrá cuáles de estos servicios pueden ser parados sin peligro para la estabilidad del sistema, pero existe una forma manual, un poco más tosca pero igualmente efectiva.


Para la parada manual de servicios, lo primero que tenemos que hacer es pulsar la tecla Windows + R.


En el cuadro de texto pondremos services.msc.


Con el botón derecho sobre aquellos servicios que sospechamos no sirven para nada seleccionaremos sus propiedades.

Cambiaremos el Tipo de inicio por Manual o por Deshabilitado. Después haremos clic sobre Aceptar y se cerrará el cuadro. 

Repetiremos el anterior proceso tantas veces como servicios sospechemos no nos sean de utilidad. Recomiendo no tocar aquellos que son de Microsoft.

Al finalizar, reiniciamos la máquina y observamos cómo de fluida funciona a raíz de los cambios.

Por lo que os acabo de enseñar nos obligaban a cobrar en mi antiguo trabajo de técnico 30 €, así que ya sabéis, acepto donativos... ;)
Windows

jueves, 8 de agosto de 2013

Cómo crear un servidor con Windows en casa con clientes modestos (con cualquier SO)

Artículo para: Todo tipo de usuarios

¿Tienes en casa PC's que pensabas que no volverías a utilizar y sólo una máquina buena?

Como segunda entrega del presente blog os explicaré a grandes rasgos cómo reutilizar esas máquinas con un poco de imaginación...

El contenido del presente artículo puede ser reproducido en casa por cualquier persona con un poco de interés en la materia. No es nada difícil de realizar (solo lleva algún tiempo) y te permitirá reutilizar equipos que a priori pensabas jubilar o tirar a la basura... una lástima ¿verdad? Además, los tiempos que corren no son para tirar nada. Acepto todo tipo de consultas al respecto (hacedlas en los comentarios).

En mi caso concreto tengo dos máquinas: un portátil Asus con un i7 y 12 GB de RAM y un miniportátil Acer con un Atom y 1Gb de RAM.

Para la realización del presente artículo necesitaremos al menos dos PC's: uno con una configuración lenta (por ejemplo, un atom) y uno un poco más potente y con suficiente RAM.

La topología, a grandes rasgos, será la que sigue (ejemplo con tres máquinas y usuarios):

Topología de la red doméstica

El primer paso a realizar será determinar qué máquina va a ser el servidor. Es obvio que hemos de elegir aquél cuyos recursos y sistema operativo sea más moderno y rápido. En mi caso el servidor será el i7, que tiene instalado Windows 8.



Cuentas de usuario en Windows 8


Una vez tenemos localizado el que va a ser el servidor tenemos que determinar cuántas personas van a usar el servidor y tendremos que crear por lo menos una cuenta por cada máquina que queramos conectar; iremos al Panel de Control, Cuentas de Usuario, Administrar Cuentas y en este punto agregaremos las cuentas que hemos pensado previamente. Llegados a éste punto, tenemos que realizar los pasos del anterior post Multiusuario con Terminal Services. Sin este paso previo, no nos funcionará para más de un usuario.

Cambio de nombre de máquina en Windows


Otra cosa a destacar en el servidor es que habrá que ponerle un nombre de máquina sencillo de recordar, como por ejemplo SERVIDOR. Esto nos será de gran utilidad más adelante. Por ejemplo, eso se cambia en Windows 8 desde Configuración, Información del PC, Configuración Avanzada del sistema, Nombre de equipo, Cambiar.

Ejemplo de cliente en Windows
 Ejemplo de Cliente en Linux


En las máquinas más modestas instalaremos un sistema operativo (si es que no viene ya instalado) que funcione medianamente bien. Existen tanto versiones de Windows, como XP, como Linux Ubuntu con un cliente de terminal services que podrían conectar perfectamente con estas máquinas. Tendremos en cuenta que los recursos de dichas máquinas no van a ser prácticamente empleados, porque usaremos los del servidor, que será sobre el que recaiga todo el peso del trabajo. Si quieres instalar un Linux realmente ligero, recomiendo Damm Small Linux o Puppy Linux pero te advierto que necesitarás conocimientos en el sistema operativo para ponerlo a funcionar 100% bien (y sobre este tema yo os puedo dar poco soporte, sinceramente). Lo mejor, un Windows XP que casi todos conoceréis y no requiere de mucho conocimiento.

Ya solo nos quedan pequeños flecos muy básicos: en las máquinas cliente tendremos que seleccionar que la cuenta se abra automáticamente sin introducir usuario y contraseña. Esto se hará así porque ningún dato de las mismas es susceptible de ser interceptado: todos los datos que se generan y manipulan quedarán almacenados en la máquina servidora, que sí ha de tener debidamente protegida con contraseña las cuentas. Desaconsejo esta práctica si las máquinas pequeñas se usan también para uso cotidiano (usar el navegador, etc...); pero advierto que todo se puede hacer en el servidor e irá todo muchísimo mejor si el servidor es lo suficientemente potente.

Cliente configurado de Escritorio Remoto

El último paso será configurar el cliente de Escritorio Remoto. Para ello, pondremos el nombre del servidor (en el ejemplo SERVIDOR) y haremos clic en Conectar. Si todo ha ido bien, en apenas unos segundos tendremos acceso al servidor como si fuéramos usuarios locales, pero estaremos remotamente conectados y nuestras máquinas modestas aprovecharán el potencial de la máquina más gorda.

Windows

miércoles, 7 de agosto de 2013

Multiusuario con Terminal Services (para Windows Vista, 7 y 8)

Artículo para: Todo tipo de usuarios
Iniciamos este blog creando una entrada que a más de uno nos ha dado un dolor de cabeza... ¿Cómo hacer que la conexión a escritorio remoto de Windows (terminal services) sirva para dos o más usuarios? 
Curiosamente y por defecto, Microsoft nos trae configurado Terminal Services para una sola conexión y un solo usuario. Es decir, tenemos una máquina con un número de usuarios mayor que uno, pero solo uno en ese preciso instante puede estar funcionando a la vez... Estúpido, ¿verdad? Los que hemos trabajado también en entornos Unix/Linux estamos acostumbrados a que las máquinas trabajen para muchas personas a la vez y estén bien aprovechadas. Los PC's con sistemas operativos de Redmond deberían estar igual de bien aprovechados, porque al igual que los entornos Linux son multitarea y multiusuario.
Bien, pues alguien se ha tomado la molestia de corregir esta estúpida deficiencia para hacer que nuestras máquinas estén bien aprovechadas independientemente del sistema operativo que lleven instalado y de la versión (32 o 64 bits) del mismo que tengan.
Puedes descargar en el siguiente enlace el fichero que se corresponde con tu sistema operativo y deberemos ejecutar con una consola de comandos en modo administrador (botón derecho de ratón y hacer clic en Ejecutar como administrador) el bat que contienen. Aún no tengo el parche para Windows 8.1, los que he probado NO funcionan. Si tienes la solución, por favor, compártela.
Parche para Terminal Services (* leer nota  al pie antes de descargar)

Una importante particularidad es que en la versión de Windows Vista manualmente deberemos añadir una excepción en el Firewall de Windows al puerto 3389 (el de terminal services), puerto que en el caso del resto de versiones se abre automáticamente.

Todo esto nos será de gran ayuda y es un paso imprescindible para el próximo artículo que será publicado en breve: Cómo crear un servidor en casa con clientes modestos.

* NOTA: a pesar de haber analizado todos los ficheros en busca de virus y otro tipo de malware, el autor no se hace responsable de los posibles daños que los ficheros pudieran hacen en sus máquinas. Úselos bajo su propia responsabilidad.
Windows

 

Webs amigas:

  • Copyright © Los vericuetos .NET 2015
    Distributed By My Blogger Themes | Designed By Templateism