lunes, 29 de octubre de 2012

La Primera PC

 

La Altair 8800 es considerado por muchos la pionera en la era de las computadoras personales. Fue lanzada en 1975 y desarrollada por MITS (Micro Instrumentation and Telemetry Systems), en los EEUU. Tenía como característica principal, una unidad de procesamiento central con una memoria de 256 bytes y un complejo sistema de operación.

 
Después de leer el 1 de enero de 1975 que Popular Electronics había creado el Altair 8800, Bill Gates llamó a los creadores del nuevo microordenador, MITS, y ofreció demostrar la implementación del lenguaje de programación BASIC para el sistema.Después de desarrollarlo en las ocho semanas siguientes junto con Allen, el intérprete funciono en la versión parcial del programa y MITS acordó distribuir Altair BASIC. Gates dejó la Universidad Harvard y se trasladó a Albuquerque, Nuevo México donde se encontraba el MITS, y fundo Microsoft allí. El nombre Microsoft (una palabra combinada de microordenador y software) fue usado por primera vez en una carta de Gates a Allen el 29 de noviembre de 1975 y el 26 de noviembre de 1976 se convirtió en marca registrada. La primera oficina internacional de la compañía fue fundada el 1 de noviembre de 1978 en Japón, llamada ASCII Microsoft (ahora llamado Microsoft Japón). El 1 de enero de 1979 la compañía se trasladó de Albuquerque a Belleveu, Washington. Steve Ballmer inauguró la sede de la compañía el 11 de junio de 1980, este más adelante sustituiría a Gates como gerente. La compañía se reestructuró el 25 de junio de 1981 para convertirse en una compañía incorporada en el estado de Washington (de ahí cambio su nombre a “Microsoft Inc”). Como parte de la reestructuración, Bill Gates se convirtió en el presidente de la compañía y Paul Allen en vicepresidente ejecutivo.

 


El primer "bug" del que se tiene conocimiento ocurrió en 1945.


  1. El primer "bug" del que se tiene conocimiento ocurrió en 1945 fue registrado por la científica Grace Murray Hopper trabajaba como programadora en el laboratorio de cálculo de la Universidad de Harvard y cuando trataba de averiguar la causa de un fallo de un ordenador, descubrió que era debido a una polilla que se había introducido entre los contactos de unos de los relés del computador, por lo que anotó en el cuaderno de incidencias "First actual case of bug being found" ( en español: "Primer caso real de bicho que se ha hallado". De ahí el nombre de "bug". 


    Curiosamente esta polilla, junto con la hoja de anotaciones, está expuesta en el museo Naval Surface Warfare Center Computer de Dahlgren, en Virginia, EEUU. Desde ese día se han sucedido bastantes incidentes relacionados con fallos de programación, tantos que la revista Wired ha hecho una recopilación de los peores desastres ocasionados por estos "bichitos".

     


viernes, 12 de octubre de 2012

Manejo de Cursores en Microsoft SQL Server


 
CURSORES
 
 
Un cursor es una estructura de datos creada en memoria RAM producto de una sentencia SELECT y que nos permite navegar dentro de las filas para obtener la información.
Cuando trabajemos con cursores debemos seguir los siguientes pasos.
-Declarar el cursor, utilizando DECLARE 
-Abrir el cursor, utilizando OPEN 
-Leer los datos del cursor, utilizando FETCH ... INTO 
-Cerrar el cursor, utilizando CLOSE
-Liberar el cursor, utilizando DEALLOCATE
 
use northwind
go
--Declarando el cursor
Declare Cursor1 Cursor scroll
   for select * from dbo.customers
--Abrir el cursor
Open Cursor1
--Navegar
Fetch first from Cursor1
--cerrar el cursor
Close Cursor1
--liberar de memoria
Deallocate Cursor1
 
    La sintaxis general para trabajar con un cursor es la siguiente.
-- Declaración del cursor
DECLARE [NOMBRE CURSOR] CURSOR [ LOCAL | GLOBAL ]
[ FORWARD_ONLY | SCROLL ]

FOR [SENTENCIA DE SQL (SELECT)]
 -- Apertura del cursor
OPEN [NOMBRE CURSOR]
 -- Lectura de la primera fila del cursor
FETCH [NOMBRE CURSOR] INTO [LISTA DE VARIABLES DECLARADAS]
 
WHILE (@@FETCH_STATUS = 0)
BEGIN   
-- Lectura de la siguiente fila de un cursor
FETCH [NOMBRE CURSOR] INTO [LISTA DE VARIABLES DECLARADAS]
...
-- Fin del bucle WHILE
END
-- Cierra el cursor
CLOSE [NOMBRE CURSOR]
-- Libera los recursos del cursor
DEALLOCATE [NOMBRE CURSOR]
 
    El siguiente ejemplo muestra un ejemplo de cursor usando la base de datos northwind. 
----Ejemplo 2 Cursores
Declare @codigo varchar(5),
@compania varchar(200),
@contacto varchar(150),
@pais varchar(100)
Declare ccustomers cursor GLOBAL
     for Select customerid, companyname, contactname
     , country from customers
Open ccustomers
fetch ccustomers into @codigo, @compania, @contacto,
@pais
while(@@fetch_status=0)
begin
print @codigo +' '+ @compania +' '+ @contacto +' '+@pais
fetch ccustomers into @codigo, @compania, @contacto,
@pais
end
close ccustomers
deallocate ccustomers
 
GO
Cuando trabajamos con cursores, la función @@FETCH_STATUS nos indica el estado de la última instrucción FETCH emitida, los valores posibles son:
Valor devuelto
Descripción
0
La instrucción FETCH se ejecutó correctamente.
-1
La instrucción FETCH no se ejecutó correctamente o la fila estaba más allá del conjunto de resultados.
-2
Falta la fila recuperada.
 
 
Para actualizar los datos de un cursor debemos especificar FOR UPDATE después de la sentencia SELECT en la declaración del cursor, y WHERE CURRENT OF [Nombre Cursor] en la sentencia UPDATE tal y como muestra el siguiente ejemplo.
----Ejemplo 3 Cursores Actualizar datos
Declare @codigo varchar(5),
@compania varchar(200),
@contacto varchar(150),
@pais varchar(100)
Declare ccustomers cursor GLOBAL
     for Select customerid, companyname, contactname
     , country from customers FOR UPDATE
Open ccustomers
fetch ccustomers into @codigo, @compania, @contacto,
@pais
while(@@fetch_status=0)
begin
UPDATE customers
set companyname = @compania + '(Modificado)'
where current of ccustomers
 
fetch ccustomers into @codigo, @compania, @contacto,
@pais
end
close ccustomers
deallocate ccustomers
go
 
 En la apertura del cursor, podemos especificar los siguientes parámetros:

DECLARE

<nombre_cursor> CURSOR  [ LOCAL | GLOBAL ]
[ FORWARD_ONLY | SCROLL ]
[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
[ TYPE_WARNING ]
FOR  Sentencia_sql
 Para consultar cada parámetro el link es: