Archivo

Entradas Etiquetadas ‘desarrollo’

Especificaciones

Friday, 13 de November de 2009

Sé que muchos programadores se sentirán identificados con esta carta.

¿Qué pasaría si en vez de programadores fueramos arquitectos?, unos dirán que sólo es el cambio de carrera, pero ¿y si ahora le agregamos que los jefes nos explican el problema y sus requerimientos de la misma en como la informan a los programadores?

Estimado Sr. Arquitecto:
Por favor diseñe y construya una casa para mi. No estoy muy seguro de lo que necesito, así que tendrá que usar su imaginación. Mi casa debería tener entre dos y cuarenta y cinco dormitorios. Simplemente asegúrese de que todo esté pensado de forma que sea sencillo añadir o quitar dormitorios. Cuando
me traiga los modelos, tomaré la decisión sobre lo que quiero. Además, tráigame un resumen de los costes para cada configuración de manera que pueda elegir una de ellas de manera arbitraria.
Tenga en cuenta que la nueva casa debe costar bastante menos que la casa en la que estoy viviendo ahora. Pero asegúrese, de todas formas, de que corrige todas las deficiencias que existen en mi casa actual (el suelo de la cocina vibra cuando ando por el, y las paredes no tienen suficiente aislamiento).
Mientras diseña, tenga en cuenta que quiero mantener los costes de mantenimiento lo mas bajos posibles. Esto significará la incorporación de materiales mas costosos coste como el aluminio, la fibra de vidrio o el vinilo. (Si elige no considerar el aluminio, prepárese para explicar su decisión en todo detalle.)
Por favor asegúrese de que se utilicen las prácticas mas modernas de diseño y lo último de lo último en materiales a la hora de construir la casa, ya que deseo poder presumir de haber utilizado las mas actuales ideas y métodos. Tenga en cuenta, de todas formas, que la cocina debería diseñarse para acomodar, entre otras cosas, mi nevera Gibson del 52.
Para asegurarse de que esté construyendo la casa de manera correcta para toda la familia, contacte con cada uno de mis hijos e hijas, y también con mis nueros y nueras. Mi suegra tendrá también bastantes cosas que decir sobre como debería diseñarse la casa, ya que nos visita al menos una vez al
año. Asegúrese de que considera cada una de las opciones que le propongan cuidadosamente y asegúrese también de elegir la decisión acertada. Yo, de cualquier forma, siempre tendré la última palabra y podré rectificar cualquier elección que tome.
Por favor no me moleste con los pequeños detalles de momento. Su trabajo es desarrollar una idea general del diseño de la casa: captar la idea. Este momento, por ejemplo, no es el apropiado para elegir el color de la alfombra.
En cualquier caso, recuerde que a mi esposa le gusta el azul.
Además, no se preocupe aún de adquirir los materiales necesarios para construir la casa. Su prioridad es la de desarrollar planos detallados y especificaciones. De todas formas, una vez que yo apruebe esos planos, espero que la casa esté construida en 48 horas.
Aunque esté diseñando esta casa específicamente para mí, tenga en cuenta que antes o después tendré que venderla a otra persona. De manera que debería ser atrayente para una gran variedad de compradores potenciales. Por favor
asegúrese antes de que finalice los planos de que halla un consenso sobre las características de la casa entre la población de la zona. Le aconsejo que eche un vistazo a la casa que mi vecino se construyó el año pasado. Nos encanta. Tiene bastantes características que también queremos en nuestra nueva casa, especialmente la piscina de 75 pies. Aplicando la ingeniería de
manera cuidadosa, creo que no tendrá dificultades en añadirlo al diseño final sin que tenga ningún impacto en el coste.
Por favor prepare un conjunto completo de modelos. No es necesario por ahora que prepare el diseño real, dado que solo queremos los modelos para calcular los costes de la obra. Tenga en cuenta, de todas formas, que usted será el responsable de cualquier incremento en el precio debido a cambios posteriores en el diseño.
¡Debería estar emocionado por trabajar en un proyecto tan interesante como este! Poder utilizar las últimas técnicas y materiales y el que le den tanta libertad en sus diseños es algo que no ocurre muy a menudo. Contacte conmigo tan pronto como sea posible con una lista completa de sus ideas y sus planes.

