Archive: Posts Tagged ‘action script’

Ctrl Alt Supr

No comments April 13th, 2010

Enero de 2004. La prensa especializada deja caer entre sus artículos uno dedicado a un ingeniero de IBM que despues de muchos años abandona la empresa. ¿Qué puede tener de especial una persona para merecer ese titular? El protagonista de esta historia se llama David J. Bradley. Tiene 55 años. Formó parte del equipo que creó el primer ordenador personal. Debe sus quince minutos de fama a haber sido quien ideó la combinación de teclas “Control+Alt+Supr” para reiniciar un ordenador.

Por esta razón Bradley entra en el Club de los Históricos de ARRAI.

¿Cuantas veces hemos usado esta combinación de teclas para reiniciar nuestros equipos? El “Control+Alt+Supr” (en inglés “Control+Alt+Delete”) es uno de los pequeños iconos culturales del mundillo de la informática.

Corría el año 1981. 12 ingenieros, “los 12 del patíbulo”, creaban en los laboratorios de IBM situados en Boca Ratón, Florida, el primer ordenador personal, el IBM-PC. Entre ellos estaba David J. Bradley. Fue el encargado de diseñar la BIOS de aquel primer equipo de uso doméstico. El resto de su trabajo para el “gigante azul” queda empañado por la anécdota: la creación del código de reinicio del PC.

El ingeniero David Bradley

Entró en IBM en 1975, y formó parte a partir de 1980 del equipo que desarrolló el primer ordenador personal. Entre otras cosas, es responsable del código de la ROM BIOS que llevaban los primeros PCs. Despues de 28 años y medio en IBM, Bradley la abandonó en enero de 2004. En la actualidad continúa impartiendo clase en la Universidad Estatal de Carolina del Norte. Para este ingeniero en electricidad e informática, cuantos más estudiantes vayan a carreras de ciencia y tecnología, mayor será la fuerza económica del país (en su caso, de los Estados Unidos).

David J. Bradley

Control Alt Delete

¿Por qué se desarrolló esta función? Bradley explica que a principios de los 80 en IBM se estaban haciendo pruebas de forma intensa con nuevo hardware y nuevo software. Esto provocaba que los ordenadores se quedasen colgados con facilidad. Para volver a arrancar un equipo era necesario apagarlo, esperar unos segundos a que reposara para no provocar daños al hardware, volver a arrancarlo y esperar por las rutinas de autocomprobación que ejecutaba el PC. Se tardaba más de un minuto en volver a tener el equipo operativo.

La idea de Bradley era crear un mecanismo que permitiese el reinicio “en caliente”, sin tener que seguir todo ese proceso. El ahorro de tiempo era considerable, y por eso esta funcionalidad, que en un principio estaba destinada únicamente a ser conocida por los desarrolladores de IBM, se difundió paulatinamente entre el público.

¿Porqué esas tres teclas?

¿Por qué estas tres teclas? Se trataba de encontrar una combinación que no se pudiese teclear por accidente. Se eligieron dos teclas de uso poco común (Control y Alt) y la tercera se buscó justo al otro lado del teclado. Al principio Bradley pensó en la tecla “+”, pero creyó que DELETE tendría más sentido. Una vez definida la solución, Bradley afirma que programarla no le llevó más de cinco minutos.

La actualidad de “Control Alt Delete”

Ya no es lo que era, ahora es más. Las versiones de Windows 2000 y XP capturan esta combinación y ofrecen un panel de opciones: el administrador de tareas, cerrar sesión o apagar de forma civilizada. En los casos extremos en que esto ya no funciona, no hay más remedio que volver al fatídico botón de reset.

Tambien se incorpora en Windows 2000 para arranque de sesión, con lo que “Control+Alt+Supr”, tambien conocido como “La llave de Vulcano”, o “El saludo de los tres dedos”, ha dejado definitivamente de ser un truco no escrito a ser una combinación de teclas de obligado conocimiento, mucho más usada si cabe.

Hacerlo famoso

