Re: Simbolos dentro de cadenas y el codigo propuesto

From: Gabriel Colina <colina_movil(at)yahoo(dot)com>
To: Gunnar Wolf <gwolf(at)gwolf(dot)org>
Cc: Alvaro Herrera <alvherre(at)commandprompt(dot)com>, Gabriel Ferro <gabrielrferro(at)yahoo(dot)com(dot)ar>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Simbolos dentro de cadenas y el codigo propuesto
Date: 2007-03-15 03:55:31
Message-ID: 683068.78602.qm@web34709.mail.mud.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


--- Gunnar Wolf <gwolf(at)gwolf(dot)org> escribió:

> Gabriel Colina dijo [Wed, Mar 14, 2007 at 03:03:05PM
> -0500]:
> > Ejemplo 1
> > Para mi muy apropiado.
> >
> > Creo una funcion en el lenguaje PLPGSQL, en
> > postgresql, (aclaro que si alguna palabra no la
> pongo
> > bien por ejemplo plpgsql no se escribe asi, me
> importa
> > poco, debatan sobre conceptos por favor).
> > Retomando el tema aca hay una funcion a la que
> > pasandole parametros desde visual borra una tabla
> > auxiliar, la llena de datos le hace algun insert y
> > podria ser un update en fin todo.
> > Incluso uno de los select de la insercion invoca
> otra
> > funcion.
> >
> > CREATE OR REPLACE FUNCTION
> > "central"."fnc_imp_ficha_articulo" (text, date,
> > integer) RETURNS boolean AS
> > $body$
> > begin
> > delete from central.imp_ficha_stock;
> > insert into central.imp_ficha_stock
> > (id_local,sucursal,
> > empresa,id_lin,documento,serie,numero,fecha,
> > id_articulo,entradas,salidas,saldos)
> > select id_local,sucursal,
> > empresa,id_lin,documento,serie,numero,fecha,
> > id_articulo,entradas,salidas,saldos from
> > central.fnc_ficha_articulo($1,$2,$3);
> > return true;
> > end;
> > $body$
> > LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT
> > SECURITY INVOKER;
> >
> > Llamada desde visual
> >
> > DtaSysGeGcFunc.central_fnc_imp_ficha_articulo
> > TxtDatos.Text, DTPDESDE.Value,
> > Val(DataComboLocal.BoundText)
>
> ¿Mi crítica principal a esto? Recuerda que los
> lenguajes de
> programación están hechos como herramienta de
> comunicación entre
> humanos, con suficiente formalismo para ser capaces
> de ser traducidos
> a algo que una computadora pueda entender. Entonces,
> ¿por qué no
> comenzar indentando bonito y poniendo nombres en
> simple y llano inglés
> a las cosas?
Usar formalismos uso, me baso en la notacion Hungara.

La identacion existe en Visual y la uso siempre.

Si violo las reglas de notacion que trato de imponerme
?, y si, Si en momentos de produccion como en este
caso actuo desprolijo?, tambien

Despues que cumplo con la meta y lo dejo andando
y solo despues me siento a retocar lo que no me
gusta. Creo los help y emprolijo el codigo.

Nombres cortos, creo que eso es algo discutible.

Entiendo lo del ingles y lo acepto a reganiadientes
por que estamos en la era de la globalizacion y por
que ya hay años de desarrollo pionero en ingles, pero
no lo comparto.

Comentario al margen, por que esto no lo escribo para
dar argumento, solo para expresar un deseo, digo.

Me gustaria tener una tecnologia alternativa y para
America Latina en nuestro idioma.

Existe gente en el mundo que desarrollo sistemas
operativos y solo uso el ingles para clonar windows
Por que la mayoria del codigo lo hizo en chino e
intervinieron 80.000 tecnicos.

Y si lo decis por que el ingles es un lenguaje que se
adapta mas al de comandos, por que es imperativo.

Mejor usamos Japones o Coreano, son imperativos por su
naturaleza marcial mas que el ingles.

>Sería mucho más fácil ponerle un nombre
> suficientemente
> corto pero descriptivo a DtaSysGeGcFunc. Esperar que
> con sólo leerlo
> el programador que se acerque a tu código le
> entienda, es mucho
> pedir. Esperar que se acuerde de cómo escribirlo en
> otro momento a
> 1000 líneas de distancia, creo yo, también.
>
Despues de leer mi primera tentativa de contestarte,
me di cuenta que en esto te replicaria solo por
replicarte, asi que te ahorro y me ahorro esto siendo
autocritico y diciendote que deberia renombrarla.
Seria asi.
DataEnvgGegcFunc

DataEnv = dataenviroment, si no podria ser
AdoDataControl
Gegc para indicar a que aplicacion pertenece
y Func, para indicar que especialmente en este
DataEnviroment hay llamada a los procedimientos.

Lo demas se va a leer facil, solo hay que habrir la
definicion del DataEnviroment y vemos a que se conecta
y que hace.

Gracias por que esto lo voy a mejorar.
Pero es semantico, funcionar funciona igual.

Lo que no te voy a llevar es eso de hacerlo en ingles
y cortito, si ellos tienen un lenguaje imperativo y
cortito bien, pero yo pienso en castellano y me
comunico muy bien con el.

Por suerte 1000 lineas, en cobol un monton de laburo y
muy pocos resultados, con 1000 lineas en VB, dejo
satisfechos a muchos con los resultados.

