¿De qué dinámica estamos hablando? Puede pasar de “esto parece un sitio estático, pero recuerda cosas” a “WTF está sucediendo” (por ejemplo, Quora, donde el servidor actualiza todo en tiempo real).
Dices que sabes C ++. Bueno, bien, porque los sitios dinámicos más simples no son más que programas de consola iniciados por el servidor web. Recibe la solicitud a través de la entrada estándar ( scanf()
, cin
) y envía su respuesta a la salida estándar (simplemente printf()
o cout
). Se pasa información adicional a través de variables de entorno (la IP del cliente, por ejemplo, entre muchas otras cosas útiles).
Pruébalo: si estás en Windows, descarga wampserver.com (un paquete de Apache, PHP y MySQL), si estás en Linux, solo abre una consola e ingresa sudo apt-get install apache2 mysql-server mysql-client php5 libapache2-mod-php5
(o simplemente busque ” instalación de apache php mysql” y siga los pasos).
- ¿Cuáles son algunas mejoras que se deben hacer en mi sitio web HealthGifting.com?
- Cuando visito un sitio web, ¿me puede identificar el servidor?
- ¿Cuáles son los mejores sitios web que te enseñan diseño web?
- Quiero construir un sitio web basado en contenido que utilizará diferentes imágenes y contenido de diferentes revistas. ¿Cómo puedo usar legalmente las imágenes y el contenido correctamente de todas estas revistas?
- ¿Cómo se crean la mayoría de los nuevos sitios web basados en bases de datos?
Luego, encuentre su carpeta cgi-bin, en Debian puede ser / usr / lib / cgi-bin /, o en / var / www / cgi-bin /; para la pila WAMP si está instalada en C: \ wamp, la carpeta es C: \ wamp \ bin \ apache \ Apache2.2.11 \ cgi-bin, simplemente sustituya su versión de Apache.
CGI es un TLA (acrónimo de tres letras) para la interfaz de puerta de enlace común, también conocido como cin
/ cout
y los nombres de las variables de entorno.
Comencemos con nuestro primer sitio dinámico, un “hola mundo” en C ++:
#include
usando el espacio de nombres estándar;
int _tmain (int argc, _TCHAR * argv [])
{
cout << "Tipo de contenido: texto / html \ n \ n";
cout << "
¡Hola, mundo!
“;
devuelve 0;
}
Compílelo y póngalo en la carpeta cgi-bin. Ahora debería poder apuntar su navegador a http: // localhost / cgi-bin / (en mi caso en Windows, http: //localhost/cgi-bin/helloworld.exe) y obtener un bonito y grande “hola mundo” 🙂
Si estás en Linux, asegúrate de que el archivo sea realmente ejecutable por Apache; si no funciona, el problema es que Apache no puede ejecutar ese archivo. Para obtener más información, visite https://httpd.apache.org/docs/cu….
Ahora, esto no es muy dinámico. Hagamos que imprima la hora:
#include
#include
#include
usando el espacio de nombres estándar;
const string currentDateTime () {
// Desde http://stackoverflow.com/a/10467633/696631
time_t ahora = tiempo (0);
struct tm tstruct;
char buf [80];
tstruct = * localtime (& ahora);
strftime (buf, sizeof (buf), “% Y-% m-% d% X”, & tstruct);
volver buf;
}
int _tmain (int argc, _TCHAR * argv [])
{
cout << "Tipo de contenido: texto / html \ n \ n";
cout << " ” <<
“
¡Hola, mundo!
” <<
“
La hora es” << currentDateTime () << "
” <<
” “;
devuelve 0;
}
Ahora vamos a lugares! Puede actualizar el sitio con la frecuencia que desee y obtendrá una respuesta diferente cada vez. ¿Pero no podríamos haber hecho esto con un poco de JavaScript en el lado del cliente? La respuesta es sí, por supuesto, así que usemos algo que solo el servidor sepa y no desperdiciemos saludos en todo el mundo. Agregue
a las inclusiones y cambie el método principal a esto: #include
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Content-type: text/html\n\n";
cout << "" <<
"
Hello, " << getenv("REMOTE_ADDR") << "!
" << endl <<
"
The time is " << currentDateTime() << "
" <<
"";
return 0;
}
REMOTE_ADDR
es una variable de entorno que le proporciona el software del servidor web (por ejemplo, Apache). Contiene la dirección IP del punto final remoto de la conexión. Ahora, esto no podría haberlo hecho con JavaScript 🙂 Ahora tiene el equivalente de todos esos sitios web de “cuál es mi IP”, donde las personas pueden verificar su IP externa.
Registrar el número de veces que fue visitado desde una determinada IP y mostrar un saludo personalizado (“¡Hola por enésima vez, IP!”) Se deja como un ejercicio para el lector, también soy demasiado flojo para escribir un programa de ejemplo 🙂
Entonces, ¿por qué te hice instalar PHP y MySQL? Bueno, el escenario anterior: obtener una solicitud, buscar y calcular algunos datos, luego insertarlos en una plantilla HTML, es tan común que las personas crearon un motor de plantillas HTML que puede conectarse a una base de datos MySQL y funcionar como una programación completa lenguaje (si es un buen lenguaje de programación es irrelevante para esta discusión).
Esto es lo mismo en PHP: no necesita preocuparse por la carpeta cgi-bin si Apache está configurado para ejecutar archivos con la extensión “.php” (debería ser la predeterminada), así que simplemente cree un nuevo archivo en www carpeta (donde normalmente irían los archivos HTML) llamada “helloworld.php” con el siguiente contenido:
Hello, !
The time is
También puede conectarse fácilmente a MySQL para almacenar todo tipo de datos estructurados sobre el visitante, y si optimiza bien sus tablas, funcionará bien.
¿Pero no es esto mucho más lento que la solución C ++? La respuesta es sí, probablemente por al menos un orden de magnitud. Pero en la práctica resulta que el tiempo dedicado a acceder a la base de datos y escribir y leer en / desde la red es mucho mayor que el tiempo dedicado a ejecutar su código, por lo que la diferencia de rendimiento termina siendo mucho menor en efecto.
Aquí es donde entran en juego lenguajes como JavaScript, con su naturaleza orientada a la devolución de llamadas. V8 es un intérprete de compilación JIT muy rápido para JavaScript creado por Google para Google Chrome. La gente lo arrancó y creó un entorno de programación completo a su alrededor, a saber, node.js. Se especializa en la ejecución asincrónica de cargas de trabajo vinculadas a IO, también conocidas como aplicaciones web dinámicas. Hay un excelente marco para él llamado Meteor que puede hacer lo que Quora está haciendo: enviar actualizaciones al cliente en tiempo real y recibir información en tiempo real. Esto se logra usando AJAX, pero como dijo otra respuesta, esto es como decir que las pirámides se logran apilando piedras una encima de la otra 😀
Acerca de cuánto tiempo tomará: ya sabe cómo crear al menos un tipo de sitio web dinámico, utilizando su conocimiento C ++ y CGI existentes. Tomará al menos un par de meses de lectura para progresar a cosas como Meteor, pero no debería ser imposible. Comprender realmente todos los detalles probablemente llevará muchos años, especialmente con las aplicaciones web modernas que son básicamente aplicaciones de escritorio que viven en múltiples computadoras y cargan su código a pedido …