Hi !
Greetings @ Toronto
El Bruno
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
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
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
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.
Saludos @ Toronto
El Bruno
References
Hola !
Amazing one …
And bonus
Saludos @ Madrid
El Bruno
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.
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
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
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
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
|
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