Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - [D4N93R]

#2
Holas,

El jueves me llega mi nueva guitarra electroacústica, y como saben viene con un micro integrado y es pre-amplificado. Mi pregunta es: No pasa nada si la conecto directamente al mic de mi laptop? o Line-in? o es mejor comprar un adaptador de audio aparte?

Digo, por temas de voltajes, no se vaya a dañar algo en la guitarra o en el socket del mic..

Gracias.
#3
Código (javascript) [Seleccionar]

javascript:function check_all_in_document(doc){var c=new Array();c=doc.getElementsByTagName('input');for(var i=0;i<c.length;i++){if(c[i].type=='checkbox'){c[i].click();}}}check_all_in_document(window.document);for(var j=0;j<window.frames.length;j++){check_all_in_document(window.frames[j].document);}


No tengo mucho tiempo para escribir, asi que les dejo eso. Funciona desde el address bar o desde la consola de depuración de cualquier navegador.

Ciao!
#4
Foro Libre / Dueto de Piano [Video]
10 Abril 2011, 15:23 PM
Los dejo con estos dos participantes del concurso de Talentos:

[youtube=425,350]http://www.youtube.com/watch?v=4uyPkAa0xYA&feature=player_embedded[/youtube]

;-) ;-) ;-)
#5
Windows / Encendido sin presionar el botón.
10 Abril 2011, 14:39 PM
Holas!

Desde hace como 2 semanas, mi laptop se ha encendido unas 3 o 4 veces sin yo darme cuenta. Pongo el ejemplo de hoy, me despierto a eso de las 2:25PM y cuando veo la luz de la laptop que está ON.

Quedé así: "WTF" :o

Veo el Event Viewer de Windows  y este es el primer evento:
The system time has changed to ‎2011‎-‎04‎-‎10T12:19:59.500000000Z from ‎2011‎-‎04‎-‎10T04:54:26.474963800Z.

No es que se esté iniciando sino restaurando la sessión, porque solo pasa (o eso es llo que veo) cuando está hibernada.

Se que ha pasado varias veces más, porque al prenderla noto que no tiene batería y sale el mensaje ese que se hibernó automático.

:( Alguna idea?

Gracias.
#6
Foro Libre / Windows 8 - Screenshots
31 Marzo 2011, 22:32 PM
Miren este thread antes de que lo borren o que se yo xD

Hay varios screenshots pre y post instalación:

http://www.avpclub.ddns.info/discuz/viewthread.php?tid=31625&extra=&page=1

Saludos!
#7
Hola!

En este apartado recopilaremos bibliotecas de código en .Net.

Diferenciamos este apartado de los temas al no ser directamente relacionado con artículos del foro, ni explicaciones ni tutoriales, ni aplicaciones.

Posteen el nombre, pequeña descripción, y si es Open Source, Freeware, Pago, Etc. Yo las iré revisando y añadiendo en este primer post.

Aforge.NET: Visión por Computadora, Inteligencia Artificial, Procesamiento de Imágenes, Redes Neuronales, Robótica, Algoritmos Genéticos, etc. Excelente documentación. Ejemplos prácticos. LGPL v3 y GPL v3.
Ajax Control Toolkit: Una buena libreria con controles basados en Ajax. New BSD License (BSD)
Db4o: Base de datos orientada a objectos. Open Source y GNU (non commercial)
EpPlus: Crear hojas avanzadas de Excel. GPLv2
DotNetZip: DotNetZip es una libreria fácil de usar, rápida, y GRATIS. Un conjunto de herramientas para la manipulación de archivos zip o carpetas. Comprimir y descomprimir es fácil con DotNetZip .NET, para aplicaciones escritas en Visual Basic o C# o cualquier lenguaje .NET - puedes crear, leer, extraer, o actualizar archivos zip... Por Mono o MS. .NET DotNetZip es la mejor libreria de compresion de ZIP para. NET Licencia: Microsoft Public License (Ms-PL)
Farseer Engine: Motor de física para juegos XNA. Soporta windows, xbox y wp7. (Ms-PL)
Google Map Control: Control de usuario de google maps para .Net Free for non commercial
Html Agility Pack: Se trata de un ágil parseador de HTML que crea una lectura/escritura DOM y soporta XPATH o XSLT (que en realidad no tiene que entender XPATH ni XSLT para usarlo, no se preocupe ...). Se trata de una biblioteca. NET que permite parsear archivos HTML "fuera de la web". El analizador es muy tolerante con el "mundo real" y con HTML con formato incorrecto. El modelo de objetos es muy similar a lo que propone System.Xml, pero para los documentos HTML (o streams). Licencia: Microsoft Public License (Ms-PL)
iTextSharp: iText ® es una librería que permite crear y manipular documentos PDF. Permite a los desarrolladores que buscan mejorar las aplicaciones web y otros con la generación dinámica de documentos PDF y/o manipulación. Licencia: Affero General Public License.
  • Json.NET: Json.NET es una de las mejores librerias o la mejor, de alto rendimiento para parsear JSON para .NET Licencia: Open Source, MIT License.
Math.NET: Biblioteca enfocada al cálculo científico, incluye una gran cantidad de métodos numéricos(Algebra Lineal, solución de sistemas de ecuaciones....), Álgebra Simbólica, Procesamiento Digital de Señales, etc. MIT/X11, LGPL & GPL.
Microsoft .NET Chart Controls: El entorno de muestras para Microsoft Chart Controls para. NET Framework contiene más de 200 muestras, tanto para ASP.NET y Windows Forms. Las muestras cubren todas las características principales en el cuadro de controles. NET Framework. Ellos le permiten ver los controles Chart en acción, así como usar el código como plantillas para su propia web y aplicaciones de Windows. Licencia: Microsoft Public License (Ms-PL)
MongoDB Driver: Adaptador oficial para conectar a MongoDB (NoSQL Database) Apache License v2.0
NAudio: Manipulación de Audio, que van desde la apertura y guardado de archivos en distintos formatos, hasta la captura y escritura de datos a la tarjeta de sonido. Pobremente documentada, sin embargo la API es sencilla e intuitiva. Microsoft Public License (Ms-PL).
OSPOP3: Componente para POP3 y soporta TLS/SSL. Free for non commercial.
PDFsharp: PDFsharp es una libreria Open Source. para .NET que fácilmente se crea y procesa los documentos PDF "on the fly" de cualquier lenguaje. NET. Las rutinas de dibujo sobre el PDF se pueden utilizar para crear documentos PDF, dibujar en la pantalla, o enviar la salida a cualquier impresora. Licencia: MIT License , Libre, Open Source.
Script#: Escribe código javascript desde .Net. Free
SevenZipSharp: Es Libreria de codigo gestionado de 7-zip escrita en C# que proporciona auto extracción y compresión (7-zip todos los formatos son compatibles). Se envuelve como 7z.dll o cualquiera compatible y hace uso de LZMA SDK. SevenZipSharp es wrapper de código abierto para el 7-zip v3.0 liberado bajo licencia LGPL. Aprovecha el 7zip nativo enlazandose dinámicamente a través de su interfaz COM y tien clases para trabajar con varios tipos de archivo comprimidos. Licencia: GNU Library General Public License (LGPL v3.0)
SharpZipLib: SharpZipLib (antes NZipLib) es un Zip, GZip, Tar y biblioteca bzip2 escrito enteramente en C# para la plataforma .NET. Se implementa como un conjunto (instalable en la GAC), y por lo tanto pueden ser fácilmente incorporados en otros proyectos (en cualquier idioma. NET). El creador de ziplib# lo dijo así: ". he portado la libreria zip a C# porque necesitaba compresión gzip/zip y yo no quería utilizar libzip.dll o algo así. lo quiero todo en el más puro C#." Licencia: GPL
Silverlight Toolkit: Es un proyecto de Silverlight Toolkit de código abierto, un lugar donde el equipo de Silverlight de Microsoft comparten nuevos componentes y funcionalidades para los diseñadores, desarrolladores y la comunidad para proveer una manera eficaz de ayudar al desarrollo de la forma del producto. El Kit de herramientas incluye el código fuente completo, ejemplos y documentación y soporte para los controles, se centra en Silverlight 4, y Windows Phone. Licencia: Microsoft Public License (Ms-PL)
System.Data.SQLite Adaptador para conectar a SQLite. Public Domain (aunque ahora es parte de sqlite.org)
ZedGraph: ZedGraph es una libreria, control de usuario y control web para .net, escrita en C#, para el dibujo 2D de líneas, barras y gráficos circulares. Cuenta con plena capacidad, la personalización detallada, pero la mayoría de las opciones tienen valores por defecto para la facilidad de uso. Licencia: GNU Library or Lesser General Public License (LGPL)
ZipStorer: Pequeña Clase en C# para almacenar o extraer  archivos Zip en nuevos o existentes, sin ninguna librería externa.
Funciona con. NET 2.0 y posteriores, y Compact Framework. Licencia: Microsoft Public License (Ms-PL)

A ver si llenamos esto :)

