# Programa
Javascript Plus!, un editor avanzado para archivos javascript.

# Autor
Luis Leonardo Nuñez Ibarra. Año 2005. email : leo.nunez@gmail.com. 

Chileno, casado , tengo 2 hijos. Aficionado a los videojuegos y el tenis de mesa. Mi primer computador fue un Talent MSX que me compro mi papa por alla por el año 1985. En el di mis primeros pasos jugando juegos como Galaga y PacMan y luego programando en MSX-BASIC. 

En la actualidad mi area de conocimiento esta referida a las tecnologias .NET con mas de 15 años de experiencia desarrollando varias paginas web usando asp.net con bases de datos sql server y Oracle. Integrador de tecnologias, desarrollo de servicios, aplicaciones de escritorio.

# Tipo de Proyecto
JavaScript Plus fue un editor de texto para javascript creado por mi por alla por el año 2004. El proyecto fue distribuido como shareware y hoy liberado para estudio y disponible para la comunidad. Fue escrito en Visual Basic 6.0 usando principalmente muchas librerias creadas por el sitio web http://www.vbaccelerator.com y adaptadas al proyecto.

# Archivos Necesarios
Este proyecto ocupa 33 componentes ActiveX 

- Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WIN\system32\stdole2.tlb#OLE Automation
- Object={665BF2B8-F41F-4EF4-A8D0-303FBFFC475E}#2.0#0; cmcs21.ocx
- Reference=*\G{24042BC3-630E-4340-8906-B3E0DB1FC0BF}#1.0#0#C:\Archivos de programa\jsplus\dll\vbslibrary.dll#VBSoftware - Library
- Reference=*\G{B0F6465F-C038-418D-9954-C80B985D847D}#1.0#0#C:\Archivos de programa\jsplus\dll\vbsengine.dll#Javascript Plus! Engine - Powered by vbaccelerator components
- Object={EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}#1.1#0; SHDOCVW.DLL
- Reference=*\G{405951B7-1EAF-4A8C-BDC1-20DF46E5C6D5}#1.0#0#C:\Archivos de programa\jsplus\dll\vbsftp.dll#Javascript Plus! - FTP Engine
- Reference=*\G{B3B4F02C-84F1-4C7F-A6BC-A623DE688F48}#1.0#0#C:\Archivos de programa\jsplus\dll\vbsclipboard.dll#VBSoftware - Special Clipboard Library
- Reference=*\G{45E6F8A4-4D4E-42EE-904B-64B62F3D879F}#1.0#0#C:\Archivos de programa\jsplus\dll\vbsprintpreview.dll#VBSoftware - Print Preview Library
- Reference=*\G{10677DAE-9352-40CF-9657-DF96F8190940}#2.0#0#C:\Archivos de programa\jsplus\dll\vbsxmlexplorer.dll#VBSoftware - Enhanced XML Explorer
- Reference=*\G{E76D5D20-515C-4147-B2DC-4D3E946D93F3}#1.0#0#C:\Archivos de programa\jsplus\dll\vbsconsole.dll#VBSoftware - Console Emulation
- Reference=*\G{816B6959-6446-4794-9F10-69EE168CF924}#1.0#0#C:\Archivos de programa\jsplus\dll\vbsimagebrowser.dll#VBSoftware - Image Browser
- Reference=*\G{7DF84B65-F293-4EDB-B532-CC7557E30113}#1.0#0#C:\Archivos de programa\jsplus\dll\vbsunzip.dll#VBSoftware - Unzip Library Manager
- Reference=*\G{B67ABA03-CA2E-44EA-8A6D-6A2F03D1FB28}#1.0#0#C:\Archivos de programa\jsplus\dll\vbsimageeffect.dll#VBSoftware - Image Effect
- Reference=*\G{73100AAE-F78B-4338-BA56-C91865AB82AA}#1.0#0#C:\Archivos de programa\jsplus\dll\vbscodelibrary.dll#VBSoftware - Code Library
- Reference=*\G{BE5D99D9-0EE1-434A-84BE-85F7E945B363}#1.0#0#C:\Archivos de programa\jsplus\dll\vbsplugins.dll#VBSoftware - Plugin Engine
- Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; mscomctl.ocx
- Object={246E535D-09D2-4109-80DA-2FF183F4D185}#2.1#0; colorpick.ocx
- Object={04DE47C8-1CE9-420F-ABED-109D480907D3}#1.2#0; PropertyWindow8.ocx
- Object={19B7F2A2-1610-11D3-BF30-1AF820524153}#1.2#0; ccrpftv6.ocx
- Object={971CBA62-C40B-4E49-9602-35CDA8C00036}#1.0#0; vbsExpBar6.ocx
- Object={2128BF45-F895-4206-84CD-F4DE2DD8D6B1}#2.0#0; vbsTbar6.ocx
- Object={3E0CB9ED-F88D-4146-BA44-38084D53F916}#2.0#0; vbsCbEx6.ocx
- Object={BCA5B647-4A34-488D-8923-BAED19344F42}#2.0#0; vbsToolboxBar6.ocx
- Object={E7106799-3A07-4335-80BA-4F20E8E5E2E9}#2.0#0; vbsODCL6.ocx
- Object={FCFAF346-DE8A-4FB6-8612-5000548EFDC7}#2.0#0; vbsListView6.ocx
- Object={E861E505-03C0-49EC-8FC6-8AB54B4361FE}#2.0#0; vbsDTab6.ocx
- Object={8C44B082-B582-4258-9E2C-7D9383CE7DF4}#1.0#0; vbsTreeView6.ocx
- Object={98F993CC-3598-405A-9E9A-0D2CF198B250}#2.0#0; vbsDkTb6.ocx
- Object={D890B066-6CE9-4233-9AC2-5E66E7917BF3}#2.0#0; vbsTab6.ocx
- Object={A9700EB9-4073-41EA-AF2D-6410341636CD}#1.0#0; vbsmditabs.ocx
- Object={C03D5026-EB27-402A-BD60-0E05020E600B}#2.0#0; vbsframex.ocx
- Object={764E381F-AD5F-40CB-9BEE-A63326278294}#1.0#0; vbscolorname.ocx
- Object={866F095F-113F-4DC1-B803-F4CF4AFC96EE}#1.0#0; vbspgbbar.ocx

