User Tag List

Página 6 de 17 PrimerPrimer ... 234567891016 ... ÚltimoÚltimo
Resultados 76 al 90 de 245

Tema: Ayuda con problemilla básico de Arrays JAVA (SPOILER: Soy muy malo)

  1. #76

    Fecha de ingreso
    Sep 2009
    Ubicación
    Donde quiero
    Mensajes
    6,160
    Mencionado
    175 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    1,848
    Agradecer Thanks Received 
    2,378
    Thanked in
    Agradecido 1,309 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por Drumpi Ver mensaje
    Lo mismo digo una obviedad y ya lo habéis discutido (lo siento, pero ahora mismo me estoy peleando con mi propio código ^^U) pero deberías poder tratar cada ventana como un ente individual: cada ventana tiene su vista y su controlador, de forma que la vista sólo se puede comunicar con su controlador y sólo con su controlador, es decir, la sub-vista NUNCA llama a funciones del controlador de la vista padre. La única forma de conectar una ventana con la otra es que la ventana2 haga una llamada a controlador2, el controlador2 envíe la información a controlador1, y el controlador1 se la mande a la ventana1. Parece un lío y una chorrada ineficiente, pero es como se hace en MVC, y te permite tener las cosas independientes y ordenadas.

    De esta forma, no pienses que es un ejercicio con dos ventanas, sino dos ejercicios de una ventana... que interactúan entre sí, y verás que se simplifican las cosas en tu cabeza.

    Yo ahora mismo me estoy peleando con Xamarin, que es MVVM (concepto similar al MVC, con una capa aparte para llamar a la WebApi) y su correspondiente WebApi2 que es un MVC, pero sin vistas. Para obtener un dato de la BBDD, debo bajar 5 capas, y luego recorrerlas en sentido inverso... pero luego puedo cambiar la vista de xaml por html, en lugar de comunicarme con una WebApi podría ser con otra web o con una BBDD, y en la WebApi es común cambiar de una BBDD Transact-SQL por Hana.
    Precisamente es el foco del ejercicio, el profesor quiere que la subventana maneje elementos de la ventana principal, por ejemplo cuando haces login, debes meter el valor de las credenciales de los Jtextfield de la subventana en el usuario /contraseña /puerto de la ventana principal, de ahí la movida.

    Creo que estoy consiguiendo un apaño haciendo un mix de todo en plan matanza de texas (estoy en el curro y lo engancho a ratos libres), lo importante es que he conseguido que el controlador de la subventana maneje ambas vistas, haciendo un nuevo constructor del controlador de la subventana al que se le pasan las vistas como parámetro.

    Seguiremos informando, como siempre, gracias a las hordas geperas de programadores, somos pocos en el foro pero sigue siendo buen ganado el que ha quedado.

  2. #77

    Fecha de ingreso
    Sep 2006
    Ubicación
    Malaga
    Mensajes
    7,561
    Mencionado
    47 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    1,668
    Agradecer Thanks Received 
    1,922
    Thanked in
    Agradecido 1,289 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por selecter25 Ver mensaje
    Precisamente es el foco del ejercicio, el profesor quiere que la subventana maneje elementos de la ventana principal, por ejemplo cuando haces login, debes meter el valor de las credenciales de los Jtextfield de la subventana en el usuario /contraseña /puerto de la ventana principal, de ahí la movida.
    Yo prefiero hacer que la ventana principal se entere de que has metido los datos y los lea de la ventana secundaria, hay muchas formas de hacer eso. Asi tienes una ventana genérica de login que la puedes usar en cualquier parte.
    No es lo mismo tener diez años de experiencia, que tener un año de experiencia diez veces.


    It is an undisputed truth that the Atari ST gets the best out of coders. No dedicated hardware, just the CPU and a frame buffer! Some call it Spartan, others name it Power Without The Price, and a select few say `challenge accepted'! --- by spkr from smfx

  3. #78

    Fecha de ingreso
    Mar 2007
    Ubicación
    Barna
    Mensajes
    10,342
    Mencionado
    93 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    368
    Agradecer Thanks Received 
    1,791
    Thanked in
    Agradecido 944 veces en [ARG:2 UNDEFINED] posts
    Yo creo que lo que te están pidiendo es que desarrolles una Store / State Management, pero sin llamarlo así. Eso significa que, en paradigma MVC, es que el Modelo gestiona los datos globales, que no se consideran cambiados hasta que los cambie el modelo, y cuando cambian es el propio modelo quien envía eventos a quien quiera escucharlos. Algo así:

    Código:
    //////////////////////////////////////////////////////////////////////
    Interface ModelListener {
      public void onUsernameChanged(String username);
    }
    
    
    class Model(){
      ModelListener listener;
    
      void addListener(ModelListener listener) {
        this.listener = listener
      }
    
      void setUsername(String username) {
        this.username = username; // o guardarlo en la base de datos, o en el archivo de configuracion, o lo que necesites
        listener.onUsernameChanged(username);
      }
    }
    
    
    
    //////////////////////////////////////////////////////////////////////
    class MainWindow implements ModelListener {
       MainWindow() {
         /* muchas otras cosas */
         model.addListener(this);
      }
    
      public void onUsernameChanged(String username) {
        // haz lo que necesites
      }
    }
    
    //////////////////////////////////////////////////////////////////////
    class SecondaryWindows {
      /** Muchas otras cosas */
    
      public void onCuandoLoNecesitesPorEjemploOnSaveButtonClicked() {
        model.setUsername(username);
      }
    }
    Si tienes una state manager, el modelo además de guardar datos se encarga de avisar a los demás cuándo los datos han cambiado. Los state manager se usan mucho en programación de páginas web. Cada framework web apoya su propia librería de modelo: con frameworks Vue, el model / state manager es Pinia ó Vuex; con framework React el model / state manager usual es Recoil ó Redux

    En el ejemplo solo he puesto que cambiar el username, pero tú puedes considerar más interesante que sean varios a la vez username/password/URL/port o algo así : model.setConnectionParameters(username, password, url, port) y onConnectionParametersChanged(username, password...). También, ese modelo tiene un solo listener, pero lo normal es gestionar un vector de listeners.

    Ese mismo paradigma se usa también cuando tienes que comunicar componentes que están en sistemas diferentes. Entonces se usan colas de mensajes, pero siguen el mismo paradigma.
    Última edición por juanvvc; 23/05/2022 a las 23:02
    "Todo es absolutamente falso, salvo alguna cosa"

  4. El siguiente usuario agradece a juanvvc este mensaje:

    swapd0 (24/05/2022)

  5. #79

    Fecha de ingreso
    Aug 2003
    Mensajes
    681
    Mencionado
    5 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    12
    Agradecer Thanks Received 
    92
    Thanked in
    Agradecido 55 veces en [ARG:2 UNDEFINED] posts
    Igual me equivoco, pero creo que hay algo que no cuadra en todo esto. Si te piden implementar un patrón MVC, en java, es más o menos así:

    - Modelo: Una representación del estado de cada una de las partes de la aplicación en cada momento, los modelos son clases/entidades con cada una de las partes funcionales (es decir, las ideas fundacionales) de tu aplicación: Database, User, Table, Connection.... Cada vez que una de estas partes cambia, le devuelve al controler un evento, parametro, valor de retorno con lo que ha pasado para que el controler decida luego qué hacer.
    - Vista: Una implementacion visual del modelo en un framework/ librería dada, en este caso, DatabaseForm, TableView, ConnectionForm, etc.. es donde debe estar todo lo de swing y donde registrarás los listener del controller.
    - Controlador: Se encarga de recibir el input del usuario en las vistas, y actualiza el modelo, esperando que el modelo le diga qué hacer a continuación por si tiene que actualizar la vista. Es decir, LoginController, DatabaseFormController, etc. Es la parte que se encarga de despachar eventos a vistas y modelos en base a lo que le dicen éstos.

    MVC no es lo mejor, y dependiendo de a quien le preguntes, modelo significa una cosa u otra. Pero basicamente lo más importante es entender este flujo de llamadas donde el controller es el centro de todo, para poder hacer un MVC más o menos by the book.

  6. #80

    Fecha de ingreso
    Mar 2007
    Ubicación
    Barna
    Mensajes
    10,342
    Mencionado
    93 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    368
    Agradecer Thanks Received 
    1,791
    Thanked in
    Agradecido 944 veces en [ARG:2 UNDEFINED] posts
    Lo que dice amkam: el modelo guarda el estado, todos cambian SOLO el modelo, y el modelo avisa a los controladores que le quieran escuchar cuando algún dato ha cambiado.

    -----Actualizado-----

    Bola extra:

    ¿Dónde consiguen todas las ventanas el mismo objeto model?

    Ahí ya te las apañas tú: o bien lo crea la ventana principal y se lo pasa a las ventanas secundarias en sus constructores, o bien te programas el pattern Singleton: https://en.wikipedia.org/wiki/Singleton_pattern Como tú veas.
    "Todo es absolutamente falso, salvo alguna cosa"

  7. #81

    Fecha de ingreso
    Sep 2009
    Ubicación
    Donde quiero
    Mensajes
    6,160
    Mencionado
    175 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    1,848
    Agradecer Thanks Received 
    2,378
    Thanked in
    Agradecido 1,309 veces en [ARG:2 UNDEFINED] posts
    Gracias a todos de nuevo, resulta mucho más gratificante pasar un rato por aquí que escuchar al profesor. Revisando el tema anterior, esta es la interpretación que le da al patrón MVC (imagino que contextualizado en una aplicación gráfica que realiza consultas u operaciones):

    https://drive.google.com/file/d/1VoQ...ew?usp=sharing

    Por suerte es la última práctica que espero hacer con este buen hombre, me da miedo pensar que me estoy acostumbrando a su inflexibilidad y paso ratos de verdadera frustración.

    Por suerte también con toda la info que me habéis dado y tras buscarme un poco la vida, parece que estoy viendo la luz. Ya tengo más de la mitad de los controladores hechos, el modelo realiza la conexión con el servidor perfectamente, y utiliza la base de datos. El control de estados, el desbloqueo progresivo de paneles, captura de errores y la información en los frames también está casi al completo, solo me queda la parte relacionada con la consulta de tablas.

    Imagino que no será muy complicado, consultar de alguna manera el nombre de las tablas, meterlo en un array y rellenar el combobox. Después programar el controlador para que cuando seleccione una de las opciones, haga un SELECT * FROM Opcion y buscar lo necesario para mostrarlo en la tabla de mi panel. O eso espero. Así va de momento:


  8. #82

    Fecha de ingreso
    Sep 2005
    Mensajes
    15,202
    Mencionado
    247 Post(s)
    Tagged
    1 Tema(s)
    Agradecer Thanks Given 
    675
    Agradecer Thanks Received 
    1,847
    Thanked in
    Agradecido 1,264 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por amkam Ver mensaje
    Igual me equivoco, pero creo que hay algo que no cuadra en todo esto. Si te piden implementar un patrón MVC, en java, es más o menos así:

    - Modelo: Una representación del estado de cada una de las partes de la aplicación en cada momento, los modelos son clases/entidades con cada una de las partes funcionales (es decir, las ideas fundacionales) de tu aplicación: Database, User, Table, Connection.... Cada vez que una de estas partes cambia, le devuelve al controler un evento, parametro, valor de retorno con lo que ha pasado para que el controler decida luego qué hacer.
    - Vista: Una implementacion visual del modelo en un framework/ librería dada, en este caso, DatabaseForm, TableView, ConnectionForm, etc.. es donde debe estar todo lo de swing y donde registrarás los listener del controller.
    - Controlador: Se encarga de recibir el input del usuario en las vistas, y actualiza el modelo, esperando que el modelo le diga qué hacer a continuación por si tiene que actualizar la vista. Es decir, LoginController, DatabaseFormController, etc. Es la parte que se encarga de despachar eventos a vistas y modelos en base a lo que le dicen éstos.

    MVC no es lo mejor, y dependiendo de a quien le preguntes, modelo significa una cosa u otra. Pero basicamente lo más importante es entender este flujo de llamadas donde el controller es el centro de todo, para poder hacer un MVC más o menos by the book.
    Hasta donde yo aprendí, es exactamente eso.
    Lo que parece es que le hayan pedido tener dos controladores "controlando" un mismo modelo de datos. No digo que no se pueda (si se tiene buen control de eventos) pero yo no lo recomendaría porque podría desencadenar conflictos, y entrar en bucles infinitos (al ponerse el valor a false, el controlador 1 lo pone a true, pero el controlador 2 lo vuelve a poner a false, y el controlador 1 lo pone a true...) o en estado de interbloqueo (la respuesta del c1 depende de la respuesta de c2, que está esperando respuesta de c1). En ese caso, mi recomendación, por simplificar, sería que sólo uno de los controllers manejase el modelo (por ejemplo, controller1), y que cualquier modificación del mismo se haga siempre mediante él (si controller2 quiere cambiar algo, le manda la información a c1, y este al modelo).

    De todas formas, Selecter, cuando termine el curso serás libre de hacer lo que te de la gana, y te pondrás a hacer programas a tu estilo, y cuando lleves dos o tres programas grandes, te darás cuenta de que tu profesor, en parte (sólo en parte, recordemos que son ejercicios para practicar casos concretos) tenía razón.
    En mi caso, fue el Tilemap Editor. La primera versión la hice un poco como los juegos, mezclando gráficos con funciones, y cada cosa que añadía, hacía que el programa fuera más y más complejo. En la segunda versión, usé algo parecido a MVC (BennuGD no es POO, y mantener modelos es complicado), y aunque el código se triplicó, e hice las mismas funciones de manejos de listas una y otra vez (es un lenguaje fuertemente tipado sin herencia) y por duplicado (una para el modelo, otra para mostrar una parte de esta en la vista), está mucho más ordenado y es mil veces más escalable.

    Cuando te vuelvas a sentir abrumado con el código, para un par de minutos, toma aire, divide el problema en trozos más pequeños (obtener un dato, mandarlo de A a B, mostrarlo, crear un evento...) y ve resolviéndolos uno a uno. Te quitará el estrés, te facilitará el trabajo, solucionarás errores más fácilmente y te ayudará a mantener trozos de código aislados para futuras correcciones o ampliaciones.
    PROYECTOS REALIZADOS: FrikiMusic, Motor Scroll Tileado v3.2, Venturer2X (GP2X/WIZ), Echo, Screen Break Time
    PROYECTOS EN MARCHA (algunos): Bennu GP2X: 95% (necesito ayuda) ¡Antes de Halloween!: 92% SpaceH2H: 8%

  9. El siguiente usuario agradece a Drumpi este mensaje:

    selecter25 (24/05/2022)

  10. #83

    Fecha de ingreso
    Sep 2009
    Ubicación
    Donde quiero
    Mensajes
    6,160
    Mencionado
    175 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    1,848
    Agradecer Thanks Received 
    2,378
    Thanked in
    Agradecido 1,309 veces en [ARG:2 UNDEFINED] posts
    Buen consejo, es lo que intento Drumpi, pero soy muy noob, a mi cerebrito aún le cuesta mucho determinar qué trocitos desarrollar y qué hacer antes o después, ten en cuenta que prácticamente me he sentado a programar algo con cierto sentido 2/3 veces, quitando algún ejercicio de POO con herencia o polimorfismo usando interfaces, el resto han sido cosas sencillitas, aprendiendo lo típico desde 0. Imagino que poco a poco lo haré de forma más natural.

    Con respecto a la práctica, tras otro rato puesto al asunto tenemos final feliz, ya tengo la birria que el profesor quería funcionando.

    Si la semana que viene tengo suerte y apruebo el examen, será la última vez que me cruce con él y con Java hasta nueva obligación, ya que por mi parte no será, como mucho puede que por gusto le eche un vistazo a Kotlin más adelante.

    No sé qué tal serán las asignaturas de segundo, pero ya vendré a llorar por el hilo, eso dadlo por hecho .

  11. #84

    Fecha de ingreso
    Sep 2005
    Mensajes
    15,202
    Mencionado
    247 Post(s)
    Tagged
    1 Tema(s)
    Agradecer Thanks Given 
    675
    Agradecer Thanks Received 
    1,847
    Thanked in
    Agradecido 1,264 veces en [ARG:2 UNDEFINED] posts
    Me alegra que ya lo hayas podido resolver, enhorabuena
    Si te quedan fuerzas, haz una copia del proyecto, y revísalo, que seguro que empiezas a encontrar fallos, y a lo tonto, das con soluciones más elegantes a ciertas partes del código.

    Respecto a lo demás, sí, bueno, el dividir las tareas, ordenarlas en la cabeza y demás, viene con el tiempo y la práctica (y con papel y lápiz, que eso no lo suele decir nadie). No te puedo decir cómo es la curva de dificultad porque ya no recuerdo lo que fue aquello hace más de 15 años... o no me di cuenta, después del hartón de programar que me metí después de aquel primer año, entre prácticas y videojuegos

    Si el programa está bien estructurado, da igual por dónde lo cojas. Tienes que probar todas las partes de forma independiente, así que... Sí que es cierto que cuando estamos generando datos, lo más fácil es empezar por la creación, luego la consulta, el borrado y la modificación en ese orden (porque la operación anterior te sirve en la siguiente). Pero en MVC puedes empezar por la vista o por la BBDD, y así hacer diseños top-down o bottom-up, según cómo tengas ordenadas las neuronas.

    De todas formas, no lo dejes, especialmente ahora que estás empezando, un parón puede ser catastrófico. Hazte un proyecto sencillo, o muchos de ellos, repite código hasta que se te grabe a fuego en la cabeza, porque como se te olvide la sintaxis o los "trucos" para enlazar elementos (léase ventanas, herramientas, conexiones a BBDD...) luego te va a costar recordarlo, y a menos que tengas un 50% de comentarios en el código (porcentaje recomendado por... alguien más listo que cualquiera de nosotros) ni releyendo tus propios comandos te vas a acordar.
    Por ejemplo, hazte un programita para tener una BBDD de las pelis o videojuegos que tienes: un apartado para introducir o editar datos, ver datos de las películas, ver datos de actrices/actores y las pelis en las que aparecen, distribuidoras de videojuegos... cosas así.


    ...Aunque luego te darás cuenta de que no merece la pena ponerse con Java, y aprenderás C# para trabajar, o para Unity, o algún otro lenguaje multiplataforma para hacer cosillas de escritorio
    PROYECTOS REALIZADOS: FrikiMusic, Motor Scroll Tileado v3.2, Venturer2X (GP2X/WIZ), Echo, Screen Break Time
    PROYECTOS EN MARCHA (algunos): Bennu GP2X: 95% (necesito ayuda) ¡Antes de Halloween!: 92% SpaceH2H: 8%

  12. #85

    Fecha de ingreso
    Sep 2006
    Ubicación
    Malaga
    Mensajes
    7,561
    Mencionado
    47 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    1,668
    Agradecer Thanks Received 
    1,922
    Thanked in
    Agradecido 1,289 veces en [ARG:2 UNDEFINED] posts
    No se, Android se programa en Java...
    No es lo mismo tener diez años de experiencia, que tener un año de experiencia diez veces.


    It is an undisputed truth that the Atari ST gets the best out of coders. No dedicated hardware, just the CPU and a frame buffer! Some call it Spartan, others name it Power Without The Price, and a select few say `challenge accepted'! --- by spkr from smfx

  13. #86

    Fecha de ingreso
    Sep 2009
    Ubicación
    Donde quiero
    Mensajes
    6,160
    Mencionado
    175 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    1,848
    Agradecer Thanks Received 
    2,378
    Thanked in
    Agradecido 1,309 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por Drumpi Ver mensaje
    Me alegra que ya lo hayas podido resolver, enhorabuena
    Si te quedan fuerzas, haz una copia del proyecto, y revísalo, que seguro que empiezas a encontrar fallos, y a lo tonto, das con soluciones más elegantes a ciertas partes del código.

    Respecto a lo demás, sí, bueno, el dividir las tareas, ordenarlas en la cabeza y demás, viene con el tiempo y la práctica (y con papel y lápiz, que eso no lo suele decir nadie). No te puedo decir cómo es la curva de dificultad porque ya no recuerdo lo que fue aquello hace más de 15 años... o no me di cuenta, después del hartón de programar que me metí después de aquel primer año, entre prácticas y videojuegos

    Si el programa está bien estructurado, da igual por dónde lo cojas. Tienes que probar todas las partes de forma independiente, así que... Sí que es cierto que cuando estamos generando datos, lo más fácil es empezar por la creación, luego la consulta, el borrado y la modificación en ese orden (porque la operación anterior te sirve en la siguiente). Pero en MVC puedes empezar por la vista o por la BBDD, y así hacer diseños top-down o bottom-up, según cómo tengas ordenadas las neuronas.

    De todas formas, no lo dejes, especialmente ahora que estás empezando, un parón puede ser catastrófico. Hazte un proyecto sencillo, o muchos de ellos, repite código hasta que se te grabe a fuego en la cabeza, porque como se te olvide la sintaxis o los "trucos" para enlazar elementos (léase ventanas, herramientas, conexiones a BBDD...) luego te va a costar recordarlo, y a menos que tengas un 50% de comentarios en el código (porcentaje recomendado por... alguien más listo que cualquiera de nosotros) ni releyendo tus propios comandos te vas a acordar.
    Por ejemplo, hazte un programita para tener una BBDD de las pelis o videojuegos que tienes: un apartado para introducir o editar datos, ver datos de las películas, ver datos de actrices/actores y las pelis en las que aparecen, distribuidoras de videojuegos... cosas así.


    ...Aunque luego te darás cuenta de que no merece la pena ponerse con Java, y aprenderás C# para trabajar, o para Unity, o algún otro lenguaje multiplataforma para hacer cosillas de escritorio
    Exacto, el papel y lápiz me ha ayudado ya varias veces, con la máquina de estados fue crucial.

    Para nada lo voy a dejar, seguramente en alguna asignatura de segundo sigamos con la turra de Java, no deja de ser "Diseño de Aplicaciones Multiplataforma", pero por mi cuenta prefiero seguir explorando otros lenguajes más naturales, "divertidos" como Python, con un tipado no tan fuerte o que al menos me sirvan para programar algo que me guste (como empecé con Ruby en RPG Maker o C# en Unity).

    Si fuese a vivir de ello, pues seguramente le metería horas a algún Framework de Javascript y a hacer de albañil en front.

    Cita Iniciado por swapd0 Ver mensaje
    No se, Android se programa en Java...
    Sí, pero para Android por ejemplo puedo probar Kotlin, que parece mucho más sencillo, funciona sobre máquina virtual Java , es incluso hasta interoperable con Java y tiene cosas chulas como Kotlin JS /React para el front. También para algunas cosillas podría tirar de React Native, pero ya me tendría que meter en Javascript.

  14. #87

    Fecha de ingreso
    Sep 2005
    Mensajes
    15,202
    Mencionado
    247 Post(s)
    Tagged
    1 Tema(s)
    Agradecer Thanks Given 
    675
    Agradecer Thanks Received 
    1,847
    Thanked in
    Agradecido 1,264 veces en [ARG:2 UNDEFINED] posts
    La gente subestima el papel a la hora de programar. Que sí, que tienes el notepad(++), dos o tres monitores y todo lo que quieras, pero una nota a boli, un boceto rápido o un esquema que no te ocupa sitio en pantalla y que puedes consultar en cualquier momento es mano de santo.

    Cita Iniciado por swapd0 Ver mensaje
    No se, Android se programa en Java...
    Cita Iniciado por selecter25 Ver mensaje
    Sí, pero para Android por ejemplo puedo probar Kotlin, que parece mucho más sencillo, funciona sobre máquina virtual Java , es incluso hasta interoperable con Java y tiene cosas chulas como Kotlin JS /React para el front. También para algunas cosillas podría tirar de React Native, pero ya me tendría que meter en Javascript.
    Solo diré una palabra: Xamarin.
    Usando C#, y si quieres, XAML (un lenguaje de marcas, tipo XML, usado para crear las vistas, aunque también se puede hacer en C# en "code behind"), puedes hacer APPs de Android... e iOS y WCF (código universal de Windows o algo así). Y para cosas más específicas, tiene sub-proyectos concretos para cada plataforma. Es a lo que dedico la mayor parte del tiempo en trabajo.
    Bueno, de momento, las APPs son de consulta de datos y de rellenar formularios (como el 90% de las aplicaciones Java en entornos de escritorio), aún no me he tenido que pelear con multimedia, ni OpenGL ni cosas así, pero prefiero el lenguaje C# al de Java, y VS a Eclipse (sigue siendo un devorador de recursos... pero es mucho más estable).

    Creo que no genera APPs tan optimizadas y rápidas como Java, pero de momento, con una tablet Android 4.1 no he tenido problemas para gestionar listas de 300 artículos en memoria, y he hecho auténticas salvajadas hasta que aprendí a pedir los datos en "páginas"
    De vez en cuando me toda algo chulo, como usar un escáner de códigos de barra por BT, o usar la propia cámara del móvil (y haciendo unos truquitos aquí y allá, usar dicha librería para que, en lugar de capturar un solo código, pueda irlos acumulando y... no me han dejado investigar más, pero quería dividir la pantalla y que se viera la lista). Si dan luz verde al proyecto, lo mismo tengo que conectarme al GPS del móvil o incluso a Gugle maps.
    PROYECTOS REALIZADOS: FrikiMusic, Motor Scroll Tileado v3.2, Venturer2X (GP2X/WIZ), Echo, Screen Break Time
    PROYECTOS EN MARCHA (algunos): Bennu GP2X: 95% (necesito ayuda) ¡Antes de Halloween!: 92% SpaceH2H: 8%

  15. #88

    Fecha de ingreso
    Sep 2006
    Ubicación
    Malaga
    Mensajes
    7,561
    Mencionado
    47 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    1,668
    Agradecer Thanks Received 
    1,922
    Thanked in
    Agradecido 1,289 veces en [ARG:2 UNDEFINED] posts
    A mi eso de usar otro lenguaje, metiendo otra capa de abstracción por medio nunca me ha gustado. Después que si para hacer el hola mundo te va lento... Ademas de que puede que la abstracción no te permita hacer las mismas cosas que el API nativo, o que saquen un API nuevo y hasta que no saquen el equivalente en Xamarin te quedas a dos velas.

    Paso.
    No es lo mismo tener diez años de experiencia, que tener un año de experiencia diez veces.


    It is an undisputed truth that the Atari ST gets the best out of coders. No dedicated hardware, just the CPU and a frame buffer! Some call it Spartan, others name it Power Without The Price, and a select few say `challenge accepted'! --- by spkr from smfx

  16. #89

    Fecha de ingreso
    Mar 2007
    Ubicación
    Barna
    Mensajes
    10,342
    Mencionado
    93 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    368
    Agradecer Thanks Received 
    1,791
    Thanked in
    Agradecido 944 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por Drumpi Ver mensaje
    Solo diré una palabra: Xamarin.
    Nombre:  Untitled.png
Visitas: 612
Tamaño: 151.4 KB
    "Todo es absolutamente falso, salvo alguna cosa"

  17. Los siguientes 3 usuarios agradecen a juanvvc este post:

    Drumpi (25/05/2022), selecter25 (25/05/2022), swapd0 (25/05/2022)

  18. #90

    Fecha de ingreso
    Sep 2005
    Mensajes
    15,202
    Mencionado
    247 Post(s)
    Tagged
    1 Tema(s)
    Agradecer Thanks Given 
    675
    Agradecer Thanks Received 
    1,847
    Thanked in
    Agradecido 1,264 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por swapd0 Ver mensaje
    A mi eso de usar otro lenguaje, metiendo otra capa de abstracción por medio nunca me ha gustado. Después que si para hacer el hola mundo te va lento... Ademas de que puede que la abstracción no te permita hacer las mismas cosas que el API nativo, o que saquen un API nuevo y hasta que no saquen el equivalente en Xamarin te quedas a dos velas.

    Paso.
    No sé cómo funcionará por debajo, si luego compila al bytecode que usa Android en su intérprete o lo que lleve por debajo, o si realmente mete un intérprete .Net por encima. Lo que sé es que en el trabajo es lo que usamos, y que para las APP que hacemos, funciona. Es más el tiempo de respuesta del servidor que el de ejecución... normalmente.
    Luego, lo de la API... hasta el momento hemos tenido un único problema de compatibilidad: Xamarin requiere una versión mínima de Android 4.4, y un cliente nos dio un aparato con la 4.0.1. Curiosamente, mi tablet de desarrollo va con 4.1 y cero problemas. No sé cómo irá con las últimas versiones, pero yo estoy usando Xamarin 3.x, y ya van por la 5.0.x (aún no he usado ni la mitad de la potencia que tiene).

    Luego, las ventajas propias del lenguaje: LinQ es una bendición que permite rescatar uno o varios elementos de listas, diccionarios y demás colecciones, como si ejecutase una SQL, en la décima parte de tiempo que se tardaría en recorrer con un bucle (comprobado, igual que un bucle FOR es casi el doble de rápido que un FOREACH), el binding de valores (la vista se refresca sola en cuanto se modifica el valor del ViewModel, y/o al revés), el async/await para trabajar con hilos (aunque aún no termino de pillarlo)...

    Y yo no sé si alguna vez habéis hecho traza de lo que ejecuta Java para escribir un único carácter en un campo de texto... pero yo me aburrí de contar capas cuando llegué a la séptima llamada a una función. Con que C# haga la mitad de las operaciones, ya se gana mucho en rendimiento

    Cita Iniciado por juanvvc Ver mensaje
    Nombre:  Untitled.png
Visitas: 612
Tamaño: 151.4 KB
    Decir dije una... escribir ya es otro tema
    Además, por si no quedaba claro, por si queríais saber mi opinión, o porque en este foro hay que explicarlo todo, ahí va el resto :P
    Y porque soy malvado.
    PROYECTOS REALIZADOS: FrikiMusic, Motor Scroll Tileado v3.2, Venturer2X (GP2X/WIZ), Echo, Screen Break Time
    PROYECTOS EN MARCHA (algunos): Bennu GP2X: 95% (necesito ayuda) ¡Antes de Halloween!: 92% SpaceH2H: 8%

Página 6 de 17 PrimerPrimer ... 234567891016 ... ÚltimoÚltimo

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •