Febrero 20th, 2010

Validar ccc con PHP

Identificación de una cuenta corriente o libreta de ahorros
En España las cuentas corrientes y las libretas de ahorros tienen una identidad única que se compone de 20 dígitos, el denominado Código Cuenta Cliente. Este código identifica a la entidad bancaria, sucursal y cuenta de forma única de tal modo que actúa como dirección de la cuenta para la realización de cualquier operación financiera.

Esquema del código de identificación de una cuenta bancaria

esquema ccc

Proceso de cálculo de los dígitos de control
a) Dígito de control de la entidad y sucursal

Posicion Factor Datos Operación Resultado
Unidad: 6 8 6x8 48
Decena: 3 3 3x3 9
Centena: 7 3 7x3 21
Unidad de millar: 9 0 9x0 0
Decena de millar: 10 7 10x7 70
Centena de millar: 5 7 5x7 35
Unidad de millón: 8 0 8x0 0
Decena de millón: 4 2 4x2 8
Suma 191

Cálculos:

191/11 = 17; Resto = 191-(17x11) = 4; Dígito = 11-4 = 7

- Si el resultado es 11, el dígito buscado es 0

- Si el resultado es 10, el dígito buscado es 1

b) Dígito de control de la cuenta

Posicion Factor Datos Operación Resultado
Unidad: 6 1 6x1 6
Decena: 3 2 3x2 6
Centena: 7 3 7x3 21
Unidad de millar: 9 4 9x4 36
Decena de millar: 10 5 10x5 50
Centena de millar: 5 2 5x2 10
Unidad de millón: 8 0 8x0 0
Decena de millón: 4 0 4x0 0
Centena de millón: 2 1 2x1 2
Unidad de millar de millón: 1 3 1x3 3
Suma 134

Cálculos:

134/11 = 12; Resto = 191-(12x11) = 2; Dígito = 11-2 = 9

- Si el resultado es 11, el dígito buscado es 0

- Si el resultado es 10, el dígito buscado es 1
A continuación, implementaremos el algoritmo en php

PHP:
  1. function ccc_valido($ccc)
  2. {
  3.  
  4. //$ccc sería el 20770338793100254321
  5. $valido = true;
  6.  
  7. ///////////////////////////////////////////////////
  8. //    Dígito de control de la entidad y sucursal:
  9. //Se multiplica cada dígito por su factor de peso
  10. ///////////////////////////////////////////////////
  11. $suma = 0;
  12. $suma += $ccc[0] * 4;
  13. $suma += $ccc[1] * 8;
  14. $suma += $ccc[2] * 5;
  15. $suma += $ccc[3] * 10;
  16. $suma += $ccc[4] * 9;
  17. $suma += $ccc[5] * 7;
  18. $suma += $ccc[6] * 3;
  19. $suma += $ccc[7] * 6;
  20.  
  21. $division = floor($suma/11);
  22. $resto    = $suma - ($division  * 11);
  23. $primer_digito_control = 11 - $resto;
  24. if($primer_digito_control == 11)
  25. $primer_digito_control = 0;
  26.  
  27. if($primer_digito_control == 10)
  28. $primer_digito_control = 1;
  29.  
  30. if($primer_digito_control != $ccc[8])
  31. $valido = false;
  32.  
  33. ///////////////////////////////////////////////////
  34. //            Dígito de control de la cuenta:
  35. ///////////////////////////////////////////////////
  36. $suma = 0;
  37. $suma += $ccc[10] * 1;
  38. $suma += $ccc[11] * 2;
  39. $suma += $ccc[12] * 4;
  40. $suma += $ccc[13] * 8;
  41. $suma += $ccc[14] * 5;
  42. $suma += $ccc[15] * 10;
  43. $suma += $ccc[16] * 9;
  44. $suma += $ccc[17] * 7;
  45. $suma += $ccc[18] * 3;
  46. $suma += $ccc[19] * 6;
  47.  
  48. $division = floor($suma/11);
  49. $resto = $suma-($division  * 11);
  50. $segundo_digito_control = 11- $resto;
  51.  
  52. if($segundo_digito_control == 11)
  53. $segundo_digito_control = 0;
  54. if($segundo_digito_control == 10)
  55. $segundo_digito_control = 1;
  56.  
  57. if($segundo_digito_control != $ccc[9])
  58. $valido = false;
  59.  
  60. return $valido;
  61.  
  62. }

