PATRONES DE DISEÑO: PROXY VIRTUAL

Posted: lunes, 26 de diciembre de 2011 by Skuarch in Etiquetas: ,
0


Proxy virtual se utiliza para no tener que estar creando objectos constantemente, especialmente si estos objetos son dificiles o costosos de hacer, un ejemplo de un objeto costoso puede ser la carga de una imagen y la imagen es de un gran tamano, para poder utilizar este patron de diseno se siguen estos pasos.

Crear una clase abstracta
public abstract class Graphic {
public void draw();
}
Creamos una clase que herede de la clase abstracta y sobre escriba el unico metodo de la clase padre


public class Image extends Graphic {
public void draw() { ... }
}

Ahora crearemos una tercera clase que tambien herede de la clase abstracta, tambien sobre escribira el 
mismo metodo pero este se asegura de que el objecto no haya sido creado anteriormente

public class ImageProxy extends Graphic {
private Image _image;
private String _fileName;
public ImageProxy (String fileName) {
_fileName = fileName;
_image = null;
}

public void draw () {
if (_image==null)
_image = loadImage(_fileName);
_image.draw();
}
}
La forma de de utilizar este patron de diseno es la siguente:

Graphic g = new ImageProxy(“imagen.gif”);

Asi evitaremos que se esten creando objetos constantemente


PATRONES DE DISEÑO: ADAPTER

Posted: jueves, 8 de diciembre de 2011 by Skuarch in Etiquetas: ,
0





El patron de diseño adapter nos ayuda a la comunicacion entre clases que hacen lo mismo pero que los metodos tienen nombres diferentes, por ejemplo, las conexiones de los aparatos electricos en America son diferentes a los de Europa, pero el aparato hace lo mismo en cualquiera de los dos continentes, pero no puedes usar un aparato electrico de Europa en America debido a que el tipo de conexion es diferente para poder usarlo debes de utilizar un adaptador


Este patron de diseño en ocaciones es llamado WRAPPER debido a que crea un objeto de otra clase y dentro de un metodo sobre cargado llama al metodo del objeto previamente creado.

Otra forma de explicar este patron de diseño es cuando se encuentran problemas con los nombre de los metodos por ejemplo en una conexion a la base de datos.


public class ConnectionDataBase(){
public Connection getConnection(){
// codigo para hacer la conexion
}
}


Esta clase es solo de ejemplo y esta en ingles, supongamos que tu codigo esta totalemente en español, entonces tendrias problemas de como usar esta clase y para eso creas un adaptador

public interface adaptador{
public Connection dameConexion();
}

Esta es la interface que debes de implementar en otra clase para poder usarla como normalmente lo harias

public class ConexionBaseDatos implements adaptador{
@override
public Connection dameConexion(){
ConnectionDataBase cdb = new ConnectionDataBase();
return cdb.getConnection();
}
}

Entonces implementando el adaptador ya se puede usar la clase que esta escrita en ingles en español.

Adapatador adaptador = new Adaptador();
adaptador.dameConexion();




PROGRAMACION MULTICORE EN JAVA

Posted: martes, 6 de diciembre de 2011 by Skuarch in Etiquetas: , , , ,
0


Si alguna vez te preguntaste si java (JVM) por si sola corre en varios nucleos a la vez, pues la respuesta es que si , pero en tu programa se debe de habilitar esto, y como diablos habilito esto ???, pues se tiene que crear ciertas funcionalidades en el codigo para usar multicore, lo primero que tenemos que hacer es saber cuantos nucleos tiene nuestro procesador

int processors = Runtime.getRuntime().availableProcessors();


Con esa simple linea de codigo sabes cuantos procesadores tenemos disponibles ahora nececitamos crear nuestro procesos independientes, la forma mas comun es esta.
ExecutorService executor = Executors.newFixedThreadPool(processors);

ExecutorService es una interface que hereda de Executor, como se puede apreciar se crea un pool de Threads y como parametros le mandamos el numero de procesadores que tiene el cliente donde se ejecutara. Ahora solo falta lanzar nuestros procesos
executor.execute(new Runnable(){
public void run(){
//aqui se hace algo ...
}
});

La mejor forma de iniciar un proceso es creando un hilo, hasta el final debemos de dar de baja el executor con la siguiente instruccion
executor.shutdown();

Esto te puede servir como introduccion para el manejo de diferentes procesos en java solo ten cuidado en no dejar Threads vivos asi como tambien la concurrencia.

PATRONES DE DISEÑO

Posted: lunes, 5 de diciembre de 2011 by Skuarch in Etiquetas: ,
0


