Accessibility by W3C [EN]
jueves, 7 de abril de 2011 | Author: Alex Alvarez Gárciga | Etiquetas: Frontend Web ProgrammingAccessibility: WCAG2 at a Glance
- Provide text alternatives for non-text content.
- Provide captions and alternatives for audio and video content.
- Make content adaptable; and make it available to assistive technologies.
- Use sufficient contrast to make things easy to see and hear.
- Make all functionality keyboard accessible.
- Give users enough time to read and use content.
- Do not use content that causes seizures.
- Help users navigate and find content.
- Make text readable and understandable.
- Make content appear and operate in predictable ways.
- Help users avoid and correct mistakes.
- Maximize compatibility with current and future technologies.
CSS for Frontend Web Programmers [EN]
| Author: Alex Alvarez Gárciga | Etiquetas: Frontend Web Programming, ProgramaciónMi primer AFD [ES]
lunes, 4 de abril de 2011 | Author: Alex Alvarez Gárciga | Etiquetas: Java, Programación, TeoríaUn autómata finito determinista (abreviado AFD) es un autómata finito que además es un sistema determinista; es decir, para cada estado en que se encuentre el autómata, y con cualquier símbolo del alfabeto leído, existe siempre a lo más una transición posible desde ese estado y con ese símbolo.
La definición formal y los conceptos de autómata finito y sistema determinista pueden buscarlos en la Wikipedia ya que no es mi objetivo explicar aquí tales conocimientos, además no creo que sea el más capacitado para ello.
Pero lo cierto es que estudiando para la asignatura de "Compiladores" me he topado con esta herramienta que ahora veo que me será útil, de seguro, más de una vez.
Ya para ir entrando en calor, quiero comentar sobre mi primer trastazo con esto de lo que les hablaba.
Resulta ser de un ejercicio donde me piden asegurar que una cadena de texto cumpla con las siguientes condiciones: siendo así la primera, que mi alfabeto válido está compuesto solo por el conjunto de estos símbolos (a, b, c, d), cumpliéndose obligatoriamente que la cantidad válida para los símbolos a y b deben ser pares, mientras que los restantes c y d pueden ser usados sin restricción alguna.
- cd
- acda
- abab
- aaccdbaba
Después solo restó programarlo, que para el caso me auxilie de Java como lenguaje. Aquí les dejo la clase AFD que implementa este autómata:
package afdexample;
/**
*
* @author Alex Alvarez Garciga
*/
enum Status {q0, q1, q2, q3}
public class AFD {
public Boolean Check(String text){
Status _status = Status.q0;
for (int i = 0; i < text.length(); i++) {
switch(_status){
case q0:
switch(text.charAt(i)){
case 'c':
case 'd':
_status = Status.q0;
break;
case 'a':
_status = Status.q1;
break;
case 'b':
_status = Status.q2;
break;
default:
return false;
}
break;
case q1:
switch(text.charAt(i)){
case 'c':
case 'd':
_status = Status.q1;
break;
case 'a':
_status = Status.q0;
break;
case 'b':
_status = Status.q3;
break;
default:
return false;
}
break;
case q2:
switch(text.charAt(i)){
case 'c':
case 'd':
_status = Status.q2;
break;
case 'a':
_status = Status.q3;
break;
case 'b':
_status = Status.q0;
break;
default:
return false;
}
break;
case q3:
switch(text.charAt(i)){
case 'c':
case 'd':
_status = Status.q3;
break;
case 'a':
_status = Status.q2;
break;
case 'b':
_status = Status.q1;
break;
default:
return false;
}
break;
}
}
return _status == Status.q0;
}
}
Concepto Clásico de Probabilidad [ES]
| Author: Alex Alvarez Gárciga | Etiquetas: Matemáticas, TeoríaLa primera vez que a mi ha llegado referencias de las probabilidades como un estudio y herramienta matemática ha sido con el anime Death Note. Por ese entonces deseaba dominar tal conocimiento para poder usarlo como lo hacían sus personajes principales, creo que todos los que han visto la serie saben de lo que hablo.
Pero ahora que realmente me ha tocado estudiar el tema, empiezo a darle el respeto que merece.
Primero quiero empezar hablando sobre el Concepto Clásico de Probabilidad. Solamente utilizado cuando todos los resultados son equi-probables. Donde decimos que:
Si hay n resultados igualmente posibles, todos los cuales ocurren y son considerados favorables o como un éxito, entonces la probabilidad de un éxito esta dada por s/n.
Para ello los términos "favorables" y "éxito" son usados de manera vaga: "favorable" puede ser que alguien se lastime y "éxito" que que una persona fallezca.
Ejemplo:
¿Cuál es la probabilidad de sacar un as de un paquete barajado de 52 Naipes?
Solución:
Hay s = 4 ases entre los n = 52 naipes; así que se tiene: s/n = 4 / 52 = 1 / 13 = 0.08 aproximadamente. Una probabilidad muy baja realmente.
Pero este concepto clásico tiene un inconveniente serio. Resultando en su limitada aplicación, ya que existen situaciones en que las posibilidades no pueden considerarse todas como igualmente probables y estas son las que más. Sería el caso, por ejemplo, si quisiéramos saber si lloverá mañana o bien si el lanzamiento de un dardo tendrá éxito.
Por eso entre las diversas nociones de probabilidad, la más ampliamente utilizada es la interpretación de probabilidad como frecuencia relativa. Según la cual
la probabilidad de un evento (que suceda o resulte) es la proporción de veces que el evento sucedería en una serie prolongada de experimentos repetidos.
Ejemplo:
Si 3 de 20 neumáticos están defectuosos y 4 de ellos se escogen aleatoriamente (cada neumático tiene la misma posibilidad de ser seleccionado) ¿Cuál es la probabilidad de que solamente uno de los defectuosos sea escogido?
Solución:
Primero recordemos que nCr = n! / r! (n-r)! , entonces tenemos que hay 20C4 = 4,845 formas igualmente probables de elegir 4 de los 20 neumáticos; así que n = 4,845.
El numero de resultados favorables es el numero de formas en las cuales uno de los neumáticos defectuosos y 3 de los neumáticos en buen estado pueden escogerse. Así s = 3C1 x 17C3 = 3 x 680 = 2,040. Se sigue entonces que la probabilidad es s/n = 2,040 / 4,845 = 8 / 19 o aproximadamente 0.42.
Nota: nCr se trata de otro concepto ya tratado en uno de mis artículos anteriores Permutaciones y Combinaciones
Permutaciones y Combinaciones [ES]
| Author: Alex Alvarez Gárciga | Etiquetas: Matemáticas, TeoríaEn general, si r objetos se eligen de un conjunto de n objetos distintos, cualquier arreglo u ordenación de ellos se denomina permutación.
nPr = n (n-1) (n-2) ... (n-r+1)
nPr = n! / (n-r)!Existen muchos problemas en los cuales debemos encontrar el número de formas en que r objetos pueden elegiste de un conjunto de n objetos, pero no nos interesa el orden en que se realiza la elección. Para ello necesitamos conocer el numero de combinaciones de n objetos cuando se toman r a la vez denotado por nCr obtenida de dividir nPr entre r!.
nCr = n (n-1) (n-2) ... (n-r+1) / r!
nCr = n! / r! (n-r)!Ejemplo:
¿En cuantas formas diferentes puede el jefe de un proyecto de software elegir a dos analistas entre siete aspirantes, y tres programadores entre nueve candidatos?
Los analistas pueden ser elegidos en 7C2 = 21 formas,los programadores pueden elegirse en 9C3 = 84 formas;así que la elección completa puede realizarse en 21 x 84 = 1,764 formas.