¿Alguien ha creado aplicaciones web que puedan ejecutarse totalmente fuera de línea? [cerrado]

StackOverflow https://stackoverflow.com/questions/173378

  •  05-07-2019
  •  | 
  •  

Pregunta

Estoy creando una aplicación que los autores (con suerte) usarían para ayudarlos, uh ... autor .

Piénsalo como un wiki pero solo para una persona, pero más genial. Deseo hacerlo lo más accesible posible para mis (potenciales) masas de adoración, por lo que estoy pensando en convertirlo en una aplicación web.

Ciertamente no tiene que ser así, no hay integración con otros sitios, no hay funciones sociales. Sin embargo, implica escribir información en formularios, por lo que para una construcción rápida, la web probablemente sea la mejor.

Sin embargo, realmente no quiero alojarlo yo mismo. No me lo podía permitir, pero la mayoría de las personas que usan esto pueden no querer que sus datos se almacenen en otro lugar. Esta es información privada sobre lo que están escribiendo y no esperaría que confiaran en mí, por lo que estoy pensando en convertirla en una aplicación de cliente grueso.

Y ahí radica el problema, cómo hacer que una aplicación que se enfoca principalmente en el ingreso de datos de formularios esté disponible fácilmente para los usuarios potenciales (yay aplicaciones web), pero también fuera de línea, para que sepan que tienen el control total de sus datos (yay cliente grueso aplicaciones).

Veo las siguientes soluciones:

  1. Constrúyalo como una aplicación Java de cliente grueso y ejecute una versión reducida en la red como un applet con el que las personas pueden jugar antes de descargar todo.
  2. Constrúyalo como una aplicación Flex para en línea y una aplicación Air para fuera de línea (básicamente, las mismas fuentes de compilación de compilación).
  3. Constrúyalo como una aplicación web estándar (HTML, JS, etc.) pero tenga una versión descargable que de alguna manera ejecuta el sitio totalmente en su computadora. No tocaría la red en absoluto.

Ignorando 1 y 2 (los estoy viendo por separado), creo que 3 implicaría:

  • Empaquetar una instalación que contiene un pequeño servidor web que tiene mi código listo para ejecutarse.
  • Reasignando la base de datos de algo como mySQL a algo como SQLite.
  • Creando algún tipo de aplicación de conveniencia que ejecutó el servidor y abrió su navegador en la ubicación correcta, posiblemente utilizando algo como Prisma para ocultar toda la brecha.

Entonces, ¿alguna vez has hecho algo como esto antes?

Si es así, ¿qué problemas encontró?

Finalmente, ¿hay otra solución que no haya pensado? '

(también, Joyent Slingshot fue una sugerencia sobre otra pregunta, pero es RoR (en el que no tengo experiencia) y estoy 99% seguro de que no se ejecuta en Linux, por lo que no es adecuado para mí.

¿Fue útil?

Solución

Hay una opción adicional, y es usar las nuevas características de la aplicación sin conexión HTML5, a saber, la memoria caché de la aplicación, las bases de datos del lado del cliente y las API de almacenamiento local.

Actualmente creo que Safari es el único navegador de envío que admite cualquiera de estos, y creo que solo admite las bases de datos del lado del cliente y las partes de almacenamiento local. Las webkit nightlies son compatibles con todas estas funciones, las noches de Firefox son compatibles con muchas de ellas (¿quizás todas ahora?)

[Editar (olliej): Corrección, Firefox 3 admite el caché de la aplicación, pero desgraciadamente no es la base de datos del lado del cliente]

Otros consejos

Creo que deberías mirar tiddlywiki para inspirarte.

Es una wiki escrita en JavaScript completamente independiente en un solo archivo html. Lo carga en su navegador como un archivo: /// URL, por lo que no hay necesidad de un servidor.

Lo uso como un wiki personal para guardar notas sobre diversos temas.

Google Gears se utiliza para ofrecer algunas de las aplicaciones de Google sin conexión (Google Reader, Gmail, Docs y más).

¿Qué es Google Gears?

  

Gears es una extensión de navegador de código abierto que permite a los desarrolladores crear   Aplicaciones web que pueden ejecutarse offline.   Gears proporciona tres características clave:

     
      
  • Un servidor local, para almacenar en caché y servir los recursos de la aplicación (HTML,   JavaScript, imágenes, etc.) sin   necesidad de contactar con un servidor
  •   
  • Una base de datos, para almacenar y acceder a los datos desde el navegador
  •   
  • Un grupo de subprocesos de trabajo, para hacer que las aplicaciones web sean más   responsivo
  •   
     

realizando operaciones caras en   el fondo

     

Gears es actualmente un lanzamiento de desarrolladores de acceso temprano. Todavía no está diseñado para ser utilizado por usuarios reales en aplicaciones de producción en este momento.

     

Si eres un desarrollador interesado en usar Gears con tu aplicación, visita la Página de desarrolladores de Gears .

     

Si desea instalar Gears en su computadora, visite la página de inicio de Gears. Sin embargo, tenga en cuenta que Gears aún no está diseñado para uso general.

Pero a medida que lo lees, todavía está en las primeras etapas.

Estamos utilizando algo similar a su tercera opción para probar nuestros sitios web a nivel local. Funciona bien

Nuestro servidor web empaquetado no es lo suficientemente pequeño para lograr lo que necesita, pero tampoco hemos estado tratando de mantenerlo pequeño. Si puede empaquetar su código de servidor web en un paquete lo suficientemente pequeño, no veo por qué este enfoque no funcionaría.

Creo que AIR es el camino a seguir ...

¿Se ha registrado en google gears ?

Algunos punteros para la solución 3:

  • para la parte de la GUI, ExtJS parece realmente agradable.

  • para la parte de almacenamiento, hay una buena biblioteca de javascript que resume diferentes backends de almacenamiento: PersistJS .

Backends soportados para PersistJS:

  1. flash: Flash 8 almacenamiento persistente.
  2. gears: almacenamiento persistente basado en Google Gears.
  3. localstorage: almacenamiento de borrador HTML5.
  4. whatwg_db: borrador de almacenamiento de base de datos HTML5.
  5. globalstorage: almacenamiento de borrador HTML5 (especificación antigua).
  6. es decir: comportamientos de datos de usuario de Internet Explorer.
  7. cookie: almacenamiento persistente basado en cookies.

También, creo que el software wiki moin moin tiene un versión de escritorio que incluye su propio servidor web. Esto es fácil en Python, ya que se incluyen las baterías .

¿Es posible que desees ver cómo lo hacen?

Podrías crear un cliente dedicado utilizando Webkit o la red troncal de Firefox. Algunos juegos usan esa solución para IU, por ejemplo.

O podrías hacer un pequeño servidor web (tengo un pequeño servidor web en Lua que uso para propósitos similares, solo unos pocos megas con bibliotecas y todo). Sin embargo, si toma esta ruta, el mayor problema a considerar es que no desea que su servidor web dependa de las variables ambientales, sino que sea totalmente autónomo. Debe intentar aislar todas las variables de un archivo de configuración y terminar con él (estilo de paquete)

O podría usar una aplicación cliente de Java para mostrar la página web

O GoogleGears, pero eso es lo mismo (casi) que Flex + Air. así que elige Flex + Air si es con lo que estás familiarizado

No especificaste un idioma, pero miré Karigell hace unos años. Es el framework web de Python, similar a Django o TurboGears, pero no tiene la sobrecarga de esos frameworks.

Desde que he estado jugando con él, parece que funcionaría para tus propósitos. Tiene un servidor web incorporado (aunque puede usar casi cualquier servidor que desee) y puede usar cualquier base de datos que sea compatible con Python.

Además, Python funciona bien con Linux. :)