*Postdata:* Mi esposa acaba de decirme que no está de acuerdo con algunas de las instrucciones que le doy en esta carta. Como arquitecto, es su responsabilidad el resolver estas diferencias entre mi esposa y yo. Yo ya lo he intentado en el pasado y fui incapaz de conseguirlo. Si no puede hacer frente a esta responsabilidad, tendré que contratar a otro arquitecto.

*PostPostdata:* Quizás lo que necesite ni tan si quiera sea una casa, sino una caravana. Por favor aconséjeme lo mas pronto posible si ese es el caso..

VN:F [1.0.9_379]

Ancelot Humor, Programación, computación , , ,

La Biblia del programador

Friday, 8 de May de 2009
powered by Wordpress Multibox Plugin v1.3.5

genesis

1. Al principio Dios creo el Bit y el Byte. Y de ellos creo la Palabra.

2. Y hubo dos bytes en una palabra; y nada mas existía. Y Dios separo el Uno del Cero; y vio que esto era bueno.

3. Y Dios dijo:
- Hágase el Dato.
Y así sucedió.
Y Dios dijo:
- Que los Datos vayan a su correspondiente lugar.
Y creo los disquetes, discos duros y los compactos.

4. Y dijo Dios
- Háganse los computadores, así habrá lugar para poner los disquetes, discos duros y compactos.
Y Dios creo los computadores y los llamó Hardware.

5. Y no había Software aun.
Pero Dios creo programas, chicos y grandes…
Y les dijo:
- Vayan y multiplíquense por si mismos y llenen toda la Memoria.

6. Y dijo Dios:
- Creare al Programador; y el Programador hará nuevos programas y gobernara sobre los computadores, programas y datos.

7. Y Dios creo al Programador y lo puso en el Centro de Datos.
Y Dios le mostró al Programador el Árbol de Directorios y le dijo:
- Puedes usar todos los volúmenes y subvolumenes, pero NO USES Windows.

8. Y Dios dijo:
- No es bueno para el Programador estar solo.
Y tomo un hueso del cuerpo del Programador y creo una criatura que buscaría al Programador, lo admiraría y amaría las cosas que hiciera el Programador;
Y Dios llamo a la criatura EL USUARIO.

9. Y el Programador y el Usuario fueron dejados por EL solos bajo el DOS desnudo y fue bueno.

10. Pero Bill fue mas listo que todas las otras criaturas de Dios.
Y Bill le dijo al Usuario:
- ¿Realmente Dios te dijo que no ejecutaras ningún programa?
11. Y respondió el Usuario
- Dios nos dijo que podíamos usar cualquier programa y cualquier dato pero nos dijo que no ejecutáramos Windows o moriríamos.

12. Y Bill dijo al Usuario
- ¿Cómo puedes hablar sobre algo que no has probado? En el momento que corras Windows te convertirás en igual a Dios. Podrás crear cualquier cosa que desees con un simple clic del ratón?

13. Y el Usuario vio que los frutos del Windows eran buenos y fáciles de usar. Y el Usuario vio que cualquier conocimiento era inútil, pues Windows podía reemplazarlos.

14. Así que el Usuario instalo Windows en su computador y le dijo al Programador que era bueno.

15. Y el Programador empezó a buscar nuevos drivers.
Y Dios le pregunto:
- ¿Qué buscas?
Y el Programador respondió:
- Busco nuevos drivers porque no puedo hallarlos en el DOS.
Y Dios dijo:
- ¿Quien te dijo que necesitabas drivers? ¿Ejecutaste Windows?
Y el Programador dijo:
- ¡Fue Bill quien nos lo dijo!

16. Y Dios dijo a Bill:
- Por lo que hiciste serás odiado por todas las criaturas.
Y el Usuario estará siempre descontento contigo.
Y siempre venderás Windows.
17. Y Dios dijo al Usuario
- Por lo que hiciste Windows te decepcionara y se comerá todos tus recursos.
Y tendrás que usar programas piojosos.
Y siempre confiaras en la ayuda del Programador.

18. Y Dios dijo al Programador:
- Porque oíste al Usuario nunca serás feliz. Todos tus programas tendrán errores y tendrás que arreglarlos hasta el fin de los tiempos.

19. Y Dios los echo del Centro de Datos y cerro la puerta y la aseguró con un password.

20. FALLA DE PROTECCION GENERAL – Apriete Ctrl-Alt-Del

Fuente: Demasiadas,  no se cuál es la original.

VN:F [1.0.9_379]

Ancelot Humor, computación , , , , ,

Errores comunes al programar en JAVA

Monday, 23 de March de 2009