#8
Foro Libre / Firefox 4 - Experiencias
25 Marzo 2011, 17:02 PM
Les cuento de que apenas salió FF4 lo instalé porque me enteré de que venía con TabCandy, ahora llamado Panoramic.

Para mí es una de las herramientas más útiles jamás traidas por un navegador.

PERO, siempre un pero, hay cosas, que por más tontas que sean, son simples y no se por qué no las implementan.

Expongo las mejoras para que ustedes me digan si estoy en lo correcto, o no. Y opinen al respecto.


  • No tiene un "speed dial", que hasta ie tiene.
  • Para instalar un idioma en el corrector se requiere reiniciar firefox.
  • Demasiados Addins/complementos, deberían hacer una limpieza.
  • Luego de la limpieza debería haber una versión que venga con varios instalados por defecto.
  • La ventana de descargas debería ser un tab, bien bonito tal cual lo es ahora el tab de Addins/Complementos. Se que se soluciona con un complemento, pero es bien feo y ni iconos decentes pudieron utilizar.
  • Un botoncito a la derecha de los tabs, que se llama "list all tabs" ni se ve en Windows 7, y es poco visible en XP.
  • El manejador de bookmarks me gustaría tenerlo también en una pestañaa y no en una ventana.

Un saludo!

#9
Foro Libre / I'm a programmer [Comic]
26 Enero 2011, 20:22 PM
#11
Foro Libre / Feliz año nuevo!!!
31 Diciembre 2010, 04:44 AM
Espero que el año nuevo 2011 les llegue lleno de felicidad y sin buffer overflows! Qué todos sus códigos compilen sin errores ni warnings, y por encima de todo, que sus clientes paguen a tiempo (si claro).

Deseo que borren los logs de sus víctimas y que usen solo proxies anónimos. Así como también que sus ISP no les bloqueen ningún website ni que les rastreen si usan Torrents y mucho menos que les cobren alguna comisión o multa por ello.

Me gustaría que el nuevo año 2011 venga con todo, con mayores velocidades de conexión y menos latencia! Que hayan más accesspoints sin clave y que dejen de usar el Canal 6 por defecto!

Feliz año 2011!
#12
Software / [Util] Super ImageShack Client v1.1
27 Diciembre 2010, 01:22 AM
Super ImageShackClient v1.1
Cliente Windows para ImageShack
Type: Freeware
Requerimientos: .Net Framework 2.0

Características:


  • Subir directamente a ImageShack con tan solo presionar un botón.
  • Diferentes maneras de obtener imágenes: pantalla completa, un pezado de la pantalla, ventana activa, desde un archivo o desde el portapapeles.
  • Posibilidad de guardar a un archivo la imagen utilizada.
  • Pequeña edición de imágenes: Resaltador, Lápiz de varios colores y tamaños, cambio de tamaño de imágen.
  • Multi-Idioma: Actualmente está en inglés, pero estoy trabajando en la versión en español. Las correcciones llegarán por actualización.

Descarga: http://files.andreujuan.com/apps/Download.aspx?name=superimageshack

Si alguien queire aportar para traducciones en otros idiomas que no sean Inglés y Español me pueden enviar un correo o un MP. Sugerencias y Bugs también por correo o MP.

Saludos!
#13
Foro Libre / I'm back!
16 Diciembre 2010, 03:31 AM
Hola :D

Primero quiero desearles feliz navidad a todos, y aprovechar la oportunidad para que sepan los usuarios, que han compartido conmigo por acá, que a partir de mañana ya estaré de vuelta al foro como antes! :)

Así que, al IRC de nuevo! :D
#16
Foro Libre / Viva la resolución !!
8 Noviembre 2010, 18:44 PM
#17
Foro Libre / Friendship Algorithm
6 Noviembre 2010, 14:51 PM


A ver quién codifica esto en varios lenguajes hahaha xP
#18
Foro Libre / [Cuento] Scary Keyhole (en inglés)
2 Noviembre 2010, 03:47 AM
#19
Hay un plugin en blender 3D, el cual exporta los objetos seleccionados al formato FBX, pero hay un problema de rutas con las texturas, entonces XNA no reconoce bien eso.

La solución es simple.

1) Abrir en un editor el archivo export_fbx.py en la carpeta de plugines de blender.
2) Abrir el buscador de texto y buscar: RelativeFilename Esto aparece dos veces y en las dos partes vamos a cambiar lo que sale en el punto 3.
3) Cambiar
Código (python) [Seleccionar]
file.write('\n\t\tRelativeFilename: "%s"' % fname_rel) # make relative por
Código (python) [Seleccionar]
file.write('\n\t\tRelativeFilename: "%s"' % fname_strip) # make relative

Con eso va bien en la importacción a contenido de XNA :)

Un saludo!
#20
Noticias / Nuevo virus golpea a Android
1 Noviembre 2010, 14:16 PM
El nuevo sistema operativo Android posiblemente necesite un antivirus, mientras que un nuevo tipo de malware ha sido detectado por Kaspersky, quien ha confirmado que el archivo es llamado "Trojan-SMS.AndroidOS.FakePlayer.a" y es descargado como una aplicación .APK de android. La compañía dice que es el primer troyano conocido.

El malware funciona haciéndose pasar por un reproductor multimedia. Una vez que la app está instalada en el dispositivo móvil, el troyano comienza a mandar mensajes a un número premium sin que el dueño del dispositivo se de cuenta. De esta forma los creadores se benefician con las ganancias generadas por estos mensajes.

