Archivos de la categoría ‘Programación’

Actualiza tu navegador y salva un desarrollador web

28 28UTC Marzo,2008

Bitelia nos descubre de una campaña que promueve la actualización a Internet Explorer 7 u otro navegador similar por las grandes dificultades que tenemos los programadores a la hora de hacer que funcione cualquier diseño web decente en Internet Explorer 6.

Enlace: Save The Developers | Vía: Bitelia

AutoSaveTextToCookie guarda automáticamente lo que escribas en cualquier formulario

28 28UTC Marzo,2008

Con esta extensión para Firefox, cada vez que entres en una página web, tendrás rellenos todos los campos de texto con el texto que introduciste la última vez. Incluso, después de haber reiniciado el ordenador.

A mí me parece muy útil al menos para cuando estás programando y probando una web.

Vía Zona Firefox

Uso de palabras reservadas en .NET

28 28UTC Marzo,2008

A veces he querido crear una clase o declarar una variable o una propiedad con un nombre que coincidía con una palabra reservada del lenguaje (normalmente VB.NET que es el que más suelo usar). Por ejemplo, portando mis aplicaciones a la nueva versión .NET 2.0 estuve revisando una clase propia MyMail que encapsula el envío de e-mails en .NET y quise crear una propiedad llamada “To” que representara una colección de los destinatarios de ese E-mail.

Si ponemos algo como Public To As MailAddressCollection se nos marca la palabra “To” en azul y nos dá error. Tras mucho rebuscar, el truco es poner las palabras que estén reservadas entre corchetes y entonces no tendremos ningún problema, en este caso quedaría así: Public [To] As MailAddressCollection. Y ahora ya tengo la propiedad MyMail.To sin problemas.

urlWrap, funcion para PHP

28 28UTC Marzo,2008

En uno de los proyectos en los que estamos trabajando actualmente tenemos una especie de buscador web y en los resultados se muestran los enlaces completos de las páginas web que aparecen en los resultados. El problema es que algunos de esos enlaces ocupaban varias líneas y el modo de “cortar” esas líneas no me convencía porque se cortaban por cualquier carácter. Lo que yo buscaba era una función similar al wordwrap de php pero para urls.

Al final tras no encontrarla me decidí a escribir mi propia funcion, urlWrap. Mi función recibe dos parámetros, la url que queremos dividir en varias líneas y el tamaño máximo de cada línea. Lo que hace básicamente es dividir la url en varias líneas a partir de los caracteres &?/ dándoles prioridad por ese orden. Esos caracteres aparecen declarados en la variable $chars al comienzo de la funcion por lo que si alguien necesita otros caracteres sólo tiene que modificarlos ahí o incluso añadirlos como tercer parámetro a la función.

La página en concreto es la siguiente (SEPG, Links de interés) (Lo siento pero no se ve bien en Firefox..)

El resultado es que dos enlaces que antes se veían así:

http://www.canadian-health-network.ca/servlet/Conten
tServer?cid=1038611684536&pagename=CHN-RCS%2FPage%2F
HomePageTemplate&c=Page?=En

http://www.healthnewsdirectory.com/doctordirectory/d
efault.aspx?404;http://www.healthnewsdirectory.com/h
ealthNews/directory/default.asp

Ahora se ven así:

http://www.canadian-health-network.ca/servlet/
ContentServer?cid=1038611684536&
pagename=CHN-RCS%2FPage%2FHomePageTemplate&c=Page&
lang=En

http://www.healthnewsdirectory.com/doctordirectory/
default.aspx?
404;http://www.healthnewsdirectory.com/healthNews/
directory/default.asp

Esta es mi función, seguro que se puede optimizar pero al menos funciona:


function urlWrap($fullUrl,$lineMaxSize)
{
  $chars="&?/";
  $newLine="";
  $newUrl="";
  $lineSize=0;
  $pos=0;
  $maxPos=strlen($fullUrl);

  while($pos < $maxPos)
  {
    $iChar=0;
    $maxChar=strlen($chars);
    $trozo="";

      // Cojo un trozo del tamaño máximo de línea
    $trozotmp=substr($fullUrl,$pos,$lineMaxSize);
      // Doy prioridad a los caracteres según aparecen
    while($iChar < $maxChar)
    {
      $char=substr($chars,$iChar,1);
      $trozo="";

      $posChar=strrpos($trozotmp,$char);
        // Si lo encuentro
      if(!$posChar===False)
      {
        $posChar+=1;
          // Si la posición no excede del máximo de línea, se lo pegamos a la línea actual
        if($lineSize + $posChar < = $lineMaxSize)
        {
          $trozo=substr($fullUrl,$pos,$posChar);
          $newUrl.=$trozo;
          $lineSize+=strlen($trozo);
          $pos+=$posChar;
          $newUrl.=$newLine;
          $lineSize=0;
          break;
        }
      }

        // Sino, probamos con el siguiente caracter separador
      $iChar++;
    }

      // Si no se encontró ninguno de los caracteres en los límites definidos, 'cortamos por lo sano'
    if($trozo =="" && $pos < $maxPos)
    {
      $newUrl.=substr($fullUrl,$pos,$lineMaxSize-$lineSize);
      $newUrl.=$newLine;
      $pos+=$lineMaxSize-$lineSize;
      $lineSize=0;
    }

      // Por último si el trozo que queda es menor que el máximo de línea, lo añadimos directamente
    if($maxPos-$pos <= $lineMaxSize)
    {
      $newUrl.=substr($fullUrl,$pos);
      $newUrl.=$newLine;
      break;
    }

  }

  return $newUrl;
}

La indentación del código la conseguí gracias a: SimpleCode. Eso sí, cada vez que edito la entrada en WordPress, vuelve a perderla..

Si tenéis WordPress alojado en vuestro servidor, podéis usar el siguiente Plug-In: http://wordpress.org/extend/plugins/syntaxhighlighter/ ¿Porqué en WordPress.com no pueden instalarse Plugins??