Alters

Remote Tools: Teoría de programación (IV) - FTP con VB.net

Buenas!

Lo prometido es deuda, así que vamos a ver (más bien a repasar) el tema de FTP.

Tengo varias cosas que contar antes de empezar (como de costumbre)...

Estoy preparando mucho (MUCHO) material nuevo para el blog, solo necesito tiempo para estructurarlo... será un curso entero, también (no tan extenso como el de matemáticas, pero tendrá "chicha").

¡¡Ya hemos lanzado nuestro canal de YouTube!! Aquí podéis encontrarlo. Podréis ver cómo DoH (yo), Meryhell (co-propietaria de Cosplay & Co, junto a mi), y James_Strange jugamos a nuestros juegos favoritos... a veces logran sacarnos de quicio (literalmente), jejeje :-)


Interludio

Buenas!

Como es costumbre ya, sigo saturado y hasta arriba de cosas...

No obstante, sigo acordándome del blog, jejeje.

Durante la semana que viene espero poder tener la próxima entrada (Repaso de FTP con VB.net). Así, faltaría una última entrada (todo el tema de nMap), y volveríamos a las matemáticas...

Aunque no avanza todo al ritmo que me gustaría, me alegra ver cómo los proyectos poco a poco van avanzando...

A parte de esto, comunicar dos cosas:

a) ¡Estrenamos canal de Youtube!

Eso es, estamos en pleno proceso de creación de material... nuestro canal se dedicará (principalmente) a hacer gameplays de juegos que nos gustan (somo tres integrantes en el canal). Esto quiere decir que es muy probable que no sean juegos mainstream, o simplemente modernos.

b) Seré desarrollador de Google

La semana que viene me apunto al plan de desarrolladores de Google, y en breve (eso espero, ya que le dedico mucho tiempo) lanzaré mi primera app, basada en una web que estoy desarrollando (la inauguración oficial es el 1 de agosto de 2013).

En fin, esto es todo... espero poder escribir más a menudo.

Como siempre,
¡Hasta la próxima!

Remote Tools: Teoría de programación (III) - Procesos en VB.net

Buenas!

Estos días estoy hasta arriba, así que no podré actualizar el blog tanto como quisiera...

¡Eso no significa que no me acuerde de vosotros! :-P

Sigo aprendiendo cosas nuevas para poder compartirlas en este espacio (aunque, como digo, no tengo demasiado tiempo...)

En fin, vamos a lo que nos concierne: procesos con VB.net.


Remote Tools: Teoría de programación (II) - Ficheros dinámicos en COBOL

Buenas!

Ha sido una temporada sin escribir... igual hasta os he preocupado jajajaja :-P

La verdad es que últimamente no paro... y en fin, dentro de unos meses acabo la teoría de mi certificación en ISPA, y a la vez empiezo el grado en matemáticas; las cosas van avanzando un poco a mi favor :-)

Bueno, dejemos ya el intermedio de mi vida privada, jejeje.

Esta entrada tratará una situación que alguna vez habrá pasado por la cabeza de los "Coboleros".

¿Cómo hago si tengo que acceder a varios archivos a la vez en COBOL?


Remote Tools: Teoría de programación (I) - Arreglos en COBOL

Buenas!

Se acaban mis vacaciones, pero quedo con la buena sensación de haber descansado y poner ciertas cosas en su sitio...

Los dos próximos meses serán un no parar, así que es posible que esté más ausente que nunca (sobretodo en julio). Es posible que algunos meses también esté "a half" por temas personales.

Pero bueno, uno hace lo que puede, ¿no? y mientras encuentre una hora libre al día podré dedicarme a escribir y plasmar mis conocimientos, que es a lo que venimos aquí :-)

Y bien, en esta entrada nos metemos en la segunda parte de Remote Tools, la herramienta para smartphone que iré desarrollando como método de aprendizaje y como entretenimiento...

Esta parte, al igual que el segundo tema de matemáticas, constará de cinco partes. Vamos a ver el índice y cómo lo estructuraremos.


Mundo exterior - Matemáticas: Tema II (Tabla de derivadas)

Buenas!

Dejo, como anexo, una serie de derivadas que podéis usar cuando os sirvan (nunca está de más...)


Mundo exterior - Matemáticas: Tema II (fuciones de varias variables - ejemplos generales)

Buenas!

