Resumen del Primer Evento de la Comunidad de Entusiastas Digitales

Hola ¿Qué tal?…


Pues me encuentro en este momento en el evento de comunidad de Entusiastas convocado por Microsoft. En este evento pretendía entrevistar a Eduardo Rivadeneira… pero por lo ocupado que anda con el evento, pues no fue posible, sin embargo no duden que le tengo que arrancar una entrevista para que nos hable de lo que es esto de entusiastas de viva voz.


Bien, la reunión fue muy enriquecedora y aunque no fueron sesiones técnicas enfocadas a desarrollo, quiero decirles que hubimos varios desarrolladores aquí. Las pláticas se enfocaron al “ego” tecnológico de los usuarios apasionados con la tecnología, así es, a todos aquellos que gustan de tener la gran PC, también a aquellos que gustan de los teléfonos celulares, y también a los que les gusta moverle sin cesar a las características de Windows, para todos aquellos que gustan saber de trucos para tener la mejor PC o para personalizar al máximo su Windows, para todos ellos está enfocada esta nueva comunidad.


Quién no ha visto a algún amiga, parienta o compañera, o a algún amigo, pariente o compañero que guste de tener la mejor PC, o quién no ha tenido la recomendación de un power user de Windows que nos dice como ajustar la configuración de nuestras ventanas, bien, si conoces a alguna o alguno, o mejor aún, si eres una de estas personas, no dudes de comentar que ahora este tipo de apasionados tienen un nuevo lugar para compartir experiencias y conocimiento relacionado con lo que más les gusta, esta comunidad es la comunidad de entusiastas.


También están los gamers (en los cuales me incluyo), que son los apasionados de los juegos de PC o de Consola, y más aún, también los que gustan de la robótica por hobbie, también habrá lugar para ellos y para cada entusiasta tecnológico que desee platicar de lo que más le gusta con gente que comparte sus gustos, sus conocimientos y su pasión.


Bien, no dejen de visitar el sitio de la comunidad de entusiastas en:


http://www.entusiastasdigitales.com/


Buen sitio y espero que por ahí nos veamos…


Saludos…


Octavio Telis

Archivos de los Ejemplos de Eventos del Teclado en WindowsForms

Hola… ¿Qué tal?


En el artículo que publiqué anteriormente referente al uso de los eventos del teclado hay dos ligas a los ejemplos que acompañan al artículo, son las ligas a archivos comprimidos, uno para el ejemplo en VB.NET y otro para el ejemplo en C#, pues bien, las ligas estaban rotas, bueno… pues ya actualicé las ligas y ya pueden descargar los archivos de ejemplo directamente del sitio de la publicación.


La publicación está en:


http://msmvps.com/blogs/otelis/archive/2007/04/06/eventos-del-teclado-en-windowsforms.aspx


Así que si aun no lo han leído, los invito a que lo lean, o bien, si ya lo leíste, ahí están ya a tu disposición los ejemplos de código.


Espero que les sea de utilidad.


Saludos…


Octavio Telis

El Concepto de Clase en los Lenguajes .NET

Hola ¿qué tal?…


En esta ocasión vamos a hablar del concepto de clase, esto es, hablar de lo que es una clase dentro de la programación orientada a objetos desde el punto de vista de los lenguajes .NET y el .NET Framework, es importante para los que empiezan y para los que están cambiando a algún lenguaje .NET, ya sea C# o VB.NET, desde lenguajes como Visual Fox Pro o de Visual Basic 6 y anteriores.


Empezaremos por identificar a la clase dentro de la familia de tipos de los lenguajes .NET, primeramente para ubicar la clase dentro de la familia enumeraremos los tipos (entiéndase por tipo lo que da origen a un tipo de dato en la programación orientada a objetos en .NET) que se encuentran en dichos lenguajes.

