¿Cómo debe una persona aprender a crear sitios web dinámicos desde cero? ¿Cuánto tiempo se necesitará para ello?

¿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).

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 #include a las inclusiones y cambie el método principal a esto:

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 …

Hay tres aspectos de un sitio web.

  1. Su cuerpo. Eso es HTML.
  2. Apariencia. Eso es CSS.
  3. Comportamiento. Eso es manejado por ‘lenguaje de scripting’ .

Un lenguaje de secuencias de comandos se divide en dos partes:

  1. Secuencias de comandos del lado del cliente
  2. Scripting del lado del servidor

Comienza a aprender todas estas tecnologías. Busque en Google / Quora / Stack Overflow los recursos para aprenderlos. (comenzar sería bueno de Codecademy / Code school). Aprende haciendo / practicando cosas . Pregunte a aquellos que ya conocen suficiente desarrollo web. Genera pasión por ello. Comienza a amar JavaScript. Dedique tiempo a construir / aprender cosas interesantes.

(El período de tiempo requerido depende de muchos factores. No se puede calcular explícitamente).

Feliz aprendizaje 🙂
Comience ahora !

Comencemos con las habilidades estáticas que necesitas 🙂
1.) HTML
2.) CSS

No sé qué tan rápido aprendes, así que no puedo estimar nada, es completamente diferente de persona a persona.

Después de que pueda diseñar una página web sin buscar todo, puede comenzar con el aprendizaje de PHP (es ampliamente utilizado) o con Python
Tomé PHP porque casi todas las ofertas de alojamiento web tienen PHP incluido.
¡Mientras aprende PHP, también debe mirar temas como la programación orientada a objetos y la seguridad!
¡OOP es un concepto que debes entender si tu proyecto crece! Hace que todo sea un poco más fácil en la organización.
Ahora que puede programar PHP, debería mirar SQL, es un lenguaje con el que puede insertar y recuperar datos de una base de datos.

Con todo ese conocimiento, necesita tiempo para hacer su proyecto.
Comience con una idea de cómo debería ser su proyecto final e intente
¡Córtalo en pedazos más pequeños!
Si desea hacer una página como FaceBook, una parte podría ser el inicio de sesión y el registro de la página de perfil de usuario … y así sucesivamente.

Con su gran proyecto (final) en mente, debe hacer un proyecto de aprendizaje más pequeño; de lo contrario, se decepcionará y perderá el interés.

¡Buena suerte y mucha diversión en tu camino!

Es difícil de decir, pero los conceptos básicos de decir PHP y MySQL se pueden aprender en unas pocas semanas. Hacer aplicaciones a prueba de balas puede llevar mucho más tiempo ya que los matices tardan más en aprender.

Sugiero comenzar con la construcción del sitio en PHP / MySQL / html con algunos JavaScript básicos para la validación. Luego, una vez que funciona, tírelo y reconstruirlo usando un marco. El primero le dará una buena comprensión de cómo funcionan las cosas y cómo armar las piezas. Este último aprovecha la seguridad y la solidez, y hace que el código sea más limpio y fácil de mantener.

HTML es contenido, no es programación. C ++ no se usa para crear sitios web.

La programación de aprendizaje, si lo hace a tiempo completo, debería tomar al menos 6 meses para lo básico. (En cuanto al “resto”, lo he estado haciendo durante casi 45 años y todavía estoy aprendiendo). Si lo haces a tiempo parcial, podría tomar más de una vida.

(La programación no es codificación, es el análisis del problema y los recursos, luego se desarrolla una solución al problema utilizando esos recursos. La codificación es el último 1% o 2% del proceso).

Aprender suficientes lenguajes de programación (SQL, PHP, JavaScript, AJAX [que no es un lenguaje de programación, pero querrá entenderlo]) lo suficientemente bien como para escribir un sitio como FB (recuerde, FB no solo fue “escrito” de una sola vez: evolucionó durante años y sigue evolucionando) puede llevar algunos años. (No tengo idea de cuánto tiempo tardó Quora en llegar a donde está ahora, pero sospecho que es similar a FB. Y que todavía está evolucionando, desearía que la última “evolución” no hubiera sucedido).

Obtener la experiencia para poner todo eso en un solo sitio web puede llevar otros años.

Así que calcule desde 5 años (si es realmente bueno) hasta 10 años (si es promedio) hasta nunca. Y será un esfuerzo de equipo: una persona no puede escribir un sitio como este o FB.