Cuando se celebraba el vigésimo aniversario de la creación del Pc, compartían escenario en una mesa redonda Bill Gates y David Bradley, entre otros. Durante una parte del evento, el tema de conversación era el mecanismo de reinicio. En el vídeo cuyo enlace ofrecemos se puede oir a Bradley bromeando con Gates, aunque este último no pone cara de estar divirtiéndose. Bradley dice: “Hacerlo llevó cinco minutos, no sabía que iba a crear un icono cultural. Pero tengo que compartir el mérito, puede que yo lo haya inventado, pero ha sido Bill el que lo ha hecho famoso.”

Seguramente, Bradley fue el primer sorprendido por la fama alcanzada por su código. Algo que en principio era simple, que no llevó más de cinco minutos, se acaba convirtiendo en un icono cultural. Quizá esto nos puede enseñar a apreciar los detalles y los trabajos pequeños. Si están bien hechos y son útiles, pueden convertirse en algo con un gran significado.

La idea de Bill Gates es distinta. Adoptó el código de Bradley, le era útil y lo utilizó como un complemento para construir algo mayor. Es tambien una forma de ver como lo que hacemos, si lo compartimos, puede servirle a otra gente. Aunque podemos adivinar que Gates hubiese preferido que el “Ctrl+Alt+Supr” no fuese tan conocido por sus usuarios.

Ahora una rola del reno renardo al respecto.

Ctrl Alt Supr – Reno Renardo

Libros Programación,Bases de Datos, SQL y Más..

2 comments April 4th, 2010

Hola que tal el día de hoy les traigo una página web que en lo particular me gusta mucho.  Por que esta actualizando día a día y tiene buenas publicaciones les hablo de WowEbook.Com.Get your ebook right now!

Wow Ebook.Com

Una página en la cual podremos ver una gran gama de manuales, tutoriales,libros de referencia,etc.

Ampliamente recomendable proporciona material muy bueno y sobre todo …

Bueno ya se darán cuenta.

Un Saludo SQLeros.

Invocar funciones PHP desde Flex con AMFPHP

No comments November 16th, 2009

Adobe Flex es un framework de desarrollo que nos permite crear rápida y facilmente aplicaciones RIA (Aplicaciones de Internet Enriquecidas), basado en la plataforma Flashcombinando el lenguaje de marcas MXML ActionScript. También, gracias a su entorno de desarrollo se simplifica el desarrollo de aplicaciones AIR.

En esta oportunidad quiero explicar cómo hacer uso de Flex para invocar funciones hechas enPHP (no entraré en detalles, pues no conozco a fondo ActionScript). Una forma de hacerlo es mediante AMFPHP. Pero ¿qué es AMFPHP? Es un RPC (Llamada a Procedimientos Remotos) que nos permite comunicar datos de aplicaciones-funciones entre el cliente (JavaScript, Flash, Flex, etc) y servidor (PHP, ASP, JSP, etc). En este caso AMFPHP realiza la comunicación de procesos remotos entre Flash (y por extensión aplicaciones RIA en Flex y AIR) y PHP.

Vamos por paso para la implementación de un proyecto en Flex que llame a funciones en PHP.

