Ver la versión completa : .net
vizales77
24/04/2008, 20:10
Hola apañeros:
Ya se que estais muy ocupados probando el nuevo ubuntu (yo lo instalaré ahora mismo), pero queria haceros una consultilla
Cuando las empresas buscan gente que conozca .net, ¿a que se refieren? he estado investigando y parece que tiene visual basic, c# y demás... entonces... ¿que aprendo? ¿algun lugar para aprender?
En fin, que estoy perdido, a ver si alguien arroja sabiduria en mi cabeza hueca
Graciaaaaas.
Hola apañeros:
Ya se que estais muy ocupados probando el nuevo ubuntu (yo lo instalaré ahora mismo), pero queria haceros una consultilla
Cuando las empresas buscan gente que conozca .net, ¿a que se refieren? he estado investigando y parece que tiene visual basic, c# y demás... entonces... ¿que aprendo? ¿algun lugar para aprender?
En fin, que estoy perdido, a ver si alguien arroja sabiduria en mi cabeza hueca
Graciaaaaas.
Cuando dicen .net se refieren a la intrincada maquina virtual que es el framework 2.0 en adelante, el framework te da objetos y propiedades comunes con independencia del lenguaje que elijas, asi por ejemplo la manera de abrir un txt por codigo, es practicamente igual en C, que en C# que en visual basic, el lenguaje pasa a un segundo plano, elije el lenguaje que mas te guste y dedicate a estudiar los metodos, objetos y propiedades del framework.
Topochan
24/04/2008, 20:21
Hola apañeros:
Ya se que estais muy ocupados probando el nuevo ubuntu (yo lo instalaré ahora mismo), pero queria haceros una consultilla
Cuando las empresas buscan gente que conozca .net, ¿a que se refieren? he estado investigando y parece que tiene visual basic, c# y demás... entonces... ¿que aprendo? ¿algun lugar para aprender?
En fin, que estoy perdido, a ver si alguien arroja sabiduria en mi cabeza hueca
Graciaaaaas.
.Net viene a ser como java pero a lo guarro(estilo microsoft), una maquina virtual y varios interpretes para lenguajes varios, y entre estos crearon cosas nuevas como visual basic .net(con orientación a objetos), c#(me gusta java y lo copio), asp.net para web(jsp pero aun más guarro) y otros lenguajes(ironpython, etc..), bueno a grandes rasgos eso es .Net, a eso si, no esperes tener librerías chulas y que la faena este hecha al estilo java, más bien es lamentable lo poco desarrollado que esta para las cosas basicas y lo bien integradito que estas con sus tecnologías (asp, winforms, windows...). Lo que pasa que lo venden como multiplataforma...
En fin todo el rollo este es para decirte que pocas empresas serias trabajan en .NET y las que lo hacen y son serias suelen ser pequeños proyectos, personalmente me parece bastante triste .NET, pero como dicen por hay, para gusto colores...
PD: en java tambien hay otros lenguajes, jython, jruby, grooby...)
.Net viene a ser como java pero a lo guarro(estilo microsoft), una maquina virtual y varios interpretes para lenguajes varios, y entre estos crearon cosas nuevas como visual basic .net(con orientación a objetos), c#(me gusta java y lo copio), asp.net para web(jsp pero aun más guarro) y otros lenguajes(ironpython, etc..), bueno a grandes rasgos eso es .Net, a eso si, no esperes tener librerías chulas y que la faena este hecha al estilo java, más bien es lamentable lo poco desarrollado que esta para las cosas basicas y lo bien integradito que estas con sus tecnologías (asp, winforms, windows...). Lo que pasa que lo venden como multiplataforma...
En fin todo el rollo este es para decirte que pocas empresas serias trabajan en .NET y las que lo hacen y son serias suelen ser pequeños proyectos, personalmente me parece bastante triste .NET, pero como dicen por hay, para gusto colores...
PD: en java tambien hay otros lenguajes, jython, jruby, grooby...)
\o/ +1
Tipica tecnologia copy&paste de Microsoft, y como siempre mas engorrosa, dificil, rebuscada, complicada... que de donde se copiaron.
Lo que mas me j*de es que, nada mas salir esta bazofia todas las revistas y en muchas ofertas de trabajo te pedian .net. Como se nota quien subvenciona las revistas y que los que ofertan trabajo no suelen tener ni pajolera idea.
Ya me he desahogado un poco :brindis:
.Net viene a ser como java pero a lo guarro(estilo microsoft), una maquina virtual y varios interpretes para lenguajes varios, y entre estos crearon cosas nuevas como visual basic .net(con orientación a objetos), c#(me gusta java y lo copio),
Decir que son intérpretes es inexacto, son compiladores. El código fuente se compila a Intermediate Lenguage o IL que es después pasado al lenguaje máquina del ordenador en el que se ejecuta por la máquina virtual.
Como lenguaje, encuentro que C# es mejor que Java, por lo menos tiene una evolución mucho más rápida. En las últimas versiones están añadiendo características que lo hacen casi tan expresivo como Python. En cuanto a librerías, en mi opinión el .NET Framework es bastante completo aunque no lo puedo comparar con Java porque hace años que no lo veo.
¿Cómo empezar en .NET? Pues tienes la web de Desarrollador 5 Estrellas (http://www.mslatam.com/latam/msdn/comunidad/dce2005/), que contiene un cursillo para iniciarse en .NET (no deja de ser una página de promoción de Microsoft). Para programar puedes bajarte gratuitamente las versiones Express del Visual Studio si trabajas en Windows o usar MonoDevelop para Linux.
vizales77
24/04/2008, 21:54
¡¡de mayor quiero ser como vosotros!! :-P
muchas gracias a todos; mañana lo miraré con mas calma. a ver si aprendo algo, jejeje
Topochan
24/04/2008, 23:51
Decir que son intérpretes es inexacto, son compiladores. El código fuente se compila a Intermediate Lenguage o IL que es después pasado al lenguaje máquina del ordenador en el que se ejecuta por la máquina virtual.
Hombre es para simplificar, en programación de lenguajes de mi universidad hay que hacer un compilador a cil(el il de .net) y es la muerte.
Como lenguaje, encuentro que C# es mejor que Java, por lo menos tiene una evolución mucho más rápida. En las últimas versiones están añadiendo características que lo hacen casi tan expresivo como Python. En cuanto a librerías, en mi opinión el .NET Framework es bastante completo aunque no lo puedo comparar con Java porque hace años que no lo veo.
Pues como lenguaje si, es menos guarro, pero claro ha tenido microsoft años para pensarlo, de todas manera ahora con la inclusión en java 7 jython (o almenos soportada por Sun) tendremos la vida algo más sencilla. Si no has visto últimamente mucho de java mira proyectos como grail y jruby, o los de res hat seam que ha simplificado mucho la vida del programador java(y si a .Net le faltan como que millones de librerias para poder ser java, mucho...)
enkonsierto
25/04/2008, 02:32
por qué hay algunos que aprovechan la mínima oportunidad para hablar mal de cierta gente? :rolleyes: (y sin fundamento...)
Yo tambien "odio" a Microsoft... pero quien no reconozca que .net(sobre todo desde la version del 2005) es una herramienta SERIA y capaz de realizar grandes proyectos Y CON EL MEJOR IDE de desarrollo que he visto en ninguna otra plataforma, se equivoca.
La única que tenia un entorno mejor que .net era Delphi, pero creo que Visual studio ya ha llegado a su nivel :(
Yo tengo que trabajar con .Net y la verdad es que genial, eso si, como dice Nandove mejor desde la versión 2005 (framework 2.0).
Lo que pasa es que hay gente que le gusta despotricar contra .net simplemente porque es un producto de Microsoft, así de claro. Y compararlo con Java en cuanto a componentes disponibles... ¿cuantos años lleva cada uno fuera?
^MiSaTo^
25/04/2008, 10:01
Yo tengo que trabajar con .Net y la verdad es que genial, eso si, como dice Nandove mejor desde la versión 2005 (framework 2.0).
Lo que pasa es que hay gente que le gusta despotricar contra .net simplemente porque es un producto de Microsoft, así de claro. Y compararlo con Java en cuanto a componentes disponibles... ¿cuantos años lleva cada uno fuera?
Hombre yo he currado con ambos (.NET y ahora JAVA) para hacer más o menos lo mismo y puedo decir que el Visual Studio 2005 es LA HOSTIA. Eso sí, a mi personalmente me gusta mucho más Java que .NET y me parece algo mejor hecho.
Hombre yo he currado con ambos (.NET y ahora JAVA) para hacer más o menos lo mismo y puedo decir que el Visual Studio 2005 es LA HOSTIA. Eso sí, a mi personalmente me gusta mucho más Java que .NET y me parece algo mejor hecho.
Totalmente de acuerdo. Yo también he trabajado con ambos, de hecho, toda la carrera la hice con Java e incluso hice un curso de Sun cuando las primeras versiones de Java. Pero hay que reconocer que .Net ha mejorado mucho y en poco tiempo. Precisamente por ese tiempo de más que lleva Java fuera, me parece normal que esté más depurado que .net, pero no creo que se quede atrás. Ahora estoy empezando a trastear con .NET 3 y Linq, a ver que novedades aporta. A mi, personalmente, me gusta más C# :P
^MiSaTo^
25/04/2008, 10:16
Totalmente de acuerdo. Yo también he trabajado con ambos, de hecho, toda la carrera la hice con Java e incluso hice un curso de Sun cuando las primeras versiones de Java. Pero hay que reconocer que .Net ha mejorado mucho y en poco tiempo. Precisamente por ese tiempo de más que lleva Java fuera, me parece normal que esté más depurado que .net, pero no creo que se quede atrás. Ahora estoy empezando a trastear con .NET 3 y Linq, a ver que novedades aporta. A mi, personalmente, me gusta más C# :P
Sí reconozco que ha mejorado mucho, en eso estamos de acuerdo. Yo C# no lo he probado porque principalmente he hecho aplicaciones web (VB.NET y ASP.NET) así que no puedo opinar xDDD
De todos modos ahora que también he hecho apps web con Java el no depender del puñetero IIS (por qué se cuelga tanto? :llorosa: ) me da mucho gustito xD
Al menos para este caso si me gusta mucho más Java que el VB, ASP y su IIS.
Una dudilla para los que hayan tocado .NET y Java.. ¿en .NET hay algo como Hibernate o Cayenne en Java? (es para manejar la BBDD)
Esta el NHibernate, o ahora de forma integrada en el lenguaje tienes Linq, vamos que han hecho lo mismo que hace Hibernate pero ahora ya viene de serie.
Pues yo trabajo con IIS y aplicaciones en .NET y te aseguro que no se cuelga xD Eso es como todo, lo que si tuvimos algunos problemas puntuales con .NET 1.1 y IIS, pero solo había que configurar unas cosillas y listos.
Solo como apunte, VB.NET es un lenguaje y ASP.NET es un conjunto del Framework que te da acceso a las capacidades web. Yo programo ASP.NET pero en C#, y las aplicaciones Windows también en C# :) De todas formas, lo malo que tiene la plataforma .NET, es que aunque es multiplataforma (al fin y al cabo es final es similar al bytecode) Microsoft solo ha sacado interpretes y compiladores para Windows. Pero con Mono puedes correr asp.net en apache y Linux sin problemas (en teoría xD)
^MiSaTo^
25/04/2008, 10:41
Esta el NHibernate, o ahora de forma integrada en el lenguaje tienes Linq, vamos que han hecho lo mismo que hace Hibernate pero ahora ya viene de serie.
Pues yo trabajo con IIS y aplicaciones en .NET y te aseguro que no se cuelga xD Eso es como todo, lo que si tuvimos algunos problemas puntuales con .NET 1.1 y IIS, pero solo había que configurar unas cosillas y listos.
Solo como apunte, VB.NET es un lenguaje y ASP.NET es un conjunto del Framework que te da acceso a las capacidades web. Yo programo ASP.NET pero en C#, y las aplicaciones Windows también en C# :) De todas formas, lo malo que tiene la plataforma .NET, es que aunque es multiplataforma (al fin y al cabo es final es similar al bytecode) Microsoft solo ha sacado interpretes y compiladores para Windows. Pero con Mono puedes correr asp.net en apache y Linux sin problemas (en teoría xD)
Pues me alegro que haya un NHibernate porque la verdad que yo desde que uso eso se me ha olvidado como hacer una Query xDDDDD
Gracias por el apunte, aunque yo sí lo sabía pero es fácil liarse con estas cosas. Por cierto que yo ODIO el VB con .NET o sin el. (Quizá de ahí venga mi preferencia por Java)xDD
Topochan
25/04/2008, 11:15
por qué hay algunos que aprovechan la mínima oportunidad para hablar mal de cierta gente? :rolleyes: (y sin fundamento...)
Hombre odiar Microsoft no es sin fundamento, te podría hacer una lista de cosas que la hacen detestable y no por su software.
Sobre .Net decir que como ya dije me parece una plataforma para windows y solo para windows, por eso no veía comparación con java, sobretodo el tener que si usas .Net tener que usar todo los productos Microsoft para hacerlo funcionar (asp el iis, winforms el windows, visual studio windows y sqlserver(si porque con otras BD no es que se lleve muy bien). Así que .Net como plataforma APESTA como entorno de desarrollo para windows esta muy bien, pero es la trampa de Microsoft de siempre, atrapado en su colección de productos.
Mono de Novell es una mini solución de .Net va tan atrasado que no llega a ser 2.0 compatible, y las paginas asp no van muy finas, por no decir que su entorno de desarrollo no esta listo para asp.net y el soporte de winforms escaso.
Como lenguaje claro que habrá evolucionado el 1.0 era muy pobre, y con sus partner trabajando sobre .Net han creado linq, Subsonic y otras herramientas; Y sobre visual studio... ¿realmente pensáis que es un buen ide? yo personalmente no le veo color en comparación a eclipse o netbeans(y estos tienen soporte para .net...).
Sobre .Net decir que como ya dije me parece una plataforma para windows y solo para windows, por eso no veía comparación con java, sobretodo el tener que si usas .Net tener que usar todo los productos Microsoft para hacerlo funcionar (asp el iis, winforms el windows, visual studio windows y sqlserver(si porque con otras BD no es que se lleve muy bien). Así que .Net como plataforma APESTA como entorno de desarrollo para windows esta muy bien, pero es la trampa de Microsoft de siempre, atrapado en su colección de productos.
1) ASP también se puede hacer correr sobre Apache
2) winforms y aspforms son las objetos para aplicaciones de ventanas y aplicaciones web. Solo hay que implementar esos objetos en la plataforma donde se quiera hacer correr .NET. Que yo sepa Mono tiene ya parte implementada de las winforms, no?
3) Visual Studio es un IDE. Se puede programar .NET sin él, no hay ningún problema.
4) SQL Server??? .NET soporta conexiones ODBC, de hecho son las que yo uso, y te aseguro que funcionan bien con cualquier BBDD. Yo he trabajado con .NET atacando a Sql Server 2000 y 2005, MySQL e incluso un fichero de Access. Con ninguna he tenido problemas.
Por último, la política de Microsoft me parece correcta. Ellos venden un Sistema Operativo y es normal que quieran que su software de desarrollo se pueda ejecutar en su sistema operativo. Al fin y al cabo, Microsoft no deja de ser una Empresa, y se gana la vida con sus programas.
Yo que trabajo con los dos... veo luces y sombras en ambos.
Me gusta más Java porque posiblemente es con el que más trabajo y más acostumbrado estoy. Como lenguaje C# es superior (más moderno). Digamos que Java es más estricto y formal y C# más expresivo, lo que significa que una aplicación en Java requiere más lineas de código que en C#, pero a su vez es más fácil de mantener.
Ventajas de C# sobre Java:
Las benditas propiedades, con sus get y set.
Los archivos properties son XML (a partir de Java 6 opcionalmente también)
Integración perfecta con aplicaciones de MS (Office, Exchange, Source Safe, IIS...)
Independencia del lenguaje.
Ventajas de Java sobre C#
Más independiente de la plataforma
Relación directa clase-archivo y ruta-paquete. Si sabes como se llama, sabes donde encontrarlo.
Mucha mejor documentación.
Mejores entornos de desarrollo. Cualquiera de los grandes IDE para Java le da mil patadas al Visual Studio
^MiSaTo^
25/04/2008, 11:49
Yo que trabajo con los dos... veo luces y sombras en ambos.
Me gusta más Java porque posiblemente es con el que más trabajo y más acostumbrado estoy. Como lenguaje C# es superior (más moderno). Digamos que Java es más estricto y formal y C# más expresivo, lo que significa que una aplicación en Java requiere más lineas de código que en C#, pero a su vez es más fácil de mantener.
Ventajas de C# sobre Java:
Las benditas propiedades, con sus get y set.
Los archivos properties son XML (a partir de Java 6 opcionalmente también)
Integración perfecta con aplicaciones de MS (Office, Exchange, Source Safe, IIS...)
Independencia del lenguaje.
Ventajas de Java sobre C#
Más independiente de la plataforma
Relación directa clase-archivo y ruta-paquete. Si sabes como se llama, sabes donde encontrarlo.
Mucha mejor documentación.
Mejores entornos de desarrollo. Cualquiera de los grandes IDE para Java le da mil patadas al Visual Studio
Estoy completamente de acuerdo con tus argumentos y tu lista de ventajas de ambos (salvo que yo C# como dije no he tocado).
Lo que no entiendo es lo de las propiedades y get y set de c#, ¿a qué te refieres?
FFantasy6
25/04/2008, 11:49
Hombre odiar Microsoft no es sin fundamento, te podría hacer una lista de cosas que la hacen detestable y no por su software.
Y se podria hacer otra con las cosas buenas.
4) SQL Server??? .NET soporta conexiones ODBC, de hecho son las que yo uso, y te aseguro que funcionan bien con cualquier BBDD. Yo he trabajado con .NET atacando a Sql Server 2000 y 2005, MySQL e incluso un fichero de Access. Con ninguna he tenido problemas.
Yo he atacado Oracle y Pervasive. Con la primera he tenido problemas y con la segunda he tenido muchos problemas.
Con oracle hacer un INSERT o un UPDATE en un campo VARCHAR2 de 3000 caracteres con un texto de 400 caracteres o más me da pete de valor muy grande para la columna. He buscado la solución y, aparte de no encontrarla, he visto que es un tema que le pasa a mucha gente, no algo mío ocasional.
Con Pervasive no hubo manera de hacer que nos insertase en UTF-8, hasta el punto de tener que tirar la aplicación y rehacerla en Java.
Por último, la política de Microsoft me parece correcta. Ellos venden un Sistema Operativo y es normal que quieran que su software de desarrollo se pueda ejecutar en su sistema operativo. Al fin y al cabo, Microsoft no deja de ser una Empresa, y se gana la vida con sus programas.
Ellos venden un framework multiplataforma que en realidad no lo es. Ser multiplataforma no es publicar unos API's y un formato de binarios... es dar soporte y hacer implementaciones, como hace Sun, Adobe, etc...
< - >
Estoy completamente de acuerdo con tus argumentos y tu lista de ventajas de ambos (salvo que yo C# como dije no he tocado).
Lo que no entiendo es lo de las propiedades y get y set de c#, ¿a qué te refieres?
Declaración de una propiedad en Java
private String miPropiedad;
public void setMiPropiedad(String miPropiedad) {
this.miPropiedad = miPropiedad;
}
public String getMiPropiedad() {
return this.miPropiedad;
}
Ejemplo de asignación de una propiedad de un objeto a otro
objeto1.setMiPropiedad(objeto2.getMiPropiedad());
Declaración de una propiedad en C#
private string _MiPropiedad;
public string MiPropiedad {
get { return _MiPropiedad; }
set { _MiPropiedad = value; }
}
Y posterior asignación
objeto1.MiPropiedad = objeto2.MiPropiedad;
Yo he atacado Oracle y Pervasive. Con la primera he tenido problemas y con la segunda he tenido muchos problemas.
Como he explicado antes, las BBDD que he probado no me han dado problemas no siendo algunas de ellas SQL Server. Con el resto, pues no puedo opinar porque no las he usado, solo comentaba el hecho de poder atacar a las BBDD mediante una conexión ODBC para ganar independencia en ese sentido. Luego ya esta el tema en que si una consulta a un servidor tienes unas peculiaridades u otras.
Yo en ningún momento digo que sea un sistema perfecto, ni mejor ni tampoco peor que Java. Simplemente critico el hecho de atacarlo por ser un producto Microsoft.
^MiSaTo^
25/04/2008, 12:20
Yo he atacado Oracle y Pervasive. Con la primera he tenido problemas y con la segunda he tenido muchos problemas.
Con oracle hacer un INSERT o un UPDATE en un campo VARCHAR2 de 3000 caracteres con un texto de 400 caracteres o más me da pete de valor muy grande para la columna. He buscado la solución y, aparte de no encontrarla, he visto que es un tema que le pasa a mucha gente, no algo mío ocasional.
Con Pervasive no hubo manera de hacer que nos insertase en UTF-8, hasta el punto de tener que tirar la aplicación y rehacerla en Java.
Ellos venden un framework multiplataforma que en realidad no lo es. Ser multiplataforma no es publicar unos API's y un formato de binarios... es dar soporte y hacer implementaciones, como hace Sun, Adobe, etc...
< - >
Declaración de una propiedad en Java
private String miPropiedad;
public void setMiPropiedad(String miPropiedad) {
this.miPropiedad = miPropiedad;
}
public String getMiPropiedad() {
return this.miPropiedad;
}
Ejemplo de asignación de una propiedad de un objeto a otro
objeto1.setMiPropiedad(objeto2.getMiPropiedad());
Declaración de una propiedad en C#
private string _MiPropiedad;
public string MiPropiedad {
get { return _MiPropiedad; }
set { _MiPropiedad = value; }
}
Y posterior asignación
objeto1.MiPropiedad = objeto2.MiPropiedad;
Pues creo que en java puedes hacer get y set igual que en C# (si lo he entendido bien). De hecho para propiedades casi es mejor usar algo de tipo properties no? ;)
Ah espera ya veo la diferencia entre Java y c#, en C# es más rápido. (dios que jodida estoy hoy de la alergiaaaa)
Topochan
25/04/2008, 16:22
1) ASP también se puede hacer correr sobre Apache
2) winforms y aspforms son las objetos para aplicaciones de ventanas y aplicaciones web. Solo hay que implementar esos objetos en la plataforma donde se quiera hacer correr .NET. Que yo sepa Mono tiene ya parte implementada de las winforms, no?
3) Visual Studio es un IDE. Se puede programar .NET sin él, no hay ningún problema.
4) SQL Server??? .NET soporta conexiones ODBC, de hecho son las que yo uso, y te aseguro que funcionan bien con cualquier BBDD. Yo he trabajado con .NET atacando a Sql Server 2000 y 2005, MySQL e incluso un fichero de Access. Con ninguna he tenido problemas.
Por último, la política de Microsoft me parece correcta. Ellos venden un Sistema Operativo y es normal que quieran que su software de desarrollo se pueda ejecutar en su sistema operativo. Al fin y al cabo, Microsoft no deja de ser una Empresa, y se gana la vida con sus programas.
Por puntos 1: Si sobre apache en windows, cuando en 99% de apaches van sobre unix
2: El proyecto mono siempre va una version por debajo de la que tiene Microsoft, es la pescadilla que se muerde la cola(por no decir el rollo de patentes que hay detras).
3: Sip, me gusto más el SharpDevelop
4: No, el problema que decía era el de visualStudio que ofrecía funcionalidades que solo funcionan con sqlserver, volvemos a los de antes, la pescadilla que se come la cola.
Microsoft es una empresa que hace lo que dices pero siempre bajo su "etica", aprovechan una posición dominante para destruir a la competencia, yo siempre dejo claro que hay formas de hacer las cosas y las que no, y Microsoft al mundo creo que a aportado más malas que buenas, y hay muchos ejemplos:
-Cuando eliminaron Netscape no actualizaron el explorer hasta que hubo competencia de nuevo retrasando el mundo web unos 5 años.
-Ataca el mundo del software libre como puede, destruyendo desarrollos y amenazas de patentes(sobre esto ya es otro tema)
-Interviene tratados internacionales de ayuda a países subdesarrollados para meter sus tecnologías, compran los intermediarios y pegan cambiazos.
-Crean puertas traseras en sus formatos y aplicaciones, así pueden saber secretos de administraciones publicas.
- Sus licencias son abusivas, pero como el 99% del mercado es suyo para interoperar hay que caer en su trampa.
y puedo seguir mucho más... por no hablar de sobornos, chantajes, amenazas...
Obviamente intenta lavar la cara de manera muy inteligente(son reyes del marketing) pero creanme cuando de ese marketing el 99% es mentira, ¿no? infórmense sino un mp y encatado cuento más cosas para que esto no sea un hilo antimicrosoft.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.