Bitcoin

BitMiner - free and simple next generation Bitcoin mining software

jueves, mayo 24, 2007

PHP y MySQL Videotutoriales (Imagen ISO)

Para mayor facilidad en el aprendizaje de PHP y MySQL ahora me encuentro con varios video tutoriales unidos en una imagen ISO.

Quieres iniciar desde CERO, esta es la opcion que te lleva de la mano hasta el maravilloso mundo de la programación Web.

Descarga Directa

Seguímos en Línea.

Curso de Ajax en Videotutoriales (Imagen ISO)

Aqui tienen 20 VideoTutoriales reunidos en una imagen ISO, todos los videotutoriales son extraidos gratuitamente de la web Séptimo Continente.

Tienes el futuro a tu alcance, pues Ajax da agilidad y mejor presentación a tus páginas web. ¿Quieres un Ejemplo?... Google es el mejor que existe, sus aplicaciones como la nueva version de Analytics esta creada con Ajax dandonos a nosotros como usuarios una gran interactividad con el sitio. Y ni que decir de la página personalizada de google, que ahora cuenta hasta con manejo de temas "para hacer mas bonita la visita :P".

Que lo disfruten.

Descarga Directa

Seguímos en Línea.

viernes, mayo 18, 2007

TRUCOS PARA WINDOWS XP

Bueno aqui les traigo unos trucos para optimisar sus equipos espero que les sirvan antes de hacer cual quier modificacion les recomiendo hacer un respaldo de sus archivos y de su registro bueno espero que les sirva nos estamos bien en casa de Tadeo el Viernes

Este truco liberara la memoria y el disco para que puedan accesar mas rapido a los programas

Buscamos en el editor del registro la siguiente cadena
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Memory Management
Buscan en el panel derecho la entrada DisablePagingExecutive y hacemos doble clic sobre ella
cambiamos el valor de 0 a 1 y pulsamos aceptar reiniciamos la compu y listo


La tecla del logotipo Windows permite crear accesos directos para los siguientes comandos:

a.. Tecla del logotipo de Windows: Muestra el menú Inicio

b.. Tecla del logotipo de Windows + D: Minimiza o restaura todas las ventanas

c.. Tecla del logotipo de Windows + E: Muestra el Explorador de Windows

d.. Tecla del logotipo de Windows + F: Muestra Buscar archivos

e.. Tecla del logotipo de Windows + Ctrl + F: Muestra Buscar equipo

f.. Tecla del logotipo de Windows + F1: Muestra Centro de ayuda y soporte técnico

g.. Tecla del logotipo de Windows + R: Muestra el cuadro de diálogo Ejecutar

h.. Tecla del logotipo de Windows + Inter Muestra el cuadro de diálogo Propiedades del sistema

i.. Tecla del logotipo de Windows + Mayús + M: Deshace minimizar todas las ventanas

j.. Tecla del logotipo de Windows + L: Bloquea la estación de trabajo

k.. Tecla del logotipo de Windows + U: Abre el Administrador de utilidades

Acelerar la exploración de equipos en red e incrementar el rendimiento general

Desde los tiempos de Windows 2000, existe un bug por el cual al explorar contenidos de ordenadores remotos, el sistema busca además de los archivos compartidos las tareas programadas de la máquina, con lo que podemos experimentar retrasos de hasta 30 segundos cuando intentamos ver los archivos compartidos desde una red Para que sistema no busque las tareas programadas en equipos de red al explorar sus recursos compartidos, iniciaremos la herramienta de edición del sistema, con el comando “regedit.exe” desde el menú Inicio/Ejecutar y localizaremos la clave HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/ Explorer/RemoteComputer/NameSpace/{D6277990…}. En primer lugar, dentro del menú registro, seleccionaremos la opción Exportar rama de forma que podamos restaurar esta característica en caso necesario. Acto seguido borraremos la clave. NOTA: Al eliminar esta clave, eliminaremos la posibilidad de ver y administrar tareas programadas en ordenadores remotos. También relacionado con el rendimiento de las conexiónes a través de red, podemos incrementar el número de búffers que el redirector reservará para el rendimiento de la red, incrementando de esta manera el caudal de datos que podrá administrear. Cada hilo extra que configuremos hará uso de 1k adicional de memoria no paginada, pero únicamente si la aplicación está haciendo uso de ellos. Para configurar el número de búffers e hilos adicionales iniciaremos la herramienta de edición del sistema, con el comando “regedit.exe” desde el menú Inicio/Ejecutar y localizaremos la clave HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\LanmanWorkstation\Parameters. Allí crearemos un o modificaremos los valores DWORD "MaxCmds" y "MaxThreads", cuyo contenido deberá ser el mismo en ambos, el valor por defecto es 15 y el rango que podemos especificar va desde 0 hasta 255.

