martes, 21 de julio de 2015

Curso de C# orientado a Unity3d - 2. Declarar variables

Unity3D C# - 2. Declarar variables
Hoy veremos en este curso de C Sharp, como declararar variables.
Una variable es un valor asignado a un espacio de memoria, al cual accedemos mediante un nombre que lo designa. 

Para declarar una variable hay que seguir la siguiente estructura:

public/private + Tipo de dato + Nombre de variable + ;

Veamos la primera parte public/private. Si queremos ver y modificar el valor de la variable desde el inspector, debemos escribir public, pero si queremos que sea una variable que no aparezca porque es constante, por ejemplo, utilizaremos private, o bien no escribiremos nada, puesto que por defecto es lo mismo nada que private. 

Además de no aparecer, si es private, la variable es protegida y no se puede acceder desde otros scripts.

Ejemplos:

public int Age; --> Aparece en el inspector.
private int Age; --> No aparece en el inspector.
int Age; --> No aparece en el inspector.

La segunda parte consiste en el tipo de dato (int, byte, bool, float...). Podéis echar un vistazo al primer tutorial para más información.

Por último y no menos importante, el nombre de la variable, que no debe ser una palabra reservada, por lo que las siguientes palabras (hay muchas más) no pueden ser el nombre de una variable: int, float, bool, RigidBody, GameObject, Object, Transform, Time... Además, he de decir que Unity3d es sensible a las mayúsculas y minúsculas, por lo que no es lo mismo Age que age.

Ya hemos inicializado nuestra variable. Para utilizarla en el script, simplemente hay que escribir el nombre de la variable.

Ejemplo:

Hemos inicializado la variable float health.

void Start(){
health = 100.0f;
}

Posible problema - No puedo acceder a mi variable desde otro script.

No te preocupes. Solo hay que hacer dos cosas:

1) Asegurarse de que la variable es pública y por tanto, no está protegida.

2) Añadir static delante de public y antes del tipo de dato.

Ejemplo:

public static float Stamina = 100.0f;


lunes, 20 de julio de 2015

Curso de Algoritmia - ¿Qué son los algoritmos?

Curso de Algoritmia - ¿Qué son los algoritmos?
Un algoritmo, nombre que proviene del matemático persa del siglo IX Al-Juarismi, es sencillamente un conjunto de reglas para efectuar algún cálculo.

El algoritmo más famoso de la historia es el algoritmo de Euclides para calcular el máximo común divisor de dos enteros.

Tipos de algoritmos:

-Probabilista= Algoritmo que basa su resultado en la toma de algunas decisiones al azar (Pseudoaleatorio).

-Aproximados= Nos dan una respuesta tan precisa como decidamos, ya que el resultado no puede ser exacto.

-Heurísticos= Una heurística es un algoritmo que abandona uno o ambos objetivos (buenos tiempos de ejecución y buenas soluciones); por ejemplo, normalmente encuentran buenas soluciones, aunque no hay pruebas de que la solución no pueda ser arbitrariamente errónea en algunos casos.
Las heurísticas generalmente son usadas cuando no existe una solución óptima bajo las restricciones dadas (tiempo, espacio...), o cuando no existe del todo.

Diferencia entre algoritmo aproximado y heurístico

Con los algoritmos aproximados podemos especificar el error que estamos dispuestos a aceptar y con los heurísticos no controlamos el error, pero quizá podamos estimar su magnitud.


domingo, 19 de julio de 2015

Seguridad - Tipos de Malware: Virus informático

Seguridad - Tipos de malware
El malware, también llamado badware, código malicioso o software malintencionado, es un tipo de software que tiene como objetivo infiltrarse, robar información, ser molestos (spam y gusanos) y dañar una computadora o sistema de información sin el consentimiento de su propietario. 

Malware no es sinónimo de software defectuoso. El primero tiene una intención dañiña, el otro, contiene bugs peligrosos para el ordenador que son fallos de código, no código malicioso.

·Virus informático=
Es un malware que tiene la finalidad de alterar el normal funcionamiento del ordenador, sin el permiso o el conocimiento del usuario. Los virus, habitualmente, remplazan archivos ejecutables por otros infectados con el código de este. Los virus pueden destruir los datos almacenados en una computadora, aunque también existen otros más inofensivos, que se caracterizan por se más molestos.



Los virus informáticos son muy nocivos y además algunos contienen una carga dañina llamada payload (efectos destructivos, nocivos o molestos que cualquier virus puede producir cuando ya ha tenido lugar su infección, además de los efectos secundarios de dicha infección).

El funcionamiento de un virus informático es conceptualmente simple: Se ejecuta un programa que está infectado, en la mayoría de las ocasiones, por desconocimiento del usuario. El código del virus se aloja en la memoria RAM y toma el control de los servicios básicos del sistema operativo, infectado, posteriormente, archivos ejecutables que sean llamados para su ejecución.
Finalmente, se añade el código del virus al programa infectado y se graba en el disco.

