Programación en Internet

Blog de la asignatura de la titulación Ingeniero en Informática

25 febrero 2019
by Sergio Luján Mora
0 comments

Cómo crear una hoja de estilo para impresión

En How to Create Printer-friendly Pages with CSS se proporciona un excelente análisis. Se indican estos escenarios en los que pueda ser necesario imprimir una página web:

  • printing travel or concert tickets
  • reproducing route directions or timetables
  • saving a PDF for offline reading
  • accessing information in an area with poor connectivity
  • using data in dangerous or dirty conditions — for example, a kitchen or factory
  • outputting draft content for pen annotations
  • printing web receipts for bookkeeping purposes
  • providing documents to those with disabilities who find it difficult to use a screen
  • printing a page for your colleague who refuses to use this newfangled t’internet nonsense.

18 febrero 2019
by Sergio Luján Mora
0 comments

El problema de todos los años

Todos los años planteo el mismo requisito a mis estudiantes, todos los años me encuentro que la mayoría lo hacen mal.

En una aplicación web, se tiene que realizar la comprobación de la credenciales (nombre de usuario, contraseña) para acceder al perfil del usuario. En una primera fase no hay base de datos, así que los datos de los usuarios están codificados en la propia página web.

Inicialmente les pedía que lo hicieran suponiendo que hay dos usuarios. Casi nadie almacenaba los datos de los usuarios en un array.

Después lo incrementé a tres usuarios, con la esperanza de que se dieran cuenta de que usando un array se escribe menos, el código es más legible y mantenible. La mayoría de los estudiantes lo seguían haciendo mal.

Después lo volví a incrementar a cuatro usuarios… todo seguía igual.

¿A cuántos usuarios lo tengo que incrementar para que piensen en utilizar un array?

Aquí dejo el fascinante código de uno de mis estudiantes:

 

if(!empty($_POST['usuario']) && !empty($_POST['pdw'])){



	$usuintro = ($_POST['usuario']);
	$contraintro = ($_POST['pdw']);

	$usu1 = "marcos111";
	$contra1= "marquitos111";

	$usu2 = "marcos222";
	$contra2= "marquitos222";

	$usu3 = "marcos333";
	$contra3= "marquitos333";

	$usu4 = "marcos444";
	$contra4= "marquitos444";


	if(strcmp($usuintro, $usu1) === 0){
		if(strcmp($contraintro, $contra1) === 0){
		
 	  		header('Location: usuario.php');	 
 	  		
 		}
 		else{
			
			echo'Usuario o contraseña incorrecto';
		}
	}
	
	if(strcmp($usuintro, $usu2) === 0){
		if(strcmp($contraintro, $contra2) === 0){
			
 			header('Location: usuario.php');
 		}
 		else{
			echo'Usuario o contraseña incorrecto';
		}
	}

	if(strcmp($usuintro, $usu3) === 0){
		if(strcmp($contraintro, $contra3) === 0){
		
			header('Location: usuario.php');
 		}
 		else{
			echo'Usuario o contraseña incorrecto';
		}
	}

	if(strcmp($usuintro, $usu4) === 0){
		if(strcmp($contraintro, $contra4) === 0){
		
			header('Location: usuario.php');
 		}
 		else{
			echo'Usuario o contraseña incorrecto';
		}
	}


	if(strcmp($usuintro, $usu1) !== 0){
		if(strcmp($usuintro, $usu2) !== 0){
			if(strcmp($usuintro, $usu3) !== 0){
				if(strcmp($usuintro, $usu4) !== 0){
			echo'Usuario o contraseña incorrecto';
				}
			}
		}
	}


}

11 febrero 2019
by Sergio Luján Mora
0 comments

Google también se lía con la localización

Me topado con un error de principiante en Google Trends, un error que al principio no entendía porque no me creía que estuviese pasando.

La fecha 31/12/2015 me la marcaba como incorrecta. ¿Por qué? Una pequeña prueba, pongo 12/31/2015 y ¡la fecha es válida!

 

