#Humor – Programmer Focus

Hi !

focus

 

Greetings @ Toronto

El Bruno

Source: http://www.monkeyuser.com/2018/focus/

Advertisements

#Podcast – #CleanCode: development techniques, our own experiences and some smiles (spanish)

keyboard rage.gif

Hello!

In this episode I’m lucky enough to make a connection between Canada and UK to talk with Omar De el Valle (@omarvr72). Our excuse is “Clean Code” and knowing that we will always live surrounded by source code, we started to talk about

  • “Good code” and “Bad code”
  • What we feel when we go back to see our code of the past
  • Agile Documentation and source code comments
  • Exceptions Driven Applications (still there)
  • Refactoring
  • The “alleged” death of object-oriented programming

And all this accompanied by some stories that took us a couple of smiles. As we were arriving at the time of recording, we made a break and a second part oriented architectures was pending.

I hope you enjoy it.

Greetings @ Toronto

El Bruno

References

#Podcast – #CleanCode: buenas prácticas, algunas experiencias y un par de risas

keyboard rage.gif

Hola !

En este episodio tengo la suerte de hacer una conexión Canadá <-> UK para hablar con Omar Del Valle (@omarvr72). La excusa es “Clean Code” y sabiendo que tendremos que vivir siempre con código comenzamos a hablar sobre

  • “Código bueno” y “Código malo”
  • Lo que sentimos cuando volvemos a ver nuestro código del pasado
  • Documentación ágil y comentarios en el código
  • Aplicaciones guiadas por excepciones (todavía existen)
  • Refactorización
  • La “supuesta” muerte de la Programación Orientada a Objetos

Y todo esto acompañado de algunas anécdotas que nos sacaron un par de sonrisas. Como estábamos llegando a la hora de grabación, hicimos una pausa y nos quedó pendiente una segunda parte orientada hacia las arquitecturas.

Espero que lo disfruten.

Ir a descargar

Saludos @ Toronto

El Bruno

References

Asesinar todos los procesos asociados a una base de datos

Everyday hay un pequeño problema que nos da satisfacciones cuando lo podemos solucionar, el del dia de ayer, estuvo centrado en la creación dinámica de bases de datos sin utilizar ISQL y Sql scripts. Una solución fue usar SqlCommand, y ejecutar un script para el DROP y el CREATE de la Base de datos

 

DROP DATABASE MyDBPrueba

CREATE DATABASE MyDBPrueba

 

 

Sin embargo, uno de los problemas que tiene la ejecución de este script se da cuando hay algún usuario conectado a la Base de Datos; en este caso no se puede DROPPEAR la misma.

La solución a este problema puede ser este SQL script que elimina todos los procesos asociados a una base de datos.

 

USE master;

DECLARE curkillproc

CURSOR FOR SELECT

   spid,dbs.name AS dbname

 FROM

master..sysprocesses pro,

 master..sysdatabases dbs

 WHERE

 pro.dbid = dbs.dbid AND

 dbs.name = ‘MyDBPrueba’

 FOR READ ONLY

 

 DECLARE @varspid AS integer

 DECLARE @vardbname AS varchar(256)

 DECLARE @numUsers AS integer

SET @numUsers = 0

 OPEN curkillproc

 FETCH NEXT FROM

 curkillproc

 INTO @varspid, @vardbname

WHILE @@fetch_status = 0

BEGIN

 EXEC(‘kill ‘ + @varspid)

 SET @numUsers = @numUsers + 1

 FETCH NEXT FROM curkillproc

 INTO @varspid, @vardbname

 END

CLOSE curkillproc

DEALLOCATE curkillproc

 SELECT @numUsers as NumUsersDisconnected

 

Si lo traducimos a una function C#, puede quedar de la siguiente manera

 

/// <summary>

/// Disconnects the users from data base.

/// </summary>

/// <param name="sqlConnection">The SQL connection.</param>

/// <param name="databaseName">Name of the database.</param>

/// <param name="commandTimeout">The command timeout.</param>

/// <returns>The number of users disconected.</returns>

private int DisconnectUsers(SqlConnection sqlConnection, string databaseName, int commandTimeout)

