El tema central de este BLOG es de programación y tecnología en general, aunque tambien publique otros temas.
jueves, 29 de abril de 2010
Compilar Objetos inválidos en Oracle
CREATE OR REPLACE PROCEDURE COMPILAR IS
--- Se Obtiene la Lista de Objetos Inválidos
CURSOR compila IS
SELECT 'alter '||DECODE(object_type,'PACKAGE BODY','PACKAGE',object_type)||' '||owner||'.'||object_name||' compile'||
DECODE(object_type,'PACKAGE BODY',' BODY','') sentencia, owner, object_type, object_name
FROM ALL_OBJECTS
WHERE status<>'VALID'
ORDER BY DECODE(object_type,'PACKAGE BODY',1,0),1;
BEGIN
FOR C IN compila
LOOP
EXECUTE IMMEDIATE C.sentencia;
END LOOP;
END;
Obteniendo información de la PC por medio de API’s desde VFP
Origen del Código news2news
CLEAR
#DEFINE MEMORYSTATUS_SIZE 32
DECLARE GlobalMemoryStatus IN kernel32;
STRING @lpBuffer
PRIVATE cBuffer
cBuffer = REPLI(Chr(0), MEMORYSTATUS_SIZE)
= GlobalMemoryStatus(@cBuffer)
= Writeln("Memoria en USO, % ...................", 5)
= Writeln("Memoria Fisica en bytes ..........", 9)
= Writeln("Memoria Física disponible, bytes ...", 13)
PROCEDURE Writeln(cCaption, nOffs)
LOCAL nSize
nSize = buf2dword(SUBSTR(cBuffer,nOffs,4))
? cCaption + " " + ALLTRIM(TRANS(nSize, "999,999,999,999,999,999"))
FUNCTION buf2dword(cBuffer)
RETURN Asc(SUBSTR(cBuffer, 1,1)) + ;
BitLShift(Asc(SUBSTR(cBuffer, 2,1)), 8) +;
BitLShift(Asc(SUBSTR(cBuffer, 3,1)), 16) +;
BitLShift(Asc(SUBSTR(cBuffer, 4,1)), 24)
Nuevo Windows Live Messenger
Ya está desarrollado el nuevo Windows Live Messenger, se ve interesante, juzguen por ustedes mismos.
http://video.latam.msn.com/watch/video/nuevo-windows-live-messenger/k630364c
Imágenes sobre el Nuevo Windows Live Messenger
http://www.microsoft.com/presspass/presskits/windowslive/imageGallery.aspx
sábado, 24 de abril de 2010
Que será
Saliendo un poco de la tecnología no se si han escuchado la canción “Que Será” de José Feliciano a muchos les gusta, sin embargo en mi caso esta canción es muy especial ya que me recuerda a mi pueblo natal. Tosagua, un cantón olvidado de Manabí Ecuador… aquí les va la letra.
Pueblo mio, que estas en la colina tendido como un viejo que se muere la pena, el abandono, son tu triste compañia pueblo mio te dejo sin alegria.
Que sera, que sera, que sera que sera de mi vida, que sera si se mucho o no se nada ya mañana se vera, y sera sera, sera lo que sera.
Ya mis amigos, se fueron casi todos y los otros partiran despues que yo. Lo siento porque amaba su agradable compañia mas es mi vida tengo que marchar.
Que sera, que sera, que sera que sera, de mi vida que sera en las noches mi guitarra dulcemente sonara y una niña de mi pueblo llorara.
Amor mio me llevo tu sonrisa que fue la fuente de mi amor primero amor te lo prometo, como y cuando no lo se mas se tan solo que regresare.
Ojalá que la Nueva alcalde Elva Gonzales. Saque a mi pueblo adelante.
miércoles, 21 de abril de 2010
Calculadoras Básicas hecha en VFP
Pueden utilizar este pequeño ejemplo para agregarlos a las aplicaciones.
Codigo en Metodo AgregarNumero
LPARAMETERS lcNumero
SET FIXED OFF
IF lcNumero#'.' THEN
thisform.valortexto = thisform.valortexto + lcNumero
thisform.Refresh
nDecimal=LEN(ALLTRIM(thisform.valortexto))-IIF(RAT('.',thisform.valortexto,1)=0,LEN(ALLTRIM(thisform.valortexto)),RAT('.',thisform.valortexto,1)-1)
thisform.txtpantalla.value=ROUND(VAL(thisform.valortexto)*thisform.factor,nDecimal)
ELSE
IF NOT ('.'$thisform.valortexto)
thisform.valortexto = thisform.valortexto + '.'
ENDIF
ENDIF
Còdigo en cada boton de numeros
thisform.agreganumero(ALLTRIM(this.Tag)) && en cada boton la propiedad TAG debe contener el numero
Boton Suma
thisform.procigual
thisform.operacion='+' && en el metodo procigual se usa macrosustitucion para establecer la operacion
Codigo de metodo PROCIGUAL
IF !EMPTY(thisform.operacion) THEN
lcSigno=thisform.operacion
thisform.ultimonumero=thisform.txtpantalla.Value
thisform.acumulado = thisform.acumulado &lcSigno thisform.ultimonumero
thisform.txtpantalla.Value=thisform.acumulado
thisform.valortexto=''
ENDIF
Espero que les haya servido de mucho el ejemplo.
Enmascaramiento por IPTABLES
Esto es necesario para poder leer desde el Outlook Cuentas de gmail.com, pasando por un proxy Linux
iptables -t nat -A POSTROUTING -s 192.168.1.120 -j MASQUERADE
Solo reemplazamos la IP por la que necesitamos, y seguimos los pasos que está en la página de gmail para configurar el outlook.
Envío de Mail desde PL/SQL
RECIBE IN VARCHAR2,
ASUNTO IN VARCHAR2,
MENSAJE IN VARCHAR2)
IS
mailhost VARCHAR2(30) := ‘SERVIDORSMTP’;
mail_conn utl_smtp.connection;
crlf VARCHAR2( 2 ):= CHR( 13 ) || CHR( 10 );
mesg VARCHAR2( 32767 );
BEGIN
mail_conn := utl_smtp.open_connection(mailhost, 25);
mesg:=-- 'Date: ' || TO_CHAR( SYSDATE, 'yyyy mm dd hh24:mi:ss' ) || crlf ||
'From: <'||ENVIA||'>' || crlf ||
'Subject: '||ASUNTO || crlf ||
'To: '||RECIBE || crlf ||
'' || crlf || MENSAJE;
utl_smtp.helo(mail_conn, mailhost);
utl_smtp.mail(mail_conn, ENVIA);
utl_smtp.rcpt(mail_conn, RECIBE);
utl_smtp.data(mail_conn, mesg);
utl_smtp.quit(mail_conn);
END;