Tras buscar durante varios días, teniendo que trabajar con otros asuntos entremedias, he encontrado una función que me ha arreglado bastante el asunto. No me ha dado tiempo a documentarla, pero como me ha servido, la dejo registrada.
Tras buscar durante varios días, teniendo que trabajar con otros asuntos entremedias, he encontrado una función que me ha arreglado bastante el asunto. No me ha dado tiempo a documentarla, pero como me ha servido, la dejo registrada.
Digamos que de la base de datos nos llega la siguiente fecha: «2009/04/04».
El primer paso consistiría en convertir la fecha inglesa a un objeto de tipo datetime. Posteriormente formatearíamos esa fecha recién creada al modo concreto en que quisiésemos que se mostrase en español.
$datetime = date_create(‘2009/04/04’);
echo date_format($datetime,’d-m-y’);
«d-m-y» sacaría la fecha en el siguiente formato: dd/mm/yy.
Trabajaba con una cadena que recibía el contenido con pseudotags. Contenía una sección con la siguiente estructura: <m>XXXX</m>. Necesitaba aislar «XXXX» sin manipular el resto de la cadena. La siguiente función extrae texto contenido entre una cadena de inicio y otra de fin específicas.
Un proyecto requería redimensionar las imágenes que el usuario introdujese y se guardasen en los directorios especificados. Para eso habíamos previsto utilizar Imager.dll, una librería que se encarga de tareas relativas a imágenes. Sin embargo, después de día y algo peleando con Arsys, ya que no nos dejaba registrar la librería, tuve que recurrir a una función independiente. Se basa en las librerías de Persits, pero es más posible que los servidores la tengan instalada, que era el caso de Arsys.
Se necesitaban sacar imágenes de cualquier fuente, que se pasaría por parámetro, y que en caso de que fuese mayor de ciertas dimensiones se redimensionase a otras. Para ello se necesita un nuevo script, por ejemplo redimensionaimagen.php y usar lo siguiente.
Tenía que lidiar con una exportación e importación de datos compleja y acabé teniendo que introducir los inserts uno por uno para asegurarme de que no surgiesen problemas. Sin embargo, el campo clave tiene identidad y, por supuesto, de manera normal no permite introducir valores. Sin embargo, eso se puede corregir de la siguiente manera:
SET IDENTITY_INSERT tabla ON
INSERT INTO tabla
(id, titulo, imagen, oferta, orden, publicado)
VALUES (14,’titulo_imagen’,’imagen.jpg’,1,1,1)
SET IDENTITY_INSERT tabla OFF
Es importante usar la lista de columnas a pesar de que se introduzcan todos los valores, o de lo contrario no funcionará.
Tras una importación masiva de registros, o «bulk insert», en una base de datos de SQL Server que ya contenía tablas, descubrí que los datos estaban asociados a nombres de columna «Col001», «Col002», etc. a pesar de que el diseño de la tabla contenía los nombres correctos. Esto destrozaba todas las consultas de la página. No sé en este momento a qué se ha debido el problema y cómo prevenirlo, pero en el caso de que haya ocurrido, podemos usar la siguiente sentencia de SQL en el editor de consultas de SQL Server para cambiar los nombres de las columnas una a una:
EXEC sp_rename ‘mytable.col001’, ‘newname’, ‘COLUMN’
Necesitábamos un script que generase un archivo xml con posts de un blog de wordpress para que quedase con la siguiente estructura:
<webdata>
<noticias>
<noticia>
<titulo>TÍTULO</titulo>
<entradilla>ENTRADILLA</entradilla>
<imagen>RUTA_IMAGEN</imagen>
<autor>AUTOR</autor>
<fecha>FECHA</fecha>
</noticia>
</noticias>
</webdata>
Aunque las funciones de WordPress ayudan a simplificar el proceso, tenemos los siguientes problemas:
Necesitaba lanzar un «lightbox» con Mootols en una página antigua con la que trabajaba y era necesario calcular las dimensiones de la imagen ya existente en el servidor. Lo más importante, aparte de la función, es la llamada a ella, que requiere la ruta absoluta de los archivos, no la relativa, y que el ancho y el alto se pasan como referencia.
El SQL Server Management Studio funciona como debería para conectarse a servidores locales, ya sea del mismo ordenador o que estén en red, pero no tanto a primera vista para conectarse a servidores remotos. Se haría de la siguiente manera:
Se nos pedía que contásemos cada vez que un usuario reprodujese uno de los vídeos disponibles en la página. El problema es que se trataba del reproductor JW Player, un swf, no un elemento del DOM cuyos eventos pudiésemos manipular fácilmente mediante Javascript. En la página web se muestran los vídeos tanto cuando el cliente tiene Javascript activado y cuando no lo tiene. Aunque de momento todavía no queda claro cómo tratar el caso de que no tenga Javascript activado, en condiciones normales estaba claro que la manipulación del evento de carga debía hacerse accediendo al API de JW Player, y así es como lo solucionamos.
Para averiguar cuál es el mes numérico actual en ASP, basta con la siguiente llamada:
month(now)
Se quería que al pulsar la cabecera de una lista que funciona como acordeón se cargase una imagen concreta. Cuatro cabeceras, cuatro imágenes. Por defecto se cargaría la primera, de la misma manera que la primera sección del acordeón estaría abierta. Conviene seguir una nomenclatura que permita extender las cabeceras y las imágenes en el futuro sin tener que modificar o modificar mínimamente el código javascript.
Por defecto, cualquier etiqueta «a» dentro de un div definido para actuar como un acordeón de jQuery asumirá que debe de cerrar la sección que le contiene o, en general, actuar como cabecera de un acordeón. Para evitar esto, a la hora de activar el acordeón hay que declarar al menos un parámetro concreto que establece qué enlaces son las cabeceras.
Dadas las dificultades y confusiones que conlleva migrar una base de datos en Ruby on Rails, sobre todo cuando uno acaba de empezar, añadido a que la base de datos con la que trabajaba ya tenía una estructura definida en un proyecto anterior, consideré que necesitaba documentar el proceso para que se haga más fácil, tanto para mí como para quien encuentre esta entrada, al repetirlo en el futuro.
La peculiaridad de esta base de datos, una que debe ser bastante común, es que contenía campos terminados en «_es» y «_en», correspondientes al idioma del texto que contenían. Las versiones recientes de Rails ya tienen i18n integrado, pero no el gestionar automáticamente campos en diferentes idiomas en una base de datos de manera dinámica. Después de investigar un poco pareció que el plugin Globalize2 era estable y podía encargarse del trabajo.