{

  string query = string.Format(CultureInfo.InvariantCulture, "USE master; \r\nDECLARE curkillproc \r\nCURSOR FOR SELECT \r\n   spid,dbs.name AS dbname \r\n FROM \r\nmaster..sysprocesses pro, \r\n master..sysdatabases dbs \r\n WHERE \r\n pro.dbid = dbs.dbid AND \r\n dbs.name = ‘{0}’ \r\n FOR READ ONLY \r\n \r\n DECLARE @varspid AS integer \r\n DECLARE @vardbname AS varchar(256) \r\n DECLARE @numUsers AS integer \r\nSET @numUsers = 0 \r\n OPEN curkillproc \r\n FETCH NEXT FROM \r\n curkillproc \r\n INTO @varspid, @vardbname \r\nWHILE @@fetch_status = 0 \r\nBEGIN \r\n EXEC(‘kill ‘ + @varspid) \r\n SET @numUsers = @numUsers + 1 \r\n FETCH NEXT FROM curkillproc \r\n INTO @varspid, @vardbname \r\n END \r\nCLOSE curkillproc \r\nDEALLOCATE curkillproc \r\n SELECT @numUsers as NumUsersDisconnected \r\n", databaseName);

  SqlCommand cmd = new SqlCommand(query, sqlConnection);

  cmd.CommandTimeout = commandTimeout;

  try

  {

    return (int)cmd.ExecuteScalar();

  }

  catch

  {

    throw;

  }

}

 

 

Espero que les sea útil.

 

Saludos

El Bruno

 

PD: No hace falta que recuerde que en el caso de eliminar todas las conexiones abiertas contra una base de datos, debemos tener un cuidado especial para no reventar algún proceso importante contra la misma. Y que este codigo es un rejunte de conocimiento recolectado de diferentes artículos leidos en la Web, si puedo reuno a todas las "sources" :D.

 

CodeCamp 2006


VIC 2006

Sábado 17 desde 9:00 hasta domingo 18 de junio del 2006 hasta las 14:00

Edificio del Sucre

Historiador Ramon d’Abadal i de Vinyals
Vic Barcelona 08500

 

Información general

 

Productos: .NET,SQL Server,Visual Studio.

Audiencia recomendada: Developer.

 

MSDN y Spain.NET patrocinan el CodeCamp, un evento de fin de semana dirigido a
desarrolladores de software. Si eres inquieto, emprendedor, te gusta lo que haces y
además quieres vivir de ello, te proponemos pasar un fin de semana en Vic, y
compartir con gente como tú dos días donde sólo se hará una cosa: ¡escribir código!

Tendrás la oportunidad de aprender las últimas tecnologías que más se demandan en
la actualidad, con ponentes muy cualificados y con carácter 100% práctico, sin
transparencias ni adornos, sólo código.

Además si tienes alguna idea que quieras poner en práctica te ayudaremos a hacerlo.
Hablaremos de las distintas posibilidades para escribir software por tu cuenta, y
tendrás a expertos que te podrán asesorar en tus primeros pasos. Y por supuesto
cuenta con pasar un fin de semana divertido, con actividades y en un entorno
privilegiado.

Code Camp intenta concentrarse en seis puntos fundamentales : (1) de y para la comunidad de
Desarrolladores; (2) Gratuito; (3) Máximo aporte del contenido por miembros de la comunidad ; (4) no
comercial, solo técnica; (5) Contenidos definidos y organizados por la comunidad; (6) Se realiza fuera de
horas de trabajo.

Inscripción:

http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032300511&Culture=es-ES


IMPORTANTE:
Dispondremos de autobuses para el traslado a Vic desde Barcelona, volviendo el
domingo al mismo punto de partida. Recuerda revisar tus datos de registro e incluir tu
número de móvil para ponernos en contacto contigo.
Contamos también con un número reducido de plazas para alojarte.
Tanto el transporte como el alojamiento son gratuitos, así como las comidas y el
acceso a las sesiones.


Más información aquí.

 

Saludos

El Bruno

Mails : Visual Studio, Prerequisitos

Otro par de mails de preguntas. En este caso, prerrequisitos para Visual Studio 2003.

 

 

 

Bruno, eres muy amable… Gracias.

Ha sido de gran ayuda esta información que desconocía, por ser novato en el tema.

 

Hasta Pronto.

Rodolfo.

 


De: Bruno Capuano [mailto:bcapuano [ at ] gmail [ dot ] com]
Enviado el: Sábado, 13 de Mayo de 2006 05:28 a.m.
Para: ‘J Rodolfo’
Asunto: RE: Saludo y Pregunta

 

