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

Debian or Devuan connection managers and comparations

In original Debian theres some connection managers, the famous Network/mananger, the light Wicd python stupid suite and the newer true lighty focused Connamn, those have some special use cases and tipsand at the botton of the page a table comparison for easy choose.

forensics recoverung data: Journaling or reading will always touch the data

When try to recover data, untouch the disk its very important, but live disk or mount readonly are not enought, due journaling features... so precautions must be taken to property make images of the disk after testing data or try to recover those important files.. the untouched data its important to preciceslly maketrace of history of ...

SPANISH VERSION: https://groups.google.com/forum/m/#!topic/vegnuli/Lr-corc2Xrw (with updates)

The Journaling file system will always touch the data

When mounting (and unmounting) several journaling file systems with only "-o ro" mount flag a different number of data writes will happened, thats happened due journaling, so this its a list of options that must be use when preform the mount command and u must passed with "-o" flag:
File systemWhen data writes happenNotes
Ext3/Etx4File system requires journal recoveryTo disable recovery: use "noload" flag, or use "ro,loop" flags, or use "ext2" file system type
btfsFile system has unfinished transactions"nolog" flag does not work (see man mount). To disable journal updates: use "ro,loop" flags
ReiserFSFile system has unfinished transactions"nolog" flag does not work (see man mount). To disable journal updates: use "ro,loop" flags
XFSAlways (when unmounting)"norecovery" flag does not help (fixed in recent 2.6 kernels). To disable data writes: use "ro,loop" flags.

Read process can be interpreted as write process

If u perform read operations over mounted or inclusivelly non-mounted filesystem, the operative system wil try to make reading again, for sure its not a itsefl problem, then a hardware problem, that's, the second must be avoid, ah of course stupid winbuntu linux always perform that checks, and also of course systemd now.

During boot process the init modified script will test existing partions for Ext3/4 file systems on fixed media, and this happened due these scripts mount every supported file system type on every supported media type using only "-o ro" flag in order to find a root file system image, as we didit, with the previous topic, those are not enought.


You must use a right linux, VenenuX 0.9 does not perform those stupid "windo-like" "features".

Initv, OpenRC, upstart y Systemd y sus porquerias

"las cosas malas suceden porque la gente buena no hace nada"

Desde hace dos anios se intentba poner systemd como el por defecto, al no poder lograrlo se uso la tecnica "guindows", y todo lo que se usaba como login y udev ahora depende de systemd, MALDITOS! para los que no quieren leer ver la tabla abajo directo ...la creciente interdependencia obligo a las distros adoptarlo, el disparador fue udev, que ahora es parte de systemd, obligando a empaquetar esto..

systemd tiene ahora gran terreno, a pesar de existir eudeveglibcelogind, y tambien una debian completa devuan, y aun asi ninguno de estos proyectos recibe apoyo.. poque los muy higueputas cobardes no lo hacen... descargue devuan y al fin encontre algo que hace honor a el debian... ademas devuan usa nombres de astros, no estupidos juguetes....

eglibc no dio frutos, y eso que obtuvo el peso de debian (por alla cuando lenny a squeeze...) y siguieron con glibc normal.. 
OPenRC es una alternativa tambien de geento, nojoda estos si son los mejores.. https://gitweb.gentoo.org/proj/openrc.git/log/ segun el git es activo.. y su git principal esta en geento porque es mas orientado a esta distro pero es 100% compatible con otras...
geento realizo bifurcacion de udev (el eudev), el primer paquete en discordia que obligo a mudar todo... tenian que ser los mas machos https://github.com/gentoo/eudev aparentemente es menos activo, y esta en github porque es independiente de la distro (distro-asgnotic)

CaracteristicaInit system analizado

sistemas OSLinux / BSDLinux + BSDLinuxLinuxSolarisMacOSXLinuxLinux
LenguageCshell + CCCCCCC
Depende deN/AinitD-BusD-BusinitN/Alibc, /bin/sh ?
configuracion y arranque del servicioun archivo configshell scriptsarchivos confg y shell scripsarchivos confgarchvos xml y  shell scriptsplist !uno o varios archivos confguno o varios archivos confg
Configuracion de cada servicio individ.
 Si (conf.d)
 con jerarquias!
 ? ?
 si (v1.1+)
como demonio
 si (PID 1)
 Si (PID 1)
 Si (PID 1)
 Si (invoked)
 Si (PID 1)
 si (PID 1)
 si (PID 1)
 si (basico)
funciona en paralelo a otros inicio
 Si optional
Mantiene demonios activos y administrables?
 si opcional
Usado siempre en:Se usaba!!!GentoowinbuntuObligada! hoySolarisMacOSXn/a ????n/a ????
LicenciaGPL v2+2-cl. BSDGPL v2LGPL v2.1+?Apache 2.0Public Domain?

