Mostrando las entradas con la etiqueta Reportes. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Reportes. Mostrar todas las entradas

lunes, 13 de mayo de 2019

Entrenamiento - Segundo Curso de C# WinForms

Segundo Curso de C# WinForms con Arquitectura Sin Capas con Cadenas

Contenido del Curso
Parte 1: Estructuras de Datos y Algoritmos en .NET
01. Introducción a .NET Framework: BCL y CLR
02. El Lenguaje C#: Estructuras de Control de Flujo
03. Estructuras de Datos en .NET 1: Arreglos, Listas, Pilas y Colas
04. Estructuras de Datos en .NET 2: Enumeraciones, Diccionarios, Arboles
05. Algoritmos en .NET Parte 1: Búsqueda y Ordenación de Datos
06. Algoritmos en .NET Parte 2: Cifrado y Compresión de Datos
Parte 2: Acceso a Datos con ADO.NET en WinForms
07. ADO.NET: Conexión, Comandos y Readers
08. Consultas de Datos: Filtros y Búsquedas
09. Mantenimiento de Datos y Cabecera-Detalle
10. Reportes, Gráficos, Impresiones, Exportaciones (Texto, Word, Excel y PDF)
11. Creación de Librerías de Controles WinForms
Parte 3: Programación Distribuida en .NET
12. Creando un Servicio WCF y Clientes WinForms
13. Creando un Servicio MVC (HTTP) y Clientes WinForms
14. Creando un Servidor Web Sockets y Clientes WinForms
15. Creando un Servidor HTTP y Clientes WinForms
16. Creando un Servidor TCP y Clientes WinForms

Materiales del Curso
- Documentación en PDFs de Microsoft Docs
- Libros en PDF de C# y .NET
- Videos de Cursos y Eventos de Microsoft
- Demos y Videos del Curso

Horario
- Miércoles y Viernes de 7:00 pm a 10:00 pm

Fecha de Inicio
- Miércoles 22 de Mayo del 2019

Duración del Curso
- Total: 72 horas
- Tiempo: 3 meses
- Frecuencia: 6 horas semanales (24 horas mensuales)

Inversión
- Alumnos: 250 nuevos soles el mes
- Alumnos que actualmente estan llevando Sábados y/o Domingos: 200 soles el mes

Forma de Pago
- Depósito en el Banco BCP (se enviará el número de cuenta a los que envíen su correo)

Contacto
Los interesados enviar un mail a Luis.duenash@gmail.com con los siguientes datos:
Asunto: Curso C# Winforms Miércoles y Viernes
Contenido del Mail:
- Nombre Completo
- Lugar de Trabajo o Estudio
- Tipo de Alumno: Nuevo / Antiguo ISIL / Antiguo Talleres

Forma de Registro
- Enviar su mail indicando los datos solicitados
- Se le enviará el número de cuenta BCP
- Realizar el depósito del mes y enviar constancia (foto o voucher)
- Se le enviará la dirección exacta

Lugar del Curso
Será cerca a la Av Canada con Av Rosa Toro, se le enviará la dirección exacta a todos los registrados una vez realizado el pago al Banco.

lunes, 25 de julio de 2016

Artículo: Temas a Aprender en un Lenguaje de Programación

Temas a Aprender en un Lenguaje de Programación

1. Introducción

Un Lenguaje de Programación es el medio por el cual los programadores dan ordenes al computador y sin importar que tipo de lenguaje estén usando todos ellos sirven para crear aplicaciones. En este artículo quiero compartir mi opinión sobre que temas deben aprenderse al momento de elegir un Lenguaje de Programación.

He tratado de hacer una especie de Syllabus genérico para cualquier Lenguaje de Programación, por ejemplo los temas lo puedes ver en cualquier lenguaje del servidor como C# en .NET, PHP, Phyton, Ruby, C++, etc. Pero también la mayoría de temas se pueden ver en JavaScript.

Este breve artículo servirá para que tanto estudiantes y profesionales sepan los temas que son necesarios y los mas útiles que deben conocer, por lo que se ha divido en 3 partes con 4 capítulos cada una: Básica, Intermedia y Avanzada.

