Conceptos

Conceptos generales de programación o cómputo, no necesariamente atados a una tecnología específica.

Leyendo una bascula por el puerto serial

Me solicitaron actualizar un software desarrollado con Visual Basic que:
- Toma foto del pedido

Ya que no estaba funcionando mas que con Windows XP.
En mi pruebas halle que con DirectShowLib.dll un componente que corre con .net pude acceder a la webcam y tomar la imagen y guardarla como .jpg.

El otro requerimiento era que leyera el puerto COM de la bascula y mostrara el peso del pedido.
El modelo de la bascula es un: RINSTRUM R320

Entre las cosas luego de leer el manual, fue pedirle al soporte tecnico que manipulara el panel de control de la bascula para que se configurase el envio al puerto serial (ya q x defaul no viene configurado asi), todo esto fue remoto ya que ellos estan en Guadalajara y yo en CDMX.

HSTS en Spring Security y por qué deberías de conocerlo

Introducción

El uso de librerías y marcos de trabajo terceros, si bien facilitan el trabajo por las abstracciones que proveen, conllevan como tal un cierto nivel de riesgo. El riesgo puede ser manifestado como tener que modificar parte del código en nuevas versiones del marco de trabajo, que deje de existir o dar soporte u opciones por defecto que pueden causar efectos secundarios. De lo que les escribiré en este artículo es de esto último, una opción por defecto que tiene habilitada el marco de trabajo de Spring Security a partir de la versión 3.2.0 la cual, al usarla en conjunto con “click tracking” (rastreo de clics) en los correos electrónicos puede causar un problema. Esta opción por defecto es el encabezado de HSTS.

Cargar etiquetas a una matriz de botones en base a arreglos

Hola, me encuentro desarrollando un interfaz tactil, en la cual tengo 2 secciones con botones, una para las categorías y otra para cargar los productos por categorías.

La consulta que tengo es como seria la programación para que se carguen las etiquetas en cada uno de los botones sin tener que quemar código.

Ejemplo: tengo 4 categorias y cada una sus productos.
En la primera seccion se deben cargar los nombres de cada categoria (una por boton).
Al hacer clic sobre un boton categoria se debe cargar los productos en la seccion #2.

Estoy en VB.NET 2010

Problema con query Mysql

Hola a todos;

Tengo un pequeño problema al ejecutar una query en un servidor y es que este se tarda demasiado o simplemente no responde, si hago pruebas de manera local no hay mayor problema y la query se ejecuta de manera normal, revisando la misma query ejecutandola en la base de datos que esta en el servidor me di cuenta que si quito el ORDER BY "" ASC la query se ejecutan sin problemas y rapido. Me gustaria que pudieran ayudar o conocer cual es el problema del mismo.

les dejo la query:

SELECT pr.*,mo.id,c.descripcion catColor,t.nombre catTalla,s1.descripcion seg1,
s2.descripcion seg2,s3.descripcion seg3,s4.descripcion seg4,s5.descripcion seg5

FROM cat_productos pr

LEFT JOIN cat_modelo mo ON mo.id_cat_modelo=pr.id_cat_modelo AND mo.id_cat_zona=pr.id_cat_zona AND mo.id_cat_empresa=pr.id_cat_empresa
LEFT JOIN cat_color c ON c.id_cat_color=pr.id_cat_color AND c.id_cat_zona=pr.id_cat_zona AND c.id_cat_empresa=pr.id_cat_empresa
LEFT JOIN cat_tallas t ON t.id_cat_talla=pr.id_cat_talla AND t.id_cat_zona=pr.id_cat_zona AND t.id_cat_empresa=pr.id_cat_empresa

Concepto básico

Disculpe alguien sabe que significa esta expresión: c+=1; ó i+=c; gracias si alguien me puede decir ke significan o que hacen.

OOP en cuento... El colega....

Hola comunidad es un placer pertenecer a este grupo de maestros mexicanos java... me han ayudado mucho conceptualmente y en terminos reales EZAMUDIO gracias por tus aportes... espero poder realizar aportes buenos e interesantes como los que se publican aqui... gracias...
Hoy los dejo con un preambulo..., una abstraccion literaria que espero les guste...