Ha sido tiempo sin escribir (creo)... como siempre, ando de culo!

En fin, se acerca el final de este segundo tema, con lo que se acerca también el inicio de la siguiente fase de la aplicación Remote Tools.

En esta entrada veremos varios ejemplos, que servirán para afianzar y repasar conceptos vistos con anterioridad.


Mundo exterior - Matemáticas: Tema II (derivadas segundas)

Buenas!

Llevaba algún tiempo sin escribir... y es que vuelvo a andar liado y hasta arriba!

La parte positiva es que me siento inusualmente activo... jejeje. Por otra parte, queda poco para acabar este tema matemático y volver a saco con COBOL.

En mis ratos libres hago mis pequeñas investigaciones con COBOL para adaptar los requerimientos de la app... también he tenido (recientemente) una revelación: ¿se podría, de alguna manera, tratar un sudoku como una matriz - o conjunto de ellas? en ello estoy, también.

En fin, dejémonos de divagaciones y vamos a las matemáticas.

Esta entrada tratará de segundas derivadas.

Definimos las derivadas segundas como una función lineal que transforma el espacio de R2 en R.

Podríamos aventurarnos a lanzar una primera ecuación correspondiente a una segunda derivada en una función de varias variables, a saber:

f(x,y) ≈ f(a,b) + fx(a,b)(x-a) + fy(a,b)(y-b) + ½ [fxx(a,b)(x-a)2 + 2fxy(a,b)(y-b) + fyy(a,b)(y-b)2]

f(x,y) ≈ f(a,b) + grad(f(a,b)) * R1 + ½ * R2 * H * R1

donde (por ejemplo) fxx es la derivada parcial de "x" sobre la derivada parcial de "x"; es decir, se aplican varias derivadas parciales sucesivas, tomando como variable la variable indicada.

Por otra parte, R1, R2, y H son matrices, tales que:

R1 = x-a
         y-b

R2 = (x-a   y-b)


H = fxx    fxy
       fyx   fyy

A "H" se le conoce como matriz Hessiana, y se suele denotar como "H(a,b)".

En el caso que nos atañe (funciones de dos variables), "H" es una matriz 2x2, y se dice que tiene dos valores propios (vaps): fxx y fyy (ya que fxy = fyx).

Veamos qué pasa con estos vaps:
  • si det(H) = 0: alguno de los vaps. es 0
  • si det(H) > 0: los dos vaps son mayores que 0, por tanto la función está por encima del plano "z"
    • si (a+b) > 0: H(a,b) es simétrica, cuadrada, y se puede diagonalizar.
  • si det(H) < 0: los dos vaps son menores que 0, por tanto la función está por debajo del plano "z"
    • si (a+b) > 0: H(a,b) es simétrica, cuadrada y se puede diagonalizar.
En caso que sea 0, no nos reporta ninguna información útil (al parecer).

Veamos qué son los vaps. de H:

vaps(H(a,b)) = l1, l2
l1 * l = det(H) = fxx*fyy-fxy2
l1 + l = fxx + fyy

veamos un ejemplo en el que se aplique todos estos conceptos:

f(x,y) = x2 + y/3 + xy2
Derivada segunda en el punto (7,2)
f(7,2) = 49 + 2/3 + 7*4 = 233/3
fx = 2x + y2 => en (7,2) = 18
fy = 1/3 + 2xy => en (7,2) = 85/3
fxx = 2
fxy = fyx = 2x
fyy = -2y

aplicamos fórmulas:

z = 233/3 + 18(x-7) + 85/3(y-2)

H(a,b) = 2    2y
            2y  2x

H(7,2) = 2   4
            4  14

det(H(7,2)) = 12
2 + 14 = 16
_____________
vaps > 0

Plano tangente:

Z = z + ½(2(x-7)2 + 2*4(x-7)(y-2) + 14(y-2)2)

Visto el ejemplo, pasemos a un inciso en las derivadas segundas: extremos relativos.

Para obtener los extremos relativos de una función de dos variables debe cumplirse lo siguiente:

fx = 0
fy = 0

Entonces, usando las fórmulas anteriores, obtendremos varios "juegos" de puntos. Basándose en los vaps de H(a,b), podemos saber qué tipo de extremo relativo estamos tratando:
  • si los dos vaps > 0: mínimo
  • si los dos vaps < 0: máximo
  • si un vap > 0 y otro vap < 0: intersección (hacia un eje es mínimo, hacia otro es máximo)
  • si algún vap = 0: no aporta información