2. Temas o Tópicos a Aprender

Parte Básica

1. Estructuras de Datos
1.1. Simples: Numéricas, Cadenas, Lógicas, Fecha, etc.
1.2. Complejas: Arreglos, Listas, Pilas, Colas, Arboles, etc.
1.2. Objetos: Clases, Intefaces, Propiedades, Métodos, Eventos, etc.

2. Estructuras de Control de Flujo
2.1. Condicionales: if, switch, case, etc.
2.2. Repetitivas o de Bucle: for, while, do..while, etc.
2.3. Control de Errores: try..catch

3. Creando Interfaces de Usuario (IU)
3.1. Formularios
3.2. Controles de Entrada: TextBox, Radio, Check
3.3. Controles de Ejecución: Button, LinkButton
3.4. Controles de Imagen: Image, ImageButton
3.4. Controles de Listas: ListBox, ComboBox
3.5. Controles de Vistas: GridView, TreeView, ListView
3.6. Otros Controles: Calendarios, Banners, Visores, etc.

4. Manejo de Entrada y Salida
4.1. Información del Sistema: Directorios, Rutas y Archivos
4.2. Lectura y Escritura: Archivos Secuenciales y Aleatorios
4.3. Codificación de Datos: Codificar y Decodificar datos
4.4. Manejo de Expresiones Regulares

Parte Intermedia

5. Acceso a Base de Datos (Conectado)
5.1. Conectarse a una Base de Datos
5.2. Ejecutar Comandos SQL: Select, Insert, Update, Delete
5.3. Trabajar con Procedimentos Almacenados

6. Manejo de Datos (Desconectado)
6.1. Consultas: Filtros y Búsquedas
6.2. Ordenación: Ascendente y Descendente
6.3. Paginación: Por Filas y Por Columnas
6.4. Transferencia: Importación y Exportación

7. Presentación o Visualización de Datos
7.1. Vistas: Tablas, Cabecera Detalle, Jerárquicas y Tabla Cruzada
7.1. Reportes: Por Código y Por Herramientas
7.2. Gráficos: Por Código y Por Controles
7.3. Impresiones: Presentación Preliminar, Configurar Pagina, Imprimir

8. Pruebas de la Aplicación
8.1. Pruebas Unitarias: Funcionalidad
8.2. Pruebas de Rendimiento: Velocidad
8.3. Pruebas de Disponibilidad: Continuidad
8.4. Pruebas de Seguridad: Protección

Parte Avanzada

9. Programación de la Reusabilidad
9.1. Módulos o Librerías de Clases
9.2. Módulos o Librerías de Controles

10. Programación Asíncrona
10.1. Subprocesamiento: Threads y ThreadPool en una CPU
10.2. Programación Paralela: Tareas en Múltiples CPU

11. Programación de Redes y Distribuida
11.1. Sockets: TCP, UDP
11.2. Web: HTTP (Get, Post, Put, Delete)
11.3. Web Sockets: WS
11.4. Servicios: RPC, SOAP, REST (HTTP)
11.5. Correos: IMAP, POP3, SMTP
11.6. Mensajería: AMQP, MQTT, STOMP
11.7. Archivos: FTP
11.8. Señales: STUN, TURN, ICE, NAT

12. Criptografía o Cifrado de Datos
12.1. Cifrado Simétrico: AES, DES, RC2, Rijndael, Triple DES, etc.
12.2. Cifrado Asimétrico: DSA, ECDiffieHellman, ECDSA, RSA, etc.
12.3. Valores Hash: MD5, RIPEMD160, SHA1, SHA256, SHA512, etc.
12.4. Firmas Digitales y Tokens

3. Comentario Final

Parte Básica

Los Institutos y Universidades que enseñan como curso oficial o electivo en pre-grado un Lenguaje de Programación deberían cubrir la parte básica, pero pasan mucho tiempo en los 3 primeros temas y se olvidan del manejo de entrada y salida, sobre todo del manejo de archivos y después cuando los alumnos son profesionales y trabajan no pueden leer cualquier tipo de archivo, excepto el de Texto: TXT, XML, JSON, CSV, pero no un Binario (DOC, XLS, EXE, DLL, etc)  o uno Comprimido (XLSX, DOCX, PPTX, etc.)