Si ha estado trabajando con Java por algún tiempo, es seguro que habrá cometido estos errores al menos un par de veces. Los errores de programación en Java, así como en otros lenguajes, ocurren más que todo en la sintaxis y errores en la lógica. Los errores en la sintaxis son causados cuando el compilar Java (javac) no puede reconocer la sentencia. Esto causa que el compilador devuelva un mensaje de error, usualmente con una línea de código de referencia. También se conoce a los errores de sintaxis como errores en tiempo de compilación.

Los errores de lógica son conocidos como BUGS. Estos son los errores que nos tomarán tiempo hasta encontrarlos. Si damos a elegir, cualquier programador elegiría los errores en tiempo de compilación. A mi me ha tomado hasta varios días hacer el debug cuando suceden errores de lógica, y eso, usando todas las herramientas disponibles: archivos logs, mensajes System.out, debuggers, etc.

Los siguientes errores aparecen en la mayoría de programadores cada cierto tiempo, pero podemos verlo regularmente en el código de los programadores novatos.

Tenemos que cuidarnos de estos errores para evitarlos y pulir nuestro código.

  • El nombre de la Clase pública no coincide con el nombre del archivo
    Cada archivo .java puede contener sólo una Clase pública. El nombre de esa Clase pública debe coincidir exactamente con el nombre del archivo antes de la extensión .java, respetando incluso las mayúsculas y minúsculas. Por ejemplo, una Clase pública llamada MyClass debe estar en un archivo MyClass.java y no en myclass.java. Este es un error de sintaxis.
  • Una Clase no está en el directorio correcto
    Este error de sintaxis ocurre si el comando javac no puede encontrar un archivo .java en el directorio esperado. Si una Clase está en el paquete por defecto (no tiene la declaración del package en la primera línea), entonces esta Clase pertenece al directorio actual de trabajo o al directorio donde apunta el flag sourcepath del javac. Si una Clase está a un paquete, entonces pertenece a un subdirectorio debajo del directorio actual de trabajo o a un subdirectorio debajo del directorio donde apunta el flan sourcepath del javac. Por ejemplo, si existe una Clase llamada com.hello.HelloWorld entonces su nombre es HelloWorld y su paquete es com.hello. Si el flan sourcepath está configurada a c:src, entonces el archivo HelloWorld.java debe estar ubicado en el subdirectorio: c:srccomhello.
  • Usando equals contra la asignación ( == versus = )
    En Java este error puede ser incluso un error de lógica o sintaxis. Para comparar 2 referencias para igualarlas se usa el operador == (el operador de igualdad). Para asignar el valor de la derecha a la variable de la izquierda se usa el operador = (operador de asignación). Los programadores novatos a veces escriben: if (miValor = valorEsperado) Este código intenta evaluar el valorEsperado como un valor booleano en lugar de intentar la evaluación de igualdad entre miValor y valorEsperado. Si valorEsperado es del tipo booleano, entonces el código tendrá un error de lógica y probará si el valorEsperado es verdadero o falso. Si valorEsperado no es del tipo booleano, entonces el código lanzará un error de compilación debido a que la estructura if requiere un valor booleano que sea retornado de la comparación (miValor = valorEsperado), pero en Java el operador = siempre retorna el valor de la derecha.
  • Error en mayúsculas y minúsculas.
    Java es un lenguaje case sensitive, esto es que debemos respetar las mayúsculas y minúsculas. (miVar no es igual a mivar). Si hacemos referencia a un identificador que no está bien escrito entonces obtendremos un error de sintaxis.
  • Olvidar que los índices en Java empiezan en 0.
    Los índices de los arreglos de Java y las listas empiezan en 0, myArray[0], o myList.get(0). Asegurarse que su loop for no cause errores por este motivo. Si hacemos más loops de los que son posibles, entonces obtendremos el error: ArrayIndexOutBounds exception. Si hacemos menos loops de los requeridos, entonces tendremos un error de lógica.
  • NullPointerException
    El NullPointerException, la maldición de los programadores en Java. Los NullPointerExceptions son errores de lógica causados cuando un programa intenta acceder a métodos o atributos en una referencia que está nula. Si nuestro objeto no ha sido inicializado o ha sido establecido a null con el operador =, entonces la llamada el método o el acceso a uno de sus atributos no es válido.

Espero que esta lista corta de errores de código le ayude a pensar de manera defensiva a la hora de escribir código. Mientras más errores evitemos, entonces más productivos seremos, tanto en tiempo de desarrollo como también el código más refinado.

