Cosas de CSS que se pueden aprender en 30 segundos

Muy útil el sitio web 30 Seconds of CSS.

Por ejemplo, ¿cómo truncar una línea de texto para poner al final una elipsis?

HTML:

<p class=”truncate-text”>If I exceed one line’s width, I will be truncated.</p>

CSS:

.truncate-text {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
width: 200px;
}

¿Cómo hacer una lista con diseño de color zebra?

HTML:

<ul>
<li>Item 01</li>
<li>Item 02</li>
<li>Item 03</li>
<li>Item 04</li>
<li>Item 05</li>
</ul>

CSS:

li:nth-child(odd) {
background-color: #eee;
}

Lo que se debe aprender sobre desarrollo web

De vez en cuando, debido a los cursos tipo MOOC sobre desarrollo web que tengo, recibo consultas como la siguiente:

A casi 6 años desde que lo publicaste en youtube encontre tu curso de desarrollo web el cual empeze hoy, mi pregunta es si es algo con lo que aun puedo ayudarme para iniciar en el desarrollo web, te pregunto por los años que han pasado. saludos y espero tu respuesta!

Mi última respuesta fue:

Las matemáticas que aprendemos en el colegio se desarrollaron hace unos 5000 años.

Las matemáticas que aprendemos en el instituto se desarrollaron hace unos 2000 años.

Las matemáticas que aprendemos en la universidad se desarrollaron hace unos 400 años.

Este es un curso introductorio, ¿crees que puedes aprender lo último de lo último sin aprender primero lo básico?

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.

Cómo seleccionar un lenguaje para aprender a programar

La pregunta “¿qué lenguaje debo emplear para aprender a programar?” me la han hecho muchas veces.

También he asistido en la universidad a reuniones sobre qué lenguaje es el más adecuado para enseñar a programar.

Y muchas veces, en estas reuniones está el evangelista/defensor (¿pagado?) del último lenguaje de programación que ha aparecido y que parece que es el mejor, el definitivo.

Este es un tema de discusión peligroso porque se entremezcla la razón con las emociones.

Si quieres escribir una novela, ¿es mejor que lo hagas en inglés o en español? En igualdad de condiciones, no creo que haya ninguna diferencia importante en el idioma que se elija, total, las novelas se traducen a diferentes idiomas. Pero claro, hay algunos factores externos, como el idioma que conoces y sabes utilizar mejor y el mercado en el que quieras vender tu novela que sí que influyen en la elección.

Pues con los lenguaje de programación, igual. Más o menos, los lenguajes de programación modernos son todos iguales siempre que estemos en igualdad de condiciones, por ejemplo, comparando lenguajes del mismo paradigma de programación.

En la pregunta How do I select a programming language to learn? que se ha publicado en Quora dan el siguiente punto de vista:

The number one mistake people make when learning to code is worrying too much about picking the right language.

[…]

If this sounds familiar, I’ve got some good news for you: you can stop tallying the pros and cons of each programming language and make a smart decision by focusing on 3 things to become an in-demand programmer.

1. Learn to write algorithms and work with data structures

Computer Science fundamentals, like how to write algorithms and work with data structures, are essential to programming. This probably comes as no surprise.

[…]

2. Getting real-world experience

Ensuring that you get real-world coding experience will prepare you for life as a programmer much more than the programming language you choose.

[…]

3. Learning to code by (wait for it…) writing code!

If you’re a career changer, don’t get stuck in a loop of “analysis paralysis” that prevents or delays you from writing code. That’s because the best way to learn to code is by writing code.

You need to make mistakes, learn how to decipher error messages, and troubleshoot during your learning process. None of this happens by reading books or watching video tutorials, so it’s best to dive right in and start coding. Whichever language allows you to do that the fastest and most effectively is what you should learn.

 

 

¿Es PHP realmente un mal lenguaje?

Yo le enseño PHP a mis estudiantes, considero que es un buen lenguaje/plataforma para aprender los conocimientos básicos del desarrollo web. Sin embargo, PHP tiene muchos enemigos y reconozco que no es un excelente lenguaje/plataforma, debido seguramente a la forma en que se ha desarrollado. Sin embargo, la razón de los comentarios negativos se encuentra en lo siguiente (If people consider PHP a bad language, what’s the alternative?):

