Emplear use() en funciones anónimas

En algunos casos vemos, sobre todo en códigos PHP recientes, que la declaración “anónima” de una función se acompaña del empleo de use() para pasarle variables a la función. Un ejemplo sería el siguiente: $miFuncion = function() use ($nombre) {     echo “Hola, “.$nombre; } Esta sintaxis puede resultar un poco confuso si no estás familiarizado con él. Y, si te estás iniciando en el mundillo de los frameworks PHP lo vas a ver muy a menudo. Vamos a ver que es lo que hace, y cómo hay que usarla. En realidad, esto sería equivalente a lo siguiente: $miFuncion = function($nombre) {     echo “Hola, “.$nombre; } O, también a lo que aparece a continuación: $miFuncion = function() {     global $nombre;     echo “Hola, “.$nombre; } Lo único con lo que hay que tener cuidado es que, cuando emplees la primera sintaxis (la que recurre a use()) la variable o variables que emplees deberán estar declaradas, y asignadas, ANTES DE DECLARAR LA FUNCIÓN. Con las otras dos sintaxis (las de siempre, para entendernos), basta con que las variables empleadas estén declaradas antes de invocar la función. Por lo tanto, podemos decir que la sintaxis con use() …

Seguir leyendo

Borrar ficheros con nombres muy largos

A todos nos ha pasado alguna vez. Cuando empleas un framework de desarrollo en ciertos contextos (Laravel, Symfony, etc) u otras herramientas específicas, y creas proyectos en directorios concretos, la herramienta o el framework que estás empleando crea algunos archivos con nombres extremadamente largos. En teoría, con Windows el nombre de un archivo, incluyendo la ruta, no puede superar los 255 caracteres. Esto no es un problema. Por supuesto, en la mayoría de los casos, con eso tienes más que de sobra. Sin embargo, como te he comentado, algunas herramientas se las ingenian para “romper” esa limitación, y crear archivos con nombres kilométricos. Normalmente, esos archivos no son empleados luego por la aplicación o proyecto que has creado, así que no te sueles preocupar por ellos. El problema viene cuando debes eliminar el proyecto de tu equipo (por ejemplo, porque ya ha quedado obsoleto, y deseas limpiar espacio en disco). Windows, sencillamente, no puede gestionar esos nombres, por lo que, hagas lo que hagas, y lo intentes como lo intentes, no puedes borrarlos o moverlos a ninguna parte. Y, claro. Como están dentro de una estructura de directorios, tampoco puedes borrar esos directorios.

Poniendo MySQL en UTF-8

La codificación de contenidos cuando se desarrolla una aplicación que requiere el uso de bases de datos puede llegar a convertirse en una de las peores pesadillas de un desarrollador, sobre todo si es algo en lo que no has pensado desde las primeras fases iniciales previas al inicio del desarrollo. Motores de bases de datos tan populares y difundidos como MySQL pueden dar muchísimos problemas a la hora de grabar datos, de recuperarlos y de renderizarlos en vistas, si no tenemos en cuenta la codificación. La codificación de datos más adecuada en la mayor parte de los casos es UTF-8, ya que implementa todos los caracteres que se puedan usar en cualquier idioma, así como gran cantidad de guarismos que, sin pertenecer a un idioma específico, son de uso relativamente común, como signos matemáticos u otros. Para implementar otros caracteres extremadamente especiales hay otras codificaciones adecuadas, pero eso es tan poco habitual que ni lo vamos a comentar. El problema es que, cuando se crea una base de datos, tabla o campo, el motor de MySQL (dependiendo de la versión, y del entorno de desarrollo) tiende a emplear alguna codificación de tipo latin-n-xxxxxxxx o similar. De momento, parece irrelevante, …

Seguir leyendo

Ordenar matrices en JavaScript

Sí, ya se que el título no parece prometer gran cosa. Ordenar una matriz en JavaScript es un simpleza. Basta con un matriz.sort() y, hala, ya está ordenada… ¿O no?. Sí, si se trata de una matriz “normal” de JavaScript. Sabemos que JavaScript, de forma nativa, sólo gestiona matrices unidimensionales, indexadas. Son un modelo de colección de datos inherentemente simple, en el que cada dato tiene un índice que lo identifica. Estos índices son numéricos, consecutivos, empezando desde 0. Realmente, es un modelo simple y, a la postre, insuficiente para cubrir muchas necesidades de hoy en día. Si quieres una matriz bidimensional, en realidad, lo que manejas es una matriz de matrices. Cada elemento de la matriz bidimensional es, a su vez, una simple matriz unidimensional. Además, si quieres una matriz asociativa, al estilo de las que maneja, por ejemplo, PHP, ya tienes que recurrir a parsear un objeto JSON. Y ahora viene lo bueno. Si tienes una matriz bidimensional asociativa (creada a partir de un JSON), y quieres ordenar sus elementos por uno de los campos de forma que se mantengan las relaciones de los demás elementos, ¿cómo hacerlo? Vamos a ello.

Esclavizar un disco duro

En ocasiones hemos oído la expresión “esclavizar un disco duro”. En este artículo vamos a entender qué significa, qué implica, y por qué hacerlo. También vamos a aclarar un concepto erróneo que mucha gente da por cierto, pero que no lo es. Esclavizar un disco duro es una operación sencilla en un PC de torre aunque, dado que es necesario “meterle mano” al hardware, puede ser más complicada en un portátil y, a menos que tengas experiencia en este tipo de equipos, no deberías intentarlo (al menos, yo no me atrevo a abrir el mío 🙂 ). Además, convertir un disco duro en esclavo implica que hay, al menos, dos discos duros físicos, ya que siempre debe haber un disco duro maestro; en los portátiles no suele haberlos: Lo normal es que exista un disco duro físico, dividido en dos o más discos virtuales.

Expresiones regulares

Todos sabemos lo que son las expresiones regulares. Se trata de patrones de secuencias de caracteres que empleamos para comprobar si una cadena de texto se ajusta a un formato específico. Por ejemplo, puede que una cadena deba contener dígitos numéricos, pero no espacios en blanco, o letras o signos de puntuación. O podemos querer comprobar que una cadena contiene una dirección de correo electrónico correctamente escrita. En estos casos creamos un patrón que define el formato al que debe ajustarse una cadena y luego lo comparamos con la misma. La forma de hacer estas comparaciones depende de cada lenguaje específico. En esta serie de artículos conoceremos el modo de emplear las expresiones regulares en los dos lenguajes de script más extendidos en el desarrollo web: JavaScript y PHP. Sin embargo, los patrones que se emplean en las expresiones regulares para comprobar la coincidencia con tal o cual formato es siempre el mismo, con independencia de que se usen luego estas expresiones en Python, Java, PHP, C++, o cualquier otro lenguaje.

Expresiones regulares en JavaScript

El uso de expresiones regulares en JavaScript es una buena manera de prevalidar el formato de ciertos datos en el lado del cliente, sin necesidad de recurrir a llamadas al servidor. Sin embargo, la forma de hacerlo es adecuada, también, en entorno de API’s de Node JS (aunque el uso de Node JS no será objeto de estudio en este artículo, dado que es un tema tan amplio que requeriría su propia serie de artículos, que le dedicaremos en su momento). En este artículo vamos, pues, a mostrar como hacer uso de las RegExp en JavaScript. Veremos que podemos manejar los datos a evaluar por programación clásica o por jQuery. Finalizaremos con una breve reflexión acerca de la (limitada) programación orientada a objetos de JavaScript. Vamos a ello.

Expresiones regulares en PHP

PHP es, sin duda, el lenguaje de servidor por excelencia para desarrollos web. Por lo tanto, la cuestión de las expresiones regulares (o cualquier otro aspecto de programación, si a eso vamos) no estaría completa si no las vemos en este contexto. Aunque el tema de las expresiones regulares en PHP ya se ha tratado en otro artículo de este blog, aquí vamos a comentar las funciones de las que disponemos en PHP para conseguir aprovechar al máximo las posibilidades de este recurso. Si eres desarrollador habitual en PHP, este artículo te servirá a modo de “chuleta” o referencia sobre este tema.

Atajos de teclado en Windows

Todos sabemos que el teclado del ordenador no sólo sirve para escribir. Estamos acostumbrados a usar “atajos de teclado” (combinaciones de dos o tres teclas que se pulsan simultáneamente) para lograr ciertas funciones, como copiar un contenido al portapapeles, o pegarlo en otro sitio. Sin embargo, la mayoría de los usuarios se limitan a eso: cortar, copiar o pegar, y poco más. En entornos windows hay muchas otras combinaciones que resultan útiles, y que pueden permitirnos acceder a distintas funciones del sistema, facilitando así nuestro día a día delante del ordenador. En este artículo, las hemos recopilado para tí, junto con algunos conceptos aclaratorios, que pueden resultarte de utilidad.

Barras de scroll personalizadas

En el mundo del frontend hay que cuidar, cada día más, la apariencia de nuestros desarrollos web. Atrás quedaron ya los años en que bastaba con que una página funcionara correctamente, y que fuera “más o menos” bonita. En un mundo dominado, cada vez más, no sólo por la funcionalidad y facilidad de uso, sino también por la estética cuidada hasta el mínimo detalle, es muy importante “entrarle por los ojos” al visitante de nuestra web. Las barras de scroll son un elemento visualmente muy importante y, con gran frecuencia, descuidadas por los frontenders. Es cierto que depende del tipo de sitio. En una web como, por ejemplo, esta misma, es un detalle completamente irrelevante, ya que el interés del visitante se centra en los contenidos. Sin embargo, suponte que te toca realizar una página para un estudio de fotografía, o una revista de moda. Ahí si que no puedes permitirte que el navegador dibuje las barras de scroll clásicas. En este artículo vamos a ver como solucionar esto, para poder contar con unas barras de scroll adecuadas a cada caso.