Feeds, issues, packages and code source about emulation and pograming, of VENENUX proyects, Debian related distros and massenkoh!

gambas/rapidsvn/subversion : avoit 413 entity too large, avoit 411 Length required

|
Subversion 1.8.0 has switched from neon to serf for HTTP access. The Serf-based HTTP access library would use chunked transfer encoding for most requests.

Here we cleared and made recomendations and solution on mixed environments, for those that using not well configured linuxes (such those using rolling releases as alpine, arch etc) and stupid winbuntu based:

BACKGUARDS PROBLEMS: using 1.8 agains 1.7/1.6 servers:

Many issue come with migrations, not all are good: as documented: http://subversion.apache.org/docs/release-notes/1.8.html#411-length-required
When the mod_dav_svn Subversion server is fronted by a proxy or are by passing using reverse proxy web server Subversion would sometimes either treat this as a fatal error, theres the two most comman cases:

CASE 1: 411 Length required:
..such as Nginx prior to 1.3.9 or hiawatta (if are acting as reverse proxy frontend) will responds with a 411 Length Required, Subversion would sometimes either treat this as a fatal error, such as:

% svn commit 
POST of '/svn/project1/!svn/me': 411 Length Required

CASE 2: 413 Request entity too large:
Also if u use mixed environment from venenux and newer stupid debians and alpine linux, could'n chekout newer clients agains well stable 1.5 or 1.6 older servers, so will raise fatal error such as:

% svn cchekout http://domain/svn/project1
svn: E175002: Unable to connect to a repository at URL
svn: E175002: Unexpected HTTP status 413 'Request Entity Too Large'

CLIENT SIDE SOLUTION that must be made:
A http-chunked-requests option has been added to the ~/.subversion/servers per user configuration file. Users who wish to avoid the additional request may set that option to yes or no in order to short-circuit the additional request and avoid making it. We recommend not to set that option (or to set it to its default value, auto) unless you have special circumstances which require it (such as an unusually high latency).

When using clients version 1.8/1.9, agains olders servers 1.7/1.6/1.5 versions, you must set this to "no" in order to avoid the described problems.

SEVER SIDE SOLUTIONS and recomendations:
There options must be set in server, specially if your server subversion software differts from subversion clients, to already go better the compatibility in high latency and high traffic sidtes

config optionapache2lighttpdValue must
maximum size of andXML-based request bodyLimitXMLRequestBodyserver.max_request-size0
Limit the size of data in body request clientLimitRequestBodyserver.max_request-size2097152
number of requests allowed per connection aliveMaxKeepAliveRequestsserver.max-keep-alive-requests7500

Of course, lasted option its only if u configured a Keep Alive to "on" that increase performace respect each client connection, but of course assumed u have already at least 1G to 2G of RAM memory on server hardware.

RECOMENDATIONS:

For those with multipurposes sites, the most realitable are using two servers, one with main entry point using lighttpd, and other with apache2 and subversion. The server with lighttpd will acts as proxy reverse, let the apache only for subversion or git. Apache could'n rely for high traffic performance, and lighty are made for that work!

The benefits of using KeepAlive, and Subversion newer options is an increase in the speed and reliability of svn while reducing cpu usage since it will not open and close as many connections when checking out code.

Those all are stupids, subversion team do not tell the complete history:

On middle sites with few repositoryes, these are good, but.. the downside is that memory usage will increase due to the fact that svn will be holding many connections at same time and waiting for requests and responses over those connections. So make sure to monitor memory usage and gauge what is right for you.

In conclusion, switch to Git and lighttpd! Default values of lighty are the recomended for git and high traffic sites.

gambas: como publicar web / how to deploy web

|
(under construction) (en construccion) Sea como sea, un programa gambas para web tiene gran futuro, porque sigue la sintaxis JSP/VB, pero usa la filosofia Java, lo mejor de los dos mundos actuales.. si el creador de gambas tuviera mas vision este seria el futuro de la tecnologia GNU!

0) Introduction/Introduccion:

Please read before: http://qgqlochekone.blogspot.com/2017/03/gambas-web-la-filosofia-web-vs-la.html

El programa generado gambas (el ejecutable que por lo general tiene extesion gambas) es en si un "escupidor de html", este es el que se invoca en el request y este emitira el response.

The gambas program generated (that exec by general have gambas extension) its per se an "html ouput renderer", that its the file called in the request and that emit the response.

From the IDE vs from the webserver! CUIDADO/BEWARE!

No es el mismo, cuidado! el IDE gambas ejecuta el codigo embebido en su propio wervidor http usando puerto 8080, el path server sera el directorio del proyecto, el server web root sera la raiz del url ... es decir corre un servidor web como si fuera entero para el proyecto! Cuando ud despliegue el cgi esto cambia radicalmente confundiendolo!