Mejorar ancho de banda del XP Professional

Windows XP se reserva el 20% del ancho de banda disponible, con el fin de ejecutar aplicaciones especiales. La “retención” se produce mediante el denominado el programador de paquetes QoS (Quality of Service – Calidad del Servicio), encargado de la optimización de redes locales.

Sin embargo, para los usuarios privados, que sólo tienen un PC en casa, QoS no es una función necesaria; sino todo lo contrario. Windows XP reserva el 20% del ancho de banda aunque el usuario cancele la función QoS. También se puede optar por desintalar el Programador de paquetes QoS si no tenemos ninguna Red Local.

Resumiendo viene a decir: El QoS (calidad del servicio) es una función bastante comun en Internet, se usa para garantizar que unas transferencias no bloquean a otras. En Windows XP el protocolo reserva un máximo de un 20% del ancho de banda para paquetes de alta prioridad, de forma que estos siempre puedan transmitirse. Esto hace posible que por ejemplo, podamos estar descargando 2 ficheros de dos servidores a la vez, y mientras usar el IRC o el messenger y que los mensajes que enviamos y nos envian lleguen sin retraso. Si no hay paquetes de alta prioridad, ese ancho de banda se usa para transmitir paquetes normales.

1) Entrar como administrador.
2) Inicio, ejecutar, escribid: gpedit.msc
3) Aparecen las directivas de grupo, id a Configuración de Equipo.
4) Plantillas Administrativas
5) Red (Network)
6) Programador de Paquetes Qos
7) Doble click en Limitar el ancho de banda reservado
8) Habilitarlo y poner el 0% en Límite de Ancho de Banda.
9) Aplicar y Aceptar
10) Id a propiedades red y comprobad que está marcado el Programador de Paquetes Qos.

martes, mayo 15, 2007

Manejo de Stored Procedures en Delphi

Continuando con la práctica 1, y resolviendo la peticion de un visitante, primero que nada, un Stored Procedure o Procedimiento Almacenado es un Query o Funcion almacenada en la Base de Datos de nuestra preferencia, en mi caso es MySQL 5.0, donde por medio de parámetros el query ejecutará una serie de acciones las cuales traerán consigo el resultado que queramos.

Existen varias formas de llamar un Stored Procedure (Procedimiento Almacenado) en
Delphi, pero yo usaré la más fácil, con el uso de un ZTQuery. Esto tambien se puede hacer de la misma manera con componentes ADO, pero para este ejemplo usaré las librerías Zeos.

La sintaxis de un Stored en MySQL es la siguiente:

NOTA: El siguiente stored inserta el registro de un cliente en la tabla T_CLIENTES

CREATE PROCEDURE `sp_ClientesInserta`
(
IN `pid_cliente` bigint(11),
IN `pnombre` varchar(100),
IN `prfc` varchar(20),
IN `pdireccion` varchar(100),
IN `pcp` varchar(10),
IN `pciudad` varchar(50)
)
BEGIN
/* Inserta nuevo registro*/
Insert into t_clientes (nombre, rfc, direccion, cp, ciudad) values (pnombre, prfc, pdireccion, pcp, pciudad);
END

Con código rojo destaco el nombre del Procedimiento Almacenado, en verde se muestran cada uno de los parametros y dentro de Begin y End van nuestras sentencias SQL.

