Re: Update Apache2

2016-02-11 Por tema Erick Ocrospoma
Hola,

2016-02-11 14:52 GMT-05:00 alparkom . :
> El día 11 de febrero de 2016, 15:20, Alberto Cabrejas Pérez
>  escribió:
>> Actualice mi servidor web en debian 8.3 con apache2 a 2.4.10-10+deb8u4, y
>> los virtualhost que tenia dejaron de funcionar, si los llamo por IP si
>> responden, debo hacer algún cambio especifico tras la actualización o algo?
>
> Respaldaste el archivo httpd-vhosts.conf?
> Revísalo. Además verifica que apache este aceptando dominios virtuales.
>
>> --
>>
>> Saludos, *Alberto Cabrejas Pérez*
>> Administrador de Redes Informáticas
>> ARTex S.A. Sucursal Granma
>> http://www.artexsa.com
>> http://www.scgra.artex.sa
>> Linux Usuario Registrado # 31 666
>> Teléf.+53(023) 48-1912 48-1934 48-1956 Ext 115
>> Jabber: albe...@scgr.artex.cu
>> "BE FREE BE LINUX!!!"
>>
>> (null)
>>
>

Algo que he visto mucho en Debian/Ubuntu al pasar de Apache 2.2 a 2.4,
es que ya no acepta archivos virtualhost sin extension, a no ser
tengan la extension conf

Revisa tu archivo /etc/apache2/apache.conf y fijate si tienes esto

IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf

Si tienes esas opciones incluidas, modificalas para que quede asi:

