Feeds:
Entradas
Comentarios

This is my story, I’m a programmer who recently moved to a position as a business analyst in a big telecommunications company, and now 6 months later, I regret my decision. In the lines that follow I write my reflections regarding my decision. English is not my native language and although I got B+ in the written Cambridge exam, I haven’t written anything in English since school, so please pardon any grammatical mistakes or phrases that may sound awkward.

I question my decision almost daily; did I make the right decision when I change my programmer job for a business analyst position? I do not program anymore , or I seldom write a line of code, the problem with this is that I love programming, and the reason I accepted the position is because I knew I was going to have to do the transition to management some time, it just how it works if you want to keep progressing career wise, but now I guess I either did it too soon, or I should have stayed earning less money and doing what I love to do, I have to admit remuneration had a weight when I took my decision. My function as a business analyst is basically that of a project manager, I just start new projects to solve business problems, I have meetings every day, and there is a group of programmer that materialized my ideas. I have to admit I have learned a few things in this job, but I could also be learning a lot of things if I were still a programmer, I hate to check dzone every day and look at all the new frameworks that are coming out without being able to use them in a project, of course, I can suggest a framework to the developers, but as the person responsible for the project I know that using a new framework could jeopardize any project specially if the programmers are not familiarized with it, besides there is no point in suggesting them a framework I like since I will never write a line of code and I would just feel worst.

Now there are some paths I can take, one is to keep being miserable in my current job and hope that someday I will like it, or I can start looking for a programmer job before it’s too late. If I take the latter, I have to hurry up because nobody wants to hire someone who hasn’t written a line of code in a year as a programmer.

To satisfy my desire to write code I’ve been working as a consultant developing some small applications, however, my work as a business analyst is time consuming and eventually I will have to decide to concentrate on one of the two thing, besides I’m still in the university and will be for over a year more, so I have a really busy schedule. Before taking this horrible decision to move in to management, I worked for 3 years in the software development field, that if you don’t count that I have been programming since I was 10 years old. When my life was not miserable, I developed web applications in mainly in .NET, and some others in Java and Ruby (no, I didn’t like ruby). Please think twice before you decide to stop doing that you love just because you want to earn more money, management is the dark side to any programmer that loves what he does.

If you are like me and you love to write code, learn new languages, and user new frameworks, you will most probably end up in my situation, especially if you are as young as me (I’m 22 years old). Moving in to management is something you will probably have to do someday, so enjoy your stay while you have the choice to do that you love, unfortunately, I wasted it.

Para poder descomprimir archivos en .NET primero necesitamos descargar una libreria llamada SharpZipLib, es open source y la puede descargar de la siguiente direccion http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx Descarguen la primera opcion, luego dentro del archivo van encontrar 3 carpetas, abran la que dice “net-20″ y descompriman el DLL a cualquier carpeta en su computadora. Luego en su proyecto de Visual Studio agreguen una referencia a este DLL. Para agregar una referencia hagan clic derecho sobre el nombre de su proyecto en el explorador de soluciones y luego hagan clic en la opcion agregar referencia. En la nueva ventana hagan click en la pestania “Browse” o “examinar” y seleccionar el DLL que acaban de extraer.

Ahora vamos al codigo, esta libreria incluye una funcion para extraer un zip files aun directorio. Es la siguiente:    

FastZip fZip = new FastZip();
 
fZip.ExtractZip(@”C:\miarchivo.zip”, @”C:\Temp”“”);

Explicacion:

En la linea numero uno creamos una instancia de la clase FastZip.
Luego llamamos la funcion ExtractZip, el primer parametro es la ruta al archivo zip que quieren extraer, el segundo es la carpeta a donde lo quieren extraer, y el tercero es una expresion regular que representa el filtro de los archivos a extraer. Por ejemplo, si yo quiero extraer solo los archivos de imagen que se encuentran dentro del zip pondria de filtro esto “(?i)^.*(?:(?:.jpg)|(?:.png))$” .