Un patron de diseño es una solucion a un problema de diseño, algo que no se contemplo en el modelado del programa, los patrones de diseño son guias no reglas rigurosas,los patrones de diseño no solo resulven problemas, si no que tambien pueden ayudarte a evitarlos, los siguente es una lista de los patrones de diseño mas comunes
  • Factory Method
  • Decorator
  • Proxy (Protection)
  • Template Method
  • Abstract Factory
  • Facade
  • Proxy (Remote)
  • MVC
  • Adapter
  • Iterator
  • Proxy (Virtual)
  • Simple Factory
  • Command
  • Observer
  • Strategy
  • Composite
  • Singleton
  • State
En este blog comentare algunos de estos en futuras entradas, la idea de esta entrada es mostrar un panorama sencillo sobre los patrones de diseño mas usados, los que se muestran en la lista no son los unicos pero si los mas populares.

BORRAR PROYECTOS EN SVN

Posted: viernes, 14 de octubre de 2011 by Skuarch in Etiquetas: , ,
0


Para poder borrar algun projecto en Subversion puedes seguir este sencillo comando
svn delete -m "comentario" http://localhost/nombreDelRepositorio/nombreDelProyecto

esto solo sirve cuando subversion esta configurado para usarse por web

5


Requisitos
Telefono con andriod 2.3.4 (el mio es galaxy ace) no se si sirva en otros pero supongo que si
Tener el acceso de root en el telefono
Tener instalada una terminal en el telefono para poder hacer comandos yo use terminal emulator que puedes descargar desde el market

Este tutorial solo nececita de dos cosas fundamentales, tener acceso de root en el telefono y tener cualquier aplicacion para acceder via consola.

En esencia lo que se hace es montar una unidad y despues borrar las aplicaciones a mano, no nececitas instalar (comprar) root explorer ni cualquier otra aplicacion, con este sencillo tutorial te mostrare como hacerlo
Paso 1

abrir la terminar y poner el comando su (para poder hacer las cosas como super usuario)
Paso 2

montar una unidad con este comando mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
Paso 3

entrar a la carpeta donde estan las aplicaciones cd /system/app
Paso 4

ultimo paso borrar las aplicaciones de la siguiente manera y una por una rm nombreDelArchivo.apk
suguerencia de aplicaciones a desinstalar

AMXNotification.apk
AMXSearch.apk
Dlna.apk
Dlna.odex
LauncherEmail.apk
Email.apk Email.odex Forest.apk Forest.odex AMX_YahooSearch.apk
GameMenu.apk
GenieWidget.apk
iApps.apk
IdeasMenu_TassGB_BeniGB_CooperGB.apk
IMusic.apk
iRadio_v4.5.57.apk
iTV.apk
LauncherBrowser_AMX.apk
LauncherCalendar_AMX.apk
LauncherCamera_AMX.apk
LauncherContact_AMX.apk
LauncherEmail_TCE.apk
LauncherGallery_AMX.apk
LauncherMessage_AMX.apk
LauncherMusicplayer_AMX.apk
LauncherSettings_AMX.apk
LauncherStk_AMX.apk
MSNGR.apk
PluggerLauncher.apk
Plugger_TCE.apk
POPZ_SMS_GTS5830L_ML_AMX_306.apk
TN55-Telcel-Stub-1000.apk
WindowsLive.apk


te sales de la consola con exit enter exit enter
Lo que borres es bajo tu riesgo asi es que ten mucho cuidado


si no sabes como hacer root tu telefono ve este video tutorial como hacer root a samsung galaxy ace

TUTORIAL DE APACHE MINA

Posted: viernes, 16 de septiembre de 2011 by Skuarch in Etiquetas: , , , , , , ,
0




Requisitos

mina-core.2.0.4.jar
sfl4j-simple-1.6.2.jar
sfl4j-api-1.6.1.jar

Introducción


Apache mina es un framework que nos ayuda a realizar conexiones con redes, udp y tcp, tambien creo que puede hacer algo con el serial (aqui no se menciona) pero este tutorial es solo la introduccion a este framework.

Por que usar mina? por que te ayuda a desarrollar sockets rapidamente es extencible, ampliable y facil.




La imagen de arriba muestra la arquitectura de apache mina.

Programando un time server

Todo el codigo esta dentro del metodo main y utilizaremos un try-catch para controlar las excepciones, lo primero que se debe de hacer es un objecto del tipo IoAcaptor

Primero definiremos el puerto.

Para este tutorial utilizaremos el puerto 9123 y definiremos una variable miembro

private static final int PORT = 9123;


acceptor este objecto es el que se usa para recibir las conexiones de entrada. Con la clase NioSocketAcceptor se puede defiir un handler, el handler sera la clase que haga el trabajo del socket.

