Programación

Artículo: Historia de los lenguajes de programación

Encontre este artículo referente a la histroria de los lenguajes de programación, cuales son los lenguajes más populares y una prespectiva de lo que podrán ser los lenguajes de programación del futuro.

Muy didáctico el artículo incluso para los que no estén relacionados con sistemas.

Ver artículo

Ultimos días

Hola.

Despues de mucho tiempo, pero muchoooo de no escribir un post, debido a que he andado muy ocupado, con la graduación y trabajo, peo bueno, ya un poco mas desaogado, el próximo lunes es mi exámen profesional y pues a ver que tal me va.

Tambien, ya tengo mí dominio, y próximamente estara allá hostpedada esta página, nadamas que habra muchos cambios en cuanto al diseño del sitio y administración de contendido, nadamas que va a llevar un poco de tiempo, esperemos que para mediados de diciembre quede listo.

Bueno, me retiro.

Saludos (y)

Tabla con componentes

He estado tratando de hacer unos componentes que ayuden a generar el molesto html cuandos se esta trabajando con PHP, esto para tratar de revolver código HTML con el código PHP.

Hasta ahorita he realizado un pequeño componente que genera tablas de datos, tipo los componentes Grid de otros lenguajes, es una clasesita que tiene diferentes metodos que son con los que se llenan los datos de las tablas y se van definiendo algunas propiedades, ahora veamos el elemplo.

Para generar la siguiente tabla:

Nombre Dirección Telefono E-mail
Jesus Reyna Ebano 3149 83688680 jgreyna@gnu.itnl.edu.mx
Pedro Martinez Caracol 965 81458596 pedro@gnu.itnl.edu.mx

Se utilizo el siguiente código:

<?

include("PHPDataGrid.php");

$grid = new PHPDataGrid("primera","50%","center");

// Definimos las columnas a utilizar
$grid->setColum("Nombre","nombre");
$grid->setColum("Dirección","dir");
$grid->setColum("Telefono","tel");
$grid->setColum("E-mail","mail");
// Color del encabezado
$grid->colorTitle("gray");

// Color de las columnas
$grid->alternateRows("#aaaaaa","dddddd");

// Creamos un renglon
$grid->addRowData("nombre","Jesus Reyna");
$grid->addRowData("dir","Ebano 3149");
$grid->addRowData("tel","83688680");
$grid->addRowData("mail","jgreyna@gnu.itnl.edu.mx");
$grid->setRow();

// y despues otro, y asi pueden irse creando, en un ciclo
$grid->addRowData("nombre","Pedro Martinez");
$grid->addRowData("dir","Caracol 965");
$grid->addRowData("tel","81458596");
$grid->addRowData("mail","pedro@gnu.itnl.edu.mx");
$grid->setRow();

// Imprimimos la tabla
echo $grid->display();

?>

Como ven, es solamente pasar los parametros necesarios para poder generar dicha tabla, esta clase esta apenas en desarrollo, falta hacer validaciones y quiza hay que meter el trabajo con estilos para darle formato.

Saludos.

Creación de cuentas para lx

Hoy domingo, en lugar de salirme a divertir o hacer otra cosa, estube haciendo un pequeño scripcito para dar de alta las cuentas de los alumnos en lx, ahora decidí usar Perl para dicho script.

Aquí el código.

#!/usr/bin/perl

#############################################
#  Name: makecounts                                              
#  Author: Jesús Reyna (jgreyna@lx.itnl.edu.mx)    
#  Description: This script make two files to create
#               acounts in the server:                    
#                                                                
#               cuentas.sh: Bash script to create acounts  
#                           using useradd whit random password.
#               alumnos-password.txt: Information to user and
#                                     password generate          
#                                                                
#               The script need a file with the control numbrer  
#               and namde to alumn, this file is put whit        
#               parameter to script                              
#############################################

