El tema central de este BLOG es de programación y tecnología en general, aunque tambien publique otros temas.
martes, 7 de diciembre de 2010
Guardado de Clases Serializables
Creamos la estructura que sera guardada en una clase serializable en este caso Alumnos
[Serializable]
public class Alumnos
{
public string cedula;
public string nombres;
}
Los resultados Obtenidos en un form lo guardamos en una clase parecida a la que está arriba de la siguiente forma:
Alumnos al = new Alumnos();
al.cedula=Textbox1.Text;
al.nombres=Textbox2.Text;
Luego para guardarlos en un archivo utilizamos el SaveFileDialog para obtener el nombre y lo guardas serializado así:
FileStream stream = new FileStream(NewFileName, FileMode.Create, FileAccess.Write);
BinaryFormatter b = new BinaryFormatter();
b.Serialize(stream, al);
stream.Close();
Tomando en cuenta que "al" es la instancia de alumno, y "NewFileName" contiene el nombre completo del archivo. De esa manera tienes guardamos el contenido de al.
para recuperarlo utilizas el OpenFileDialog para pbtener el Nombre y haces esto:
FileStream s = new FileStream(cFileName, FileMode.Open, FileAccess.Read);
BinaryFormatter b = new BinaryFormatter();
al = (Alumnos)b.Deserialize(s);
s.Close();
jueves, 25 de noviembre de 2010
Obtener elementos de un enumerador en C#
1: foreach (string nombre in Enum.GetNames(typeof(MyEnumerador)))
2: {
3: this.cmbElementos.Items.Add(nombre);
4: }
En este ejemplo estamos llenando un combo con los elementos del Enumerador.
miércoles, 24 de noviembre de 2010
MyPhone Muy buena utilidad para Windows Mobile
Buscando nuevas utilidades para mi teléfono Windows Mobile encontré MyPhone, un servicio de Microsoft para teléfonos basados en Windows, donde tenemos un servicio interesante, pero en sí lo que hacemos es respaldar la información de nuestro teléfono en el internet, de forma ordenada, Contactos, mensajes, photos, videos, etc. podemos archivar todos estos datos, programar las Sincronización con el teléfono, guardar la ubicación de la ultima sincronización, entre otras cosas.
Si tenemos una cuenta pagada, de este servicio podemos incluso hacer sonar nuestro teléfono o saber la ubicación si está perdido.
Para las personas que tienen teléfonos basados en Windows les recomiendo esta herramienta. les va a encantar.
jueves, 11 de noviembre de 2010
Levantar un Servidor NTP en RedHat Enterprise
El servicio que debemos levantar es el ntpd, de esta manera:
service ntpd start |
chkconfig ntpd --levels 345 on |
# iptables -I INPUT -p udp --dport 123 -j ACCEPT
# iptables -I OUTPUT -p udp --dport 123 -j ACCEPT
Ahora haciendo de cuenta que nuestro servidor tiene la ip: 192.168.1.1 vamos a otra maquina linux y le decimos que se actualice desde este servidor con el siguiente comando:
ntpdate -s 192.168.1.1
viernes, 22 de octubre de 2010
Dar permisos a Todos los usuarios a la Carpeta Oracle
- Abrir las propiedades de la carpeta ORACLE
- En la ficha Seguridad Presionar el Boton “Avanzado”
- En la ventana de Configuracion de seguridad avanzada hacemos click en Editar
- En esta ventana agregamos los usuarios o grupos con la configuración de permisos necesarios.
al hacer click en agregar saldrá esa ventana.
y Luego se editan los permisos
martes, 12 de octubre de 2010
Ordenamiento de Items en ListView al dar click en columnas [C#]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace SPControls
{
public partial class JPListView : ListView
{
public JPListView()
{
InitializeComponent();
this.ColumnClick += new ColumnClickEventHandler(JPListView_ColumnClick);
}
/// <summary>
/// Metodo de Ordenamiento Automatico al hacer clic en las cabeceras de las columnas
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void JPListView_ColumnClick(object sender, ColumnClickEventArgs e)
{
if (ColumnIndexOrder != e.Column)
OrderAsc(e.Column);
else
{
if (OrderTypeSel == SPControls.JPListView.OrderType.Asc)
OrderDes(e.Column);
else
OrderAsc(e.Column);
}
}
public enum OrderType
{
Asc=1,
Des=2
}
private int mColumnIndexOrder = 0;
private OrderType mOrderTypeSel;
public int ColumnIndexOrder
{
get { return mColumnIndexOrder; }
}
public OrderType OrderTypeSel
{
get { return mOrderTypeSel; }
}
/// <summary>
/// Ordena la lista dependiendo del Índice Seleccionado
/// Autor: Jackson Patricio Rosado Cedeño
/// </summary>
/// <param name="ColumnIndex"></param>
public void OrderAsc(int ColumnIndex)
{
//Metodo de Inserción Directa
ListViewItem Intercambio;
int i, j;
for (i = 1; i < Items.Count; i++)
{
Intercambio=Items[i];
j = i - 1;
while (string.Compare(Intercambio.SubItems[ColumnIndex].Text,Items[j].SubItems[ColumnIndex].Text)<0 && j >= 0)
{
Items[j + 1] =(ListViewItem) Items[j].Clone();
j--;
if (j < 0)
break;
}
Items[j + 1] = Intercambio;
mColumnIndexOrder = ColumnIndex;
mOrderTypeSel = OrderType.Asc;
}
}
/// <summary>
/// Ordena de Forma descendente dependiendo el indice seleccionado
/// Autor: Jackson Patricio Rosado Cedeño
/// </summary>
/// <param name="ColumnIndex"></param>
public void OrderDes(int ColumnIndex)
{
//Metodo de Inserción Directa
ListViewItem Intercambio;
int i, j;
for (i = 1; i < Items.Count; i++)
{
Intercambio = Items[i];
j = i - 1;
while (string.Compare(Intercambio.SubItems[ColumnIndex].Text, Items[j].SubItems[ColumnIndex].Text) > 0 && j >= 0)
{
Items[j + 1] = (ListViewItem)Items[j].Clone();
j--;
if (j < 0)
break;
}
Items[j + 1] = Intercambio;
}
mColumnIndexOrder = ColumnIndex;
mOrderTypeSel = OrderType.Des;
}
}
}
viernes, 10 de septiembre de 2010
Sistemas Operativos Desconocidos para la mayoría.
Esta vez, vamos a dedicarle algunos post a los sistemas operativos que son completamente desconocidos para la gran mayoría de personas que utilizan un computador. pues en el mercado actual tenemos varias opciones para escoger:
1.- Windows (El Sistema Operativo Mas Utilizado en Microcomputadoras por usuarios comunes y profesionales)
2.- MacOS X (Exclusivo de Apple, en la ultima década a ganado terreno nuevamente gracias al regreso de Steve Jobs)
3.- Linux (Mas Utilizado en maquinas que trabajan como servidores, muy estable y confiable, aunque para muchos difícil a nivel de usuario final) de Linux existen algunas distribuciones como son (Fedora, RedHat, Debian, Ubuntu, FreeBSD,Suse, etc.)
4. Luego tenemos otros Sistemas Operativos que trabajan en servidores especializados como UNIX y sus diferentes variaciones como Solaris de Sun Microsystem (Ahora de ORACLE), muy utilizado en el ámbito empresarial, BSD, Xenix etc. Cabe recalcar que el Sistema Operativo UNIX ha servido de inspiración para otros como Linux, Minix, y MacOS X. que están basados en UNIX. y que hicieron posible trabajar “Como en UNIX” en un PC.
5.- Sistemas operativos especializados que vienen con las Mainframes.
6.- y Por ultimo los sistemas operativos de antaño, que ya dejaron de ser usados como el MS-DOS, FreeDOS, Basic (Considerado S.O. en los 70’s) entre otros.
Pero bueno ya con esto incluso estamos nombrando algunos Sistemas Operativos que para muchos son desconocidos, pero existen otros sistemas operativos algunos incluso creados por hobbie y que son desconocidos para muchos. Comenzaremos por “KolibriOS” un Sistema Operativo Basado en “MenuetOS” otro sistema operativo escrito completamente “FASM” un compilador de ASM o Ensamblador. Tiene una interface interesante y el código fuente está disponible para su estudio, ideal para los estudiantes de ASM. aquí les facilito unas capturas de pantalla.
pueden bajar el soft de 3MB aproximadamente y probarlo en una maquina virtual en www.kolibri.org
Saludos a Todos.
martes, 7 de septiembre de 2010
Pequeño ejemplo de como enviar un mail desde C#
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(“smtp.tuservidor.com”, 25); //se conecta atu servidor al puerto 25. esto debes cambiarlo con los datos propios de tu servidor SMTP
/// preparacion del mensaje.
System.Net.Mail.MailMessage mensaje = new System.Net.Mail.MailMessage();
mensaje.From = new System.Net.Mail.MailAddress(“remitente@miservidor.com”);
mensaje.To.Add(“destinatario1@tuservidor.com”);
mensaje.BodyEncoding = System.Text.Encoding.GetEncoding(1252);
mensaje.Subject = "Hola Mundo";
mensaje.Body = “Este es el Cuerpo del mensaje”
smtp.Send(mensaje); // se envia el mensaje
mensaje.Dispose(); // se destruye el mensaje
Ojalá les Ayude. Hasta luego.
viernes, 27 de agosto de 2010
Filtrar Spam en Sendmail por medio de PROCMAIL
En si, este pequeño script lo que hace es hacer que procmail revise el Subject de los correos y si una de las palabras definidas en este se encuentra lo envíe a un buzón especifico en este caso “spam” para su posterior revisión. Para que procmail pueda hacer esta reasignación necesitaremos que el buzon “spam” permita el acceso a todos los usuarios, para esto podemos copiar cualquier otro buzón, vaciarlo y luego darle los accesos. lo podemos hacer de esta forma.
cd /var/mail/ cp jrosado spam ///Copiamos el buzón de jrosado a el archivo spam mutt –f spam /// Revisamos el buzon spam y lo vaciamos chmod 777 spam /// damos acceso a Lectura, ejecución y lectura para el dueño, grupo y todos los usuarios. |
Una vez ya creado el buzón spam, editamos el archivo /etc/procmailrc y escribimos el siguiente código:
LOGFILE=$HOME/procmail.log :0 * ^Subject:(.*Acai|.*Treat|.*Viagr|.*manhood|.*Viagra|.*Setup|.*Twitter|.*lover| .*nude|.*exotic|.*energy|.*libido|.*bikini|.*male|.*prescription| .*pills|*.Enhancing|.*virility|.*luxury|.*orgasm|.*Astounding| .*Enlarging|.*sale|.*Penis|.*Free|.*Obama|.*answer| .*health|.*spears|.*jolie|.*discount|.*empower| .*Pharmacy|.*dollars|.*trials|.*sexual|.*transaction|.*sales) /var/spool/mail/spam |
Espero que les sirva para su administración de correos electrónicos y ayude a dar el mejor servicio a sus usuarios.
Nota: la Distribución de Linux utilizada en este ejemplo es Oracle Linux Enterprise 4. (Basado en Redhat).
lunes, 23 de agosto de 2010
Un poco de código en C# [Llenado de TreeView]
void ReadStruct()
{
TreeNode node;
treeView1.Nodes.Clear();
node = treeView1.Nodes.Add(“Nodo padre");
node.Tag = contenedordenodos;
foreach (Nodo oNodo in contenedordenodos.Nodos)
{
AgregaNodo(oNodo,node);
}
}
void AgregaNodo(Nodo oNodo,TreeNode NodeContainer)
{
TreeNode node;
node = NodeContainer.Nodes.Add(oNodo.descripcion);
node.Tag = oNodo;
node.ImageIndex = 0;
node.SelectedImageIndex = 1;
foreach (Nodo oNodoX in oNodo.Nodos)
{
AgregaNodo(oNodoX,node);
}
}
Para hacer posible este tipo de estructuración creamos anteriormente una clase Serializable [Osea que permita guardar su estructura y contenido en archivos.] que contenga en forma jerargica la información de los nodos. en este caso el código con el que está creada la clase para este ejemplo es el siguiente:
[Serializable] //// Objetivo que se pueda guardar en un archivo esto
public class Nodo
{
public Collection<Nodo> Nodos = new Collection<Nodo>();
public Nodo()
{
descripcion = "Nuevo Nodo";
}
}
una de las propiedades es “Nodos” que es una colección de objetos de la misma clase, lo que permite crear la estructura jerargica.
[Serializable] Permite guardar el contenido de esta clase en tiempo de ejecución teniendo la posibilidad de recuperarla y llenar el Tree tal como lo dejamos.
miércoles, 14 de julio de 2010
Compartiendo Código Fuente
Hace unos años atrás hice un sitio para probar el servicio Site de Google, sinceramente me había olvidado de que lo había hecho, pero me di cuenta que había subido unos códigos fuentes de fragmentos de programas que pueden servir en algún momento para las aplicaciones que estén desarrollando, espero les guste y sea de su utilidad
pueden ir a la url: http://sites.google.com/site/panthersoftware/descargas
viernes, 9 de julio de 2010
Receta de Procmail para bloquear archivos adjuntos.
En este Ejemplo se están bloqueando archivos con extensiones {exe,bat,pif,lnk,scr,vbs,ppt,pps,mp3} en otras palabras, programas, links, scripts, PowerPoint y música mp3.
Los correos rechazados se irán a un buzón llamado cuarentena. sin embargo podemos eliminarlos cambiando la línea /var/mail/cuarentena por /dev/null
SUBJ=`formail -zxSubject:` TO=`formail -zxTo:` # Busco el remitente para el envio de auto-respuesta :0 H * ^From[ ]*:[ ]+\/.+ { FROM=`echo $MATCH|cut -d'<' -f2|cut -d'>' -f1` } #------------------------------------------------------------ ## Se Evalua el contenido del mail :0 H * ^Content-Type: multipart { :0 B * (name="\=\?iso.*\.(exe|bat|pif|lnk|scr|vbs|pps|mp3)\?\="|name=.*\.(exe|bat|pif|lnk|scr|vbs|ppt|pps|mp3)") { :0 Whc: vacation.lock | ( \ echo -e "To: ${FROM}, ${TO}, sistemas@tudominio.com"; \ echo "From: Administrador de Correos <administrador_correos@tudominio.com>" ; \ echo "Subject: Archivo Prohibido" ; \ echo "" ; \ echo "El correo de la cuenta ${FROM}" ; \ echo "" ; \ echo "Para ${TO}" ; \ echo "" ; \ echo "Con el asunto: ${SUBJ}" ; \ echo "" ; \ echo "Fue rechazado debido a que viola la política interna de la Empresa, ya que es prohibido el envio de archivos de este tipo," ; \ echo " por que representan peligro de virus y spam entre otros." ; \ echo "Si es urgente el envio y la recepcion de este correo, comuniquese con el EL DURO DE SISTEMAS :)" ; \ echo "" ; \ echo "Correo: " `grep ${LOGNAME} /etc/aliases|grep -v "#"|cut -d: -f1|awk '{print $1 "@tudominio.com"}'` ; \ echo "" ; \ ) | $SENDMAIL -oi -t :0 /var/mail/cuarentena } } |
jueves, 8 de julio de 2010
Oracle Real Application Testing
Esta es otra increíble herramienta de Oracle Corp. permite probar cambios de todo tipo en los sistemas en la base de datos Oracle, corrigiendo problemas que originen estos cambios sin arriesgar la Base de datos de producción.
Hasta ahora cuando queríamos hacer pruebas teníamos que tener además de una base de datos igual a la de producción un conjunto de usuarios que prueben los cambios de los sistemas para revisar que el rendimiento de la base de datos sea el mas optimo. algo que no nos daba 100% la veracidad de que la base de datos iba a funcionar bien con los nuevos cambios, ya que en las pruebas no se trabaja con la misma intensidad de los ambientes de producción, y después de una prueba supuestamente exitosa, nos causaba graves problemas en los ambientes de producción en lo que a rendimiento de base de datos se refiere.
Ahora gracias a esta herramienta podemos capturar aquellas tareas que hace la base de datos en ambientes de producción y reproducirlas en otra base de datos con la misma intensidad simulando un trabajo diario normal. y claro luego de esto la misma herramienta dice que instrucciones han mejorado el rendimiento y cuales necesitan un nuevo plan de ejecución.
Es una excelente herramienta que no le debe faltar al DBA. lamentablemente esta herramienta solo puede adquirirse para trabajar con la versión Enterprise Edition, los que tenemos Standar Edition, o Standar Edition One, tendremos que seguir con nuestras practicas manuales y esperar que Oracle o un tercero saque una herramienta similar que trabaje con estas ediciones.
Procedimiento para enviar correo desde Oracle DataBase
CREATE OR REPLACE PROCEDURE EnviarCorreo(ENVIA IN VARCHAR2,
RECIBE IN VARCHAR2,
ASUNTO IN VARCHAR2,
MENSAJE IN VARCHAR2)
IS
mailhost VARCHAR2(30) := ltrim(rtrim('tuhost_o_ip.com'));
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;
/
jueves, 1 de julio de 2010
Una pequeña Confusión en el concepto de Software Libre
Cuando hablamos de Software libre lo primero que se nos viene a la mente es “Gratis”, es apenas comprensible tomando en cuenta la traducción de la palabra inglesa Free. que puede ser Gratis, como puede ser Libre.
Sin embargo al decir Software Libre no precisamente estamos diciendo Software Gratis. es mas, el mismo hecho de decir que el Software es gratis tampoco podemos decir de que es Libre.
El Software Libre como tal es un software que puede ser usado, estudiado, copiado y modificado sin restricciones e incluso redistribuirlo libremente. una vez que este sea adquirido. sin embargo la empresa que lo desarrolla puede cobrar lo que crea conveniente por su trabajo, Incluso Algunas empresas no cobran tampoco por el desarrollo sino por el soporte. como es el caso de RedHat. El Software Libre puede ser adoptado por las empresas, mejorarlo, y vender sus mejoras tal como hacen con Linux algunas compañías de TI. Otras empresas que desarrollan este tipo de software incluso cobran por el Software, y por el soporte, pero además proveen de código fuente para su mejora, tal es el caso de la Suite de Inteligencia de Negocios PENTAHO.
El Software Gratis también conocido como freeware es diferente, no contamos con libertad de modificarlo y redistribuirlo como en el caso de software libre. Este tipo de software tiene Patente que no debe ser violada, tampoco incluye el código fuente para ser modificado. Ejemplos de estos programas son MSN Messenger, SQL Server Express, Oracle XE, estas dos ultimas son ediciones gratis de las bases de datos SQL Server, y Oracle DB respectivamente cuyo costo suele ser elevado.
También es común encontrar Software Libre que también es Gratuito, como es el Caso de PHP, Apache, MySQL, TURBO CASH, Fedora Linux, etc.
martes, 15 de junio de 2010
Kinect, nos hace jugar sin controles.
Algo que hasta hace unos años podría verse solamente en películas de ciencia ficción. ahora es posible gracias a la nueva consola de juegos de Microsoft el Kinect, este nos permite jugar sin controles, y reconoce el movimiento de nuestro cuerpo para controlar el protagonista del juego, podemos ser Lord Vader con so sable de luz o un tenista entre otras de nuestras fantasías infantiles, será presentado Los Ángeles en la convención de video juegos. y estará en las tiendas a finales de año.
Microsoft espera superar a sus competencias directas con este juego, ahora nos toca ver cuanto cuesta esta nueva maravilla tecnológica para ver si me apunto en la compra.
Fuente BBC Mundo.
http://www.bbc.co.uk/mundo/ciencia_tecnologia/2010/06/100614_1320_microsoft_natal_kinect_e3_dc.shtml
jueves, 10 de junio de 2010
Los Piratas de Sillicon Valley
En 1999 Salió esta película, film que lamentablemente no sabía que existía hasta que un día buscando una motivación para una idea, se me ocurrió buscar en internet películas sobre programadores y computación en general, y entre las paginas que visité encontré Los Piratas de Sillicon Valley, una película muy buena que cuenta la historia de como se crearon las 2 empresas mas influyentes en el mundo de la Computación tal como hoy la conocemos, Apple y Microsoft, se sentra bastante en Steve Jobs, y Bill Gates, aunque cuenta cosas mas interesantes sobre el primero.
Es una buena opción aunque para las personas que les gusta la tecnología y la historia de las computadoras, claro tuve que bajarla de internet por que no la encontré en las tiendas de video
Saludos.
martes, 25 de mayo de 2010
“C” Sigue siendo el más Popular
El lenguaje C sigue siendo el lenguaje mas popular a pesar de los años, seguido de cerca por Java y C++, lenguajes que utilizan sintaxis parecidas.
La popularidad de C posiblemente se basa a que trabaja en todas las plataformas, y arquitecturas podemos encontrar programas escritos en C desde Celulares hasta Mainframes.
En esta lista podemos ver el incremento de uso de c#, perl, Objective-C entre otros. además de ver como se mantiene el uso de Visual Basic a pesar de los años y de que ya está popularizado Visual Basic.NET. esta popularidad se basa a la facilidad de aprendizaje de Visual Basic.
la lista la pueden encontrar en el siguiente link.
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
viernes, 14 de mayo de 2010
Impresión con Terminal Server en Windows 2008 & Easy Print
jueves, 13 de mayo de 2010
Problemas de inicio de sesión a Terminal Server en Windows 2008
Después de varias investigaciones en la RED y buscar en algunas ayudas se le dio solución al problema de una forma muy simple.
en la Opción:
Inicio-> Herramientas Administrativas –> Directiva de Seguridad Local
En esta consola nos vamos a la opción
Directivas locales –> Asignación de Derechos a Usuarios
Entre la lista de opciones buscar la opción “Permitir inicio de sesión a través de Terminal Server”, dar doble clic y agregar el grupo Usuarios de Escritorio Remoto.
Estas acciones deben ser suficiente para solucionar el problema.
jueves, 6 de mayo de 2010
NetworkTest
Hoy les dejo el link de un programita que hice para que me ayude a saber que todo estaba bien con mis enlaces dedicados, internet y VPN’s.
Es un pequeño programa creado en C# 2008, en el que se agregan los dispositivos de RED y este hace test y avisa cuando uno de los puntos se queda sin conexión. los avisos se hacen por medio de sonido y por medio de mail. Requiere Microsoft .NET Framework 3.5
Aparte tienen disponibles los fuentes del programa para que puedan mejorar o personalizar su funcionalidad.
Ojalá les sea de utilidad.
miércoles, 5 de mayo de 2010
IE Pierde terreno pero sigue liderando…
Fuente BBC Mundo
EL Internet Explorer de Microsoft pierde terreno ahora cuenta con menos del 60% de usuarios cuando hasta en el 2003 tenía el 95% según NetApplications. esta noticia fue publicada en BBC Mundo. aquí mas información…
Saludos
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;