Rodolfo,

 

Mira si te fijas en los prerrequisitos de VS2003, http://www.microsoft [ dot ] com/spanish/msdn/vstudio/productinfo/vstudio03/sysreqs/default.asp

Puedes ver q el Sistema Operativo Windows XP Media Center no está soportado, deberías actualizar a Windows XP Professional, o Windows 2003. Esto se debe a que la versión XP Media Center no posee todas las funcionalidades de SO que tiene XP.

 

Saludos y si tienes alguna otra duda, no dudes en preguntar.

 

Bruno

 

 


From: J Rodolfo [mailto:jrodolfobv1 [ at ] yahoo.es]
Sent: sábado, 13 de mayo de 2006 0:17
To: bcapuano [ at ] gmail [ dot ] com
Subject: Saludo y Pregunta
Importance: High

 

Hola Bruno, deseando estés bien.

Necesito pedirte un favor.

Adquirí el año pasado, a finales, un paquete de Software para profesores de una institución educativa, es decir Licencias.

El paquete incluyó un sobre marcado o titulado así:

 

VStudio .NET Pro 2003 Win32 Spanish Disk Kit MVL CD

 

Este Sobre contiene una bolsa plástica con 11 (once) CD’s que abarcan:

 

1. Spanish Microsoft Visual Studio .NET 2003 Professional (Windows Prerequisites)

June 2003 Aplications

Developer Tools.

 

2. Disco 1

 

3. Disco 2

 

4. Disco 3… y así otros más hasta los que están marcados con Septiembre 2004.

 

El caso es que no se dejó instalar en mi computador. Poseo un Dell Dimension 950 con Windows XP Media Center.

 

Por favor, ¿Qué debo hacer? ¿Cómo actualizo el programa o los archivos que me permitan instalar este programa?

 

Agradezco cualquier ayuda que puedas brindar, como para no perder la inversión.

 

Hasta pronto,

 

Atte. Rodolfo Bossa.

Chía, Bogotá.

E-mail: jrodolfobv1 [ at ] yahoo.es

 

Mails – Obteniendo directorios del sistema

Nuevo mail de preguntas y respuestas …

 

Saludos

El Bruno

 

 

 

Hola

 

El codigo para la variables de entorno de Archivos de programa en smartdevice es

 

Public programFiles As String = OpenNETCF.EnvironmentEx.GetFolderPath(OpenNETCF.EnvironmentEx.SpecialFolder.ProgramFiles)

 

Bernardo

 


De: Bruno Capuano [mailto:bcapuano [ at ] gmail [ dot ] com]
Enviado el: Miércoles, 03 de Mayo de 2006 12:48
Para: ‘Bernardo Cisternas’
Asunto: RE: variable de entorno

 

Si …

Es para Vb.Net

 

Saludos

 

Bruno

 


From: Bernardo Cisternas [mailto:bcisternas [ at ] disc.cl]
Sent: miércoles, 03 de mayo de 2006 18:22
To: ‘Bruno Capuano’
Subject: RE: variable de entorno

 

Esto es para VB.net?

Me sale que GetFolderPath y SpecialFolder no es miembro de System.Environment.

Bernardo

 

 

 


De: Bruno Capuano [mailto:bcapuano [ at ] gmail [ dot ] com]
Enviado el: Miércoles, 03 de Mayo de 2006 12:00
Para: ‘Bernardo Cisternas’
Asunto: RE: variable de entorno

 

Bernardo buenos días.

 

Puedes utilizar la clase System.Enviroment, por ejemplo

 

 

Dim programFiles As String = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)

MsgBox(programFiles)

 

 

Saludos

 

 

Bruno Capuano
Sr. Solution Developer SD
Avanade, Inc. |  Madrid Development Center
This mail was sent using Office 12 beta.

 


From: Bernardo Cisternas [mailto:bcisternas [ at ] disc.cl]
Sent: martes, 02 de mayo de 2006 21:08
To: bcapuano [ at ] gmail [ dot ] com
Subject: variable de entorno

 

Hola

 

Usted sabe cual es la variable para obtener “program files” o “archivos de programa”?

 

Bernardo

 

Mails – Instalando Enterprise Library sin Visual Studio