Not the same, beware! The gambas IDE run the embedded code on its own http web server using port 8080, the server path will be the application path, the server web root will be root of the server runnign from the url  web browser as if the hole only for the project! When the CGI is deployed this radically changes confusing it the developer!

1) setup web server


open console
gin root privilegies: su
run command: apt-get install

Requerimientospaquetevalor inicial y ruta ejecutoramodulo
apacheapache2.2-binScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AddHandler cgi-script .cgi .sh .pl
a2enmod cgi
lighttpdlighttpd$HTTP["url"] =~ "^/cgi-bin/" {
cgi.assign = ( "" => "" ) }
lighty-enable-mod cgi
hiawatahiawathacgicgi

2) Global server configure cgi


configuration by default let only /usr/lib/cgi to permits and as place for cgi scripts...  keep reading to enalbe others or per user
Configuracionapache2lighttpdexplicacion
Solo los ejecutablesOptions +ExecCGIcgi.execute-x-only = "enable"permite en donde lo coloques que cualquier cgi se ejecute, por defecto solo el directoro /cgi-bin/ los ejecuta y el htdocs /var/www/html
Solo algunas extensionesAddHandler cgi-script cgi gbacgi.assign = ("gba" => "gba")
Cgi.assign += ("cgi" => "cgi")
Si por alguna razon no funciona, cambia la extension a “cgi” o “gba” y con esta option los “separas” explicitamente a ejecutar

3) User server configure cgi:


Configuracionapache2lighttpdexplicacion
Para el directorio web por usuarios
( ~user)
Options ExecCGI
    SetHandler cgi-scri
$HTTP["url"] =~ "^(/~[^/]+)?/cgi-bin/" {
    cgi.assign = ("" => "")
}

permite en donde lo coloques que cualquier cgi se ejecute, por defecto solo el directoro /cgi-bin/ los ejecuta
Solo interpretar scriptsAddHandler cgi-script gbacgi.assign = ("gba" => "gbx3 -H")
Solo interpretar los script no compilados, y que los ejecute el compilador/interprete gambas con el http server embebido, esto solo se hace para los archivos no compilados.
NOTA: no es seguro, si el script falla, el codigo es escupido al navegador!



CONTINUARA....

Gambas web: la filosofia web vs la filosofia desktop

|
En los inicios las aplicaciones de computadoras (seria de ignorantes decir "informaticas") se limitaban a aquellas instaladas en el computador "localmente", la internet si era algo relacionado con "informatica", puesto que solo "ofrecia informacion", hoy dia esto ha evolucionado, y Gambas ha incursionado en el ambito web 2.0 de hoy.

Introduccion a web

WEB 1.0 : es de sólo lectura, es decir en los inicios solo existia HTML estatico, el servidor web tenia un archivo de tags html y el usuario visualizaba el contenido. El usuario no puede interactuar con el contenido de la página (nada de comentarios, respuestas, citas, etc), estando totalmente limitado a lo que el servidor web ofrecia o mostraba desde los archivos html (lo que el servicio subia al servidor).

WEB2.0: esto es lo que hoy dia llaman incorrectamente aplicacion web, esto es posible con los sistemas de programacion web dinamica, o "paginas web dinamicas"; permite a sus usuarios interactuar con el contenido segun las acciones que este realize, haciendo ver que interactua con otros usuarios o cambiar contenido del sitio web, en contraste a sitios web no-interactivos donde los usuarios se limitan a la visualización pasiva de información que se les proporciona.

Como funciona la web 2.0

Usa los principio de peticion-respuesta (request-response), el lenguaje de programacion, toma el contenido del request y basado en la logia propia del sistema web emite un response. La dinamica aqui es que gracias a el lengaje de programacion se puede analizar el contenido y aplicar reglas de logica, cosa que en la web 1.0 no se podia, ya que el request estaba limitado a pedir un nombre de archivo (aparte de la informacion de protocolo).

Gambas y web: Interpretado y precompilado

Las tecnologias mas completas ofrecen dos maneras de manejar y ofrecer contenido dinamico: interpretado y precompilado. De las mas famosas esta Java y/o .Net brindan programacion de sistemas web 2.0 en las dos formas y las usaremos para ejemplificar e ilustrar esto.

Esta tabla es ilustrativa y vaga, solo como punto de partida a los menos conocidos.
Referencia RapidaGambasPythonJavaEE.Net
InterpretadoGBSPYJSPASP
PrecompiladoGBXPYCCLASSCOMP

Esto porque ejecutar gambas no requiere de una extension, el programa precompilado puede tener extension o no tenerla, el servidor web segun como se prepare lo ejecutara sea precompilado o interpretado.