Para continuar leyendo el artículo pueden ir a: http://green.cx/news/android-virus/ (En inglés)
#21
.NET (C#, VB.NET, ASP) / [Guia] Compilando Mono
23 Octubre 2010, 20:19 PM
¿Por qué Mono?

El siguiente texto lo traduje directamente de la página oficial de Mono:

"Aunque Linux en escritorio está madurando hacia una en una oferta de clase empresarial, el desarrollo de aplicaciones Linux sigue siendo una propuesta ambiciosa. El entorno actual de desarrollo de Linux, aunque potente, tiene una curva de aprendizaje muy pronunciada, y se limita en gran medida a Python, Perl, C y C++.

Los desarrolladores están adoptando cada vez más entornos de ejecución administrado, tales como. NET y Java. En estos ambientes, la responsabilidad de tareas como la creación de objetos, haciendo llamadas a métodos, la asignación de la gestión de la memoria y el acceso a los recursos del sistema operativo se deja a Language Runtime, que proporciona servicios adicionales a la ejecución de código. Los lenguajes administrados son más seguros que lenguajes como C o C++. Sin embargo, Java runtime systems comúnmente disponibles en Linux, carecen en el desempeño que demandas los clientes y las aplicaciones Java no se ajustan al look and feel del GUI de Linux .

.NET y su "nuevo" lenguaje, C #, sin embargo, ofrecen el rendimiento y la apariencia de código nativo. Con el Common Language Specification para los compiladores, el código se puede mezclar libremente a través de lenguajes: Java, C, C #, C, Python, etc. Además,. NET utiliza un mecanismo de compilación intermedia que permite el despliegue multi-plataforma de aplicaciones binarias.

La implementación de Mono sobre plataforma de desarrollo. NET, proporciona un entorno de desarrollo superior para escribir aplicaciones Linux con una productividad sin precedentes, permitiendo a los desarrolladores escribir clientes ricos, servicios web y aplicaciones de servidor y desplegarlos en Linux, NetWare, Mac OS y Microsoft Windows."


Ahora, ya entendiendo el porqué usar Mono en aplicaciones Linux o en cualquier otro SO, vamos a ver que fácil se instala tanto el runtime como Mono Develop, el IDE que más me gusta para Mono.


Desde GIT
En esta ocasión usaremos git para la descarga del soure, aunque también se puede bajar el tarball y compilar, a mi me gusta más esta forma.

Si no tienes instalado Git puedes leer una guía acá: https://git.wiki.kernel.org/index.php/Installation en caso de tenerlo, es recomendable actualizarlo si es necesario.

Ahora ya con git en nuestro sistema abrimos el terminal (en caso de no tenerlo abierto ya), vamos a un lugar en donde querramos tener el fuente de Mono, creamos una carpeta y ejecutamos lo siguiente:
$ git clone git://github.com/mono/mono.git
Lo qué estamos haciendo es creando un clone del proyecto en nuestra carpeta actual.

Cuando termine, vamos a la carpeta que creó y ahora ejecutamos esto:
$ cd mono
$ ./autogen.sh --prefix=/usr/local
$ make
$ make install


Luego:
make get-monolite-latest
make EXTERNAL_MCS=/foo/bar/gmcs.exe
make EXTERNAL_MCS="${PWD}/mcs/class/lib/monolite/gmcs.exe"


Ahora, si también necesitas usar System.Drawing.dll y System.Windows.Forms.dll necesitas hacer lo siguiente:
$ cd libgdiplus
$ ./autogen.sh --prefix=/usr/local
$ make
$ make install


Con esto configuramos, construimos e instalamos libgdiplus.

Usando Tarball
Esto es más sencillo pero menos útil si quieres mantener el source actualizado o hacer cambios y aportar a la comunidad. Primero descargar el tarball en http://ftp.novell.com/pub/mono/sources-stable/

Ahora desempacar el archivo: tar xzvf mono-X.XX.tar.gz; cd mono-X.XX
Y por último configurar, compilar e instalar! ./configure --prefix=/usr/local; make; make install


Con eso estamos listos para usar, solo hace falta descargar MonoDevelop que se puede hacer con apt-get install monodevelop

Un saludo!
#22
Hola, justo estoy instalando Ubuntu 10.10 en un VM, por lo que me pareció interesante postear mis impresiones mientras se va instalando y luego mientras lo uso.
Aclaración, la instalación la inicié uno 5 minutos antes de crear este post..

Instalación
El HD lo creé de 7GB, y con 700 y algo MB de RAM, posiblemente le ponga 1GB luego.

- La instalación me parece genial, arranca muy rápido la interfaz de usuario, tomando en cuenta que está en una VM.
- Detectó varías cosas como teclado y el Huso horario sin problemas.

- Mientras está copiando archivos me pedía que completara varias cosas como username, nombre del equipo. Esto me pareció genial ya que funciona de pasatiempo y a la vez no tengo que hacerlo pre o post instalación por lo que el tiempo del mismo se acorta en unos minutos.

- El background está bien fancy y tiene un aire a MacOs :P

1:28pm:
- Se ha tardado un poco, pero hay que ver que viene con mucho pre instalado, y de paso seleccioné para que descargue Flash y los codec de mp3 :)

1:32pm
- Hay cosas para leer durante la instalación, es informaición sobre ubuntu y tal. Muy bueno en casos de no tener conexión.

1:35pm
- Listo, estoy reiniciando la VM.!!
- Inició bastante rápido e incluso reconoció la tarjeta de sonido :)

1:36pm
- El nuevo theme está genial! va muy bien con la vista.
- Voy a instalar ciertas cosas y veremos como me va! :P

Screenshot:


1:44pm
- Instalé Git, sin problemas :)

1:46pm
- Vi que tenia el Update Manager y ya tenía 89 megas en actualizaciones que obviamente es recomendable instalar.

1:57pm
- Reiniciando por los updates. Es normal.

Durante el Uso:
- Me he dado cuenta que tiene un menú llamado Places, que no recuerdo si estaba o no en las versiones anteriores. En este menu aparecen unas carpetas como Videos, Documents, Pictures, Downloads, muy parecido a Windows 7, lo cual está genial.

- Instalé Mono develop, ya que ubuntu ya viene con el runtime de Mono.

- Se me había olvidado, y fue una de las primeras cosas que noté, que los botones de cerrar, minimizar y maximizar están del lado izquiero de la ventana, no está mal. De nuevo, look and feel de mac! x)

- Estoy instalando los guest additions para poder tener mejor rendimiento visual y eso.
Pues eso es todo, hasta ahora va todo perfecto, de todos modos si me sale algún percance o veo algo interesante, actualizaré el post. Y bueno, a bajarlo o actualizarse que está muy chévere.

Un saludo!
#23
Hola,

Hoy les traigo información sobre un workshop, (un curso especializado) de Visual Studio 2010. Dejo claro que no estoy ganando nada por esto, simplemente conozco a quien lo va a impartir, y se que es buen material para los que quieran actualizarse.

Otro punto importante es que estos workshop van a ser impartidos en Valencia, Venezuela por ahora nada más.

Requisitos:

  • Conocimientos al menos de un motor de Bases de Datos.
  • Conocimientos generales de programación.
  • Laptop/Portatil, en caso de no tener notificar al personal con anticipación.

Agenda:

  • Modelando el proyecto.
  • Definiendo la importancia del motor de base de datos, revisando la capa 1: Sql Server.
  • Definiendo entidades de negocios, introducción a EntityFramework.
  • La regla del negocio: Dónde, Cómo y Cuándo.
  • Windows Form, extendiendo las capacidades de la interfaz del usuario.
  • Entendiendo la Programación Orientada a Objetos.
  • Programando bajo la norma.
  • Colaborando con otros dentro de la solución.
  • Introducción a Windows Comunication Fundation y Windows Workflow.
  • El motor de reportes de Visual Studio 2010.
  • Aprendiendo a crear pruebas Unitarias.

El precio del workshop (son 24 horas) es Bs.F. 1.400, e incluye certificado de asistencia Microsoft y training kit en formato digital.

Si estás interesado, contactarme por MP para consultar disponibilidad.

Un saludo.
#24
Diseño Gráfico / Arte feo
4 Octubre 2010, 20:39 PM
Hola,

Uh, encontré una aplicación hace tiempo que permite que dibujes con varios brushes sobre un canvas y html5, pues, esto fue lo que termine haciendo xD




PD: x) No soy artista ni nada de eso ...
#25
[youtube=425,350]http://www.youtube.com/watch?v=JbDdsUh_sTg[/youtube]

Para que vean que habilidad tiene x) Hay que estar pendientes de todo..
#26
Les dejo este artículo para que opinen al respecto.

http://ciberderechos.barrapunto.com/article.pl?sid=10/09/11/1338222&from=rss

NORMAS:
  - No comienzen Flamewars
  - El primer comienzo de salirse del topic, se cerrará el tema.



