Programación en Internet

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

21 febrero 2018
by Sergio Luján Mora
0 comments

¿Por qué el desarrollo web es complejo?

Porque se basa en una montaña de errores. Eso podemos leer en Why is web development so complex?:

Mainly because it’s built on a tower of mistakes.

HTML was a screwup, CSS was probably worse, and don’t get started on JavaScript.

If the web was to be redesigned from scratch, with no thought to backwards compatibility, it would be nothing like what we have today.

It’s complex due to simply piling on more cruft onto something that should have been thrown away and restarted decades ago, but we’re stuck with it now.

Start simple, just do a small amount of HTML, and style it up with CSS, and work your way up from there.

 

15 febrero 2018
by Sergio Luján Mora
2 Comments

Cuándo me convertí en un experto

Ayer me hicieron una pregunta en Twitter que me ha gustado:

@sergiolujanmora estoy iniciando el mooc de desarrollo web, ¿cuanto tiempo te costó , desde que te iniciaste en este mundo , hasta que lo dominaste para tener un nivel experto?. Sé que las tecnologías digitales estan en constante cambio, pero tengo curiosidad.

Y mi respuesta fue:

Mi primera página la hice en 1998 y afortunadamente no queda rastro de ella, estaba plagada de GIF animados; 20 años después, sigo aprendiendo todos los días, pero también me pasa con otras cosas como el inglés o incluso el español.

No creo que sea experto en español, mucho menos en inglés. Con la tecnología me pasa lo mismo.

14 febrero 2018
by Sergio Luján Mora
0 comments

PHP es bueno

Me ha gustado la respuesta dada a la pregunta Everybody is saying don’t learn PHP. Learn JS frameworks but I find them too tough. I like PHP and its easy for me. I am understanding its concepts. Should I ignore them and learn PHP?:

PHP is an awesome tool. Like others. It has its strong and its weak points, like others.

I mainly develop in PHP, Java, Python, C/C++, C# (and Javascript, only when expressly requested)… and I have to say when I want something actionable and done fast, it’s either PHP or Python and that’s it.

PHP is best for web backends, Python is more general, comes with some awesome A.I. and analysis libraries.

I tell you why “everybody” tells you something wrong:

  • half of them are “language activists” (usually for Python or Javascript), most of them are not even professionals, otherwise they would just deal with the fact we are talking about tools, not ideologies.
  • several are “opportunity hoppers”, only looking websites that tell what language earns the highest income. I would never hire such guys, because they are unreliable. Developing is serious business, you don’t want a guy that after 6 months switches job because language XYZ, in year ABCD, potentiallyearns him $2k a year more.
  • the remaining ones, are ignorant. Ignorant in the literal sense. They read some polemics on some blogs (usually “language purist” blogs) in 2011 and never cared to read updated information.
    Now, 2011 knowledge is stale by any standard. PHP did a drastic change starting from version 5.5, that is since about 2013 (4 years ago) and implemented tons and tons of “cool developer guy” syntax facilities and structures.

    Since version 7, PHP is twice as fast and implemented so many new features, that Java itself got behind in some niche constructs.
    Nowadays you can develop PHP backends that really “taste like Java”.
    From lambda / closures / anon functions to iterators, from nice interfaces to factories, from classic patterns to unit testsprofilingand code coverage statisticsmock upstraitscontinuous integration (still rough), from depenencies packages to bigdata access, large (SymfonyLaravelWordPress(!) (powering millions of websites)), medium (Yii and others) and small (Fat Free Framework and more) MVC / REST frameworks. Just name a feature, it’s very possible today’s PHP got it.
    PHP even gets decent (NetBeansEclipseCodeLobster) to awesome development environments (PHPStorm – payware).

    Plus – and no other language beats PHP at this, since the beginning PHP got blazing fast, ultra-extra-mega-flexible key-value arrays (technically: ordered maps) and tons and tons of arrays management functions.

    So… beware, check PHP out and make yourself an idea. It’s actually very quick to check PHP out and see if it’s the tool for you. Just download one of zillions free “LAMP” or “WAMP” or “MAMP” (Linux / Windows / Mac) distributions, that is pre-configured packages including web server, database server and PHP. Some of those are terrific and include debuggers, control panels, additional services and much more.

12 febrero 2018
by Sergio Luján Mora
0 comments

El error de todos los años, superado

Esto es un clásico de todos los años. Claro, alguien podría decir que es mi culpa, que no enseño bien a mis estudiantes. Es verdad, podría ser, si no fuese porque mi asignatura es de tercer curso y su objetivo no es aprender a programar y a trabajar con bases de datos (eso ya lo han estudiado en asignaturas previas); el objetivo de la asignatura que yo imparto es aprender a desarrollar aplicaciones web.

