martes, 26 de noviembre de 2013

Uso de la etiqueta @Font-face en CSS para importar tipografía a nuestra pagina


Uno de los problemas que tenemos al tratar de desarrollar una pagina mas los que vamos empezando es que la tipografía que yo tengo en mi computadora muchas veces va acorde a lo que tengo programando, pero recordemos que estas tras un mundo de posibles clientes a tu, por lo que puede ser que tu cliente no tenga el estilo de fuente que tu ves que en tu sitio es el adecuado, por lo que en la parte de CSS 3 tenemos la siguiente etiqueta font-face para importar la tipografía directamente el servidor o directamente desde un servicio publico.

Buena para eso su uso viene especificado directamente en la referencia CSS3 de la siguiente manera:

@font-face
{
font-family: myFirstFont;
src: url('Sansation_Light.ttf'),
     url('Sansation_Light.eot'); /* IE9 */
}

Por ejemplo en la imagen que estoy utilizando manejo un tipo de letra FiraSansOT-RegularItalic para el texto y para encabezado chango. La primera de ellas la traigo directamente de la carpeta de mi servidor y la otra la vinculo al servicio de google fonts

Primero voy a crear mi pagina
<!DOCTYPE html>
<html>
<head>  
   <title> Probando Css Externo</title>
   <link href="theme.css" rel="stylesheet" type="text/css"></link>
   <link href="http://fonts.googleapis.com/css?family=Chango" rel="stylesheet" type="text/css"></link>
</head>
<body>
   <h1>
Pagina de prueba </h1>
<p>
Esta es una pagina para probar etiquetas con
formato en css en un archivo externo  para mejor
acomodo</p>
</body>
</html>


Notemos la linea

 <link href='http://fonts.googleapis.com/css?family=Chango' rel='stylesheet' type='text/css'>

Esta linea hace referencia a que se manejara un servicio de google fonts para poder hacer la llamada, con eso ya tengo activado chango

Por ultima creamos nuestra hoja de estilo css



@font-face {
 font-family: Propia;
 src: url(FiraSansOT-RegularItalic.otf) format("opentype");
}

p{
 font-family: Propia;
}

h1{
 font-family: 'Chango', cursive;
}

Una interfaz sencilla utilizando GTK 3.0, Bluez y C

En el post anterior estuvimos viendo como crear una interfaz de una forma sencilla de la siguiente forma nuestra intención es que podamos controlar un mini-robot y podamos activar los motores para su movimiento.


Lo primero que vamos a necesitar es un chasis para mini robot proposito general, arduino, un puente H, pilas, bluetooth shield para arduino y algunos cables para las conexiones. (No abarcaremos las conexiones puesto que el objetivo del post es la programación)

Estamos utilizando en este ejemplo una versión de Linux en este caso Mint para poder hacer toda la programación, para eso necesitamos las librerías estándar de programación y en este caso bluez que ya viene prácticamente ya viene instalado solo necesitamos las librerías que usaremos.

Pues vamos a instalarlo lo primero que debemos hacer es poner el siguiente comando:

$ sudo apt-get install libbluetooth-dev

Una vez que tenemos instalado las librerias, vamos a trabajarlo directamente en el codigo que estamos utilizando para la interfaz por lo que para este ejemplo el arduino tiene programado que cuando reciba una "a", prenda los motores para que avance el carro, cuando recibe una "r" hacia atrás, "i" a la izquierda y "d" a la derecha.

Empezaremos por declarar el socket para podernos comunicarnos por bluetooth

    struct sockaddr_rc addr = { 0 };
    int status;
    char dest[18] = "00:13:03:19:00:50";
    s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
    addr.rc_family = AF_BLUETOOTH;
    addr.rc_channel = (uint8_t) 1;
    str2ba( dest, &addr.rc_bdaddr );
    status = connect(s, (struct sockaddr *)&addr, sizeof(addr));

Donde en el arreglo de "dest" tenemos la dirección tarjeta por ultimo con status(si es  0 se conecto) revisamos que realmente se haya podido dar la conexión.

Una vez que todo haya salido correcto, añadiremos los cuatro metodos para que puedan mover el carro:

//methods
static void go(GtkWidget *widget, gpointer data){
    int status = write(s,"a",6);
    if( status < 0 ) perror("uppps error");
    //printf("avanzo");
}

static void back(GtkWidget *widget, gpointer data){
    int status = write(s,"r",6);
    if( status < 0 ) perror("uppps error");
}

static void left(GtkWidget *widget, gpointer data){
    int status = write(s,"i",6);
    if( status < 0 ) perror("uppps error");
}


static void right(GtkWidget *widget, gpointer data){
    int status = write(s,"d",6);
    if( status < 0 ) perror("uppps error");  
}


Por ultimo verificamos que cuando salgamos de la ventana se cierre la conexión 

static gboolean delete_window(GtkWidget *widget, GdkEvent *event, gpointer data){
     close(s);
     gtk_main_quit();
     return FALSE;
}


Aquí muestro el código completo no hay separación por lo que basta seguirlo de la siguiente manera 

///Bluetooth Library 
#include 
#include 
#include 
#include 

#include 
//variables
int s; 

//methods
static void go(GtkWidget *widget, gpointer data){
    int status = write(s,"a",6);
    if( status < 0 ) perror("uppps error");
    //printf("avanzo");
}

static void back(GtkWidget *widget, gpointer data){
    int status = write(s,"r",6);
    if( status < 0 ) perror("uppps error");   
}

static void left(GtkWidget *widget, gpointer data){
    int status = write(s,"i",6);
    if( status < 0 ) perror("uppps error");
}


static void right(GtkWidget *widget, gpointer data){
    int status = write(s,"d",6);
    if( status < 0 ) perror("uppps error");    
}

static gboolean delete_window(GtkWidget *widget, GdkEvent *event, gpointer data){
     close(s);
     gtk_main_quit();
     return FALSE;
}

static void close2(GtkWidget *widget, gpointer data) {
    close(s);
}

int main (int argc, char *argv[]) {

    //manager bluetooth
    struct sockaddr_rc addr = { 0 };
    int status;
    char dest[18] = "00:13:03:19:00:50";
    s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
    addr.rc_family = AF_BLUETOOTH;
    addr.rc_channel = (uint8_t) 1;
    str2ba( dest, &addr.rc_bdaddr );
    status = connect(s, (struct sockaddr *)&addr, sizeof(addr));
    //A program that has a window and four buttons to control the mini-robot    

    //Declaration of variables or components 
    GtkWidget *window; 
    GtkWidget *buttonUp;
    GtkWidget *buttonDown;
    GtkWidget *buttonLeft;
    GtkWidget *buttonRight;
    GtkWidget *grid;
    GtkWidget *label;
    GtkWidget *cerrar; 
    //initialization 
    gtk_init (&argc, &argv);
    /// create a new Window 
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    // Set title for window
    gtk_window_set_title (GTK_WINDOW (window), "Control automatico");
    // Set window resize 
    gtk_window_set_default_size(GTK_WINDOW(window), 385, 395);
    // Method for destroying the window    
        g_signal_connect(window,"delete_event",G_CALLBACK(delete_window),NULL);
    if(status==0){ 
    //create grid
        grid = gtk_grid_new();
        gtk_grid_set_row_homogeneous(GTK_GRID(grid),TRUE);
        gtk_grid_set_column_homogeneous(GTK_GRID(grid),TRUE);
    //add container 
        gtk_container_add(GTK_CONTAINER(window),grid);    
    //Create buttons and append in to Grid
        buttonUp = gtk_button_new_with_label("Avanzar");
        g_signal_connect(buttonUp,"clicked",G_CALLBACK(go),NULL);
        gtk_grid_attach(GTK_GRID(grid),buttonUp,2,0,1,1);        
        buttonDown = gtk_button_new_with_label("Atras");
        g_signal_connect(buttonDown,"clicked",G_CALLBACK(back),NULL);
        gtk_grid_attach(GTK_GRID(grid),buttonDown,2,2,1,1);
        buttonLeft = gtk_button_new_with_label("Izquierda");
        g_signal_connect(buttonLeft,"clicked",G_CALLBACK(left),NULL);
        gtk_grid_attach(GTK_GRID(grid),buttonLeft,1,1,1,1);
        buttonRight = gtk_button_new_with_label("Derecha");
        cerrar = gtk_button_new_with_label("Read");
        gtk_grid_attach(GTK_GRID(grid),cerrar,0,0,1,3);
        g_signal_connect(cerrar,"clicked",G_CALLBACK(close2),NULL);
        g_signal_connect(buttonRight,"clicked",G_CALLBACK(right),NULL);
        gtk_grid_attach(GTK_GRID(grid),buttonRight,5,1,1,1);    
    //show the widgets
    }else {
        label = gtk_button_new_with_label("No se encontro Device");
        g_signal_connect(label,"clicked",G_CALLBACK(delete_window),NULL);
        gtk_container_add(GTK_CONTAINER(window),label);
    }
    gtk_widget_show_all (window);
    gtk_main ();

}