El archivo PVB_XMENU.DLL es un componente customizado para que los menus se puedan aplicar iconos y ayuda al momento de selección.

# Registro de los componentes ActiveX
Se debe realizar desde la linea de comando de windows regsvr32.exe [nombre del componente]
Para windows 10 necesitaras instalar con permisos de administrador. 

# Notas de los componentes ActiveX de Windows
Si obtienes error de licencia de componentes al momento de ejecutar el proyecto necesitaras instalar quizas la runtime de Visual Basic 5 (MSCVBM50.DLL) y bajar el archivo VB5CLI.EXE y VBUSC.EXE ambos disponibles en internet para descarga. Esto corregira los problemas de licencia de componentes de VB5.

# Historia
Quisiera compartir con uds esta historia que puede ser de motivacion para mas de alguno que quiera partir con una idea y no sabe como empezar. Hace muchos años atras trabajaba como recurso externo en la AFP Habitat del metro pedro de valdivia. Como era externo casi eramos "mierda" a diferencia de los que trabajan para la afp. En esa afp el piso de informatica estaba en el piso 10 y trabajaban con un lenguaje que habia inventado un tipo de ahi al que llamaban IUX.

Era un lenguaje como XML apoyado por javascript mas enredado que la mierda con el cual construian portales para la afp. En ese tiempo no sabia javascript y si habia que hacer alguna consulta de como hacer algo habia que preguntar a los "internos" que poco o nada nos pescaban. Mas encima teniamos internet bloqueado y el ambiente laboral no era muy amigable. 
Ante esta situacion me vi forzado por decirlo de alguna manera a desarrollar un editor propio para el lenguaje javascript en mis ratos libres y en la casa (alla por el año 2005) en visual basic 6. Resulta que el editor empezo a ser de interes en mis compañeros de area los cuales me dieron ideas y sugerencias de como mejorarlo.