IoAcceptor acceptor = new NioSocketAcceptor();


Los siguiente es crear un filtro y agregarlo a la configuracion.

acceptor.getFilterChain().addLast( "logger", new LoggingFilter() );
acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));


Ahora definiremos el handler, el handler es el que atendera las peticiones del cliente. Este handler esta separado en otra clase que hereda de IoHandlerAdapter
acceptor.setHandler( new TimeServerHandler() );


Definimos dos metodos mas el buffer y el tiempo de in idle.

acceptor.getSessionConfig().setReadBufferSize( 2048 );
acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 );


Entonces asi tendremos la primer clase Main

package testmina;

import java.net.BindException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.SocketAcceptor;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;

/**
 *
 * @author skuarch
 */
public class Main {

    public static Logger logger = null;
    private static final int PORT = 9123;

    //==========================================================================
    public Main() {
        PropertyConfigurator.configure("log.properties");
        logger = Logger.getLogger(getClass());
    }

    //==========================================================================
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        new Main();

        try {

            //IoAcceptor acceptor = new NioSocketAcceptor();
            SocketAcceptor acceptor = new NioSocketAcceptor();
            acceptor.setReuseAddress( true );

            //acceptor.getFilterChain().addLast("logger", new LoggingFilter());
            acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));

            acceptor.setHandler(new TimeServerHandler());            
            acceptor.getSessionConfig().setReadBufferSize(2048);
            acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
            acceptor.bind(new InetSocketAddress(PORT));

            acceptor.setCloseOnDeactivation(true);           
                                   

        } catch (BindException be) {
            logger.error("error", be);
        } catch (Exception e) {
            logger.error("error", e);
        }

    } // end main
} // end class

Se utilizo testmina como paquete y el nombre de la clase es Main.

La clase TimeServerHandler


En esta clase de heredo de IoHandlerAdapter pero tambien se puede utilizar la interfaz IoHandler se sobre escriben los metodos exceptionCaught, messageReceived y sessionIdle

exceptionCaught

Este metodo es el encargado de las excepciones solo imprime el stack trace y cierra la conexion, esta es una buen practica.

messageReceived

Este es el metodo que recibe los datos del cliente y escribe la fecha actual, si el mensaje que se recibe es quit se cerrara la conexion.

sessionIdle

Este metodo es llamado segun se configuro en acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 );. y solo imprime el numero de idles

La clase se veria de esta forma

import java.util.Date;

import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;

public class TimeServerHandler extends IoHandlerAdapter
{
    @Override
    public void exceptionCaught( IoSession session, Throwable cause ) throws Exception
    {
        cause.printStackTrace();
    }

    @Override
    public void messageReceived( IoSession session, Object message ) throws Exception
    {
        String str = message.toString();
        if( str.trim().equalsIgnoreCase("quit") ) {
            session.close();
            return;
        }

        Date date = new Date();
        session.write( date.toString() );
        System.out.println("Message written...");
    }

    @Override
    public void sessionIdle( IoSession session, IdleStatus status ) throws Exception
    {
        System.out.println( "IDLE " + session.getIdleCount( status ));
    }
}

Por ultimo para probar puedes utilizar telnet y el puerto, de esta forma
telnet localhost 9123
y dar entrer

Referencias

apache mina
video tutorial de apache mina
documentacion de apache mina
ejemplos de apache mina
ejemplo cliente servidor

RECURSOS PARA ANDROID

Posted: martes, 6 de septiembre de 2011 by Skuarch in Etiquetas: , , , , ,
0




Estos son algunos recursos que me encuentro en internet para andriod

DriodDraw - para dibujar GUIs con drag and drop
androidmockup - para crear un diseño, es una aplicacion web que tambien usa drag and drop
achartengine - bonitas graficas para andriod
Android GUI PSD Vector Kit - temples
andriod plot - graficas para andriod
corona sdk - framework de paga para desarrollar juegos
lua - lenguaje que corren en andriod

BUENAS PRACTICAS AL CREAR UNA CLASE EN JAVA

Posted: domingo, 7 de agosto de 2011 by Skuarch in Etiquetas: , ,
0



Muchas ocaciones cuando creamos una clase no nos tomamos el tiempo para pensar como debemos de crear esta nueva clase, aqui muestro algunos tips que se deben de considerar para crear una clase.

Los Nombres

Lo primero en tenerse en cuenta es la del nombre de la clase y el nombre de los metodos, a mi me gusta no tener nombre muy largos ni tampoco usar nombres abreviados.

Dependencias