Lo guardamos con extensión .c (en mi caso carro.c) y lo compilamos de la siguiente manera

$ gcc carro.c -o carro `pkg-config --cflags --libs gtk+-3.0` -lbluetooth

Una vez que tenemos ya nuestro programa lo ejecutamos y probamos

$ ./carro

Funcionamiento:

miércoles, 20 de noviembre de 2013

Una interfaz sencilla utilizando GTK 3.0


Vamos a realizar un simple interfaz con cuatro botones a puro código utilizando GTK, que posteriormente nos servirá para controlar un pequeño mini-robot por medio de bluetooth. 


El código esta programado en C y utilizando las librerías de GTK 3.0 compilado y ejecutado en un entorno de Linux Mint por lo que comente el codigo  de lo que fui entendiendo: 

  //Autor : José Luis Cobian
// @cobymotion
// Work with GTK 
//noviembre 2013

#include 
//method for window destroy 
static gboolean delete_window(GtkWidget *widget, GdkEvent *event, gpointer data){
     gtk_main_quit();
     return FALSE;
}

int main (int argc, char *argv[]) {

    //A program that has a window and four buttons to control the mini-robot
    //Declaration of variables or components 
    GtkWidget *window; 
    GtkWidget *buttonUp;
    GtkWidget *buttonDown;
    GtkWidget *buttonLeft;
    GtkWidget *buttonRight;
    GtkWidget *grid;
    //initialization 
    gtk_init (&argc, &argv);
    /// create a new Window 
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    // Set title for window
    gtk_window_set_title (GTK_WINDOW (window), "Control automatico");
    // Set window resize 
    gtk_window_set_default_size(GTK_WINDOW(window), 385, 395);
    //create grid
    grid = gtk_grid_new();
    //Expand the window across the grid
    gtk_grid_set_row_homogeneous(GTK_GRID(grid),TRUE);
    gtk_grid_set_column_homogeneous(GTK_GRID(grid),TRUE);
    //add container 
    gtk_container_add(GTK_CONTAINER(window),grid);
    // Method for destroying the window    
    g_signal_connect(window,"delete_event",G_CALLBACK(delete_window),NULL);
    //Create buttons and append in to Grid
    buttonUp = gtk_button_new_with_label("Avanzar");
    gtk_grid_attach(GTK_GRID(grid),buttonUp,1,0,1,1);
    buttonDown = gtk_button_new_with_label("Atras");
    gtk_grid_attach(GTK_GRID(grid),buttonDown,1,4,1,1);
    buttonLeft = gtk_button_new_with_label("Izquierda");
    gtk_grid_attach(GTK_GRID(grid),buttonLeft,0,2,1,1);
    buttonRight = gtk_button_new_with_label("Derecha");
    gtk_grid_attach(GTK_GRID(grid),buttonRight,4,2,1,1);    
    //show the widgets
    
     gtk_widget_show_all (window);
     gtk_main ();

}


Para compilarlo utilizamos: 

gcc carro.c -o carro `pkg-config --cflags --libs gtk+-3.0`


Espero les sirva 




viernes, 1 de noviembre de 2013

[Mint] Error: Your Firefox profile cannot be loaded. It may be missing or inaccessible