The reason that PHP is a bad language is that it’s so easy to learn the basics – which makes it easy for people who don’t understand programming to learn PHP … and write totally insecure programs. SQL injection is horrible, trivial to prevent, but a lot of people still use msql() functions in older installations. There’s no reason not to – if you understand what you’re doing but I guess that so many people don’t that they had to take the whole thing out of version 7. (Mysqli() functions aren’t that much better, PDO is almost inherently safe, but it’s still easier to stick with what you’ve been using for years – even if 10 year old can hack into the resultant site.

The alternative isn’t a different language if you’re comfortable writing PHP code, the alternative to writing bad PHP code is to write good PHP code. C++ is a good language too – yet you can still write terrible code in it. Some people suggest Python. You can write insecure sites in Python too, if you don’t watch what you’re doing.

Security is something the developer does, it’s not something in the language.

Es decir, una de las ventajas de PHP, que sea fácil de aprender y sea elegido como plataforma de iniciación para mucha gente que quiera aprender el desarrollo web se ha convertido en su mayor “enemigo”.

¿Para qué aprender HTML, CSS y JS?

Hace unos días recibí un correo con esta pregunta:

Buenos días o buenas tardes Sergio, mi nombre es J.D, soy español viviendo en una ciudad de Mexico, estoy realizando el curso de “Introducción al Desarrollo Web” a través de la pagina Activate, yo llevo muchísimo tiempo en esto de internet, desde que empezaron con los modems de 56kb/s, mi pregunta es la siguiente: ¿No crees que ser hoy en dia desarrollador de paginas web ya esta desfasado o acabado ya que existen muchísimos programas para hacer paginas web sin falta de escribirlas en código (html,css…) ya que estos programas a la vez que la diseñas, se escribe el código el solito?, de ahi mi gran duda sobre desarrolladores web.

Mi respuesta fue la siguiente:

Hola.

¿No crees que ser hoy en día cocinero, o aprender a cocinar para uno mismo, está desfasado? Con toda la comida precocinada que se vende, con los maravillosos microondas que la preparan rápidamente y sin esfuerzo, pulsando un simple botón, todo solito.

El ahorro de tiempo es impresionante y muchas veces es más barato comprar la comida precocinada que comprar los ingredientes por separado.

Y ya puestos, ¿no están desfasadas las casas que se venden con cocina? Teniendo un McDonalds a la vuelta de la esquina, menuda tontería cocinar y comer en tu propia casa.

Un saludo.

Y parece que no le gustó:

No creo que sea esa la manera de contestar a una pregunta con buenos propósitos, simplemente era una duda que tenia pero ya entendí el concepto que usted quiere expresar con su contestación, simplemente quería saber si hay alguna diferencia al escribir el código de la pagina o hacerlo directamente con programas como por ejemplo “dreamweaber” ya que según mi criterio no vi ninguna diferencia que obligara a escribir la pagina en código.

¿Necesitamos aprender a programar?

Desde hace un tiempo, existe un movimiento que tiene objetivo que todo el mundo aprenda a programar un poco, un poquito, pero que todo el mundo aprenda. Este movimiento tiene dos objetivos claros.

Por un lado, como estamos rodeados de dispositivos electrónicos programados por todos lados, todo el mundo debería entender un poco cómo funcionan.

Por otro lado, si todo el mundo aprende a programar, es muy probable que eso fomente que más gente se interese por la programación, es muy probable que se produzca un incremento en el número de programadores y es muy probable que la informática avance mucho más rápido.

También existe gente que piensa lo contrario, que no es necesario que todo el mundo aprenda a programar por una razón sencilla, porque dentro de poco los ordenadores serán inteligentes y serán capaces de programarse solos. Si fuera verdad, sólo les tendríamos que pedir lo que queremos que hagan y ellos sabrán cómo hacerlo. ¿Lo veremos algún día? Puede ser, puede ser.

En el artículo Do we really need to learn to code? se discute todo esto.