También noto muchos problemas en los programadores en los temas de Codificación de Datos (Encoding), Decodificación de Datos (Decoding) y Búsqueda de Patrones de Texto (Expresiones Regulares). Con una buena base educativa no tendría porque haber ningún tipo de problemas al desarrollar una aplicación en cualquier lenguaje.

Parte Intermedia

La parte intermedia esta dirigida a los profesionales que trabajan desarrollando aplicaciones y necesitan conocer los temas de acceso a datos (conectado) y manejo de datos (desconectado), presentación de datos y pruebas. Aquí la falla está en que se da mucho énfasis a la programación conectada pero No se entiende que ésta es la causante de que en las empresas "Los Sistemas están Lentos" porque "La Red está Lenta" porque "las aplicaciones realizan muchas conexiones" (miles por día), por lo que es "Indispensable" saber el manejo "Desconectado" con los datos.

En cuanto a la presentación de datos la mayoría de programadores solo saben "Herramientas de Reportes", por ejemplo "Crystal Reports" o "Report Viewer" (Reporting Services) o para crear Gráficos usan "Controles", abren instancias de aplicaciones como Word y Excel. Todas estas técnicas descritas son ineficientes ya que consumen mucha memoria y son lentas, hay otras formas de hacer reportes "super rápidos", por ejemplo en .NET para Windows se usa PrintDocument y en Web solo basta con HTML y JavaScript.

En cuanto a las Pruebas, los instructores solo saben enseñar "Pruebas Unitarias" que es lo mínimo que debe pedirse de la aplicación: que cumpla con la funcionalidad pedida, pero hay temas más técnicos como son la Performance o Rendimiento, la Disponibilidad como la tolerancia a Fallas de Red y la Seguridad (privacidad de datos, ataques, robo de información, etc.) que No se toman en cuenta. Es por esto que a cada momento vemos en todas partes "Sistemas Lentos", "Sistemas Caídos por Falta de Red", "Ataques a Sitios Web", "Robo de Datos", etc.

Parte Avanzada

En esta última parte si que estamos peor (según mi experiencia de mas de 25 años como programador e instructor), ya que los 4 últimos temas es poco probable que se enseñe en una capacitación tradicional, excepto Web HTTP (REST) y Servicios SOAP (porque está de moda), pero temas como crear tu propia librería de clases y controles o tu propio módulo de clases y controles Nunca se ve, solo se les enseña a usar lo que ya está hecho sin  siquiera ser selectivo con lo que se usa (solo extraer lo necesario del código o control).

Otro problema de muchos programadores es que No saben el "ABC" de la programación asíncrona, muchos piensan que solo se puede implementar en la web con AJAX, jQuery o cualquier Framework popular, cuando en la web en el lado del cliente puede usarse XHR (nativo) y en el servidor Threads, ThreadPool, Delegados-CallBacks, Tasks, etc. Es mas importante que apliques asíncrono al servidor que al cliente porque la del cliente es para dar una mejor "Experiencia de Usuario" y la del servidor es para que "No se quede Colgado", y al final vas a dar la peor experiencia al usuario.

En cuanto al tema de la programación de redes o distribuida, la mayoría desconoce el poder de los Sockets y Web Sockets para hacer comunicación bidireccional en tiempo real y solo saben la peor (Servicios SOAP: Unidireccional). También es necesario aprender a manejar archivos con FTP, correos con SMTP, colas con STOMP, Señales con STUN, etc.

Finalmente, el tema de la Seguridad es muy importante y parte de esta es el cifrado de datos como claves, contenido, archivos, etc. Es necesario conocer los 4 tipos de tareas criptográficas mas comunes: cifrado simétrico y cifrado asimétrico (bidireccionales), valores hash (unidireccionales) y Firmas Digitales.

En General