> En segundo lugar: Estás creando una función plpgsql
> que consta
> únicamente de un «delete», un «insert», un «select»
> y un «return
> true». Lo que es más, tan poco te importa el lector
> humano de tu
> código que ni siquiera le das aliases a $1, $2 y $3
> para que sepa qué
> debe ir en esas variables - pero bueno, pecata
> minuta. Ni siquiera
> estás abriendo/cerrando una transacción para tener
> control en caso de
> un error a medio proceso. En mi opinión (y, claro,
> las opiniones son
> como los ombligos: Cada quién tiene la propia)

Si alias empece a usar en la decima funcion que cree
cuando vi ejemplos con Alias en el manual que baje de
postgresql.cl , hay algunos que no tienen.
Por que como a mi me obligaron a usar postgresql (por
suerte, por que me devolvio el gusto por la
investigacion), mientras armaba algo aprendia y leia
el manual, muchas veces me quede con la primera
opinion experta que encontre, esa funcion es un
ejemplo.

Y tambien una opinion experta me comento aqui que las
funciones que no se completaban hacian rollback de
forma automatica, de todas maneras tengo en Visual un

On error resume ErrControl

y un
ErrControl:
codigo control errores

> sub imp_ficha_articulo {
> my ($self, $text, $value, $boundtext) = @_;
> my @data;
> $self->{db}->begin_work;
> eval {
> $self->{db}->do('DELETE FROM
> central.imp_ficha_stock');
>
> my $sth = $self->{db}->prepare('INSERT INTO
> central.imp_ficha_stock
> (id_local, sucursal, empresa, id_lin,
> documento, serie,
> numero, fecha, id_articulo, entradas, salidas,
> saldos)
> VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
> ?)');
> $sth->execute(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
> 12);
>
> $sth = $self->{db}->prepare('SELECT id_local,
> sucursal, empresa,
> id_lin, documento, serie, numero, fecha,
> id_articulo,
> entradas, salidas, saldos FROM
> central.fnc_ficha_articulo(?, ?, ?)');
> $sth->execute($text, $value, $boundtext);
> @data = $sth->fetchrow_array;
>
> $self->{db}->commit;
> };
> if ($@) {
> warn "ERROR: $@";
> $self->{db}->rollback;
> return 0;
> }
> return 1;
> }
>
> Claro, acá puedes ver algunos de los puntitos acerca
> de cómo se maneja
> este proceso en Perl - No me meto a explicar a
> detalle, creo que no
> tiene sentido (además, no entiendo bien qué es lo
> que hace tu
> aplicación, y explicarte tus propias funciones no es
> muy divertido ;-)
> ). Pero si esto lo haces estructurando tus clases
> correctamente, te va
> a resultar mucho más sencillo y natural extenderlas
> y darles
> mantenimiento.

Si no lo dudo pero, no entiendo de Perl, pero me
parece muy parecido a lo que Gabriel Ferro intento
hacer desde Visual y aca se le critico.

Esto que viene es chanza para aflojar

Y tambien veo que no te tomaste el tiempo de poner
nombres a las variables jeje.

> Y nótese claramente: Escribí la función directo en
> el cliente d
> correo, sin probar nada. Y hasta tengo que reconocer
> que estoy un
> poquito oxidado en perlazos, hasta tuve que asomarme
> al manual de DBI
> para recordar cómo se manejaba el
> eval/begin_work/commit/rollback ;-)
>
Ya que estas aconsejanos un buen lenguaje compilado
que ademas sea productivo.

Y mil gracias nuevamente por tus aportes. como dijo
Alvaro, los que venimos de M$, aca tenemos que venir a
aprender.

Lo que no significa que tenga que endiosar a nadie ni
acatar todo.

Por que en esta sociedad, donde el exito lo miran
generalmente de manera diferente a mi punto de vista y
por lo que lei de tus escritos se que al tuyo tambien.

El significado de exito tienea esta sociedad, te digo
que la gente de M$. por lo menos en mi pais, trabaja
mas en proyectos importantes desde el punto de vista
economico que la gente de otros ambientes.

En plata constante y sonante, la gente de ARTECH, que
creo GENEXUS exporto una torta, la gente de Memory
Computacion tambien. Siendo Uruguay uno de los paises
que mas exporta software de Sudamerica.

Y teniendo M$ una sede en Uruguay no por un tema de
mercado ya que nuestro pais es chiquito, si no por la
calidad tecnica que aca existe.

Nosotros tenemos una educacion gratuita y obligatoria
y un mercado chico, lo cual nos obliga a capacitarnos
y migrar o trabajar hacia el exterior.

El plan de una computadora para cada niño empieza como
piloto este año, espero que tengan Linux.

Atte.
Gabriel Colina.


> Saludos,
>
> --
> Gunnar Wolf - gwolf(at)gwolf(dot)org - (+52-55)5623-0154 /
> 1451-2244
> PGP key 1024D/8BB527AF 2001-10-23
> Fingerprint: 0C79 D2D1 2C4E 9CE4 5973 F800 D80E
> F35A 8BB5 27AF
>
> ---------------------------(fin del
> mensaje)---------------------------
> TIP 9: el optimizador ignorará el uso de recorridos
> de índice si los
> tipos de datos de las columnas no coinciden
>
Atte Gabriel Colina.

PD. Te felicito

__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gabriel Colina 2007-03-15 04:07:50 Re: Me mudo a POSTGRES
Previous Message Espartano 2007-03-15 03:25:40 Re: Me mudo a POSTGRES