Entradas

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 ...

LINUX. buscar ficheros

Hay varios comandos que desde consola nos ayudan a buscar ficheros: locate busca rápidamente, ya que no va leyendo el disco, sino que mira en un indice que tiene en una base de datos: man locate # Por ejemplo para buscar donde está el server.xml del tomcat [user@locahost ~]$ locate server.xml /usr/local/apache-tomcat-5.5.26/conf/server.xml find es el comando para buscar, este si que va leyendo el disco. CUIDADO que es recursivo, por ello es mejor indicarle la ruta donde empezar a buscar. # Por ejemplo para buscar los java compilados [user@locahost ~]$ find programas/ -name *class Lo mejor es juntar el comando find con el comando grep ó egrep o fgrep y así buscamos dentro del contenido del los ficheros # Buscamos los ficheros con extensión java que tengan el texto jdbc:mysql [user@locahost ~]$ find programas/ -type f -name *.java -print | xargs egrep -i "jdbc:mysql" Un mini-how to sobre comandos para buscar en linux lo teneis en espaciolinux.com Ahora estoy intentando buscar t...

JAVASCRIPT. trim()

Con expresiones regulares es muy fácil hacer un trim con javascript: cadena=cadena.replace(/^[\s]*[\s]$/, "");

JAVA. Iterator. List, Set, Map

// la solución correcta List list = new ArrayList(); Set set = new HashSet(); Map map = new TreeMap(); // la solución incorrecta ArrayList list = new ArrayList(); HashSet set = new HashSet(); TreeMap map = new TreeMap();