Tip: Solución al Max(id) de MySQL en CakePhp

Posted on : 06-02-2010 | By : admin | In : Open Source, Web

En determinadas ocasiones se requiere el ultimo id que se tiene en una base de datos en MySQL. La forma más práctica de hacer esto es usar la instrucción:

   1: SELECT MAX(id) as MaxId FROM Table

Ahora bien lograr esta instrucción en cakephp tiene su truco, algo que podemos hacer es usar la propiedad “query” de objeto model, pero el resultado es un poco difícil de acceder pues arroja un arreglo de 3 dimensiones. Lo mas sencillo, es usar las prestaciones de Cakephp y el modelo de acceso a la base de datos que maneja, de esta manera existe la propiedad find (‘first’) que permitirá arrojar un solo resultado, con la combinación de unos parámetros para el orden de los datos lograremos encontrar el ultimo id:

   1: $MaxId = $this->Model->find('first', array('order'=>'Model.id DESC'));

   2: $this->set('maxid', $MaxId['Model']['id']);

Lo anterior lo coloque dentro de un controlador.

Listo!

Manejando palabras acentuadas en PHP y Javascript

Posted on : 06-02-2010 | By : admin | In : Open Source, Web

Antes de comenzar con el aspecto de la programación, una regla sobre gramática: las mayúsculas siempre, siempre, siempre se acentúan.

Dicho lo anterior, me tope con el caso en php que tenia una lista de opciones basadas en un select que no me mostraba los acentos correctamente. MySQL y php por omisión usan utf-8, por lo que es buena practica poner nuestro html en utf-8:

   1: <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Ahora bien, Javascript no utiliza por omisión utf-8, asi que cuando coloque un texto mediante document.write, la pantalla desplego el texto acentuado como un carácter especial de html (html entity):

   1: function changecities( formObj )
   2:  {
   3:    statesObj = eval( "formObj.states" );
   4:  
   5:    state = statesObj[statesObj.selectedIndex].value;
   6:    citiesObj = eval( "formObj.elements['cities']" );
   7:  
   8:    // remove all entries
   9:    citiesNum = citiesObj.length;
  10:    for (i=(citiesNum-1); i >= 0; i--)
  11:    {
  12:      citiesObj.options[i] = null;
  13:    }
  14:    // add entries based on area selected
  15:    switch (state){
  16: case "3":
  17:    citiesObj.options[0] = new Option("Comondú",17);
  18:    citiesObj.options[1] = new Option("La Paz",18);
  19:    citiesObj.options[2] = new Option("Loreto",19);
  20:    citiesObj.options[3] = new Option("Los Cabos",20);
  21:    citiesObj.options[4] = new Option("Mulegé",21);
  22:    citiesObj.options[0].selected = true;
  23:    break;
  24:  
  25:     }
  26: }...

image

