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:
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
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
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
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 ();
}
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.
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:
Quitamos el Main porque en este caso no es necesario. Posteriormente vamos agregar un JFrame directamente del asistente:
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
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
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.
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);
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;
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.
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) .
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
Como este comando se mantiene permanente hay que reiniciar la consola y puedes checarlo con el comando de echo
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á
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
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!
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.
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
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.
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.
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.
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:
Y listo podemos darle START y tendremos nuestro servidor apache funcionando, pueden calar en el navegador poniendo http://localhost
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.