buckaro banzay - santo senor: ni chuck norrys es tan grande


Codeigniter: grocerycrud asociation 1-1 with a custom query, dropdown list, column asociation

(under construction) NO AJAX COMPLICATIONS; only pure php and grocery crud

* 1 to 1 relationship grocery crud (currently grocerycrud does not have that)
* 1 to n custom column relationship grocerycrud (currenlty need name name)

i now explain how:

1) controller made normal, here tables:
CREATE TABLE tablemain ( colkeymain TEXT, collink_noname TEXT, PRIMARY KEY (colkeymain)  );
CREATE TABLE tablerefer ( colkeyrefer TEXT, collink_naming TEXT, PRIMARY KEY (colkeyrefer)  );
2) here controller
$arrayrowsfromtablerefer = $this->modeltablerefer->get_allrows_as_array();
// code for show in list action
$crud->callback_column('collink_noname', array($this,'_linkrelation'));
// code for show in add and edit, maybe read
$crud->field_type('collink_noname', 'dropdown',$arrayrowsfromtablerefer);...
function '_linkrelation' ( $vale, $rowf ) { return $arrayrowsfromtablerefer[$vale]; }
3) here idea of model logic:
public function get_allrows_as_array()
  query = "select * from ..."
  foreach( $results as $rows)
     $arrayoflisttolink[$row->collink_naming] = $row->collink_naming . $row->tablerefer;
return $arrayoflisttolink

theres two situations, when are in a form, and when are in a list.. 

for the list, we made a callback, i mean, on every row, we escaped taking the value, and searching inside an array of keycodes comming from the refer table, this due we cannot made a query to db on each row render

for the form (add or edit), more simple, only we associate the already array of rows comming from the refer table as a dropdown list and that's all

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.


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

(UPDATED!!  construction) (ACTUUALIZADO 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
1) Software requirements
2) Webserver configurations combinations
3) Deployments and testing the web program

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!


We need a webserver, a gambas ide compiler and gambas script interpreter, unless u only make cgi's the scripter are innecesary. The recomended install command must be done open a console and swichting to root:

RequerimentAvailablerecomended and install commandexplanation
apt-get install lighttpd apache2.2-utilsprovides the cgi andler and web interface to request to bypass to the cgi produced by gambas, webservers like nginx does not provide good cgi handler and its not supported, hiawatha its not recomended for production large deployments
apt-get instal gambas3-runtime gambas3-web gambas3-util-web gambas3-xml gambas3-xml-rcppermits compiling the program tht will be acts as cgi program and produces the html rendering. The ide component was given due install many of the necesary, but in server its not recomended.
Scriptergambas3-scripterapt-get install gambas3-scripterpermits interpret a source files and based on their content as script will render html or not using logic, its only recomended for static content that only need minimal logic, when fails show the source code in webserver


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

2.1) Default configurations parameters

configuration by default let only /usr/lib/cgi to permits and as place for cgi scripts...  keep reading to enalbe others or per user
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

2.2) User server configure cgi:

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" => "gbs3")
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!


3.1) configuring CGI

On standars web server of providers webservers ther's only two paths where the "produced program" (the gambas compiled program u make) can be deployed, in the "/cgi-bin/" web path, and there's two only places for them, globally and per users, theres configurations for both cases:
WebserverInitial/global configsPer user configsScript aditionspackage relatedmodule related
apacheScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ AddHandler cgi-script .cgi .sh .plOptions ExecCGI SetHandler cgi-scriptAddHandler cgi-script .gbs ()apache2.2-bina2enmod cgi cgid alias userdir
lighttpd$HTTP =~ "^/cgi-bin/" { cgi.assign = ( "" => "" ) }$HTTP =~ "^(/~[^/]+)?/cgi-bin/" { cgi.assign = ("" => "") }cgi.assign = ("gbs" => "gbs3")lighttpdlighty-enable-mod cgi alias userdir
() in apache there's still no way to workaround the interpreting of the scrips at the momento of writing this how to

2) producing the program cgioose th
  • In the ide, go to menu->project
  • Create-> executable
  • If u use the "per user configuration" choose the directory output as "public_html" under your home
  • Choose the name of the output program, by default "programname.gambas"
  • If the webserver only permits cgi's porgrams with .cgi extension put in second input: mv $(FILE) $(FILE).cgi
  • The cgi program now can be invoked from url http://localhost/~username/cgi-bin/programname.gambas.cgi
All of this its taking in consideration that inside your home, there's a "public_html" directory, used and handled by the webserver as per user web content, and also under this there's a "cgi-bin" directory, that its for cgi programs, and the webservers software are only apache2 or lighttpd.


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

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.
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.
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