Php tiene una instrucción para transformar esto caracteres, de su valor al carácter que queremos:

   1: <?php html_entity_decode(“&#250”); ?>

Debe dar como resultado “ú”

image

Pero como vemos en la imagen, el select no se despliega correctamente pues en realidad la instrucción html_entity_decode da como resultado un conjunto de caracteres “ISO-8859-1”, así que podemos optar por hacer una de dos cosas:

  1. Usar utf8_encode:

       1: <?php utf8_encode(html_entity_decode(“&#250”)); ?>

  2. Cambiar la opción del conjunto de caracteres en la instrucción html_entity_decode(string,quotestyle,character-set):
  3.    1: <?php html_entity_decode("&250;",ENT_COMPAT,"UTF-8") ?>

El despliegue es:

image

Listo!

Cambiar el tamaño de un archivo vdi de VirtualBox

Posted on : 06-02-2010 | By : admin | In : Open Source, Web

No me gusta colocar tutoriales que se ubican en otro sitio web, pero en este caso, además de que el tutorial resolvió el problema que tenia con el tamaño inicial del disco de windows xp en virtualbox, es tan claro de seguir que no tuve problemas con llevar el cambio de tamaño del disco duro virtual de la partición.

http://www.my-guides.net/en/content/view/122/26/

Si a alguien le interesa de todos modos una traduccion, solo avisar.

Listo!

Dónde esta el folder de patrones en Fireworks CS3?

Posted on : 06-02-2010 | By : admin | In : Open Source, Web

En ocasiones me pongo a realizar maquetas de algun sitio web en Fireworks, aun cuando trato de usar Photoshop, lo cierto es que FW es bastante ligero y no me da lata sobretodo para la maquetacion.  Estoy trabajando en él para un sitio y se me ocurrio casi terminar el diseño del sitio.

Pero al momento de comenzar con la creacion de los archivos de CSS para la parte grafica me tope que no sabia cual era el tamaño de los patrones que habia colocado como relleno en algunos de los fondos, lo anterior es importante para optimizar el tamaño de las imagenes.

Asi que como me pase un ratito en la busqueda, pongo el folder exacto que se usa en WIndows Vista:

C:\Program Files\Adobe\Adobe Fireworks CS3\Configuration\Textures

Listo!

Donde desea publicar su sitio web?

Posted on : 06-02-2010 | By : admin | In : Open Source, Web

Aqui dejo un extraño error que me tope con Visual Studio 2005 a la hora de publicar un sitio web. Primero un poco de antecedentes, generalmente publico los sitios web a niver raiz del servidor, es asi,  que siempre modifico las preferencias de publicacion del proyecto en el cual estoy trabajando y elimino la carpeta virtual que coloca por defecto visual studio:

 

20080917z

De esta manera siempre que pruebo un sitio solo tengo que colocar el url http://localhost, en ocasiones coloco un puerto especifico para el servidor de desarrollo y el de publicacion se queda con el estandar 80.

Esto siempre me ha resultado. El detalle fue que en esta ocasion el servidor de publicacion debe llevar una carpeta virtual.

Para empezar la talacha de apuntar a una carpeta virtual en el codigo, particularmente para los archivos de javascript y de estilos. Y realizar cambios no esperados. En fin que regrese la configuracion a la anterior:

20080917c

Con lo anterior pude seguir trabajando sin problemas para hacer depuracion del sitio. Una vez que habia terminado se me ocurrio publica la aplicacion al servidor local:

 

20080917b

¿Donde deseo publicar? en localhost por supuesto. Le di “publish” y:

 

20080917a

Que, ¿Que?. Como que no puedo publicar mi sitio de forma local.

Si analizamos el mensaje, me esta diciendo que debo publicar en un sitio diferente al de la aplicacion web, pero lo cierto es que en ningun momento coloque que localhost es donde se encuentra mi aplicacion web, es mas en realidad, siendo estricto se encuentra en una carpeta llamada d:\dev.

Por otra parte cuando se depura la aplicacion y se lanza el servidor de pruebas de visual studio, en ningun momento se coloca localhost, solo se coloca la carpeta virtual y a lo mas un puerto , que en mi caso era diferente al 80.

Sin embargo, al parecer se guarda algun registro en algun lugar y se conserva localhost, donde se guarda el registro, no lo investigue, la verdad es que me apuraba, poder publicar el sitio para demostrarlo.

Una busqueda rapida por Google, mencionaban que ese error se debia colocar a que yo estaba colocando el sitio en el mismo url, que lo cambiara por el de un sitio remoto, gran ayuda. Le di vueltas al asunto, y se me ocurrio prender la paloma de IIS Server como servidor de publicacion y colocar cualquier cosa que no fuera localhost:

 

20080917d

Cambie de nuevo la opcion de usar Visual Studio Dev Server para seguir trabajando como normalmente lo hago,:

 

20080917e

Como pueden apreciar el servidor de IIS no lo estoy utilizando, pero sin embargo si parece haber sido cambiado el parametro en algun lugar.

Vuelvo a intentar publicar:

 

20080917b

Y esta vez sin errores!

Listo!