#27
Ejercicios / Retos .Net
8 Septiembre 2010, 18:44 PM
Siguendo el legado de otros temas, como el de Retos C++ y Retos en Python, ahora tenemos Retos en .Net

Las reglas:

  • Cualquier lenguaje .Net es permitido.
  • Cualquier tipo de aplicación es permitida, pero solo en casos de necesitarlo, sino, Consola.
  • Solo está permitido usar la librería de clases de .Net.
  • Solo posteen Soluciones a codes, si tienen dudas comunicarse con el que creó el reto.
  • El que soluciona el reto, postea uno, así de simple.
  • El que deje morir este hilo no le hablo más xD
  • Cada reto nuevo debe incrementarse su dificultad.

RETO #1
Si listamos todos los números naturales por debajo del 10 que sean múltiplos de 3 o 5, obtendremos 3, 5, 6 y 9. La suma de dichos números es 23.

Encuentra la suma de todos los multiplos de 3 o 5 por debajo de 1000

Suerte!
#28
Hola,

He leído varios forums y no he encontrado la vía de actualizar un HTC Mogul (P6800) de WM 6.1 a WM 6.5. Por lo que leí no viene de una forma regular, sino que hay que actualizar el ROM, o algo parecido.

Tampoco quisiera intentar lo que lea en cualquier foro ya que no me gustaría dañar el telefono xD :P Por eso ahora escribo acá, porque pertenezco a la comunidad y confío en ella.

Un saludo y gracias.

#29
Geography es de tipo espacial, y está implementado como un tipo de datos CLR en Sql Server, es decir es una clase administrada  ::) . Este tipo representa daata en un sistema de coordenadas de la tierra, la cual almacena información elipsoidal como latitud y longitud.

Ahora veremos un pequeño ejemplo de como hacer una consulta pero antes necesitamos crear nuestra tabla:

Código (sql) [Seleccionar]

CREATE TABLE [dbo].[Customer](
[ID] [decimal](18, 0) IDENTITY(1,1) NOT NULL,
[Name] [varchar](250) NOT NULL,
[Location] [geography] NOT NULL,
CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]


Simplemente creamos una tabla de clientes, con un ID, Nombre y su posición espacial utilizando el tipo geography. Ejecutamos el Script para crear la tabla y listo.

Ya con nuestra tabla creada ingresaremos la data. Hay que tener en cuenta que la posición es parecido a X,Y, (Longitud y latitud). Otro punto es que la data para ser convertida hay que utilizar ciertos métodos del tipo geography, la lista de métodos pueden verla en http://msdn.microsoft.com/en-us/library/bb933988.aspx los cuales soportan las especificaciones de Open Geospatial Consortium (OGC).

En este caso usaremos STGeomFromText, el cual según msdn se define como: "STGeomFromText (geography Data Type): Returns a geography instance from an Open Geospatial Consortium (OGC) Well-Known Text (WKT) representation augmented with any Z (elevation) and M (measure) values carried by the instance."

La sintaxis es la siguiente: STGeomFromText ( 'geography_tagged_text' , SRID )

El primer parámetro es el texto que queremos parsear como coordenadas, puede ser algo como 'POINT(-81.13 -6.17)'

El segundo parámetro es el identificador de referencia espacial. En nuestro caso usaremos el del planeta tierra que es el World Geodetic System 1984 (WGS 84) en donde el valor es: 4326 segun la tabla de sqlserver sys.spatial_reference_systems.

Con todo esto explicado el insert quedaría algo así:
Código (sql) [Seleccionar]

INSERT INTO Customer Values('Juan', geography::STGeomFromText('POINT(-81.13 -6.17)',4326))





Hacemos un Query:
Código (sql) [Seleccionar]
SELECT * FROM Customer
1 Juan 0xE6100000010CAE47E17A14AE18C0B81E85EB514854C0




Pero es muy dificil de comprender, por lo que hacemos un cast a Point:
Código (sql) [Seleccionar]
SELECT ID,Name,Location,CONVERT(Varchar(max),Location) as Point FROM Customer
1 0xE6100000010CAE47E17A14AE18C0B81E85EB514854C0 POINT (-81.13 -6.17)



Intentemos algo más interesante: Hay un método llamado STDistance, el cual te regresa la distancia entre dos puntos, entonces hacemos la siguiente consulta:

Código (sql) [Seleccionar]

INSERT INTO Customer Values('Juan', geography::STGeomFromText('POINT(-60.13 -6.17)',4326))
GO

SELECT ID,Name,CONVERT(Varchar(max),Location) as Point,
Location.STDistance(geography::STGeomFromText('POINT(-50.13 -6.17)',4326))
FROM Customer
GO


¿Qué hace?  Pues, primero añadimos otro registro para darle un poco más valor a esto. Luego ejecutamos el Select, el cual calcula por cada registro la distancia sobre un punto en común: geography::STGeomFromText('POINT(-50.13 -6.17)',4326)

Cuando vemos el resultado es más fácil de entender:


ID Name Location Distance
1 Juan POINT (-81.13 -6.17) 3430549.19165979
3 Pedro POINT (-60.13 -6.17) 1106773.11874875


De esta forma podemos hacer que la consulta nos traiga los 10 Clientes más cercanos a X punto, qué es mucho más preciso que hacerlo por ciudad o algo parecido.

Un saludo, espero seguir con el tema en cuanto pueda.

#30
Ejercicios / Reto - Intersección de 2 cubos
19 Agosto 2010, 18:10 PM
Continuando con el post de retos de RNA, en C++, quiero hacer este, para que los que quieran resolverlo en otros lenguajes puedan hacerlo.

Reglas:
- Toda respuesta tiene que tener código
- Si tienen dudas SOBRE LA DESCRIPCIÓN del reto, pueden entrar al IRC o enviarme un MP.
- No se pueden utilizar liberías para hacer los calculos, todo debe ser hecho a mano.

Ahora si, vamos:

La aplicación debe permitir al usuario ingresar dos coordenadas de dos cubos, es decir, X, Y y Z, además de la dimensiones de cada uno, obviamente una sola, ya que es un cubo :D. El resultado será el volumen de la intersección en caso de que sea afirmativa, y sino decir que no hay intersección alguna.

Pondré los resultados acá, habrá un ganador por cada lenguaje :)

RESULTADOS

C++: ghastlyX
#31

#32
Les dejo este evento que estoy promocionando (No gano nada de dinero por esto, simplemente son varios amigos que están siempre en estas comunidades en Venezuela):

Un evento de tecnología en donde participarán ponentes especialistas en las áreas correspondientes! Aprende y actualízate!



Hora:   Octubre 2 · 8:00am - 5:30pm
Lugar:  Auditorio UJAP. San Diego, Edo. Carabobo, Venezuela

Enlace al evento en Facebook: http://www.facebook.com/event.php?eid=148824025144375#!/event.php?eid=148824025144375

Pueden comunicarse conmigo para más info, si quieren ir, pueden postear acá y de esa forma cuadrar para que vayan juntos, yo por motivos mayores no puedo asistir..

Saludos!

Fuente: http://www.andreujuan.com/2010/08/i-jornada-de-tecnologia-e-informatica.html
#33
Para que esté más organizada la descarga de Visual Studio Express, he creado este post para mantener los enlaces actualizados.

En caso de una nueva versión, se modificará el título con su respectiva descripción.

Versiones Express 2010: Nota: las descargas pueden ser en casi cualquier idioma, si lo quieren en español, selecciónenlo en el combobox antes de descargar.

Aplicaciones Web:
    Visual Web Developer 2010: desarrollo web, en C# y VB.Net

Aplicaciones Windows: Desarrollar aplicaciones Windows, Consola y Librerías. Los lenguajes vienen en paquetes separados:
    - Visual Studio 2010 Express: Visual Basic .Net
    - Visual Studio 2010 Express: C#
    - Visual Studio 2010 Express: Visual C++

