#1 Si sos programador tenes que leer esto
CodMACs:
Se trata de una aplicación, en desarrollo. La idea es que, basandose en un código fuente de base, te genera programas de forma automática (obviamente, luego tendrías que retocarlos) pero la idea es similar a lo que hace el PHP (que genera una respuesta código HTML) Y es similar también porque es un código embebido dentro de otro.
En este caso, uno pone el código fuente base (en cualquier lenguaje) y dentro de éste (embebido) código del CodMACs. Luego, basandose en los datos recogidos por la aplicación desde SQL (por ahora, despues le voy a poner MySQL) y en unas funciones que puede definir cada uno te arma un programa base sobre la tabla que elijas.
Lo estoy desarrollando yo en ratos libres. Como acá frecuentan programadores me pareció un lugar copado para postearlo. Y aprovecho para pedir colaboración de quién desee participar.
Acá está la explicación más detallada:
http://stealthissoftware.blogspot.co...grama-por.html
Y la página que estoy armando:
http://codmacs.tk
Screenshots:



Un Ejemplo. Tengo este código base:
Como ven es código escrito en Visual Basic. Pero hay cosas externas, las detallo:
<@@LOOPPKEY> : Esta marca indica que hay que hacer un loop por cada campo Primary_Key.
@@!Identifier: Hace referencia al nombre del campo current.
@@CASE(@@!Format,DataTipo) : @@CASE indica que se va a usar una función. @@!Format, hace referencia al formato del campo current. DataTipo es el nombre de la función custom. Aclaro, esas funciones son definidas por el usuario, totalmente a medida según las necesidades. Pongo el ejemplo de DataTipo:
Luego, tomando desde las tablas (te genera un XML con la estructura, editable en texto plano y treeview) Ejemplo:
Ahi vemos que en Artículos (la única tabla que puse) tiene como primary key el campo arti. El resultado del código puesto arriba, usando esta tabla es:
Además, asi como @@!Identifier, hay otras cosas a las cuales se pueden hacer referencia:
@@LOOP: Hace un loop por cada campo de la tabla
@@IFPKEY: Es un if para saber si un campo es Primary Key y actuar en consecuencia.
@@!Index: Es un simple contador incremental dentro del loop
@@!FileName: Nombre del archivo a generar (se puede autoreferenciar)
@@!FileExt: Extensión del archivo a generar
@@!@: Es un arroba literal
@@!!: Es un ! literal
@@!(: Parentesis literal
@@!): Idem
Además pienso ponerle soporte para expresiones regulares.
Asi se ve el editor del XML en modo treeview.

La idea es hacerlo OpenSource. Y portarlo a Linux
Se entiende???? Fui claro en mi explicación??
Y lo más importante, que les parece la idea?
NOTA: Porqué lo posteo acá? Primero para que se enteren de que existe. Segundo, porque lo quiero portar a linux y liberar el codigo fuente. Y tercero porque, más allá de que está hecho para Windows (por ahora) genera código fuente en cualquier lenguaje, entonces, bien podrían usarlo para generar código que luego van a usar en linux.
Y 4to... porque creo que en este foro es donde más gente "abierta" e inteligente hay. Gente que puede ser capaz de apreciar algo hecho por otro con esfuerzo y sin fines de lucro.
Se trata de una aplicación, en desarrollo. La idea es que, basandose en un código fuente de base, te genera programas de forma automática (obviamente, luego tendrías que retocarlos) pero la idea es similar a lo que hace el PHP (que genera una respuesta código HTML) Y es similar también porque es un código embebido dentro de otro.
En este caso, uno pone el código fuente base (en cualquier lenguaje) y dentro de éste (embebido) código del CodMACs. Luego, basandose en los datos recogidos por la aplicación desde SQL (por ahora, despues le voy a poner MySQL) y en unas funciones que puede definir cada uno te arma un programa base sobre la tabla que elijas.
Lo estoy desarrollando yo en ratos libres. Como acá frecuentan programadores me pareció un lugar copado para postearlo. Y aprovecho para pedir colaboración de quién desee participar.
Acá está la explicación más detallada:
http://stealthissoftware.blogspot.co...grama-por.html
Y la página que estoy armando:
http://codmacs.tk
Screenshots:



