Mortuux

Diario de un estudiante geek. Informática, tecnología, programación, redes, sistemas operativos, bases de datos…

Archivos mensuales: septiembre 2009

Cambiar ubicación de las carpetas personales en Windows 7

Cuando Windows muere y sólo se tiene una partición, la mayoría de los usuarios pierden sus datos importantes como fotografías de viajes, música, etc.

¿Solución?

Crear particiones

Yo tengo creadas diferentes particiones. Recientemente cambié Windows XP por Windows 7 y no perdí nada. Ni música, ni películas ni juegos.

Para cambiar nuestra carpeta Mis Documentos de ubicación, y por ejemplo ponerla en la partición E:\ es tan simple como:

Hacer clic con el botón derecho sobre cualquier carpeta personal, ya sea Mis documentos o Mis imágenes.

Clic en propiedades y después en la pestaña ubicación y en el campo de texto seleccionamos nuestra nueva ruta para la carpeta y listo!

Así de fácil es proteger un poco más nuestros datos a fallos del sistema o cualquier otro desperfecto.

Anuncios

Líneas de acceso conmutado (I)

  1. ¿Qué son?

1.1.   Definición: Son aquellas líneas que necesitan hacer una llamada al nodo de conexión.

Pasos:

1.1.1.     Establecer llamada

1.1.2.     Enviar información, establecer conexión

1.1.3.     Liberar llamada/comunicación

Por ejemplo la línea telefónica

1.2. Consideraciones sobre el funcionamiento

Cuando hablamos de la línea telefónica los nodos se llaman central telefónica a nivel local.

El camino: Como un intercambiador . Llega la conexión por una línea, y dependiendo el destino y los recursos disponibles, elegirá un camino u otro.

1.3. Tipos de líneas de acceso conmutado

Terrestres (cableado)-> RTC (Red telefónica conmutada), RDSI (Red digital de servicios integrados)  y las móviles (aire)-> GSM (Global system comunication), GPRS (Global Packet Radio System, Sistema de global de paquetes por radio)

Analógicas VS Digitales:

Analógicas-> RTC

Digitales-> RDSI, GSM,  GPRS

1.4. Diferencias analógico y digital

Los analógicos son valores continuos y son infinitos (Num.  Real) y los digitales  son valores discretos y no son infinitos (0,1).

Diseño de bases de datos

1. Diseño de bases de datos

1.1. Modelo de datos
Un modelo de datos es un conjunto de conceptos, reglas y convenciones que nos permiten describir los datos, las relaciones entre los datos, las restricciones del mundo real y que nos permite manipular dichos datos.
Formalmente un modelo de datos sería MD = (R, O),
Las Reglas serían la parte estática del modelo y las Operaciones la parte dinámica
1.1.1. Parte estática
Está compuesta de dos cosas: objetos y restricciones
Objetos:
Entidades: Objeto abstracto o concreto del mundo real con existencia propia y fácilmente identificable (persona, lugar, suceso, etc.)
Propiedades o atributos de las entidades: Mínimo elemento lógico de información que se puede encontrar en una entidad o relación entre entidades.
Dominio: Rango de valores de cada atributo (nombre->alfanumérico, cumpleaños-> fecha)
Relación o asociación entre entidades: Por ejemplo un grupo de alumnos se relaciona con un aula.

1.1.2. Tipos de restricciones
Las impuestas por el usuario las impone el mundo real (Por ejemplo que los nº de teléfono tengan X números).
Inherente al modelo: El modelo de dato no nos permite determinados objetos ni relaciones entre objetos.

DDL: Lenguaje de definición de datos
Son órdenes que permiten describir la parte estática del modelo de datos.

1.1.3. Parte dinámica
Dinámica de un modelo de datos.
Está compuesto por un conjunto de operaciones que se definen sobre la estática del modelo y que se van a aplicar sobre los datos almacenados y que se denominan ocurrencias.
Las operaciones pueden ser:
Selección: Consiste seleccionar o localizar una o más ocurrencias, por ejemplo de la entidad alumno localizar ocurrencia mayor 20 años
Acción: Operaciones que se realizan sobre ocurrencias previamente seleccionadas, por ejemplo mirar, modificar, ver, insertar.