Hay que tenerse en cuenta de la nueva clase de que otras clases va a depender, una clase entre menos depende de otras clases es mejor por que la podemos hacer portatil, aun que la dependecia es buena en ocaciones las clases deben de depender de otras.

Loggers

Uso de Logger para tener un registro de los eventos y excepciones que puedan ocurrir en la clase.

Javadoc

Tener buenos comentarios y el javadoc actualizado

Paquetes

No exagerar el numero de paquetes anidados, abria que pensar en mas de 3 paquetes anidados

Identificar codigo repetido

Si tu clase tiene mucho codigo repetido seria bueno pensar hacerle un metodo, asi hacemos mas facil de mantener un metodo que varios trozos de codigos repetidos.

Complejidad

No agregar complejidad innecesaria, la clase solo debe de hacer lo que debe de hacer, el codigo que tenga la clase debe de ser sencillo de entender y de mantener.

Utilizar clases auxiliares

Este tipo de clases son sencillas y por lo regular deben de tener metodos para cerrar o limpiar algun recurso de manera segura, tambien pueden hacer cosas sencillas como regresarte la hora actual con el formato que tu decees

Usar encapsulamiento

Declarar metodos y variables privadas, si se nececita que otra clase acceda a una variable de tu clase se deben de crear los metodos get y set. Se debe de contemplar hacer un metodo privado cuando ese metodo puede causar algun comportamiento raro en tu clase o que solo la clase debe de utilizar.

Utilizar patrones de diseño

Seguramente algun patron de diseño te ayudara a crear mejor tus clases y tus programas.

Control de erorres

Esto podria ser el tema de otro post pero tratere de decir los mas importante, es bueno usar un Logger y usar try-catch o poner un throws y nunca saltarse las excepciones

Uso adecuado de constructores

Los constructores deben de inicializar las variables y no poner codigo de mas dentro de ellos y tampoco es bueno llamar metodos dentro del constructor, aun que esto a veces es inevitable

Uso de clase abstracta o interface

Crear una interface o clase abstracta para definir los metodos y poder crear mas objectos que sigan ese patron.

ESCRITORIO REMOTO EN EL NAVEGADOR

Posted: miércoles, 27 de julio de 2011 by Skuarch in Etiquetas: , ,
0



Una forma facil de controlar tu computadora de forma remota o lejana (solo si tiene linux) es con este facil programa GUACAMOLE en este video se muestra el uso de este programa, el cliente solo utiliza un navegador con soporte para HTML5 y Ajax



Guacamole es una aplicacion html5 que provee acceso a tu computadora usando RDP (remote desktop protocol) y centralizandola como un tunel o proxy permitiendote acceder a multiples protocolos utilizando un navegador, no se nececitan plugins, el cliente solo requiere un navegador con soporte para html5 y ajax

GENERACION DE CODIGO EN JAVA, LOMBOK

Posted: viernes, 22 de julio de 2011 by Skuarch in Etiquetas: , , ,
0




En ocaciones crear los accesors (getters y setters) es un poco aburrido, en otras ocaciones se nos olvida cerrar ciertas cosas que consumen recursos, pero como podemos hacer esto de una forma sencilla, una opcion es usar lombok esta libreria es muy util para hacer cosas como las que mencionaba anteriormente aqui pongo algunos ejemplos

Crear getters y setters (@Getter @Setter)

import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
 
public class GetterSetterExample {
@Getter @Setter private int age = 10;
@Setter(AccessLevel.PROTECTED) private String name;
 
@Override public String toString() {
return String.format("%s (age: %d)", name, age);
}
}


Como se puede apreciar ya no es necesario crear los metodos, con las anotaciones automaticamente se crean y con niveles de restriccion.

Automatic Close (@Cleaup)
import lombok.Cleanup;
import java.io.*;
public class CleanupExample {
   public static void main(String[] args) throws IOException {
     @Cleanup InputStream in = new FileInputStream(args[0]);
     @Cleanup OutputStream out = new FileOutputStream(args[1]);
     byte[] b = new byte[10000];
     while (true) {
       int r = in.read(b);
       if (r == -1) break;
       out.write(b, 0, r);
     }
   }
 }


Este es muy util, tu puedes seguir desarrollando normalmente tu codigo pero este tipo de anotacion previene que se te olvide cerrar algun recurso, recomiendo que tu lo cierres y esto solo se use cuando exista alguna excepcion que no se maneje.

Estas son las que yo utilizo mas pero puede ver mas ejemplos en su pagina

ENVIAR MENSAJES A TODOS LOS USUARIOS EN LA CONSOLA

Posted: jueves, 14 de julio de 2011 by Skuarch in Etiquetas:
0