Diferencias entre las tecnologias

Gambas es RAD, asi como JAva lo es, son diseñados para rapidamente ser aprendidos y rapidamente ser desplegados, gambas para desplegarse al igual que Java solo necesita los componentes de su propia tecnologia, mientras que Python y .Net para cualquier funcionalidad especial, aun siendo programada en el mismo leguaje, requiere de software externo.
Para los ignorantes, Python, Java y .Net son populares porque tiene grandes empresas detras de ellos: Inte/Google, Oracle y Mocosoft respectivamente. Fuera de esto pytnon en sus inicios era una basura por hobbie y .Net solo un experimento para sacarle el cuerpo a Java y lograr entrar en el ambito web.
 GambasPythonjava.netResumen
MadurezNoSiAltaSi* Gambas aun sin dinero, crece solido, robusto y compatble entre versiones de su api.
* Python y .Net le tuvieron que inyectar mucho dinero
* Java cuenta con dinero, y aun asi cambian demasiado su api
EnfoquePequeñoGenericoEmpresarialEmpresarial* python “pretende” convertirse de algo general en algo empresarial
* Java es empresarial, nacio empresarial y es las grandes ligas, el maestro.
* .Net pretende ser mejor que java, con tanto dinero le falta aun mucho mercado.
* Gambas parece no tener vision de futuro... duele pero es la verdad.
AprendizajeRapidoLentoLentoLentisimo* Gambas es BASIC, es lo mas facil en el mundo.. Para un programador no relacionado, es facil el lenguaje BASIC de gambas, las empresas privadas no quieren invertir recursos en programadores costosos (python, Java, .Net) o enseñar a los suyos.
RADSiNoSiNo* dado la facilidad y el diseño, solo Gambas y Java son RAD (Rapid Aplication Developent), para python es imposible ser algo para lo que no fue construido, para .Net no es su enfoque lo que evidencia su mal diseño.
Backguard
Compatible
ExcelenteNuncaExcelenteNo* Con gambas el programador no necesita volver aprender, vive una vida!
* Con Java hay compatibilidad pero las caracteristicas nuevas LAS IMPONEN como estandares!
* El mayor problema de python y .Net es que no funcionan entre distintos apis.
RequerimientosPocosMediosMuchosMuchos* Desplegar gambas web solo gambas y cgi
* Desplegar python solo requiere python y cgi
* Desplegar Java o .Net requiere una gran cantidad de potenca y recursos extra.
MultiplataformaSiSiSiNo* Sin comentarios para lo obvio, cualqeuir eleccion aquí es mejor que .Net.

Que necesito saber para desplegar web en gambas?

Lamentablemente aqui se requiere estar familiarizado, mientras que en python, java y php solo se necesita conocimeintos minimos, en Gambas y .Net se necesita comprender bien dos conceptos clave: el "request" y el "response".
HTTP se basa en un modelo solicitud / respuesta, de modo que hay dos tipos de mensajes HTTP: la solicitud y la respuesta. El navegador abre una conexión a un servidor y realiza una solicitud. El servidor procesa la solicitud del cliente y devuelve una respuesta. La figura siguiente ilustra este proceso.
Aunque hay varios métodos de HTTP para recuperar datos de un servidor, las dos más utilizados son GET y POST.
En gambas es importante comprender estos conceptos, en php y Java, no es tan importante la comprension porque el lenguaje como tal al no ser RAD provee en si suficiente herramientas para procesar las respuestas como si se tratara de un mismo sitio, en ves de una contesta lejana. Esto es porque los frameworks abstraen estos complejidades, mientras que en gambas se le ofrece al programador el total control de lo que fabrica (es RAD recuerde):


Que necesito tener y como despliego mi programa gambas?

Necesitas un servidor con capacidad CGI, tambien se puede con FastCGI pero es bastante complicado. Hay dos maneras de lanzar el codigo gambas:
Interpretado: se le indica al servidor web que el gambas interpreter es el CGI como tal y este interpretara indicandosele que provea de su servidor httpd embebido, y que procese el proyecto entero. A diferencia del servidor web, esta es la manera en que se ejecuta el proyecto cuando esta en el IDE RAD grafico solo que sin ejecutar un CGI que pase el control.
Precompilado: se fabrica un programa comun gambas, y se le dice al servidor web que lo procese como un programa CGI propio. Esta es la manera en que se debe de ejecutar en produccion.

Como comienzo a fabricar una pagina gambas web?

Cuando se arranca el ide se le indica es un proyecto web, sin embargo para el diseño de formularios graficos web es necesario manualmente indicar que se usar el modulo gb.web.forms el cual es relativamente nuevo y la ultima sensacion de la comunidad.

En el proximo articulo desplegare la receta para publicar web gambas