En General, el Comentario Final es que si queremos mejorar nuestro nivel sea que somos estudiantes o profesionales debemos saber cuales son los temas mas importantes en nuestra formación, siento que en todos los niveles de la educación: pre-grado (para estudiantes) y especialización (para profesionales) los temas que se enseñan no son los mas importantes para el trabajo. Se da mucho énfasis en patrones y reusabilidad ("Construye Fácil") pero no en lo mas importante: en Producción que sea "Veloz", "Seguro" y "Siempre Disponible".

Mi aporte en estos últimos años ha sido cambiar esa mentalidad de "lo fácil" (reusabilidad) por lo "fácil mas lo eficiente" (performance y si se puede reusabilidad), aunque me hubiese gustado llegar a mas gente (aunque sea en mi país), es por eso, que a través de este Blog y mi Canal de YouTube trato de compensar este déficit.

Espero que con este artículo logre contribuir a que los centros de enseñanza de Lenguajes o Herramientas de Programación tomen en cuenta los temas que son necesarios enseñar para tener mejores profesionales que nunca tengan problemas al momento de trabajar o si los tienen que los resuelvan de la mejor manera y lo mas rápido posible.

martes, 17 de junio de 2014

Libro La Biblia de Visual Basic .NET - Preguntas de Repaso - Capítulo 4

Preguntas de Repaso: Desarrollando Aplicaciones Windows Forms

1.    Cual es la ventaja de crear aplicaciones Windows con Windows Forms?

2.    Qué propiedades del formulario deben configurarse para que no pueda modificarse de tamaño?

3.    Qué propiedad del formulario debe configurase para mostrar en el formulario un gráfico en forma de elipse o cualquier forma deseada?

4.    En qué evento del formulario debe programarse la creación de un gráfico?

5.    Menciona 3 controles básicos de Windows Forms.

6.    Qué propiedad del control TextBox permite limitar la cantidad de caracteres ingresados?

7.    De qué formas puede crearse un TextBox que permita ingresar una contraseña o password?

8.    Qué debe hacerse para que al dar Enter sobre cualquier control de entrada se dispare el procedimiento asociado al clic de un botón?

9.    De forma similar, qué debe hacerse para que al pulsar la tecla Escape se dispare el procedimiento asociado al clic de un botón de salida?

10. Qué se debe configurar en un control Label para que muestre el símbolo & como un carácter mas o literal.

11. Menciona 3 controles de listas de Windows Forms.

12. Cuál es la propiedad más importante de los controles de listas?

13. Menciona 3 métodos de la propiedad Items para manejar listas.

14. Menciona el evento más importante en el cual generalmente se programa cuando se selecciona un elemento de una lista.

15. Cuál es la forma mas recomendada de llenar los elementos de una lista.

16. Si la lista se va a llenar elemento por elemento qué métodos debe usarse antes y después de llenar la lista para evitar escribir cada elemento en pantalla?

17. Menciona los 2 controles de vistas en Windows Forms.

18. Cuál es la propiedad más importante del control TreeView?

19. Cuál es la propiedad más importante del control ListView?

20. Cuáles son las vistas que puede presentar el control ListView?

21. Cuáles son las propiedades donde se configuran las imágenes a mostrar en un ListView?

22. Cómo se llama el control Windows Forms que permite dividir el formulario en 2 partes, por ejemplo para separar a un TreewView de un ListView?

23. Qué control permite guardar una colección de imágenes?

24. Qué es un formulario MDI y cómo se crea en Windows Forms?

25. Cómo se puede cambiar el fondo de un formulario MDI?.

26. Qué propiedad del formulario MDI padre indica la cantidad de formularios hijos activos?

27. Qué bede configurarse en Visual Studio para trabajar con un formulario Login que al auntenticarse se cierre y abra un formulario MDI que cuando se cierre finalize toda la aplicación?.

28. Cúantos tipos de menús hay y cómo se crean en Windows Forms?

29. Qué propiedad es necesario configurar de un control para que se muestre un menú contextual?

30. Cómo se puede cargar dinámicamente un formulario teniendo como dato su nombre?

31. Qué tipo de control permite agregar cualquier control como opción o elemento de un menú?