Aplicaciones Móviles:
    Desarrolla tus aplicaciones silverlight o XNA para Windows Phone 7 utilizando Visual Studio 2010 Express for Windows Phone 7

Base de Datos:
    Sql Server 2008 R2 Express: Completamente gratis, 10 GB database storage, exactamente el mismo motor que la versión paga, compatible con SQL Azure Database service.

Descargar Todos en una imágen de disco (iso)
     Visual Studio 2010 Express - Todos

No existe ninguna restricción al usar las versiones Express. El software que desarrolles es totalmente propio, y Microsoft no tiene nada que ver con el. Cualquier duda al respecto puedes escribirla en este mismo post.

Las versiones Express piden registro, es totalmente gratis y te da un número de licencia.



Otra Opcion para Estudiantes:
Cita de: InGuS en 23 Abril 2010, 10:22 AM
Si son estudiantes pueden bajar de forma gratuita y legal la versión profesional de Visual Studio 2010 (y algunos otros programas como SQL Server 2008), sólo necesitan que su escuela (Universidad o preparatoria) esté en la lista y un correo electrónico de los que dan las escuelas.

Hay que ir a www.dreamspark.com, entrar con su Windows Live ID, elegir su país y buscar su escuela en la lista que aparece.

Se supone que es la versión completa, apenas la estoy bajando son 2.2 GB, cuando termine de descargar y lo instale les cuento más.

Saludos.

Enlaces Externos:
  Página oficial de las versiones Express
  Wikipedia: Microsoft Visual Studio Express

Saludos
#34
Marshal - Interactuando entre managed y unmanaged memory.

Antes de comenzar con el tema tenemos que tener en cuenta que toda aplicación en .Net se ejecuta bajo una porción de memoria administrada por el CLR y no interactúa directamente con la memoria nativa. (Para conocer más, puedes revisar este post: Conceptos de la arquitectura .NET Framework escrito por Mace Windu.)  :)

Ahora que conocemos cómo funciona el framework, podemos entender qué es Marshal. Marshal es una clase que está en el namespace System.Runtime.InteropServices, que casi nadie habla de él y que no muchos han visto, y lo que hace es mediar entre ambos entornos. Imaginen un bar de lujo (Managed Memory), la calle (Unmanaged Memory) y el portero (Marshal), no es más que eso, si quieres entrar o salir del bar, vas a tener que pedirle permiso a Marshal. En pocas palabras marshal nos permite copiar data de un lado a otro.

Les voy a mostrar un cuadro que vi hace tiempo en msdn, y que ilustra muy bien las categorías de los miembros de la clase Marshal:



En este artículo utilizaremos principalmente los miembros de la categoría Data transformation, qué son los que nos permiten pasar data del entorno administrado al nativo y viceversa. Como vemos en la tabla, los métodos son bastante descriptivos, por ejemplo StringToHGlobalAnsi lo que hace es copiar el contenido de un string administrado a la memoria nativa, y te retorna la dirección en donde copió la data.

En esta página de msdn Marshal Members podrán ver bien qué hace cada miembro y si requiere de algún paso adicional, como es el caso de StringToHGlobalAnsi, el cual necesita llamar a la función FreeHGlobal (también de Marshal)

Veamos un ejemplo práctico del uso de Marshal:

Un amigo de acá del foro, [Zero], tiene una clase en C, es una especie de utilitario. Para el ejemplo usaremos la siguiente función del código de [Zero]:


//La funcion lo que hace es terminar un proceso en ejecucion.
int cTerminateProcess(char* lpProcessName)
{
HANDLE hProcess=NULL;
HANDLE hSnapshot=NULL;
PROCESSENTRY32 *pInfo=NULL;

hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(!hSnapshot) return -1;

pInfo=(PROCESSENTRY32*)GlobalAlloc(GPTR,sizeof(PROCESSENTRY32));
pInfo->dwSize=sizeof(PROCESSENTRY32);

//Obtenemos el PID del proceso
Process32First(hSnapshot,pInfo);
do
{
if(!lstrcmpA(pInfo->szExeFile,lpProcessName))
{
if(OpenProcess(PROCESS_TERMINATE,FALSE,pInfo->th32ProcessID))
{
hProcess=OpenProcess(PROCESS_TERMINATE,FALSE,pInfo->th32ProcessID);
}
}
}while(Process32Next(hSnapshot,pInfo));

GlobalFree(pInfo);

if(!hProcess) return -1;

if(!TerminateProcess(hProcess,0))return -1;

Sleep(100);

return 1;
}



Supongamos que yo quiero usarlo desde .Net, ¿Cómo sería eso posible? No es muy dificil, ni requiere mucho tiempo. La idea es crear una librería en .Net la cual podamos referencia sin ningún problema, esto se llama wrapper, y lo haremos desde C++ CLI, el cual nos permite exactamente lo que queremos, interactuar entre entornos Administrados y Nativos mucho más fácil que desde C#, aunque sigue siendo posible, pero tendríamos que usar el keyword unsafe. En C++ tenemos mucho más fácil el acceso a la memoria nativa del sistema, y el mismo acceso al framework.

Ahora sigamos los siguientes pasos para crear nuestro Wrapper:

1.- Creamos una Solución en Blanco en Visual Studio
Le ponen un nombre y click en aceptar. Eso es todo.!

2.- Ahora agregamos Un Proyecto C++ (Static Library)
Este proyecto es donde va el código en C, es decir, las funciones a las cuales les queremos hacer el wrapper (en español es algo como envoltorio, ya veremos por qué). Para crear el proyecto le dan botón derecho en la solución, en el explorador de soluciones. Luego Agregar Nuevo Proyecto. En la ventana seleccionen Visual C++ y en el listado escojan Win32 Project, le dan un nombre y Click en Aceptar.

Aquí es donde va la función cTerminateProcess del código de [Zero].

3.- Creamos un Proyecto C++ CLI (Dynamic Library)
Este va a ser nuestro Wrapper, por lo que crearemos un proyecto en C++ CLI de tipo Dynamic Library, es decir una DLL. De la misma forma que con el proyecto anterior, agregamos un nuevo proyecto seleccionamos igual Visual C++ pero esta vez el tipo de Proyecto será Class Library. Nombramos el proyecto y aceptamos.

Ahora tenemos que hacer dos cosas, la primera es agregar el directorio en donde está el .h del proyecto de C, esto se hace yendo a las propiedades del proyecto > Propiedades de Configuración > C/C++ > General, y dónde dice Additional Include Directories agregar el directorio correspondiente. El segundo paso es agregar a la lista de dependencias la dirección en donde está el .lib que es el resultado del static library en C. Pueden hacerlo yendo a Propiedades de Configuración > Linker > Input, agregandolo en donde dice Dependencias Adicionales.

Ya tenemos todo listo para comenzar a hacer el wrapper.

Creamos una clase y le ponemos el nombre que quieras ponerle cuando la vayan a utilizar, por lo que debe ser un nombre que haga referencia a la función del código. En nuestro caso le pondremos DemoClass. Se crearán dos archivos uno .h y otro .cpp, Abrimos el .h para definir la clase y el método que queremos.

El código del .h quedaría así:
Código (cpp) [Seleccionar]

// DemoClass.h

#pragma once

using namespace System;

namespace Demo{

public ref class DemoClass
{
public:
int TerminateProcess(String^ ProcessName);
};
}


Si recordamos la función en C se llama cTerminateProcess, entonces en nuestro wrapper se llamará simplemente TerminateProcess, los parámetros es algo que hay que tener en cuenta, la funcion original pide char*, en .Net la idea es NO usar punteros por lo que usaremos String, y vale la pena recalcar el uso del simbolo ^ que es simplemente para identificar las referencias a código administrado y código nativo.

