Tuesday, September 05, 2006

Hora de un ping…

Se presento que teniamos que dejar monitoreando por un lapso de 24 hrs unos IP’s en especifico, y si había algún timeout saber el horario en que se presento. Pues bueno no teníamos una herramienta comercial para realizar esto, así que un pequeño batch recursivo soluciono nuestro requerimiento (looping.bat):

Echo %TIME%>>TS1log.txt
ping 10.20.13.13>>TS1log.txt
Echo %TIME%>>TS2log.txt
ping 10.20.13.35>>TS2log.txt
Echo %TIME%>>TS3log.txt
ping 10.20.13.63>>TS3log.txt
loopping.bat

CRC Cards.

CRC (Class, Responsibilities, and Collaborators), método que se basa en el uso con tarjetas. Un método muy practico para definir tus clases y la interacción que hay entre ellas. Puedes realizar tu análisis y diseño usando este método, y así identificar las clases que compondrán tu sistema.

No requieres de una computadora o sistema para llevarlo acabo. Permite a los participantes experimentar como va a trabajar el sistema.

También es una herramienta muy útil para enseñar el paradigma orientado a objetos. Es algo informal pero muy practico y obtienes resultados tangibles rápidamente.


Es crear tarjetas que representaran tus clases, por medio de escenarios basados en requerimientos del sistema, que van modelando el comportamiento de tu sistema o solución.
En la sesión cada una de las tarjetas representa una clase identificada, y cada tarjeta se le definen sus responsabilidades y las clases que se utilizaran en colaboración.


Hay muchos sitios que tocan el tema entre ellos: Introducción a CRC, Aquí se encuentra un buen ejemplo de un modelo CRC.
Análisis y Diseño orientado a objetos utilizando CRC.


Diseño de tarjeta:





Wednesday, July 05, 2006

SQL server Monitoreo de Jobs

Requieres realizar un monitoreo de Jobs, a un servidor de producción. El problema es que no eres el dueño de los Jobs, tienes tu propia cuenta solo de lectura a la base de datos de tu proyecto. El problema es que estos Jobs no los puedes visualizar a través de la consola de SQL Server.

Se me presento esta situación el cambio de owner de los Jobs seria muy difícil y podrías afectar su ejecución ya que la es de solo lectura.
Así que la mejor solución fue realizar una consulta a las tablas de Jobs, que mantiene en la base MSDB:

select b.name, b.enabled, b.description,
a.instance_id, a.step_id, a.step_name, a.message, a.run_status, a.run_date,
a.run_time, a.server
from msdb..sysjobhistory a inner join msdb..sysjobs b on a.job_id = b.job_id
order by b.name, a.run_date



Esta base de datos conservan la información utilizada por SQL Server y sus componentes, pero estas información no debe ser alteradas directamente por ningún usuario. Sin embargo muchas de las columnas o campos que se encuentran en estas tablas no se encuentran documentados.

La información que conserva esta base de datos es información es utilizada por SQL Server internamente. Conserva información del diseño de las bases, Store procedures, funciones, Jobs, catalogo de funciones del API, DTS, entre otras cosas.
Así que con un acceso de solo lectura a MSDB se soluciono.


Tuesday, July 04, 2006

Verificando un puerto...

Un tip. . . como validar si en el ambiente que estas trabajando puedes acceder un puerto de una PC o Server remoto. Algunas vez te has preguntado cual es la manera mas rápida de saber si tienes acceso a un puerto?, se encuentra activo?. Utilizando el ping puedes saber si tu servidor o PC se encuentra activo, pero no puedes saber si el puerto 7020 esta abierto.
Desde el command prompt, ejecutando un Telnet a ese puerto, Ejemplo:

Telnet 10.20.143.234 7020.

En esta caso queremos validar si el puerto esta 7020, esta activo en esa PC. El comando en caso de no poder abrirlo te enviaría el mensaje, que no puede abrir el puerto y ha fallado la conexión.
Si estas tratando de alcanzar un puerto http. Ejemplo: Telnet 10.20.143.234 80 Une vez conectado tecleas “GET /”. Si te regresa un mensaje en HTML, ahí se encuentra un web Server.

Esta es una manera rápida, barata de verificarlo, ya que existen otras utilerías en el mercado, que te dicen los puertos disponibles de acuerdo al IP que proporcionas.