Existen casos en los que en oracle enterprise manager esta caido por alguna razon, y necesitamos saber el estado de la instancia de la base de datos. Para darles un ejemplo, hace poco tuve un problema con un servidor en el que el oracle enterprise manager se congelaba sin ninguna razon, entonces esta era la unica forma de saber que pasaba. Bueno lo primero que hay que hacer es conectarse al SQL plus como sysdba, de la siguiente forma:

sqlplus / as sysdba

notaran que no especifico ninguna usuario ni contrasenia, esto es porque me estoy conectando desde la maquina donde esta instalada la base de datos. Asegurense de que el usuario que estan utilizando perteneza al grupo DBA.
Bueno luego de haberse conectado a la base de datos vamos a consultar una vista v$. Las vistas v$ se pueden access aunque la base de datos no este en esta “open”

select status from v$instance;

Este sentencia les devolvera el estado de la instancia, el cual puede ser “nomount”,”mount”,”open”

Esto aplica mas que todo en un datawarehouse, si quiere que un indice en una tabla que contiene millones de filas se cree mucho mas rapido ejecuten este comando antes de crear el indice:

alter session set sort_area_size=400000

Luego ejecuten el indice, en las veces que he utilizado el comando el indice se crea hasta 5 veces mas rapido que sin utilizar el comando. Adicionalmente asegurense de utilizar paralelismo para crear el indice. El paralelismo solo funciona en la version enterprise de oracle.

En uno de los sistemas que desarrolle para una empresa de energia electrica, me pidieron como requerimiento en el gridview se pudiera editar todas las filas al mismo tiempo, y luego utilizar un boton de guardar para guardar los cambios. Esto se conoce como edicion en masa (o bulk edit en ingles). En un gridview normal se tiene que editar las filas una por una y luego hacer clic en un boton para guardar los cambios nada mas a esa fila, lo cual es muy lento. Bueno pues para solucionar el problema lo que hice fue utilizar unos controles ya hecho y asi no me complique mucho. Aqui pueden ver una foto de como se ve el gridview.

enhancedview

Despues de hacer los cambios nada mas hacen clic en un boton de “Guardar” para guardar todos los cambios. Bueno aqui les dejo el link para descargar estos controles. Si no saben como agregarlos al visual studio posteen un comentario y con gusto les ayudo. El link es: http://www.codeplex.com/ASPNetRealWorldContr

Estoy tratando de revivir mi blog, y aprovechando que estoy aprendiendo nuevas cosas en mi nuevo trabajo decidi escribir este post que espero que le sea util a mas de alguna persona.

Bueno si estan leyendo eso es porque han oido de los famosos sistemas OLAP o datawarehouses. OLAP quiere decir Online Analytical Processing, o en espaniol, Procesamiento Analitico en Linea. Generalmente estas bases de datos son datawarehouses, y se utilizan para inteligencia de negocios o mineria de datos. Un datawarehouse es una base de datos que contiene datos historicos, y aparte de esos este tipo de bases de datos (OLAP) esta diseniada para optimizar la consulta de la informacion (SELECTS) a diferencia de las bases de datos OLTP que estan optimizadas para la insercion de datos (INSERTS, Y UPDATES). Los sistemas principales de las empresas son OLTP, me refiero a los sistemas donde guardan la informacion de ventas u otras transacciones del negocio diariamente. El problema es que en los sistemas OLTP no tienen ningun beneficio guardar el historico de transacciones por mucho tiempo, ni tampoco estan optimizados para SELECTs por lo que si nos ponemos a analizar la informacion directamente en estos sistemas, es probable que no lo soporten. Ahi es donde entra el datawarehouse, su nombre literamente traducido al espaniol es “bodega de datos”, y eso es lo que es en realidad, aqui se guarda toda la informacion antigua que ya no se necesita en los sistemas transaccionales (OLTP), con el proposito de poder analizar la informacion y hacer predicciones en el flujo del negocio (OLAP), o para descubrir patrones escondidos en los datos (data mining). Hay que estar claros que OLAP y Data mining son cosas diferentes, por ejemplo, con OLAP yo puedo responder la pregunta “Cuantas ventas he tenido en todo el anio” mientras que con data mining puedo responder “Que clientes van a comprar mi nuevo producto”.