VN:F [1.0.9_379]

Ancelot Programación, java , , ,

Domingo en la mañana, starbucks Santiago-Chile

Thursday, 5 de March de 2009

Difundiendo este gran evento que reune a gente ligada a la web sin importar el tema o motivo.

Fuente: pulsoSocial

powered by Wordpress Multibox Plugin v1.3.5

domingo en la mañana santiago de chile
Este domingo 8 de Marzo se llevara acabo Domingo en la Mañana en Santigo de Chile en el Starbucks que queda en Calle San Sebastian, 2946, Las Condes, empezando a las 10:30 am.

Que es Domingo en la Mañana?

Es como una mini-uncoference muy casual donde emprendedores, developers, diseñadores, bloggers, y en general profesionales de la web se reunen a compartir sus proyectos y sus ideas.

DELM en Santiago

Después de que se llevara acabo DELM en Mexico, Bogota, Medellin y Sincelejo, Lina Ceballos publico un articulo invitandonos a hacer un DELM en nuestra ciudad, y no mucho tiempo después, Maria del Carmen hizo un DELM en Quito, y Daniel Falcón nos conto como fue el DELM en Lima.  Bueno, entonces ahora me toca a mi en Santiago :)

En el poco tempo que he llevado en Santiago, me he dado cuenta que la comunidad web es grande y bien establecida, y mientras en otras ciudades como Quito y Medellín el DELM es como una semilla para crear una comunidad web, creo que en Santiago DELM servirá como un foro para compartir ideas y proyectos de una manera mucho mas casual que por ejemplo First Tuesday (al cual asistí anoche, que por si es un evento impresionante, pero eso lo dejare para otro articulo.)

Pero porque un Domingo?

La primera vez que escuche de el concepto de Sunday Morning o Domingo en la Mañana lo primero que pensé fue, pero quien se va a levantar un domingo en la mañana a ir a una cosa de estas? Yo ya había participado en BarCamps, WordCamps, RefreshMiami, South Florinda Interactive Marketing Assoc., BlogOrlando y otros eventos relacionados que son de el mismo estilo, pero nunca un Domingo.  Es mas, primero me pareció una pésima idea, pero después caí en cuenta que si se hace un domingo, y en la mañana, solo la gente mas apasionada y mas comprometida con sus proyectos serian los únicos que harían ese pequeño sacrificio. Ese es el tipo gente que de verdad quiero conocer, y los emprendedores que siempre estamos buscando en PulsoSocial.

Información del evento:

Fecha: Domingo, Marzo 8, 2009
Hora: 10:30am – 1:30pm
Ubicación:
Starbucks
Calle San Sebastián, 2946, Las Condes
Santiago, Chile

Confirma tu asistencia en Facebook

El mapa

starbucks

VN:F [1.0.9_379]

Ancelot Anuncios, Programación, Tecnología , ,

KeyEvent simple en java

Tuesday, 24 de February de 2009

Este código me fué de mucha ayuda cuando recién empecé a ver algo de java en el instituto, espero que le sirva a las nuevas generaciones de programadores.

Acá tenemos un keyListener, su función es captar los eventos del teclado,tanto con o sin modificadores, esto se refiere a si el usuario usa SHIFT o no.

El código está funcionando, es autónomo, para ejecutar el ejemplo se debe agregar al proyecto a darle RUN.