Uno de los mejores navegadores que hay, si no que el mejor es Firefox, pero en las semanas pasadas los que tenemos equipos con ubuntu o en su caso tenemos equipos con Mint hemos tenido un pequeño problema, en la actualizacion de firefox 25. 

Si después de actualizar tienes el problema siguiente: 

Your Firefox profile cannot be loaded. It may be missing or inaccessible

La forma de solucionarlo es sencilla el problema principal es que en el cache de la carpeta de firefox no se ha podido acceder al perfil, por lo que solo hay que dar los permisos, para esto primero entramos a la carpeta: 

cd ~/.mozilla/firefox/

Estando ahí borraremos el de profiles.ini

Despues nos cambiaremos de carpeta a la de cache por lo que entramos con el comando 

cd ~/.cache

Estando ahí solo daremos permisos al usuario para que pueda acceder y posteriormente pueda crear un perfil nuevo. 

sudo chown -R coby:coby ./mozilla

Teniendo en cuenta que mi usuario se llama Coby, únicamente ingresamos el password y listo, puedes abrir tu firefox espero les haya servido. 

Saludos!


lunes, 14 de octubre de 2013

[Java] Utilizando LookFeel: substance

 

Los Look and Feel son estilos adicionales que tienen para aplicarlos en java. Por si solos Java maneja sus propios componentes, actualmente Java maneja Metal, Nimbus, CDE/modif, Windows y Windows Classic. Pero en la red te puedes encontrar algunas otras librerías que puedes usar, por ejemplo en este caso Substance es una librería que ya tiene un poco de tiempo pero igual tiene todavía mucho que explorar.

Substance es muy fácil de usar y es muy completo te permite trabajar con Skins, Themes, watermark y Api para modificar componentes gráficos, en nuestro ejemplo nos basaremos en los skins.

Lo primero que haremos es crear un nuevo proyecto de java utilizando Netbeans , y vamos a dejarlo de la siguiente forma:

image

Quitamos el Main porque en este caso no es necesario. Posteriormente vamos agregar un JFrame directamente del asistente:

image

Ya en este caso le pondré de nombre “Menu”

Ya una vez terminado y creado mi Frame, creare una clase normal de Java con un main que va a ser mi clase de inicio

La pongo con el siguiente código

 

package com;
import javax.swing.JDialog;
import javax.swing.JFrame;
import org.jvnet.substance.SubstanceLookAndFeel;


public class Inicio {

public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
SubstanceLookAndFeel.setSkin("org.jvnet.substance.skin.ModerateSkin");
Menu menu = new Menu();
menu.setLocationRelativeTo(null);
menu.setVisible(true);
}

}

 


Esto me activara el decored para los JFrame y los JDialog, por lo que me permite utilizar la librería, y por ultimo utilizo la siguiente línea antes de invocarla para que la ventana ya se mande con el SKIN escogido


 

        SubstanceLookAndFeel.setSkin("org.jvnet.substance.skin.ModerateSkin"); 

Algunos skin que puedes manejar son los siguientes:



  • org.jvnet.substance.skin.AutumnSkin
  • org.jvnet.substance.skin.BusinessBlackSteelSkin
  • org.jvnet.substance.skin.BusinessBlueSteelSkin
  • org.jvnet.substance.skin.BusinessSkin
  • org.jvnet.substance.skin.CremeCoffeeSkin
  • org.jvnet.substance.skin.CremeSkin
  • org.jvnet.substance.skin.EmeraldDuskSkin
  • org.jvnet.substance.skin.FieldOfWheatSkin
  • org.jvnet.substance.skin.FindingNemoSkin
  • org.jvnet.substance.skin.GreenMagicSkin
  • org.jvnet.substance.skin.MagmaSkin
  • org.jvnet.substance.skin.MangoSkin
  • org.jvnet.substance.skin.MistAquaSkin
  • org.jvnet.substance.skin.ModerateSkin
  • org.jvnet.substance.skin.NebulaBrickWallSkin
  • org.jvnet.substance.skin.NebulaSkin
  • org.jvnet.substance.skin.OfficeBlue2007Skin
  • org.jvnet.substance.skin.OfficeSilver2007Skin
  • org.jvnet.substance.skin.RavenGraphiteGlassSkin
  • org.jvnet.substance.skin.RavenGraphiteSkin
  • org.jvnet.substance.skin.RavenSkin
  • org.jvnet.substance.skin.SaharaSkin