Para transferir la informacion de mi base de datos OLTP al data warehouse se usa un mecanismo ETL (Extract, Transform, Load) que lo que hace es extraer, transformar y cargar la informacion al DW. La informacion se transforma con el objetivo de resumirla, o en muchos casos la informacion proviene de sistemas OLTP diferentes por lo que no viene en el mismo formato, en esos casos hay que transformarla a un mismo formato y luego cargarla en el datawarehouse.

Para conluir:
* El datawarehouse esta hecho para el analisis de la informacion mientras que los sistemas transaccionales (OLTP) estan hechos para ser rapidos en la insercion o actualizacion de la informacion

* El datawarehouse almacena los datos historicos que ya no se necesitan en los sistemas transaccionales asi como tambien informacion actual del negocio.

* El disenio de un datawarehouse es completamente distinto del de un sistema OLTP, en otras palabras, todo lo que ustedes saben de base de datos no aplica al datawarehouse, por ejemplo, en un DW se usan tipos de indices diferentes a los que se usan en los sistemas OLTP, estos indices se conocen como bitmap indexes.

* La informacion en los datawarehouse es actualizada diariamente, semanalmente o mensualmente, no es en tiempo real, esto se hace a traves de un proceso ETL

Si solo quieren sacar una muestra de filas de un select en oracle, cuando hablo de muestra me refiero a seleccionar filas a la suerte o al azar, pueden usar la sentencia “sample” en su select, de esta forma pueden seleccionar solo una muestra del total de datos del select(seleccionar filas a la suerte en otras palabras). La sentencia lleva como parametro el porcentaje de filas que quieren regresar del total del select. Se usa de la siguiente forma:

SELECT * FROM hr.employees SAMPLE(10)

Esta sentencia me va regresar solamente el 10% de los resultados del SELECT, se supone que aleatoriamente, pero ustedes deciden que tan aleatorios son los resultados. El numero dentro del parentensis es el porcentaje de filas que desean seleccionar. Desgraciadamente tiene sus limitaciones, las cuales para mi no han representado ningun inconveniente hasta la fecha, pero para que las sepan:
1. No se puede usar con joins.
2. La tabla debe tener llave primaria.

Que es un patron de disenio?

Segun wikipedia un patron de disenio es una solucion reusable a un problema comun en el disenio de software. Para mi, un patron de disenio es la forma correctar de hacer las cosas, normalmente esta forma correcta no es correcta solo por serlo, si no que los patrones de disenio traen beneficios evidentes, como lo son, codigo mas legible y ordenado, entre otros.

En esta serie de tutoriales, que espero tener tiempo para finalizarlos, les voy enseniar lo que son los patrones de disenio, si aprenden a dominar los conceptos les va facilitar la vida, y si nunca lo emplean, por lo menos van a poder impresionar a alguien porque la palabra patrones de disenio se oye bastante rebuscada.

Como ingeniero me han enseniado a simplificar las cosas lo mas que pueda, por lo que voy a tratar de hacer las explicaciones lo mas simples posibles. Por alguna razon los programadores tienden a complicarse la vida, pero el que complica las cosas es el que no sabe lo que esta haciendo. Para mi existe una relacion entre la simpleza y la sabiduria, y entre mas simples se hacen las cosas, mas conocimiento se tiene de lo que se hace. Por lo tanto, voy a tratar de que mis explicaciones sean simples, para que cualquier persona las puedan entender. Continuar leyendo »

El nuevo navegador de google, google Chrome, esta disponible para ser descargado, aqui les dejo el link.

http://www.google.com/chrome

Este es el tipo de letra que utilizo yo, se llama Envy Code R, se supone que esta hecha para programadores, a mi me gusta mucho mas que la letra por defecto del visual studio. Aqui les pongo una imagen de como se ve. Tambien les pongo el esquema de colores de mi visual studio, Continuar leyendo »

Entradas antiguas »