Descargar videos de youtube en formato mp4
Escrito el June 14, 2008
Guardado desarrollo web, php | 2 Comentarios
El otro dia un amigo me paso una sencilla receta para descargar videos de youtube en formato mp4, arme una pequeña página para que a ustedes les sea aun más sencillo, otro día les explico como hacerlo.
enlace : http://inmo.com.ar/youtube.php
Paginado en Oracle con rownum
Escrito el May 13, 2008
Guardado desarrollo web, oracle | deje su comentario
En Oracle no tenemos un limit como en MySQL, pero podemos simularlo usando el rownum y subQuerys.
Por lo general hacemos querys a las cuales le pedimos una maxima cantidad con un:
1 | WHERE rownum <= 10 |
donde 10 es la cantidad que queremos limitar, esto traerá los primeros 10 resultados.
Pero que pasa si queremos que nos devuelva 10 resultados apartir de la posicion 30?
Despues de un rato largo de leer asktom.oracle.com (sitio de referencia indiscutida si de oracle se trata), esta es la solucion):
1 2 3 4 5 6 7 | SELECT * FROM (SELECT rownum rnum, a.* FROM(mi_query) a WHERE rownum <= :m) WHERE rnum >= :n; |
donde :n es la posicion inicial y :m es la cantidad.
Lo mejor de todo es que es muy sencillo.
Perseverancia - requiere esfuerzo constante
Escrito el May 8, 2008
Guardado miscelaneas | deje su comentario
“El elemento esencial para aprender a perseverar es el esfuerzo constante. En nuestra carrera por la vida eterna todos debemos sufrir y vencer obstáculos. Quizá pasaremos por angustias, aflicciones, la muerte, el pecado, las debilidades, los desastres, las enfermedades, dolor, angustias mentales, crítica injusta, soledad o rechazo.
La manera en que los afrontemos determinará si se convertirán en escalones ascendentes o en piedras en nuestro camino. Al valiente, estos obstáculos le hacen posible el progreso.”
(Élder Marvin J. Ashton, Liahona octubre 1984, pág. 17)
Calculando la edad
Escrito el May 6, 2008
Guardado oracle | deje su comentario
Para calcular la edad con sintaxis Oracle (no se cuan ANSI será),
desde el SELECT:
1 2 3 4 5 | SELECT nombre, apellido, TO_NUMBER(TO_CHAR(MONTHS_BETWEEN(SYSDATE,FechaNacimiento)/12,'99')) AS edad FROM personas ORDER BY edad DESC; |
En el WHERE:
1 2 3 | SELECT * FROM personas WHERE MONTHS_BETWEEN(SYSDATE,fnacimiento)/12 >= 20 |
Calcular días hábiles con PHP
Escrito el April 5, 2008
Guardado desarrollo web, php | deje su comentario
Muchas veces es necesario calcular que día cae si dentro de 3 días, esto es simple, pero realmente se complica a la hora de calcularlo con días hábiles.
Acá comparto una función que generé para tal fin, los comentarios estan en la misma (como corresponde)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | /** * Calcula los dias habiles partiendo desde una fecha * *@param integer $cant *@param date $desde *@return date **/ function calcularDiasHabiles($cant,$desde){ //separo la fecha en dia mes y año $dia = date('d',strtotime($desde)); $mes = date('m',strtotime($desde)); $ano = date('y',strtotime($desde)); //calculo el timestamp de la fechainicial ($desde) $mkDesde = mktime(0,0,0,$mes,$dia,$ano); //calculo el timestamp de la fechainicial ($desde) + los dias que tiene que correrse $mkResult = mktime(0,0,0,$mes,$dia+$cant,$ano); //realizo la correccion correspondiente por el fin de semana switch (date('N',$mkResult)) { case 1: //Lunes $mkResult +=(vta_ventasmanager_preactiva::MKDia*2);//le agrego 2 dias break; case 2: //Martes $mkResult +=(vta_ventasmanager_preactiva::MKDia);//le agrego 1 dia break; case 3: //Miercoles case 4: //Jueves case 5: //Viernes break; case 6: //Sabado $mkResult +=(vta_ventasmanager_preactiva::MKDia*2);//le agrego 2 dias break; case 7: //Domingo $mkResult +=(vta_ventasmanager_preactiva::MKDia*2);//le agrego 2 dia break; } //Arreglo con los feriados de Argentina Ver http://www.mininterior.gov.ar/servicios/feriados2008.asp $feriados = array( '01-01-2008', // Año Nuevo '24-03-2008', // Día Nacional de la Memoria por la Verdad y la Justicia '21-03-2008', // Viernes Santo Festividad Cristiana '02-04-2008', // Día del Veterano y de los Caídos en la Guerra de Malvinas (ley 26.110) '01-05-2008', // Día del Trabajador '25-05-2008', // Primer Gobierno Patrio '16-06-2008', // Paso a la Inmortalidad del General Manuel Belgrano '09-07-2008', // Día de la Independencia '18-08-2008', // Paso a la Inmortalidad del General José de San Martín '12-10-2008', // Día de la Raza '08-12-2008', // Inmaculada Concepción de María '25-12-2008', // Navidad ); //convierto las fechas en timestap para poder compararlos $mkFeriados = array_map('strtotime',$feriados); //recorro los feriados para ver si mis fechas coinciden con alguno y si lo es hago la correccion necesaria foreach ($mkFeriados as $mkFecha){ if(($mkDesde <= $mkFecha) and ($mkResult >= $mkFecha)){ $mkResult +=(vta_ventasmanager_preactiva::MKDia);//le agrego 1 dia } } //devuelvo el resultado en el formato deseado //$resultado = strftime('%A %e %B %Y',$mkResult); $resultado = date('Y-m-d',$mkResult); return $resultado; } |
espero que sirva!, cualquier duda o comentario no dejen de hacerlo
Cómo correr múltiples GTalk
Escrito el February 26, 2008
Guardado miscelaneas | deje su comentario
1. Haga clic derecho sobre el escritorio
2. Seleccione Nuevo
3. Seleccione Acceso directo
4. Copie esto en el cuadro de texto (incluyendo las comillas y suponiendo que esta instalado en el disco C):
“C:\Archivos de programa\Google\Google Talk\googletalk.exe” / nomutex
5. Haga clic en Siguiente y elija un nombre abreviado como Google Talk 1, Google Talk2, o algo fácil de recordar, que es lo que cuenta.
6. Haga clic en finalizar y ya está.
7. Si quieres acceder a tu cuenta de gmail secundaria, haz doble clic en él e introduce tus datos
Actitud - Ejerce control sobre los resultados que obtenemos.
Escrito el February 26, 2008
Guardado miscelaneas | deje su comentario
“La disposición con que comenzamos cada día ejerce control sobre los resultados que se obtengan en el mismo. En lugar de preocuparnos con lo que nos sucede, debemos concentrar más nuestro interés en la actitud que hemos de tomar frente a lo que suceda. Conservar una buena disposición hacia nosotros mismos es un empeño eterno. Una actitud personal positiva nos brindará la seguridad de que rendiremos lo mejor que podamos aun cuando en el momento pudiese parecer adecuado que rindiéramos menos. La actitud apropiada exige que seamos realistas, incluso rígidos con nosotros mismos, que ejerzamos la autodisciplina.”
(”¿Cuál va perdiendo?”, Élder Marvin J. Ashton, Conferencia General octubre 1974)
IE7 Content-Disposition issue
Escrito el February 19, 2008
Guardado desarrollo web, php | deje su comentario
Para descargar un archivo en IE7 cuando hago clic en un botón de una página y se abre una nueva ventana del navegador
y si la respuesta en la nueva ventana tiene la cabecera Luego, el archivo no es descargado.
Tenia el siguiente problema, en IE7, al hacer click en un boton de una página llamaba a un php que realizaba un proceso complejo
y devuelve un zip autogenerado, el tema es que ese archivo yo lo devolvia con el encabezado “Content-Disposition: attachment; filename=zipfile.zip”.
El tema es que se abria la ventana corria el proceso pero nunca preguntaba si querias guardar el archivo y finalmente se cerraba la ventana sin lograr el objetivo.
Realmente me rompio la cabeza por mucho tiempo, la documentacion de Microsoft al respecto es nula, finalmente en la prueba 1.289.078 la pegue.
La solucion:
cuando termino de generar el zip imprimo frame invisible que llame al archivo y ahí si lo reconoce
1 | echo '<iframe src="'.$zip_filename.'" frameborder="0">'; |
Codigos de rebotes RFC822 (Bounces Mails Codes)
Escrito el January 24, 2008
Guardado desarrollo web | deje su comentario
Esta tabla contiene los codigos de rebote (bounce) su nivel (hard o soft) y su descripcion segun la RFC822 y principalmente la coloco porque me costo muchisimo conseguirla,
los que estan (estamos) con el problema de manejar los rebotes de los mails (bounce mails) sabrán a lo que me refiero y para que sirve esta tablita.
| 5.1.0 | Hard Bounce | Other address status |
| 5.1.1 | Hard Bounce | Bad destination mailbox address |
| 5.1.2 | Hard Bounce | Bad destination system address |
| 5.1.3 | Hard Bounce | Bad destination mailbox address syntax |
| 5.1.4 | Hard Bounce | Destination mailbox address ambiguous |
| 5.1.5 | Hard Bounce | Destination mailbox address valid |
| 5.1.6 | Hard Bounce | Mailbox has moved |
| 5.1.7 | Hard Bounce | Bad sender’s mailbox address syntax |
| 5.1.8 | Hard Bounce | Bad sender’s system address |
| 5.2.0 | Hard Bounce | Other or undefined mailbox status |
| 5.2.1 | Soft Bounce | Mailbox disabled, not accepting messages |
| 5.2.2 | Soft Bounce | Mailbox full |
| 5.2.3 | Hard Bounce | Message length exceeds administrative limit. |
| 5.2.4 | Hard Bounce | Mailing list expansion problem |
| 5.3.0 | Hard Bounce | Other or undefined mail system status |
| 5.3.1 | Soft Bounce | Mail system full |
| 5.3.2 | Hard Bounce | System not accepting network messages |
| 5.3.3 | Hard Bounce | System not capable of selected features |
| 5.3.4 | Hard Bounce | Message too big for system |
| 5.4.0 | Hard Bounce | Other or undefined network or routing status |
| 5.4.1 | Hard Bounce | No answer from host |
| 5.4.2 | Hard Bounce | Bad connection |
| 5.4.3 | Hard Bounce | Routing server failure |
| 5.4.4 | Hard Bounce | Unable to route |
| 5.4.5 | Soft Bounce | Network congestion |
| 5.4.6 | Hard Bounce | Routing loop detected |
| 5.4.7 | Hard Bounce | Delivery time expired |
| 5.5.0 | Hard Bounce | Other or undefined protocol status |
| 5.5.1 | Hard Bounce | Invalid command |
| 5.5.2 | Hard Bounce | Syntax error |
| 5.5.3 | Soft Bounce | Too many recipients |
| 5.5.4 | Hard Bounce | Invalid command arguments |
| 5.5.5 | Hard Bounce | Wrong protocol version |
| 5.6.0 | Hard Bounce | Other or undefined media error |
| 5.6.1 | Hard Bounce | Media not supported |
| 5.6.2 | Hard Bounce | Conversion required and prohibited |
| 5.6.3 | Hard Bounce | Conversion required but not supported |
| 5.6.4 | Hard Bounce | Conversion with loss performed |
| 5.6.5 | Hard Bounce | Conversion failed |
| 5.7.0 | Hard Bounce | Other or undefined security status |
| 5.7.1 | Hard Bounce | Delivery not authorized, message refused |
| 5.7.2 | Hard Bounce | Mailing list expansion prohibited |
| 5.7.3 | Hard Bounce | Security conversion required but not possible |
| 5.7.4 | Hard Bounce | Security features not supported |
| 5.7.5 | Hard Bounce | Cryptographic failure |
| 5.7.6 | Hard Bounce | Cryptographic algorithm not supported |
| 5.7.7 | Hard Bounce | Message integrity failure |
| 5.0.0 | Hard Bounce | Address does not exist |
| 5.3.5 | Hard Bounce | System incorrectly configured |
| 4.0.0 | Soft Bounce | Other undefined Status |
| 4.1.0 | Soft Bounce | Other address status |
| 4.1.1 | Soft Bounce | Bad destination mailbox address |
| 4.1.2 | Soft Bounce | Bad destination system address |
| 4.1.3 | Soft Bounce | Bad destination mailbox address syntax |
| 4.1.4 | Soft Bounce | Destination mailbox address ambiguous |
| 4.1.5 | Soft Bounce | Destination address valid |
| 4.1.6 | Soft Bounce | Destination mailbox has moved, No forwarding address |
| 4.1.7 | Soft Bounce | Bad sender’s mailbox address syntax |
| 4.1.8 | Soft Bounce | Bad sender’s system address |
| 4.2.0 | Soft Bounce | Other or undefined mailbox status |
| 4.2.1 | Soft Bounce | Mailbox disabled, not accepting messages |
| 4.2.2 | Soft Bounce | Mailbox full |
| 4.2.3 | Soft Bounce | Message length exceeds administrative limit |
| 4.2.4 | Soft Bounce | Mailing list expansion problem |
| 4.3.0 | Soft Bounce | Other or undefined mail system status |
| 4.3.1 | Soft Bounce | Mail system full |
| 4.3.2 | Soft Bounce | System not accepting network messages |
| 4.3.3 | Soft Bounce | System not capable of selected features |
| 4.3.4 | Soft Bounce | Message too big for system |
| 4.3.5 | Soft Bounce | System incorrectly configured |
| 4.4.0 | Soft Bounce | Other or undefined network or routing status |
| 4.4.1 | Soft Bounce | No answer from host |
| 4.4.2 | Soft Bounce | Bad connection |
| 4.4.3 | Soft Bounce | Directory server failure |
| 4.4.4 | Soft Bounce | Unable to route |
| 4.4.5 | Soft Bounce | Mail system congestion |
| 4.4.6 | Soft Bounce | Routing loop detected |
| 4.4.7 | Soft Bounce | Delivery time expired |
| 4.5.0 | Soft Bounce | Other or undefined protocol status |
| 4.5.1 | Soft Bounce | Invalid command |
| 4.5.2 | Soft Bounce | Syntax error |
| 4.5.3 | Soft Bounce | Too many recipients |
| 4.5.4 | Soft Bounce | Invalid command arguments |
| 4.5.5 | Soft Bounce | Wrong protocol version |
| 4.6.0 | Soft Bounce | Other or undefined media error |
| 4.6.1 | Soft Bounce | Media not supported |
| 4.6.2 | Soft Bounce | Conversion required and prohibited |
| 4.6.3 | Soft Bounce | Conversion required but not supported |
| 4.6.4 | Soft Bounce | Conversion with loss performed |
| 4.6.5 | Soft Bounce | Conversion Failed |
| 4.7.0 | Soft Bounce | Other or undefined security status |
| 4.7.1 | Soft Bounce | Delivery not authorized, message refused |
| 4.7.2 | Soft Bounce | Mailing list expansion prohibited |
| 4.7.3 | Soft Bounce | Security conversion required but not possible |
| 4.7.4 | Soft Bounce | Security features not supported |
| 4.7.5 | Soft Bounce | Cryptographic failure |
| 4.7.6 | Soft Bounce | Cryptographic algorithm not supported |
| 4.7.7 | Soft Bounce | Message integrity failure |
Leer una cuenta POP3 con Perl
Escrito el January 24, 2008
Guardado desarrollo web, perl | deje su comentario
Perl es un lenguaje feo, raro y molesto,
sin embargo para algunas tareas (en especial BATCH)
resulta especialmente util y practico.
El otro día, en mi trabajo, tuve que superar el problema de leer una cuenta de GMAIL por POP3, como el proceso tenia que correr automaticamente cada x minutos y procesar los mails que mandaba otro
servicio (un proveedor manda un reporte) decidi usar Perl, y aunque en este lenguaje resulte raro decirlo, fue facil hacerlo (claro que primero tuve que navegar medio Internet para encontrar un modulo que me ayudará)
Basicamente lo que hago es usar las librerias Mail::POP3Client y IO::Socket::SSL, luego me conecto
use Mail::POP3Client;
use IO::Socket::SSL;
my $socket = IO::Socket::SSL->new( PeerAddr => pop.gmail.com,
PeerPort => 995,
Proto => 'tcp') || die "No socket!";
my $pop = Mail::POP3Client->new();
$pop->User(USERNAME);
$pop->Pass(PASSWORD);
$pop->Socket($socket);
$pop->Connect();
#me fijo cuantos hay
my $count = $pop->Count();
#si hay más de 1 los proceso
if ($count > 0){
#por cada uno lo voy trayendo
for ($i = 1; $i <= $count; $i++) {
#me los va devolviendo linea por linea
foreach ( $pop->HeadAndBody($i) ) {
#aca va el procesamiento, por ejemplo
print $_;
}
}
}
ya esta! simple no? que lindo es encontrar que hay veces que la definición del problema es más compleja que la solución
avanzar »