Para obtener esto puntos, debemos ejecutar lo siguiente:

 - Obtenemos "fx" y "fy"
 - Obtenemos "fxx", "fxy", "fyy"
 - Igualamos "fx" y "fy" a 0, creando un sistema de ecuaciones
 - Resolvemos el sistema de ecuaciones
 - Para cada juego de soluciones, aplicamos H(a,b)

Y bien, con esto acabamos la cuarta entrega del segundo tema... las dos próximas serán cortas (ejemplos y utilidades).

Os dejo, y como siempre, ¡Hasta la próxima!




Mundo exterior - Matemáticas: Tema II (Curvas de nivel, gradientes, etc)

Buenas!

Volvemos de nuevo con las matemáticas. Esta entrada tratará sobre curvas de nivel, gradientes, derivadas de una función en un punto... vamos por partes:

Curvas de nivel:

Cuando hablamos de las curvas de nivel de una función de dos (o varias) variables, solemos hacerlo como "la curva de nivel con z=k" (donde k es un número entero).

Esta curva de nivel es una función lineal que transforma (en el caso de las funciones de dos variables) un espacio de R2 en un espacio de R.

¿Y en qué consiste? En hallar todos los puntos de f(x,y) en los que ésta valga "k"; dicho de manera resumida:

f(x,y) = k

Veamos, como siempre, un ejemplo:

f(x,y) = 4 – x2 – 2y2

Si queremos encontrar la curva de nivel de esta función con "k=0", tendríamos:


4 – x2 – 2y= 0;
x2 + 2y2 = 4

Y esto, como se puede ver, es una elipse con centro (0, 0) y radio sqrt(2)

Para la misma función, la curva de nivel con "k=2", sería:

4 – x2 – 2y= 2;
x2 + 2y2 = 2

Si hacemos varias curvas de nivel (k=0, k=1, k=2...), obtendríamos un conjunto de elipses concéntricas, con centro en (0, 0).

Es decir:

4 – x2 – 2y= k;
x2 + 2y2 = 4 - k;

Existe si 4 - k >= 0 (si k <= 0)

Obtenemos una elipse con centro (0, 0) y radio [(±sqrt(4 - k), 0), (0, ±sqrt((4 - k) / 2))]

Bien, ahora que ya sabemos cómo hacer curvas de nivel, es hora de pasar a las derivadas en un punto.

Derivadas de una función de varias variables en un punto

Definimos la derivada de una función de varias variables en un punto como el límite de un cociente incremental. 

Para resolver este tipo de derivadas, suele ser necesario el uso de derivadas parciales.

¿Qué es una derivada parcial? Es asumir una variable como tal, y el resto como constantes. Teniendo esta cláusula asumida, procedemos a hacer la derivada de la función como tal, aplicando más tarde (si lo hubiera) el conjunto de valores dados en la derivada.

Vamos a verlo mejor con un ejemplo:

Partimos de una función:

f(x,y) = x2y – 3x + e2y


Y queremos obtener la derivada de esta función en el punto (2, -3). Así, procedemos a hacer las derivadas parciales de "x" e "y".

df/dx = 2xy – 3 + 0
df/dy = x2 + 0 + 2e2y


Comprobamos como, mediante las reglas básicas de derivación podemos obtener estas expresiones.

Ahora no queda más que aplicar los valores dados en el enunciado, y obtenemos un vector (x, y) tal que:

f'(x, y) (2, -3) = (-15, 4,005)

A este vector se le llama "gradiente". Vamos a ello:

Gradientes:

Veamos algunas de sus propiedades:
  • La dirección y el sentido de derivada direccional máxima es cuando el vector (v1, v2) es el gradiente. Este pendiente máximo (derivada direccional) vale la longitud del gradiente (ya que cos = 1)
  • La dirección y el sentido de derivada direccional mínima es cuando el vector (v1, v2) es la inversa del gradiente (ya que cos = -1)
  • Si el vector (v1, v2) es perpendicular al gradiente de la función en (a, b), la derivada en el punto (a, b) de f(v1, v2) es 0.
Ahora, veamos qué pasa si los combinamos con las curvas de nivel:

Si las líneas de la curva de nivel de una función están juntas entre si, significa que, a poca variación de "x", hay mucha variación de "y", y, por tanto, el gradiente de f(x,y) es más grande.

Suponiendo que el punto (x, y) está cerca de (a, b):

f(x,y) ≈ f(a,b) + (x – a)*(df/dx) + (y – b)*(df/dy) ≈ f(a,b) + (x – a, y – b) * grad(f(a,b))

Y definimos el plano tangente "Z" como:

Z = f(a,b) + (x – a, y – b) * grad(f(a,b))
(a ≈ x, b ≈ y)

Si el plano "Z" es nulo ("Z" = 0), nos encontramos ante un punto de inflexión:

 - Máximo
 - Mínimo
 - Max/Min

La utilidad de esto lo veremos en la próxima entrada, dedicada íntegramente a derivadas dobles.

Así, el planning queda así:

 Parte IV: derivadas dobles
 Parte V: ejemplos
 Parte VI (anexo): utilidades y tabla de derivadas inmediatas

Como siempre, ¡Hasta la próxima!




Mundo exterior: Matemáticas - Tema II (Representación de funciones con dos variables)

Buenas!

Seguimos con las "mates"; pero antes, un pequeño inciso (como viene siendo costumbre últimamente).

Ya le he dado uso a mi disco duro externo: he colocado todas las distro que uso, he usado y (en un futuro) usaré. Dejo la lista:
  • Hiren's Boot 15
  • WifiWay 3.4
  • AVG Rescue CD
  • Dr.Web Live CD
  • Kaspersky Rescue Disk
  • BackTrak 5
  • Ophcrack XP
  • Ophcrack Vista/7
  • Partition wizard
  • Linux Mint Mate x86
  • Helix3 R1
Y, aparte, tengo destinado un futuro emplazamiento para mis tablas rainbow y demás (capturas de tráfico, informes...) jejeje.

En fin, sigamos con las matemáticas: en esta entrada veremos la representación de funciones de dos variables.

Para ello, distinguiremos dos tipos de funciones:
 - Cónicas
 - No cónicas

Empecemos con el primer tipo:

Cónicas:

Las funciones cónicas tienen la siguiente forma:

f(x, y) = Ax2 + By2 + Cxy + Dx + Ey + F = 0

El término "Cxy" determina la orientación de la función: si "C" vale 0, los ejes de la cónica serán rectos.

No cónicas:

A riesgo de parecer muy obvio, si no cumple la forma anterior, no es cónica...

De momento, pasaremos a otro punto importante, para luego retomar la identificación de las cónicas. Hablemos ahora de los dominios de las funciones.

El dominio de una función de dos variables es una función tal que convierte el espacio R2 en R. En esta "transformación", tenemos que evaluar (pues pueden resultar conflictivos) una serie de casos, a saber: 
  • A / B => si B = 0
  • √A => si A < 0
  • Ln(A) => si a <= 0
  • arcsin(A) => si |A| >= 1
Como vemos, son casos problemáticos, pues producen "fallo" en los cálculos. Así, el análisis de dominio de una función se basará en estos puntos. Vamos con un ejemplo:

f(x, y) = sqrt((x2 – y2 + 4) / ((x – 1)2 + y2 – 9)) (sqrt() = raíz cuadrada)

He coloreado los paréntesis para que se puedan distinguir fácilmente. Veamos qué casos son "peligrosos" para la evaluación de esta función:

a) ((x – 1)2 + y2 – 9) = 0
b) (x2 – y2 + 4) / ((x – 1)2 + y2 – 9) < 0

Vamos a justificar ambos casos:

 - Si la expresión "a" se cumple, se haría una división por 0, por lo que de la raíz cuadrada ni hablamos.
 - Si la expresión "b" se cumple, no podemos hacer  la raíz cuadrada (al menos dentro del cuerpo de los reales, que es donde trabajamos)

El procedimiento para evaluar estas anomalías creo que será conocido: miramos qué condiciones hay que cumplir para que pase:

a) ((x – 1)2 + y2= 9

Si se cumple esto, tendríamos un problema. Vemos que la función de arriba define una circunferencia caracterizada por los siguientes datos:

 * Origen: (-1, 0)
 * Radio: 3 (sqrt(9))

Para los que no sepáis de donde viene esto, un inciso: la función que define una circunferencia es la siguiente:

f(x, y) = (x+a)^2 + (y+b)^2 = c

De aquí obtenemos:

 * Origen: (a, b)
 * Radio: sqrt(c)


b) Se divide en dos:

b1) ((x – 1)2 + y2= 9 (ya resuelta)
b2) (x2 – y2) = -4 => ±sqrt(x2 + 4) = y => y = ±(x+2)

La solución de "b2" es una fórmula de circunferencia, pero con "c" negativo (por lo que es, en realidad, una parábola doble).

Para no abusar tanto del escaneo de apuntes, voy a echar mano de mi amigo "Corel" para ilustrar un poco el panorama: 
















Si representamos ambas soluciones, quedan delimitadas 7 zonas, marcadas arriba. Del mismo modo que en la entrada anterior, comprobamos el signo de las ecuaciones "a" y "b" y calculamos su "total".

En este caso, nos interesan las zonas que sean mayores que 0 (positivas), ya que a fin de cuentas tendremos que hacer una raíz cuadrada.

Diríamos, en este caso, que la función solo tiene dominio en las zonas 2, 3, 5, y 6.

Una vez visto un ejemplo de aplicación de dominio, volvamos a las cónicas.

Identificación de cónicas:

f(x, y) = Ax2 + By2 + Cxy + Dx + Ey + F = 0 (suponemos "C" = 0)

Pongamos un ejemplo:


4x2y2 + 3x + 2y – 25 = 0
(2x + ¾)2 – 9/4(y2 – 2y) – 25 = 0
(2x + ¾)2 – 9/4[(y – 1)2 - 1] – 25 = 0
(2x + ¾)2(y – 1)2 = 105/4

Vamos a explicar un poco cómo llegamos a la forma de abajo (antes os comentaba que era la función que define una circunferencia).

Paso 1: Tenemos la ecuación tal cual
Paso 2: Agrupamos los términos con "x" (marcados en rojo), y factorizamos. Agrupamos también los términos con "y" (marcados de azul verdoso)
Paso 3: nos valemos de la siguiente expresión inmediata para ejercer el cambio sobre los términos "y":

(ax + b)2 = a2x2 + 2abx + b2

Ya que se cumple, podemos sustituir.

Paso 4: Despejamos para dejar en forma de "circunferencia".

Ahora bien, una vez tenemos nuestra ecuación "arreglada", tenemos que ver varias cosas:

Si sig("A") != sig("B") => hipérbola
Si sig("A") = sig("B") => elipse o circunferencia (puede ser imaginaria)

"sig()" es una función que obtiene el signo del coeficiente especificado.

Si tenemos una circunferencia es fácil dibujarla (buscamos el centro y usamos el radio); si es una hipérbola,  una elipse, o en general, procedemos así:
  • Buscamos el centro
  • Buscamos los puntos "x" e "y" en el centro
  • Dibujamos los puntos
Vamos por partes, con una versión un poco diferente al ejemplo anterior ((2x + ¾)2 + (y – 1)2 = 105/4):

Obtener el centro:

Para ello, tomamos parte de la ecuación (la correspondiente a cada variable, sin cuadrado) y la igualamos a 0, tal que: 

2x + 3/4 = 0 => x = -3/8
y - 1 = 0 => y = 1

Obtenemos nuestro punto (-3/8, 1), que es el centro.


Puntos "x" e "y" en el centro

Usando los valores del centro, resolvemos la ecuación correspondiente a la variable contraria, usando el cuadrado, tal que: 

(para x = -3/8): (y - 1)= 105/4; y = 1±sqrt(105/4)
(para y = 1): (2x + 3/4)= 105/4; x = (±sqrt(105/4) - 3/4)/2

y obtenemos estas dos expresiones: 

x = (±sqrt(105/4) - 3/4)/2
y = 1±sqrt(105/4)

Que usaríamos para dibujar (en este caso) nuestra elipse.

En el caso anterior (con los términos restando) obtenemos que en "y" no hay punto aplicable (ya que queda "y = 1±sqrt(-105/4)", y no hay solución real para ello), y "x" queda igual.

Con esto acabamos por esta vez. La próxima entrada tratará de curvas de nivel, gradientes y demás cosas similares (mis apuntes tienen una estructura un poco caótica... jejeje).

Como siempre, ¡Nos vemos!