Chequen los cambios que pueda haber en las ventanas


Con Skin:


image


Sin Skin


image

miércoles, 2 de octubre de 2013

[Guia de instalacion] Instalar FFmpeg developers, Debian, Ubuntu o Mint

Para los que les gusta el trabajar con aplicaciones que quieran meter cosas multimedia como por ejemplo musica y video streaming, les dejo como configurar las librerias FFmpeg, que realmente para los que empezamos con linux, es una pesadilla porque hay que generar dependencias, instalar librerias etc.. Para eso podemos crear un script para que haga todo el trabajo. En este caso tiene una extensión sh. 

Lo puedes descargar desde aqui : installffmpeg.sh

Una vez que lo tengas, tienes que darle los permisos para ejecutar por lo que usas: 

chmod +x installfmpeg.sh

Y por el ultimo lo ejecutas

./installfmpeg.sh

Y empezara a instalar todo los requerimientos con un solo comando 

Saludos

martes, 24 de septiembre de 2013

[Java] Dibujar un triangulo usando la longitud de sus lados

 

Es algo un poco complicado de calcular la verdad pero le dejo una buena idea

triangulo



import java.util.Scanner;
import java.awt.*;
import java.util.HashSet;

import javax.swing.JFrame;
import javax.swing.JOptionPane;


public class Triangulo {

public static void main(String[] args) {



Scanner reader = new Scanner(System.in);


System.out.print("Dame el primer lado de triangulo (mas pequeño)");
int a = reader.nextInt();
System.out.println ("Segundo lado del triangulo");
int b = reader.nextInt();
System.out.println ("Tercer lado del triangulo ");
int c = reader.nextInt();

// System.out.print(area);
//AQUI DIBUJA EL TRIANGULO

DibujaTriangulito dibuja = new DibujaTriangulito("Dibujo Triangulito",a,b,c);

dibuja.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
dibuja.setVisible(true);
dibuja.setSize(500, 400);
}

}

class DibujaTriangulito extends JFrame {

private int a;
private int b;
private int c;

public DibujaTriangulito(String title, int a, int b, int c)
{
super(title);
this.a=a;
this.b=b;
this.c=c;
}

public void paint(Graphics g){
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
int inicialX=20;
int inicialY=380;
g.drawLine(inicialX, inicialY, inicialX+(a*30), inicialY);

int radio = b*15;
HashSet c1 = new HashSet();
HashSet c2 = new HashSet();
for (double grados = 0; grados<(2*Math.PI); grados=(grados+(Math.PI/(b*30)))) {
double x = (Math.cos(grados)*radio)+inicialX;
double y = (Math.sin(grados)*radio)+inicialY;
int xInt= (int)x;
int yInt =(int)y;
c1.add(new Puntito(xInt, yInt));
//Ellipse2D ellipse = new Ellipse2D.Double(x-1, y-1, 1, 1);
//g2d.draw(ellipse);
}
System.out.println("-----------------");
radio=c*15;
for (double grados = 0; grados<(2*Math.PI); grados=(grados+(Math.PI/(c*30)))) {
double x = (Math.cos(grados)*radio)+inicialX+(a*30);
double y = (Math.sin(grados)*radio)+inicialY;
int xInt= (int)x;
int yInt =(int)y;
//Ellipse2D ellipse = new Ellipse2D.Double(x-1, y-1, 1, 1);
//g2d.draw(ellipse);
c2.add(new Puntito(xInt, yInt));
}

int lapsoX=0;
int lapsoY=0;
for(Puntito punto:c1){
for (Puntito puntito : c2) {
if(punto.equals(puntito)){
System.out.println("x: " + punto.getX());
lapsoX=punto.getX();
System.out.println("Y: " + punto.getY());
lapsoY=punto.getY();
}
}
}

if(lapsoX==0)
JOptionPane.showMessageDialog(null, "No hay manera de hacer circulo");
else
{
g.drawLine(inicialX, inicialY, lapsoX, lapsoY);
g.drawLine(lapsoX, lapsoY, inicialX+(a*30), inicialY);
}
}
}