Ahora si quieres saber los puertos activos de tu PC y quieres saber que aplicación esta utilizando esos puertos, hay una utilería FPort
y es gratis, que te ayuda realizar esta tarea.

Wednesday, February 08, 2006

Convention Names

Charly, gracias por tu comentario, y mejorar este punto. El precursor de la notación húngara, es el siguiente estándar de codificación que se utiliza en .NET (De hecho como comenta es un estándar de Microsoft

El cual Charly menciona en su comentario, y una excelente observación para seguir esta propuesta, ya que es mas completa y robusta. De acuerdo a puntos que menciona. Echenle un vistazo al comentario….

Convention Names

Que demonios es convention names? Como le hago para formar mi especificación de conventions names?... pa’ que sirve?.
Bueno en la mayoría de proyectos profesionales todos tienen definida su especificación de conventions names, es algo esencial para tener un código de programación legible para cualquier programador que sea parte del equipo de desarrollo, la implementación de esta especificación da a conocer como es que se manejan los nombre de variables y componentes dentro del desarrollo de una aplicación. Y ayuda al programador a producir un mejor código y mas rápido.
Una gran mayoría han adoptado la notación Húngara (‘Hungarian notation’), Inventada por Charles Simonyi de Microsoft. Esta convención es muy practica en muchos de los lenguajes de programación como Java, Delphi, C++, etc..
Algunos ejemplos de convenciónes puedes encontrarlas en Internet, y puedes basarte en ellas para crear tu especificación. El objetivo de esta especificación es tener agregar un prefijo para indicar el tipo funcional de un identificador, y tener un acuerdo entre los programadores de cómo nombrar las variables y componentes.
Algunos links, donde puedes encontrar mas información:
Del propio Charles Simonyi
Discusión de la notación Húngara
Ejemplos:Ejemplo1,
Ejemplo2




Tuesday, February 07, 2006

Problema con servicio Print Spooler


Primer articulo, un problema con el servicio Print Spooler del sistema operativo. Y bueno así se presento este problema, se encuentra detenido este servicio de un servidor, y este servicio se encarga de realizar todas las impresiones de la aplicación que se encuentra centralizada en un servidor.
Que raro. . . por el automáticamente los servicios del sistema operativo (Win 2000, XP y 2003), se re-inician 2 veces por defecto, y las siguientes intentos dejan de hacer acción alguna.

Primero seria saber el por que se quedo parado el servicio aun después de 2 re-inicios, así fue como en el event viewer, se encontró la razón del porque se encontraba corrompido alguno los archivos a imprimir. Entonces bloqueaba el print spooler de paraba, y bloqueaba todas las colas de impresión. En este caso era 1 cola de impresión en la cual estaba el problema, pero paraba mas de 10 colas de impresión, debido a la baja del print spooler.
Entonces la pregunta seria que hacer cuando se bloquean las colas de impresión?. Ahí fue como investigando se puede realizar esto de manera automática.
Para el sistema operativo Windows, hay un fólder en donde se depositan todos los archivos de documentos pendientes por imprimir este se encuentra en el directorio del sistema operativo, bajo el fólder spool. (Ejemplo: “c:\windows\System32\spool”). Estos archivos son lo que tienen la extensión *.spl y *.shd.
Excelente, ahora solo fue implementar el borrado de estos archivos en un batch file. Quedo de la siguiente manera:

NET STOP "print spooler"
c:
cd C:\WINDOWS\system32\spool\PRINTERS
del *.spl
del *.shd
NET START "print spooler"


Ahora solo fue decirle al servicio que cuando intente re-iniciar ejecute primero este batch file. Esto es en las propiedades del Print Spoooler, en el tab de Recovery, seleccionar en respuesta a la primer y segunda falla que ejecute un programa, después el programa a ejecutar seria el batch file. (Ejemplo: “ d:\batch\SPrint.bat”).

Después el problema quedo solucionado. . . .

Dev & Tecno Blog

Al fin me decidí a crear mi blog. Y este va enfocado a mi trabajo diario y experiencias las cuales pueda compartir con otras persona y que puedan ser de utilidad, ya que a veces las experiencias por las cuales cada quien va pasando son de gran utilidad para otras personas que en algún momento pueden ser útiles para tomar mejores decisiones, ayudar a resolver algun problema que se presente, o simplemente tomarlo como cultura general. Enfocado en cosas relacionadas con programación, así como dar seguimiento a noticias relevantes o de interés relacionadas con Tecnología.