El colega....

“Yo soy Dios...”, me dijo una voz amiga muy devota por cierto, sin ningún tipo de ego pululando, solo hablaba el corazón y la verdadera confianza que autoriza el expresar lo que dijo.
Que bueno mi querida amiga..., te acabaste de instanciar, sin embargo quiero que veas mi ver, quiero crear otra instancia posiblemente cercana a la verdad.

hilos de ejecucion

hola como estan? espero me puedan orientar saben como se hace la ejecucion de hilos en un procesador de palabras y el uso de hilos en una hoja de calculo exce

Comunicación asíncrona entre procesos Java

En este post de jpaul estuve comentando acerca de algunas de las broncas de RMI, y de cómo hay opciones más eficientes para cuando se necesita implementar comunicación eficiente entre dos aplicaciones Java, usando algo similar a RMI.

Primero que nada, quiero mostrar cuál es el problema concreto con RMI: cada llamada que se recibe en la aplicación que publica el componente, se hace en un hilo separado. Para demostrar esto, tomé el ejemplo original y lo modifiqué un poco: El servidor tarda un poco de tiempo, y también imprime el nombre del hilo actual y el número total de hilos activos:

Random rng = new Random(System.currentTimeMillis())

Remote stub = UnicastRemoteObject.exportObject(new TestRemote() {
  @Override
  public String sayHello(String name) throws RemoteException {
    println "Corriendo en ${Thread.currentThread().name} total ${Thread.activeCount()}"
    if(rng.nextBoolean())Thread.sleep(10)
    return "Hello, " + name;
  }
}, 0);
def registry = LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
registry.bind("Test", stub);
println "Escuchando..."

Varianza en Ceylon

Bueno pues después del artículo maratónico acerca de varianza en Java, ahora quiero explicar cómo se implementó esto en Ceylon. Para ello vamos a usar los mismos ejemplos, de modo que quede clara la comparación.

Lo primero son las tres clases para el ejemplo, y la primera función:

class A() {}
class B() extends A() {}
class C() extends B() {}

B f(B param) => C();

Hasta aquí, todo funciona exactamente igual que en Java:

B algo;
A a = f(algo); //OK
B b = f(algo); //OK
C c = f(algo); //Error

f(A()); //ERROR
f(B()); //OK
f(C()); //OK

En Ceylon también existe la covarianza en los tipos de retorno, similar a lo que se introdujo en Java 5:

class Padre() {
  shared default A metodo() => A();
}
class Hijo() extends Padre() {
  shared actual C metodo() => C();
}

Con los parámetros no se puede hacer algo similar. Ceylon no tiene sobrecarga de métodos, pero no tiene contravarianza en los parámetros; por lo tanto, al refinar un método de un supertipo, los parámetros deben ser exactamente del mismo tipo que en la declaración original, o el compilador emite un error.

Varianza, Covarianza y Contravarianza

En los sistemas de tipado estático, existe este concepto de varianza, que a veces puede entenderse muy fácil pero tampoco es tan intuitivo como parece.

Para ilustrar la varianza, vamos a definir una jerarquía de clases muy simple:

public class A {}
public class B extends A {}
public class C extends B {}

Y definimos un método o función que usa estos tipos:

public B f(B param) {
   //Qué puede devolver?
}

Primero que nada, viéndolo desde fuera, ¿A qué tipo de variables podemos asignar lo que devuelve esta función?

B algo;
A a = f(algo);
B b = f(algo);
C c = f(algo);

Las primeras dos líneas son correctas, la tercera da un error. Esto es porque la función devuelve un valor de tipo B, y B es también un A. Pero no podemos asignar a una subclase de B, al menos no sin hacer un cast, pero no vamos a hacer casts en esta ocasión. B no es un C, por lo tanto la tercera línea no compila.

Hasta aquí todo bien. Ahora, ¿Qué le podemos pasar como argumento a esta función? Tiene un solo parámetro de tipo B. En esta ocasión, es alrevés:

f(new A()); //ERROR
f(new B()); //OK
f(new C()); //OK
Distribuir contenido