class Puntito {
private int x;
private int y;

public Puntito(int x, int y) {
this.x = x;
this.y = y;
}

public int getX() {
return x;
}

public int getY() {
return y;
}

@Override
public boolean equals(Object obj) {
Puntito punt = (Puntito)obj;
int variX = Math.abs(x-punt.getX());
int variY = Math.abs(y-punt.getY());
if((variX<2&& variY<1) && punt.getY()<380 )
return true;
else
return false;

}

}



[Java] Generar la secuencia del triangulo de pascal


Un poco de código para practicar un poco
import java.util.Scanner;

public class Triangulo {    
    public static void main(String[] args) {
        int arre1[]=null;
        int arre2[]=null;
        System.out.println("Dame un numero");
        int num = new Scanner(System.in).nextInt();
        for(int i=0;i            arre2=new int[i+1];
            if(arre2.length==1){
                System.out.println("1");
               arre2[0]=1;
            }
            else
            {
                for(int j=0;j<=i;j++)
                {
                    if(j==0 || j==arre2.length-1)
                    {System.out.print("1 ");
                      arre2[j]=1;
                    }   
                    else {
                         arre2[j]=arre1[j-1]+arre1[j];
                        System.out.print(arre1[j-1]+arre1[j] + " ");
                        } 
                }
                System.out.println("");
            }
            arre1=arre2;
        }
    }
    
}

jueves, 8 de agosto de 2013

[Windows]Configurar variables de entorno desde cmd

 

Muchas veces necesitamos programar en lenguajes como java o como phyton los cuales requieren configurar variables de entorno, aunque hay muchos bundle’s con IDE y compilador que prácticamente lo hace transparente para el usuario. Windows se caracteriza por ser un sistema operativo que tiene una facilidad (asistentes) para su configuración, por lo que en el caso de las variables de entorno no es la excepción, podemos hacerlo mediante “System” en opciones avanzadas encontramos la opción.

image

Modificamos la variable y listo se ve reflejado, sin embargo nos podemos encontrar algún escenario que queramos que nuestro instalador cree una variable de entorno mediante programación o simplemente estamos en la moda de la consola y queremos hacerlo porque somos anti – configurations wizards hay comandos que podemos utilizar.

En la consola de Windows podemos utilizar set o setx, la diferencia de uno y de otro es si queremos que las variables de entorno queden permanente (setX) .

path

Para poder configurar una variable de entorno utilizamos el comando setX, por ejemplo si el path que queremos configurar es c:\pppp hacemos lo siguiente

Para poder mostrar lo que tenemos actualmente en el path

echo %path%

Ahora a modificarlo, para modificarlo solo ponemos lo siguiente:

setx path “%path%;c:\pppp” /m

path2

Como este comando se mantiene permanente hay que reiniciar la consola  y puedes checarlo con el comando de echo

path3

Puedes usarlo también de la siguiente manera setx path c:\unos y te lo agregara al final pero si quieres volver agregar otro lo sobrescribirá

Mas información sobre setX

http://technet.microsoft.com/en-us/library/cc755104.aspx

Espero les haya servido

viernes, 7 de junio de 2013

[Video] Conectar mediante JPA a mysql leyendo datos. Java WEB



En esta segunda parte del ejercicio muestro como pueden mostrar en un JSP los datos en una vista con una pagina JSP mostrar los datos. Este ejercicio esta basado en el post anterior , por lo que es importante que lo hagas antes
Bajar el Ejercicio
Aquí
Clave:
fd3ohjcuGE87z9M-ORNK4lJCpBk0GlEIbAIpDVbuMho
Requisitos: 
http://luiscobian.blogspot.mx/2013/05/video-conectar-mediante-jpa-mysql.html

miércoles, 5 de junio de 2013

Estadística basica

Documentos de la materia de estadística básica ¿ ejercicios que subí de la universidad virtual para que les puedan ayudar como base para mejorar sus trabajos Saludos!

 Bajar

miércoles, 29 de mayo de 2013