Por comparar, es como si en una asignatura de cálculo de ecuaciones diferenciales hubiese que enseñar a los estudiantes a derivar o incluso a resolver ecuaciones lineales o incluso a sumar y multiplicar.

Por otro lado, yo sé que hay gente, compañeros, a los que no les gusta que estas cosas “se aireen”, son más de “barrer la suciedad debajo de la alfombra”. Bueno, para gustos, los colores.

Este año, como es costumbre, al llegar al acceso a la base de datos desde una página web me he encontrado el típico error de hacer una consulta y traerse todo el contenido de una tabla a la página web para buscar un único dato. ¿Y si tu tabla son los usuarios de Facebook, te vas a traer una tabla con mil millones de registros? Para muchos estudiantes, el uso de WHERE para filtrar los resultados es algo esotérico… y quizás pecaminoso.

Este año me he encontrado algo muy sorprendente e imaginativo. Tiene su valor, porque yo creo que nunca hubiese imaginado hacer eso. Por tanto, desde un punto de vista del pensamiento divergente, es genial. Sin embargo…

En la siguiente imagen podemos ver un fragmento de código. El bloque de código dentro de la condición if tiene como objetivo comprobar si el id (autonumérico, clave primaria de la tabla FOTOS) que recibe la página mediante GET pertenece a una foto de las almacenadas en la base de datos.

La sentencia “select * from FOTOS” podría tener una cláusula WHERE para buscar el id, pero no.

En vez de ello, se consulta num_rows para obtener el número de filas devueltas y comparar el id de la foto con ese número. En la siguiente condición se comprueba si el id de la foto es mayor que el número de filas: si es mayor, la foto no existe y se muestra un mensaje de error; si no es mayor, la foto existe y se continúa con el procesamiento.

¿¿¿Cómo???

Claro, la suposición aplicada en este pensamiento divergente es que el id se corresponde con el número de fotos que existen en el momento de insertar la foto, lo cual es cierto siempre que:

  1. El id comience siempre desde 1.
  2. Nunca se borre una foto.

Porque… en cuanto se borre una foto de la tabla, este código falla más que una escopeta de feria.

Y bueno, el resto del código también merece algún comentario adicional, lo dejo como ejercicio para casa para el lector interesado.

23 enero 2018
by Sergio Luján Mora
2 Comments

Cuando como en McDonald’s se me revuelve el estómago

Sí, cuando como en McDonald’s se me revuelve el estómago, pero no es porque la comida esté mala o no me guste. Lo reconozco, McDonald’s no es el mejor sitio, pero cuando estás en un aeropuerto como el de Barajas tienes pocas opciones: o comer en McDonald’s o que te cobren en cualquiera de los otros sitios como si fuera un restaurante con tres estrellas Michelín.

Se me revuelve el estómago cada vez que veo el tique:

Y veo cosas como esto:

¿Cómo puede ser que una multinacional con miles de locales por todo el mundo, que factura miles millones de euros cada año, no sea capaz de imprimir correctamente un tique? ¿Controlarán correctamente la fecha de caducidad de sus productos? ¿Sabrán llevar la facturación? ¿Pagarán correctamente sus impuestos? Cuando veo estas cosas me surgen muchas preguntas en mi cabeza.

18 enero 2018
by Sergio Luján Mora
0 comments

Traducción pésima en la web de turismo de Santander

Ayer salió publicada la noticia El Centro Botín, convertido en “Centro de Saqueo” en la nueva web de turismo de Santander, traducida con Google:

Arranca Fitur y Santander se ha convertido ya en ciudad protagonista. Para su desgracia. Porque la flamante web de turismo de la capital cántabra, estrenada para la ocasión, está este miércoles en boca de todos, aunque los comentarios que ha suscitado van de “ridículo” a “bochorno”. ¿El motivo? Una traducción, digamos, amateur. El Ayuntamiento quería que su nueva página estuviera disponible en siete idiomas y, con las prisas, no se le ocurrió otra cosa que recurrir al traductor de Google. El resultado es que el Centro de Arte Botín se ha convertido en “Centro de Saqueo”, entre otras incongruencias.

En la noticia aparece esta imagen:

Pero parece que el error ya ha sido corregido:

15 enero 2018
by Sergio Luján Mora
0 comments

Dos errores de Google

Curioso el siguiente error perpetrado por Google.

Para comprobar que soy el propietario de una cuenta de Google, me envía un SMS a mi teléfono. Pero parece que Google o la empresa que usa para enviar el SMS no sabe usar bien el juego de caracteres:

Sin embargo, parece que cuando quieren sí que lo saben hacer bien, como se puede ver en la siguiente imagen:

Pero esta imagen demuestra otro error de Google, quizás más grave. ¿Cómo puede ser que envíe dos mensajes distintos para la misma acción, verificar una cuenta? ¿Google tiene distinto código, distintos módulos para hacer lo mismo? Muy extraño en una gran empresa.