Estructura del virus informático:

-Módulo de propagación: Se encarga de manejar las rutinas de archivos ejecutables, tomando el control del sistema e infectando otros archivos.
-Módulo de ataque (Opcional): Es el encargado de manejar las rutinas de daño adicional del virus.
-Módulo de defensa (Opcional): Es el encargado de proteger al virus, evitando todo aquello que provoque la remoción del virus y retardar, en todo lo posible, su detección y eliminación.

Clasificación:

-Virus de sector de arranque (de boot): Infectan sectores de arranque (BOOT o MBR) y se activan al arrancar desde el disco infectado.

-Virus de programa o de fichero: Infectan cualquier fichero ejecutable y se activan al ejecutar el programa o fichero infectado.

Por último, he de decir que un virus puede pertenecer a ambos grupos.


sábado, 18 de julio de 2015

Curso C# orientado a Unity3d - 1. Tipos de variables

Unity3D C# - 1. Tipos de variables
En todos los lenguajes de programación existe la necesidad de asignar un valor a un espacio de la memoria del ordenador con la finalidad de hacer operaciones aritméticas básicas, bases de datos, programas que hagan ecuaciones de segundo grado...

Existen muchos tipos de variables, pero voy a explicar los que más se utilizan. Hay 4 tipos de variables, las de valor entero (byte, short, int y long), las de coma flotante (float y double), las de caracteres (string y char) y las de valor lógico (bool).

·Variables de valor entero=
-byte -> 2^8 valores -> [-127,128]
-short -> 2^16 valores -> [-32767,32768]
-int -> 2^32 valores -> [-2147483647,2147483648]
-long -> 2^64 valores -> [-9223372036854775807,9223372036854775808]

Los intervalos de arriba indican los posibles valores que pueden albergar los distintos tipos de variables de valor entero.

Por ejemplo, si queremos crear una variable que se corresponda a la edad de una persona, no nos hace falta que la variable sea int, porque nadie vive hasta los 32768 años. Por ello, lo mejor sería que fuera byte que es el de un intervalo de números menor.

Es muy importante que asignemos una variable con el tipo de dato correcto, puesto que un mayor número posible de valores, supone un mayor espacio en memoria.

·Variables de coma flotante=
-float -> 2^32 valores.
-double -> 2^64 valores.

Se utilizan para crear variables con decimales. También hay que decir que después de asignar el valor a una variable de coma flotante, hay que añadir seguidamente una 'f' si es float y una 'd' si es double.

Yo, sinceramente, no suelo usar mucho double.

Ejemplo:

public float a = 1.2f;
private double b = 2.111d;