A fines de ese año se me presento una oportunidad laboral en el banco de chile de la calle estado y me fui de esa mierda de lugar de trabajo. Continue trabajando en mis ratos libres y en las noches cuando ya todos en casa estaban acostados en ideas y mejoras para mi editor. Un conocido me sugirio que lo desarrollara en ingles, que subiera un portal propio (.cl) y que lo vendiera en formato "shareware" (pruebas antes de usar). El ya tenia un utilitario que vendia en ese formato y le iba bastante bien.

Para hacerla corta, converti toda la aplicacion a ingles, levante un .cl y averigue los canales de venta en USA para los desarrolladores de software shareware. La venta la canalize a traves de REGNOW el cual te juntaba cierto monto que tu podias configurar y te avisaba del pago, la comision por las ventas y el deposito del dinero desde USA a tu cuenta corriente nacional. Busque todos los portales de distribucion de software en ese formato y levante mi aplicacion, la descripcion, link de descarga , imagenes, el tipo de trial, valor del software, etc ..
Las versiones 1 y 2 fueron una mierda literalmente. 

Cero ventas hasta que un dia me llega un correo de un tipo de belgica el cual me comenta que el hacia testeos de programas y que veia que mi software tenia potencial pero que habia que corregir y mejorar muchas cosas. Si yo queria el podia darme su ayuda como beta tester sin costo alguno. Trabaje como 3 meses en reahacer toda la interfaz, correccion de errores, ideas y mejoras que el tipo me iba dando a modo de ir mejorando la aplicacion. Por la diferencia horaria con europa solo coincidiamos encierto horario nocturno de aca de chilito.

Liberada la version 3 de mi aplicacion, cual fue mi sopresa que al dia siguiente en la mañana tenia 4 ordenes de compra pendiente de procesar y yo no tenia siquiera algun algoritmo o algo para levantar el trial de la aplicacion. Asi que a la chilena genere una version full , una poca documentacion basica de como instalar y de como acceder al sector "full" de mi software. Luego vinieron varias versiones, mejoras, ideas nuevas y mas ventas. Mi software de nombre "JavaScript Plus!" lo vendia en 45 USD y llegue a ganar como $2.000.000 de pesos en ventas en 5 años. (Duro hasta el año 2010 mi sitio web).

Un poco larga la historia, pero como veran con esfuerzo, paciencia, constancia, perseverancia todo es posible.

Finalmente al dia de hoy aun lo ocupo para algunas cosas en particular en mi trabajo. Fue desarrollado integramente en VisuaL Basic 6.0 con las librerias .dll del sitio www.vbaccelerator.com el cual para mi fue uno de los mejores y mas avanzados sitios dedicados a VB de mi epoca. 

Espero te haya gustado mi historia.

# Término y fin del proyecto
El proyecto finalizo el año 2010 por falta de tiempo, bajas ventas y por el periodo de vida util de la aplicacion. Debo agradecer todo lo que aprendi con el, las muchas noches que me acoste tarde, el frio del invierno de ese año en especial 2005 y las incontables tazas de te que tome .... xD

Actualmente ocupo para mis fines particulares una edición "LITE" de al aplicacion la cual se llama "Javascript Studio". Esta versión es mas simplificada y liviana que la ultima versión anterior. 

# Hosting del proyecto
Javascript Plus! estaba alojado en el sitio web http://www.vbsoftware.cl. Este nombre de sitio venia originalmente de un proyecto personal al cual yo habia llamado "proyectovb" y del cual fui muy entusiasta con el lenguaje visual basic desde la version 4 a la 6. Este sitio actualmente esta "tomado" en NIC por otra persona. Curiosamente usa la aplicacion como promoción en su sitio pero tiene un link de direccion a juegos de casino. No tengo ganas de iniciar algun tipo de pelea o disputa legal por el nombre del sitio. Curioso igual que tengan el proyecto como referencia en este. Quizas como experiencia cuiden sus sitios webs o registren su marca. 

# Patentes y nombres comerciales
Javascript Plus! no es un nombre de marca registrado y esperaria que se conserve como esta. En su epoca hice las averiguaciones del tema "legal" de registro de marcas y patentes pero era engorroso y caro para mi en la epoca. Desconozco si en la actualidad esto seguira igual o se haya simplificado el proceso de registro de aplicaciones. Si estas leyendo esto es para que aprendas de alguien que hizo todo lo que esta escrito, aprendas de el y quizas te sirva de inspiración para tu proyecto.

