julio 2016 - Instituto FOC | Informática ONLINE | FP Informática ONLINE

Especialistas en Informática

Lanzar una URL desde PHP

En muchas ocasiones se nos plantea que debemos ejecutar una página web desde la nuestra SIN PERDER EL CONTROL del flujo de ejecución en nuestra página. Veamos en este post cómo Lanzar una URL desde PHP en segundo plano, sin abandonar la página actual.

Es una situación por ejemplo que tenemos programada una web en la que agregamos información a una BD y despues queremos continuar con la ejecución de nuestra web.

Bien para eso existen varios modos de hacerlo. En este post nos centramos en el trabajo con la clase cURL de PHP.

A través de distintos métodos podemos tanto construir el enlace junto los parámetros a enviar.

Aquí comienza el primer problema. ¿Deseamos enviar los parámetros por POST o por GET?.

En el ejemplo que acompaño, yo construyo este envío por el método GET:

 

<?php

<…. código deseado …..>

$url = ‘http://www.miurl.es/guardardatos.php/’;
$fields = array(
‘nombre’ => urlencode($nombre),
‘apellidos’ => urlencode($apellidos),
‘email’ => urlencode($mail),
‘telefono’ => urlencode($telefono),
‘provincia’ => urlencode($provincia)
);
//Poner los parámetros en el formato correcto
foreach($fields as $key=>$value) { $parametros .= $key.’=’.$value.’&’; }
rtrim($parametros, ‘&’);

$url = $url . ‘?’ . $parametros;

//abrir conexión
$ch = curl_init();

curl_setopt($ch,CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

//Si lo deseamos podemos recuperar la salida de la ejecución de la URL
//$resultado = curl_exec($ch);

//cerrar conexión
curl_close($ch);

<…. código deseado …..>

?>

 

 

Como digo la idea es que el flujo de la aplicación continue en mi funcion. Se realizará una llamada a la URL http://www.miurl.es/guardardatos.php/, junto con los parámetros que creemos en el string $parámetros y podremos recibir lo que produzca la ejecución de esa web que se realizará eso sí en segundo plano sin que el usuario aprecie nada.

 

Código fuente del Apollo 11

La NASA público ya hace tiempo el código fuente de la misión Apollo 11, pero es ahora cuando podemos revisarlo y analizarlo de manera más fácil. Chris Charry, antiguo interno de la NASA ha publicado todo el código del ordenador de guiado de esta misión en GitHub.

Margaret Hamilton, directora de ingeniería de software
Margaret Hamilton, directora de ingeniería de software

 

Con este código poco podrás usarlo para crear tu propia misión espacial, pero esto no significa que miles de desarrolladores no hayan descubierto más de una sorpresa y rindan homenaje a este desarrollo tan especial, con el que gracias a él pudimos llegar a la luna.

Apollo Guidance Computer (AGC) así fue llamado el ordenador instalado en cada módulo de mando y en cada módulo lunar y su función era la del guiado, navegación y control de la nave espacial. Su software, programado en ensamblador, que constaba de un sencillo sistema operativo en tiempo real, fue instalado en una ROM y se interactuaba con el mediante una combinación de pantalla y teclado numérico.

Esta publicación del código ha permitido descubrir cosas como el particular sentido del humor de los programadores de la NASA, como por ejemplo que en la rutina de despegue hagan referencia a BURN_BABY_BURN–MASTER_IGNITION_ROUTINE.agc (Arde, baby, arde, Rutina maestra de ignición), u otras bromas como “TEMPORARY, I HOPE HOPE HOPE” donde el programador indicaba que esa línea era temporal, que se debía de revisar y parecía rezar por su buen funcionamiento.

Algunos desarrolladores han sugerido cambios comentando problemas y ofreciendo soluciones tan viejas como aquello de «¿Has probado a apagarlo y encenderlo de nuevo?«.

[Fuente: Xataka] [Fuente: qz.com]

Exportar una base de datos Access a MySql

Curiosa y desgraciadamente Microsoft Access no tiene ninguna opción para exportar datos en un formato standar  en que podamos pasar tanto la estructura de las tablas como el contenido de las mismas.

Si tuviesemos que exportar datos de MySql a Access la cosa sería más sencilla ya que este gestor (MySql), sí dispone de esta opción. Pero como digo si el problema es transladar nuestra Base de datos de Access a MySql, la cosa se complica.

Investigando he descubierto varias soluciones, algunas de las cuales pasan por exportar de Access a Excel, de Excel pasar a forma osd (hoja de cálculo de OpenOffice) y de ahí recoger esos datos con MySql. Sin contar con el latazo que es hacer esto tabla a tabla a nadie se le puede ocultar que los datos seguramente pasen pero toda la estructura de las tablas se creará errónea ya que muchos tipos de datos no sabrá ni podrá indentificarlos.

La solución más sencilla y a la vez eficiente pasa por comunicar Access con MySql a través de un conector ODBC.

Para eso creamos una conexión DSN con MySQL

ODBC_FOC

Una vez tenemos creado el DNS (app_datos en nuestro caso), ya dentro de Acces, podremos decirle que vamos a exportar a través de él.

ODBC_FOC_Access

Ahora ya podemos seleccionar la conexión que hemos creado previamente.

  • En el proceso en primer lugar indicamos el nombre de la tabla en la base de datos destino:

ODBC_FOC_Access_1

  • En el siguiente paso será cuando seleccionemos la conexión creada.

ODBC_FOC_Access_2

 

Hecho esto Access comienza a exportar tanto la estructura como los datos a MySql.

Ahora ya podemos comprobar que en MySql se ha creado la tabla con la estructura de Access

ODBC_FOC_Access_3

Evidentemente la misma conexión nos servirá para todas las tablas, pero este proceso tendremos que hacerlo tabla a tabla.

Ya solo nos quedaría dentro de MySql, crear todos los índices, claves primarias y otras restricciones que deseemos utilizar.

#Webinar | Alta disponibilidad: #Virtualización

En Informática, virtualización es la creación a través de software de una versión virtual de algún recurso tecnológico, como puede ser una plataforma de hardware, un sistema operativo, un dispositivo de almacenamiento u otros recursos de red.

Objetivos:

Aprenderás a:

  • Analizar los requisitos para la implementación de alta disponibilidad en un sistema basado en la virtualización de servicios.
  • Diferenciar entre un sistema físico y uno virtual, analizando las diferencias respecto a protocolos, herramientas, planificación, software, etc.

Contenidos:

En este webinar trataremos los siguientes contenidos:

  • Analizar el software de virtualización: equipos, servidores, almacenamiento, etc.
  • Adaptar nuestras necesidades de hardware/software según el sistema de virtualización elegido.
  • Realizar la virtualización de servicios en el sistema.
  • Herramientas complementarias para la virtualización.

Webinar | Copias de seguridad: qué, dónde, cómo y cuándo.

Objetivos:

Aprenderás a:

  • Analizar los conceptos a tener en cuenta para la realización de una copia de seguridad de un equipo.
  • Diferenciar entre una copia de datos y de volúmenes/discos.

Contenidos:

En este webinar trataremos los siguientes contenidos:

  • Analizar el software de copias de seguridad: nativo/de terceros y libre/propietario.
  • Adaptar nuestras necesidades de hardware/software según el tipo de copia a realizar.
  • Realiza un plan integral de copias de seguridad.
  • Copia de seguridad avanzada.

 Fecha y hora: (Este webinar ya tuvo lugar)

  • ? 14 de Julio de 2016
  • ⏰ 21:00 a 21:45 h

 

Cómo abrir una URL desde VBA

VBA es el lenguaje de programación que usan las aplicaciones de Microsoft Office que permite programar acciones para estas aplicaciones que por sí solas no pueden realizar.

Cuando construimos una macro (por ejemplo), la aplicación Office correspondiente escribe el código equivalente en VBA,  que realiza las operaciones que hemos indicado en esa macro.

En este post quiero comentar cómo abrir una URL desde VBA. Este es un problema al que me enfrenté recientemente y encontré múltiples soluciones de entre las que elegí la que aporto a continuación.

Esta simple operación nos permitiría realizar en la web cosas que le indiquemos desde la aplicación office deseada. Bastará con programar en la web una página con todo lo que deseemos realizar. Estas operaciones podrían ir desde guardar datos en bases de datos que esten en la web, a realizar envíos masivos de emails o simplemente visualizar alguna página que nos interese.

En el ejemplo que voy a mostrar se va a hacer una llamada silenciosa, de modo que el usuario de la aplicación ni se va a enterar.

En otros casos puede que nos interese visualizar una página o ver algún resultado. Como digo en este ejemplo simplemente se va a realizar la llamada a la URL sin necesidad de ver nada mas.

Const READYSTATE As Integer = 4

Dim objIE As Object Set objIE = CreateObject(«InternetExplorer.Application»)

With objIE

.Visible = False

.Silent = True

.Navigate «http://midominio.com/envioadjunto.php?nombre=pepe»

Do Until .READYSTATE = READYSTATE

DoEvents

Loop

End With

objIE.Quit

Set objIE = Nothing

El código anterior como digo lo que hará será enviar un mensaje con un contenido concreto a un usuario llamado pepe. El fichero envioadjunto.php será el que previamente habremos programado para tal fin.

Al poner visible a false no se mostrará nada y todo será transparente para el usuario.

¿Necesitas ayuda?