[Video] Conectar mediante JPA a mysql grabando datos. Java WEB


En este video explico como poder usar la persistencia para grabar datos en una entidad de mysql por medio de Java Persistence, por lo que utilizo IDE como netbeans, utilizo XAMPP para el servicio de mysql y utilizo workbench para la administración de nuestro pequeño esquema. 
Cabe mencionar que esta hecho con tecnología de JAVA web utilizando JSP y Servlet.


martes, 28 de mayo de 2013

Fundamentos de programación




Documentos de la materia de fundamentos de programación ejercicios que subí de la universidad virtual para que les puedan ayudar como base para mejorar sus trabajos

Instalar Workbench en ubuntu 13.04


Muchos de nosotros no tenemos tanta experiencia en el manejo de las base de datos utilizando la consola por lo que muchas veces tratamos de conseguir un software que nos facilite la tarea, por ejemplo workbench. 

Workbench es una excelente herramienta que te permite practicamente toda la posible administración de tu gestor de base de datos, crear tus esquemas, tablas, vistas, procedimientos e inclusive tu diagrama por lo que vale la pena su funcionamiento. 

Para su instalación es sencillo solo seguimos los siguientes pasos:
1.- Descargar el paquete deb para ubuntu desde el siguiente vinculo
http://dev.mysql.com/downloads/tools/workbench

2.- Si lo instalamos en la versión 13.04 raring tenemos un problema con la dependencia de libctemplate0, estuve investigando y la única disponible es la libctemplate2 por lo que no nos sirve por lo que antes de instalar workbench instalaremos esta dependencia de forma manual(por decirlo a si) 
Bajaremos el archivo libctemplate0_97-1 que es el que al momento de publicar esta disponible desde los repositorios de debian (en lo que esta basado ubuntu ) y lo instalamos con un simple clic para que el centro de software.
http://ftp.br.debian.org/debian/pool/main/c/ctemplate/

3.- Una vez que instalamos usamos el mismo procedimiento para instalar workbench, damos clic y esperamos a que el centro de software lo instale. 


Ya tenemos funcionando nuestro programa.

domingo, 19 de mayo de 2013

Como instalar XAMPP en Ubuntu 64 bits

XAMPP es un conjunto de herramientas muy útiles si lo que quieres es empezar a programar Web ya que tiene todo lo necesario puedes tener un servidor de Apache, modulo de php instalado y una base de datos como mysql suficiente para implementar tus primeras pruebas, sin mencionar algunos otras características que pueden checar en http://www.apachefriends.org/en/xampp-linux.html.
Imagen 

Para instalarlo es muy sencillo solo seguimos los pasos que nos mencionan el la pagina Primero Paso: Descargar el XAMPP que prácticamente es un archivo que comprimido que puedes poner en cualquier lado en este caso nos mencionan que podemos ponerlo en /opt 

sudo tar xvfz xampp-linux-1.8.1.tar.gz -C /opt
Segundo paso Tendríamos que arrancarlo pero al momento de escribir este post no tenemos soporte para los 64 bits por lo que haremos en instalar las librerías de 32 bits para no tener problema lo hacemos poniendo los siguientes comandos
sudo apt-get install ia32-libs
sudo apt-get install lib32stdc++6
Ya con esto es mas que suficiente para poder usarlo, sin embargo vamos a facilitarnos un poco mas las cosas, ya que muchas veces vamos empezando en linux no estamos muy acostumbrados en la consola, en la carpeta de opt se creo una de lampp y dentro de ella hay un archivo lampp que cuando lo ejecutas con start empieza a correr los servicios, sin embargo vamos haciéndolo un poco mas gráfico. Tercer Paso: Instalar requerimientos Instalamos la siguiente librería:
sudo apt-get install python-glade2
Posterior instalamos gksudo para que permita ejecutar la aplicación de la siguiente manera
sudo apt-get install gksu
Crear el archivo sudo gedit /usr/share/applications/xampp-control-panel.desktop Poner dentro lo siguiente
[Desktop Entry]
Comment=Start/Stop XAMPP
Name=XAMPP Control Panel
Exec=gksudo python /opt/lampp/share/xampp-control-panel/xampp-control-panel.py
Icon[en_CA]=/opt/lampp/xampp.png
Encoding=UTF-8
Terminal=false
Name[en_CA]=XAMPP Control Panel
Comment[en_CA]=Start/Stop XAMPP
Type=Application
Icon=/opt/lampp/xampp.png
Cuarto Paso: Usar el panel Este ultimo procedimiento es para no estar diario con la consola arrancando los servicios por lo que tenemos un pequeño panel, por lo que podemos buscar la ruta /usr/share/applications el panel ya grabado puede ser que tengamos error con el icono, pero pueden descargar uno y peguenlo en /opt/lampp, una vez que estén ahí les aparecerá un panel de control XAMPP, demos doble clic nos pedira las credenciales del superusuario y posteriormente tendremos una ventana como esta:

 controlpanel 

  Y listo podemos darle START y tendremos nuestro servidor apache funcionando, pueden calar en el navegador poniendo http://localhost