Es util enviar mensajes en la consola cuando estas usando ssh u alguna terminal, con el comando w puedes saber que usuarios estan en el servidor y con el comando wall puedes mandarles mensajes, cuando termines tu mensaje precionas enter, despues control + D y el mensaje se enviara a todos los usuarios y tty's que esten conectadas al servidor

TUTORIAL DE STORED PROCEDURE

Posted: jueves, 23 de junio de 2011 by Skuarch in Etiquetas: , , ,
0



En esta entrada explico un stored procedure sencillo este nuevo post sobre stored procedure toma cosas mas complejas como la es crear un select con variables y asi es como empezamos.

La estructura basica para crear un stored procedure es la siguiente

#para el caso de desarrollo siempre tenemos que tener este comando
DROP PROCEDURE IF EXISTS mysp;

DELIMITER //
CREATE PROCEDURE mysp ()

BEGIN

#declaracion de variables y con DEFAULT se inicializan
DECLARE var1 INT DEFAULT 0;
DECLARE var2 VARCHAR(15);

END

//
DELIMITER ;



Para poder crear un select dinamico utilizando variables dentro de este mismo nececitamos crear un string y despues prepararlo para que sea ejecutado, de la siguente forma


SET @qry = CONCAT("SELECT * FROM tabla WHERE id = ", var1);
PREPARATE query FROM @qry;
EXECUTE query;


Con esto podemos crear un select dinamico y puede ser mas complejo.


SET @qry = CONCAT("SELECT algo INTO var2 FROM tabla WHERE id = ", var1);
PREPARATE query FROM @qry;
EXECUTE query;



Entonces nuestro stored procedure quedaria mas o menos asi


DELIMITER //
CREATE PROCEDURE mysp ()

BEGIN

#declaracion de variables y con DEFAULT se inicializan
DECLARE var1 INT DEFAULT 0;
DECLARE var2 VARCHAR(15);

SET @qry = CONCAT("SELECT algo INTO var2 FROM tabla WHERE id = ", var1);
PREPARATE query FROM @qry;
EXECUTE query;


END

//
DELIMITER ;


las variables que tienen @ como @qry son variables de usuario

EXPORTAR UNA TABLA DE MYSQL A .csv

Posted: miércoles, 22 de junio de 2011 by Skuarch in Etiquetas: , , ,
0




Con este sencillo comando puedes exportar la base de datos con todos los datos a un archivo .csv

mysqldump -u [username] -p -t -T/path/to/directory [database] --fields-enclosed-by=\" --fields-terminated-by=,



opcionalmente puedes utilizar esto para solo guardar una tabla

SELECT *
INTO OUTFILE '/opt/tmp/products.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM products


si deseas exportar los datos con un select tienes que habilitar la opcion tmpdir y despues reiniciar mysql entonces en tu archivo de configuracion de mysql (my.cnf o my.ini) quedaria mas o menos asi

[mysqld]
tmpdir=/opt/tmp/


tienes que asegurarte de que la carpeta tenga permisos de lectura y escritura, si no los tiene pues se los das

sudo chmod 777 -R /opt/tmp


si te aparece el error MYSQL ERROR : Can't create/write to file '/opt/tmp/
pueden ser problemas de permisos en la carpeta y lo puedes solucionar cambiando de propietario la carpeta

sudo chown root:root /opt/tmp
* Asignar Permisos
sudo chmod 1777 /opt/tmp
* Reiniciar mysql
sudo service mysqld restart

INSTALAR INFOBRIGHT, BASE DE DATOS MYSQL OPTIMIZADA

Posted: martes, 21 de junio de 2011 by Skuarch in Etiquetas: , , , ,
0




Cuando se tienen bases de datos muy grandes, me refiero a unos 15 millones de datos o mas, mysql empieza a bajar el rendimiendo, claro esta que esto depende del servidor donde este corriendo mysql, para solucionar esto podemos usar infobright esta base de datos es un mysql optimizado y aqui te muestro como instalarlo en ubuntu

Para este tutorial se utilizaron los siguientes archivos
infobright-3.5.2-p1-i686-ice.deb
ubuntu server 10.10


Lo primero es instalar lo esencial para compilar
sudo apt-get install build-essential

Lo segundo que tienes que hacer este instalar el servidor nscd
sudo apt-get install nscd

abrir con el editor de texto que tu quieras el archivo /etc/nscd.conf
buscar la linea que dice
enable-cache hosts no

y cambiar el no por un yes
enable-cache hosts yes

reiniciar el servicio
sudo service nscd restart

despues vaz a la pagina de infobright y bajas el .deb
cuando instales el .deb no tienes que estar en las carpetas de /home/ /home/usuario/ /home/usuario/desktop/ ni /root en mi caso lo movi a /opt
sudo cp infobright.deb /opt/