Si ha hecho de la aplicación una aplicación web normal que depende en gran medida de las tecnologías del lado del cliente (utilizando DHTML y Google Gears para almacenar datos fuera de línea como ya se sugirió) así que una vez abierto, no hubo mucha interacción con el servidor, probablemente podría alojar la cosa en una cuenta de alojamiento compartido básica que no costaría mucho. Ese podría ser su punto de partida más fácil, ya que no tendría que preocuparse por todos los problemas con las aplicaciones de escritorio, como la compatibilidad con diferentes sistemas operativos, el empaquetado de una instalación, etc., pero tampoco necesitaría recursos de servidor masivos. / p>

Puede usar HTML, JS y cualquier otra cosa en Adobe AIR y también tendrá muchas opciones para guardar datos localmente.

en java world, puede usar jetty para un servidor, implementar una aplicación web con su marco favorito y usar hsqldb como base de datos; vive completamente en su contenedor (jetty). puede implementar la aplicación de vista previa en la web y la versión sin conexión descargable del paquete.

Hay una distribución portátil de Apache / MySQL / PHP (para colocar en las llaves USB):

http://portableapps.com/apps/development/xampp

Esto debería adaptarse fácilmente a sus necesidades.

También puedes considerar usar XULRunner o Prism

Son la tecnología de código abierto en la que se basan FireFox, Thunderbird y Joost, y te permite desarrollar aplicaciones en XML y javascript esencialmente contra la misma api rica que FireFox tiene en sí. Y, por supuesto, esto también es multiplataforma, por lo que funcionaría en Mac / Linux / Windows ...

Marque aquí para más información: https://developer.mozilla.org/en/XULRunner

Estaba pensando en hacer algo como esto yo mismo. Mi plan era escribir una aplicación utilizando django y escribir un script que inicie el servidor de prueba de django y abra el navegador predeterminado en el puerto especificado. Mi plan era usar SQLite ...

Además, sería bueno empaquetarlo en un paquete, de modo que los usuarios sin django instalado puedan ejecutar la aplicación sin ningún tipo de dependencia ...

Como sugerí anteriormente, mi sugerencia es utilizar un sistema Wiki para resolver su problema. Ahora la pregunta podría ser: ¿Cuál?

Puede utilizar Trac , es muy sencillo y puede personalizar su GUI. Pero, si prefiere algo más avanzado, use MoinMoin . Lo usé durante años, y en mi opinión es un sistema wiki muy bueno y fuerte.

Depende del wiki que elija, olvide escribir su aplicación web desde cero. Según su pregunta, el mejor enfoque es elegir algo que funcione y personalizarlo / modificarlo para que se ajuste a sus necesidades.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top