Hace un tiempo que me llegan diferentes consultas a mi mail relacionadas con diversos temas, como por ejemplo, Enterprise Library, Microsoft CRM, .Net, Visual Studio, etc. Casi siempre trato de responder, o ayudar a la persona siempre a cambio de una pizza y un par de cervezas desinteresadamente, pero ahora q se han empezado a repetir algunos temas, comenzaré a dejar el contenido de los mails en el blog, así sirve como futura referencia y mis amigos google y msn se encargan de indexar contenido útil.

 

En este caso, un mail referido a la instalación de Enterprise Library, en un entorno de producción sin Visual Studio.

 

Saludos

Bruno

 

Gabriel, no hay problema.

 

El problema efectivamente es de permisos al momento de “inicializar” los contadores internos de EntLib, por lo que la solución debería ser utilizar el bat de ejemplo que yo he puesto en la Web.

Un par de datos para que tengas en cuenta:

 

1.         Te aconsejo copiar todo el contenido del directorio Bin de EntLib, desde tu pc de desarrollo al server de producción y también el bat.

2.         El archivo bat debe estar copiado en el mismo lugar donde estén los assemblies de EntLib.

3.         Desde esta ubicación debes ejecutar el Bat y el mismo debería funcionar sin problemas (me parece recordar que tiene puesto en duro el path del .Net Framework, deberías revisar este punto)

 

Saludos

 

Bruno

 

________________________________________

From: Gabriel D’Intino [mailto:gdintino[ arroba ]gmail[ dot ] com]

Sent: miércoles, 26 de abril de 2006 2:16

To: Bruno Capuano

Subject: Re: Sobre enterprise library…

 

Te cuento Bruno, creo que no fui muy explicito.

Ya tengo instalada la Enterprise Library en un entorno de desarrollo que cuenta con VS 2003 y no he tenido ningun problema.

Los incovenientes surguieron a la hora de ejecutar la aplicacion desplegada en un entorno de producción que no tiene instalado VS 2003.

El error que arroja la aplicación es el siguiente:

Server Error in ‘/CRM’ Application.

——————————————————————————–

System.TypeInitializationException: The type initializer for "Microsoft.Practices.EnterpriseLibrary.Data.Instrumentation.DataConnectionFailedEvent" threw an exception. —> System.Security.SecurityException : Requested registry access is not allowed. at Microsoft.Win32.RegistryKey.OpenSubKey(String name, Boolean writable) at System.Diagnostics.EventLog.CreateEventSource(String source, String logName, String machineName, Boolean useMutex) at System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData) at System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category) at System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type, Int32 eventID) at System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type) at Microsoft.Practices.EnterpriseLibrary[ dot ] common.Instrumentation.PerformanceCounterInstances.ReportCounterFailure (String message) at Microsoft.Practices.EnterpriseLibrary.common.Instrumentation.PerformanceCounterInstances..ctor(String categoryName, String counterName, Boolean createNewInstance) at Microsoft.Practices.EnterpriseLibrary[ dot ] common.Instrumentation.InstrumentedEvent.AddPerformanceCounter (String category, String[] counterNames, Boolean createNewInstance) at Microsoft.Practices.EnterpriseLibrary[ dot ] common.Instrumentation.InstrumentedEvent.Initialize(String counterCategory, String[] counterNames, Boolean createNewInstance, String eventLogSource, EventLogIdentifier[] eventIds) at Microsoft.Practices.EnterpriseLibrary.common.Instrumentation.InstrumentedEvent..ctor(String counterCategory, String[] counterNames, Boolean createNewInstance, String eventLogSource, EventLogIdentifier[] eventIds) at Microsoft.Practices.EnterpriseLibrary.Data.Instrumentation.DataServiceEvent..ctor (String[] counterNames, EventLogIdentifier[] eventLogIds) at Microsoft.Practices.EnterpriseLibrary.Data.Instrumentation.DataConnectionFailedEvent..ctor(String[] counterNames, EventLogIdentifier[] eventLogIDs) at Microsoft.Practices.EnterpriseLibrary.Data.Instrumentation.DataConnectionFailedEvent..cctor () — End of inner exception stack trace — at Microsoft.Practices.EnterpriseLibrary.Data.Instrumentation.DataConnectionFailedEvent.Fire(String connectionString) at Microsoft.Practices.EnterpriseLibrary.Data.Instrumentation.DataInstrumentationFacade.ConnectionFailed (String connectionString) at Microsoft.Practices.EnterpriseLibrary.Data.Database.OpenConnection() at Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteReader(DBCommandWrapper command) at ColumbusTechnology.Datos.BD.SQLServer.EstadoSS.obtenerPaginaVenta (Int32 est_codigo) in c:\documents and settings\gdintino\mis documentos\visual studio projects\columnbustechnology.g-call\columbustechnology\datos\bd\sqlserver\estadoss.cs:line 276

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

……………

despues de este error intente instalar la EL y me surjieron varios problemas (el bat que las genera no funciona correctamente por que dice que necesita la ruta de VS2003 y mucho menos puedo instalar los servicios) Entonces intente tocando el bat por dentro como vos mostrar en tu articulo, instalando el SDK, y demas.

Espero haberme explicado 🙂

Desde ya muchas gracias por tu tiempo

Saludos

Gabriel

 

 

 

2006/4/25, Bruno Capuano <bcapuano [ at ] gmail [ dot ] com>:

Hola Gabriel

 

Te comento un par de cosas para q las tengas en cuenta

 

1.       Si tenes el VS2003 instalado, ya tenes el .Net Framework 1.1 y todo lo necesario para poder empezar a desarrollar. No tendrías que instalar nada mas para poder utilizar Enterprise Library.

2.       Cuando me decis que no pudiste instalar EntLib, que tipo de error te dio ?

3.       El articulo que escribí yo está pensado para entornos donde no haya instalado VS, pero =mente funciona si tenes VS.

 

Tomando todo esto en cuenta, yo trataría de ver que tipo de error te da al instalar, para poder ver como t ayudo.

 

Saludos

 

Bruno

 

________________________________________

From: Gabriel D’Intino [mailto: gdintino[ at ] gmail [ dot ] com]

Sent: martes, 25 de abril de 2006 22:27

To: bcapuano [ at ] gmail [ dot ] com

Subject: Sobre enterprise library…

 

Hola, mi nombre es Gabriel, soy de Cordoba, Argentina y me tome la libertad de molestarte por lo siguiente.

Resulta que estuve tratando de instalar Enterprise Library de Junio del 2005 en un equipo que no tiene instalado VS 2003.

Este equipo al principio tenia solo el framework 1.1 y despues de agregue el SDK 1.1 y lo mismo no pude instalar la EL.

Probe modicando el .bat como dice tu articulo de: http://www.elguille.info/colabora/NET2005/bcapuano_Enterprise_Library_Install_Services_without_Visual_Studio.htm

pero tampoco funcionó. Luego copie el .bat que esta en ese articulo y nada.

Quisiera saber si conoces algun link o documento donde pueda leer y solucionar dicha situación.

Desde ya muchas gracias.

Saludos

 

Gabriel

 

 

Hugo, the Agilist Programmer

Microsoft ha preparado las nuevas herramientas de desarrollo con las que trabajamos en estos días, pensando en 3 personajes principales Mort, Elvis y Einstein. Cada uno de ellos posee sus caracteristicas personales, y cada uno de ellos representa un area de desarrollo, en pocas palabras:

 

Mort, the opportunistic developer, likes to create quick-working solutions for immediate problems and focuses on productivity and learn as needed. Elvis, the pragmatic programmer, likes to create long-lasting solutions addressing the problem domain, and learn while working on the solution. Einstein, the paranoid programmer, likes to create the most efficient solution to a given problem, and typically learn in advance before working on the solution. In a way, these personas have helped guide the design of features during the Whidbey product cycle

 

El mapeo original que haciamos hace un tiempo era Mort VB.Net, Elvis C# y Einstein C++. Sin embargo, Scott Bellware nos ha presentado un nuevo desarrollador con caracteristicas de los 3 anteriores y new features muy interesantes; Hugo.

 

El planteo que hace Scott, es bastante interesante ya que plantea conceptos como que Hugo desestima VSTS por herramientas Open Source, ya que la relación costo-beneficio no justifica la inversion inicial; el concepto de desarrollo de Hugo es 100% test-first programming utilizando tecnicas como TDD, etc; Hugo no cree en RAD, ya que la utilización incorrecta de este tipo de herramientas tienden a complicar el codigo y los componentes del mismo; etc.

 

Finalmente, Scott predice que tal vez Hugo sea el próximo eslabon en la cadena evolutiva de los desarrolladores.

 

Si tienen un tiempo, les recomiendo leerlo.

 

Saludos