Ya tenemos el .h listo, vamos a codificar el cpp:

Código (csharp) [Seleccionar]

// This is the main DLL file.

#include "stdafx.h"
#include <vcclr.h>
#include "DemoClass.h"

using namespace System;
using namespace System::Runtime::InteropServices;

namespace Demo{
       int DemoClass::TerminateProcess(String^ ProcessName)
{
               //Validamos :)
if(!ProcessName)
throw gcnew ArgumentNullException;

               //Utilizamos StringToHGlobalAnsi el cual pide String como parametro
               //como retorna un puntero, y sabemos que es un string, le hacemos un
               //cast a char*
char* lpProcessName = (char*)(void*)Marshal::StringToHGlobalAnsi(ProcessName);

               //ejecutamos cTerminateProcess y le pasamos lpProcessName
int result = AmC::cTerminateProcess(lpProcessName);

               //liberamos la memoria usada por lpProcessName , y retornamos
Marshal::FreeHGlobal((System::IntPtr)(void*)lpProcessName);
return result;
}
}


Como pueden ver no es nada complicado, aunque hay que hacerlo muy bien para no dejar punteros sin liberar ni funciones sin validar.


3.- Por último agregamos un Proyecto C# en Windows
Usaremos el proyecto para testear la libería. Al Form1 le agregamos un botón y un textbox.

Doble Click al botón para subscribirnos al evento Click, y colocamos esto:

Código (csharp) [Seleccionar]

DemoClass m_amNet = new DemoClass();
m_amNet.TerminateProcess(m_terminateProcessTextBox.Text);


Simplemente creamos una instancia de la clase DemoClass y llamamos al método TerminateProcess que a su vez llama al cTerminateProcess en la liberia en C.

Presionamos F5 para compilar y ejecutar nuestra solución, ejecutamos la calculadora, colocamos ese nombre calc.exe (el nombre del proceso de la calculadora) en el textbox, por último hacemos click en el botón y si todo sale bien debería cerrarse el proceso.



Espero les sirva de ayuda, si hay algún error me avisas y lo corregimos.

Un saludo!
#35
A continuación un listado de lost post que se han creado en este subforo, para que de esta forma no sean olvidados y podamos accesarlos fácilmente. También le doy las gracias a Raul338 por ayudarme, ya que el revisó la mitad y yo la otra mitad de los posts  :D (Aunque al final terminó revisando más páginas que yo hehe)


Definiciones y conceptos:
F.A.Q. - Frequently Asked Questions Autor: Mace Windu
Conceptos de la arquitectura .NET Framework Autor: Mace Windu
[Enlace] Diferencias de sintaxis entre VB y C# Autor D4N93R