le di permisos
sudo chmod 777 -R infobright.deb

y lo instale
sudo dpkg -i infobright.deb

despues se tiene que activar ICE (infobright comunity edition)
entramos a la siguiente ruta
cd /usr/local/infobright/

ejecutamos el script
sudo sh postconfig.sh

nos pedira que nos registremos, le decimos que no y volvemos a correr el script
sudo sh postconfig.sh

aqui nos dira si queremos cambiar algunos parametros como es el puerto y la carpeta de data y a todos les decimos que no, con esto queda activado ICE.
arrancamos el servidor de base de datos
sudo /etc/init.d/mysqld-ib start

despues le le ponemos password al usuario root
/usr/local/infobright-3.5.2-i686/bin/mysqladmin -u root password 'new-password'

accedemos a la base de datos
/usr/bin/mysql-ib -uroot -p

ponemos nuestro password y con eso ya estamos en el 90% de la instalacion
el archivo de configuracion se encuentra en
/etc/my-ib.cnf

a este archivo al ultimo le ponemos estas tres lineas
skip-host-cache
skip-name-resolve
bind-address=0.0.0.0



Posibles problemas


Access denied for user: 'root@localhost' (Using password: NO)
Para solucionar esto tienes que entrar a mysql
de la base de datos mysql y de la tabla user tienes que insertar lo siguente
use mysql

insert into user (host,user) values ('%', 'root');

despues le tenemos que poner password
update user set password=PASSWORD('elPassword') where user = 'root';

se le tiene que dar permisos
GRANT ALL ON *.* TO 'root'@'%';

con esto todo el que accede tiene permisos de hacer lo que quiera si se loguea como root
por ultimo ponemos esto
flush privileges;

reinicias el servidor y listo
sudo /etc/init.d/mysqld-ib restart

PONER CODIGO EN BLOGGER

Posted: miércoles, 25 de mayo de 2011 by Skuarch in
0




Para poder poner codigo dentro de un post podemos usar esta pagina

http://tohtml.com/

0



En ocaciones solo se requiere trabajar con un solo archivo, pero netbeans pone las dependencias en la carpeta lib dentro de la carpeta dist, para evitar esto vamos a poner la siguientes lineas en el archivo build.xml
<target name="package-for-store" depends="jar">

<!-- Change the value of this property to be the name of your JAR,
    minus the .jar extension. It should not have spaces.
    <property name="store.jar.name" value="ssc"/>
    -->
<property name="store.jar.name" value="ElNombreDeTuJar"/>

<!-- don't edit below this line -->
<property name="store.dir" value="store"/>
<property name="store.jar" value="${store.dir}/${store.jar.name}.jar"/>

<echo message="Packaging ${application.title} into a single JAR at ${store.jar}"/>

<delete dir="${store.dir}"/>
<mkdir dir="${store.dir}"/>

<jar destfile="${store.dir}/temp_final.jar" filesetmanifest="skip">
<zipgroupfileset dir="dist" includes="*.jar"/>
<zipgroupfileset dir="dist/lib" includes="*.jar"/>

<manifest>
<attribute name="Main-Class" value="${main.class}"/>
</manifest>
</jar>

<zip destfile="${store.jar}">
<zipfileset src="${store.dir}/temp_final.jar"
excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/>
</zip>

<delete file="${store.dir}/temp_final.jar"/>

</target>

Solo debes de editar esta linea
<property name="store.jar.name" value="ElNombreDeTuJar"/>

Solo remplaza ElNombreDeTuJar por el verdadero nombre del .jar, despues en la pestaña de files da click derecho en el archivo build.xml y en las opciones run target >> others target selecionas la opcion package-for-store y con eso obtienes todo en un solo jar

ACELERAR LA NAVEGACION EN UBUNTU

Posted: miércoles, 11 de mayo de 2011 by Skuarch in Etiquetas: , , , , ,
0




Casualemente me encontre en internet que existen DNS de Google y se me ocurrio, si se los pongo a mi conexion posiblemente sea mas rapida y esto es lo que se realizo.

Abri Network Connections (System>>Preferences>>Network Connections) en mi caso se lo puse a la inalambrica (wireless) seleccione mi conexion pulse el boton de edit y en la pestaña de IPv4 settings en method seleccione automatic (DHCP) adress only y mas abajo en DNS servers puse 8.8.8.8, 8.8.4.4 despues puse el comando sudo service network-manager restart y listo

Si tu navegacion no mejora pues deja la configuracion como la tenias antes

CONTROL DE VERSIONES

Posted: martes, 10 de mayo de 2011 by Skuarch in Etiquetas: ,
0