# Check the path to file exist, this path is a parameter
# of the script
if ($ARGV[0] eq "")
   {
   print "\nError de sintaxis..\n Ej. makeacounts <archivo>\n\n";
   exit;
   }

# Vars whith the name of the files
$file_data = $ARGV[0];
$file_script = "cuentas.sh";
$file_password = "alumnos-password.txt";

# Open the files
open(FILE_DATA,"$file_data") || die { print "  Error al abrir el archivo:  $!\n"};
open (FILE_SCRIPT,"> $file_script");
open(FILE_PASSWORD,"> $file_password");

# Print the line to call the bash script
print FILE_SCRIPT "#!/bin/bash\n\n\n";

while(<FILE_DATA>)
    {
     
     # Use chomp to delete the end line
     chomp;
   
     # Value of the line of the file is a var $_
     # Use split to get the control numbre and name  
     # the array @user contain the values (control number and name)
     @user = split(/,/,$_);

     # The var $username contain the acount to create and
     # $name containt the name of alumn
     $username = "al".$user[0];
     $name = $user[1];
     
     # Get the password from command line using makepasswd
     # and chop to delete the end line
     $pass = `makepasswd –crypt-md5 –chars 5`;
     chop $pass;
     
     # Use split to get the password and crypt password
     @pwd = split(/   /,$pass);
     
     # The var $password contanin the password in text plain and
     # the var $pwdcrypt contain the crypt password
     $password = $pwd[0];
     $pwdcrypt = $pwd[1];
     
     # Print the line on the script file and send message to standar output
     print FILE_SCRIPT "useradd -c \"$name\" -p ‘$pwdcrypt’ -s /bin/bash -m $username;\n";
     print FILE_SCRIPT "echo \"Cuenta $username creada.\";\n\n\n";
 
     # Print the line on the alumnos-password file
     print FILE_PASSWORD "$name, $username, $password\n";
     
     # Send message to standar output
     print "Agregando $username\n"
     
    }

# Make executable a script file
chmod 755, $file_script;

# Print the end message
print "\nTerminada la creación de cuentas\n\n";

Le puse los comentarios en inglés, pués para practicarlo, aunque la verdad no se si esten bien escrito, pero bueno, mas que todo los puse para mamonear ;)

Saludos (y)

Código para colorear sintaxis

Aquí esta el código con el cual hago colorear la sintaxis de diferentes lenguajes, es una modificación del que se usa en Jaws.

Cualquiera puede usarlo libremente.

<?
/*
 * SyntaxHighlight.php: parse_text plugin to higlight syntax in different
 * languages
 *
 */

include("syntax.php");

function ColoreaSintaxis($html) {
       $new_html = preg_replace_callback("#\[code=\"?(.*?)\"](.*?)\[/code\]#si",
          "PrepareCode","PrepareCode",html);
     return $new_html;
}

function PrepareCode($code_information) {
        $code = $code_information[2];
        $lang = $code_information[1];  
        $code = str_replace (" ", "&bsp;", $code);
        $code = str_replace ("<", "&lt;", $code);
        $code = str_replace (">", ">", $code);
        $new_html = "<div id=\"codigo\">";
        $valid_lang = array("C","PHP","Perl","C++","C99","Java","VB",
                           "C#","Ruby","Python","Pascal","PL/I");
       if ($lang == "terminal")
                $new_html = "<div class=\"codigo\">".$code;
        elseif (in_array($lang,$valid_lang))
                $new_html.= syntax_highlight($code, $lang);
        else
                $new_html.= $code;
        $new_html.= "</div>";
        return $new_html;
}
?>

Y también se debe de poner el archivo syntax.php que es el que hace el parsing y los colores. Ya nadamas es cuestión de que agregen sus CSS al gusto.

Espero les sirva ;)

Primeros pasos en Python y Glade