Tipos (c#, VB.NET)

Clase (class, Class)
Enumerador (enum, Enum)
Delegado (delegate, Delegate)
Estructura (struct, Structure)
Interfaz (interface, Interface)


Como verán tenemos cinco tipos en .NET que nos permiten definir tipos de datos para utilizarlos generalmente para definir variables nominales o anónimas dentro de nuestros programas. De estos cinco la clase es la más importante, dado que podemos ver a la clase como la parte viviente de .NET y al resto como simbiontes de la clase, curioso pero cierto, la clase es lo que da vida a nuestros programas a manera de célula, que en conjunto podríamos decir que crean un organismo que es lo que al final llamamos programa o aplicación.


La clase es el principal lugar donde se puede ejecutar código y donde se utilizan los otros tipos, ya que los otros tipos no pueden tener funcionalidad propia por no tener la capacidad para iniciar una aplicación, es por eso que la clase es fundamental para el uso de los demás tipos, un caso cercano a la clase es la estructura que también tiene capacidades para definir funcionalidad en forma de código ejecutable, dado que es similar a una clase, sin embargo, tiene muchas limitantes respecto a las capacidades de una clase, la estructura es utilizada para definir tipos de datos de valor, no acepta herencia y no puede ser heredada, y la clase es la que se utiliza para definir tipos de datos de referencia.


Una clase es la que tiene el poder de ejecución en los lenguajes de .NET, la mayoría del código que escribiremos en nuestros programas será escrito en una clase y la mayoría de la funcionalidad del .NET Framework será utilizada a partir de una clase. De ahí que el concepto de clase es un concepto fundamental para el desarrollo de aplicaciones con .NET.


Antes de continuar entendamos algo, que la clase es lo más importante sin que esto quiera decir que es la única pieza de programación, pues como decía, los otros tipos dependen de la clase para vivir, así como, la clase depende de ellos para extender sus capacidades, aunque al final todo se convierte en un programa, bien, no olviden que los otros tipos son también importantes para que nuestras clases alcancen su mayor potencial, pero nade se haría si no está una clase de por medio.


Entonces, empecemos con la base de lo que es una clase.


Clase, Objeto y Miembros de una Clase


Una clase es la parte de programación que nos ayuda a definir la funcionalidad que tendrá un objeto, una clase no es un objeto, que quede claro, un objeto se crea a partir de la instancia de una clase, importantísimo para que no confundan las clases con objetos. Bien, la clase define entonces la funcionalidad de un objeto, dentro de ella se escribirán las capacidades del objeto y entre estas capacidades estarán principalmente las propiedades, los métodos, los eventos. Estas capacidades están dadas por lo que llamaremos miembros de la clase, en sí, cada uno de estos es un miembro de la clase, donde también están los campos. Definimos un miembro de la clase a todo aquél método, propiedad o variable que esté declarado en seguida de la definición de la clase, a lo que se llama nivel de clase, que es toda declaración hecha dentro de las llaves del bloque de código de la clase. Las variables declaradas a nivel de clase son llamadas campos, que por lo general son de alcance privado (prívate).


La clase puede ser entendida como el plano de una casa, así como en los planos de las casas podemos identificar las dimensiones de los cuartos, la cantidad de ventanas, la forma de las fachadas, etc. En una clase podremos ver qué tareas puede realizar un objeto, qué propiedades va a tener un objeto y a qué eventos va a reaccionar un objeto, así es, todo es pensando en un objeto, mismo que será construido a través de una instancia, algo similar al hecho de que una casa se construye a partir de sus planos. Así entonces, empecemos a pensar en nuestra clase como la definición de funcionalidad de un objeto.


Ejemplos de la definición de una clase con sus miembros:

‘Ejemplo de clase en VB.NET
Public Class EjemploVB
    ‘Estos son campos (Miembros)
    Private mNombre As String
    Private mApellido As String

     ‘Estas son propiedades (Miembros)
    Public Property Nombre() As String
        Get
            Return mNombre
        End Get
        Set(ByVal value As String)
            mNombre = value
        End Set
    End Property
    Public Property Apellido() As String
        Get
            Return mApellido
        End Get
        Set(ByVal value As String)
            mApellido = value
        End Set
    End Property

   ‘Este es un método (Miembro)
    Public Function GetNombreCompleto() As String
        Return mNombre & ” “ & mApellido
    End Function
End Class

//Ejemplo de clase en C#
public class EjemploCSharp
{
    //Estos son campos (Miembros)
    private string nombre;
    private string apellido;

    //Estas son propiedades (Miembros)
    public string Nombre
    {
        get
        {
            return nombre;
        }
        set
        {
            nombre = value;
        }
    }
 
    public string Apellido
    {
        get
        {
            return apellido;
        }
        set
        {
            apellido = value;
        }
    }
 
    //Este es un método (Miembro)
    public string GetNombreCompleto()
    {
        return nombre + ” “ + apellido;
    }

}


Instancia


La instancia de una clase se realiza con la utilización de la instrucción new (New en VB.Net), esta instancia podrá realizarse de varias maneras dependiendo del lenguaje y de las necesidades del programa. Pero en todos los casos será para construir un objeto el cual estará en la mayoría de los casos alojado en una variable declarada con anterioridad y algunos otros podrá ser de manera anónima. Al referirme a la manera anónima quiero decir que se utiliza la clase sin necesidad de declarar una variable para acceder a la funcionalidad.


Ejemplos de instancias:


En VB.NET

Dim EjemploInstancia1 As EjemploVB
EjemploInstancia1 = New EjemploVB()
 
Dim EjemploInstancia2 As EjemploVB = New EjemploVB()
 
Dim EjemploInstancia3 As New EjemploVB()

‘Uso de la clase de manera anónima
Dim Nombre As String = New EjemploVB().GetNombreCompleto()


Ejemplo en C#

EjemploCSharp EjemploInstancia1;
EjemploInstancia1 = new EjemploCSharp();
 
EjemploCSharp EjemploInstancia2 = new EjemploCSharp();

 //Uso de la clase de manera anónima

string nombre = new EjemploCSharp().GetNombreCompleto();


Herencia


Bien, estás clases pueden ceder ciertas partes de su funcionalidad a otras clases, estas partes estarán limitadas por lo que conocemos como alcance, esto es, los miembros de la clase podrán ser privados, públicos o protegidos. Los miembros que podrá ceder la clase a otras clases serán únicamente los miembros públicos y protegidos, y los que podrán utilizarse al exterior de la clase beneficiada, serán los públicos. Está cesión de funcionalidad es conocida como herencia, donde una clase hereda su capacidad a otra tomando en consideración el alcance de sus miembros. La clase que hereda a otra es llamada clase base, y la clase que recibe la herencia es llamada clase derivada, así pues, podemos ver cómo una clase puede ser extendida en otra por medio de la herencia.


Ejemplo de herencia:


En VB.NET

‘Esta es una clase base
Public Class ClaseBase

    Public Sub MetodoA()
      ‘Tareas a realizar
    End Sub

    Protected Sub MetodoB()
      ‘Tareas a realizar
    End Sub
End Class

‘Esta clase se deriva de ClaseBase
Public Class ClaseDerivada
    Inherits ClaseBase

    Public Sub Metodo1()
      ‘Tareas a realizar
    End Sub
End Class


Uso de los miembros heredados:

Dim Var1 As ClaseDerivada
Var1 = New ClaseDerivada()
 
Var1.MetodoA()

Var1.Metodo1()


Aquí el método MetodoB no podrá ser utilizado por la variable Var1 dada la definición del alcance, sin embargo será perfectamente útil dentro de la clase derivada.


En C#.NET

//Esta es una clase base
public class ClaseBase
{
    public void MetodoA()
    {
        //Tareas a realizar
    }
    protected void MetodoB()
    {
        //Tareas a realizar
    }
}
 //Esta clase se deriva de ClaseBase
public class ClaseDerivada : ClaseBase
{
    public void Metodo1()
    {
        //Tareas a realizar
    }
}

Uso de los miembros heredados:

ClaseDerivada Var1;
Var1 = new ClaseDerivada();

Var1.MetodoA();

Var1.Metodo1();


Aquí el método MetodoB no podrá ser utilizado por la variable Var1 dada la definición del alcance, sin embargo será perfectamente útil dentro de la clase derivada.

Conclusión


Pues hemos visto los conceptos básicos del uso de una clase. Los formulario son clases dentro de nuestra aplicación, estos formularios son heredados de la clase System.Windows.Forms.Form en el caso de aplicaciones que utilizan WindowsForms, para el caso de WebForms, los formularios web se heredan de Sysetm.Web.UI.Page. Y bueno, teniendo en consideración esto, las clases de formulario pueden ser extendidas con miembros personalizados, esto es, que podemos agregarles nuevas propiedades, nuevos métodos y nuevos eventos, de hecho, cuando agregamos un control a un formulario, lo que estamos haciendo es extender la clase base de este, al decir que extendemos la clase base me refiero a que se agrega funcionalidad adicional a la que ya tenemos disponible por la herencia.


Hay mucho más detrás de las clases y el uso de los elementos de cada lenguaje, sin embargo, con esto quiero mostrar que al utilizar los lenguajes .NET estaremos utilizando clases, lo que implica cambiar la visión de los elementos de la aplicación al venir de lenguajes como Visual Basic 6. En publicaciones anteriores hablo con detalle de los constructores de una clase, de las propiedades y de los eventos, solo faltaba definir el concepto de clase.


La clase será en adelante nuestra amiga cada vez que desarrollemos una aplicación y si vienes de un lenguaje como Visual Basic 6 o anteriores, tendrás que hacer un esfuerzo por ubicar la clase como la pieza fundamental de tus aplicaciones sin que esto implique complejidad al codificar, solo implica un cambio de la visión del código.


Pues esto es todo y espero que les sea de utilidad.


Saludos…


Octavio Telis

Resumen del Evento de la Comunidad.NET del DF Mayo 2007

Hola ¿Qué tal?…


Pues eso, que ayer (29May2007) fue la reunión de la comunidad.NET del DF, esta reunión en particular fue muy productiva, no es tanto porque tuve el turno de hablar acerca de las nuevas características de C# 3.0, en realidad solo di dos temas sobre esto; Tipos Implícitos y Métodos de Extensión, que en realidad fue para no sobresaturar a la audiencia por lo tedioso que es a veces la especificación de un lenguaje, sin embargo, la segunda charla a cargo de Héctor Obregón estuvo interesante como es costumbre de él y nos habló de varios aspectos relacionados con la seguridad dentro de las aplicaciones .NET, básicamente nos platicó sobre las consideraciones que debemos tener al codificar las aplicaciones, una de estas consideraciones es el implementar Secure Code Access, donde el código queda protegido de ejecuciones ajenas a la aplicación, pueden ver más acerca de esto en: http://msdn2.microsoft.com/en-us/library/33tceax8(VS.71).aspx. También nos dio una inducción a CardSpace, interesante igualmente. Seguido vino el turno a un ponente invitado, Juan Karam, quien nos habló de las características, bastante útiles, de VS Team System Architect, vimos cómo la herramienta nos provee de diseñadores conceptuales de la arquitectura de una aplicación para después de estar definida en todos los aspectos dentro de un diseñador, al estilo del diseñador de clases o del diseñador de Sql Server, se generan los proyectos y la distribución teniendo en cuenta los requerimientos del software y referencias para dejar todo listo para empezar a codificar la funcionalidad definida.


Al terminar, se dio la oportunidad para convocar nuevos conferenciantes dentro de los asistentes, donde con agrado puedo decir que surgieron buenas propuestas para ponencias y al menos tres conferenciantes más. También estamos planeando otros eventos conjuntos, pero eso otra historia y por ahora no podemos profundizar más.


Aquí les dejaré algunas referencias adicionales para que extiendan los conocimientos transmitidos en nuestra reunión.

 

Más información referente a esta sesión de la comunidad.NET del DF.


¿Qué es CardSpace?:


http://cardspace.netfx3.com/content/introduction.aspx


Más sobre seguridad, interesantes artículos tiene Kim Cameron en su blog:


http://www.identityblog.com/


Implementación de Information Cards en nuestros sitios Web, esta es la liga a información referente a la documentación para implementar el uso de tarjetas de información en sitios web.


http://cardspace.netfx3.com/blogs/news_and_announcements/archive/2007/04/30/information-card-deployment-guide-now-live.aspx


Especificaciones de VC#  y VB.NET


http://msdn2.microsoft.com/en-us/vcsharp/aa336809.aspx VC# 1.0 , 1.1 y 2.0

http://msdn2.microsoft.com/en-us/vcsharp/aa336745.aspx VC# 3.0

http://www.microsoft.com/downloads/details.aspx?familyid=BF32527D-187C-49FA-8C67-9E9105535550&displaylang=en  VB 7.1


http://www.microsoft.com/downloads/details.aspx?FamilyId=6D50D709-EAA4-44D7-8AF3-E14280403E6E&displaylang=en  VB 8.0


http://msdn2.microsoft.com/es-es/vbasic/aa463382(en-us).aspx VB 9.0


Más información acerca de VS Team System


http://msdn2.microsoft.com/es-es/teamsystem/default(en-us).aspx

 

La próxima reunión de la comunidad la estamos planeando tentativamente para el martes 26 de junio del 2007 en el lugar acostumbrado, en Intersoftware Training, piso 35 de World Trade Center en la ciudad de México. En cuanto confirmemos temas, expositores y fecha, aquí lo estaré anunciando, en esta ocasión habrá nuevos conferenciantes para cambiar un poco la monotonía de siempre los mismos.


Saludos…


Octavio Telis

PodCast AS-IS Episodio No. 6: Comunidades, Vocación y Variables Globales

Hola… ¿Qué Acción?


Bueno, púes…  Acabo de publicar el nuevo episodio de PodCast AS-IS en el cual hablaremos de


Comunidades en Linea – Fenómenos de balanceo de contenidos
Vocación del Desarrollador – No solo de pasión se hace el desarrollador
Variables Globales – ¿Qué tienen de malo, por qué evitar su uso?


El link:
http://feeds.feedburner.com/~r/WebcastAs-is/~5/119845223/Episodio06_23may2007.mp3


La suscripción:
http://feeds.feedburner.com/WebcastAs-is


Pues bueno, espero que lo disfruten.


Saludos…


Octavio Telis

Reunión de la Comunidad.NET del D.F. Mayo 2007

El próximo 29 de Mayo será la reunión mensual de la comunidad.Net del D.F.


En esta ocasión estaremos presentando dos interesantes pláticas:


Hector Obregón : Seguridad a fondo con .NET Framework


Octavio Telis: Nuevas características de C# 3.0


Esperamos contar con su asistencia en el lugar de siempre:


Fecha: Martes 29 de Mayo
Horario: 7:00 a 9:50 p.m.
Lugar: Intersoftware Training
World Trade Center – Piso 35
Mexico D.F.

Ponentes
 Hector Obregon
   Seguridad a profundidad en Aplicaciones .NET
 Octavio Telis
   Introducción a C# 3.0


No te lo pierdas


Saludos…


Octavio Telis

Uso de Propiedades en lugar de Variables Globales

Hola ¿Qué tal?…


Ahora que hemos estado hablando de variables globales y de no utilizarlas porque ya no son más necesarias dada las nuevas características de Visual Basic.NET, inclusive de C#, primeramente tendré que explicar cómo funcionan las variables globales en Visual Basic .NET y además, dejar una alternativa eficiente para sustituir su uso, dejando a ustedes la libertad de usar la que más les convenga.


Bueno, quisiera explicar cómo se utilizan las variables globales en Visual Basic.NET y qué es lo que pasa atrás de todo eso al compilarse una aplicación de Visual Basic.NET.


Para declarar una variable global en Visual Basic.NET se agrega un module al proyecto, como en Visual Basic 6. En este module se escriben las variables y los métodos como se hacía en VB6, no es raro que sea posible dada la compatibilidad de escritura de código con las versiones anteriores al .NET Framework, sin embargo no es tal cual era en VB6, el detalle es que el compilador de VB.NET convertirá ese module en una clase con miembros estáticos, lo que no es tan malo si pensamos que el contenido está compuesto de puros métodos, ya que los métodos estáticos (shared en Visual Basic) son útiles para tareas frecuentes donde no vale la pena utilizar una instancia para usarlos, el problema está en el uso de las variables públicas, que en este caso serán compilados como campos estáticos (shared en Visual Basic) de la clase. Estos campos estáticos estaran disponibles con sus valores para ser utilizados en la aplicación, en cualquier momento. Estos campos estarán ocupando un espacio en memoria en todo momento con el contenido que se les haya definido o asignado, no es tan malo a primera vista, sin embargo, el rendimiento de una aplicación se verá afectado en proporción a la cantidad de campos estáticos que estén presentes en estos modules. Además, los campos estáticos delimitan la portabilidad de la aplicación, pensando en portar la funcionalidad de una aplicación Windows a Web, ya que en web el estado de estas variables no se mantiene entre llamadas (post back) al servidor como podría esperarse. Así que si la funcionalidad se basa en el uso de campos estáticos (como si de variables globales se tratara) entonces implicaría un rediseño de la funcionalidad para web. Pero… ¿Qué pasa con los métodos estáticos?, ¿por qué no son tan malos?, bueno, la funcionalidad de un método estático está basada en la ejecución de un bloque de código en el instante en que se requiere sin esperar que guarde algún estado, esto es, que se utiliza como funcionalidad volátil, solo para lo que es y listo, dejando que el Garbage Collector se encargue de las variables que han perdido ámbito dentro del método, estos métodos son también útiles en Web, ya que se utilizan mientras se ejecuta la llamada en el servidor. Es obvio que no toda la funcionalidad puede dejarse expuesta en métodos estáticos según la naturaleza de cada aplicación o componente, ya que habrá situaciones en las que sea requerida una instancia para utilizar un método debido a los distintos escenarios de inicialización de una clase.


Ok, pensemos en Windows Forms, que es donde más se utilizan las variables globales y donde más se extrañan. Si queremos disponer de cierto valor generado en un formulario y pasarlo a otro, se pueden utilizar las propiedades, sin embargo, el uso de toda esta metodología obliga a la definición de la aplicación basado en el flujo de información, esto es, no disponemos ya de los formularios como lo hacíamos en VB6, el formulario que se quiere utilizar, ahora se debe hacer por medio de instancias. Bien, pensemos en un formulario principal, si he de pasar un valor definido en el formulario principal a un formulario secundario, puedo hacerlo pasando el valor a través de una propiedad definida en el formulario secundario, es muy simple, solo debemos definir la propiedad en el formulario secundario y  utilizarla con la variable de instancia declarada en el formulario principal, el cual lanzará al formulario secundario, como se muestra en el siguiente código:


En el formulario principal (Form1):

    Private Sub Button1_Click(ByVal sender As System.Object, _
           ByVal e As System.EventArgs) Handles Button1.Click
        Dim frm As Form2 = New Form2()
        frm.Identificador = 2
        frm.Show()

    End Sub


En el formulario secundario (Form2):

    Private mIdentificador As Integer
    Public Property Identificador() As Integer
        Get
            Return mIdentificador
        End Get
        Set(ByVal value As Integer)
            mIdentificador = value
        End Set

    End Property


En el formulario secundario (Form2), se tiene declarada una propiedad denominada Identificador, las propiedades comúnmente se apoyan de un campo privado en el cual almacenan el valor de entrada obtenido por el bloque Get de la propiedad. Este campo privado, se puede utilizar en cualquier parte de la clase sin problemas, por lo que la información estará disponible en todo momento en toda la clase Form2, así, no tendremos necesidad de una variable global, ya que la información ya la tengo al alcance pero de manera local, esto es, en la clase que la necesitaba y no estará disponible para todas las clases de la aplicación a pesar de la requieran o no.


Las propiedades dependen de una variable para almacenar el valor de entrada y para exponer el valor de salida y para trabajar con estos valores en otras partes de la clase, sin embargo, hablando de formularios, ese valor puede ser almacenado en la propiedad de algún otro objeto, por ejemplo, en la propiedad Text de una caja de texto o de una etiqueta, veamos el equivalente a la propiedad anterior utilizando un TextBox llamado TextBox1:

    Public Property Identificador() As Integer
        Get
            Dim int As Integer
            Try
                int = Integer.Parse(TextBox1.Text)
            Catch ex As Exception
                int = -1
            End Try
            Return int
        End Get
        Set(ByVal value As Integer)
            TextBox1.Text = value.ToString()
        End Set

    End Property


Bien, esto podría ser otra opción para utilizar las propiedades, vemos aquí que se utiliza el TextBox1 directamente para manejar los valores, así pues, al utilizar la propiedad desde el Formulario principal, entonces la mostrar el formulario se mostrará con el valor asignado en el TextBox1.


El uso de las propiedades no es tan difícil, ni implica dificultad alguna, seguro podrán ver las ventajas de utilizar propiedades propias en sus formularios, pues tendrán un medio de comunicación con sus formularios. El canal de comunicación se cierra con las respuestas, y esto se logra a través de eventos, por lo que pueden consultar dentro de este blog el post acerca de delegados y eventos para ver ese forma de comunicación.


Ahora, a diferencia de VB6, podemos ver a los formularios como clases, y como tales, podemos extenderlas a nuestras necesidades, bueno… esto también era posible en VB6, así que, les recomiendo que si ven una buena oportunidad para utilizarlas, no lo duden, seguro que encontrarán grandes ventajas en ello.


Con lo que respecta a las variables globales, quiero dejar aquí una opción para sustituirlas de forma eficiente, en un futuro, mostraré otra manera de evitar el uso de variables globales, o bien, sustituirlas por un método eficiente alternativo.


Saludos…


Octavio Telis

PodCast Risky Business… Hablando de Seguridad.

Hola ¿Qué tal?…


En esta ocasión quiero solo compartir con ustedes este PodCast de australia, un programa bastante interesante de Patrick Gray, trata diferentes temas acerca de seguridad, comúnmente con otros expertos del medio. Este podcas es semanal y actualmente va en el no. 12.


Muy recomendable.


La liga del episodio 12:


http://www.itradio.com.au/security/wp-trackback.php?p=19


La liga del PodCast:


http://www.itradio.com.au/security/


Espero que les sea interesante y de utilidad.


Saludos…


Octavio Telis

PodCast AS-IS Emisión No. 5

Hola ¿Qué tal?


Acabo de publicar el nuevo PodCast de PodCast AS-IS, que es el podcast que llevo.


En esta ocasión hablamos de:


CodeCamp ProNet 2007
Entrevista con El Guille


La Liga:


http://feeds.feedburner.com/~r/WebcastAs-is/~5/116196280/EntrevistaGuille_11may2007.mp3


El feed para utilizarlo en suscriptores de podcast:


http://feeds.feedburner.com/WebcastAs-is


Bien, pues espero que lo disfruten, nos estamos viendo….


 Saludos…


Octavio Telis