Buenas tardes a todos, regresé por aquí y ahora si voy a publicar el ejercicio de la esteganografía en Python para ocultar mensajes de texto en archivos midi. Básicamente necesitamos la librería midi de python que se puede descargar siguiendo las instrucciones del proyecto en la siguiente url una vez hecho esto, pueden bajar el código fuente de la aplicación de esteganografía en mi bitbucket donde se encuentra el proyecto. Al que le puede interesar, espero que le sea útil.
https://bitbucket.org/vteran/esteganograf-a-en-python/overview
El proyecto consta de dos clases , ocultamiento y desocultar y un script ejecutar que actúa como punto de entrada. Espero les sea útil y si les gusto, recuerden dejar un comentario o invitarme un café.
Programar de vez en cuando
Consejos de programación, Ejemplos de distintas cosas, Cursos de Programación bajo demanda Python, PHP, C/C++ Básico, Javascript, Asesoría en diseño de Software
miércoles, 20 de julio de 2016
viernes, 26 de febrero de 2016
La vida es pasajera
Hace dos noches falleció un hombre muy importante en mi vida, mi tío Juan Carlos para toda mi familia, Kiko. La tristeza en este momento embarga a toda mi familia, aquí en la distancia como emigrante venezolano saber que todos están sobre llevando este duro dolor me hace sentir más triste aún. Para mi, un gran amigo casi como un padre por el rol que jugó en mi vida. Mis primos, son más que mis primos son mis hermanos. Lo extrañare por todo, desde su risa y burla de la situación de Venezuela hasta los almuerzos familiares en el restaurante Yuan Lin, simplemente ya no será lo mismo. Es duro que el sea el primero de mis familiares más cercanos en partir, siendo el más joven de ellos. Estoy seguro que todos lo amábamos, mi hermano y yo lo admirábamos de la gran manera como llevaba a su familia, yo en especial lo admiraba como arquitecto como profesional y en mi juventud siempre e inexperiencia siempre acepte su consejo. "A veces toca regalar el trabajo, para ganar experiencia. La experiencia es lo que vale plata" sus consejos con las mujeres también están en mi mente. La que llegue a ser mi esposa, me ganará por los consejos de mi tío. Aquí, escribiendo este largo párrafo se me enredan los sentimientos. Se me salen las lagrimas, solo pido a Jehova Dios que lo tenga en su seno y que sea salvado por su familia que creemos en Jesús como nuestro salvador, la biblia dice cree en el señor Jesús y tu y tu casa serán salvos, ruego que Jesús pague su rescate como lo ha pagado por mi, y por ser mi familia este descansando con el padre Abraham.
Tenia tiempo sin escribir, pero esto me tiene triste. Solo puedo desahogarme por medio de las letras.
Al que me lea, gracias,
Tenia tiempo sin escribir, pero esto me tiene triste. Solo puedo desahogarme por medio de las letras.
Al que me lea, gracias,
jueves, 12 de noviembre de 2015
Estructura de Repetición For
Buenas noches, volviendo con el curso de C# vamos a exponer rapidamente que es una estructura de repetición FOR.
En programación un ciclo for, se define como una ciclo repita para, esta estructura de repetición en la mayoría de los lenguajes de programación define define una variable de control en su definición que indica de que manera se va a llevar a cabo la repetición de los procesos indicados. La idea fundamental de las estructuras de repetición, es repetir una operación tanta cantidad de veces o hasta que se cumpla determinada condición.
Veamos el ejemplo. En C#
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace EstructuraFor { class Program { static void Main(string[] args) { System.Console.WriteLine("Esta aplicación cuenta hasta 100"); for (int i = 0; i <= 100; i++) { System.Console.WriteLine(i); } System.Console.WriteLine("Ya terminó de contar"); System.Console.ReadKey(); } } }Observen, que básicamente la idea del ejemplo es repetir la impresión del conteo en cada vuelta. Esta estructura básica de programación permite más adelante hacer algo que comúnmente llamamos una multiplicación, es decir una suma repetida.
Veamos el siguiente ejemplo.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace EstructuraFor { class Program { static void Main(string[] args) { String multiplicando = ""; String multiplicador = ""; System.Console.WriteLine("Por favor ingrese el multiplicando"); multiplicando = System.Console.ReadLine(); System.Console.WriteLine("Por favor ingrese el multiplicador"); multiplicador= System.Console.ReadLine(); double a = System.Convert.ToDouble(multiplicando); double b = System.Convert.ToDouble(multiplicador); double result = 0; for (double i = 0 ; i < b; i++) { result = result + a; } System.Console.WriteLine("La multiplicación es {0}", result); System.Console.ReadKey(); } } }
Ahora, en sus casas pueden practicar realizando una estructura de repetición que realice la potencia.
¿Como sería?
viernes, 1 de mayo de 2015
Django Role Based Access Control Modelado
Buenas tardes a todos, he estado un poco ocupado con mi trabajo habitual adicional de un proyecto personal y por esa razón no he vuelto a publicar del curso de C#, obviamente deseo terminarlo y tal vez aprovechando el fin de semana largo mañana publique una entrada o dos. Pero lo que me trae por aquí hoy es un interés que tenia en el Django Role Based Acces Control, y su modelado de base de datos para poder integrarla a nuestros proyectos. Entonces, como necesitaba dicha información me tome la molestia de generar el diagrama usando mysql workbrech. Aquí se los dejo.
PD: Algunos artículos que pueden ser de utilidad.
http://scottbarnham.com/blog/2008/08/21/extending-the-django-user-model-with-inheritance/
http://www.b-list.org/weblog/2007/feb/20/about-model-subclassing/
http://www.b-list.org/weblog/2007/feb/20/about-model-subclassing/
Bueno, espero les sea de utilidad. Hasta la próxima.
PD: Algunos artículos que pueden ser de utilidad.
http://scottbarnham.com/blog/2008/08/21/extending-the-django-user-model-with-inheritance/
http://www.b-list.org/weblog/2007/feb/20/about-model-subclassing/
http://www.b-list.org/weblog/2007/feb/20/about-model-subclassing/
domingo, 29 de marzo de 2015
Maquina Virtual Virtual Box en segundo plano
Les cuento, dadas las fronteras digitales que existen por la Digital Millennium Copyright Act algunas personas en algunos paises no pueden acceder a ciertos contenidos, así algunos familiares se encuentre pagando por ellos. Ejemplo, mi madre en Venezuela no puede usar Claro Vídeo porque el servicio no se encuentra disponible para su país, sin embargo en computación siempre hay una manera de hacer las cosas.
Para poder acceder a servicios restringidos por direcciones ip, hay que pedirle a un familiar que nos haga los siguientes favores.
1) Crear una maquina virtual en el país donde el servicio es valido, usando Virtual Box tal como lo explica la señorita Jessica en lignux.com.
2) Instalar una herramienta gratuita de control remoto como TeamViewer en la maquina virtual.
3) Activar el inicio automático en segundo plano de la maquina virtual en nuestro equipo para que nuestra querida madre acceda de manera remota y pueda ver lo que quiera ver sin afectar nuestro trabajo en primer plano. Este paso se divide en los siguientes:
a) Crear un archivo de nombre startvm.bat en cualquier ruta con la siguiente linea:
"C:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe" -startvm "Debian" -p 3340
b) Crear otro archivo startvm.vbs con las siguientes lineas en la misma ubicación
Dim oShell
Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "startvm.bat",0, true
Set oShell = Nothing
c) Agregar al inicio automático de windows nuestro scritpt startvm.vbs, de la siguiente manera
Ahora la maquina virtual se iniciará automáticamente al encender nuestro equipo host. Adicional a esto debemos configurar el inicio automático de teamviewer en la maquina virtual. Así se podrá controlar apenas se encienda sin mayor interacción de nuestra parte. Para eso, podemos seguir las instrucciones del siguiente enlace.
sábado, 28 de marzo de 2015
Estructuras de control de flujo (decisión)
Estructuras de
control de flujo
Buenos días, hoy vamos a hablar
de las estructuras de control de flujo, en esta primera parte de las
estructuras de decisión. Estas estructuras son las que permiten escribir
programas complejos dado que solo con variables y sentencias de captura las
aplicaciones serían una sucesión lineal de instrucciones sin mucha utilidad.
Las estructuras de control se
dividen en dos grupos: Estructuras condicionales, y estructuras de repetición .
Cada una con sus propias especificaciones que ayudan a dar sentido a nuestros
programas.
Estructuras de decisión.
Son las estructuras de control de
flujo que permiten elegir comportamientos distintos para nuestros programas
según las condiciones establecidas usando los operadores de comparación que
vimos en la sesión anterior.
Estructura
de decisión if.
Las estructuras de
decisión if permiten definir el flujo de nuestras aplicaciones. Si no definiéramos
condiciones según a eventos a realizar por el usuario o decisiones que debe
tomar el programa según el valor de algunas variables, nuestros programas serían
solo instrucciones lineales una tras otra sin demasiado sentido.
En el ejemplo anterior se le
solicita al usuario que ingrese un número y de acuerdo al valor ingresado se imprime
por pantalla un mensaje previo a la impresión del valor del valor del número, a diferencia de las estructuras if
else que veremos más adelante si la
condición no se cumple no hay flujo alternativo. Solo se descartan las
instrucciones que no cumplen la condición.
Veamos el código fuente de este
primer ejemplo.
Estructura
if else.
La
estructura if else, se encarga de cambiar de hacer el trabajo que la estructura
anterior no realiza. En dado caso de que la primera condición no se cumpla se
ejecutarán las instrucciones encerradas en el bloque else.
En este caso, la condición divide
el flujo en dos. Una donde es afirmativa y la otra donde es negativa. El caso
else se ejecuta si solo si, el caso evaluado en la condición es falso.
Ahora veamos el código de este ejemplo.
Estructura If else if else.
En
esta estructura aparece la diferencia de que condiciones adicionales son
agregadas a la primera en dado caso que esta no se cumpla. Podemos agregar
tantas condiciones adicionales como deseemos.
El
flujo es que si la primera condición no se cumple se evaluara la siguiente.
Hasta tanto se cumpla alguna, en dado caso de que alguna de las condiciones no
se cumpla, se procede entonces a ejecutar el caso else.
Después de
las condiciones pueden existir sentencias adicionales, es decir estructuras de
repetición, otras estructuras de decisión etc.
Veamos el
código fuente.
Estructura switch.
La
estructura switch es muy similar a las estructuras if else if else. Cada caso
evaluado por el switch representaría un caso del if else if else. La ventaja
sobre las condiciones normales es que el código luce más ordenado. Sin embargo
no admite definir condiciones complejas como con los if. Solo condiciones donde
la opción es una cadena o número entero.
Veamos
el primer ejemplo de esta.
Veamos
el segundo.
Bueno, hasta aquí la entrada de hoy.
Para aprender deben practicar. Recuerden siempre eso.
A continuación los ejemplos del día de hoy.
domingo, 1 de marzo de 2015
Operadores
Buenos días continuando con el curso de C#, ahora vamos a hablar de operadores.
Operadores aritméticos.
Los operadores en los lenguajes de programación son los mismos que conocemos de matemática.
Estos son: suma, resta, multiplicación, división, resto y potencia.
En C# los operadores se representan de la misma manera que en matemática, a excepción de resto y potencia.
Para realizar una operación matemática, al igual que en el ejemplo anterior para capturar datos debemos capturar las variables como cadenas, y luego convertirlas en números de acuerdo a los tipos de datos que vimos anteriormente.
Veamos un ejemplo. Debemos repetir el procedimiento de creación del proyecto.
Menú archivo, Nuevo Proyecto , Aplicación de consola, Nombre de proyecto: Control de Flujo
Los operadores aritméticos tienen un nivel de precedencia, de acuerdo a la siguiente tabla:
- Multiplicativos: * / %
- Sumatorio: + -
Cuando un operando se encuentra entre dos operadores con igual grado de prioridad, la asociación de los operadores controla el orden en que se ejecutan las operaciones. A excepción de los operadores de asignación, todos los operadores se agrupan por la izquierda, es decir que con igual grado de precedencia las operaciones aritméticas se ejecutan de izquierda a derecha.
Por tanto,
int x = a + b - c ;
Es igual a decir
int x = (a + b) - c ;
Operadores de Comparación.
Los operadores de comparación en C# son los que permiten determinar el comportamiento de control de flujo si se cumple alguna condición, unidos a las estructuras de control de flujo son herramientas elementales para el desarrollo de software.
- Comprobación de tipos:
<
,>
,<=
y>=
Mediante estos operadores, podemos evaluar la igualdad de objetos si los números son menores (<), menores o igual que (<=), mayores (>) o mayores igual que (>=).
- Comprobación de igualdad: ==, != Estos nos permiten evaluar si un objeto es igual a otro (==) o diferente ( != ).
De esta forma podemos evaluar el comportamiento del usuario, los resultados de las operaciones realizadas por el mismo y de acuerdo a eso seguir un flujo determinado en nuestros programas.
Operadores Condicionales.
Los operadores condicionales permiten asociar condiciones y mediante estas seguir flujos durante la ejecución del programa. Para entender este punto, debemos echar un vistazo a las tablas de verdad. Dado que cada uno de los operadores se comporta distinto según los valores a los que se confronte.
Tabla de verdad para Operador (AND) &&.
Tabla de verdad para Operador (AND) &&.
A
|
Operador
|
B
|
Resultado
|
---|---|---|---|
true
|
&&
|
true
|
true
|
true
|
&&
|
false
|
false
|
false
|
&&
|
false
|
false
|
false
|
&&
|
true
|
false
|
Tabla de verdad para Operador (OR) &&.
A | Operador | B | Resultado |
---|---|---|---|
true
|
||
|
true
|
true
|
true
|
||
|
false
|
true
|
false
|
||
|
false
|
false
|
false
|
||
|
true
|
true
|
Estos operadores se asocian con otras operaciones lógicas que algunas veces pueden ser más complejas que una variable booleana sencilla. Pero de esta manera permiten controlar las acciones realizadas por el usuario, el comportamiento de las variables y junto con herramientas de control de flujo que veremos más adelante definir acciones de los usuarios y cambiar el comportamiento de las ejecuciones.
En la siguiente entrada veremos un ejemplo de esto.
En la siguiente entrada veremos un ejemplo de esto.
Suscribirse a:
Entradas (Atom)