GIT es un sistema de control de versiones distribuido, con el puedes crear una copia de tu codigo localmente y despues subirlo a un servidor en internet.

La pagina oficial de Git
Servidor en la nube para poner tu codigo
Guia de git

Con GIT puedes realizar los mismo que con otros servidores de control de versiones, como merge, commit y update, existe plug in para netbeans y puedes checar tus archivos desde una pagina web (github).

ESCRITORIO REMOTO EN UBUNTU

Posted: lunes, 9 de mayo de 2011 by Skuarch in Etiquetas: , , , ,
0




Cuando me queria conectar a un servidor que tuviera Windows desde ubuntu siempre usaba Terminal Server Client, pero un compañero me comento de un nuevo programa para conectarse por RDP a una computadora con Windows Remmina Remote Desktop

Este cliente no te pide que te reconectes y ni pide confimaciones de nada ademas de que guarda muy bien las contraseñas, este programa es altamente recomendable y los puedes encontrar en el ubuntu software center

TRANSPARENCIA Y/O OPACITY EN CSS

Posted: viernes, 6 de mayo de 2011 by Skuarch in Etiquetas: , ,
0




Para poder realizar una div con transparencia se requiere de esto



/*ie6*/
filter:alpha(opacity=90);
/*standar css*/
opacity:0.88;



obviamente lo pones en tu archivo de css o en la propiedad style de tu tag

DEMOS HTML5

Posted: by Skuarch in Etiquetas: , ,
0




Estos son los demos oficiales de HTML5

ver demos

BAJAR EL BRILLO EN UBUNTU

Posted: miércoles, 6 de abril de 2011 by Skuarch in
0



en el gconf-editor buscar la siguente ruta

1




Esta es una recopilacion corta de los comandos para linux que nos muestran informacion de la tarjeta grafica

lspci -v -s `lspci | awk '/VGA/{print $1}'`
lspci | grep VGA
sudo lshw -C display

ACELERAR NAUTILUS

Posted: by Skuarch in Etiquetas: ,
0




El truco está en cambiar estos valores con el programa gconf-editor (Aplicaciones-Herramientas del sistema-Editor de Configuración ):
/apps/nautilus/preferences/show_directory_item_counts = never
/apps/nautilus/preferences/preview_sound = never
/apps/nautilus/preferences/show_icon_text = never
/apps/nautilus/icon_view/default_use_tighter_layout = true

EJECUTAR CICLO POR X SEGUNDOS

Posted: jueves, 31 de marzo de 2011 by Skuarch in Etiquetas: , , ,
0



Como puedo ejecutar un ciclo que dure 10 o 15 o lo que sea segundos ???


//hora actual + el tiempo que quiero que dure
long end = System.currentTimeMillis() + 15000;

while(System.currentTimeMillis() < end) {
//...
}

JFRAME SIN EL BOTON DE CERRAR, MAXIMIZAR y MINIMIZAR

Posted: miércoles, 30 de marzo de 2011 by Skuarch in Etiquetas: ,
11



Facil y sencillo

setUndecorated(true);
getRootPane().setWindowDecorationStyle(JRootPane.NONE);


se le pone al frame y listo

TERM environment variable not set

Posted: viernes, 18 de marzo de 2011 by Skuarch in Etiquetas: , ,
0




Para poder solucionar esto en ubuntu solo tienes que escribir el comando:


echo "export TERM=xterm" | sudo tee /etc/profile.d/set_term.sh && source /etc/profile


Esto me sirvio a mi, si no te sirve a ti pues buscale por otro lado !!!

DESHABILITAR LA RESOLUCION DE NOMBRES EN MYSQL

Posted: martes, 1 de marzo de 2011 by Skuarch in Etiquetas: , ,
0



Para que MYSQL no resuelva el nombre del host utilizando DNS se hace de dos formas,
la primera puede ser iniciar mysql con la opcion

--skip-name-resolve


O tambien puede ponerlo en el archivo de inicio de mysql en el my.cnf hasta el ultimo


skip-name-resolve


sin los guiones, esto acelerara un poco mysql

fuente : http://dev.mysql.com/doc/refman/5.0/en/server-options.html#option_mysqld_skip-name-resolve

JAVA NO RESUELVE EL NOMBRE DEL HOST [JMS] [GLASSSFISH]

Posted: miércoles, 16 de febrero de 2011 by Skuarch in Etiquetas: , , ,
0



En ocaciones utilizando JMS en un cliente remoto nos aparece el siguente error


WARNING: [C4003]: Error occurred on connection creation [hostname:7676]. - cause: java.net.UnknownHostException: hostname