Èste domingo, despúes de haber realizado algunas actividades domesticas me puse a leer un manual y checar algunos ejemplos hechos con Python y Glade, me puse a moverle y pude hacer un muy pequeño ejemplito pero que me sirvió para ver el funcionamiento de estas dos herramientas.
Utilizé una pequeña clase hecha por Sandino Flores (aka tigrux) que me bajé de su primates.
El ejemplo consite en hacer una interfaz en donde le indiquemos 2 números y nos de la suma de ellos, el procedimiento fue el siguiente:

Creamos la interfaz utilizando Glade

Insterfase Glade

Despúes realizamos el código en Python

#!/usr/bin/python
import gtk

# Mandamos llamar la clase que construye la interfaz
# esta fue echa por el Tigrux (Sandino Flores)

from SimpleGladeApp import SimpleGladeApp

# Creamos una clasesita
class Sumador(SimpleGladeApp)
     # Ponemos el metodo que repondera al evento
     # clicked en el boton aceptar
     def on_buttonAceptar_clicked(self,widget):
          valor1 = self.entryNumero1.get_text()
          valor2 = self.entryNumero2.get_text()
          suma= int(valor1)+int(valor2)
          self.entrySuma.set_text(str(suma))
     
      # Metodo para terminar la aplicacion al dar
      # click en el boton cancelar
      def on_buttonCancelar_clicked(self,widget):
          gtk.main_quit()
          print "Adios"

# Creamos la aplicacion y le ponemos el path
# del archivo generado por Glade y la llamamos

aplicacion = Sumador("ejemplo1.glade")
aplicacion.run()

Despúes de esto solamente ejecutamos el script

[code="Terminal"]
[ 14:57:23 ][jesus@DarkAngel][~/ProyectosGlade/Ejemplo1]
python EjemploOperacion.py
[/code]

Y listo, el resultado es el siguiente

Aplicacion Glade

Espero con esto, aprender mas y así poder realizar algunos proyectos de la escuela en plataforma Linux y de paso seguir aprendiendo por si en algún día requiero hacer alguna aplicación gráfica.

Domingo tranquilo

Después de estar en cautiverio por dos días en casa del Aldred hemos salido Ivan, Zimri y yo para dirigirse cada quien a su hogar y continuar su vida normal, je je, es increíble como podemos pasar tanto tiempo pegados a la pantalla de la computadora, y creo que ya estamos algo mal de la cabeza ja ja, pero bueno, de las cosas que hice en estos dos días fueron: bajar música (y un buen de ella), tirar algo de código y comer, fueron básicamente las cosas que hice y ahorita ya estoy en la tranquilidad de mí casa, descansando antes de volver a las labores escolares mañana en la mañana.
Ayer tuve problemas, ya que por alguna extraña razón estaba teniendo errores al realizar consultas en Mysql usando rand() y no había tendido oportunidad de checarlo, pero ahorita ya investigando y leyendo un par de documentos, he encontrado que el error que marcaba era debido a que ya no había espacio en disco, entonces ya me conecte al server y cheque que en realizad, ya no tenía espacio, y al seguir observando el porcentaje de las carpetas note que había un archivo en / que pesaba 14Gb, y me quede :o y procedí a borrarlo y ya, tan tan, asunto arreglado, ya funcionaron correctamente todas las consultar y por consiguiente mí galería de imágenes, ahora mí explicación a este problema:

Mysql como cualquier otro manejador de base de datos, crea tablas temporales para realizar ciertas transacciones, al parecer utiliza la carpeta /tmp pero al estar dicha carpeta en la partición llena, marcaba error al intentar crear las tablas temporales y eso provocaba que no se llevara a cabo la consulta.

Bueno, espero que ya entrando a la escuela pueda reinstalar al buen lx porque ya esta algo desactualizado y hay que tenerlo listo para antes de que se den de alta los usuarios nuevos. Aunque todavía no esta decidido que distribución ponerle, lo mas probable es que quede instalado con Fedora.