JAVA:
  1. package keyListener;
  2.  
  3. import javax.swing.*;
  4. import java.awt.event.*;
  5. import java.awt.BorderLayout;
  6. import java.awt.Dimension;
  7.  
  8. public class KeyEventDemo extends JPanel
  9. implements KeyListener,
  10. JTextArea displayArea;
  11. JTextField typingArea;
  12. static final String nuevaLinea = "\n";
  13.  
  14. public KeyEventDemo() {
  15. super(new BorderLayout());
  16.  
  17. JButton button = new JButton("Clear");
  18. button.addActionListener(this);
  19.  
  20. typingArea = new JTextField(20);
  21. typingArea.addKeyListener(this);
  22.  
  23. displayArea = new JTextArea();
  24. displayArea.setEditable(false);
  25. JScrollPane scrollPane = new JScrollPane(displayArea);
  26. scrollPane.setPreferredSize(new Dimension(375, 125));
  27.  
  28. add(typingArea, BorderLayout.PAGE_START);
  29. add(scrollPane, BorderLayout.CENTER);
  30. add(button, BorderLayout.PAGE_END);
  31. }
  32.  
  33. /** Handle the key typed event from the text field. */
  34. public void keyTyped(KeyEvent e) {
  35. displayInfo(e, "KEY TYPED: ");
  36. }
  37.  
  38. /** Handle the key pressed event from the text field. */
  39. public void keyPressed(KeyEvent e) {
  40. displayInfo(e, "KEY PRESSED: ");
  41. }
  42.  
  43. /** Handle the key released event from the text field. */
  44. public void keyReleased(KeyEvent e) {
  45. displayInfo(e, "KEY RELEASED: ");
  46. }
  47.  
  48. /** Handle the button click. */
  49. public void actionPerformed(ActionEvent e) {
  50. //Limpia los componentes de texto.
  51. displayArea.setText("");
  52. typingArea.setText("");
  53.  
  54. //Vuelve el foco al área de tipeo.
  55. typingArea.requestFocusInWindow();
  56. }
  57.  
  58. protected void displayInfo(KeyEvent e, String s){
  59. String keyString, modString, tmpString,
  60. actionString, locationString;
  61.  
  62. int id = e.getID();
  63. if (id == KeyEvent.KEY_TYPED) {
  64. char c = e.getKeyChar();
  65. keyString = "key character = '" + c + "'";
  66. } else {
  67. int keyCode = e.getKeyCode();
  68. keyString = "key code = " + keyCode
  69. + " ("
  70. + KeyEvent.getKeyText(keyCode)
  71. + ")";
  72. }
  73.  
  74. int modifiers = e.getModifiersEx();
  75. modString = "modificadores = " + modifiers;
  76. tmpString = KeyEvent.getModifiersExText(modifiers);
  77. if (tmpString.length()> 0) {
  78. modString += " (" + tmpString + ")";
  79. } else {
  80. modString += " (sin modificadores)";
  81. }
  82.  
  83. actionString = "¿Tecla de acción? ";
  84. if (e.isActionKey()) {
  85. actionString += "SI";
  86. } else {
  87. actionString += "NO";
  88. }
  89.  
  90. locationString = "Ubicación tecla: ";
  91. int location = e.getKeyLocation();
  92. if (location == KeyEvent.KEY_LOCATION_STANDARD) {
  93. locationString += "standard";
  94. } else if (location == KeyEvent.KEY_LOCATION_LEFT) {
  95. locationString += "izquierda";
  96. } else if (location == KeyEvent.KEY_LOCATION_RIGHT) {
  97. locationString += "derecha";
  98. } else if (location == KeyEvent.KEY_LOCATION_NUMPAD) {
  99. locationString += "numpad";
  100. } else {
  101. // (location == KeyEvent.KEY_LOCATION_UNKNOWN)
  102. locationString += "desconocido";
  103. }
  104.  
  105. displayArea.append(s + nuevaLinea
  106. + "    " + keyString + nuevaLinea
  107. + "    " + modString + nuevaLinea
  108. + "    " + actionString + nuevaLinea
  109. + "    " + locationString + nuevaLinea);
  110. displayArea.setCaretPosition(displayArea.getDocument().getLength());
  111. }
  112.  
  113. /**
  114. * Se crea la GUI y se muestra.
  115. */
  116. private static void createAndShowGUI() {
  117. //Se crea y setea la ventana.
  118. JFrame frame = new JFrame("KeyEventDemo");
  119. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  120.  
  121. //Se crea y setea el content pane.
  122. JComponent newContentPane = new KeyEventDemo();
  123. newContentPane.setOpaque(true); //content panes deben ser opacos
  124. frame.setContentPane(newContentPane);
  125.  
  126. //Muestra la ventana
  127. frame.pack();
  128. frame.setVisible(true);
  129. }
  130.  
  131. public static void main(String[] args) {
  132. //Creando y mostrando la gui de esta aplicación.
  133. javax.swing.SwingUtilities.invokeLater(new Runnable() {
  134. public void run() {
  135. createAndShowGUI();
  136. }
  137. });
  138. }
  139. }

VN:F [1.0.9_379]

Ancelot Programación, java , , ,

SDK v1.1 de Android ya está disponible

Wednesday, 11 de February de 2009

El software que nos permite desarrollar aplicaciones que corran en equipos con Android como Sistema Operativo, ha sido actualizado a la versión 1.1 release 1.