El lenguaje DML -> Lenguaje para la manipulación de datos
1.2. Pasos en el diseño de una base de datos
1.2.1. Nivel conceptual
Consiste en analizar el mundo real para describir las entidades, atributos y dominios y las relaciones entre entidades.
Este modelo es totalmente independiente de cualquier sistema gestor de base de datos (SGBD) El esquema conceptual es el modelo entidad-relación (E/R)
1.2.2. Nivel lógico
Se realiza la adaptación del esquema conceptual al tipo de SGBD que vayamos a utilizar.
1.2.3. Nivel físico
Se implementa el esquema relacional en el SGBD concreto (Access, Oracle, MySQL).

1.3. Modelo conceptual Entidad/Relación (E/R)
Restricciones Entidad: Debe tener existencia propia, puede llevar asociado un predicado que deben cumplir todas las ocurrencias, cada ocurrencia de la entidad debe poder distinguirse de las demás, todas las ocurrencias de la entidad deben tener los mismos atributos. Representación cuadrado con nombre de entidad.
Restricciones atributo: Cada atributo debe tener un significado único y consistente, no es necesario especificar los atributos que se obtienen mediante cálculos. Representación —–O nombre. Si el redondel está en negrita, es el atributo principal (clave: identifica de forma única cada ocurrencia de la entidad. Puede haber atributos alternativos y atributos compuestos también. Por ejemplo Empleado->Clave: Nif… alternativo: nº SS… Fecha nacimiento ->Día, mes, año: Compuesto

1.4. Relaciones
La relación se representa con un rombo.
• Nombre: Suele ser un verbo.
• Grado: Número de entidades que asocia
o Una entidad ( Persona – casa )
o Binaria: Dos entidades (Profesor – imparte – Grupo)
o Ternaria: Tres entidades ( Cliente – Hotel – Vuelo – contrata)
Tipo de correspondencia: Expresa el número de ocurrencias de la entidad que pueden relacionarse con una ocurrencia de la otra entidad.
Un profesor puede impartir a N grupos
1 profesor – N grupos
N Grupos – 1 grupos NM
1 persona casada con una persona -> 1 – 1
Cliente realiza pedido
Cliente N pedidos
Pedidos 1 cliente -> 1 N

Cardinalidad se expresa cómo (mínimo, máximo)
Un profesor como mínimo imparte 1 grupo, máximo N.
Un grupo es impartido como mínimo por 1, maximo N.
Una persona se casa como minimo con 0, como máximo con 1.
Cliente realiza como mínimo 1 como máximo N. un pedido como mínimo 1 como maximo por 1

Matrices en Php (II)

Recorrido por las matrices

El método apropiado para recorrer una matriz es utilizar la sentencia foreach(), cuya sintaxis es la siguiente:
foreach(matriz as $clave => $valor) {
... ... ...
}

El parámetro matriz representa la matriz por la que realizaremos el recorrido y $clave/$valor representan respectivamente el par individual clave/valor por el que pasamos.
$matriz = array('el', 'coche', 'es', 'azul');

/* Obtener tanto la clave como el valor */
foreach($matriz as $clave => $valor) {
echo "El valor de $clave es: $valor";
}

/*Obtener solamente el valor */
foreach($matriz as $valor) {
echo "El valor es: $valor";
}

Matrices en Php (I)

En PHP, podemos crear una variable de matriz de varias formas. La más sencilla:
$variable[expr clave] = expr;

Expr clave es una expresión que se evalúa para una cadena o cualquier entero no negativo y expr representa la expresión cuyo valor se asociará con la clave.
$var['a'] = 1;
$var['b'] = 2;
$var['c'] = 3;
$var['d'] = 4;

Si expr clave no se especifica, PHP utilizará automáticamente el siguiente entero disponible como clave.

Cuando definamos una matriz dentro de una secuencia de comandos manualmente, utilizar esta sintaxis puede ser difícil. En estos casos es mejor utilizar la sintaxis formal para las matrices; la sentencia array(). La sintaxis general es la siguiente:
$variable = array([mixto]);

En la sintaxis anterior, mixto representa los distintos pares de claves/valores definidos en este formato:
expr clave => expr valor;
expr clave => expr valor;

Por ejemplo:
$hola = array('a' => 1, 'b' => 2, 'c' => 3);
Es lo mismo que:
$hola['a'] = 1;
$hola['b'] = 2;
$hola['c'] = 3;

Matriz que asigna claves del 1 al 12 a los meses del año:
$meses = array(1=>"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");

Expresiones regulares en JavaScript

Una expresión regular es una cadena de caracteres que nos permitirá buscar coincidencias dentro de un texto o comprobar que una cadena tiene un formato concreto. En JavaScript se identifican colocando “/” al principio y al final de la cadena.

Consiste en escribir un conjunto de caracteres  para después encontrar coincidencias con él. Por ejemplo en la frase “el volante del coche” si nuestro patrón es /el/ obtendríamos que las palabras “el y “del” lo cumplen.

Para hacer más útiles los patrones, hay una serie de estructuras y caracteres especiales:

Caracteres de repetición

  • Asterisco(*): El caracter que le precede aparecerá cero o más veces.
  • Más(+): El caracter que le precede aparecerá una o más veces.
  • Interrogación(?): Igual que las opciones anteriores, pero el caracter puede aparecer ninguna o una vez.
  • {n}: Siendo n un número entero positivo, indicamos que el caracter se debe repetir al menos n veces.
  • {n,}: Similar al anterior, pero esta vez indicamos que al menos se debe repetir n veces.
  • {n, m}: El caracter debe repetirse entre n y m veces.

Caracteres especiales

  • Punto(.): Coincidirá con cualquier caracter simple excepto el salto de línea.
  • \n : Salto de línea.
  • \r : Retorno de carro.
  • \t : Caracter de tabulado.
  • \v : Tabulado vertical.
  • \f : Avance de página.
  • \uxxxx : Caracter unicode.
  • \b : Coincide con un separador de palabras.
  • \B : Coincide con un caracter que no sea separador de palabras.
  • \d : Dígito entre cero y nueve.
  • \D : Caracter que no sea un dígito.
  • \s : Coincide con un único caracter de separación.
  • \S : Coincide con un único caracter que no sea de separación.
  • \w : Coincide con cualquier caracter alfanumérico (De la “a” a la “z” en máyusculas y minúsculas, números del cero al nueve) o el subrayado.
  • \W: Coincide con cualquier caracter no alfanumérico ni subrayado.

Agrupaciones de valores

  • [xxx]: Coincide con los caracteres entre corchetes. También se puede especificar un rango contiguo de caracteres: [0-6] que esto equivale a [0123456].
  • [^xxx]: El acento circunflejo indica que coincidirán cualquier caracter salvo los especificados en los corchetes.
  • Barra vertical ( x | y ): O una cosa o la otra. Por ejemplo: /cara|cruz/, /perr[o|a]/

Modificadores

Los modificadores se colocan detras de la última barra, por ejemplo: /hola/g.

  • g : Fuerza a que se sigan buscando coincidencias después de encontrar la primera
  • i : Elimina distinción entre mayúsculas y minúsculas.
  • x : Fuerza que los espacios escritos sean ignorados.

Ejemplos útiles

  1. /\d{9}/ -> Número teléfono
  2. /\d{8}[a-zA-Z]/ -> Número DNI
  3. /\d{2}-\d{2}-\d{4} -> Fecha DD/MM/AAAA
  4. /\w+@\w+\.\w{2,3}/ -> Dirección correo electrónico.

Jerarquía de directorios en Linux

/ (raíz): Es el nivel más alto dentro de la jerarquía de directorios. De aquí cuelgan el resto de carpetas, particiones y otros dispositivos. Es por esto que donde se instala el sistema, se selecciona la partición deseada y se le indica que el punto de montaje es justamente /.
/bin (binarios): Los binarios son los ejecutables de Linux. Aquí tendremos los ejecutables de los programas propios del sistema operativo, entre ellos comandos como cp, mv, cat, chown, etc. No es el único directorio que contiene ejecutables como veremos más adelante.
/boot (arranque): Aquí nos encontramos los archivos necesarios para el inicio del sistema, desde los archivos de configuración de Grub Lilo, hasta el propio kernel del sistema.
/dev (dispositivos): Linux se basa en la simpleza y en el tratamiento homogéneo de la información. Linux trata los dispositivos como si fueran un fichero más para facilitar el flujo de la información. En esta carpeta tenéis los dispositivos del sistema, por ejemplo los usb, sda (o hda) con sus respectivos números que indican las particiones, etc.
/etc (etcétera): Aquí se guardan los ficheros de configuración de los programas instalados, así como ciertos scripts que se ejecutan en el inicio del sistema. Los valores de estos ficheros de configuración pueden ser complementados o sustituidos por los ficheros de configuración de usuario que cada uno tiene en su respectivo “home” (carpeta personal).
/home (hogar): Este hogar no es más que un directorio que a su vez contiene otros, uno por cada usuario dado de alta en el sistema. Dentro de dichos directorios es donde el usuario tiene su carpeta personal, donde están los ficheros de configuración de usuario, así como los archivos personales del mismo que puede crear, modificar y eliminar bajo su propio criterio.
/lib (bibliotecas): Contiene las bibliotecas (tambien mal conocidas como librerías) del sistema, así como módulos y controladores (drivers).
/lost+found (perdido y encontrado): Es una carpeta que nos podemos encontrar en todas las particiones. Cuando por cualquier circunstancia se cierra mal el sistema (un apagón por ejemplo), cuando éste se reinicie comprobaréis que se llamará al programa fsck para restaurar la integridad del sistema de ficheros. En esta carpeta encontraremos la información que se mal-guardó debido a la incidencia.
/media (media/medios): Es donde se montan las unidades extraíbles como los dispositivos USB, disqueteras, unidades de CD/DVD y en algunas distros, como Ubuntu, las particiones adicionales.
/mnt (montajes): Es un directorio que se suele usar para montajes temporales de unidades.
/opt (opcionales): Destinado para guardar paquetes adicionales de aplicaciones.
/proc: Información para la virtualización del sistema de ficheros de Linux.
/root: Es el /home del administrador. Es el único /home que no está incluido -por defecto- en el directorio anteriormente mencionado.
/sbin (binarios de sistema): Son los ejecutables de administración, tales como mount, umount, shutdown…
/srv (servicios): Información del sistema sobre ciertos servicios que ofrece (FTP, HTTP…).
/sys (sistema): Información sobre los dispositivos tal y como los ve el kernel Linux.
/tmp (temporales): Es un directorio donde se almacenan ficheros temporales. Cada vez que se inicia el sistema este directorio se limpia.
/usr: Es el directorio padre de otros subdirectorios de importancia:
/usr/bin: Conjunto de ejecutables de la mayoría de aplicaciones de escritorio entre otras (por ejemplo firefox).
/usr/include: Los ficheros cabeceras para C y C++.
/usr/lib: Las bibliotecas para C y C++.
/usr/local: Es otro nivel dentro que ofrece una jerarquía parecida al propio diretorio /usr.
/usr/sbin: Otra serie de comandos administrativos para el sistema.
/usr/share: Archivos compartidos como ficheros de configuración, imágenes, iconos, etc.
/usr/src: Tiene en su interior el código fuente para el kernel LInux.
var: Ficheros de sistema como el buffer de impresión, logs…
/var/cache: Se almacenan datos cacheados para las aplicaciones.
/var/lib: Información sobre el estado actual de las aplicaciones, modificable por las propias aplicaciones.
/var/lock: Ficheros que se encargan de que un recurso sólo sea usado por una aplicación determinada que ha pedido su exclusividad, hasta que ésta lo libere.
/var/log: Es uno de los subdirectorios más importantes ya que aquí se guardan todo tipo de logs del sistema.
/var/mail: Los correos de los usuarios.
/var/opt: Datos usados por los paquetes almacenados en /opt.
/var/run: Información sobre el sistema desde que se inició.
/var/spool: Datos esperando a que sean tratados por algún tipo de proceso.
/var/tmp: Otro fichero temporal.

/ (raíz): Es el nivel más alto dentro de la jerarquía de directorios. De aquí cuelgan el resto de carpetas, particiones y otros dispositivos. Es por esto que donde se instala el sistema, se selecciona la partición deseada y se le indica que el punto de montaje es justamente /. Por eso nunca debemos ejecutar el comando rm -rf /

/bin (binarios): Los binarios son los ejecutables de Linux. Aquí tendremos los ejecutables de los programas propios del sistema operativo, entre ellos comandos como cp, mv, cat, chown, etc. No es el único directorio que contiene ejecutables como veremos más adelante.

/boot (arranque): Aquí nos encontramos los archivos necesarios para el inicio del sistema, desde los archivos de configuración de Grub Lilo, hasta el propio kernel del sistema.

/dev (dispositivos): Linux se basa en la simpleza y en el tratamiento homogéneo de la información. Linux trata los dispositivos como si fueran un fichero más para facilitar el flujo de la información. En esta carpeta tenéis los dispositivos del sistema, por ejemplo los usb, sda (o hda) con sus respectivos números que indican las particiones, etc.

/etc (etcétera): Aquí se guardan los ficheros de configuración de los programas instalados, así como ciertos scripts que se ejecutan en el inicio del sistema. Los valores de estos ficheros de configuración pueden ser complementados o sustituidos por los ficheros de configuración de usuario que cada uno tiene en su respectivo “home” (carpeta personal).

/home (hogar, carpeta personal): Este hogar no es más que un directorio que a su vez contiene otros, uno por cada usuario dado de alta en el sistema. Dentro de dichos directorios es donde el usuario tiene su carpeta personal, donde están los ficheros de configuración de usuario, así como los archivos personales del mismo que puede crear, modificar y eliminar bajo su propio criterio.

/lib (bibliotecas): Contiene las bibliotecas (tambien mal conocidas como librerías) del sistema, así como módulos y controladores (drivers).

/lost+found (perdido y encontrado): Es una carpeta que nos podemos encontrar en todas las particiones. Cuando por cualquier circunstancia se cierra mal el sistema (un apagón por ejemplo), cuando éste se reinicie comprobaréis que se llamará al programa fsck para restaurar la integridad del sistema de ficheros. En esta carpeta encontraremos la información que se mal-guardó debido a la incidencia.

/media (media/medios): Es donde se montan las unidades extraíbles como los dispositivos USB, disqueteras, unidades de CD/DVD y en algunas distros, como Ubuntu, las particiones adicionales.

/mnt (montajes): Es un directorio que se suele usar para montajes temporales de unidades.

/opt (opcionales): Destinado para guardar paquetes adicionales de aplicaciones.

/proc: Información para la virtualización del sistema de ficheros de Linux.

/root: Es el /home del administrador. Es el único /home que no está incluido -por defecto- en el directorio anteriormente mencionado.

/sbin (binarios de sistema): Son los ejecutables de administración, tales como mount, umount, shutdown…

/srv (servicios): Información del sistema sobre ciertos servicios que ofrece (FTP, HTTP…).

/sys (sistema): Información sobre los dispositivos tal y como los ve el kernel Linux.

/tmp (temporales): Es un directorio donde se almacenan ficheros temporales. Cada vez que se inicia el sistema este directorio se limpia.

/usr: Es el directorio padre de otros subdirectorios de importancia:

/usr/bin: Conjunto de ejecutables de la mayoría de aplicaciones de escritorio entre otras (por ejemplo firefox).

/usr/include: Los ficheros cabeceras para C y C++.

/usr/lib: Las bibliotecas para C y C++.

/usr/local: Es otro nivel dentro que ofrece una jerarquía parecida al propio diretorio /usr.

/usr/sbin: Otra serie de comandos administrativos para el sistema.

/usr/share: Archivos compartidos como ficheros de configuración, imágenes, iconos, etc.

/usr/src: Tiene en su interior el código fuente para el kernel LInux.

/var: Ficheros de sistema como el buffer de impresión, logs…

/var/cache: Se almacenan datos cacheados para las aplicaciones.

/var/lib: Información sobre el estado actual de las aplicaciones, modificable por las propias aplicaciones.

/var/lock: Ficheros que se encargan de que un recurso sólo sea usado por una aplicación determinada que ha pedido su exclusividad, hasta que ésta lo libere.

/var/log: Es uno de los subdirectorios más importantes ya que aquí se guardan todo tipo de logs del sistema.

/var/mail: Los correos de los usuarios.

/var/opt: Datos usados por los paquetes almacenados en /opt.

/var/run: Información sobre el sistema desde que se inició.

/var/spool: Datos esperando a que sean tratados por algún tipo de proceso.

/var/tmp: Otro fichero temporal.

Declaración de variables en JavaScript

Para utilizar una variable en nuestro código debe estar indicado en alguna parte de éste cuál es su nombre y/o valor. A esto se le conoce como declarar una variable.

En la mayoría de los lenguajes de programación es obligatorio declarar cada variable antes de utilizarla en el código mientras que en JavaScript se puede hacer sobre la marcha según las vayamos necesitando. Hay dos maneras de declarar variables:

  1. Declaración explícita: Consiste en usar la sentencia var seguida del nombre de la variable. Esta opción es la más recomendada, para que el código sea más legible, personalmente la recomiendo.
  2. Declaración implícita: Es cuando escribimos directamente el nombre de la variable. En este caso debe ir acompañada obligatoriamente de un valor.


// declaración explícita
var nombre;
// declaración implícita
nombre = "Paco";
// declaración explícita múltiple
var nombre, edad, apellido;
// declaración explícita múltiple con inicialización
var nombre = "paco", edad = 20, apellido = "ruiz";
// declaración implícita múltiple con inicialización
nombre = "paco", edad = 20, apellido = "ruiz";

También se pueden declarar constantes, por ejemplo el numero pi, o un valor máximo. Se declaran con la sentencia const. Pero es recomendable no usarlo porque sólo es soportado a partir del motor 1.5 de JavaScript.