miércoles, 8 de mayo de 2013

Configurar Java en Ubuntu 13.04



Java es un lenguaje que tiene una gran aceptación en los usuarios por la flexibilidad de tecnologías y plataformas en las cuales podemos trabajar. Para poder configurar un entorno de desarrollo adecuado de forma muy personal no me ha gustado el OPENJDK, que regularmente las versiones de Ubuntu o cualquier linux puede instalar de una manera mas sencilla, la verdad no se porque pero no me gusta mucho, por lo que aquí explicaremos como configurar ese entorno de desarrollo directamente del JDK de Oracle.

Primero lo que tienes que hacer es descargar el JDK, el cual lo puedes hacer de una manera sencilla en este sitio, http://www.oracle.com/technetwork/java/javase/downloads/index.html, ya que estemos en ese lugar vamos a la opción de Java platform (JDK), regularmente viene acompañado de un uX, donde la x corresponde a un numero del update que lleva hasta el momento la plataforma, en este momento en el numero que va es 21.

Una vez que le das un clic muy importante debes aceptar los términos una vez que los hayas leído, en este caso dependiendo la arquitectura de tu computadora puedes escoger el paquete que dice Linux 64 o Linux 86 (32bits), ten mucho cuidado en este caso para Ubuntu usaremos el que tiene extensión tar.gz.

Una vez que tienes descargado el archivo, solo tienes que descomprimirlo, puedes hacerlo directamente con clic derecho y extraer aquí, como sera donde este el entorno de desarrollo te recomiendo que lo pases a otra carpeta mas por ejemplo en mi caso lo pasara a la carpeta /opt, Si esa carpeta no es de tu agrado no te preocupes, puedes escoger la que tu quieras. Para esto abro una terminal, tomando en cuenta que es la primera vez que lo abro, que el archivo lo descargue con firefox y que las descargas están en la carpeta con el mismo nombre ejecuto lo siguiente.

cd Descargas
sudo cp -r jdk1.7.0_21 /opt
password: ******

Tomando en cuenta que el jdk1.7.0_21 es el nombre de la carpeta que me quedo al descomprimir

Sin cerrar la terminar hay que modificar un pequeño archivo para que tengamos el path funcionando.

sudo nano /etc/profile

Se abrirá un archivo en la parte de abajo escribe lo siguiente

Ya una ves terminado presionas ctrl+X y aceptas cambios. Posteriormente en la consola agregas

source /etc/profile

Y puedes calar que todo este corriendo bien de la siguiente manera poniendo el comando

java -version

Si te marca como versión 7 estamos listo.

Si solo lo necesitas para programar con nociones básicas ya no es necesario que hagas mas cosas, sin embargo por alguna razón puede ser que necesites que tu root ejecute algún comando de Java o en su defecto alguna otra aplicación si es así solo hay que hacer un poco de instalación para que sepa que ejecutar cuando pongamos el comando java o javac que son los mas comunes
 
sudo update-alternatives --install /usr/bin/java java /opt/jdk1.7.0_21/bin/java 1
sudo update-alternatives --install /usr/bin/javac javac /opt/jdk1.7.0_21/bin/javac 1

Listo ya tienes tu entorno correcto.