Aunque el dominio es google.es y la página está en español, ¡las fechas hay que introducirlas en formato inglés!

Y no es ese el único error, si se despliega el calendario, ¡los días de la semana están puestos en inglés y la semana empieza en S de Sunday, en domingo!

 

6 febrero 2019
by Sergio Luján Mora
0 comments

Un poco de conocimiento es algo peligroso, te hace pensar que eres un experto cuando no lo eres

Ayer se publicó en el periódico El País “Nuestra civilización depende igual del software que del agua”, una entrevista a Bjarne Stroustrup, el padre de C++.

El primer lenguaje de programación que aprendí fue Basic, después C, después Visual Basic, y después C++.

En el año 2006 publiqué el libro C++ paso a paso, que no cubre ni el 5% de C++, un lenguaje de programación descomunal.

Recomiendo la lectura de esta entrevista, muy interesante todo lo que dice:

Está bien que la gente sepa algo de todo: de ciencia, de historia, de matemáticas, de código. Pero el peligro es que gente que ha hecho matemáticas en el instituto piense que es matemático. Sé de qué hablo: tengo un título en matemáticas, he conocido a grandes matemáticos y no juego en su liga. Por otro lado, hay un número enorme de adolescentes, casi siempre chicos, que piensan que lo saben todo de programar y construir sistemas y nadie debe contarles nada. Un poco de conocimiento es algo peligroso. Te hace pensar que eres un experto cuando no lo eres.

 

 

 

28 enero 2019
by Sergio Luján Mora
0 comments

¿Por qué es bueno usar tecnologías antiguas?

Esta pregunta también se puede plantear como ¿por qué no es bueno intentar usar siempre la última tecnología que ha aparecido?

En Quora he encontrado esta respuesta a la pregunta Why hasn’t Go overtaken Python in popularity?

Emplea el sistema de transporte Chicago “L” como base para su argumentación.

El tren que se emplea ya existía hace 40 años, ¿por qué no se cambia?

As it turns out, it’s highly affordable for Chicago’s CTA to stick to what’s already there. It reduces costs, and they can find engineers that can work on them! The lines themselves probably don’t permit much flexibility, either. Everything about these trains is known, so when they break, the maintenance time is minimal.

This approach allows the CTA to incrementally improve things without rebuilding too much. Trying something radically new is really, really expensive. Lots of legacy has to be supported. The train systems that go through massive overhauls have a TON of money flowing into them. The CTA is not one of those systems. Everything has to be rebuilt. That’s not cheap.

El sistema de transporte se inauguró en 1897, ha ido evolucionando, pero no se han realizado cambios radicales del estilo “tirarlo todo a la basura y empezar desde cero”.

Si esto está claro, si esto está estudiado y medido en otras ingenierías, ¿por qué en informática siempre existen unas enormes ganas de “tirarlo todo a la basura y empezar desde cero”?

21 enero 2019
by Sergio Luján Mora
0 comments

El juego de caracteres en las páginas web: usa UTF8

Alguna vez me he encontrado gente que defiende el uso de las entidades de carácter, como á y €, para que una página se vea bien en cualquier ordenador, aquí y en la China. Pues no.

En la actualidad no son necesarias las entidades de carácter si se emplea el juego de caracteres adecuado. Todo se soluciona utilizando UTF8 (o UTF-8, utf8, utf-8 y alguna otra forma más de escribirlo), que es el juego de caracteres recomendado por el W3C en el artículo Choosing & applying a character encoding:

Choose UTF-8 for all content and consider converting any content in legacy encodings to UTF-8.

Además, en Using character escapes in markup and CSS, se responde lo siguiente a la pregunta “How can I use character escapes in markup and CSS, and when should I use or not use them?”:

Because you should use UTF-8 for the character encoding of the page, you won’t normally need to use character escapes.

It is almost always preferable to use an encoding that allows you to represent characters in their normal form, rather than using named character references or numeric character references.

Using escapes can make it difficult to read and maintain source code, and can also significantly increase file size.

En Codificación de caracteres: conceptos básicos se explican algunas cosas más.