Diciembre 30th, 2009

Homer Simpson en Css

o
o
o
o
(
O
O
O
\
L
(
O
O
O
O
O
\
L
(
O
|
|
\
\
|
|
\
\
\
\
(
(
8
o
o
o
(
(
8
o
o
o
o
)
)
b
o
O
o
o
o
o
o
o
)
b
o
O
o
o
o
o
o
o
o
o
o
/
/
/
_
_
_
C
C
O
(
-

Visto en Roman Cortes

Diciembre 30th, 2009

Como matar un proceso si conocemos el nombre

¿Como podríamos matar un proceso, si conocemos el nombre de este?, si suponemos que nuestro proceso es bash.

kill $(pgrep bash)
killall -v bash
pkill bash
kill 'ps -ef | grep bash | grep -v grep | awk '{print $2}''
ps -ef | grep bash | grep -v grep | xargs kill
killall bash

Esto es útil cuando no se conoce el nombre del proceso

Diciembre 30th, 2009

Reproducir un video sin descomprimir

Con este simple codigo ejecutado desde nuestra consola, podremos reproducir en linux un video que se encuentra dentro de un archivo comprimido:
unrar p -inul /path/to/movie_folder/movie.name.r00 | vlc -

Octubre 18th, 2009

Tabla de caracteres ANSI

Cuando escribimos en el ordenador, este no "interpreta letras", sino los códigos numéricos que representan a estas, esto es lo que se conoce como juego de caracteres, en este post, veremos un popular juego de caracteres ANSI (American National Standards Institute), que asigna letras y números.

La tabla es bastante útil cuando tienes que poner algún determinado código que no aparece en el teclado.

chr(33) = ! chr(34) = “ chr(35) = # chr(36) = $ chr(37) = % chr(38) = &
chr(39) = ‘ chr(40) = ( chr(41) = ) chr(42) = * chr(43) = + chr(44) = ,
chr(45) = - chr(46) = . chr(47) = / chr(48) = 0 chr(49) = 1 chr(50) = 2
chr(51) = 3 chr(52) = 4 chr(53) = 5 chr(54) = 6 chr(55) = 7 chr(56) = 8
chr(57) = 9 chr(58) = : chr(59) = ; chr(60) = < chr(61) = = chr(62) = >
chr(63) = ? chr(64) = @ chr(65) = A chr(66) = B chr(67) = C chr(68) = D
chr(69) = E chr(70) = F chr(71) = G chr(72) = H chr(73) = I chr(74) = J
chr(75) = K chr(76) = L chr(77) = M chr(78) = N chr(79) = O chr(80) = P
chr(81) = Q chr(82) = R chr(83) = S chr(84) = T chr(85) = U chr(86) = V
chr(87) = W chr(88) = X chr(89) = Y chr(90) = Z chr(91) = [ chr(92) = \
chr(93) = ] chr(94) = ^ chr(95) = _ chr(96) = ` chr(97) = a chr(98) = b
chr(99) = c chr(100) = d chr(101) = e chr(102) = f chr(103) = g chr(104) = h
chr(105) = i chr(106) = j chr(107) = k chr(108) = l chr(109) = m chr(110) = n
chr(111) = o chr(112) = p chr(113) = q chr(114) = r chr(115) = s chr(116) = t
chr(117) = u chr(118) = v chr(119) = w chr(120) = x chr(121) = y chr(122) = z
chr(123) = { chr(124) = | chr(125) = } chr(126) = ~ chr(127) =  chr(128) = €
chr(129) = chr(130) = ‚ chr(131) = ƒ chr(132) = „ chr(133) = … chr(134) = †
chr(135) = ‡ chr(136) = ˆ chr(137) = ‰ chr(138) = Š chr(139) = ‹ chr(140) = Œ
chr(141) =  chr(142) = Ž chr(143) =  chr(144) =  chr(145) = ‘ chr(146) = ’
chr(147) = “ chr(148) = ” chr(149) = • chr(150) = – chr(151) = — chr(152) = ˜
chr(153) = ™ chr(154) = š chr(155) = › chr(156) = œ chr(157) =  chr(158) = ž
chr(159) = Ÿ chr(160) = chr(161) = ¡ chr(162) = ¢ chr(163) = £ chr(164) = ¤
chr(165) = ¥ chr(166) = ¦ chr(167) = § chr(168) = ¨ chr(169) = © chr(170) = ª
chr(171) = « chr(172) = ¬ chr(173) = ­­ chr(174) = ® chr(175) = ¯ chr(176) = °
chr(177) = ± chr(178) = ² chr(179) = ³ chr(180) = ´ chr(181) = µ chr(182) = ¶
chr(183) = · chr(184) = ¸ chr(185) = ¹ chr(186) = º chr(187) = » chr(188) = ¼
chr(189) = ½ chr(190) = ¾ chr(191) = ¿ chr(192) = À chr(193) = Á chr(194) = Â
chr(195) = Ã chr(196) = Ä chr(197) = Å chr(198) = Æ chr(199) = Ç chr(200) = È
chr(201) = É chr(202) = Ê chr(203) = Ë chr(204) = Ì chr(205) = Í chr(206) = Î
chr(207) = Ï chr(208) = Ð chr(209) = Ñ chr(210) = Ò chr(211) = Ó chr(212) = Ô
chr(213) = Õ chr(214) = Ö chr(215) = × chr(216) = Ø chr(217) = Ù chr(218) = Ú
chr(219) = Û chr(220) = Ü chr(221) = Ý chr(222) = Þ chr(223) = ß chr(224) = à
chr(225) = á chr(226) = â chr(227) = ã chr(228) = ä chr(229) = å chr(230) = æ
chr(231) = ç chr(232) = è chr(233) = é chr(234) = ê chr(235) = ë chr(236) = ì
chr(237) = í chr(238) = î chr(239) = ï chr(240) = ð chr(241) = ñ chr(242) = ò
chr(243) = ó chr(244) = ô chr(245) = õ chr(246) = ö chr(247) = ÷ chr(248) = ø
chr(249) = ù chr(250) = ú chr(251) = û chr(252) = ü chr(253) = ý chr(254) = þ

Espero que sirvan de ayuda

Octubre 6th, 2009

El tag video en html 5

Entre los nuevos atributos de html 5, hay algunos muy importantes como los , , etc.. Pero sin duda, la estrella de este nuevo estándar, es el tag . Este tag, podrá revolucionar el mundo multimedia muy pronto. No obstante, hasta Youtube tiene una versión preparada para desprenderse del flash.

Hasta ahora

El método de visualizar un video web actualmente, es similar a la que muestro en el siguiente código. Mediante el elemento </object>

Con html 5

Con HTML5, además de poder dejar más claro que este contenido es un archivo de formato video, nos permite informar de una alternativa a los usuarios que no posean un navegador compatible o incluso insertando el <object>

<video src="mirutaalvideo" >formatos alternativos</video>
Si tu navegador acepta html 5, veras el reproductor

Conclusiones

Es un avance, pero parece haber problemas con el que será el códec estándar, parece que finalmente no habrá un códec estándar y cada navegador usara el suyo. Actualmente en firefox, hay que subir videos .ogg, y en webkit .mp4. IE no se ha pronunciado aún.