·Variables de caracteres=
-char: Es un dígito individual que puede representar números (0-9), letras (a-z) y símbolos (!"$). Se asigna el carácter entre ' '. 

Ejemplo:
public char buck = '$';

-string: Es una cadena de caracteres, es decir, muchos caracteres juntos y/o separados que constituyen un mensaje. Se asigna el valor del string entre "".

Ejemplo:
public string price = "9€ me ha costado.";

·Variables de valor lógico=
-bool: Pueden tener dos valores "true" o "false".

Posibles casos de bool:
1- Quiero saber cuando está corriendo el personaje para cambiar la animación de Walk a Run.

2- Quiero saber cuando tiene un arma equipada para activar un script de disparo o una cámara especial con una GUI de mirilla, munición...

Tutorial de Unity3D - Cambiar de nivel (BÁSICO)

Unity3D - Cambiar de nivel
Objetivo: Cuando el jugador llegue a una puerta, zona, final de mundo... cambie de nivel.

Dificultad: Muy fácil.

1- Vamos a File -> Build Settings y añadimos nuestra escena al panel.
2- Crea un Empty Object y asignarle un box collider. Es muy importante que tenga Trigger activado.
3- El jugador debe tener la etiqueta (tag) "Player" y tiene que tener collider.
4- Asignar a NombreNivel el nombre de la escena que se corresponde con el segundo nivel.

Aquí os dejo los scripts:

C# -> https://www.dropbox.com/s/ixht6wtj655uvbu/EntrarNivel.cs?dl=0
JS ->  https://www.dropbox.com/s/d4in7mxuurr8o60/EntrarNivel.js?dl=0

Desgaste del hardware y del software

Desgaste de hardware
La gráfica ilustra la tasa de falla del hardware como función del tiempo.  (Curva de tina o de bañera).

Se puede apreciar que el hardware presenta una tasa de falla elevada en una etapa temprana de su vida (atribuible a defectos de diseño), los defectos son corregidos y la tasa desciende a un nivel estable durante un tiempo. Sin embargo, con el paso del tiempo, la tasa de fallas aumenta a medida que los componentes del hardware resienten los efectos acumulativos de suciedad, vibración, abuso, temperaturas extremas... En resumen, el hardware comienza a desgastarse.

El software no se desgasta, se deteriora

El software no se ve afectado por los problemas ambientales que desgastan el hardware, por lo cual la curva de la tasa de fallas adopta la forma de la curva idealizada.

Los defectos en el código ocasionarán tasas elevadas de fallas al comienzo de la vida de un programa. No obstante, estos errores son corregidos y la curva se aplana.
La curva idealizada es una gran simplificación de los modelos reales de las fallas del software. Aun así, está claro que el software no se desgasta, se deteriora.


Esta contradicción aparente se entiende mejor si se considera la curva real.

Durante su vida, el software sufrirá cambios. Es probable que cuando éstos se realicen, se introduzcan errores que ocasionen que la curva de tasa de fallas tenga aumentos súbitos. 


Antes de que la curva vuelva a su tasa de fallas original de estado estable, surge la solicitud de otro cambio que hace que la curva se dispare otra vez. Poco a poco, el nivel mínimo de la tasa de fallas comienza a aumentar: el software se está deteriorando como consecuencia del cambio.
Cuando un componente del hardware se desgasta es sustituido por una refacción. En cambio, no hay refacciones para el software. Cada falla de éste indica un error en el diseño o en el proceso que tradujo el diseño a código ejecutable por la máquina. Entonces, las tareas de mantenimiento del software, que incluyen la satisfacción de peticiones de cambios, involucran una complejidad considerablemente mayor que el mantenimiento del hardware.

viernes, 17 de julio de 2015

Diferencia entre Hardware y Software

Hardware
Cuando hablamos de hardware, nos  referimos a la parte tangible del ordenador, aquello que se puede tocar. 
hardware
hardware
El hardware de los ordenadores, se cambia con menor frecuencia que el software; ya que aunque se desgasta con el tiempo, su utilidad suele extenderse más que la de este último; el cual, al poco tiempo puede quedar desfasado.
El hardware se puede clasificar en dispositivos de entrada, que se utilizan para introducir datos en la computadora, en dispositivos de salida, que reciben los datos del ordenador y los que almacenan datos, los que permiten la conectividad con otros dispositivos… Es decir, podemos clasificar el hardware en:
  • Periféricos de entrada.
  • Periféricos de salida.
  • Periféricos de E/S (entrada/salida) o mixtos.
Los periféricos son dispositivos externos a la computadora que nos permiten realizar funciones complementarias como escanear una imagen para editarla en el ordenador, controlar un personaje de un videojuego con un joystick...
Ejemplos de cada uno de los tipos:
  • Periféricos de entrada: teclado, scáner, micrófono, joystick, lápiz óptico, ratón, webcam, escáner de código QR...
  • Periféricos de salida: monitor, impresora, altavoces, proyector de vídeo...
  • Almacenamiento de datos extraíbles: unidad de disco óptico ((CD-RW, DVD + RW), disquete (en desuso), tarjeta de memoria, unidad flash USB.
  • Placa base: CPU, memoria de acceso aleatorio (RAM), tarjeta de video, tarjeta de sonido…
  • Puertos de datos: firewire ethernet, puerto paralelo, puerto serial…

Software

El software, por el contrario, es cualquier programa que se carga en una computadora; como por ejemplo,  el sistema operativo, el servidor, el navegador web, reproductor multimedia… Es el código y las instrucciones que le dicen al hardware cómo debe operar. Este código puede verse y ejecutarse utilizando el hardware.
El software permite que la computadora pueda realizar tareas específicas. Aparte del sistema operativo, hay muchos tipos de software que le dan funciones adicionales al ordenador.
Contrario al hardware; no se desgasta con el tiempo, pero sí queda obsoleto; porque es constantemente actualizado.
El software se categoriza en tres tipos: software de sistema, software de programación y software de aplicación. El de sistema es un software diseñado para operar y proporcionar funcionalidad básica al hardware, de modo que proporcione una plataforma para ejecutar aplicaciones.
El software de programación incluye programas o aplicaciones. Los desarrolladores lo utilizan para crear, depurar, mantener o ayudar a otros programas y aplicaciones.
El software de aplicación está desarrollado para realizar cualquier tarea que beneficie el cómputo. Es un conjunto de programas que permiten que la computadora realice un trabajo específico de procesamiento de datos para el usuario. 
Tipos de software
  • Software del sistema: controladores de dispositivos, servidores, utilidades…
  • Software de programación: compiladores, depuradores, intérpretes, enlazadores, editores de texto…
  • Software de aplicación: ofimática, bases de datos, reproductores multimedia, navegadores web…


Fuentes: