Los cambios de PHP 7.3
Si no falla nada, el 6 de diciembre de 2018 saldrá a la luz PHP 7.3, la versión que se ha venido trabajando durante 2018.
el Blog de Javier Casares
Si no falla nada, el 6 de diciembre de 2018 saldrá a la luz PHP 7.3, la versión que se ha venido trabajando durante 2018.
Se acerca el lanzamiento de PHP 7.3 y WordPress va en camino de estar adaptado a su funcionamiento de forma completa.
En PHP hay muchas formas de generar contraseñas, algunas propias del sistema. En ocasiones se usan sistemas sólo números. Con este sistema tienes disponible todos los caracteres que quieres como disponibles y la longitud.
Si te dedicas al mundo de Internet es muy probable que entre las aplicaciones que utilices se encuentre la de comprimir imágenes… pero el uso de algunas herramientas a veces se hace muy complejo o necesita de servidores con algunas configuraciones extrañas. Es por eso que, como yo mismo me he encontrado en esa situación y soy bastante asiduo a la herramienta de Smush.it de Yahoo! he querido simplificarme la vida y, de paso, os hago partícipes de ello a vosotros. Que conste que es una simple prueba y que puede fallar (como todo en la vida). El servicio es smushit.net y lo que hace es simplificar la API existente eliminando los datos poco útiles. El objetivo es que introduzcas por parámetro la URL de la imagen que … Leer más
Si eres de los que le da igual que sepan donde estás en todo momento (o al menos donde accedes en Foursquare) tal vez te interese este pequeño mashup con el que podrás mostrar gracias a los mapas de Google Maps tu última localización de Foursquare. ¿Cómo se consigue esto? Pues tan sencillo como entrando en tu cuenta de Foursquare y luego visitando la sección de feeds. Allí encontrarás una de las opciones en formato KML. Ahora tan sólo has de añadir esa dirección URL al final del mapa de Google. Por ejemplo: <iframe scrolling=»no» marginheight=»0″ marginwidth=»0″ width=»300″ height=»300″ src=»http://maps.google.com/maps?f=q&source=s_q&hl=es&geocode=&q=http://feeds.foursquare.com/history/ABCDEF0123456789.kml?count=1&ie=latin1&output=embed»></iframe> El parámetro «q» es el que lleva la URL de Foursquare, y el «count» es el número de puntos que quieres que se muestren. Si pones 1 indicará … Leer más
¿Te ha pasado alguna vez que tienes una web desde hace un montón de años, que la hiciste tú y a veces te da problemas de saturación por exceso de visitas? Pues a mi sí y, aunque llevaba tiempo pensando en alguna forma de cachear, que acababa siendo hipercompleja, hoy me ha dado por pensar alguna forma sencilla basándome en unas pruebas que había hecho hacía poco. La cuestión es que sabía cómo hacerlo, iba por el camino, pero entre unas cosas y otras «nunca encontraba el momento», hasta ahora. El sistema es bastante simple y en principio se podría aplicar a cualquier sitio. El código sería algo tal que este: <?php $md5 = md5($_SERVER[«REQUEST_URI»]); // convertimos la URL a único identificador $file = «cache/».$md5.».html»; // donde se … Leer más
En muchas ocasiones me encuentro que tengo varios JavaScript en una página y, al final, se hace bastante pesado tener que gestionar múltiples ficheros. Además, otra cosa que me gusta es la de reducir al máximo el tamaño del fichero, y el hecho de poder combinarlos también permite reducirlos… Es por esto que existe para PHP una pequeña biblioteca de funciones llamada JSmin-php que ayuda a gestionar esta situación tanto la de combinar como de minimizar. Básicamente lo que hace esta biblioteca es leer todos los ficheros JS de una carpeta, combinarlos, comprimirlos y generar un fichero único cacheado. require_once(«jsmin.php»); $files = glob(«/carpeta/js/*.js»); $js = «»; foreach($files as $file) { $js .= JSMin::minify(file_get_contents($file)); } file_put_contents(«/carpeta/combinado.js», $js); En el caso en que no queramos leer todos los ficheros de … Leer más
Una de las cosas que normalmente no revisamos cuando creamos un sitio web es la vulnerabilidad que se tiene a ataques por URL por cosas como XSS e incluso a ataques a la base de datos por una mala configuración. Para esto normalmente se usa una revisión y se ejecuta, con PHP, la función htmlentities() que, gracias a eliminar el código HTML puede filtrar cosas como los <script>. Para solventar esto existe una cosa llamada Genius Open Source Libraries que, con unas simples funciones, permiten hacer una megalimpieza contra ataques de todo tipo. require_once ‘Core/sgConfig.inc.php’; // Output an unsafe string, presumably user input $xss = ‘<script>alert(\’oh snap\’);</script>’; echo ‘If your entered your name as ‘ . $xss . ‘, we\’d be in trouble.<br>’ . «\n»; // Sanitize that … Leer más
Una de las peculiaridades de los CAPTCHA es que habitualmente son bastante complejos de entender y ya no os digo si cuesta a alguien con todas sus facultades, a alguien que tenga falta parcial o total de alguno de sus sentidos. Y es por eso que desde Francia Quebec (Canada) llega una propuesta llamada DISTCHA (Device Independent Slider Test to tell Computers and Humans Apart) y que es un sistema bastante parecido al de activación del iPhone, ese «slide» que moviéndolo de un lado a otro permite activar el teléfono. Aunque aun se encuentra en una versión muy previa, y a falta de ser probado en muchas plataformas, sí que es cierto que en la mayor parte de los navegadores ya funciona. Funciona gracias a jQuery y es … Leer más
Normalmente cuando desarrollamos una página web no nos preocupamos en exceso cómo enviamos la información a los usuarios que se conectan a ella, dejando que el sistema lo haga de forma automática. Eso no es del todo malo, pero hace que la paralelización de la que alguna vez os he hablado se pueda perder en parte. Sabemos que en muchas ocasiones en la cabecera de una página incluimos los CSS y JS, y que estos pueden llegar a bloquear nuestra carga de página. Teniendo en cuenta que la cabecera en sí «no hace nada» ¿por qué no enviarla en cuanto la tengamos? Esto significaría que, una vez la mandemos, antes de pintar nada, y mientras calculamos el contenido de la página que verá el usuario, podemos enviar cierta … Leer más
Uno de los problemas que habitualmente nos pueden frenar la carga de un sitio es si leemos mucha información de varios sitios de forma simultánea, como podría ser la lectura de varios feeds. Y es que habitualmente se usa la función file_get_contents() que tiene una cosa: es síncrona, es decir, hay que ejecutarla, esperar a que finalice, y volver a ejecutarla… pero ¿por qué esperar a qué acabe de leer para hacer otra llamada? Para hacerlo podemos utilizar las funciones curl_multi_* que básicamente permiten hacer muchas llamadas cURL en muy poco tiempo. No es del todo asíncrono y en paralelo, pero casi casi se podría considerar como una opción. El tiempo total de estas peticiones será la de la más lenta de todas, de forma que si tenemos … Leer más
Uno de los poyos que siempre me he encontrado a la hora de poner un reproductor de vídeo en la web es que en la mayoría de casos sólo aceptaba vídeos flash (.flv). La cosa es que con el HTML 5 y con jQuery se han montado un reproductor llamado Open Standard Media que tiene muy buena pinta, es código abierto y gratuito. Entre otras cosas, permite el uso de HTML 5, soporta los nuevos elementos audio y video del HTML 5 con los formatos estándar, para el resto de formatos monta un reproductor Flash, se le puede cambiar el diseño de una forma sencilla gracias al uso de ThemeRoller, permite la integraciónd e vídeos de Vimeo y Youtube (simplemente indicando la URL), tiene la opción de listados … Leer más
Aún no sé la utilidad de esta herramienta, pero como pronto, me ha parecido genial algo así… quizá podría servir para que al subir una foto a una red social el sistema pueda llegar a etiquetar a alguien de forma automática. Y es que face.com ha abierto su API a desarrolladores, y la verdad es que para ser abierto y gratuito, tiene buena pinta y da cierta información… Lo bueno de este sitio es que tienen varios ejemplos interesantes para varios lenguajes de programación e incluso integración con facebook y twitter. La idea es que con una simple petición a través de la librería en PHP, como podría ser: $face->faces_detect(‘http://farm3.static.flickr.com/2566/3896283279_0209be7a67.jpg’); o una petición vía REST: http://api.face.com/faces/detect.xml?api_key=4b4b4c6d54c37&api_secret=&urls=http://farm3.static.flickr.com/2566/3896283279_0209be7a67.jpg Se puede obtener un código tal que así: <?xml version=»1.0″ encoding=»utf-8″?> <response> … Leer más
Una de las cosas que habitualmente es necesario hacer es validar cuentas de correo. Hay muchas cosas a hacer, pero una de las primeras es saber si la cuenta de correo está «bien formada». Un artículo muy interesante sobre distintas formas de verificar cuentas, basadas en una serie de expresiones que sí han de validar, y otras que no han de hacerlo. La expresión que en principio se ajusta más a todas las posibilidades es la siguiente: /^([\w\!\#$\%\&\’\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\’\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i Con esto tendríamos un código similar a este: <?php $texto = «prueba@ejemplo.com»; $expresion = «/^([\w\!\#$\%\&\’\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\’\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i»; preg_match($expresion , $texto , $encuentros); print_r($encuentros); ?> De todas formas, quizá habría que hacer otra cosa, que es verificar si realmente la cuenta existe… y es que una cosa es que la cuenta de correo … Leer más
Hoy comenzamos el día con una oferta de trabajo, que tal y como está la cosa, no es moco de pavo. El perfil es de desarrollador PHP y MySQL. Quién se incorpore estará bajo mi supervisión y se dedicará principalmente a la continuidad de un proyecto que he estado elaborando estos últimos meses, por lo que si le gusta la emoción no ha podido caer en un sitio mejor… También es interesante que tenga las ideas claras y que le guste Internet, ya que este proyecto se mueve a una velocidad bastante rápida y la evolución puede necesitar ir a la misma velocidad. Con respecto a la jornada laboral, puede ser media jornada (si fuera de mañanas sería de 09:30 a 13:30; en caso de ser de tardes … Leer más
He de reconocer que si hay un software que todo el mundo utiliza es Windows Live Messenger y no cabe duda de que cualquier integración de un sitio web sólo puede levar a ser un acierto. Llevo varios meses planteándome integrar algún sistema de estos tan de moda ahora, y aposté en Ethek y en Windows Live ID, más concretamente en Windows Live Messenger Web. Estos días atrás alguien hizo que la chispa saltara y que mis pruebas en una máquina perdida del universo se acabasen convirtiendo en una versión beta que ha durado tan sólo 2 horas, para pasar a producción en cuanto tenía todas las funcionalidades en línea. ¿Qué es lo que he hecho? Básicamente se resumen en 3 elementos: Integrar la Windows Live Messenger Bar … Leer más
Como muchos ya sabréis soy aficionado a tener una versión «alpha» de WordPress en mi blog personal, y de esa forma ir probando en tiempo real cómo es de estable el sistema antes de hacer las actualizaciones pertinentes en el resto de sitios de los que soy responsable… Y ahora que no creo que tarde mucho en salir esta nueva versión, me gustaría hacer un repaso de algunas características interesantes. Antes de nada, he de decir que en muchos casos (no sé si es el autoguardado o qué) cuando voy a guardar un borrador o similar se pierde como el ID o algo y acaba fallando, total, que hay que volver a la lista y reabrir esa entrada (habiendo perdido el título y tags, normalmente). El primero de … Leer más
Cuando construyes un robots de Internet has de tener en cuenta dos elementos: Tener tu propio «User-Agent» Cumplir el estándar de robots.txt Para el primer elemento hay una forma muy sencilla de ejecutar un código en PHP: ini_set(«user_agent», «Agente 1.0 «); Con esto ya consigues que, cuando se haya una petición desde PHP hacia cualquier sitio, en vez de llevar el agente del propio PHP se genere uno con los datos que tú indiques. Aunque, quizá lo más interesante es tener un sistema de parseo de los ficheros de robots.txt. Para ello hemos de leer todas las líneas del fichero y procesarlas, sobretodo si coinciden con nuestro agente. La idea es crear una función que consulte si tenemos acceso o no a esa dirección URL. Se puede mejorar … Leer más
Siempre he defendido phpBB como un buen sistema de foros, pero a veces creo que está pensando más en la Edad Media que para la era Internet. Y es que si hay una cosa que no me gusta absolutamente nada, es que las URL puede cambiar de forma estrepitosa según el navegante que venga, o buscador, además de poder generarse una de combinaciones bestiales. Hace unas semanas tuve que actualizar un foro muy antiguo (versión 2 algo) a la nueva versión (la 3 algo), y me encontré con que, hace unos 4-5 años, le hice unos cambios por temas de SEO en el que las URL quedaban «chulas». El problema es «deshacer todo el SEO que había hecho» para así, a partir de ahora, poder actualizar el software … Leer más
Una de las preguntas que de tanto en tanto alguien me hace es la de qué lector de feeds utilizo. Y la verdad es que muchas veces no sé si vale la pena contestar o inventármelo. Habitualmente la gente utiliza Bloglines, Google Reader, Netvibes… pero claro, ¿cómo voy a usar yo una cosa de esas? Yo he de complicarme la vida y usar Gregarius. Es un lector de feeds que se instala en el servidor, no es de escritorio, sino vía web (algo que facilita que esté actualizado siempre en todos sitios). Y su peculiaridad y lo que hace que lo siga usando es que, a diferencia de otros lectores: Puedo ver todo lo pendiente de lectura en una misma pantalla. Si leo algo no se elimina… eso … Leer más
Hace ya un tiempo comenté los problemas que tenía con contenidos duplicados por utilizar Feedburner y la imposibilidad de filtrarlos, y que de ahí comencé a utilizar el plugin de WordPress llamado ©Feed. La cuestión es que después d un tiempo, tengo una pequeña lista de IP de servicios de esos que almacenan una copia de los contenidos de los feeds para mostrarlos en su sitio web, lo que podría llegar a afectar a la multiplicidad de nuestros contenidos por la red sin que sea una simple mención, sino copia. Servicio Dirección IP Servicio Dirección IP Wikio 84.55.184.93 Blodico / DigestServices 67.212.188.186 Feedshow 88.191.13.89 Feedage 64.34.174.17 UrlFan 70.165.48.167 MobiType 91.121.143.209 Notifixious 75.101.147.247 Tecnomeme / Webremix 64.13.192.34 WASALive 88.191.36.95 Toluu 67.228.53.210 Blogged 74.54.159.180 flitic 78.129.128.90 Hedatu 84.20.10.71 Portal-seo … Leer más
Con esta función de PHP podremos obtener la IP de un usuario.
Hacía bastante tiempo que no revisaba el sistema gratuito de PrestaShop, un software hecho en PHP y MySQL que permite montar una tienda de forma sencilla, de forma similar a OsCommerce, pero mucho más simple. Me parece interesante por su forma de estar desarrollado y sus posibilidades, como se puede ver en la demo del frontal, y en la demo del backoffice (usuario: demo@prestashop.com; clave: prestashop_demo). La lista de funcionalidades es muy interesante y viene preconfigurado para poder usarse con PayPal, tiene algunas funciones sociales (top compradores y productos…), facturación por PDF, traducciones, SEO… Si alguien está haciendo un pensamiento de crear una tienda, sin duda es un sistema interesante a instalar y probar.
Hace unos días paseando por IKEA vi a Anna, su chica inteligente que te ayuda con los muebles. La verdad es que hace mucho que sabía de ella y me dio por buscar a ver cómo estaba creada, es decir, si se basaba en algún tipo de software que hubiera por ahí o es 100% tecnología sueca, como ella misma afirma. Al final, después de dar unas cuantas vueltas me encontré con un pequeño script en PHP llamado CatBot que tiene buena pinta. La verdad es que parece estar todavía muy en fase de desarrollo, y yo haría su funcionamiento de otra forma, aunque no creo que sea muy complejo hacer algunos cambios en él. Ahora la duda que tengo es para qué necesito yo un robot… es … Leer más
Hace unas semanas descubrí una función interesante en WordPress que me ha permitido hacer una mejora en todos los diseños de los blogs que gestiono… La función en sí es is_paged() y permite detectar esas páginas del blog en las que en la URL aparece el /page/número… Estas páginas son las que se usan para navegar por la web, y aunque es interesante que los buscadores las sigan, no interesa que sean indexadas ya que no aportan valor a los resultados de búsqueda… básicamente porque todo lo que aparece en esas páginas al final aparece en una URL dedicada a las entradas de un artículo concreto. Es por esto que si a esto le sumamos las páginas de los resultados de búsqueda interna del blog, podríamos añadir al … Leer más
La semana pasada fue una semana bastante chunga en cuanto al servidor se refiere… por alguna extraña razón (¿subida de tráfico?) la máquina comenzó a hacer el gilipollas de tal manera que cada cierto tiempo simplemente petaba todo: base de datos, servidor web… Después de investigar parece que el problema estaba en las conexiones a la base de datos, principalmente de las webs de frases. Así que tras mucho estudiar cómo hacerlo, me monté un sistemita que actualice la web cada 24 horas, que al fin y al cabo es cada cuanto lo hacía habitualmente, al menos en la parte de navegación normal. El problema es que tampoco podía cachear las páginas resultantes debido a que se comprueban determinadas cosas, lo que ha hecho que me invente un … Leer más
Hace un par de meses me decidí a hacer algo que he encontrado que alguien ya ha hecho. He de reconocer que al final lo que intenté se quedó en eso, un intento. Básicamente desde hace un tiempo que decidi no usar Feedburner por una sencilla razón: no me gustan las URL’s que genera. Además, junto a esta manía que tengo de querer alojar yo mismo mis propias herramientas he estado buscando algo que se parezca a Feedburner, pero sin necesidad de usar MINT, como ya os expliqué, que lleva algo similar, pero también genera unas direcciones extrañas. Como todos mis feeds son completos, no tengo necesidad de saber si la gente hace clic en ellos o no, pero sí necesidad de saber cuántos lectores y qué artículos … Leer más
Hace unos días que vengo haciendo pruebas con algo que ya había visto, pero no sabía cómo conseguir «por mi cuenta». Servicios como Google Calendar, Yahoo! Calendar y demás te permiten que, si tienes un calendario con ellos, obtengas una URL privada la cuál puedes usar en tu programa calendario (iCal, Mozilla Calendar…) de forma que puedas tener tu calendario en cualquier sitio. Digamos que viene a ser como un «calendario IMAP» 😉 La cuestión es que como ya no dependo de ninguno de estos servicios, ahora sólo tenía el calendario en mi portátil, pero no disponible en ningún otro lugar. Así que me decidí a investigar cómo podría tener calendarios en la red y que se pudieran modificar desde donde yo quisiera. Es por esto que llegué … Leer más
En muchas ocasiones las empresas tienen que lanzar productos pequeños, sitios específicos que no van a necesitar más que unas pocas páginas y casi nada de actualización. Me han pasado un sitio web / software que permite precisamente eso: crear micrositios de hasta 19 páginas. El sistema es muy sencillo (se puede ver un vídeo presentación en el que queda muy claro). Además no necesita base de datos y permite crear varios templates y usarlos en nuestro proyecto. El secreto del éxito de muchos sistemas a veces es su sencillez, y, como digo, este es el caso de uno de ellos… un simple programita en PHP que, a excepción de los diseños, puede ser utilizado por cualquiera sin necesidad de conocimientos de HTML o programación de ningún tipo. … Leer más
El viernes por la tarde estuve hablando con Gina sobre el tema de que sus vídeos estuvieran o no en Youtube, ya que venía todo de una conversación de qué pasaría si le cancelasen la cuenta, y le comenté que si tenía los vídeos en FLV… su respuesta fue afirmativa así que le propuse que usase su propio player. La cuestión era cómo montar un sistema de forma que fuera lo más simple de subir vídeos y de actualizar. Finalmente me puse ayer tarde a programar un rato y salió lo que en breve saldrá al público: videos.ginatonic.net (exclusiva, ni siquiera ella lo ha anunciado 😛 ). El sistema es sencillo… el diseño del blog, las últimas entradas de su feed con MagpieRSS, el feed redireccionado a FeedBurner, … Leer más