# Shareware y canales de promoción
Para usar el canal de venta ocupe el que provee la empresa http://www.regnow.com. Tienes que configurar una cuenta, indicar los datos del deposito de la cuenta destino y solicitar al banco un numero de transaccion para autorizar depositos internacionales. Luego en tu cuenta de regnow te configuras cada cuanto quieres que te lleguen los depositos (en mi caso eran cada 200 USD). 

Regnow te da todo el canal de venta y procesamiento del pago. Tu solo vas recibiendo las transacciones realizadas. En esa epoca regnow me cobraba el 10% de cada venta.

Para los canales de promoción existen muchos y variados sitios web que te ofrecen promocionar tu producto de muchas maneras. Algunos gratis y otros mejoran tu posicion de búsqueda haciendo algun pago. Algun editor revisa tu software y lo valora con "estrellitas" segun corresponda. En su epoca yo busque muchos portales de distribución de software y subia la informacion. 

La subida de la información se realizaba usando la aplicacion PAD la cual te permitia configurar varios parametros comunes en los portales de distribución de software o bien tenias que ingresar "a mano" todos los valores segun corresponda.

# Distribución y empaquetamiento de la aplicación
El proceso de instalación se realizaba usando la aplicacion Inno Setup Script Wizard (https://jrsoftware.org/isinfo.php) el cual generaba todo el script y proceso de instalación de todos los archivos de la aplicación. Luego la aplicacion "compila" tu proyecto en un archivo setup.exe el cual va realizando todos los tipicos pasos tradicionales de un instalador de software.

# Proceso de validación y trial de la aplicación
Para el proceso de la validación del trial de la aplicacion el proyecto tiene un flag dentro de las opciones de compilación condicional. Este parámetro se llama LITE. Si tiene el valor 1 al momento de compilar entonces era la version trial y se permitia usar hasta 30 veces la aplicación. Pasado ese numero se invitaba al usuario a comprar la aplicación y se bloqueba el uso de esta. El metodo para evitar posibles hackeos o crackeos usaba el siguiente truco :

- La aplicacion ejecutable se "firmaba" con un pequeño programa escrito en visual basic que agrega una firma "adicional" al archivo ejecutable. Luego en el proceso de validacion se validaban estos bytes extras a modo de evitar alguna alteracion en el archivo.

- Luego el proceso de ejecución en su primera vez instala 10 archivos en el directorio windows/system del sistema y luego via api windows le cambia la fecha de creacion. Los nombres eran como de archivos de sistema a modo de no generar sospechas. El proceso en su carga validaba por la existencia de esos 10 archivos. Si alguno no existia entonces era un posible intento de hackeo/crackeo a la aplicacion y esta no partia.

- Para la versión de pago se le solicitaba al usuario agregar crear un archivo llamado "reguser.ini" en el cual simplemente tenia el valor del nombre del usuario. Luego la aplicacion detecta de forma interna cuando es registrada este archivo y ademas el instalador del ejecutable "registrado" venia un archivo adicional llamado "licencia.dat" el cual contenia codificado en base64 el poema de pablo neruda "Muere Lentamente". Si la lectura del archivo coincidia con el poema "codificado" entonces era una versión valida de lo contrario no era valido para su ejecución.

# Componentes del proyecto
El proyecto esta construido usando varias tecnologias de la epoca. Destaco las principales :

- Componentes ActiveX OCX para la interfaz de usuario.
- Librerias ActiveX DLL las cuales proveen varias funcionalidades de apoyo al proyecto.
- Archivo de ayuda .hlp 
- Instalador para la aplicación.
- Packetes de librerias las cuales se instalan descomprimiendo archivos .zip
- Llamadas a la API de windows.

# Ayuda de la aplicación
Para generar el archivo de ayuda de la aplicacion (.HLP) usaba un programa llamado HelpWriter32. El cual era un muy editor y generador de archivos de ayuda. Estos se compilaban a partir de un archivo .rtf. 

Era bien interesante la generación de toda la documentación del programa usando los archivos de ayuda. El utilitario y compilador viene en la distribución de visual basic 6 creo que en una carpeta llamada utils ...

# Software de terceros
Esta aplicacion tiene componentes de software de http://www.vbaccelerator.con y http://www.planetsourcecode.com 

# Funcionalidades generales de la aplicación

Interfaz

    Interfaz moderna como Microsoft Visual Studio .NET
    Interfaz de documentos múltiples
    Familiar MS Officeź pestañas de estilo
    Panel dividido

Editor de texto

    Numeración de líneas
    Ajuste de línea
    Múltiples niveles Deshacer/Rehacer
    Buscar y reemplazar con soporte de expresiones regulares
    Buscar en archivos

Resaltado de sintaxis de código

    Resaltado de sintaxis JavaScript
    Resaltado de sintaxis HTML

Escritura de código HTML

    Inspector de código para etiquetas HTML
    Autocompletar para etiquetas HTML
    Generadores de etiquetas HTML
    Selector de color HTML
    Explorador de código HTML
    12 asistentes HTML

Escritura de código JavaScript

    Autocompletar para objetos JavaScript
    Sugerencias de la función JavaScript
    Explorador de funciones JavaScript
    Navegador de objetos JavaScript
    18 JavaScript Plus! Asistentes (Integrados)

Características de conectividad

    Abrir documentos desde el servidor HTTP
    Abrir/guardar documentos desde/a un servidor FTP

Vista previa del código

    Vista previa en el Navegador Externo (sin guardar el archivo)

Herramientas de productividad

    Portapapeles de varios elementos
    Explorador de archivos incorporado
    Biblioteca de códigos
    Validación HTML usando HTML Tidy
    Navegador de etiquetas HTML
    Navegador de objetos JavaScript
    Validación de JavaScript usando JSLint

Ayuda y referencia

    Referencia JavaScript
    Referencia HTML 4.0
    Referencia CSS
    Ordenado Referencia
    Referencia JSLint

Beneficios para los profesionales

    Edite HTML, JavaScript en un solo programa
    Carga limpia, ligera y rápida
    Interfaz familiar que permite un arranque rápido
    Todas las funciones esenciales de edición de código están en su lugar
    Editor de texto, menús, barras de herramientas y teclas de acceso directo totalmente personalizables
    Reutilizar eficientemente fragmentos de código comunes
    Pocos clic clic FTP subir o actualizar

Beneficios para los estudiantes

    Fácil de aprender y usar
    Varias plantillas y fragmentos de código
    Asistentes HTML y JavaScript de inicio rápido
    Ayuda a aprender HTML, JavaScript e incluso algunos scripts

Características Principales

    Construido con JavaScript y HTML Autocompletar.
    Incluye la referencia completa de JavaScript y la guía básica 1.3, 1.4 y 1.5.
    Incluye referencia completa HTML, CSS, DOM y JSCRIPT.
    FTP integrado.
    Construya su propio proyecto personalizado “JavaScript Plus!”
    Incluye 18 JavaScript Plus! Asistentes (Agregar a Favoritos, Calendario, Menú de Países, Barra de desplazamiento de colores, Menú desplegable, Enlace de correo electrónico, Asistente de IFrame, Transferencia de imagen, Última fecha modificada, Menú izquierdo, Metaetiqueta, Enlaces de texto MouseOver, Ventana emergente, Transición de página, Menú emergente, Menú TabMenu y TreeMenu, SlideShow)
    Navegador de objetos integrado. Explore todos los objetos javascript, métodos, propiedades de una manera fácil.
    Expanda el entorno utilizando plugins. Cree su propio plugin usando activex dll. JavaScript Plus! incluye un esqueleto de muestra de Visual Basic 6.0 para crear sus propios plugins.
    Previsualice su archivo en el navegador. JavaScript Plus! es compatible con Internet Explorer, Mozilla Firefox,
    Netscape y Opera.
    Soportes de macros.

# Utilitarios Anexos (Algunos construidos tambien por mi ...)
- Easy Query. Gestor para conectarse a distintas bases de datos via ODBC. (Otra herramienta mas que nacio de la necesidad)
