Entradas

Mostrando entradas de 2009

AJAX con mootools. Envio de formulario

Con las mootools es muy fácil usar ajax sin necesidad de manejar el objeto XmlHttpRequest y complicarse con las compatibilidades de los navegadores. Este ejemplo es el envio de un formulario, tan sencillo como formulario.send(); Ahí va el código: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Insert title here</title> <script type="text/javascript" src="js/mootools/mootools-1.2.1-core-yc.js"></script> <style> /* los colores son muy mejorables */ .formulario { display: block; border: 0.1em solid green; background-color: #777070; color: #ffffff; font-size: 0.7em; } .formulario label {

HTML div organizar contenido

Como todavía me encuentro muchas webs y aplicaciones web con <TABLE><TR><TD> continúo con el tema de usar div en lugar de table. Con el siguiente ejemplo podemos organizar una página web o documento html con divs, centrando el contenido y estableciendo un diseño proporcional, que se adaptaría a cualquier resolución de pantalla y dispositivo. No usamos ningún <table> ni <tr> ni <td> ni .. width="450" height="400" scrolling="auto" frameborder="1" transparency> Ejemplo de página web organizada mediante divs y css Ahora el código html y css <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=U

CSS. HTML. Para todos los dispositivos

Hace poco se cumplieron 20 años de la web, World Wide Web, y Tim Berners-Lee criticaba los dominios .tel y .mobi. No es de extrañar ya que realmente con el mismo contenido html o xhtml podemos crear estilos para los distintos dispositivos o Media types. Echar un vistazo a las guias de las w3c sobre estos Media types El tema es sencillo, si hemos separado bien el contenido de la apariencia, el html del css. Dentro de <html><head> podemos definir hojas de estilo, css, para cada dispositivo cliente que pueda solicitar una url de nuestra web. Se trata de añadir con el valor del atributo media las diferentes hojas de estilo, css, que hayamos generado, mejor que sea el diseñador gráfico si sabe que existe algo más que flash. <!-- para monitores de ordenador, computadora --> <link rel = "stylesheet" type = "text/css" media="screen" href="css/screen/general.css"/> <!-- para imprimir --> <link rel = "stylesheet"

Javascript. MooTools.

Hay muchos frameworks para javascript, yo he apostado por MooTools , aunque Prototype es de los más utlizados. Mootools pesa poco y nos ofrece multitud de objetos y funciones. ¿ Todavía sigues escribiendo todo el javascript ? Eso me pasaba a mí pero con los framework he logrado mejorar mi productividad, lograr código en casi cualquier navegador, desde Firefox, Opera, ... incluso en el IExplorer Nos cuesta adaptarnos a un nuevo API, bueno a cualquier cambio por lo general, pero si querías hacer siempre tu 3 x 4 mejor nos deberíamos haber metido en otra profesión que no fuera la informática... ya que esto no para de cambiar y hay que estarse reciclando y actualizando constantemente. La documentación está bastante bien, cuando te acostumbras a ella. También hay demos de la propia MooTools pero googleando encuentras efectos muy chulos hechos por otra gente: phatfusion.net speckyboy.com tutorialdog.com Dile adios al document.getElementById(..) Voy preparando otra entrada para desarollo

Linux. Ubuntu. Network-Manager Wireless

El Network-Manager en gnome está genial para los que no les gusta la consola, ni el ifup eth0, ifdown eth0. Aunque a los que nos ponemos a tocar el /etc/network/interfaces hacemos que el Network-Manager se pierda un poco. También he detectado que el Ubuntu Desktop Edition instala todo bastante bien, pero los que cacharreamos un poco al final usamos la "alternate installer” o el "Ubuntu Server" para cosas como LVM, RAID o cosillas así y al final el Network-Manager se pierde. Para el tema Wireless WIFI , recomiendo echeis un vistazo a la wiki de ubuntu WirelessTroubleShootingGuide en inglés pero hasta yo lo entiendo. Y si habeis instalado Ubuntu desde el "alternate installer” para el tema wireless debeis instalar compat-wireless (linux-backports-modules) # For Ubuntu 8.10 Intrepid users: sudo apt-get install linux-backports-modules-intrepid # For Ubuntu 9.04 Jaunty users: sudo apt-get install linux-backports-modules-jaunty Ver toda la información en linuxwireless.org

PHP. módulo de un "long". Calcular dígito control de IBAN.

Calculando el DC dígito de control de un número de cuenta IBAN me he encontrado un problema con el módulo o resto. Al manejar un número que sobrepasa el integer, "no se exacta la barrera, pero supongamos que a partir de 2147483647 deja de ser nuestro integer de toda la vida", manual PHP. Enteros y al calcular el modulo de 97 de ese número long perdía la precisión y devolvía un resto incorrecto. Hay varias soluciones a esta situación, yo opté por usar bcmod function bcmod ya que en PHP hay funciones para casi todo y sino en www.phpclasses.org podremos encontrar alguna clase que nos facilite el desarrollo. Supongo que también se debe a la "anarquía" de PHP que no obliga a declarar el tipo de dato de la variable, aunque cada vez empiezo a encontrar más código en el que se hacen casting a las variables. En el mundo java un int es un int, un String es un String y un long es un long y todo el día haciendo casting pero siempre tienes claro que hay en una variable. $foo

Linux. Mac Address

Es bastante sencillo saber cual es nuestra Mac Address. user@localhost:~$ ifconfig eth1 Link encap:Ethernet direcciónHW 00:18:e4:17:46:b3 inet dirección:192.168.1.48 Difusión:192.168.1.255 Máscara:255.255.255.0 dirección inet6: fe80::218:e8ff:fe17:43b3/64 Alcance:Vínculo ARRIBA DIFUSIÓN CORRIENDO MULTICAST MTU:1500 Métrica:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:4674 errors:0 dropped:0 overruns:0 carrier:0 colisiones:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:284122 (277.4 KB) Interrupción:19 Dirección base: 0xcc00 lo Link encap:Bucle local inet dirección:127.0.0.1 Máscara:255.0.0.0 dirección inet6: ::1/128 Alcance:Anfitrión ARRIBA LOOPBACK CORRIENDO MTU:16436 Métrica:1 RX packets:42737 errors:0 dropped:0 overruns:0 frame:0 TX packets:42737 errors:0 dropped:0 overruns:0 carrier:0 colisiones:0 txqueu

PHP. JAVA. Sobreescritura de método o función

Hace poco tiempo me di cuenta que llevaba sobreescribiendo los métodos en php sin darme cuenta, aunque lo llevo llamando desde hace años parametros opcionales, pero al final conseguimos lo mismo. No se si con este ejemplo he logrado explicar el tema: <?php public function ladrar( $_ladrido ) { //$_ladrido = "guau guau guau"; print($_ladrido); return; } public function ladrar( $_ladrido, $_fuerte=false ) { if ($_fuerte==true) $_ladrido = strtoupper($_ladrido); print($_ladrido); return; } // Con esta función nos bataría para todo public function ladrar( $_ladrido , $_fuerte=false , $_saltar=false ) { if ($_fuerte==true) $_ladrido = strtoupper($_ladrido); if ($_saltar==true) saltar(); print($_ladrido); return; } ?> /*** java ***/ public void ladrar( String _ladrido ) { //String _ladrido = "guau guau guau"; System.out.print(_ladrido); return; } public void ladrar( Strin

PHP. Prepare statement. Dao

Desde hace tiempo estoy implementando en PHP las sentencias SQL al estilo java, PreparedStatement, con mysqli. Así evitamos cualquier inyección de código y trabajamos contra la base de datos como les gusta a los Dba, mediante Bind. Esto sería parte de un objeto Dao implementación Mysql, fundamental el bean para trabajar con objetos y dar de una vez el salto a la programación POO. public function buscarPorTitulo( $_titulo ) { $Noticia_ = new Noticia(); $Noticias_array = array(); $sql = "SELECT ID_NOTICIA, TITULO, FECHA, CSS_STYLE, RUTA_FICHERO_HTML "; $sql .= "FROM NOTICIAS "; $sql .= "WHERE TITULO LIKE ? "; if ($stmt = $this->mysqli->prepare($sql)) { $stmt->bind_param("s", $_titulo); /* Character Description i corresponding variable has type integer d corresponding variable has type double s corresponding variable has type string b corresponding variable is a blob and will be sent