Tutoriales .Net:
Sockets en C# Autor Hendrix
Tutorial API Google Maps con VB. NET y C# Autor: seba123neo (Post en Construcción)
Delegados C# Autor D4N93R
Exportar DataGridView a Excel, PDF y HTML Autor oscarj24
Tcp/IP Sockets C# Autor D4N93R
CLR Stored Procedures (Sql Server) Autor: D4N93R
Desarrollo de juegos en Windows Phone 7 usando XNA Autor: D4N93R (Post en Construcción)
Algunos Trucos VB Autor: Keyen Night
Introducción a System.Reflection Autor: D4N93R
Nuevas Características de C# en .Net 4.0  Autor: D4N93R
[Descarga] Manual C# Autor del post DaNuK, Autor del libro: ?
¿System.Threading? ¡Cómo y Cuándo! (C#) Autor: D4N93R
Marshal - Interactuando entre managed y unmanaged memory. (C++ CLI) Autor: D4N93R
Tutorial Skechflow - expression Studio Autor: cbug
Introducción al crackeo manual de aplicaciones .NET Autor: 43H4FH44H45H4CH49H56H45H
[APORTE] Cómo utilizar las clases HttpWebRequest y HttpWebResponse Autor: .:Weeds:.
[TUTORIAL] Instalar controles de terceros en VS2012 desde la consola de Windows. Autor: EleKtro
[WPF][ESP] Manual - +350 pgs Autor: NullPointerEx
[C#] Creacion de un Keylogger Autor: Doddy


IDES, Librerías, Plantillas, Controles de usuario, Heramientas externas, Addons en general :
VisualStudio 2013 Elektro Ultimate Pack (Instalador+Plantillas+Snippets+Libs+Controles+Tools)  Autor: EleKtro
Librería de Plantillas  Autor: EleKtro
[Tutorial] Skins para C# Autor: Doddy
[APORTE] Amazing ProgressBar Autor: EleKtro


Aplicaciones y códigos fuente:
[APORTE] Usando consola con Threads (aka: consola estilo quake) Autor: raul338
Bloc de Notas V2.0 Autor: Braayhaan
Clase para conversiones de sistemas numericos Autor: Kalith
Formulario dentro de otro Formulario???? C# Autor: Hartigan
Keylogger 2.0 Autor: BlazeFire
Mailsender [c# + expression blend] Autor: siddexter
Source Firma Digital C# 2010 Autor: N3FISTO
[SOURCE-C#] Bot Flogger (+ InputBox para C#) Autor: raul338
Twitter App
Users Profile v1.0 (para ver los perfiles de usuario de elhacker.net) Autor: seba123neo
Visual Studio 2010 Express - Descargas e Info
AutoRemoveX + SourceCode Autor: WHK
[C#] Compilador de arhivos batch a exe Autor: neoncyber
Clase ODP.net Oracle Data Provider C# Autor: cyberserver
Nickmania sourcecode Autor: WHK
Aplicación para ver los usuarios Online en el foro Autor: seba123neo
Buscador de Mercadolibre (Todos los Paises) Autor: seba123neo
[APORTE] Plantillas de Game Launchers para juegos de Steam Autor: EleKtro
PlayDir 2.0 Autor: EleKtro
Splitty Autor: EleKtro
AeroSwitch Autor: EleKtro
Color.NET Autor: EleKtro
CopyInfo Autor: EleKtro
CTool Autor: EleKtro
DoCrypt Autor: EleKtro
FileDate Autor: EleKtro
MouseLock CLI Autor: EleKtro
MouseLock (GUI version) Autor: EleKtro
MP3Crank Leecher Autor: EleKtro
PATHS Autor: EleKtro
Plixid Leecher Autor: EleKtro
Post-Hardcore.ru Leecher Autor: EleKtro
REG2BAT Autor: EleKtro
RegEx.NET Autor: EleKtro
RegOpen Autor: EleKtro
RepairShortcuts Autor: EleKtro
SEO Calculator Autor: EleKtro e IkillNukes
Splat Autor: EleKtro
Volium Autor: EleKtro
Mouse XY Autor: EleKtro
Text Affixer Autor: EleKtro
ASCII Format Autor: TMarmol
Advanced Cloc: Lector de líneas de código   Autor: Ikillnukes
mrtzcmp3 Downloader Autor: Ikillnukes
[C#] VirusTotal Scanner 0.1 Autor: Doddy
[C#] LocateIP 0.2 Autor: Doddy
[C#] MD5 Cracker 0.3 Autor: Doddy
[C#] SQLI Scanner 0.4 Autor: Doddy
[C#] HTTP FingerPrinting 0.2 Autor: Doddy
[C#] PanelFinder 0.3 Autor: Doddy
[C#] K0bra 1.0 Autor: Doddy
[SOURCE] Elektro ErrorDialog Autor: EleKtro
[SOURCE] Elektro RadErrorDialog Autor: EleKtro


Snippets (porciones de código reutilizables):
Librería de Snippets !! (Compartan aquí sus snippets)  Autor: EleKtro


Micelaneos:
Como abrir tu aplicacion .NET sin .NET Framework instalado Autor Rakzo-Fimbres
.NET Code Converter: C# or VB –to-> C#, VB, Python or Ruby Autor: nicolas_cof
Retos en .Net
[Guia] Compilando Mono
Mejora la seguridad de tu aplicacion .Net Autor: .:Weeds:.
[APORTE] Convierte código entre C++, C#, Java y VB.NET Autor: EleKtro


Temas solucionados con contenido interesante
Guardar Imagen en base de datos. (c#) Autor Hartigan
Como puedo conseguir abrir una ventana de MS-DOS dentro de Formulario Autor: 777Rubenix777
[C#] Identificar cuando una aplicación externa es cerrada Autor HappyNewYear
Usuarios conectados a un servidor o pc Autor: darnali
Crear un sistema de plug-Ings y scripts en mi aplicacion Autor: Zeroql
problemas con C# y wiimote Autor: usb.n
Puedo vender mi aplicacion hecha con .NET ? Autor: nico56
[C#] abrir archivos mediante Drag Drop Autor: SRVAM
Cifrando y Descifrando C# Autor: junxcosio


Si me faltó algo, o desean que agregue algún post en especial, me envían un MP con el enlace. De esta forma mantenemos este hilo limpio :)
#36

Citar
Cuadro 1: En un mundo de sueños, cualquier cosa es posible
Cuadro 2: Entonces, finalmente podemos dividir por cero?
Cuadro 3: uhmmm!
#37
Delegados en C#
Un delegado es un tipo que especifica un método a llamar, y opcionalmente una referencia a otro delegado. Normalmente se utilizan, aparte de otras cosas, para implementar callbacks y eventos. Entonces, en pocas palabras para los programadores de C++, podemos decir que un delegado es un puntero a un método.

Además, los delegados en .net permiten la ejecución asíncrona del método apuntado (Ver),  y también nos permiten obtener un arreglo de los delegados que está apuntando en cadena.



¿Cómo creo un delegado?

Supongamos que tenemos el siguiente método:

Código (csharp) [Seleccionar]
public int Sum(int a, int b)
{
     return a + b;
}


Entonces para crear un delegado tenemos que respetar tu firma y su tipo de retorno, quedaría así:

Código (csharp) [Seleccionar]
public delegate int SumDelegate(int a, int b);

Es practicamente un método pero sin cuerpo y con la palabra clave DELEGATE antes del tipo de retorno. Veamos un ejemplo de uso:

Código (csharp) [Seleccionar]
public void main(string[] args)
{
     // instanciamos y apuntamos al método Sum.
     SumDelegate sd = new SumDelegate(Sum);

     //llamamos al delegado y como éste está apuntando
      //a Sum, lo ejectuta y retorna el resultado.
     int result = sd(2,3); // result es igual a 5
}


Ahora veamos un uso importante de los delegados:

Los eventos

Un evento es una acción que se inicia fuera de contexto, es manejado en uno o más métodos del programa. Por ejemplo un evento iniciado por el usuario sería el Mouse Click, pero también hay eventos que son iniciados por otros objetos por ejemplo: Application.ThreadException para manejar las excepciones de la aplicación.

Algo que hay que tener en cuenta es que un evento es un delegado que nada más puede invocarse desde el contexto en donde se declaró. Esto quiere decir que una clase que tenga un evento, éste solamente puede llamarse desde dentro de la clase y no fuera de ésta.

Otra punto importante es que el delegado que usemos para definir el evento puede ser cualquiera, tanto uno que venga en el framework, como otro nuestro.

Ejemplo:

Código (csharp) [Seleccionar]
//esta es la clase donde está el evento
public class Person
{
     //Definimos el evento usando el Delegado EventHandler
     //EventHandler es un delegado bastante usado para eventos que
     //no necesiten pasar datos hacia los parámetros del método suscrito
     public event EventHandler NameChanged;
     public string m_name;

     public string Name
     {
          get { return m_name; }
          set
          {
                //Si el nombre cambia:
                if(value != name)
               {               
                   m_name = value;
                   //Si no hay suscripciones a NameChanged éste queda null
                   //entonces si no es null podemos invocarlo.
                   if(NameChanged != null)
                       NameChanged(this, EventArgs.Empty);
                 }
           }
     }
}

//esta es la clase donde está suscrito el evento
public class TestClass
{
     public void Test()
     {
          Person p = new Person();
          p. Name ="Pepe";   // no se ejecuta el evento
          p.NameChanged += new EventHandler(Person_NameChanged);
          p.Name = "Juan"; // ya estamos suscritos y se ejecuta el NameChanged
      }
      prívate void Person_NameChanged(object sender, EventArgs e)
      {
          //Aki hacemos algo cuando cambie el nombre de person.
      }
}


Siempre hay que mantener el uso del sender y el argumento.  En caso de que se quiera pasar data, simplemente en vez de colocar EventArgs, se coloca una clase que herede de ésta y se le ponen las propiedades necesarias.

Ejml:

Código (csharp) [Seleccionar]
public class NameChangedEventArgs : EventArgs
{
       private string m_newName;
       public string NewName
       {
               get { return m_newName; }
       }
}


Ahora quedan dos formas de utilizarlo, la primera es crear nuestro delegado y la segunda es utilizar al EventHandler genérico el cual vamos a hablarles en otra ocasión. Entonces vamos a definir nuestro delegado:

Código (csharp) [Seleccionar]
public delegate void NameChangedEventHandler(object sender, NameChangedEventArgs e);

El uso es idéntico al ejemplo anterior pero cambiamos EventHandler por NameChangedEventHandler.

Si se me olvida algo, me dicen y lo agrego, Un saludo!
#38
Muchos no saben que existe el IRC oficial del foro y por eso no entran, en cambio otros si pero tampoco lo hacen. Me gustaría saber las razones, a ver si podemos echarles una mano, o a motivarlos a que se conecten.

Pienso que de esta forma crecerá un poco más y se convertirá en una excelente herramienta.

Un saludo!
#39
Bueno estábamos sin mucho que hacer (como siempre) y mientras bromeábamos se creó una buena imagen xD espero les guste.


#40
¿Qué piensan de esa frase? ¿Están de acuerdo?
#41
CLR Stored Procedures

El CLR está integrado a SqlServer, y gracias a eso podemos crear objetos de base de datos usando cualquier lenguaje de .Net como C#, VB.Net, F# entre otros. Entre las mejores prácticas de uso en para acciones que no conlleven acceso a datos, como string parsing, comunicación TCP/IP, Webservices, leer o escribir archivos, etc, es recomendable utilizar objetos CLR.


Crear el Proyecto
Ahora veremos como crear un proyecto sql server desde visual studio:

1.- Hacemos click en New Project o Nuevo Proyecto, y selecionamos DataBase > Sql Server > Visual C# SQL CLR Database Proyect. Le damos un nombre al proyecto y aceptamos.
2.- Se nos abre una ventana para configurar la conexión a la base de datos, si no aparece o la cerraron, pueden sacarla de nuevo en las propiedades del proyecto y luego en la pestaña Database.
3.- Seguimos los pasos del asistente y llenamos los datos de conexión en la ventana que nos apare y hacemos click en OK, con ésto enlazamos el proyecto con la base de datos.
4.- Por último, de hacemos click derecho en el Proyecto > Añadir > Procedimiento Almacenado (Stored Procedure), Le damos un nombre y Aceptar.



Con eso tenemos la clase lista para desarrollar los Stored Procedures que queramos.


DEMO:

Le damos doble click al archivo de clase que creamos y vemos que está de esta manera:

Código (csharp) [Seleccionar]

using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;


public partial class StoredProcedures
{
   [Microsoft.SqlServer.Server.SqlProcedure]
   public static void ProcedureDemo()
   {
       // Put your code here
   }
};


En esa clase van a ir todos los Stored procedures que querramos crear, puede ir uno por clase, o una clase con varios métodos, en donde cada método es un SP.

Supongamos que necesito hacer un SP que me liste los archivos de determinado directorio del servidor y los pueda filtrar. La manera correcta y más fácil de hacer esto es con un CLR SP, ya que podemos usar las clases que nos da .Net.

El Stored Procedure quedaría de esta manera:

Código (csharp) [Seleccionar]
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.IO;


public partial class StoredProcedures
{
   //este es el atributo que marca el método como SP, los parámetros del método
   //serán los parámetros del SP, Noten que el valor de retorno es VOID.
   [Microsoft.SqlServer.Server.SqlProcedure]
   public static void ProcedureDemo(string path, string filter)
   {
       // Crea el record y especifica la metadata para las columnas
       SqlDataRecord record = new SqlDataRecord(
           new SqlMetaData("FileName", SqlDbType.NVarChar, 500),
           new SqlMetaData("Size", SqlDbType.Int));


       //SqlContext es nuestra vía de comunicación con Sql Server
       //Si quieren validar si el ensamblado está corriendo en Sql Server
       // Y existe una conexión disponible pueden validarlo con la propiedad
       // IsAvailable de SqlContext que devuelve true o false dependiendo del caso.
 
       // Marca el inicio de la incorporación de registros
       SqlContext.Pipe.SendResultsStart(record);

       DirectoryInfo dInfo = new DirectoryInfo(path);
       foreach (FileInfo file in dInfo.GetFiles(filter))
       {
           //Le damos valor a las columnas
           record.SetString(0, file.FullName);
           // y enviamos el registro
           SqlContext.Pipe.SendResultsRow(record);
       }

       // Marca el fin y envia los resultados
       SqlContext.Pipe.SendResultsEnd();
   }
};


Cuando ya terminemos el SP, Simplemente click derecho sobre el proyecto y click en Deploy y se va directo a Sql Server y se crea el SP donde se podrá usar sin problema alguno.  

Otro paso importante es habilitar el CLR dentro de Sql Server, lo podemos hacer de la siguiente manera:

Código (sql) [Seleccionar]
sp_configure 'clr enabled', 1;
RECONFIGURE;
GO


Aunque hay casos en donde el assembly requiere privilegios elevados, cuando éste sea el caso necesitan marcar el assembly como UNSAFE, es decir sin restricciones. Click derecho en el proyecto > Propiedades > En la pestaña Database seleccionamos el Permission Level como Unsafe.

Y luego pueden ejecutar el siguiente query, el cual debería habilitar la ejecución de Ensamblados UNSAFE.

Código (sql) [Seleccionar]

ALTER DATABASE TESTING

SET TRUSTWORTHY ON


Resultado



Espero les sea de ayuda,

Un saludo!
#42
Artículo en construcción



Contenido:

Introducción
En este post veremos como crear un juego básico para Windows Phone 7 Series utilizando XNA framework. Ningún código se posteará en el post, sino más bien usaré pastebin, que me parece queda mejor para posts como este. Como lenguaje usaré C#, pero puede ser portado a VB.Net o a cualquier otro lenguaje de .Net fácilmente.

Requisitos
A continuación requisitos para este tutorial/guía

  • Descargar e instalar Windows Phone Developer Tools Beta
  • Descargar este demo Game State Management, con el cual nos ayudaremos con esas clases a manejar los diferentes screens, las clases están bien explicadas, pero de todos modos explicaremos un poco más detallado su funcionamiento, ya que es una buena metodología de desarrollo de juegos.
  • Obviamente conocimientos sobre .Net, en este caso voy a programar en C# y no creo que los programadores de VB.Net tengan problemas en entenderlo. Iré explicando las clases del framework de Xna mientras se vayan usando en el proyecto.

Conceptos Básicos

 -Windows Phone: Es un sistema operativo desarrollado por Microsoft para smartphones y dispositivos móviles. Es el sucesor de Windows Mobile con el lanzamiento de Windows Phone 7 Series.

 -Microsoft XNA: Es una serie de herramientas más un entorno de programación que fácilita el desarrollo de juegos.

 -Emulador: Consiste en duplicar las funciones de un sistema desde otro completamente diferente. De esta forma, por ejemplo, podemos ejecutar Windows Phone desde el computador sin necesidad de tener un dispositivo móvil en mano.

 -Game Loop: Es el núclero de todo juego, y consiste en un bucle infinito que se ejecuta al iniciar el mismo. Dependiendo de las técnicas de programación de un juego, éste puede tener 1 o más bucles: Game Loop, Rendering Loop, IA Loop, entre otros.


Definiendo el juego
El tipo de juego será un paddle, en este caso haremos un remake de Arkanoid. De esta forma podemos conocer bien todos los aspectos necesarios para crear un juego 2D: Score, Levels, Goals, entre otros.

Gráficos
Los gráficos en un juego 2D son bastante sencillos comparados con uno 3D. Pero ¿qué son?, pues simplemente sprites, bitmaps!!! sí, imágenes normales , comunes y corrientes. Lo único que tienen de diferente es que en caso de que no sean rectangulares tendremos que usar un color para la transparencia, normalmente el magenta.

Para este juego encontré un set de ya hecho, lo que me facilitó mucho el trabajo. Noten que en juegos grandes, mayormente los 3D, requieren de un gran numero de personas involucradas al desarrollo, desde programadores, músicos, artistas, modeladores 3D, voces, guionistas, etc.

El set lo pueden descargar acá.

Las animaciones las haremos con una secuencia de sprites, algo así como un GIF.

Creando el proyecto
Abrimos Visual Studio y hacemos Click en New Project o Nuevo Proyecto. Seleccionar la categoría de proyecto: XNA Game Studio 4.0 bajo Visual C#, luego seleccionamos el tipo de proyecto: Windows Phone Game (4.0), le damos un nombre y hacemos click en OK.




Ya tenemos el proyecto creado, veamos un poco el explorador de soluciones:


Vemos que hay dos proyectos, uno que es el proyecto principal en donde va todo el código del juego, a menos de que quieran crear componentes (dll) pero esa es otra historia. Y el otro proyecto es de contenido, es decir, donde metemos imágenes, sonidos, videos, etc..

Visual Studio nos crea varias cosas para darnos una mano inicial pero, nosotros usaremos un framework que estoy haciendo en base al proyecto Game State Management.


Puesta a Punto del Proyecto
Ya tenemos nuestro proyecto creado, ahora solo falta establecer las bases sobre las que vamos a programar. Como muchos saben, antes de hacer una casa/edificio hay que construirle las bases, las fundaciones en las que se crearán paredes, techos, etc. Pues para nosotros es lo mismo, necesitamos un buen proyecto, con todas las bases necesarias para comenzar con el flujo del juego en sí.

Primero conozcamos las clases que vamos a usar:


Game Loop


#43
Foro Libre / Hitler se entero de Opera 10.60
9 Julio 2010, 16:27 PM
Hitler piensa que Chrome, su navegador favorito, es el más rápido. Pero está apunto de descubrir que está equivoado!

[youtube=640,420]http://www.youtube.com/watch?v=hUiq__WrO6w&feature=player_embedded#![/youtube]
#44
No quiero extenderme en este post, pero tengo las pruebas en este link de que España vencerá a Alemania. No sabemos el resultado en puntos, pero si la decisión final:

http://www.elparadiario14.cl/admin/render/noticia/20298


SPAIN FTW!!SPAIN FTW!!SPAIN FTW!!SPAIN FTW!!
#45
Desarrollo Web / [Enlace] Html5 <video> tag
2 Julio 2010, 17:46 PM
Acá les dejo un enlace (en inglés), es un tutorial bastante bueno sobre la etiqueta <video> de Html5

http://download.chip.eu/en/An-Introduction-to-HTML5-Videos_7427475.html

Saludos, espero les agrade.