Un Ejemplo. Tengo este código base:
Código:
c = "SELECT COUNT(*) AS cant FROM @@!TableName WHERE "
If grd.Gset(0, rec) <> grd.regi(0) Then
<@@LOOPPKEY>
sql = sql & "@@!Identifier=" & @@CASE(@@!Format,DataTipo)(grd.regi(G@@!Identifier)) & ","
</@@LOOPPKEY>
sql= c & sql
rs.Open sql, cn, adOpenForwardOnly, adLockReadOnly, adCmdText
cant = rs!cant
rs.Close
If cant > 0 Then
Cancel = True 'hay 2 claves iguales
Exit Sub
End If
End If
<@@LOOPPKEY> : Esta marca indica que hay que hacer un loop por cada campo Primary_Key.
@@!Identifier: Hace referencia al nombre del campo current.
@@CASE(@@!Format,DataTipo) : @@CASE indica que se va a usar una función. @@!Format, hace referencia al formato del campo current. DataTipo es el nombre de la función custom. Aclaro, esas funciones son definidas por el usuario, totalmente a medida según las necesidades. Pongo el ejemplo de DataTipo:
Código:
BEGIN Function DataTipo(Value)
CASE 'nvarchar['+* || CSql
CASE 'datetime' || FSql
CASE 'smalldatetime' || FSql
CASE 'money' || NSql
CASE 'real' || NSql
CASE 'int' || NSql
END DataTipo
Código:
<CodeMACs Version="0.1">
<DataBase Name="Testeo">
<Articulos>
<PrimaryKey>arti</PrimaryKey>
<Purpose> </Purpose>
<Items>
<arti>
<Field>0</Field>
<Format>nvarchar[16]</Format>
<Description> </Description>
</arti>
<nomb>
<Field>1</Field>
<Format>nvarchar[30]</Format>
<Description> </Description>
</nomb>
<fami>
<Field>2</Field>
<Format>tinyint</Format>
<Description> </Description>
</fami>
<rubr>
<Field>3</Field>
<Format>smallint</Format>
<Description> </Description>
</rubr>
<unid>
<Field>4</Field>
<Format>nvarchar[3]</Format>
<Description> </Description>
</unid>
<tiva>
<Field>5</Field>
<Format>tinyint</Format>
<Description> </Description>
</tiva>
<nota>
<Field>6</Field>
<Format>nvarchar[30]</Format>
<Description> </Description>
</nota>
<stok>
<Field>7</Field>
<Format>nvarchar[1]</Format>
<Description> </Description>
</stok>
<arts>
<Field>8</Field>
<Format>nvarchar[16]</Format>
<Description> </Description>
</arts>
<frac>
<Field>9</Field>
<Format>real</Format>
<Description> </Description>
</frac>
<prec>
<Field>10</Field>
<Format>money</Format>
<Description> </Description>
</prec>
</Items>
</Articulos>
</DataBase>
</CodeMACs>
Código:
c = "SELECT COUNT(*) AS cant FROM Articulos WHERE "
If grd.Gset(0, rec) <> grd.regi(0) Then
sql = sql & "arti=" & Csql(grd.regi(Garti)) & ","
sql= c & sql
rs.Open sql, cn, adOpenForwardOnly, adLockReadOnly, adCmdText
cant = rs!cant
rs.Close
If cant > 0 Then
Cancel = True 'hay 2 claves iguales
Exit Sub
End If
End If
@@LOOP: Hace un loop por cada campo de la tabla
@@IFPKEY: Es un if para saber si un campo es Primary Key y actuar en consecuencia.
@@!Index: Es un simple contador incremental dentro del loop
@@!FileName: Nombre del archivo a generar (se puede autoreferenciar)
@@!FileExt: Extensión del archivo a generar
@@!@: Es un arroba literal
@@!!: Es un ! literal
@@!(: Parentesis literal
@@!): Idem
Además pienso ponerle soporte para expresiones regulares.
Asi se ve el editor del XML en modo treeview.

La idea es hacerlo OpenSource. Y portarlo a Linux
Se entiende???? Fui claro en mi explicación??
Y lo más importante, que les parece la idea?
NOTA: Porqué lo posteo acá? Primero para que se enteren de que existe. Segundo, porque lo quiero portar a linux y liberar el codigo fuente. Y tercero porque, más allá de que está hecho para Windows (por ahora) genera código fuente en cualquier lenguaje, entonces, bien podrían usarlo para generar código que luego van a usar en linux.
Y 4to... porque creo que en este foro es donde más gente "abierta" e inteligente hay. Gente que puede ser capaz de apreciar algo hecho por otro con esfuerzo y sin fines de lucro.
Editado por apocalypse - 02.05.2009 12:23 hs.
0
desde aca lo unico que puedo hacer es darte el " segui para delante negro..!!" saludos