32. Cómo se llama el control de Windows Forms que muestra un calendario con los días de un mes?

33. Menciona los 5 diálogos comunes de Windows que son componentes de Windows Forms.

34. Cómo se llama el método común que tienen todos los diálogos de Windows que permiten mostrar el diálogo en pantalla?

35. Qué propiedades comunes tienen los diálogos de archivos OpenFile Dialog y SaveFileDialog en Windows Forms?

36. Cuál es la propiedad más importante del diálogo de color?

37. Cuál es la propiedad más importante del diálogo de fuente?

38. Cómo se llama el diálogo que permite mostrar directorios?

39. Menciona las barras que se pueden crear en Windows Forms.

40. Cómo se llama la colección de elementos que tienen ambas barras en Windows Forms?

41. Qué tipo de ToolStripItem tiene la Barra de Herramientas que no tiene la Barra de Estado?

42. Cuál es el control mas usado para presentar una lista de datos en Windows Forms?

43. Menciona 3 propiedades Allow del control DataGridView de Windows.

44. Qué pasos debe realizar para crear un DataGridView con columnas personalizadas?

45. Menciona los 5 tipos de columnas personalizadas que puede tener el DataGridView.

46. Cómo se llama la propiedad de la columna personalizada que especifica que dato (campo o propiedad) vamos a presentar?

47. Qué pasos debe realizar para crear un DataGridView con una columna que muestre una imagen?

48. En qué evento del DataGridView hay que programar para formatear las columnas del control?

49. Cómo se configura el tamaño de la imagen mostrada en la columna del DataGridView?

50. En qué evento del DataGridView hay que programar para personalizar las cabeceras del control?

51. Cómo se crea un gráfico personalizado dentro de una columna del control GridView?

52. Para qué se usa el modo Virtual del DataGridView?

53. Qué propiedades del DataGridView hay que configurar para crear una paginación de datos?

54. En qué evento del DataGridView hay que programar para mostrar los valores de las celdas en una paginación?

55. Qué método del DataGridView hay que invocar para actualizar los valores de las celdas mostradas en la paginación?

56. Cómo se clasifican los controles que se pueden crear en Windows?

57. Qué tipo de control crearía si desea aumentar las características de un control existente en Windows Forms?

58. Qué tipo de control crearía si desea usar varios controles de Windows?

59. De qué clase hereda el control personalizado o dibujado?

60. Mencione 3 formas de crear un reporte en Windows Forms.

61. Para qué se usa la clase PrintDocument y en qué espacio de nombres se encuentra?

62. En qué evento de la clase PrintDocument se tiene que escribir código para crear la pagina a imprimir?

63.  Menciona el control y los 3 diálogos que se pueden asociar a la clase PrintDocument para crear reportes.

64. Cuál es la diferencia entre el control PrintPreviewControl y el diálogo PrintPreview al crear la vista preliminar del reporte?

65. En qué consiste los Informes de Microsoft y cuáles son sus dos componentes principales?

66. Para qué sirve el control ReportViewer?

67. Cuáles son las barras de herramientas que se usan en el diseñador de informes de Microsoft.

68. Qué propiedades del control ReportViewer deben configurarse para mostrar un reporte de datos?

69. A qué formatos puede exportar el ReportViewer?

70. Cuál es la diferencia entre crear un gráfico en Excel o usar el control Chart?

71. Qué propiedades son las más importantes de la clase Chart?

72. En qué espacio de nombres se ubica la clase Chart?

viernes, 6 de junio de 2014

El Libro del Día: Reporting with Visual Studio and Crystal Reports

El Libro del Día: 2014-06-06

Titulo: Reporting with Visual Studio and Crystal Reports
Autor: Mahmoud Elkoush
Editorial: Packt
Nro Paginas: 148

Capítulos:
Chapter 1: Setting Up the Requirements
Chapter 2: Designing a Sample Application
Chapter 3: Selecting the Data
Chapter 4: Creating First Report
Chapter 5: Enhancing Reports
Chapter 6: Working with Cross-Tab Reports
Chapter 7: Working with Charts

Descarga:
Reporting_VisualStudio_CrystalReports