java code with a meaningless condition
Encontré esta pieza de código Java, sólo es un condicional:
if (banda.getField55().containsKey(“5F34″)
&& (!(banda.getElementValue(“5F34″).equals(“4E50″) && BcdLib
.hexStr_ascii(banda.getElementValue(“5F34″))
.equalsIgnoreCase(“NP”)))) {
En la primera parte de la condición se evalúa si algún campo contiene un valor (una clave). Creo que está bien, porque esta primera parte impide que el acceso a la “clave” en la segunda parte de la condición genere una excepción de null pointer típica de Java, esto es para evitar que el acceso a un campo inexistente genere un error.
Vamos a deshacernos de la primera parte y quedarnos sólo con la segunda parte de la condicion:
(!(banda.getElementValue(“5F34″).equals(“4E50″) &&
BcdLib.hexStr_ascii(banda.getElementValue(“5F34″)).equalsIgnoreCase(“NP”)))
Creo que siempre devuelve true por lo que esta parte de la condición es inútil. Lo peor es que introduce confusion al código porque el lector cree que este código hace algo realmente útil. Esta parte de la condición es una negación, por lo que si siempre devuelve true, la parte interior siempre debe devolver false, vamos a ver si eso ocurre:
banda.getElementValue(“5F34″).equals(“4E50″) &&
BcdLib.hexStr_ascii(banda.getElementValue(“5F34″)).equalsIgnoreCase(“NP”)
Para que esta parte de dos condiciones sea verdad, ambas condiciones deben ser verdaderas (es una “y” condicional). Pero aquí están evaluando si un solo valor es igual a dos valores diferentes al mismo tiempo, tal condición no puede suceder nunca, por lo que esta parte de la frase siempre devuelve false. Esto demuestra el punto de que esta parte de la condición carece de sentido.
Esto me lleva a pensar que el desarrollador original no tenía mucha idea de las reglas que él estaba tratando de escribir en su código. O puede ser que esto es un error en la condición que debe ser un “o” en lugar de una “y”? No hay manera de saber la respuesta al día de hoy.
Hay otros problemas sutiles en el código: ¿Por qué un acceso a la clave a través de getField55, en primer lugar, a continuación, acceder a la misma clave a través del objeto banda directamente? Además, están utilizando estos valores mágicas hexadecimales como 5F34, 4E50 y ese string NP, ¿Cuál es el significado de esos valores? Bueno, esto es sólo una pequeña parte de un sistema hecho de código espagueti, así que no me sorprendió encontrar este tipo de cosas, puede ser que empiece a escribir sobre esos trozos de malos códigos o errores …
java code with a meaningless condition
I found this piece of Java code, it is only a conditional:
if (banda.getField55().containsKey(“5F34″)
&& (!(banda.getElementValue(“5F34″).equals(“4E50″) && BcdLib
.hexStr_ascii(banda.getElementValue(“5F34″))
.equalsIgnoreCase(“NP”)))) {
In the first part of the condition evaluates if some field contains a value (a key). I think it is OK because this first part prevents that the access to that ‘key’ in the second part of the conditional raises a null pointer exception tipical to Java, this is to prevent that the access to an inexistent field throws an error.
Let’s get rid of the first part and stay only with the second part of the conditional:
(!(banda.getElementValue(“5F34″).equals(“4E50″) &&
BcdLib.hexStr_ascii(banda.getElementValue(“5F34″)).equalsIgnoreCase(“NP”)))
I think this always returns true and makes this part of the condition useless. Worst it introduces confussion to the code because the reader believes this code really does something usefull. This part of the condition is a negation, so if it always returns true, the inner part must always return false, let’s see if that happens:
banda.getElementValue(“5F34″).equals(“4E50″) &&
BcdLib.hexStr_ascii(banda.getElementValue(“5F34″)).equalsIgnoreCase(“NP”)
Then for this two part condition to be true, both conditions must be true (it’s an ‘and’ conditional). But here they are evaluating if one single value is equal to two different values at the same time, such condition can’t even happen, so this part of the sentence always return false. This proves the point that this part of the condition is meaningless.
This lead me to think that the original developer has no much idea of the rules he was trying to write into his code. O may be this is an error in the condition which must be an ‘or’ instead of an ‘and’? There is no way of knowing the answer right now.
There are other subtle issues in this code: Why one access the key through a getField55 in the first place, then access the same key through the banda object directly? Also, they are using this magic strings with hex values like 5F34, 4E50 and this NP string, What is the meaning of those values? Well, this is just a small part of a medium system made of spagetti code, so no surprise to me finding this kind of things, may be I start to write about those bits of bad codes or mistakes…
Comencé con el KDE hace años atrás con Kubuntu. Aunque también probé Gnome, el KDE me gustó más y decidí aprenderlo primero. Luego de todo el rollo de la salida de KDE 4 comencé a utilizar Gnome y LXDE. También probé algunos otros, pero dejé KDE de un lado temporalmente porque ciertamente no estaba listo para se utilizado. Pero luego salió Gnome 3, y bueno, tuve que volver a probar otros escritorios, retornando nuevamente al KDE.
Creo que el sacar apresuradamente el KDE 4 fue un grave error para la comunidad KDE. Lo mismo le puede pasar a Gnome 3, por otras razones, en el caso de KDE 4 el problema fueron las fallas, lo incompleto que estaba y la falta de compatibilidad hacia atrás. En el caso de Gnome 3, probablemente el hecho de que sea una interfaz más como para tablets. Pero eso es otra discusión que no importa, cada quien puede tener su opinión sobre cada escritorio, pero el caso es que no me gustó, prefiero el KDE ahora.
La comunidad Debian Venezuela estará celebrando el IX Día Debian por motivo del 20vo aniversario de la MetaDistribución Debian GNU/Linux.
Debian GNU/Linux (www.debian.org) es la distribución 100% colaborativa, sin fines de lucro mas grande de internet en el mundo del software libre, tiene varios proyectos alojados y de ella se han derivado muchas distribuciones entre las que se pueden nombrar, Ubuntu, Linux Mint, Knoppix y la distribución usada y promovida por el estado venezolano como lo es Canaima GNU/Linux (canaima.softwarelibre.gob.ve) usada en las computadoras portátiles para la educación venezolana mejor conocidas como “Canaimitas”.
El evento se realizará en fecha 17 de agosto del 2013 en las instalaciones del Instituto Nacional de Capacitación y Educación Socialista Jesús “Gordo” Páez (INCES) Barquisimeto, ubicado en la Carrera 19 esquina calle 23.
La modalidad de inscripción para su registro contempla tres tipos de participación la cual usted podrá elegir la mas acorde a su asistencia.
El evento es totalmente gratuito, de entrada libre (previo registro) y se expedirá certificado de asistencia de acuerdo a su participación.
El equipo organizador del IX Dia Debian espera con gusto, agrado y los brazos abiertos a todos los que deseen asistir, para fomentar el conocimiento libre, rumbo a la creación del compromiso social en las redes de tecnología de información libres.
Para participar deberás registrarte en https://eventioz.cl/e/dia-debian
Siguiendo con la promoción y divulgación de los diferentes proyectos de Software Libre como miembro de VELUGMaracaibo, me he permitido organizar una vez mas el Día de la Libertad del Software en Maracaibo Edo. Zulia.
Para esta oportunidad contaremos con el auditorio de la UNEFA ubicado en la Av. el Milagro (ver mapa), y será realizado el 21 de Septiembre del presente año como se contempla en la web principal del evento (ver información del evento).
Si deseas dar una charla, colaborar en la organización o simplemente compartir con la comunidad de Software Libre puedes registrarte en https://eventioz.cl/sfdzulia2013
Hasta ahora las comunidades que organizarán y apoyarán para la ejecución del mismo sería por supuesto VELUGMaracaibo, COMATEL, Ubuntu Venezuela, entre otros que se irán integrando a la medida que avancemos con la organización.
Igual contaremos con el apoyo de organización sin fines de lucro e instituciones tanto públicas como privadas como por ejemplo, UNEFA Maracaibo, Wikimedia Venezuela, Proyecto Kiwix, Hostingía y IUTM.
Si deseas apoyar el evento no dudes en contactarme.
Para mayor información de la organización visita
http://wiki.softwarefreedomday.org/2013/Venezuela/Zulia/Maracaibo
Siguiendo con la ejecución y promoción del JUSoL en el Estado Zulia, me complace informarles que estaremos este 26 de JULIO en la Universidad Católica Cecilio Acosta, continuando con las actividades que ha sido aceptado con mucho agrado por parte de las comunidades Universitaria.
Para esta oportunidad tendremos la participación de miembros de la Comunidad y miembros de la comunidad estudiantes, donde presentarán avances importantes sobre el Software Libre en el ámbito humanístico.
Para las personas que deseen obtener certificado deberán registrarse a través del enlace https://www.regonline.com/jusolunicazulia2013
Para mayor información podrán observar los afiches y el cronograma de charlas.
JUSoL: Jornadas Universitaria de Software Libre, es una idea adoptada por el grupo de Usuarios UCLATUX donde realizaron en su casa de estudio UCLA diferentes eventos informativos sobre los avances tecnológicos en materia de S.L. para la época.
Esta iniciativa se retoma con el propósito de impulsar el crecimiento y desarrollo del Software Libre dentro del ámbito Educativo institucional en la Región Occidental, para lograr la independencia Científica–Tecnológica del software, apoyándose en los Decretos Nacionales 3390, 39109 y 39633 en su resolución No. 25.
Este evento se estará realizando en 3 universidades en diferentes fechas, por los momentos contaremos con el auditorio del IUTM (Instituto Universitario de Tecnología de Maracaibo), donde participarán el colectivo VELUGMaracaibo, COMATEL (COmunidad Abierta de Tecnología Libre) y compañeros de la Comunidad de Software Libre Nacional.
Pronto publicaré el cronograma de talleres y ponencias de esta primera fecha al igual que las otras 2 sedes. Hasta ahora se han manifestado UBV, URBE, UNICA, UNIR y UNERMB.
Este pequeño post es para enseñarles a como crear un LiveUSB MultiBoot, pero para ello debemos considerar lo siguiente:
Comencemos!!!!
Eso es tuti, ya queda de parte de ustedes ojear las otras opciones que trae esta pequeña herramienta.
Tras la búsqueda de poder solventar un problema que ameritaba el formateo total de uno de los equipos educativos (Canaimita), me motivo a comunicarme por las vías regulares con (CNTI, FUNDABIT, MPPE, entre otros), y las respuestas nunca fueron nada positivo. El problema que vi en esta oportunidad (cuestión que no es secreto para nadie), la burocracia y el yoismo de las instituciones del estado no permitieron compartir conocimiento ni las herramientas para ayudar a solventar un problema (del tamaño que sea) con las comunidades organizadas. Yo (que laboro en una institución del estado), al solicitar apoyo para obtener en este caso, las imágenes de las Canaimitas me han informado que esta tarea le compete solo a CANTV, FUNDABIT y MPPE, con la salvedad de que LAS FUNDACITES somos entes adscrito al MCTI y que también podemos ayudar a agilizar y solventar cualquier falla que pueda tener los niños que hoy en día tienen gracias al estado su Canaimita.
Bueno, como yo no como cuento para compartir e informar sobre como solventar cualquier falla en el mundo del Software Libre, les comento como fue que pude generar una sonrisa de una niña que tenía mas de 6 meses sin su Canaimita.
Si el problema que tiene no puede ser solventado y amerita un formateo como dije en lineas anteriores, les explico como podemos resolver este pequeño inconveniente:
Primero debemos saber que tipo de equipo tenemos, hay 3 versiones:
Canaima 1
Canaima 2
Canaima 3
Debemos conocer que modelo tenemos y por supuesto el tamaño del disco, al conocer con detalle el equipo que tenemos podemos descargar la imagen que corresponde. Es necesario tener conocimiento del manejo y uso de CloneZilla, el te ayudará a solventar el problema.
Después de reinstalar la imagen, puede darte problemas con el gestor de arranque (Burg), para acomodarlo necesitarás utilizar un LiveCD, te recomiendo PUPPY LINUX y hace lo siguiente:
# fdisk -l
# mount /dev/sda1 /mnt
# mount /dev/sda2 /mnt/boot
# mount –bind /dev /mnt/dev
# chroot /mnt
# burg-install /dev/sda (Si tu disco es IDE utilizarás hda)
Ya con eso solventaremos el problema del grub, ahora necesitaremos instalar los contenidos educativos, para ello debes descargar uno de los manuales que se lista a continuación:
Ahora, la contraseña administrativa puede ser una de las siguientes:
Hoy por primera vez hemos decidido utilizar otro Sistema Operativo que no sea Ubuntu, por razones que muchos de mis compañeros conocen, el descontento total por el entorno Unity. Gracias a ese entorno hemos decidido (Mi esposa y yo), sacrificar una de las laptops personales utilizando otro sistema operativo que no sea Ubuntu, pero como mis genes aún no quiere separarse totalmente de él, hemos decidido experimentar Linux Mint, un sistema operativo basado en Ubuntu.
La versión que actualmente estamos utilizando es la 14 (Nadia) basada en Ubuntu 12.10 (Quantal), de verdad es un sistema operativo bastante ligero comparado con Ubuntu y mas limpio con respecto al entorno gráfico.
Esta instalación es aplicado en una Lenovo Ideapad S10e que posee las siguientes características:
00:00.0 Host bridge: Intel Corporation Mobile 945GSE Express Memory Controller Hub (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GSE Express Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03)
00:1b.0 Audio device: Intel Corporation NM10/ICH7 Family High Definition Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation NM10/ICH7 Family PCI Express Port 1 (rev 02)
00:1c.1 PCI bridge: Intel Corporation NM10/ICH7 Family PCI Express Port 2 (rev 02)
00:1c.2 PCI bridge: Intel Corporation NM10/ICH7 Family PCI Express Port 3 (rev 02)
00:1d.0 USB controller: Intel Corporation NM10/ICH7 Family USB UHCI Controller #1 (rev 02)
00:1d.1 USB controller: Intel Corporation NM10/ICH7 Family USB UHCI Controller #2 (rev 02)
00:1d.2 USB controller: Intel Corporation NM10/ICH7 Family USB UHCI Controller #3 (rev 02)
00:1d.3 USB controller: Intel Corporation NM10/ICH7 Family USB UHCI Controller #4 (rev 02)
00:1d.7 USB controller: Intel Corporation NM10/ICH7 Family USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 02)
00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7-M Family) SATA Controller [IDE mode] (rev 02)
00:1f.3 SMBus: Intel Corporation NM10/ICH7 Family SMBus Controller (rev 02)
02:00.0 Ethernet controller: Broadcom Corporation NetLink BCM5906M Fast Ethernet PCI Express (rev 02)
05:00.0 Network controller: Broadcom Corporation BCM4312 802.11b/g LP-PHY (rev 01)
Hasta ahora solo he detectado un problema, el bendito problema de las tarjetas inalámbricas, en mi caso es una Broadcom BCM4312.
Para Linux Mint 14, Broadcom BCM4312 utiliza firmware privativo, como políticas de ellos por defecto después de haber realizado la instalación, no activa ni instala ningún firmware, sabiendo que en sus repositorios está el disponible el firmware que lo hace funcionar.
Para activarlo, solo deben hacer lo siguiente:
sudo aptitude install firmware-b43-lpphy-installer
Reiniciamos nuestro equipo y listo.
De resto no me puedo quejar, todo funciona perfectamente, tal como cuando utilizaba Ubuntu 10.04