Este documento describe Platform Invocation Services (P/Invoke), que permite ejecutar código nativo no administrado desde .NET. P/Invoke permite interoperar con APIs nativas existentes sin modificar su código fuente. El documento explica cómo usar atributos como DllImport para invocar funciones externas y cómo tratar los tipos de datos y estructuras entre espacios de nombres administrados y no administrados.
Esta presentación le pertenece a Paúl Arévalo.
Este capítulo introduce el concepto de herencia y clases derivadas.
La herencia hace posible crear jerarquías de clases relacionadas y reduce la cantidad de código redundante en componentes de clases.
La herencia es una herramienta poderosa que proporciona un marco adecuado para producir software fiable, comprensible, de bajo coste, adaptable y reutilizable.
Una presentacion no formal que captura la frustracion de un estudiante nuevo a Java y responde a todas sus preguntas.
Nota: Me disculpo por el lenguaje utilizado en el texto. Era joven ;)
Programación Orientada a Objetos - constructores y destructoresAlvaro Enrique Ruano
Esta presentación es parte del contenido del curso de Programación Avanzada impartido en la Universidad Rafael Landívar durante el año 2015.
Incluye los temas:
• Constructores
• Destructores
Creado por Ing. Alvaro Enrique Ruano
Esta presentación le pertenece a Paúl Arévalo.
Este capítulo introduce el concepto de herencia y clases derivadas.
La herencia hace posible crear jerarquías de clases relacionadas y reduce la cantidad de código redundante en componentes de clases.
La herencia es una herramienta poderosa que proporciona un marco adecuado para producir software fiable, comprensible, de bajo coste, adaptable y reutilizable.
Una presentacion no formal que captura la frustracion de un estudiante nuevo a Java y responde a todas sus preguntas.
Nota: Me disculpo por el lenguaje utilizado en el texto. Era joven ;)
Programación Orientada a Objetos - constructores y destructoresAlvaro Enrique Ruano
Esta presentación es parte del contenido del curso de Programación Avanzada impartido en la Universidad Rafael Landívar durante el año 2015.
Incluye los temas:
• Constructores
• Destructores
Creado por Ing. Alvaro Enrique Ruano
The Work Ahead: The Future of Business and Jobs in Asia Pacific's Digital Eco...Cognizant
Asia Pacific businesses are investing more in digital than their counterparts around the world -- and realizing far greater rewards, according to our recent study. There's more work to do, however, to seize the full gamut of digital opportunities.
En esta presentación se explican los cambios que se han producido en el usuario de las tintorerías y las claves para entender la realidad de las tintorerías en el 2010.
Java8 : Más allá de las Expresiones LambdasEudris Cabrera
Mi presentación en el #BarCampRD2015. En esta charla abordamos las bondades de #Java8 haciendo hincapié en las
expresiones lambdas y las características de la programación funcional.
Introducción a la programación en c++.
Contenido:
-Tipos de datos
-Entrada y salida por consola
-String
-Preprocesador
-Operadores y sentencias de control
-Punteros
-Arrays
-Cadenas de caracteres
-Memoria dinámica
-Introducción a la POO en c++
-Referencias
3Redu: Responsabilidad, Resiliencia y Respetocdraco
¡Hola! Somos 3Redu, conformados por Juan Camilo y Cristian. Entendemos las dificultades que enfrentan muchos estudiantes al tratar de comprender conceptos matemáticos. Nuestro objetivo es brindar una solución inclusiva y accesible para todos.
Inteligencia Artificial y Ciberseguridad.pdfEmilio Casbas
Recopilación de los puntos más interesantes de diversas presentaciones, desde los visionarios conceptos de Alan Turing, pasando por la paradoja de Hans Moravec y la descripcion de Singularidad de Max Tegmark, hasta los innovadores avances de ChatGPT, y de cómo la IA está transformando la seguridad digital y protegiendo nuestras vidas.
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
En este proyecto de investigación nos adentraremos en el fascinante mundo de la intersección entre el arte y los medios de comunicación en el campo de la informática.
La rápida evolución de la tecnología ha llevado a una fusión cada vez más estrecha entre el arte y los medios digitales, generando nuevas formas de expresión y comunicación.
Continuando con el desarrollo de nuestro proyecto haremos uso del método inductivo porque organizamos nuestra investigación a la particular a lo general. El diseño metodológico del trabajo es no experimental y transversal ya que no existe manipulación deliberada de las variables ni de la situación, si no que se observa los fundamental y como se dan en su contestó natural para después analizarlos.
El diseño es transversal porque los datos se recolectan en un solo momento y su propósito es describir variables y analizar su interrelación, solo se desea saber la incidencia y el valor de uno o más variables, el diseño será descriptivo porque se requiere establecer relación entre dos o más de estás.
Mediante una encuesta recopilamos la información de este proyecto los alumnos tengan conocimiento de la evolución del arte y los medios de comunicación en la información y su importancia para la institución.
Actualmente, y debido al desarrollo tecnológico de campos como la informática y la electrónica, la mayoría de las bases de datos están en formato digital, siendo este un componente electrónico, por tanto se ha desarrollado y se ofrece un amplio rango de soluciones al problema del almacenamiento de datos.
2. ● Intro con dibujito
● Qué es? Qué hace? Para qué sirve?
● Analizando el problema
○ P/Invoke vs C++/CLI
● DllImport y sus allegados
● Data Marshalling
○ Data Types
○ Estructuras
○ Callbacks
Agenda
3. Quées?Quehace?Paraquésirve?
● Es una funcionalidad del CLR ...
… que permite invocar código nativo
(unmanaged) desde .Net (managed).
● Es muy flexible, y con defaults razonables.
6. Problema
● Se desea utilizar cierta API nativa, que no
tiene bindings para .Net.
● Debe ser Portable.
● No se dispone del código fuente de la
librería.
7. Ejemplos(pococoncretos)
● API de Windows
● Librería que implementa determinado
protocolo.
● Interoperabilidad con distintos frameworks
8. YquépasaconC++/CLI?
● Crear un wrapper sería más sencillo. ✓
● Buena performance, mejor que P/Invoke en
algunos casos. ✓
● Estáticamente type-safe. ✓
● Transiciones entre managed y unmanaged
son sencillas y seguras. ✓
9. YquépasaconC++/CLI?
● No es portable (solo Windows). ✘
● Se necesita el código fuente de la librería. ✘
● Hay que tocar otro lenguaje, una especie de
C++ maquillado. ✘
15. ● Indica que el método es expuesto por una DLL
nativa (class DllImportAttribute).
/- DllImport
● El keyword extern indica que el método está
implementado en otro lado.
● En nuestro ejemplo:
○ Dll Nativa: kernel32.dll
○ Función : CopyFile
19. /-CharSet vs ExactSpelling
● ExactSpelling deshabilita name matching.
● La función CopyFile no existe en
kernel32.dll.
● Sí existen CopyFileA y CopyFileW
23. /-CallingConvention
● Esquema que establece como una función recibe
parámetros y devuelve un resultado.
● El código necesario lo genera el propio compilador
(C/C++).
● El default en .Net es Winapi (StdCall).
● “... quien limpia el stack”.
26. /-EntryPoint
● Especifica el nombre con el que se va a buscar
la función.
● O el índice de la función dentro de la DLL .
○ Ej: EntryPoint = "#167"
● El default es el nombre del método marcado
con el DllImport.
27. Ejemplo
void CopyFile(string from, string to)
{
bool copied = NativeCopyFile(from, to, true);
if (copied == false)
{
throw new Win32Exception(Marshal.GetLastWin32Error());
}
}
29. ● Se trata de una especie de transformación
de datos.
● Desde el mundo managed al mundo
nativo.
● Desde el mundo nativo al mundo
managed.
DataMarshaling
30. Para cada data type de .net existe un data type
unmanaged por defecto.
● int -> int
● bool -> BOOL /ojo! son 4 bytes
● string -> char * (o TCHAR)
● etc
DataMarshaling/DataTypes
37. ● Se debe especificar el layout
● Members pueden llevar atributos
DataMarshaling/Structs
[StructLayout(LayoutKind.Sequential)]
public class LOGFONT {
// members...
[MarshalAs(UnmanagedType.ByValTStr,
SizeConst = LF_FACESIZE)]
public string lfFaceName;
38. ● El layout se puede configurar explícitamente
[StructLayout(LayoutKind.Explicit)]
public class LOGFONT {
[FieldOffset(0)] public int lfHeight;
// more members…
}
DataMarshaling/Structs
39. ● Cual es el tamaño de este struct?
public struct Test {
public byte a;
public int b;
public short c;
public byte d;
}
DataMarshaling/Structs
● Ojo con el padding!!
12
41. ● Mapean directo con delegates
DataMarshaling/Callbacks
● Mismas reglas que con las demas
funciones.
● Una forma de llamar funciones de .Net
desde el mundo unmanaged.