IncludeOptional conf-enabled/*
IncludeOptional sites-enabled/*

En caso de que admita archivos virtualhost sin extension, tendrias que
revisar tu VirtualHost y tambien los logs. Ya que en la version 2.4
hay algunas opciones de Apache que han cambiado.


Nos comentas como te va.


-- 



~ Happy install !





Erick.

---

IRC :   zerick
Blog: http://zerick.me
About :  http://about.me/zerick
Linux User ID :  549567



Re: Update Apache2

2016-02-11 Por tema alparkom .
El día 11 de febrero de 2016, 15:20, Alberto Cabrejas Pérez
 escribió:
> Actualice mi servidor web en debian 8.3 con apache2 a 2.4.10-10+deb8u4, y
> los virtualhost que tenia dejaron de funcionar, si los llamo por IP si
> responden, debo hacer algún cambio especifico tras la actualización o algo?

Respaldaste el archivo httpd-vhosts.conf?
Revísalo. Además verifica que apache este aceptando dominios virtuales.

> --
>
> Saludos, *Alberto Cabrejas Pérez*
> Administrador de Redes Informáticas
> ARTex S.A. Sucursal Granma
> http://www.artexsa.com
> http://www.scgra.artex.sa
> Linux Usuario Registrado # 31 666
> Teléf.+53(023) 48-1912 48-1934 48-1956 Ext 115
> Jabber: albe...@scgr.artex.cu
> "BE FREE BE LINUX!!!"
>
> (null)
>



FreeRadius + Ldap

2016-02-11 Por tema Salvador Sánchez Sánchez
Buenas Tardes, estoy intentando implementar como dice el asunto 
freeradius + ldap, configure todo por una guía, cuando pruebo en consola 
con el comando


radtest user-ldap pass-ldap localhost 1812 secret

me devuelve


Sending Access-Request of id 152 to 127.0.0.1 port 1812
User-Name = "user-ldap"
User-Password = "pass-ldap"
NAS-IP-Address = 127.0.0.1
NAS-Port = 1812
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=152, 
length=38

User-Password = "ACTIVE"


en el log

Auth: Login OK: [user-ldap/pass-ldap] (from client LocalHost port 1812)


ahí todo bien, el problema es a la hora de unir alguna pc, la pc pide 
autenticación es decir la tarjeta WIFi pide usuario y contraseña, le 
pongo los datos y me da error, y en el log del freeradius me muestra lo 
siguiente.



Auth:   [ldap] Attribute "User-Password" is required for authentication.

Auth: Login incorrect: [salbi/] (from client 
INFORMATICA port 0 cli 0018e710d7a2)




Espero su ayuda,


--




*SaLvAdOr SaNcHeZ SaNcHeZ
*Administrador de Redes
*Dirección Municipal de Salud
*Grupo de Usuarios de Tecnologías Libres en Cuba -»http://gutl.jovenclub.cu/
*Proud GNU/Linux User # 525811
*http://counter.li.org/
*Cacocum - Holguín

" - Se es viejo cuando se tiene más alegría por el pasado que por el 
futuro. -   "


--
Este mensaje le ha llegado mediante el servicio de correo electronico que 
ofrece Infomed para respaldar el cumplimiento de las misiones del Sistema 
Nacional de Salud. La persona que envia este correo asume el compromiso de usar 
el servicio a tales fines y cumplir con las regulaciones establecidas

Infomed: http://www.sld.cu/



Re: Update Apache2

2016-02-11 Por tema Ricardo Eureka!
El día 11 de febrero de 2016, 15:20, Alberto Cabrejas Pérez
 escribió:
> Actualice mi servidor web en debian 8.3 con apache2 a 2.4.10-10+deb8u4, y
> los virtualhost que tenia dejaron de funcionar, si los llamo por IP si
> responden, debo hacer algún cambio especifico tras la actualización o algo?

Que dice la documentacion al respecto?



Update Apache2

2016-02-11 Por tema Alberto Cabrejas Pérez
Actualice mi servidor web en debian 8.3 con apache2 a 2.4.10-10+deb8u4, 
y los virtualhost que tenia dejaron de funcionar, si los llamo por IP si 
responden, debo hacer algún cambio especifico tras la actualización o algo?

--

Saludos, *Alberto Cabrejas Pérez*
Administrador de Redes Informáticas
ARTex S.A. Sucursal Granma
http://www.artexsa.com
http://www.scgra.artex.sa
Linux Usuario Registrado # 31 666
Teléf.+53(023) 48-1912 48-1934 48-1956 Ext 115
Jabber: albe...@scgr.artex.cu
"BE FREE BE LINUX!!!"

(null)



Re: [OT] Un poco de cultura general

2016-02-11 Por tema libreydivagante



El 11/02/16 a las 01:21, Felix Perez escribió:

El día 10 de febrero de 2016, 18:13, libreydivagante
 escribió:



El 30/01/16 a las 22:43, Juan Lavieri escribió:


SAP*

Muchas veces, mientras se investigan algunas cosas, cae información en
nuestras manos que pareciera encajar con circunstancias que se viven en
la actualidad.

Casualmente eso me sucedió hoy y quisiera compartirlo con la comunidad;
es un artículo de José Luis Cano Gil que me pareció muy interesante.

He aquí el enlace:

http://www.psicodinamicajlc.com/articulos/jlc/020.html

Saludos.

*SAP = Sin Alusiones Personales

--



Juan, aqui disciento con el terapeuta-psico... mira:

"El envidioso es un insatisfecho que, con frecuencia, no sabe que lo es."

  NO! el envidioso es algo, y puede serlo incluso logrando un gran desarrollo
en algun ambito, aunque para su totalidad la imagen que tenga de si sera
falsa o ilusoria. es decir: que no corresponde a la realidad de su ser.
Luego cuando los actos ajenos le demuestran que no "ES" lo que creia surge
la envidia. Lamentablemente el otro sin hacerle nada a este le demuestra
error o inoperancia.

  Como sucede cuando camaleon responde mucho y bien en la lista y a los otros
muchachos, sin saber ellos mismos lo que les pasa (porque solo han mirado y
estudiado libros y no sus procesos y "demonios" internos...) les da bronca y
de vez en cuando responden haciéndolo notar.

  Saludos desde el sur.

P.D.: si alguien siente mucha envidia, lo mejor es que se tire un htop.



Se nota que no has entendido nada de lo planteado en el link del
psico-terapeuta.

No se critica los aportes de camaleón sino lo que eso provoca, si a ti
te sirve, bien, pero a largo plazo no sirve, genera dependencia, no
aprendes, y se transforma en ruido puro y duro, repitiendo lo dicho
mil veces en la lista o se repite lo que otro ya ha dicho.
Lo del bloqueo es otro tema, aparece un tema pero que como esta
bloqueado el usuario, esta no lo lee, ¿O sí lo lee? A veces contesta
lo mismo, pero unos minutos después, para mí es extraña esa conducta.

Bueno, dejo esto hasta aquí por  mi parte.



Che, no estaras abusando un poco de la palabra "NADA"?

Che, no te diste cuenta que no critico los aportes de camaleon?


Dios nos salve!! perdon! la ciencia nos salve!

P.D.: perdon! alguien que nos salve!






Re: [OFF] Lenguajes de programación para escritorio

2016-02-11 Por tema alparkom .
El día 11 de febrero de 2016, 12:37, Pablo JIMÉNEZ
 escribió:
> On Thu, Feb 11, 2016 at 02:58:36PM +0100, Rafael Cantos Villanueva wrote:
>> El 11/02/2016 a las 14:24, alparkom . escribió:
>> >Mis argumentos? Suponiendo que tengo 50 mil personas distintas con el
>> >software instalado, tendré 50 mil usuarios en la base de datos... no
>> >crees que eso es demasiado?
>> >
>> >No hablo de columnas de una tabla, sino de usuarios de la base de datos...
>>
>> Si tienes una base de datos con acceso de 5 usuarios diferentes,
>> simplemente necesitarásuna base de datos que te permita albergar ese número
>> de usuarios, con un hosting que soporte sin problemas ese número de
>> conexiones. El número de usuarios no es un problema en sí mismo. Todo
>> dependerá de que utilices una base de datos apropiada, con la capacidad
>> suficiente para albergar los datos personales de los usuarios (correo,
>> contraseña, nombre, etc) y un servidor que te permita servir el número de
>> conexiones que requieres.
>
> No solamente está el tema de la capacidad, sino también quizás resulte
> más sensato emplear algún sistema de autenticación que sirva para tal
> propósito (LDAP con cifrado TLS, RADIUS + LDAP con cifrado TLS, Kerberos
> + LDAP con TLS) y que se integre con la BD. Pensar que uno puede
> implementar un sistema de autenticación confiable basado en la BD es
> darse un escopetazo en el pie y buscar problemas a futuro.
>

Okey. Me leí todos los mensajes anteriores, respondo solo a este por
ser el último.

Quedó claro que ni un lenguaje podrá asegurar los datos a la base de
datos, que era el tema principal de este correo.

Gracias chicos.

> Saludos.
>
> --
> Pablo Jiménez
>



Re: Entorno antiguo.

2016-02-11 Por tema Luis E. Arevalo R.
El 11 de febrero de 2016, 12:50, Pablo JIMÉNEZ 
escribió:

>
> ¿Has probado i3wm? https://i3wm.org/


No, ya llevo años utilizando Gnome :-( Le voy a dar un vistazo, se ve
similar a Ion. ¡Saludos!

-- 
Luis Eduardo Arevalo ReyesUser #354770
http://linuxcounter.net
Fono +56 9 54012831
http://www.luchox.cl


Re: [OT] Dynatrace agent en unico vhost apache

2016-02-11 Por tema Camaleón
El Thu, 11 Feb 2016 16:49:37 +0100, Maykel Franco escribió:

> Buenas, me ha tocado una tarea de estas que te pide el cliente y que
> consume recursos de las máquinas en producción pero bueno...

(...)

> He metido esa linea de LoadModule, en un vhost y la carga pero mi
> pregunta es, mandará estadísticas de apache de solo ese vhost o en
> general de todos los vhost?

(...)

Lo poco que he leído de ese Dynatrace (no lo conozco) me da a entender 
que monitoriza servicios/procesos (servidor web, correo, estado del 
equipo, gestión de recursos, etc...) por lo que entiendo que te dará 
estadísticas de consumo de todo lo que pase por Apache. 

Ahora bien, no sería muy útil que esos datos no se pudieran filtrar o 
configurar para no incluir información sensible (salvo que simplemente se 
trate de datos genéricos de consumo/rendimiento) o adecuarlos al tipo de 
información que te interese. Supongo que tendrá alguna opción para 
definir el tipo de informe que quieres que genere, no te va a dar el 
chorro de datos en bruto y ya :-)

Web Server Monitoring
https://community.dynatrace.com/community/display/DOCDT62/Web+Server+Monitoring

Saludos,

-- 
Camaleón



Re: Entorno antiguo.

2016-02-11 Por tema Pablo JIMÉNEZ
On Thu, Feb 11, 2016 at 10:47:52AM -0300, Luis E. Arevalo R. wrote:
> El 10 de febrero de 2016, 6:29, Jose Luis Quiroga Rodriguez 
> escribió:
> 
> > Estimados amigos
> > Os envío este correo por que ando buscando como loco un antiguo entorno de
> > escritorio de allá a mediados de los 90. Básicamente era de estilo gótico y
> > negro, muy bien decorado y precioso, no prosperó debido a que por aquel
> > entonces las máquinas eran muy lentas.
> > A ver si me podéis echar una mano.
> > Un grato saludo debianita.
> >
> 
> Yo utilicé por mucho tiempo un entorno llamado Ion [1], el cual conocí el
> 2004 en un encuentro Linux desarrollado en Chile, y era utilizado por el
> entonces líder del proyecto Debian, Martin Michlmayr. Lo encontraba muy
> sencillo y útil, y si no estuviera abandonado, lo seguiría utilizando :-(

¿Has probado i3wm? https://i3wm.org/

Se encuentra también en la colección de paquetes de Debian...

Paquete: i3-wm
Estado: instalado
Instalado automáticamente: no
Versión: 4.11-1~bpo8+1
Prioridad: extra
Sección: x11
Desarrollador: Michael Stapelberg 
Arquitectura: amd64
Tamaño sin comprimir: 1.828 k
Depende de: libc6 (>= 2.14), libcairo2 (>= 1.6.4-5~), libev4 (>= 1:4.04),
libglib2.0-0 (>= 2.12.0), libpango-1.0-0 (>= 1.14.0),
libpangocairo-1.0-0 (>= 1.22.0), libpcre3 (>= 1:8.35),
libstartup-notification0 (>= 0.10), libxcb-cursor0 (>= 0.0.99),
libxcb-icccm4 (>= 0.4.1), libxcb-keysyms1 (>= 0.4.0), libxcb-randr0
(>= 1.3), libxcb-util0 (>= 0.3.8), libxcb-xinerama0, libxcb-xkb1,
libxcb1 (>= 1.6), libxkbcommon-x11-0 (>= 0.4.0), libxkbcommon0 (>=
0.4.0), libyajl2 (>= 2.0.4), perl, x11-utils
Recomienda: xfonts-base, fonts-dejavu-core, libanyevent-i3-perl (>= 0.12),
libjson-xs-perl, rxvt-unicode | x-terminal-emulator
Tiene conflictos con: i3-wm
Proporciona: x-window-manager
Descripción: improved dynamic tiling window manager
 Key features of i3 are good documentation, reasonable defaults (changeable in a
 simple configuration file) and good multi-monitor support. The user interface
 is designed for power users and emphasizes keyboard usage. i3 uses XCB for
 asynchronous communication with X11 and aims to be fast and light-weight. 
 
 Please be aware i3 is primarily targeted at advanced users and developers.
Página principal: http://i3wm.org/

Marcas: implemented-in::c, interface::x11, role::program, uitoolkit::TODO,
x11::window-manager


-- 
Pablo Jiménez



[OT] Dynatrace agent en unico vhost apache

2016-02-11 Por tema Maykel Franco
Buenas, me ha tocado una tarea de estas que te pide el cliente y que
consume recursos de las máquinas en producción pero bueno...

Tengo que implementar un colector de datos, un agente que se encarga
de enviar información del servidor donde se encuentra instalado, tal
como estadísticas de red, cpu, informacion de apache...

Lo tengo instalado, solo me queda conectarlo con un servidor collector
de datos pero mi pregunta es, se puede poner solo y únicamente por
vhost??

Según la doc:

https://community.dynatrace.com/community/display/DOCDT60/Apache+Web+Server+Agent+Configuration#ApacheWebServerAgentConfiguration-Deployment/FileAccessPermissions

https://community.dynatrace.com/community/display/EVAL/Step+3+-+Connect+Agent+to+Dynatrace

Hay que cargar un modulo, este:

LoadModule dtagent_module /opt/dynatrace-6.3/agent/lib64/libdtagent.so

En ficheros de configuración globales httpd.conf o apache2.conf
depende de la distro, en mi caso es apache2.conf

He metido esa linea de LoadModule, en un vhost y la carga pero mi
pregunta es, mandará estadísticas de apache de solo ese vhost o en
general de todos los vhost?

Mi sensación es que va a mandar todo, por eso pregunto en la lista, no
encuentro nada en la documentación...

Lo que no quiero es mandar a un cliente información de otros clientes
básicamente y resumiendo



Re: [OFF] Lenguajes de programación para escritorio

2016-02-11 Por tema Pablo JIMÉNEZ
On Thu, Feb 11, 2016 at 02:58:36PM +0100, Rafael Cantos Villanueva wrote:
> El 11/02/2016 a las 14:24, alparkom . escribió:
> >Mis argumentos? Suponiendo que tengo 50 mil personas distintas con el
> >software instalado, tendré 50 mil usuarios en la base de datos... no
> >crees que eso es demasiado?
> >
> >No hablo de columnas de una tabla, sino de usuarios de la base de datos...
> 
> Si tienes una base de datos con acceso de 5 usuarios diferentes,
> simplemente necesitarásuna base de datos que te permita albergar ese número
> de usuarios, con un hosting que soporte sin problemas ese número de
> conexiones. El número de usuarios no es un problema en sí mismo. Todo
> dependerá de que utilices una base de datos apropiada, con la capacidad
> suficiente para albergar los datos personales de los usuarios (correo,
> contraseña, nombre, etc) y un servidor que te permita servir el número de
> conexiones que requieres.

No solamente está el tema de la capacidad, sino también quizás resulte 
más sensato emplear algún sistema de autenticación que sirva para tal 
propósito (LDAP con cifrado TLS, RADIUS + LDAP con cifrado TLS, Kerberos 
+ LDAP con TLS) y que se integre con la BD. Pensar que uno puede 
implementar un sistema de autenticación confiable basado en la BD es 
darse un escopetazo en el pie y buscar problemas a futuro.

Saludos.

-- 
Pablo Jiménez



Re: [OFF] Lenguajes de programación para escritorio

2016-02-11 Por tema Pablo JIMÉNEZ
On Thu, Feb 11, 2016 at 07:17:16AM -0300, alparkom . wrote:
> El día 11 de febrero de 2016, 5:30, Adrià  escribió:
> > On Thu, Feb 11, 2016 at 12:42:22AM -0300, alparkom . wrote:
> >> Estuve leyendo y vi a Java, Python y Ruby como los mas simples sin
> >> embargo estos lenguajes son interpretados. Osea, lo ideal sería crear
> >
> > Ni creo que Java sea simple (eso ya es opinión personal) y por lo menos
> > Java y Python se pueden compilar.
> >
> 
> Recién comienzo con Java, aunque hasta ahora lo encuentro bastante
> fácil. En cuanto a "simple" tienes razón, no lo es. Confundí su
> dificultad con su capacidad.
> 
> Como dije, Java al compilar queda en bytecode pero pude obtener el
> código completamente de los sources con cierto programa para
> descompilar los .class.
> 
> No entiendes mi idea, o no la expliqué bien. Lo que quiero es poder
> hacer conexiones a bases de datos de forma segura, osea, si yo le paso
> un programa en Java a alguien (y dicho programa tiene una conexión a
> base de datos externa), este "alguien" podrá descompilar el .class y
> ver los datos de conexión, eso es lo que quiero evitar.

Ojo con lo que quieres. Si piensas que una aplicación «segura» es 
aquella donde no deseas que el usuario pueda ver la configuración para 
las conexiones a bases de datos que deseas establecer, eso no tiene nada 
que ver con seguridad.

Por ejemplo, si la conexión a la base de datos no es cifrada, da lo 
mismo que la aplicación sea desarrollada en C++, bastará realizar una 
captura de paquetes con tcpdump o herramientas similares para obtener 
información relevante. Ni hablar del uso de strace o relacionados.

Si lo que pretendes es que los usuarios no se entrometan con la 
configuración, hay varios elementos que tendrás que considerar, no 
solamente el lenguaje a emplear para el desarrollo del proyecto (cifrado 
de conexiones, uso de DNSSEC para verificar autenticidad del otro 
extremo de la conexión, bastionamiento y restricciones de accesos en el 
firewall del servidor de BD, el sistema de autenticación a emplear en la 
BD, los permisos de acceso asociados a los usuarios y un cuantohay que 
no voy a detallar acá).

Saludos.

-- 
Pablo Jiménez



Re: [OFF] Lenguajes de programación para escritorio

2016-02-11 Por tema Camaleón
El Thu, 11 Feb 2016 11:35:22 -0300, alparkom . escribió:

> El día 11 de febrero de 2016, 11:30, Camaleón 
> escribió:
>> El Thu, 11 Feb 2016 00:42:22 -0300, alparkom . escribió:
>>
>>> Buenas chicos;
>>>
>>> Estoy interesado en aprender algún lenguaje de programación para crear
>>> aplicaciones de escritorio.
>>>
>>> Estuve leyendo y vi a Java, Python y Ruby como los mas simples sin
>>> embargo estos lenguajes son interpretados. Osea, lo ideal sería crear
>>> programas con conexiones a bases de datos externas, por lo que debería
>>> incluir los datos de dicha conexión. El tema está en que los archivos
>>> de estos lenguajes quedan en el cliente, prácticamente sin
>>> modificación, por lo que quien quiera ir y ver los datos de conexión,
>>> ahí estarán.
>>
>> (...)
>>
>> Javascript para interfaces (sí, ahora está de moda), C/C++ con bindings
>> a GTK+/Qt y quizá le daría un ojo a Delphi/Pascal por su conexión con
>> las bdd.
>>
>>
> Soy bueno en JavaScript (estoy a un nivel avanzado, o eso creo); puedo
> diseñar interfaces en este lenguaje? Me podrías explicar como? Y con que
> lenguaje se complementaría... ojala no sea HTML o PHP (ni similares) ya
> que, si bien manejo ambos, la idea es crear la aplicación para
> escritorio, no Web.

Tengo entendido que Firefox o Gnome-Shell pintan las interfaces con 
javacript (html/css/xul), podrías empezar a buscar por ahí.

>> Java lo descartaría directamente.
>>
>>
> Porque?

Consume mucha memoria. Si se trata de una aplicación pequeña (ejecutar/
trabajar/procesar datos/cerrar) que cargue poca información podría pasar 
pero para algo más gordo si no la afinas bien te va a dejar la RAM tiesa.

>> En cuanto al tema de la seguridad (acceso al código con datos
>> sensibles) puedes usar el lenguaje de programación que más rabia te dé
>> para desarrollar el grueso de la aplicación y tira de bibliotecas C/C++
>> para enlazar con los datos que sean críticos.
>>
>>
> Dices que haga la conexión directamente? Eso contradice todos los
> mensajes anteriores, jajaja.

Sí, claro. 

¿Se trata de un trabajo para alguna alguna agencia de seguridad nacional? 
¿tienes requisitos que cumplir? No lo creo porque de lo contrario no 
estarías preguntando en la lista :-) Así que si tu sistema operativo, 
aplicaciones como Firefox o cualquier programa que guarde datos sensibles 
(p. ej., credenciales de acceso a servicios) almacena los datos 
localmente y además en algunos casos incluso en texto claro, no veo el 
problema.

Salvo que cifres el disco duro o los archivos tus datos son susceptibles 
de sufrir cualquier tipo de acceso no autorizado o procedimiento de 
ingeniería inversa. Punto.

Saludos,

-- 
Camaleón



Re: [OFF] Lenguajes de programación para escritorio

2016-02-11 Por tema Rafael Cantos Villanueva

Saludos

Rafa

El 11/02/2016 a las 15:20, alparkom . escribió:

El día 11 de febrero de 2016, 10:58, Rafael Cantos Villanueva
 escribió:

Saludos


Analiza los requisitos que requieres de capacidad y conexión del servidor,
así como de la base de datos. A partir de ahí, y viendo las capacidades de
los distintos sistemas de bases de datos y los servidores en el mercado,
podrás determinar qué opción es la mejor.




Claro. No es tanto por las capacidades de mis servidores, sino que
siempre se busca ocupar la menor cantidad de recursos. Mencionaste que
puedan guardar todos los datos requeridos, pero eso no va al tema en
sí; y se distribuir bien los recursos. En eso puedes estar tranquilo.

Mi único problema era ese, el de hacer las conexiones directas al
servidor en el software del cliente. Y veo que no es una forma.


OK



Gracias por las respuestas! A todos!


De nada, para eso estamos.



Y ya que estamos en esto de los lenguajes de programación, también
quiero aprender C++, tanto para crear aplicaciones de escritorio, como
de consola. Pero tengo varias dudas al respecto:

1.- Si creo una aplicación de escritorio en C++, podrá ser funcional
en otros SO aparte de Windows?


Esto depende de las librerías adicionales que tengas que usar. Existe en 
todo lenguaje de programación una parte que es estándar, que viene 
incluido en el propio lenguaje, y después librerías externas. Además, 
existen ciertas funciones que dependen del sistema operativo. Por 
ejemplo, si vas a tratar con el registro de Windows, este tipo de 
funciones y accesos en linux fallarían, si no lo tienes especificado 
para que solo se ejecuten si el sistema operativo es Windows.
Además, ten en cuenta que las rutas, tanto de instalación como de las 
carpetas de usuario, son distintas en Windows, Linux o Mac.

2.- Instalé una máquina virtual, y en ella Visual Studio Community
2015 para poder comenzar con C++. Supongo que programar en Linux para
consola es bastante fácil (solo con un editor de texto cualquiera mas
un compilador), pero para un software de escritorio? Que vendría a
reemplazar a Visual Studio en este ámbito?


Hay diferentes IDEs de programación que puedes usar. Yo hace tiempo que 
no programo en C++, pero sí te puedo decir que Eclipse soporta 
programación en este lenguaje.




Alguna otra que se me pasa justo ahora;


Bueno, una recomendación. Primero, cuando tengas claro qué usar, esto 
es, lenguaje de programación, librería gráfica, IDE de programación, 
etc, adquiere un libro (gratuito o de pago) que te sirva como manual de 
referencia y aprendizaje al mismo tiempo. Luego, zambúllete a fondo en 
aprender a programar en ese lenguaje siguiendo el ejemplo de dicho 
libro, y solo cuando tengas cierta soltura, lánzate a programar tu 
aplicación.
Por último, algunos lenguajes tienen sus propias listas de correo, como 
es el caso de python, donde se te podrá orientar mejor, así como 
resolver posibles problemas o dudas que te salgan.





---
El software de antivirus Avast ha analizado este correo electrónico en busca
de virus.
https://www.avast.com/antivirus





---
El software de antivirus Avast ha analizado este correo electrónico en busca de 
virus.
https://www.avast.com/antivirus



Re: [OFF] Lenguajes de programación para escritorio

2016-02-11 Por tema Jose Maldonado

El 11/02/16 a las 06:03, alparkom . escribió:


Venga, no han entendido lo que quiero.

Explicado de forma simple; si hago una conexión en Java, el archivo
.java tendrá los datos de conexión (en caso de usar MariaDB, se
debería escribir en el .java la dirección del servidor, el usuario de
MariaDB, la contraseña del mismo y el puerto usado)... entonces, que
pasa si descompila dicho el .class que genera Java? Tendrá los datos
de conexión al servidor de MariaDB y podrá hacer con ellos lo que
quiere, desde otra aplicación automática que ocupe la base de datos,
hasta eliminar toda la base de datos, y todo con una simple Query.
Si te referías a que cada "instalación" del software tenga una
conexión distinta a la base de datos (de esta forma, si se conecta al
servidor y elimina algo, se "auto-perjudicaría") no es una opción.

Con respecto a lo de Java, a que te refieres? Se supone que en un
software de escritorio, el programador lo hace accesible a las
personas con discapacidad, o sin esta.



Si mi profesor de Algoritmos leyera lo que acabas de escribir acá, 
seguro que te rebota el curso en el acto.


1.- Bajo ningún concepto debes poner información referente a la conexión 
de base de datos, usuarios y claves de acceso, dentro del código del 
programa. En su lugar esos datos deben estar en un archivo externo y de 
ser posible cifrados o hasheados de forma de hacer seguro su manejo.


2.- No importa el lenguaje de programación que uses (C/C++, Java, 
Python, Ada) si pones datos dentro del programa estos podrán ser 
accedidos usando las herramientas necesarias. Decompilar un binario te 
permite hacer lecturas del mismo y entonces podrán saber TODOS los datos 
que le has metido.


Esas dos simples razones, ya te dan mas de miles ideas por lo cual NO SE 
DEBE poner datos de una base de datos junto al resto de la autenticación 
en el código de los programas, de hecho, ningún programa serio hace una 
cosa así.


Ahora sobre "software de escritorio" TODO software puede ser diseñado 
para su uso en escritorio. Puedes usar el lenguaje que quieras y hacer 
que el programa que escribas tengo Accesibilidad para distintas 
diversidades motoras y audiovisuales, así que Java no es el único que 
puede hacer eso.





--
Dios en su Cielo, todo bien en la Tierra



Re: [OFF] Lenguajes de programación para escritorio

2016-02-11 Por tema alparkom .
El día 11 de febrero de 2016, 11:30, Camaleón  escribió:
> El Thu, 11 Feb 2016 00:42:22 -0300, alparkom . escribió:
>
>> Buenas chicos;
>>
>> Estoy interesado en aprender algún lenguaje de programación para crear
>> aplicaciones de escritorio.
>>
>> Estuve leyendo y vi a Java, Python y Ruby como los mas simples sin
>> embargo estos lenguajes son interpretados. Osea, lo ideal sería crear
>> programas con conexiones a bases de datos externas, por lo que debería
>> incluir los datos de dicha conexión. El tema está en que los archivos de
>> estos lenguajes quedan en el cliente, prácticamente sin modificación,
>> por lo que quien quiera ir y ver los datos de conexión, ahí estarán.
>
> (...)
>
> Javascript para interfaces (sí, ahora está de moda), C/C++ con bindings a
> GTK+/Qt y quizá le daría un ojo a Delphi/Pascal por su conexión con las
> bdd.
>

Soy bueno en JavaScript (estoy a un nivel avanzado, o eso creo); puedo
diseñar interfaces en este lenguaje? Me podrías explicar como? Y con
que lenguaje se complementaría... ojala no sea HTML o PHP (ni
similares) ya que, si bien manejo ambos, la idea es crear la
aplicación para escritorio, no Web.

> Java lo descartaría directamente.
>

Porque?

> En cuanto al tema de la seguridad (acceso al código con datos sensibles)
> puedes usar el lenguaje de programación que más rabia te dé para
> desarrollar el grueso de la aplicación y tira de bibliotecas C/C++ para
> enlazar con los datos que sean críticos.
>

Dices que haga la conexión directamente? Eso contradice todos los
mensajes anteriores, jajaja.

> Saludos,
>
> --
> Camaleón
>



Re: [OFF] Lenguajes de programación para escritorio

2016-02-11 Por tema Camaleón
El Thu, 11 Feb 2016 00:42:22 -0300, alparkom . escribió:

> Buenas chicos;
> 
> Estoy interesado en aprender algún lenguaje de programación para crear
> aplicaciones de escritorio.
> 
> Estuve leyendo y vi a Java, Python y Ruby como los mas simples sin
> embargo estos lenguajes son interpretados. Osea, lo ideal sería crear
> programas con conexiones a bases de datos externas, por lo que debería
> incluir los datos de dicha conexión. El tema está en que los archivos de
> estos lenguajes quedan en el cliente, prácticamente sin modificación,
> por lo que quien quiera ir y ver los datos de conexión, ahí estarán.

(...)

Javascript para interfaces (sí, ahora está de moda), C/C++ con bindings a 
GTK+/Qt y quizá le daría un ojo a Delphi/Pascal por su conexión con las 
bdd.

Java lo descartaría directamente.

En cuanto al tema de la seguridad (acceso al código con datos sensibles) 
puedes usar el lenguaje de programación que más rabia te dé para 
desarrollar el grueso de la aplicación y tira de bibliotecas C/C++ para 
enlazar con los datos que sean críticos.

Saludos,

-- 
Camaleón



Re: [OFF] Lenguajes de programación para escritorio

2016-02-11 Por tema Juan Lavieri
Hola.

Yo no conozco mucho sobre desarrollo de aplicaciones, pero me parece que es
un asunto de diseño, mas que de lenguaje.

Me explico.

Yo soy el usuario Juan, que voy a ejecutar un programa que tu escribiste,
para manipular los datos que está administrando digamos Luis Felipe.

El trabajo de tu programa se limita a manipular los datos de la forma como
tu lo deseas y de transferirle a la base de datos quién está intentando
hacer eso, o sea Juan.  Pero tu programa no tiene que tener una tabla que
por ejemplo diga:  Juan, puede hacer esto, Pepe, lo otro, etc.  Simplemente
pasa como parámetro la identificación de aquel que está ejecutando el
programa, o sea yo;  para eso tuve que haber dado login en algún sitio y es
allí donde se sabe que soy yo.  Luego  la responsabilidd de todo lo que
pase en el acceso a los datos es el que administra el acceso a la misma, en
este caso Luis Felipe.  El programa no tiene que contener en su código
ningún dato de los usuarios que acceden al mismo, en ese caso habría que
estar reescribiéndolos cada vez que cambiamos a los usuarios.  Bueno si
trabajas para una empresa y diseñas un sistema así, tendrás trabajo por
años :-).

Por supuesto es mucho mas profundo que eso, pero es a manera ilustrativa.

Aquí tienes algo por donde empezar, aunque esto es tema para un foro de
programación.

http://html.rincondelvago.com/seguridad-en-bases-de-datos.html

Saludos

El 11 de febrero de 2016, 9:28, Rafael Cantos Villanueva <
raf...@rafaelcantos.es> escribió:

> Saludos
>
> Rafa
>
> El 11/02/2016 a las 14:24, alparkom . escribió:
>
>> El día 11 de febrero de 2016, 10:14, German Cardozo
>>  escribió:
>>
>>>
>>> On Feb 11, 2016 7:38 AM, "Rafael Cantos Villanueva" <
>>> raf...@rafaelcantos.es>
>>> wrote:
>>>

 Saludos

 Rafa



 El 11/02/2016 a las 12:28, alparkom . escribió:

>
> El día 11 de febrero de 2016, 8:01, Luis Felipe Tabera Alonso
>  escribió:
>
>>
>> On Thursday 11 February 2016 07:33:51 alparkom . wrote:
>>
>>>
>>> Explicado de forma simple; si hago una conexión en Java, el archivo
>>> .java tendrá los datos de conexión (en caso de usar MariaDB, se
>>> debería escribir en el .java la dirección del servidor, el usuario de
>>> MariaDB, la contraseña del mismo y el puerto usado)... entonces, que
>>> pasa si descompila dicho el .class que genera Java?
>>>
>>
>>
>> Lo estás haciendo mal, si el programa tiene todos esos datos 'tal
>> cual',
>> te va
>> a dar igual el lenguaje de programación, compilado o no. Un usuario
>> malicioso
>> podrá obtenerlos. ¿Quién se supone que tiene acceso a la BD? ¿Solo
>> usuarios?
>> ¿Solo el programa? El usuario/programa que acceda a la BD ¿Puede hacer
>> con
>> ella lo que quiera? ¿debería poder?
>>
>>
> Se supone que C++ es compilado a código máquina, y es imposible
> obtener el código de este lenguaje una vez compilado por lo que no
> podrían obtener los datos.
>


 Te equivocas, yo te lo vuelvo a repetir. Da igual que el programa sea
 compilado o no, se puede descompilar igualmente y acceder a los datos.


>>> +1
>>>
>>>
>> Vale. Eso es ingeniería inversa, no? También quiero aprender eso,
>> suena interesante.
>>
>>
> Se supone que el software debería tener acceso a la base de datos. Si
> puede hacer lo que quiera es un sí, aunque dudo importe demasiado la
> respuesta a esta pregunta.
>
> Entonces como lo hacen softwares como algunos Adobe, donde debes
> iniciar sesión para ocupar varios de sus productos? Con HTTP?
>


 Como te indicaba en otra respuesta, centra la seguridad en la base de
 datos y el servidor. Una opción es esta, enviar por htp, o mejor aún por
 https, emplear sockets, etc, una solicitud de acceso al servidor, con un
 usuario y contraseña. Desde el servidor, se realiza una conexión a la
 base
 de datos, con los datos almacenados de dicha conexión en el servidor, y
 autenticar al usuario. Una vez que lo has autenticado, puedes devolver
 un
 tokken de conexión que valide las comunicaciones realizadas entre ese
 usuario y el servidor a través de la aplicación. Esto, si te fijas, es
 igual
 que cuando accedes a un servicio web introduciendo tu usuario y
 contraseña
 desde un navegador web.


>>> Si lo que quieres es una aplicación cliente-servidor, donde el cliente se
>>> ejecute desde la estación como una aplicación instalable, y además
>>> requieres
>>> (tus argumentos tendrás para ello) que se use conexiones a la Base de
>>> Datos
>>>
>>
>> Mis argumentos? Suponiendo que tengo 50 mil personas distintas con el
>> software instalado, tendré 50 mil usuarios en la base de datos... no
>> crees que eso es demasiado?
>>
>> No hablo de columnas de una tabla, sino de usuarios de la base de datos...
>>
>
> Si tienes una base de datos con acceso de 5 usuari

Re: [OFF] Lenguajes de programación para escritorio

2016-02-11 Por tema alparkom .
El día 11 de febrero de 2016, 10:58, Rafael Cantos Villanueva
 escribió:
> Saludos
>
>
> Analiza los requisitos que requieres de capacidad y conexión del servidor,
> así como de la base de datos. A partir de ahí, y viendo las capacidades de
> los distintos sistemas de bases de datos y los servidores en el mercado,
> podrás determinar qué opción es la mejor.
>
>

Claro. No es tanto por las capacidades de mis servidores, sino que
siempre se busca ocupar la menor cantidad de recursos. Mencionaste que
puedan guardar todos los datos requeridos, pero eso no va al tema en
sí; y se distribuir bien los recursos. En eso puedes estar tranquilo.

Mi único problema era ese, el de hacer las conexiones directas al
servidor en el software del cliente. Y veo que no es una forma.

Gracias por las respuestas! A todos!

Y ya que estamos en esto de los lenguajes de programación, también
quiero aprender C++, tanto para crear aplicaciones de escritorio, como
de consola. Pero tengo varias dudas al respecto:

1.- Si creo una aplicación de escritorio en C++, podrá ser funcional
en otros SO aparte de Windows?
2.- Instalé una máquina virtual, y en ella Visual Studio Community
2015 para poder comenzar con C++. Supongo que programar en Linux para
consola es bastante fácil (solo con un editor de texto cualquiera mas
un compilador), pero para un software de escritorio? Que vendría a
reemplazar a Visual Studio en este ámbito?

Alguna otra que se me pasa justo ahora;

> ---
> El software de antivirus Avast ha analizado este correo electrónico en busca
> de virus.
> https://www.avast.com/antivirus
>



Re: [OFF] Lenguajes de programación para escritorio

2016-02-11 Por tema Rafael Cantos Villanueva

Saludos

Rafa
El 11/02/2016 a las 14:24, alparkom . escribió:

El día 11 de febrero de 2016, 10:14, German Cardozo
 escribió:


On Feb 11, 2016 7:38 AM, "Rafael Cantos Villanueva" 
wrote:


Saludos

Rafa



El 11/02/2016 a las 12:28, alparkom . escribió:


El día 11 de febrero de 2016, 8:01, Luis Felipe Tabera Alonso
 escribió:


On Thursday 11 February 2016 07:33:51 alparkom . wrote:


Explicado de forma simple; si hago una conexión en Java, el archivo
.java tendrá los datos de conexión (en caso de usar MariaDB, se
debería escribir en el .java la dirección del servidor, el usuario de
MariaDB, la contraseña del mismo y el puerto usado)... entonces, que
pasa si descompila dicho el .class que genera Java?



Lo estás haciendo mal, si el programa tiene todos esos datos 'tal cual',
te va
a dar igual el lenguaje de programación, compilado o no. Un usuario
malicioso
podrá obtenerlos. ¿Quién se supone que tiene acceso a la BD? ¿Solo
usuarios?
¿Solo el programa? El usuario/programa que acceda a la BD ¿Puede hacer
con
ella lo que quiera? ¿debería poder?



Se supone que C++ es compilado a código máquina, y es imposible
obtener el código de este lenguaje una vez compilado por lo que no
podrían obtener los datos.



Te equivocas, yo te lo vuelvo a repetir. Da igual que el programa sea
compilado o no, se puede descompilar igualmente y acceder a los datos.



+1



Vale. Eso es ingeniería inversa, no? También quiero aprender eso,
suena interesante.



Se supone que el software debería tener acceso a la base de datos. Si
puede hacer lo que quiera es un sí, aunque dudo importe demasiado la
respuesta a esta pregunta.

Entonces como lo hacen softwares como algunos Adobe, donde debes
iniciar sesión para ocupar varios de sus productos? Con HTTP?



Como te indicaba en otra respuesta, centra la seguridad en la base de
datos y el servidor. Una opción es esta, enviar por htp, o mejor aún por
https, emplear sockets, etc, una solicitud de acceso al servidor, con un
usuario y contraseña. Desde el servidor, se realiza una conexión a la base
de datos, con los datos almacenados de dicha conexión en el servidor, y
autenticar al usuario. Una vez que lo has autenticado, puedes devolver un
tokken de conexión que valide las comunicaciones realizadas entre ese
usuario y el servidor a través de la aplicación. Esto, si te fijas, es igual
que cuando accedes a un servicio web introduciendo tu usuario y contraseña
desde un navegador web.



Si lo que quieres es una aplicación cliente-servidor, donde el cliente se
ejecute desde la estación como una aplicación instalable, y además requieres
(tus argumentos tendrás para ello) que se use conexiones a la Base de Datos


Mis argumentos? Suponiendo que tengo 50 mil personas distintas con el
software instalado, tendré 50 mil usuarios en la base de datos... no
crees que eso es demasiado?

No hablo de columnas de una tabla, sino de usuarios de la base de datos...


Si tienes una base de datos con acceso de 5 usuarios diferentes, 
simplemente necesitarásuna base de datos que te permita albergar ese 
número de usuarios, con un hosting que soporte sin problemas ese número 
de conexiones. El número de usuarios no es un problema en sí mismo. Todo 
dependerá de que utilices una base de datos apropiada, con la capacidad 
suficiente para albergar los datos personales de los usuarios (correo, 
contraseña, nombre, etc) y un servidor que te permita servir el número 
de conexiones que requieres.






mediante un único usuario, mi recomendación es mediar con una capa entre el
cliente y la BD que exponga la interfaz que deseas que conozca el cliente.
Dicha capa se encargará de la funcionalidad, la autenticación y la seguridad
entre otros, y allí implementar el protocolo que más convenga.

La comunicación con la base de datos quedará bajo este "Middleware", y
podrás protegerle mediante firewall u otras medidas, dependiendo de tus
recursos y arquitectura.

Varios lenguajes tienen facilidades para crear estos componentes, exponiendo
mediante "buses de servicio" u otros elementos, un API. Puedes desarrollar
además uno propio, pero todo dependerá del alcance propuesto para la
aplicación, como por ejemplo, hacer uso de estándares como SOA. Estas
tecnologías no son exclusivas de los servicios WEB, aunque su uso este más
extendido en ese campo.

Con este componente mediando entre tus clientes y el modelo de datos, puedes
desacoplar el desarrollo de este, haciendo uso incluso de un lenguaje de
programación distinto al usado en el servidor, y disponer de clientes para
diferentes sistemas operativos, dispositivos o situaciones como
requerimientos de accesibilidad.

Siempre encontrarás problemas de seguridad a resolver, pero todo dependerá
de los requerimientos exigidos y hasta donde estés dispuesto a ceder y
tolerar.


Vale. Veo que ni un solo lenguaje haría lo que yo quiero (aunque
pensándolo bien, era obvio).
La solución creo que será que el cliente tenga una base de datos
propia y que cada cierto tiempo se compare con l

Re: [OFF] Lenguajes de programación para escritorio

2016-02-11 Por tema Francisco SG
El 11 de febrero de 2016, 14:24, alparkom .  escribió:
>
> El día 11 de febrero de 2016, 10:14, German Cardozo
>  escribió:
> >
> > On Feb 11, 2016 7:38 AM, "Rafael Cantos Villanueva" 
> > wrote:
> >>
> >> Saludos
> >>
> >> Rafa
> >>
> >>
> >>
> >> El 11/02/2016 a las 12:28, alparkom . escribió:
> >>>
> >>> El día 11 de febrero de 2016, 8:01, Luis Felipe Tabera Alonso
> >>>  escribió:
> 
>  On Thursday 11 February 2016 07:33:51 alparkom . wrote:
> >
> > Explicado de forma simple; si hago una conexión en Java, el archivo
> > .java tendrá los datos de conexión (en caso de usar MariaDB, se
> > debería escribir en el .java la dirección del servidor, el usuario de
> > MariaDB, la contraseña del mismo y el puerto usado)... entonces, que
> > pasa si descompila dicho el .class que genera Java?
> 
> 
>  Lo estás haciendo mal, si el programa tiene todos esos datos 'tal cual',
>  te va
>  a dar igual el lenguaje de programación, compilado o no. Un usuario
>  malicioso
>  podrá obtenerlos. ¿Quién se supone que tiene acceso a la BD? ¿Solo
>  usuarios?
>  ¿Solo el programa? El usuario/programa que acceda a la BD ¿Puede hacer
>  con
>  ella lo que quiera? ¿debería poder?
> 
> >>>
> >>> Se supone que C++ es compilado a código máquina, y es imposible
> >>> obtener el código de este lenguaje una vez compilado por lo que no
> >>> podrían obtener los datos.
> >>
> >>
> >> Te equivocas, yo te lo vuelvo a repetir. Da igual que el programa sea
> >> compilado o no, se puede descompilar igualmente y acceder a los datos.
> >>
> >
> > +1
> >
>
> Vale. Eso es ingeniería inversa, no? También quiero aprender eso,
> suena interesante.
>

Hola, hola

Sólo queía completar las respuestas de Rafael y German con un ejemplo
práctico y desmontar por completo esa  idea de que en código del
programa (fuente, objeto, etc) es un buen lugar donde almacenar
cualquier cosa que no sea... código ;-)

Hagamos un ejemplo muy sencillo en C

int main()
{
char string1[] = "Hello World";
char string2[] = "clavesecreta";
return 0;
}

Lo compilamos, etc, etc... y obtenemos nuestro ejecutable, vamos a ver
que ha pasado con nuestra clave. En el interior de nuestro ejecutable
encontramos esto

(...)
0001720 20 c7 45 f4 48 65 6c 6c c7 45 f8 6f 20 57 6f c7  > .E.Hell.E.o Wo.<
0001740 45 fc 72 6c 64 00 c7 45 e7 63 6c 61 76 c7 45 eb  >E.rld..E.clav.E.<
0001760 65 73 65 63 c7 45 ef 72 65 74 61 c6 45 f3 00 b8  >esec.E.reta.E...<
0002000 00 00 00 00 c9 c3 66 90 66 90 66 90 66 90 66 90  >..f.f.f.f.f.<
(...)

Decididamente no es un buen sitio para guardar unas credenciales salvo
que las cifres por ejemplo, en cuyo caso... ¿para que hacer
dependiente esto de la compilación del programa?.


>
> >>>
> >>> Se supone que el software debería tener acceso a la base de datos. Si
> >>> puede hacer lo que quiera es un sí, aunque dudo importe demasiado la
> >>> respuesta a esta pregunta.
> >>>
> >>> Entonces como lo hacen softwares como algunos Adobe, donde debes
> >>> iniciar sesión para ocupar varios de sus productos? Con HTTP?
> >>
> >>
> >> Como te indicaba en otra respuesta, centra la seguridad en la base de
> >> datos y el servidor. Una opción es esta, enviar por htp, o mejor aún por
> >> https, emplear sockets, etc, una solicitud de acceso al servidor, con un
> >> usuario y contraseña. Desde el servidor, se realiza una conexión a la base
> >> de datos, con los datos almacenados de dicha conexión en el servidor, y
> >> autenticar al usuario. Una vez que lo has autenticado, puedes devolver un
> >> tokken de conexión que valide las comunicaciones realizadas entre ese
> >> usuario y el servidor a través de la aplicación. Esto, si te fijas, es 
> >> igual
> >> que cuando accedes a un servicio web introduciendo tu usuario y contraseña
> >> desde un navegador web.
> >>
> >
> > Si lo que quieres es una aplicación cliente-servidor, donde el cliente se
> > ejecute desde la estación como una aplicación instalable, y además requieres
> > (tus argumentos tendrás para ello) que se use conexiones a la Base de Datos
>
> Mis argumentos? Suponiendo que tengo 50 mil personas distintas con el
> software instalado, tendré 50 mil usuarios en la base de datos... no
> crees que eso es demasiado?
>
> No hablo de columnas de una tabla, sino de usuarios de la base de datos...
>
> > mediante un único usuario, mi recomendación es mediar con una capa entre el
> > cliente y la BD que exponga la interfaz que deseas que conozca el cliente.
> > Dicha capa se encargará de la funcionalidad, la autenticación y la seguridad
> > entre otros, y allí implementar el protocolo que más convenga.
> >
> > La comunicación con la base de datos quedará bajo este "Middleware", y
> > podrás protegerle mediante firewall u otras medidas, dependiendo de tus
> > recursos y arquitectura.
> >
> > Varios lenguajes tienen facilidades para crear estos componentes, exponiendo
> > mediante "buses de servicio" u otros elementos, un API. Pu

Re: Entorno antiguo.

2016-02-11 Por tema Luis E. Arevalo R.
El 10 de febrero de 2016, 6:29, Jose Luis Quiroga Rodriguez 
escribió:

> Estimados amigos
> Os envío este correo por que ando buscando como loco un antiguo entorno de
> escritorio de allá a mediados de los 90. Básicamente era de estilo gótico y
> negro, muy bien decorado y precioso, no prosperó debido a que por aquel
> entonces las máquinas eran muy lentas.
> A ver si me podéis echar una mano.
> Un grato saludo debianita.
>

Yo utilicé por mucho tiempo un entorno llamado Ion [1], el cual conocí el
2004 en un encuentro Linux desarrollado en Chile, y era utilizado por el
entonces líder del proyecto Debian, Martin Michlmayr. Lo encontraba muy
sencillo y útil, y si no estuviera abandonado, lo seguiría utilizando :-(

¿Será ese?

[1] http://tuomov.iki.fi/software/

-- 
Luis Eduardo Arevalo ReyesUser #354770
http://linuxcounter.net
Fono +56 9 54012831
http://www.luchox.cl


Re: [OFF] Lenguajes de programación para escritorio

2016-02-11 Por tema alparkom .
El día 11 de febrero de 2016, 10:14, German Cardozo
 escribió:
>
> On Feb 11, 2016 7:38 AM, "Rafael Cantos Villanueva" 
> wrote:
>>
>> Saludos
>>
>> Rafa
>>
>>
>>
>> El 11/02/2016 a las 12:28, alparkom . escribió:
>>>
>>> El día 11 de febrero de 2016, 8:01, Luis Felipe Tabera Alonso
>>>  escribió:

 On Thursday 11 February 2016 07:33:51 alparkom . wrote:
>
> Explicado de forma simple; si hago una conexión en Java, el archivo
> .java tendrá los datos de conexión (en caso de usar MariaDB, se
> debería escribir en el .java la dirección del servidor, el usuario de
> MariaDB, la contraseña del mismo y el puerto usado)... entonces, que
> pasa si descompila dicho el .class que genera Java?


 Lo estás haciendo mal, si el programa tiene todos esos datos 'tal cual',
 te va
 a dar igual el lenguaje de programación, compilado o no. Un usuario
 malicioso
 podrá obtenerlos. ¿Quién se supone que tiene acceso a la BD? ¿Solo
 usuarios?
 ¿Solo el programa? El usuario/programa que acceda a la BD ¿Puede hacer
 con
 ella lo que quiera? ¿debería poder?

>>>
>>> Se supone que C++ es compilado a código máquina, y es imposible
>>> obtener el código de este lenguaje una vez compilado por lo que no
>>> podrían obtener los datos.
>>
>>
>> Te equivocas, yo te lo vuelvo a repetir. Da igual que el programa sea
>> compilado o no, se puede descompilar igualmente y acceder a los datos.
>>
>
> +1
>

Vale. Eso es ingeniería inversa, no? También quiero aprender eso,
suena interesante.

>>>
>>> Se supone que el software debería tener acceso a la base de datos. Si
>>> puede hacer lo que quiera es un sí, aunque dudo importe demasiado la
>>> respuesta a esta pregunta.
>>>
>>> Entonces como lo hacen softwares como algunos Adobe, donde debes
>>> iniciar sesión para ocupar varios de sus productos? Con HTTP?
>>
>>
>> Como te indicaba en otra respuesta, centra la seguridad en la base de
>> datos y el servidor. Una opción es esta, enviar por htp, o mejor aún por
>> https, emplear sockets, etc, una solicitud de acceso al servidor, con un
>> usuario y contraseña. Desde el servidor, se realiza una conexión a la base
>> de datos, con los datos almacenados de dicha conexión en el servidor, y
>> autenticar al usuario. Una vez que lo has autenticado, puedes devolver un
>> tokken de conexión que valide las comunicaciones realizadas entre ese
>> usuario y el servidor a través de la aplicación. Esto, si te fijas, es igual
>> que cuando accedes a un servicio web introduciendo tu usuario y contraseña
>> desde un navegador web.
>>
>
> Si lo que quieres es una aplicación cliente-servidor, donde el cliente se
> ejecute desde la estación como una aplicación instalable, y además requieres
> (tus argumentos tendrás para ello) que se use conexiones a la Base de Datos

Mis argumentos? Suponiendo que tengo 50 mil personas distintas con el
software instalado, tendré 50 mil usuarios en la base de datos... no
crees que eso es demasiado?

No hablo de columnas de una tabla, sino de usuarios de la base de datos...

> mediante un único usuario, mi recomendación es mediar con una capa entre el
> cliente y la BD que exponga la interfaz que deseas que conozca el cliente.
> Dicha capa se encargará de la funcionalidad, la autenticación y la seguridad
> entre otros, y allí implementar el protocolo que más convenga.
>
> La comunicación con la base de datos quedará bajo este "Middleware", y
> podrás protegerle mediante firewall u otras medidas, dependiendo de tus
> recursos y arquitectura.
>
> Varios lenguajes tienen facilidades para crear estos componentes, exponiendo
> mediante "buses de servicio" u otros elementos, un API. Puedes desarrollar
> además uno propio, pero todo dependerá del alcance propuesto para la
> aplicación, como por ejemplo, hacer uso de estándares como SOA. Estas
> tecnologías no son exclusivas de los servicios WEB, aunque su uso este más
> extendido en ese campo.
>
> Con este componente mediando entre tus clientes y el modelo de datos, puedes
> desacoplar el desarrollo de este, haciendo uso incluso de un lenguaje de
> programación distinto al usado en el servidor, y disponer de clientes para
> diferentes sistemas operativos, dispositivos o situaciones como
> requerimientos de accesibilidad.
>
> Siempre encontrarás problemas de seguridad a resolver, pero todo dependerá
> de los requerimientos exigidos y hasta donde estés dispuesto a ceder y
> tolerar.

Vale. Veo que ni un solo lenguaje haría lo que yo quiero (aunque
pensándolo bien, era obvio).
La solución creo que será que el cliente tenga una base de datos
propia y que cada cierto tiempo se compare con la del servidor y se
actualicen unas a otras.

Entonces, conectar C++, Java, entre otros, a bases de datos como MySQL
o MariaDB, no sirve de mucho? Excluyendo a SQLite obviamente.



Re: [OFF] Lenguajes de programación para escritorio

2016-02-11 Por tema German Cardozo
On Feb 11, 2016 7:38 AM, "Rafael Cantos Villanueva" 
wrote:
>
> Saludos
>
> Rafa
>
>
>
> El 11/02/2016 a las 12:28, alparkom . escribió:
>>
>> El día 11 de febrero de 2016, 8:01, Luis Felipe Tabera Alonso
>>  escribió:
>>>
>>> On Thursday 11 February 2016 07:33:51 alparkom . wrote:

 Explicado de forma simple; si hago una conexión en Java, el archivo
 .java tendrá los datos de conexión (en caso de usar MariaDB, se
 debería escribir en el .java la dirección del servidor, el usuario de
 MariaDB, la contraseña del mismo y el puerto usado)... entonces, que
 pasa si descompila dicho el .class que genera Java?
>>>
>>>
>>> Lo estás haciendo mal, si el programa tiene todos esos datos 'tal
cual', te va
>>> a dar igual el lenguaje de programación, compilado o no. Un usuario
malicioso
>>> podrá obtenerlos. ¿Quién se supone que tiene acceso a la BD? ¿Solo
usuarios?
>>> ¿Solo el programa? El usuario/programa que acceda a la BD ¿Puede hacer
con
>>> ella lo que quiera? ¿debería poder?
>>>
>>
>> Se supone que C++ es compilado a código máquina, y es imposible
>> obtener el código de este lenguaje una vez compilado por lo que no
>> podrían obtener los datos.
>
>
> Te equivocas, yo te lo vuelvo a repetir. Da igual que el programa sea
compilado o no, se puede descompilar igualmente y acceder a los datos.
>

+1

>>
>> Se supone que el software debería tener acceso a la base de datos. Si
>> puede hacer lo que quiera es un sí, aunque dudo importe demasiado la
>> respuesta a esta pregunta.
>>
>> Entonces como lo hacen softwares como algunos Adobe, donde debes
>> iniciar sesión para ocupar varios de sus productos? Con HTTP?
>
>
> Como te indicaba en otra respuesta, centra la seguridad en la base de
datos y el servidor. Una opción es esta, enviar por htp, o mejor aún por
https, emplear sockets, etc, una solicitud de acceso al servidor, con un
usuario y contraseña. Desde el servidor, se realiza una conexión a la base
de datos, con los datos almacenados de dicha conexión en el servidor, y
autenticar al usuario. Una vez que lo has autenticado, puedes devolver un
tokken de conexión que valide las comunicaciones realizadas entre ese
usuario y el servidor a través de la aplicación. Esto, si te fijas, es
igual que cuando accedes a un servicio web introduciendo tu usuario y
contraseña desde un navegador web.
>

Si lo que quieres es una aplicación cliente-servidor, donde el cliente se
ejecute desde la estación como una aplicación instalable, y además
requieres (tus argumentos tendrás para ello) que se use conexiones a la
Base de Datos mediante un único usuario, mi recomendación es mediar con una
capa entre el cliente y la BD que exponga la interfaz que deseas que
conozca el cliente. Dicha capa se encargará de la funcionalidad, la
autenticación y la seguridad entre otros, y allí implementar el protocolo
que más convenga.

La comunicación con la base de datos quedará bajo este "Middleware", y
podrás protegerle mediante firewall u otras medidas, dependiendo de tus
recursos y arquitectura.

Varios lenguajes tienen facilidades para crear estos componentes,
exponiendo mediante "buses de servicio" u otros elementos, un API. Puedes
desarrollar además uno propio, pero todo dependerá del alcance propuesto
para la aplicación, como por ejemplo, hacer uso de estándares como SOA.
Estas tecnologías no son exclusivas de los servicios WEB, aunque su uso
este más extendido en ese campo.

Con este componente mediando entre tus clientes y el modelo de datos,
puedes desacoplar el desarrollo de este, haciendo uso incluso de un
lenguaje de programación distinto al usado en el servidor, y disponer de
clientes para diferentes sistemas operativos, dispositivos o situaciones
como requerimientos de accesibilidad.

Siempre encontrarás problemas de seguridad a resolver, pero todo dependerá
de los requerimientos exigidos y hasta donde estés dispuesto a ceder y
tolerar.


Re: [OFF] Lenguajes de programación para escritorio

2016-02-11 Por tema Rafael Cantos Villanueva

Saludos

Rafa


El 11/02/2016 a las 12:28, alparkom . escribió:

El día 11 de febrero de 2016, 8:01, Luis Felipe Tabera Alonso
 escribió:

On Thursday 11 February 2016 07:33:51 alparkom . wrote:

Explicado de forma simple; si hago una conexión en Java, el archivo
.java tendrá los datos de conexión (en caso de usar MariaDB, se
debería escribir en el .java la dirección del servidor, el usuario de
MariaDB, la contraseña del mismo y el puerto usado)... entonces, que
pasa si descompila dicho el .class que genera Java?


Lo estás haciendo mal, si el programa tiene todos esos datos 'tal cual', te va
a dar igual el lenguaje de programación, compilado o no. Un usuario malicioso
podrá obtenerlos. ¿Quién se supone que tiene acceso a la BD? ¿Solo usuarios?
¿Solo el programa? El usuario/programa que acceda a la BD ¿Puede hacer con
ella lo que quiera? ¿debería poder?



Se supone que C++ es compilado a código máquina, y es imposible
obtener el código de este lenguaje una vez compilado por lo que no
podrían obtener los datos.


Te equivocas, yo te lo vuelvo a repetir. Da igual que el programa sea 
compilado o no, se puede descompilar igualmente y acceder a los datos.


Se supone que el software debería tener acceso a la base de datos. Si
puede hacer lo que quiera es un sí, aunque dudo importe demasiado la
respuesta a esta pregunta.

Entonces como lo hacen softwares como algunos Adobe, donde debes
iniciar sesión para ocupar varios de sus productos? Con HTTP?


Como te indicaba en otra respuesta, centra la seguridad en la base de 
datos y el servidor. Una opción es esta, enviar por htp, o mejor aún por 
https, emplear sockets, etc, una solicitud de acceso al servidor, con un 
usuario y contraseña. Desde el servidor, se realiza una conexión a la 
base de datos, con los datos almacenados de dicha conexión en el 
servidor, y autenticar al usuario. Una vez que lo has autenticado, 
puedes devolver un tokken de conexión que valide las comunicaciones 
realizadas entre ese usuario y el servidor a través de la aplicación. 
Esto, si te fijas, es igual que cuando accedes a un servicio web 
introduciendo tu usuario y contraseña desde un navegador web.





Luis





---
El software de antivirus Avast ha analizado este correo electrónico en busca de 
virus.
https://www.avast.com/antivirus



Re: [OFF] Lenguajes de programación para escritorio

2016-02-11 Por tema Rafael Cantos Villanueva


El 11/02/2016 a las 12:01, Luis Felipe Tabera Alonso escribió:

On Thursday 11 February 2016 07:33:51 alparkom . wrote:

Explicado de forma simple; si hago una conexión en Java, el archivo
.java tendrá los datos de conexión (en caso de usar MariaDB, se
debería escribir en el .java la dirección del servidor, el usuario de
MariaDB, la contraseña del mismo y el puerto usado)... entonces, que
pasa si descompila dicho el .class que genera Java?


Lo estás haciendo mal, si el programa tiene todos esos datos 'tal cual', te va
a dar igual el lenguaje de programación, compilado o no. Un usuario malicioso
podrá obtenerlos. ¿Quién se supone que tiene acceso a la BD? ¿Solo usuarios?
¿Solo el programa? El usuario/programa que acceda a la BD ¿Puede hacer con
ella lo que quiera? ¿debería poder?

Luis



	Efectivamente Luís, es lo que he querido transmitirle, que aunque sea 
compilado el programa, un usuario malicioso puede llegar hasta los 
datos, por mucho que él haga, y que los esfuerzos tiene que centrarlos 
en la base de datos.
Alparkom, he entendido perfectamente lo que quieres decir, desde un 
principio. Creo que el que no lo ha comprendido bien eres tú. Por mucho 
que hagas, se puede llegar a los datos. Existen formas de descompilar 
programas compilados, como es C++.
La seguridad tienes que hacerla en la base de datos en el servidor, de 
forma que el acceso sea por usuarios, para empezar. Cada instancia de la 
aplicación, instaladas en distintos ordenadores, debes hacerla con 
acceso de usuario y contraseña, el cuál es un usuario y contraseña 
distinto al usuario y contraseña de la  base de datos. Si algún usuario 
malintencionado obtiene los datos de conexión de la bd, solo puedes 
asegurar los datos haciendo copias de seguridad, por ejemplo, diarias.
El problema que planteas es hacer inaccesibles los datos de conexión 
desde una aplicación de escritorio. Y la respuesta es que, por mucho que 
hagas y quieras, si un usuario malintencionado con los conocimientos 
necesarios quiere obtener los datos de conexión, lo va a hacer. Por eso 
te digo que tienes que centrar la seguridad en la base de datos, en el 
servidor, y realizar copias diarias de la base de datos.


Por otra parte, la accesibilidad no sólo depende del programador, sino 
de que el lenguaje de programación, y más concrétamente la librería 
gráfica que utilices, proporcione los métodos necesarios para lograr 
este fin. Y en este sentido, java es de los lenguajes de programación 
que crean más problemas de accesibilidad, y por lo que lo descarto para 
software de escritorio. Genera problemas en sistemas Windows o Linux, a 
este respecto, pero sin embargo Android utiliza este lenguaje y las 
aplicaciones son accesibles, si se hacen bien, porque la interfaz 
gráfica de usuario no es java.


Otra cuestión que tienes que tener en cuenta, es que ya uses python, C++ 
u otro lenguaje, para implementar una aplicación con interfaz gráfica de 
usuario (esto es, con ventanas, botones, etc), tendrás que utilizar una 
librería gráfica, ya sea GTK, QT, Wx, etc. Los lenguajes de programación 
tienen sus bindings para poder usar dichas librerías. Así por ejemplo, 
python tiene pygtk, para gek, pyqt, para qt, pywx, para wx, etc. Estas 
librerías son paquetes complementarios que tienes que instalar, aparte 
de las herramientas propias de python. Y cuando hablo de python, como en 
el ejemplo, sucede lo mismo para otros lenguajes como C++, pues esto no 
depende del lenguaje en sí.


---
El software de antivirus Avast ha analizado este correo electrónico en busca de 
virus.
https://www.avast.com/antivirus



Re: [OFF] Lenguajes de programación para escritorio

2016-02-11 Por tema alparkom .
El día 11 de febrero de 2016, 8:01, Luis Felipe Tabera Alonso
 escribió:
> On Thursday 11 February 2016 07:33:51 alparkom . wrote:
>> Explicado de forma simple; si hago una conexión en Java, el archivo
>> .java tendrá los datos de conexión (en caso de usar MariaDB, se
>> debería escribir en el .java la dirección del servidor, el usuario de
>> MariaDB, la contraseña del mismo y el puerto usado)... entonces, que
>> pasa si descompila dicho el .class que genera Java?
>
> Lo estás haciendo mal, si el programa tiene todos esos datos 'tal cual', te va
> a dar igual el lenguaje de programación, compilado o no. Un usuario malicioso
> podrá obtenerlos. ¿Quién se supone que tiene acceso a la BD? ¿Solo usuarios?
> ¿Solo el programa? El usuario/programa que acceda a la BD ¿Puede hacer con
> ella lo que quiera? ¿debería poder?
>

Se supone que C++ es compilado a código máquina, y es imposible
obtener el código de este lenguaje una vez compilado por lo que no
podrían obtener los datos.

Se supone que el software debería tener acceso a la base de datos. Si
puede hacer lo que quiera es un sí, aunque dudo importe demasiado la
respuesta a esta pregunta.

Entonces como lo hacen softwares como algunos Adobe, donde debes
iniciar sesión para ocupar varios de sus productos? Con HTTP?

> Luis
>



Re: [OFF] Lenguajes de programación para escritorio

2016-02-11 Por tema Luis Felipe Tabera Alonso
On Thursday 11 February 2016 07:33:51 alparkom . wrote:
> Explicado de forma simple; si hago una conexión en Java, el archivo
> .java tendrá los datos de conexión (en caso de usar MariaDB, se
> debería escribir en el .java la dirección del servidor, el usuario de
> MariaDB, la contraseña del mismo y el puerto usado)... entonces, que
> pasa si descompila dicho el .class que genera Java?

Lo estás haciendo mal, si el programa tiene todos esos datos 'tal cual', te va 
a dar igual el lenguaje de programación, compilado o no. Un usuario malicioso 
podrá obtenerlos. ¿Quién se supone que tiene acceso a la BD? ¿Solo usuarios? 
¿Solo el programa? El usuario/programa que acceda a la BD ¿Puede hacer con 
ella lo que quiera? ¿debería poder?

Luis



Re: [OFF] Lenguajes de programación para escritorio

2016-02-11 Por tema alparkom .
El día 11 de febrero de 2016, 7:17, Rafael Cantos Villanueva
 escribió:
> Buenas.
>
> Lo primero de todo, es diferenciar entre dos cosas bien diferentes: por un
> lado, los datos y el código de la aplicación, y por otra, el tipo de
> lenguaje, interpretado o compilado.
> Antes de seguir por este camino, y a pesar de que algunos me puedan llevar
> la contraria, te descarto ya java como lenguaje para crear programas de
> escritorio. Y te lo descarto tan simplemente porque crear programas
> accesibles (esto es, que puedan utilizarlo personas con algún tipo de
> discapacidad, y más concretamente la visual que es la mía) para personas
> ciegas es un follón, aunque se supone que hay alguna posibilidad, no suelen
> serlo.
> Bien, volviendo a la discusión previa, cuando programas, debes separar los
> datos de las instrucciones del código. En este sentido, puedes tener un
> programa implementado en un lenguaje interpretado, como python, y los datos
> almacenarlos en un archivo binario. Por ejemplo, python, que es el lenguaje
> que yo utilicé para desarrollar una aplicación de lectura de audiolibros
> llamada DBR, cuenta con una biblioteca llamada pickle que te permite
> almacenar datos de forma binaria con la estructura del objeto que tú desees.
> Estos datos no pueden ser accedidos directamente por el usuario, pues no son
> legibles. Evidentemente, si alguien obtiene el código de la aplicación, e
> implementa un pequeño script basándose en la estructura de los objetos
> almacenados en el fichero binario, podrá acceder a la información contenida
> en el mismo, pero ya es un poco de trabajo.
> Por otra parte, los lenguajes compilados, como C o C++, generan ejecutables
> que no son más que archivos binarios. Al igual que en lenguajes
> interpretados, como python, puedes almacenar datos en archivos binarios, con
> la estructura que tú definas (también podrías almacenarlos en formato de
> texto en ambos tipos de lenguajes). Quizás aquí sí sea más complicado (yo
> ahora mismo no sé cómo hacerlo) obtener la información almacenada en
> ficheros binarios, pues al estar compilado, el código está aparentemente
> oculto, y sería más difícil obtener la información relativa a la estructura
> de los datos e implementar un programa para obtener la información contenida
> en dichos archivos. Y fíjate que no digo que sea imposible, pues existen
> programas que descompilan los ejecutables.
> Como ves, que el lenguaje sea interpretado o compilado no tiene nada que ver
> con la forma en que se almacenan los datos internos de la aplicación. Si lo
> que quieres es proteger la base de datos, lo que deberás hacer es crear un
> usuario específico en la base de datos para estas conexiones, con
> privilegios limitados, y realizar copias de seguridad periódicas para
> evitar, en la medida de lo posible, fallos por manipulación incorrecta o
> indebida de dichos datos.
> Además de lo anterior, podrías generar una conexión de usuario, con inicio
> de sesión independiente (usuario y login por cada usuario de la aplicación),
> de forma que sepas en todo momento qué usuario es el que entra. Quiero
> decir, que la seguridad tienes que enfocarla en el servidor, no tanto en la
> aplicación.
>

Venga, no han entendido lo que quiero.

Explicado de forma simple; si hago una conexión en Java, el archivo
.java tendrá los datos de conexión (en caso de usar MariaDB, se
debería escribir en el .java la dirección del servidor, el usuario de
MariaDB, la contraseña del mismo y el puerto usado)... entonces, que
pasa si descompila dicho el .class que genera Java? Tendrá los datos
de conexión al servidor de MariaDB y podrá hacer con ellos lo que
quiere, desde otra aplicación automática que ocupe la base de datos,
hasta eliminar toda la base de datos, y todo con una simple Query.
Si te referías a que cada "instalación" del software tenga una
conexión distinta a la base de datos (de esta forma, si se conecta al
servidor y elimina algo, se "auto-perjudicaría") no es una opción.

Con respecto a lo de Java, a que te refieres? Se supone que en un
software de escritorio, el programador lo hace accesible a las
personas con discapacidad, o sin esta.

> Saludos
>
> Rafa
>
>
> El 11/02/2016 a las 4:42, alparkom . escribió:
>>
>> Buenas chicos;
>>
>> Estoy interesado en aprender algún lenguaje de programación para crear
>> aplicaciones de escritorio.
>>
>> Estuve leyendo y vi a Java, Python y Ruby como los mas simples sin
>> embargo estos lenguajes son interpretados. Osea, lo ideal sería crear
>> programas con conexiones a bases de datos externas, por lo que debería
>> incluir los datos de dicha conexión. El tema está en que los archivos
>> de estos lenguajes quedan en el cliente, prácticamente sin
>> modificación, por lo que quien quiera ir y ver los datos de conexión,
>> ahí estarán.
>>
>> Si bien, Java (que ya comencé a programar en el, por cierto) genera
>> bytecode, también pude obtener el source de los archivos .class, por
>> lo que los datos de conexión se podrían ver.
>

Re: [OFF] Lenguajes de programación para escritorio

2016-02-11 Por tema Rafael Cantos Villanueva

Buenas.

Lo primero de todo, es diferenciar entre dos cosas bien diferentes: por 
un lado, los datos y el código de la aplicación, y por otra, el tipo de 
lenguaje, interpretado o compilado.
Antes de seguir por este camino, y a pesar de que algunos me puedan 
llevar la contraria, te descarto ya java como lenguaje para crear 
programas de escritorio. Y te lo descarto tan simplemente porque crear 
programas accesibles (esto es, que puedan utilizarlo personas con algún 
tipo de discapacidad, y más concretamente la visual que es la mía) para 
personas ciegas es un follón, aunque se supone que hay alguna 
posibilidad, no suelen serlo.
Bien, volviendo a la discusión previa, cuando programas, debes separar 
los datos de las instrucciones del código. En este sentido, puedes tener 
un programa implementado en un lenguaje interpretado, como python, y los 
datos almacenarlos en un archivo binario. Por ejemplo, python, que es el 
lenguaje que yo utilicé para desarrollar una aplicación de lectura de 
audiolibros llamada DBR, cuenta con una biblioteca llamada pickle que te 
permite almacenar datos de forma binaria con la estructura del objeto 
que tú desees. Estos datos no pueden ser accedidos directamente por el 
usuario, pues no son legibles. Evidentemente, si alguien obtiene el 
código de la aplicación, e implementa un pequeño script basándose en la 
estructura de los objetos almacenados en el fichero binario, podrá 
acceder a la información contenida en el mismo, pero ya es un poco de 
trabajo.
Por otra parte, los lenguajes compilados, como C o C++, generan 
ejecutables que no son más que archivos binarios. Al igual que en 
lenguajes interpretados, como python, puedes almacenar datos en archivos 
binarios, con la estructura que tú definas (también podrías almacenarlos 
en formato de texto en ambos tipos de lenguajes). Quizás aquí sí sea más 
complicado (yo ahora mismo no sé cómo hacerlo) obtener la información 
almacenada en ficheros binarios, pues al estar compilado, el código está 
aparentemente oculto, y sería más difícil obtener la información 
relativa a la estructura de los datos e implementar un programa para 
obtener la información contenida en dichos archivos. Y fíjate que no 
digo que sea imposible, pues existen programas que descompilan los 
ejecutables.
Como ves, que el lenguaje sea interpretado o compilado no tiene nada que 
ver con la forma en que se almacenan los datos internos de la 
aplicación. Si lo que quieres es proteger la base de datos, lo que 
deberás hacer es crear un usuario específico en la base de datos para 
estas conexiones, con privilegios limitados, y realizar copias de 
seguridad periódicas para evitar, en la medida de lo posible, fallos por 
manipulación incorrecta o indebida de dichos datos.
Además de lo anterior, podrías generar una conexión de usuario, con 
inicio de sesión independiente (usuario y login por cada usuario de la 
aplicación), de forma que sepas en todo momento qué usuario es el que 
entra. Quiero decir, que la seguridad tienes que enfocarla en el 
servidor, no tanto en la aplicación.


Saludos

Rafa

El 11/02/2016 a las 4:42, alparkom . escribió:

Buenas chicos;

Estoy interesado en aprender algún lenguaje de programación para crear
aplicaciones de escritorio.

Estuve leyendo y vi a Java, Python y Ruby como los mas simples sin
embargo estos lenguajes son interpretados. Osea, lo ideal sería crear
programas con conexiones a bases de datos externas, por lo que debería
incluir los datos de dicha conexión. El tema está en que los archivos
de estos lenguajes quedan en el cliente, prácticamente sin
modificación, por lo que quien quiera ir y ver los datos de conexión,
ahí estarán.

Si bien, Java (que ya comencé a programar en el, por cierto) genera
bytecode, también pude obtener el source de los archivos .class, por
lo que los datos de conexión se podrían ver.
Python y Ruby son totalmente interpretados (creo, ya que aun no
comienzo a programar en ellos).

Entonces, que lenguaje serviría para crear aplicaciones de
escritorio?, y además permita lo que quiero hacer, osea, conectar
bases de datos externas con el software.

C++ sirve; de eso estoy seguro (casi).

Por cierto, la idea es utilizar ese mismo lenguaje para la conexión...
no utilizar recursos externos.



---
El software de antivirus Avast ha analizado este correo electrónico en busca de 
virus.
https://www.avast.com/antivirus



Re: [OFF] Lenguajes de programación para escritorio

2016-02-11 Por tema alparkom .
El día 11 de febrero de 2016, 5:30, Adrià  escribió:
> On Thu, Feb 11, 2016 at 12:42:22AM -0300, alparkom . wrote:
>> Estuve leyendo y vi a Java, Python y Ruby como los mas simples sin
>> embargo estos lenguajes son interpretados. Osea, lo ideal sería crear
>
> Ni creo que Java sea simple (eso ya es opinión personal) y por lo menos
> Java y Python se pueden compilar.
>

Recién comienzo con Java, aunque hasta ahora lo encuentro bastante
fácil. En cuanto a "simple" tienes razón, no lo es. Confundí su
dificultad con su capacidad.

Como dije, Java al compilar queda en bytecode pero pude obtener el
código completamente de los sources con cierto programa para
descompilar los .class.

No entiendes mi idea, o no la expliqué bien. Lo que quiero es poder
hacer conexiones a bases de datos de forma segura, osea, si yo le paso
un programa en Java a alguien (y dicho programa tiene una conexión a
base de datos externa), este "alguien" podrá descompilar el .class y
ver los datos de conexión, eso es lo que quiero evitar.

>> programas con conexiones a bases de datos externas, por lo que debería
>> incluir los datos de dicha conexión. El tema está en que los archivos
>> de estos lenguajes quedan en el cliente, prácticamente sin
>> modificación, por lo que quien quiera ir y ver los datos de conexión,
>> ahí estarán.
>
> Si la BD no es muy rupestre, cualquier lenguaje actual te ofrecerá las
> bibliotecas necesarias para establecer una conexión con la BD.
>

De eso sin duda.

>> Entonces, que lenguaje serviría para crear aplicaciones de
>> escritorio?, y además permita lo que quiero hacer, osea, conectar
>> bases de datos externas con el software.
>
> Puedes tener una aplicación que haga el trabajo y otra que lo maquille
> (con GTK, QT) para pintar las ventanas.
>

Como dije al final del primer post, lo ideal es que no hayan intermediarios.

>>
>> C++ sirve; de eso estoy seguro (casi).
>
> Sí, sirve.
>

Este lenguaje es compilado a código máquina (creo) por lo que obtener
su código es imposible (también creo), de esta forma los datos de
conexión a la base de datos no podrán ser "vistos".

>>
>> Por cierto, la idea es utilizar ese mismo lenguaje para la conexión...
>> no utilizar recursos externos.
>
> Pues yo te recomiendo la lectura de La Catedral y el Bazar (o algo
> así, no recuerdo el nombre exacto, pero lo encontrarás fácilmente; de
> Eric S. Raymond).

Gracias.

> --
> Adrià García-Alzórriz
> 0x09494C14
> While your friend holds you affectionately by both your hands you are
> safe, for you can watch both of his.
> -- Ambrose Bierce, "The Devil's Dictionary"



Re: [OFF] Lenguajes de programación para escritorio

2016-02-11 Por tema Adrià
On Thu, Feb 11, 2016 at 12:42:22AM -0300, alparkom . wrote:
> Estuve leyendo y vi a Java, Python y Ruby como los mas simples sin
> embargo estos lenguajes son interpretados. Osea, lo ideal sería crear

Ni creo que Java sea simple (eso ya es opinión personal) y por lo menos
Java y Python se pueden compilar.

> programas con conexiones a bases de datos externas, por lo que debería
> incluir los datos de dicha conexión. El tema está en que los archivos
> de estos lenguajes quedan en el cliente, prácticamente sin
> modificación, por lo que quien quiera ir y ver los datos de conexión,
> ahí estarán.

Si la BD no es muy rupestre, cualquier lenguaje actual te ofrecerá las
bibliotecas necesarias para establecer una conexión con la BD.

> Entonces, que lenguaje serviría para crear aplicaciones de
> escritorio?, y además permita lo que quiero hacer, osea, conectar
> bases de datos externas con el software.

Puedes tener una aplicación que haga el trabajo y otra que lo maquille
(con GTK, QT) para pintar las ventanas.

> 
> C++ sirve; de eso estoy seguro (casi).

Sí, sirve.

> 
> Por cierto, la idea es utilizar ese mismo lenguaje para la conexión...
> no utilizar recursos externos.

Pues yo te recomiendo la lectura de La Catedral y el Bazar (o algo
así, no recuerdo el nombre exacto, pero lo encontrarás fácilmente; de
Eric S. Raymond).
-- 
Adrià García-Alzórriz
0x09494C14
While your friend holds you affectionately by both your hands you are
safe, for you can watch both of his.
-- Ambrose Bierce, "The Devil's Dictionary"


signature.asc
Description: PGP signature