viernes, 13 de enero de 2012
miércoles, 23 de febrero de 2011
martes, 22 de diciembre de 2009
Cómo mantenerte organizado una vez que has pasado por el esfuerzo inicial
Si empiezas con un sistema de productividad estás motivado porque notas una mejora en la eficacia. Pero en muchas casos esta motivación no dura para siempre. Poco a poco, vuelven las pilas de papeles en tu mesa, ya no apuntas todo en tus listas de acciones, y durante una emergencia dejas de usar el sistema por completo.
Es algo que he visto pasar muchas veces, y tengo curiosidad por la solución a este problema. Los expertos de productividad personal me han contestado a esta pregunta:
¿Cuál es el mejor consejo para ayudar a alguien a mantenerse organizado, una vez que ha pasado por el esfuerzo inicial?
La constancia para la creación del hábito. Comenzar un nuevo proyecto siempre es divertido y siempre hay muchas ganas de hacerlo, más aún si es un proyecto dónde puedes ir obteniendo resultados. El problema es mantener el proyecto vivo y transformar ese primer esfuerzo inicial en un hábito que te acompañará durante largo tiempo. Segun Alex Bergonzini de GTD Bergonzini .............
Para completar la lectura http://canasto.es/2009/10/entrevista-esfuerzo-inicial-mantener/
viernes, 18 de diciembre de 2009
Aplicaciones desarrolladas en la Arquitectura de 3 Capas
Hola..........., en esta entrega mostrare como se realizar una sencilla aplicacion demostrativa de utilizacion de la arquitectura en 3 capas.
Primeramente quiero señalar que la idea de las capas es solo un concepto lógico de división. (Divide y venceras). El hecho mismo reside en que las capas agrupan componentes que tienen funciones similares.
Por este hecho la arquitectura de 3 capas generalmente es definida en:
Capa de Presentacion o DNN; que es la interfaz con el usuario
Capa de Negocio o LLB; se encarga de la definicion de las reglas del negocio
Capa de Acceso a Datos o DAL; se ocupa de la interaccion de y hacia de la BD
Pero como funcionan estas capas???? bueno es sencillo con un poco de imaginación.. :)
En la DNN tendremos los controles, como ser texboxs, datagrids, buttons, y todo lo necesario para una interfaz de usuario, recalquemos que los datos que manejemos tendremos que volverlos en objetos.
en LLB, solo nos fijaremos de hacer cumplir nuestras reglas, como por ejemplo: la validacion de datos, que un campo sea obligatrio; tal vez tengamos restricciones para la eliminacion e insercion, y todo eso lo hacemos en esta capa.
En la DAL, solo nos ocuparemos de transformar nuestros objetos en una tupla para la BD y tambien a la inversa, transformar una tupla en objetos.
El hecho de manejar diferenes clases para cada capa, es lo que hace que realmente sea facil manejar e interpretar el código escrito.
Veanlo de esta manera.
En la DNN, supongamos que tengo un textbox que se refiera a un Apellido, solo me ocupare de recuperar su valor (propiedad Text) y tranformarlo en un objeto y pasarlo a la otra capa y no me preocupo de nada mas.....
ejm:
//Creo una instancia del objeto para pasarla a la capa de negocios
clsEntidades myCliente = new clsEntidades();
//Aqui es donde se transforma lo que tengo en la interfaz
myCliente.apellido = txtApellido.Text;
// Ahora creo una instancia en la capa de negocios
clsNegocio myClienteNegocio = new clsNegocio();
En la LLB, recupero el objeto creado en la DNN y empiezo a realizar la validacion, como era un apellido, aqui puedo hacer controles de que su valor (propiedad Text) no este vacio, no contenga números, etc, todo lo que se me pueda ocurrir. Si la validación es correcta entonces mando ese objeto a la DAL, caso contrario rechazo y vuelvo a la DNN
ejm:
//Aplico las reglas de validacion
if (myCliente.nombre != "" && myCliente.apellido != "")
{
// Creo una instancia de la capa de datos
clsDatos objDatos = new clsDatos();
}
else
{lo rechazo}
En la DAL, me ocupo de hacer la interaccion del objeto con la BD.
ejem
// Metodo concetar, que solo hace la conexion de la BD y la deja abierta para poder interatuar
Conectar();
// Le indicamos cual stores procedure usar
oCmd.CommandText = "sp_addCliente";
// Le asignamos los par metros para el stored procedure
oCmd.Parameters.AddWithValue("@ape", myCli.apellido);
Así de facil, es en teoria.... :)
A primera vista es mucha complicación para tareas simples y comunes... como la analogia con un TextBox..
Pero cuando se trata de Desarrollo de Sistemas, las capacidades que nos da la POO, son muchas, pues podemos tener abstracion, herencia, encapsulacion. y estas cualidades las aprovechamos con una arquitectura de capas.
miércoles, 24 de junio de 2009
Ingeniería del Software
¿Cómo se construyeron los proyectos más grandes?
¿Qué tipo de modelo se siguieron en su construcción?
¿Son realmente preponderantes el tipo de conocimiento que nos imparten en la currícula universitaria?
Algunos de estos cuestionamientos pueden parecer muy superfluos o irreales, pero indagar no cuesta nada, es simplemente cuestion de tener perspectivas más amplias y no dejarse encasillar en dichos dentro de aula.
Una lectura muy interesante es "La catedral y Bazar" de Eric S. Raymond
Donde resalta la Ley de Linus Tolvars
“Con muchas miradas todos los errores saltarán a la vista” o dicho de otro modo
“La depuración puede hacerse en paralelo”
Les invito a leer esté artículo que esta muy bueno, cada quien saque sus propias conclusiones....
Realmente se podrá decir que la experiencia relatada en ese artículo es una muestra de lo que se puede hacer en Ingenieria de Software??
Python v3.0.1
Aqui les dejo un extracto, y como dice el Texto ABRIENDO TU APETITO, si apetito por Phyton, espero que se puedan interezar e interiorizar en Python.
1. Whetting Your Appetite
If you do much work on computers, eventually you find that there’s some task you’d like to automate. For example, you may wish to perform a search-and-replace over a large number of text files, or rename and rearrange a bunch of photo files in a complicated way. Perhaps you’d like to write a small custom database, or a specialized GUI application, or a simple game.
If you’re a professional software developer, you may have to work with several C/C++/Java libraries but find the usual write/compile/test/re-compile cycle is too slow. Perhaps you’re writing a test suite for such a library and find writing the testing code a tedious task. Or maybe you’ve written a program that could use an extension language, and you don’t want to design and implement a whole new language for your application.
Python is just the language for you.
You could write a Unix shell script or Windows batch files for some of these tasks, but shell scripts are best at moving around files and changing text data, not well-suited for GUI applications or games. You could write a C/C++/Java program, but it can take a lot of development time to get even a first-draft program. Python is simpler to use, available on Windows, Mac OS X, and Unix operating systems, and will help you get the job done more quickly.
Python is simple to use, but it is a real programming language, offering much more structure and support for large programs than shell scripts or batch files can offer. On the other hand, Python also offers much more error checking than C, and, being a very-high-level language, it has high-level data types built in, such as flexible arrays and dictionaries. Because of its more general data types Python is applicable to a much larger problem domain than Awk or even Perl, yet many things are at least as easy in Python as in those languages.
Python allows you to split your program into modules that can be reused in other Python programs. It comes with a large collection of standard modules that you can use as the basis of your programs — or as examples to start learning to program in Python. Some of these modules provide things like file I/O, system calls, sockets, and even interfaces to graphical user interface toolkits like Tk.
Python is an interpreted language, which can save you considerable time during program development because no compilation and linking is necessary. The interpreter can be used interactively, which makes it easy to experiment with features of the language, to write throw-away programs, or to test functions during bottom-up program development. It is also a handy desk calculator.
Python enables programs to be written compactly and readably. Programs written in Python are typically much shorter than equivalent C, C++, or Java programs, for several reasons:
· the high-level data types allow you to express complex operations in a single statement;
· statement grouping is done by indentation instead of beginning and ending brackets;
· no variable or argument declarations are necessary.
Python is extensible: if you know how to program in C it is easy to add a new built-in function or module to the interpreter, either to perform critical operations at maximum speed, or to link Python programs to libraries that may only be available in binary form (such as a vendor-specific graphics library). Once you are really hooked, you can link the Python interpreter into an application written in C and use it as an extension or command language for that application.
By the way, the language is named after the BBC show “Monty Python’s Flying Circus” and has nothing to do with reptiles. Making references to Monty Python skits in documentation is not only allowed, it is encouraged!
Now that you are all excited about Python, you’ll want to examine it in some more detail. Since the best way to learn a language is to use it, the tutorial invites you to play with the Python interpreter as you read.
In the next chapter, the mechanics of using the interpreter are explained. This is rather mundane information, but essential for trying out the examples shown later.
The rest of the tutorial introduces various features of the Python language and system through examples, beginning with simple expressions, statements and data types, through functions and modules, and finally touching upon advanced concepts like exceptions and user-defined classes.
Este texto fue extraído de:
http://docs.python.org/3.0/tutorial/appetite.html
En encontraras más referencias en el sitio oficial de python
http://www.python.org/
domingo, 21 de junio de 2009
Balnearios de Miraflores
Disfruten del agua a lo máximo por ahí dicen que la natacion es el segundo deporte más completo, además de ser muy relajador y desestresante.
Por lo demas es una belleza lo que la naturaleza nos dio en esta tierra mil veces bendita POTOSI... ay, si alguien se anima a i pues avisen no?? jajaja