1. Descargar y extrae la carpeta amfphp que contiene la siguiente estructura (y para no perderse en el tutorial, colocala en la raíz de tu sitio web de tal forma que quede así:http://localhost/amfphp)

+ ampphp
  +services
  +core
  +browser
  -gateway.php
  -globals.php
  -.htaccess
  -json.php
  -xmlrpc.php
  -phpinfo.php

2. Verificar el funcionamiento del amfphp. Para ello abres tu navegador y escribeshttp://localhost/amfphp/browser. Aparecera una ventana de configuración donde se muestra la ubicación del archivo gateway que actuará como puerta de enlace. En esta ventana solo dale clic en Save.

Podrás apreciar un especie de explorador. En la vista árbol a tu izquierda se mostrarán todas las clases en PHP que podemos usar. Para que una clase aparezca allí debes guardarla en el directorio services.

3. Vamos crear una clase en PHP. Vamos a lista una relación de clientes de una base de datos MySQL. La estructura de la tabla es la siguiente (ingresa un par de registros luego):

CREATE TABLE IF NOT EXISTS `cliente` (
  `id` tinyint(7) NOT NULL auto_increment,
  `nombres` varchar(50) NOT NULL,
  `ciudad` varchar(50) NOT NULL,
  `sexo` char(1) NOT NULL,
  `telefono` varchar(10) NOT NULL,
  `fecha_nacimiento` datetime NOT NULL,
  KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

En archivo PHP debe tener el mismo nombre que la clase, en este caso se llama sample.php:

<?php
class sample{
    function getUsers () {
        $mysql = mysql_connect(localhost, "root", "");

        mysql_select_db( "empresa" );

                $Query = "SELECT * from cliente";
                $Result = mysql_query( $Query );
                while ($row = mysql_fetch_object($Result)) {
                        $return[] = $row;
                }
                return( $return );
        }
}
?>

Volvamos a http://localhost/amfphp/browser y podemos apreciar en la lista de servicios, a la mano izquierda, nuestra clase llamada sample. Si la seleccionamos se muestran sus métodos, en este caso getUsers, y pulsamos el botón call se mostrará el resultado en la parte inferior.

amfphp browser

4. Abrimos Flex (en mi caso Flex Builder 3) y creamos un nuevo proyecto Flex de nombresample.

new project

new project

Configuramos la ruta en nuestro servidor local:

new project

new project

El archivo autogenerado sample.mxml lo dejamos allí por un momento. Ahora vamos agregar un archivo de ActionScript a nuestro proyecto, para ello le damos clic derecho en la carpeta srcy seleccionamos New ActionScript File.

new project

new project

El archivo RemotingConnection.as contiene un clase que llama a una conexión remota especificando la url de ésta.

package {
        import flash.net.NetConnection;
        import flash.net.ObjectEncoding;

        public class RemotingConnection extends NetConnection
        {
                public function RemotingConnection( sURL:String )
                {
                        objectEncoding = ObjectEncoding.AMF0;
                        if (sURL) connect( sURL );
                }

                public function AppendToGatewayUrl( s : String ) : void
                {
                        //
                }
        }
}

Ahora el archivo autogenerado sample.mxml, lo reemplazamos por el siguiente contenido:

<?xml version="1.0" encoding="utf-8"?>

        <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" xmlns="*" creationComplete="initApplication()">

        <mx:DataGrid dataProvider="{dataProvider}">
                <mx:columns>
                                <mx:DataGridColumn headerText="ID" dataField="id"/>
                                <mx:DataGridColumn headerText="Nombres" dataField="nombres"/>
                                <mx:DataGridColumn headerText="Ciudad" dataField="ciudad"/>
                                <mx:DataGridColumn headerText="Telefono" dataField="telefono"/>
                                <mx:DataGridColumn headerText="Sexo" dataField="sexo"/>
                                <mx:DataGridColumn headerText="Fecha Nacimiento" dataField="fecha_nacimiento"/>
                        </mx:columns>
        </mx:DataGrid>

        <mx:Script>
                <![CDATA[
                        [Bindable]
                        public var dataProvider:Array;
                        public var gateway : RemotingConnection;

                        public function initApplication()
                        {
                                gateway = new RemotingConnection( "http://localhost/amfphp/gateway.php" );
                                gateway.call( "sample.getUsers", new Responder(onResult, onFault));
                        }

                        public function onResult( result : Array ) : void
                        {
                                dataProvider = result;
                        }

                        public function onFault( fault : String ) : void
                        {
                                trace( fault );
                        }
                ]]>
        </mx:Script>

</mx:Application>

Hemos creado un DataGrid para mostrar los datos de la consulta al servidor MySQL. Dentro de las etiquetas <mx:Script/> hacemos uso de ActionScript para llamar a la claseRemotingConnection que creamos anteriormente. La función initApplication() se encarga de conectar con la puerta de enlace: gateway.php, y llama al método getUsers() de la clasesample. La respuesta la recibe la función onResult() que pasa los datos a la variabledataProvider y ésta pasa al DataGrid.

6. Ahora simplemente compilamos el proyecto (Ctrl + F11) y podemos apreciar el resultado en el navegador web.

new project

De esta forma podemos crear aplicaciones web complejas que incluyan inserción y actualización de datos. Pero eso no esto, incluso podemos crear aplicaciones de escritorio gracias a AIR con esta funcionalidad, es decir llamadas a procesos remotos. Les dejo los archivos de este tutorial para que lo prueben en su servidor local.

Lo vi en: Flex and PHP Using AMFPHP