Según se informa en la página de los desarrolladores, los cambios incluidos en esta nueva versión no son muchos, pero recomiendan actualizarla con el objeto de aprovechar nuevas APIs y una nueva imagen del emulador.

powered by Wordpress Multibox Plugin v1.3.5

android sdk

android sdk

El detalle de las modificaciones que incluye la actualización se pueden ver en este link. Para quienes deseen descargarla, lo pueden hacer desde este otro link.

VN:F [1.0.9_379]

Ancelot Programación , ,

Calculadora simple con Java

Friday, 30 de January de 2009

Para todos nuestros amigos programadores que se setán recién iniciando en el tema, les tengo un pequeño tip para realizar una calculadora bastante simple, no me maten pero está hecha en una sola clase, les dije, es sólo un ejemplo.

Espero les sirva para poder hacer pruebas y familiarizarse con el lenguaje.

powered by Wordpress Multibox Plugin v1.3.5

calculadora simple en java

Leer más...

VN:F [1.0.9_379]

Ancelot Programación, java , ,

switch – case en java

Wednesday, 28 de January de 2009

Una de las mayores dificultades que yo mismo tengo es de recordar aquel código que casi nunca usamos, en mi caso es el switch-case, debido a mi costumbre a usar bloques for y la poca necesidad de usar switch-case, como me he dado cuenta que a muchos les pasa me dispuse a escribir un ejemplo acá.

EN JAVA la sentencia es Switch con la siguiente estructura

JAVA:
  1. switch (variable)
  2. {
  3. case valor_literal:
  4. codigo que ejecutamos;
  5. break;
  6. case otro_valor_literal:
  7. codigo que ejecutamos;
  8. break;
  9. default:
  10. codigo que ejecutamos;
  11. }

Si no les queda muy claro les pondré un ejemplo práctico :)

JAVA:
  1. int mes;
  2.  
  3. switch (mes) {
  4. case 1System.out.println("Enero"); break;
  5. case 2System.out.println("Febrero"); break;
  6. case 3System.out.println("Marzo"); break;
  7. case 4System.out.println("Abril"); break;
  8. case 5System.out.println("May0"); break;
  9. case 6System.out.println("Junio"); break;
  10. case 7System.out.println("Julio"); break;
  11. case 8System.out.println("Agosto"); break;
  12. case 9System.out.println("Septiembre"); break;
  13. case 10: System.out.println("Octubre"); break;
  14. case 11: System.out.println("Noviembre"); break;
  15. case 12: System.out.println("Diciembre"); break;
  16. }

Como podemos ver, la variable mes toma siempre solo un valor, por ejemplo 2, por lo tanto cae en el switch-case y cuando llega al case 2 imprime febrero y sale del bloque, es una forma más elegante y óptima de escribir nuestro código, dado que esta misma función la podemos hacer con un gran bloque de if y else.

VN:F [1.0.9_379]

Ancelot Programación, java , , ,

GWT : Google Web Toolkit

Tuesday, 27 de January de 2009

Como muchos saben hace un par de meses que estoy trabajando con GWT, lo que significa Google Web Toolkit, así que me decidí a escribir un poco sobre este tema, si bien esste blog ha sido concebido como una ayuda para la porgramación, se ha ido llenando de humor y anécdotas, si bien también era uno de los objetivos de este proyecto, empezaremos a equilibrar un poco la balanza.

powered by Wordpress Multibox Plugin v1.3.5

gwtGoogle Web Toolkit es una herramienta de desarrollo AJAX de Google destinada a desarrolladores Java. Las aplicaciones web (tanto GUI -Graphical User Interface- como RPC -Remote Procedure Call-) se escriben en Java usando el API GWT. Después los archivos Java se compilan en archivos JavaScript compactos, ofuscados y específicos del navegador. Un pequeño código de carga en JavaScript determina que archivos de script específico del navegador se deben utilizar dependiendo del navegador cliente. La librería API está licenciada bajo licencia Apache 2.0.

Leer más...

VN:F [1.0.9_379]

Ancelot Programación, java , , , , ,

Generador de Rut y Validador

Thursday, 22 de January de 2009

Muchos han esatdo buscando  una forma de validar si un RUT es válido o no, pero también hay muchos que necesitan probar sus aplicaciones y están usando sus propios RUTs, pero ¿qué pasa cuando necesitas hacer una prueba masivamente?, acá te traigo la solución...

Leer más...

VN:F [1.0.9_379]
Rating: 1.0/10 (1 voto cast)

Ancelot Programación, java , , , , , , ,