Tambien podemos hacerle una modificacion donde se valide primeramente si ya existe el mismo RFC en la tabla antes de insertarlo.

CREATE PROCEDURE `sp_ClientesInserta`
(
IN `pid_cliente` bigint(11),
IN `pnombre` varchar(100),
IN `prfc` varchar(20),
IN `pdireccion` varchar(100),
IN `pcp` varchar(10),
IN `pciudad` varchar(50)
)
BEGIN
/*Valida Existencia de RFC*/
Declare vContador varchar(20);
Select vContador=count(*) From t_clientes Where rfc=prfc;
/* Inserta nuevo registro*/

IF vContador <=0 then
Insert into t_clientes (nombre, rfc, direccion, cp, ciudad) values (pnombre, prfc, pdireccion, pcp, pciudad);
END IF;
END

Ahora con azul contabilizamos los registros que coincidan con el RFC que enviamos de parámetro, si existe alguno no se inserta (con amarillo).

Ya que tenemos nuestro Stored Procedure lo llamamos con la sentencia CALL.

call sp_ClientesInserta(1,'Jesús Feran','XXXXXXXXXXXX','Tecnosis MX', 555555,'SJR');

Ahora lo unico que resta es llamarlo en un ZTQuery desde delphi.

Active:=False;
Connection:=ZConnection1;
Close;
SQL.Clear;
SQL.Add("call sp_ClientesInserta(1,'Jesus Feran','XXXXXXXXXXXXX','Tecnosis MX', 56500,'SJR');");
ExecSQL;
Close;

Y según yo, ya es todo, con eso envian parámetros a un stored desde delphi.

Espero les sirva, nos vemos.

NOTA: Se pueden crear Stored Procedures con el asistente de MySQL Maestro, pero se me hace muy tardado, aun que seguro.

Seguímos en Linea.

sábado, mayo 12, 2007

Instalando lo necesario para ASP.NET

Primero tenemos que instalar el IIS (de preferencia antes que el Framework de .NET y que el lenguaje que vayamos a usar ya que después puede que el IIS no registre algunos componentes y tengamos que hacer pasos extras para que funcionen nuestras páginas en .NET)

-IIS

Para instalar el IIS nos vamos a Panel de Control / Agregar o Quitar Programas y luego en Agregar o quitar componentes de Windows.
Agregamos el que dice Servicios de Internet Information Server (IIS), podemos darle en Detalles y asegurar que se instale el Servicio World Wide Web.

Y ya :P


-Framework .NET
El Framework 1.1 normalmente se instala en alguna actualizacion de Windows XP y ya viene en el Service Pack 2 por defecto, o sea que no hay mucha bronca, pueden checar si lo tienen entrando en Panel de control - Herramientas Administrativas y ahi deben de tener dos accesos directos, uno que diga "Microsoft .NET Framework 1.1 Configuration" y el otro "Microsoft .NET Framework 1.1 Wizards". Si no los tienen descarguense el Framework 1.1 de aqui.

-Lenguaje con soporte para .NET
Pues ya nada más instalan el lenguaje que vayan a usar, en este caso el Delphi 2006, luego les paso el Studio Completo del Borland Delphi 2006, si no mientras lo pueden bajar del E-mule :P jeje.

viernes, mayo 11, 2007

Busqueda Incremental en Delphi

A veces es necesario hacer las llamadas Busquedas Incrementales, las cuales consisten en ir escribiendo en un EDIT y un DBGrid se comience a filtrar con los resultados que coincidan solamente con lo que hemos escrito.

Es decir, tenemos una tabla de la siguiente manera:

ID - Nombre
1 Miguel
2 Martin
3 Jerry
4 Tadeo
5 Jesus

En el edit escribimos JE y en el grid solo nos apareceran:

ID - Nombre
3 Jerry
5 Jesus

Pues ahora filtramos los campos solamente con los que empiecen con JE.

Esto se realiza con un LIKE en SQL que sería así:
Select id, nombre From MiTabla Where nombre LIKE '%JE%'

El codigo queda en el evento OnChange del Edit.