Para poder resolverlo en la parte de configuracion >> JMS Host >> default_JMS_host cambia el host a 0.0.0.0

tambien puedes checar este link donde esta la solucion

http://java.net/jira/browse/GLASSFISH-11254

IMPRIMIR STACK TRACE

Posted: miércoles, 9 de febrero de 2011 by Skuarch in Etiquetas: , , , ,
0



Para poder hacer esto puedes seguir este codigo


public String stack2string(Exception e) {
StringWriter sw = null;
PrintWriter pw = null;
try {
sw = new StringWriter();
pw = new PrintWriter(sw);
e.printStackTrace(pw);
return "\r\n" + sw.toString() + "\r\n";
}
catch(Exception e2) {
e.printStackTrace();
}
}

0



En cuando se quiere acceder a un recurso del servidor nos aparece el error

WARNING: "IOP00410201: (COMM_FAILURE) Connection failure: socketType: IIOP_CLEAR_TEXT; hostname: 127.0.1.1; port: 3700"


Para evitarlo checa que en tu archivo de host no tenga la direccion 127.0.1.1, si la tiene quitala, tambien debes de agregar tu ip con tu hostname, el archivo quedaria asi.

127.0.0.1 localhost
1.1.1.1 skuarch-mac


Si no te sirve pues buscale por otro lado

java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' to TIMESTAMP.

Posted: martes, 1 de febrero de 2011 by Skuarch in Etiquetas: ,
0




Para solucionar este problema cuando creas la cadena de conexion agrea esto al ultimo.


?zeroDateTimeBehavior=convertToNull


la cadena de conexion seria mas o menos asi


jdbc:mysql://miServidor/miBaseDeDatos?zeroDateTimeBehavior=convertToNull


Espero que no estes tan estupido y puedas substituir miServidor por la ip o el hostname

SELECT UPDATE crear un update con un select que regrese mas de un registro en mysql

Posted: viernes, 28 de enero de 2011 by Skuarch in Etiquetas: , , ,
0




El update por si mismo solo actualiza un registro, pero con esta consulta puedes actualizar varios registros utilizando un select anidado

si la tabla que se desea actulizar no tiene un campo que se llame igual a la tabla del select anidado se puede utilizar AS para ponerle el mismo nombre


(SELECT campo1 AS campoConLosDatosQueNecesito, id2 AS id FROM otraTable) AS selectAnidado


Al SELECT tambien se le debe de poner un nombre.

Para utilizar USING se debe de poner el campo con el mismo nombre en las dos tablas y obviamente deben de tener los mismos datos (el id puede ser de ayuda)

­

UPDATE mi_tabla
LEFT JOIN
(SELECT campo1 AS campoConLosDatosQueNecesito, idTabla AS id FROM otraTabla) AS selectAnidado
USING (id)
SET campo = selectAnidado.campoConLosDatosQueNecesito
WHERE id = "cualquierCosa";



la palabra reservada USING debe de tener como parametro el campo que coinside en las dos tablas

Todo lo demas es igual que en cualquier update

ABRIR EL NAVEGADOR CON JAVA

Posted: martes, 18 de enero de 2011 by Skuarch in Etiquetas: , , , ,
1



Para poder abrir el navegador que tiene tu sistema operativo por default, solo tienes que usar este pequeño pedaso de codigo


String url = "http://www.google.com";
java.awt.Desktop.getDesktop().browse(java.net.URI.create(url));


esta es otra forma

URLDisplayer.getDefault().showURL(URL url);


si no te sirve pues largate y buscale por otro lado!!!

1




Para poder crear un pool de conexiones y un recurso jdbc puedes seguir estos comandos

Connection Pool
$GLASSFISH_HOME/bin/./asadmin create-jdbc-connection-pool --user admin --datasourceclassname com.mysql.jdbc.jdbc2.optional.MysqlDataSource --restype javax.sql.DataSource --property user=root:password=vitalnoc:DatabaseName=sns_projectName:ServerName=192.168.208.15:port=3306 sns_projectName


Resource JDBC
$GLASSFISH_HOME/bin/asadmin create-jdbc-resource --connectionpoolid test-pool jdbc/test


donde $GLASSFISH_HOME es donde tienes instalado el glassfish, y obviamente modificas los parametros

fuente http://docs.sun.com/app/docs/doc/816-6443/6mch3fo6p?l=en&a=view

CENTRAR JFRAME EN LA PANTALLA

Posted: jueves, 6 de enero de 2011 by Skuarch in Etiquetas: ,
0




Para poder centrar en la pantalla un jframe puedes usar esto:


this.setLocationRelativeTo(getRootPane());


donde this es tu jframe