Isaac's profileDeveloper en Vías de Des...BlogLists Tools Help

Blog


    Primeros pasos para armar un proxy

     
           

    Espero y este primer screencast les sea de ayuda.

    Esto es parte de una practica en la que aprenderemos a ver el funcionamiento de los famosos sockets.

    Empezaremos diciendo que un sockets es la relación entre los dos puertos de una computadora.

    Pero ahora bien que esto de los puertos, pues que, básicamente es la entrada y salida de información de una computadora, están representados por números enteros.

    por ejemplo "80" para el Internet.

    Espero recibir sus comentarios.

    Saludos.

    Isaac.

    Este es código usado en vb6.0


    'Componente Utilizado: _
    Microsoft Winsock Control 6.0

    Option Explicit

    Private Sub Form_Load()
    With Winsock1
    'puerto de escucha
    .LocalPort = "8050"
    'poniendo a escuchar al puerto
    .Listen
    End With
    End Sub

    Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
    'Este procedimiento se ejecuta por cada salida o peticion del Browser _
    el parámetro que recibe se decide si se aceptar o no la petición.
    With Winsock1
    '...cerrar la conexion antes

    .Close
    .Accept requestID
    'esto depende para Recibir datos (URL), el que se acepte la peticion recibida, _
    'MsgBox requestID
    End With
    End Sub

    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    'este procedimiento se produce cuando se recibe algun dato despues de se halla aceptado Aceptado: requestID
    Dim UrlBrowser As String
    With Winsock1
    'es capturada con la propiedad getdata y almacenada en _
    la variable
    .GetData UrlBrowser
    MsgBox UrlBrowser
    'se cierra la conexion
    .Close
    'y se pone de nuevo a la escucha al puerto
    .Listen
    End With
    End Sub




    LO MISMO EN VB.NET


    Imports System
    Imports System.IO
    Imports System.Net
    Imports System.Net.Sockets


    Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'como el LocalPort pero una direccion
    Dim localEndPoint As New IPEndPoint(IPAddress.Any, 8050)
    'iniciando socket, en el contructor
    Dim WinSock As New Socket(localEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp)
    'Explicitamente enlazando socket
    WinSock.Bind(localEndPoint)
    '.Listen, ...ponerlo a escuhcar
    WinSock.Listen(Integer.MaxValue)
    'Bucle Ciclico para Escuchar peticiones al puerto
    While True
    '.Accept requestID
    Dim ClienteSocket As Socket = WinSock.Accept()
    'MsgBox requestID, pero con Ip
    MsgBox("Nueva Conexion del Cliente: " & ClienteSocket.RemoteEndPoint.ToString())
    ''StreamReader, para trabajar con cadenas de texto en formato ANSI
    Dim Contenido As StreamReader
    Dim networkStream As New NetworkStream(ClienteSocket)
    Contenido = New StreamReader(networkStream)
    'reader.ReadLine(), devuelve la cadena (URL)
    Dim UrlBrouser As String = Contenido.ReadLine()
    MsgBox("Peticion -(URL)- Recibida: " & UrlBrouser)
    End While

    End Sub
    End Class

    un paso hacia la calidad de Software

    Aseguramiento de calidad.                              

     

    Para asegurar la calidad, según Robert Martin…

     

    “Usamos metodologías por que tenemos miedo a desarrollar un mal producto, miedo a desarrollar un producto de mala calidad, miedo a los retrasos <…>”

     

    ¿Por qué los proyectos fallan?

     

    Desarrollar un producto de software con calidad es una tarea compleja que sin la planificación y las precauciones adecuadas puede llevarnos a disparatadas situaciones como sucede en la siguiente viñeta.

    Desarrollo 

     

    Debido a estas situaciones se presenta la:             

     

     

    Utilización de métodos de análisis y diseño

    Metodologías de desarrollo.

     

    Las metodologías aparecen en la construcción de software como un conjunto de métodos y técnicas fundamentados en una filosofía de trabajo, preestablecida como guía en la consecución del objetivo esencial, la construcción de un producto software, y en el proceso necesario para construirlo.

     

    La utilización de metodologías se encuentran:

     

    # Metodologías tradicionales

    # Metodologías ágiles.

     

    Las metodologías tradicionales:

     

                -están basadas en normas de estándares.

                -son relativamente resistentes a cambios.

                -tienen un alto grado de control, con muchas políticas y normas.

                -están sujetas a acuerdos contractuales.

                -existe reuniones con el cliente mediante reuniones.

                -son con grupos de trabajos muy grandes y con posibilidad de estar distribuidos.

                -la arquitectura es esencial.

     

    Pero en cambio las metodologías ágiles:

                -Son basadas en heurísticas provenientes de prácticas de producción de código.

                -Están preparadas para cambios en cualquier momento del proyecto.

                -Existe un bajo grado de control.

                -El cliente forma parte del equipo de desarrollo.

                -Son para grupo de trabajos pequeños.

                -Existe poco énfasis en la arquitectura.

     

    Revisión de Técnicas Formales

               

    Los modelos de los métodos clásicos difieren bastante en su conformación y en su naturaleza, pero exaltan casi siempre las virtudes del planeamiento y poseen un espíritu normativo. Comienzan con la elicitación y el análisis completo de los requerimientos del usuario. Después de un largo período de intensa interacción con usuarios y clientes, los ingenieros establecen un conjunto definitivo y exhaustivo de rasgos, requerimientos funcionales y no funcionales. Esta información se documenta en forma de especificaciones para la segunda etapa, el diseño, en el que los arquitectos, trabajando junto a otros expertos en temas puntuales (como ser estructuras y bases de datos), generan la arquitectura del sistema. Luego los programadores implementan ese diseño bien documentado y finalmente el sistema completo se prueba y se despacha

     

    En una metodología ágil deberíamos encontrar, entre otros, los siguientes atributos:

     

    Velocidad: Desarrollos más rápidos, siempre en comparación con las metodologías tradicionales.

    Agilidad: Capacidad de improvisar y desarrollar nuevas soluciones al vuelo.

    Adaptabilidad: Desarrollos dinámicos, capaces de reaccionar ante entornos cambiantes.

    Ingenio: Capaz de tomar decisiones meditadas o bajo cierta disciplina.

                                                         

     

    Algunas metodologías ágiles, están:

     

    ·         Extreme Programming

    ·         Scrum

    ·         Evo

    ·         Crystal Methods

    ·         Feature Driven Development

    ·         RUP

    ·         Dynamic Systems Development Method

    ·         Adaptive Software Development

    ·         Agile Modeling

    ·         Lean Development.

     

     

    En definitiva, las metodologías tradicionales aportaban la organización y el orden del que carecía el desarrollo de software.

     

    Por su parte, las metodologías ágiles pretenden flexibilizar el proceso (sin que por ello se resienta la calidad del producto final). Un factor clave es la mejora de la comunicación entre los diversos actores del proyecto, desde el propio equipo de trabajo hasta el cliente final.