procedure TLaForma.edt_nombreChange(Sender: TObject);
var
vstrCadena: String;
begin

vstrCadena:= 'Select id, nombre from tabla Where nombre LIKE '+char(39)+'%'+edt_nombre.Text+'%'+char(39);

with ZQ_Consulta do
begin
Close;
SQL.Clear;
SQL.Add(vstrCadena);
try
Open;
except
ShowMessage('No se pudo ejecutar la consulta');
end;
end;
end;

Donde mi ZQ_Consulta es un TZQuery. Igual funciona para un TADOQuery normal.

jueves, mayo 10, 2007

ASP .NET



Primero vamos a explicar a groso modo que es .NET, más adelante daremos algunos ejemplos de esta plataforma:

Para empezar hay dos formas de desarrollar aplicaciones .NET, una es en la Web (ASP.NET) y la otra desarrollando aplicaciones de escritorio (si también se puede!!) que ya no se llaman Aplicaciones sino WinForms, aqui es igual son archivos .exe, y es practicamente igual que programar en un visual pero usando librerías de .NET.

(Los ejemplos que pondré después serán solo para ASP.NET porque es el que he estado trabajando, como ya les dije WinForms es casi igual que otro lenguaje visual)

Hay que decir que a pesar que la plataforma se llama ASP.NET (.NET pa' abreviar), no tiene nada que ver con el Lenguaje ASP desarrollado por Microsoft, o sea que no programaremos en ASP, por el contrario vamos a programar en el Lenguaje que tenga soporte para .NET, ya sea VisualBasic, Delphi, C#, etc.

Uno de los propósitos de esta plataforma es estandarizar la programación, porque aunque se programa en diferentes lenguajes, se usan los mismos "uses" o librerías (que aqui ya se llaman namespaces) ya sea para Delphi, VB, C#, etc. Así las diferencias entre la programación en .NET se reduce a la diferencia entre como declarar variables, crear objetos, etc. en cada lenguaje, pero la lógica es la misma.

Que ventajas tiene ASP.NET? pues muchas, primero es un lenguaje orientado totalmente a objetos (y yo que nunca le puse atención a Domingo :(...) la programación es mucho más fácil, es código precompilado, por lo cual es más rápido, todo lo pesado lo hace el servidor :-D.

Para que quede más claro: cuando programas en ASP.NET, se generan principalmente dos archivos por página: el .aspx (la página con código HTML y toda la onda) y el archivo del código programado (.pas para Delphi). Cuando se hace una petición a la página la hacemos a través del .aspx, y cuando se requiere se hace uso del .pas que esta "mezclado" en el aspx, así en realidad programas en Delphi y cada que se ejecute se compila solo esa parte que se requiere haciendo todo más rápido y fácil.

Para poder trabajar con ASP.NET se necesitan principalmente 3 cosas:

1-Una computadora... =S ah chinga jajajaja

no en serio:

1.-El lenguaje que soporte .NET
2.-El Framework de .NET
3.-Un servidor Web

Aquí los que vamos a usar son:

1.- Delphi 2006 (que es el único Delphi con buen soporte para .NET)
2.- El framework 1.1 (el más nuevo es el 3 y el más usado en los ultimos tiempos el 2, pero Delphi sólo es compatible con Framework 1.1)
3.- El IIS (este porque viene por defecto en todos los Windows XP, y en cuanto a características no tiene nada que pedirle a Apache... además este es más fácil de configurar y administrar :P)

En el siguiente post, les pondré como configurar e instalar lo necesario para empezar a programar, saludos.

miércoles, mayo 09, 2007

Zeos Lib Librerías de conexión libres para Delphi

El sistema que estoy haciendo me ha dado una serie de problemas en cuanto a la conexión, aún que ya tengo un programa que me genera mi archivo encriptado de configuración donde guardo los parametros variables del sistema como son: Servidor, Puerto, Nombre de Base de Datos, Usuario, Password y otros, me he visto en la necesidad de modificarlos por mi cambio de librerías...

Me encuentro con la belleza de Zeos Lib (Zlib), que son librerías Open Source para conexiónes de Delphi con MySQL, Postgress, Firebird entre otros. La libreria la puedes descargar desde aqui, y les dejo un tutorial llamado: "Cómo Instalar Zeos Lib y no morir en el intento"(link actualizado el 06 Noviembre del 2009), muy directo y facil de usar... con unos pequeños ejemplos de su uso.

La desventaja según el manual de usar Zlib es que no viene con ayuda sobre los componentes... ni modo, prueba y error (como si fuera nuevo este metodo para nosotros).

Bendito Dios que creo Open Source :-D


Editado:
Al instalar y seguir los pasos del manual me encontre con un problema, donde el archivo ZPlainMysql.inc se encontraba bloqueado al compilar un packeage, nuevamente busque la solucion y encontre la siguiente:

Descargue el archivo ZEOSLIB_TESTING_REV240.zip de ZeosDownloads, al descomprimir el archivo fui a la carpeta SRC y despues a PLAIN, en copie todo el contenido de esta carpeta y lo pase a la carpeta PLAIN pero del primer packeage que descargue (De la version 6.6.1).

Nuevamente repeti los pasos del manual y todo quedo a la perfección.

martes, mayo 08, 2007

Liberación de memoria en Delphi

Hace como 6 meses publique en mi blog el como hacerlo, y aquí esta nuevamente:

http://www.seshop.com/image/product/200411/BOL661750_L.jpg
Normalmente para el manejo de memoria utilizamos el siguientye metodo.

1.- Vamos al menú Project / Options

2.- En la lista de Auto-create forms seleccionamos solamente las formas que se deben crear al iniciar el proyecto. Dejando en la lista Aviable forms las formas que crearemos solo al mandarlas llamar.

3.- Para llamar una forma (crearla) hacemos lo siguiente:

Forma:=TForm.Create(nil); //Creamos la forma
Forma.Show; //Mostramos la forma

4.- Para eliminar la forma de memoria hacemos lo siguiente:

Forma.Free;

5.- El FREE elimina la forma de memoria y todos los componentes, pero no elimina los componentes creados a mano, es decir, aquellos que generamos con TTipoObjeto.Create()

Nuestro problema surgió al ver como la memoria RAM aumentaba y nunca disminuía (lo hacia al menos un poco, pero no lo suficiente). Creacia de 13 Mb ocupados en memoria hasta 200 Mb en el transcurso del uso del sistema hasta trabar la computadora.

Par solucionar el problema debíamos buscar una solucion la cual no nos quitara tiempo al cambiar todo el código y el modo de crear los objetos. Así que juntos encontramos la siguiente solución, que a muchos les será de utilidad.

Eliminación de memoria virtual en Delphi que no se encuentra en uso.

Para hacer lo siguiente basta con ejecutar el siguiente procedimiento:

procedure FreeRAMDelphi;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);
end;

Y la mandamos llamar de la siguiente manera:

try
Forma:=TForm.Create(nil);
Forma.Show;
finally
FreeRAMDelphi;
end;

Fuente: lawebdejm.com

Extracto de bibliografia utilizada:
Región 1

Familia 95: de $00000000 a $003FFFFF
Familia NT: de $00000000 a $00000FFF

Región privada para permitir la compatibilidad con aplicaciones de MS-DOS. En MS-DOS no era posible escribir dentro de los primeros 4Kb de memoria, así que cuando diseñaron Windows tuvieron que continuar con la misma limitación. Un intento de lectura/escritura sobre las primeros 4 Kb (desde $0000 a $FFFF) provocará una violación de acceso. Esa región también es privada para detectar la utilización de punteros nulos, ya que intentarían escribir en la dirección 0.


Región 2

Familia 95: de $00400000 a $7FFFFFFF
Familia NT: de $00001000 a $7FFEFFFF

En esta región es donde se almacenan los datos privados de cada proceso. Como podemos ver, la cantidad de memoria que puede llegar a utilizar una aplicación no son 4 GB como dijimos en principio, sino que son aproximadamente 2 GB.
En la familia NT se almacenan tanto el código y datos de los ejecutables como las DLL del sistema y de usuario. Cualquier variable que utilicemos desde nuestros programas estará en este rango.


Región 3

Familia 95: de $80000000 a $FFFFFFFF
Familia NT: de $8000000 a $FFFFFFFF

Región privada donde se carga el kernel del sistema operativo y los controladores de dispositivos (archivos .VXD).
En Windows 95 además, esta región alberga las DLLs y los archivos proyectados en memoria. Otra diferencia entre Win95 y NT es que para el primero, la región es accesible por el proceso, y el segundo provocará una violación de acceso si se intenta leer/escribir en este rango de direcciones.
Seguímos en línea.

lunes, mayo 07, 2007

Conocer el Path de nuestro programa en Delphi RunTime

La siguiente función retorna una cadena de caracteres:

ExtractFilePath(Application.ExeName);

Fácil.

Seguímos en Línea.

jueves, mayo 03, 2007

Practica Tecnosis - Sistema de Base de Datos

Bien, el objetivo de este blog es que todos aprendamos, es por eso que aqui va mi primer práctica donde aprenderemos a dar de alta registros en una base de datos MySQL 5.0 desde Delphi, con herramientas DevExpress y manejo de Stored Procedures. Se me ocurrio postear esto pues actualmente hago un sistemilla con estas herramientas.

Si no saben que son los Stored Procedures (Procedimientos Almacenados) no se preocupen, poco a poco les iré explicando, pero antes que todo inicie necesitamos instalar las herramientas a usar.

  1. Primero Instalen Delphi, yo uso el 2005.
  2. Ahora instalen MySQL 5.0 o superior, para que todo salga bien y no pierdan mucho tiempo (La salida fácil), instalen la última versión de AppServNetwork el cual tambien incluye PHP y Apache, el solito levanta el servidor, ya que lo instalen se dirigen a su navegador y escriben http://localhost ó http://127.0.0.1 y les mostrará la página de su servidor web local (el de su computadora).
  3. Ahora instalense MySQL Maestro v7.2.0.3 15.4M Completo 3.86M el cual nos permite Administrar fácilmente bases de datos MySQL desde esta interfaz, para manejar los storeds, vistas, triggers, etc etc. [Capturas de pantalla]
  4. Ahora solo queda instalarse los componentes de DevExpress y listo.
Háganlo y cuando terminen avisan, para ir con la siguiente lección.
Nota: Con estas herramientas pretendo dar más ejemplos, así que se las recomiendo mucho.
Seguímos en Linea.

DevExpress para Delphi y soporte .NET

En mi trabajo pasado usamos estos componentes, los cuales trabajan de maravilla ayudandonos a reducir en gran parte el codigo y dandole una muy buena presentación a nuestro trabajo..

Encontre todos los componentes en un blog llamado GSLab de Wordpress, no se cuanto tiempo sigan en linea los links, así que será mejor que lo visiten ya.

Seguímos en Línea.

miércoles, mayo 02, 2007

NetSupport

Exelente utilidad para el control de Redes, puedes ver y controlar el acceso a los equipos de tu red. Puedes tomar el control parcial o total de un equipo, enviar mensajes a equipos y muchas cosas mas.

Paginación en SQL con LIMIT

En MySQL
La cláusula LIMIT es usada para limitar el número de registros devueltos en una sentencia SQL. Así que si tienes 1000 filas en una tabla pero sólo te interesa obtener los 10 primeros, puedes ejecutar una sentencia como esta:
SELECT columna FROM tabla LIMIT 10
Esto es similar a la clásula TOP de Microsoft SQL Server, sin embargo, en MySQL el LIMIT siempre va al final de la sentencia SQL.

Ahora, suponiendo que te interesa mostrar los registros 11-20, con el uso de la palabra clave OFFSET esto es realmente muy fácil. La consulta quedaría entonces así:
SELECT columna FROM tutabla LIMIT 10 OFFSET 10
Esta característica hace que sea muy fácil programar la paginación de resultados haciendo que los valores para el LIMIT y el OFFSET sean variables.

Bueno, es todo, espero que sea de utilidad el tip.