Archivos de la categoría ‘Ingenieria de Software’

grafico_informatica.jpg

Anuncios

En los siguientes links estan disponibles 101 ejemplos de Visual Basic.net 2003 y Visual Basic.Net 2005 para todos aquellos programadores o desarrolladores que desean aprender cada día más y más.

Espero que estos ejemplitos les pueda ayudar a todos los que necesiten alguna ayudita o esten aprendiendo a programar en .Net

“D” es un lenguaje de programación de uso general desarrollado por Walter Bright cuya primera versión apareció en 1995, resultado de décadas de investigación y experiencia de programadores expertos en muchos lenguajes.Es de un nivel más alto que C++, pero conserva la capacidad de escribir código de alto rendimiento y de interconectar directamente con él los APIs de un sistema operativo o el hardware. Además se comporta bien con programas de gran escala con un millón de líneas, que desarrollan equipos de programadores.

D es fácil de aprender, proporciona muchas funciones para ayudar al programador, y cumple bien con la tecnología agresiva de optimización del recopilador. Es un lenguaje compilado, no interpretado. Es un lenguaje práctico para programadores que necesitan conseguir un trabajo finalizado rápidamente, con un código fácil de entender.

C++ es el lenguaje al que D aspira a sustituir. Es un lenguaje evolucionario, no revolucionario y en un principio puede parecer que no aporta demasiado sobre C++, Pero no son las características generales sino los detalles de las mismas los que marcan la diferencia. En primer lugar D conserva todas las características de expresividad de C++ (cosa que ni C# ni mucho menos Java consiguen en su afán por hacerse lenguajes más accesibles), pero con una sintaxis y unas construcciones mucho más sencillas y lógicas. Además, otro de los puntos fuertes de C++, su rendimiento, también se ve reflejado en D (en algunas ocasiones incluso superado.)

Por otro lado D cuenta con muchas otras mejoras e incluso características de las que C++ no dispone, las cuales se enumeran a continuación. Al contrario de lo que pasa con Java o C#, estas características no suponen una pérdida apreciable de rendimiento para D en comparación con C++:

  • Gestión automática de memoria (recolección de basura)
  • Delegados, funciones anidadas y funciones literales
  • Sobrecarga de operadores y propiedades sin sobrecargar al programador
  • Estructuración: Módulos y paquetes
  • Propiedades
  • Programación genérica muy mejorada
  • Programación por contratos
  • Mantenibilidad y fiabilidad
  • Compilación condicional sin sucios preprocesadores
  • Compatibilidad con C sin cargar con C
  • Arrays asociativos

Entre otras. Para información avanzada consultar enlaces externos.

Ventajas

  • Lenguaje más intuitivo y fácil de aprender que C, C++ o Java, con gran cantidad de mejoras respecto a estos.
  • Compatibilidad con los binarios de C (no C++).
  • Lenguaje compilado (no se ejecuta en una máquina virtual, como Java).
  • Garbage collector o recolector de basura (sistema que libera la memoria dinámica cuando ya no se necesita, como Java, pero con posibilidad de desactivarlo si se desea mayor control).
  • Elimina parte de la complejidad de sintaxis de C++.

Inconvenientes

  • Aún no se considera terminado, por lo que puede haber cambios en la especificación. Sin embargo, ya es lo suficientemente estable como para usarse en entornos de producción, y la versión 1.0 fue lanzada el 2 de enero de 2007.
  • La única documentación es la especificación oficial.

La Web 3.0 ha entrado ya en el debate sobre el futuro de internet como la próxima etapa del sector. Aunque algunos expertos advierten que su antecesora, la Web 2.0, todavía no se ha consolidado.

En plena expansión de la Web 2.0,la actual corriente de negocios en internet basada en la aportación de contenidos por los usuarios y la generación de ofertas híbridas a partir de combinar datos de diferentes web, un nuevo fenómeno ha irrumpido en el sector: la Web 3.0. Un término que divide a los expertos entre quienes la sitúan como la próxima etapa del negocio y quienes creen que es sólo un nombre usado por los medios de comunicación, cuyo origen parecen disputarse The New York Times y Gartner.Pero, la Web 3.0 no acaba de tener un significado claro, si bien ya se define como red semántica en la medida que los resultados de las búsquedas aportan significado. Para algunos teóricos es el triunfo del mundo virtual y de la inteligencia de las máquinas. Bajo estas nuevas tecnologías, se produciría una reordenación de todas las comunidades virtuales de tal manera que el usuario podría tener acceso a la información de todas ellas, que a su vez le llegaría de forma ordenada. ‘El éxito total sería que la máquina dijera al final sí amo’, bromeaba Ricardo Baeza-Yates, director de investigación de Yahoo en Europa, en un seminario esta semana sobre Web 2.0.

José Antonio del Moral, director general de la consultora Alianzo, señala que en la Web 3.0 (término que califica de ‘abstracto’) se produciría una unificación de las comunidades sociales para lograr que el usuario tuviera una sola identidad en internet. Otros expertos afirman que la Web 3.0 traería la revolución final del móvil como medio fundamental de acceso a internet por delante del ordenador personal.

En cualquier caso, la Web 3.0 no está consolidada, e incluso recibe críticas. Stewart Butterfield, fundador de Flickr, cree que es sólo una forma de hablar de algo que no se sabe que es: ‘Podríamos hablar de 4.0, 5.0, 6.0… pero no tendría sentido’.

Este debate teórico se produce en un momento de generalización de su antecesora, la Web 2.0, de la que cada día se siguen planteando dudas sobre su rentabilidad. La mayor parte de los expertos apuesta por la publicidad como principal fuente de ingresos de las redes sociales y los blogs, que convertirían el número de visitas como reclamo para atraer a los anunciantes.

Este acercamiento a la publicidad les puede convertir en rivales de los medios de comunicación. Y éstos quieren hacer valer el poder de sus marcas como defensa. Parece que lo logran. Un informe de la Newspaper Association of America señala que los periódicos de EE UU aumentaron sus ingresos publicitarios originados por sus webs un 23% en el tercer trimestre (638 millones de dólares). Claro que, los periódicos quieren apoyarse en firmas de internet para ganar anuncios, y los ejemplos más claros son las alianzas firmadas por Google y Yahoo con grupos de diarios en EE UU.

En este contexto, muchas firmas de la Web 2.0 están en plena búsqueda de financiación. ‘No es fácil porque el modelo de negocio no está claro’, señalan fuentes del sector, quienes también tienen dudas sobre cual podrá ser la rentabilidad final que grandes firmas online como Google y News Corp. podrán extraer de las millonarias compras de Youtube y MySpace, respectivamente.

Quizá aún sea pronto, pero en medios financieros ya se ha aludido a la existencia de una burbuja, eso sí, menor a la del año 2000. Desde luego, todavía hay voluntad por acudir a la Web 2.0. Por ejemplo, el Gobierno de Taiwán aprobó esta semana un plan de subvenciones para empresas de internet por un importe de nueve millones de euros. Y no será el último. Lo que sí ha logrado introducir la Web 2.0 son revolucionarias formas de trabajo. Por un lado, el imparable crecimiento de blogs. Por otro, la llegada de los Mashups, herramientas que permiten reunir en una misma página los contenidos de distintas webs, o el crowdsourcing, técnica empresarial acuñada por el gurú Tim O’Reilly, por la que las compañías recurren a los usuarios para que realicen ciertas tareas. Sin duda, una revolución.

Navegando encontre una nueva palabra,con un gran significado para los amantes de la Web.

Crowdsourcing es un término acuñado por el escritor Jeff Howe y el editor Mark Robinson de la revista tecnológica Wired magazine.

Así como en el outsourcing los trabajos son enviados a empresas externas para abaratar costos en mercados más baratos como India o China, lo que el crowdsourcing hace es proponer problemas y recompensas a quien o quienes solucionen el problema propuesto. Crowd es el término en inglés de multitud y sourcing refiere a la obtención de materia prima ya que source es el término en inglés de fuente, en este caso un proyecto.

Crowdsourcing intenta reemplazar contratos selectivos, entrenamientos y fuerzas de trabajo con la participación masiva de voluntarios y auto-organización. Aunque no es una idea nueva, se está volviendo bastante popular y utilizado por empresas como Boeing, Dupont y Procter & Gamble que buscan solucionar sus problemas de forma masiva a través de InnoCentive por ejemplo.

Wikipedia es el más conocido proyecto crowdsourcing de código abierto, pero hay muchos otros tipos de trabajo crowdsource:

En la tecnología de objetos un Patrón es una descripción de un problema y la solución, a la que se le da un nombre, y que se puede aplicar a nuevos contextos.

Los patrones GRASP describen los principios fundamentales de diseño de objetos para la asignación de responsabilidades. Constituyen un apoyo para la enseñanza que ayuda a entender el diseño de objeto esencial y aplica el razonamiento para el diseño de una forma sistemática, racional y explicable.

En cuanto a las responsabilidades UML define una responsabilidad como “un contrato u obligación de un clasificador”.

Las responsabilidades están relacionadas con las obligaciones de un objeto en cuanto a su comportamiento.

Básicamente, estas responsabilidades son de los siguientes dos tipos:

Conocer:

* Conocer los datos privados encapsulados.
*
Conocer los objetos relacionados.
* Conocer las cosas que puede derivar o calcular.

Hacer:

* Hacer algo él mismo, como crear un objeto o hacer un cálculo.
*
Iniciar una acción en otros objetos.
*
Controlar y coordinar actividades en otros objetos.

GRASP Se pueden destacar 5 patrones Principales que son:

Experto.
Creador.
Alta cohesión.
Bajo acoplamiento.
Controlador.

Y 4 patrones GRASP adicionales que son:

Fabricación Pura.
Polimorfismo.
Indirección.
No hables con extraños.

Nombre del patrón Problema Solución
Expert – Experto ¿Cuál es un principio general para asignar responsabilidades a los objetos? Asignar una responsabilidad al experto en información – la clase que tiene la información necesaria para la realización de la asignación.
Creator – Creador ¿Quién debería ser el responsable de la creación de una nueva instancia de alguna clase? Asignar a la clase B la responsabilidad de crear una instancia de clase A si se cumple uno o más de los casos siguientes:

  1. B agrega objetos de A
  2. B contiene objetos de A
  3. B registra instancias de objetos de A
  4. B utiliza más estrechamente objetos de A.
  5. B tiene datos de inicialización que se pasarán a un objeto de A cuando sea creado (por tanto, B es un Experto con respecto ala creación de A).
  6. B es un creador de los objetos A.

Low Coupling – Bajo Acoplamiento ¿Cómo soportar bajas dependencias, bajo impacto del cambio e incremento de la reutilización? Asignar una responsabilidad de manera que el acoplamiento permanezca bajo.
High Cohesion – Alta cohesión ¿Cómo mantener la complejidad manejable? Asignar una responsabilidad de manera que la cohesión permanezca alta.
Controller – Controlador ¿Quién debería ser el responsable de gestionar un evento de entrada al sistema? Asignar una responsabilidad de recibir o manejar un mensaje de evento del sistema a una clase que representa una de las opciones siguientes:

  1. Representa el sistema global, dispositivo o subsistema.
  2. Representa un caso de uso en el que tiene lugar el evento del sistema a menudo denominado <nombre del caso de uso> Manejador, <nombre del caso de uso> coordinador, <nombre del caso de uso> Sesión.

Utilice la misma clase controlador para todos los eventos del sistema en el mismo escenario de caso de uso.

Informalmente, una sesión es una instancia de una conversación con un actor. Las sesiones pueden tener cualquier duración, pero se organizan a menudo en función de casos de uso (sesiones de cas

¿Quién no ha usado el SqlConnection, SqlAdapter, SqlDataReader?. ¿quién, no los uso desde el caja de herramientas?. Pero, ¿dónde estas estos controles en VS2005?
En principio iba a responder solo con los pasos, por unos pendientes que tengo, pero no puedo evitarlo voy hacer un how to, no tan detallado, pero con algunos pantallazos.

En este caso usaré Visual C# Express y SQL Express, sobre Windows Vista RC2. ¿por qué?, por que esas versiones estan al alcance de todos por ser gratuitas ;). Y obviamente son aplicables a las versiones superiores.

Ahora que estuve instalando SQL Express, me percate de una opción interesante, no se, si no la vi antes (en las versiones beta), o no tenía, y es la posibilidad de hacer una instalación avanzada.install_sql.jpg

Con una instalación avanzada, podemos configurar el nombre de instancia, en mi caso es .\miSQLExpress, pero si no tienen planeado instalar una versión superior de SQL, pueden usar la instancia por defecto, y para que, al conectarse solo pongan el nombre de equipo, (local), localhost, o sólo “.”.

Ah por cierto trabajaré con Adventure Works, la cuál se puede descargar desde esta página: SQL Server 2005 Samples and Sample Databases (July 2006).

Vamos a los pasos, supongo que ya tienen instalado AdventureWorks, Managment Studio Express, SQL Express, y C# Express:

  1. Creo mi aplicación Windows con C#.
  2. Agrego un nuevo conjunto de datos: dsAdventure.xsd.
  3. Ahora agrego una nueva coneción a mi base de datos, puedo escoger entre Access vía OleDB o SQL:

add_cn.jpg 4.- En el caso de los que han cambiado el nombre de la instacia por defecto (SQLExpress), el mio por ejemplo, al agregar la conexión hay que probarla, si obtenes error, hay que hacer clic en propiedades avanzadas, y cambiar el nombre de la instancia (por defecto viene con SQL Express), indepientemente que instancia le hayas puesto de nombre a tu servidor de base de datos. Ah por cierto se usará el modelo attach DB, en el cuál para la conexión no es necesario el nombre del server y la db, sino el archivo mdf, que esta dentro de la carpeta Data de MSSQL.

5.- Ahora arrastro una nueva tabla desde la conexión agregada, nos pedira agregar una conexión local dentro del proyecto, hacemos clic en SI o YES, depediendo del idioma de la instalación del Csharp Express (como se han habrán podido dar cuenta, tengo al versión en espaniol):

add_table.jpg
6.- Como pueden apreciar ahora el objeto a parte del dataset es el TableAdapter, que yo lo veo como un DataAdapter tipificado:
config_ta.jpg7.- Lo que es interesante es que que las consultas generadas de Insert, Update, Delete, y Select, la podemos cambiar por Store Procedures, además podemos personzalizar más el TableAdapter, agregando métodos de búsqueda, etc.
8.- Ahora a lo nuestro agregar la data, para esto abrimos el formulario, y mostramos los orígenes de datos, si no esta, lo hacemos desde el menú Data, Show DataSource, y en espaniol, Datos, Mostrar Orígenes de Datos:

add_data.jpg

9.- Ahora cambiamos la vista a Detalles, y arrastramos ProductCategory al formulario:
addtable_win.jpg10.- Antes de que digan wow…., ejecuten, no lo piensen tanto, no miren el código, solo ejecuten..
11.- Ahora si, digan wow… :

win_final.jpg

Ahora si, espero que todo haya quedado claro?, no prueben el update .

A los que probaron el update habrán notado que no hace update, en este punto deberían comerzar a silvar, y a pedir su plata. Pero tranquiloss…., todo esta bajo control, no hubiera publicado el post, si previamiente no hubiera soluciado esto, aunque tome varias horas, aunque no coma, aunque no…; según la regla Nº13 del manual buen programador, si vas hacer algo, hazlo bien, sino, mejor no lo hagas . Y nada, vamos, primero les explico que ha pasado, y después les explico como solucionarlo.

El problema se presenta, por el quicktranslate que hice de este post, que al momento de decir SI en el mensaje de arriba que les dije que pulsarán SI, lo que hace es adjuntar el archivo mdf a nuestro proyecto. ¿pero, eso es lo que debía hacer?. Aja, pero el problema es que la conexión agregada se queda referenciada a la ruta del archivo original (la carpeta Data de MSSQL). Y resumidamente ese es el problema.

La solución, “cuanto más tiempo te demore un problema, mayor es el éxtasis alcanzado al solucionarlo“:

  1. Tenemos que cambiar la cadena de conexión dentro del archivo de configuración de la aplicación, app.config, y en el datatable ProductCategory, esto lo hacemos desde el diseñor del dataSet. Lo reemplzamos por la actual ruta del archivo *.mdf adjuntado dentro de nuestra aplicación.
  2. Ejecutar nuevamente.
  3. Modificar un registro, ej., cambiar el nombre de la categoría a bicicleta.
  4. Cerrar.
  5. Volver a ejecutar.
  6. Y por último decir wow…:

win_final2.jpg

Con una versión de SQL, NO Express, no deberíamos tener este problema.

Cabe resaltar que esta, es una demo básica, nosotros podemos usar StoreProcedures, podemos extender la funcionalidad del TableAdapter dentro de una capa de Negocio, usando WebServices, y todo el tipo de cosas arquitectónicas que se les ocurran.

De más esta decir sobre todo lo que ha generado, los controles, la presentación, validaciones del tipo de dato, asignación del autonumerico, entre otras… es, siendo cualitativos, espectacular; y cuantitativos, es productivo.