Wednesday, April 25, 2018

Youtube-dl Video Formats



To see video formats, just type the command:

youtube-dl -F ['link']

to selcect with video type the command:

youtube-dl -f [number] ['link']

Tuesday, January 16, 2018

Java a lo Maracucho, Capitulo 1 - Editado

Java a lo maracucho, Capitulo 1

Source: http://www.horstmann.com/bigjava4.html

Capitulo 1

Metas del capitulo
  • Entender un poco sobre la actividad de la programación.
  • Aprender un poco sobre la arquitectura de las computadoras.
  • Aprender el significado de los lenguajes de programación de alto y bajo-nivel.
  • Familiarizarse con la estructura simple de los programas de Java.
  • Compilar y funcionar vuestro primer programa en Java.
  • Reconocer los errores de "compile-time" o los de "run-time".
  • Escribir pseudo-códigos para algoritmos simples.
El propósito de este capitulo es familiarizarse con la programación y su función. A la vez aprender un poco sobre el como la computadoras reciben las instrucciones diseñadas para su funcionamiento y calculo.

La otra parte del capitulo es aprender un poco sobre el lenguaje de programación Java, sus mas simples comando y los tipos de errores que pueden pasar cuando se crea o diseña un programa.

Finalizando con algunos tips sobre como empezar a diseñar el programa creando pseudo-códigos para los algoritmos simples.

1.1 Que es la programación?

Source: http://es.wikipedia.org/wiki/Programaci%C3%B3n
Source: http://es.wikipedia.org/wiki/M%C3%A1quina_de_Turing

La programación es el estudio y creación de códigos o instrucciones para programas o maquinas.

Un programa de computadora debe de estar programado para hacer una tarea, diferentes tareas requieren diferentes programas. Por ejemplo; Los sistema operativos son programas creados para la anexión de otros programas y funciones.

Las instrucciones son implementadas secuencialmente. Varían por medio de métodos, los cuales también son implementados secuencialmente.

1.2 La anatomía de la computadora

Para entender mejor el como esta compuesta la computadora y el como operan sus partes, recomiendo que busquen información sobre la introducción a los sistemas de computadora. Si saben ingles, busque este libro:

Source: http://highered.mcgraw-hill.com/sites/0072467509/

Aquí hay unos powerpoint que resumen cada capitulo:

Source: http://highered.mcgraw-hill.com/sites/0072467509/student_view0/powerpoints_nc_state.html

Es recomendado entender los 8 primeros capítulos, y para mejorar sus conocimiento, el resto.

Este libro presenta los conceptos básicos de la computadora, sus componentes y el como funcionan, ejemplificadas por medio de una mini-computadora de 16bits cuyo propósito es el entender el como son transmitidas las instrucciones, como son creadas las instrucciones, donde guardan las instrucciones en la memoria y el como modificar las instrucciones para generar cualquier resultado, o tarea intuida.

En fin los ordenadores con esta arquitectura constan de cinco partes: La unidad aritmético-lógica o ALU, la unidad de control, la memoria, un dispositivo de entrada/salida y el bus de datos que proporciona un medio de transporte de los datos entre las distintas partes.

Un ordenador con esta arquitectura realiza o emula los siguientes pasos secuencialmente:

Enciende el ordenador y obtiene la siguiente instrucción desde la memoria en la dirección indicada por el contador de programa y la guarda en el registro de instrucción.

Aumenta el contador de programa en la longitud de la instrucción para apuntar a la siguiente.

Decodifica la instrucción mediante la unidad de control. Ésta se encarga de coordinar el resto de componentes del ordenador para realizar una función determinada.

Se ejecuta la instrucción. Ésta puede cambiar el valor del contador del programa, permitiendo así operaciones repetitivas. El contador puede cambiar también cuando se cumpla una cierta condición aritmética, haciendo que el ordenador pueda 'tomar decisiones', que pueden alcanzar cualquier grado de complejidad, mediante la aritmética y lógica anteriores.

1.3 Traduciendo los programas a códigos de maquina

Al estudiar los fundamentos de los sistemas de computación, uno debe saber que una maquina de 16 bits en sus "registers" tendrá solo 16  "registers" específicos, ya que se usan los 4 primeros bits del register para localizar el tipo de instrucción. "16-bit addressable memory with a 216-location address space." una memoria accesable de 16-bit con una localizacion del espacio accesable de 216.

Sabiendo esto, las computadoras contemporáneas tienen cientos de "registers" cada uno con distintas funciones, y esto predispone al programador a equivocarse, por lo mismo se creo un JVM y compiler que transforman las instrucciones a códigos de maquina.

En el lenguaje de programación Java, toda fuente de código está primeramente escrita dentro de los archivos de texto que terminan con la extensión ".java" Luego estos archivos son compilados a archivos ".class" por el "compiler" "javac". Los archivos escritos en ".class" no contienen los códigos nativos del procesador, no los entiende, los contiene como "bytecodes" - el lenguaje de maquina de la Maquina Virtual Java o JVM.

El JVM es un programa que traduce o transforma la información o instrucciones que el compiler revisó y transformo del programa principal, en este caso, el programa que te facilita diseñar programas, a los códigos de maquina, para así poder hacer todo tipo de tarea en la computadora*.

Source: http://es.wikipedia.org/wiki/JVM
Source: http://docs.oracle.com/javase/tutorial/getStarted/intro/definition.html

1.4 El lenguaje de programación Java

Source: http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-1.html#jvms-1.1

1.4.1 Comienzos de Java

Java se creó como una herramienta de programación para ser usada en un proyecto de set-top-box en una pequeña operación denominada the Green Project en Sun Microsystems en el año 1991. El equipo (Green Team), compuesto por trece personas y dirigido por James Gosling, trabajó durante 18 meses en Sand Hill Road en Menlo Park en su desarrollo.

1.4.2 Filosofía de Java


  • El lenguaje Java se creó con cinco objetivos principales:
  • Debería usar el paradigma de la programación orientada a objetos(Objetos Orientados).
  • Debería permitir la ejecución de un mismo programa en múltiples sistemas operativos.
  • Debería incluir por defecto soporte para trabajo en red.
  • Debería diseñarse para ejecutar código en sistemas remotos de forma segura.
  • Debería ser fácil de usar y tomar lo mejor de otros lenguajes orientados a objetos, como C++.


Para conseguir la ejecución de código remoto y el soporte de red, los programadores de Java a veces recurren a extensiones como CORBA (Common Object Request Broker Architecture), Internet Communications Engine o OSGi respectivamente.

Source: http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)
Source:  http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-1.html#jvms-1.1

1.4.2.1 Que son los objetos Orientados?

Los objetos son entidades que tienen un determinado estado, comportamiento (método) e identidad:

El estado de los objetos está compuesto de datos o informaciones; de uno o varios atributos,  y/o valores concretos (datos).

El comportamiento del objeto o función está definido por los métodos o mensajes que puede responder dicho objeto, es decir, las operaciones que puede realizar.

La identidad es una propiedad de un objeto que lo diferencia del resto; dicho con otras palabras, es su identificador (concepto análogo del identificador de una variable o una constante).

Un objeto contiene toda la información que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de mecanismos de interacción llamados métodos, que favorecen la comunicación entre ellos.

Esta comunicación favorece a su vez el cambio de estado en los propios objetos. Esta característica lleva a tratarlos como unidades indivisibles, en las que no se separa el estado y el comportamiento del objeto.

Source: http://es.wikipedia.org/wiki/Orientado_a_objetos

1.5 La estructura de un programa simple

Cuando uno comienza a estudiar un lenguaje de computación nuevo, como bienvenida al lenguaje aprende a escribir una frase, como por ejemplo; "bienvenido a la programación".

1  public class HelloPrinter
2  {
3        public static void main(String[] args)
4        {
5               //  caracteres para comentar sobre el programa
6
7               System.out.println("bienvenido a la programacion");
8         }
9  }

Cuando se crea un archivo, también se crea una clase con el nombre del archivo. Esta "clase" como se ven en la linea 1, tiene una palabra denominada "public". "public" significa publica, y también hay unas clases que son privadas o "private" que solo pueden ser accesadas por el mismo archivo o clases del mismo nombre, y esto se hace para asegurar el programa de fuentes externas, pero esto se vera mas lejos y con mas entendimiento sobre Java y los fundamentos de la programación.

La linea 2 comienza con unos braquets "{"  esto significa que debe también cerrarse "}". Las clases son objetos que deben de tener instrucciones, y la forma del saber es siguiendo las instrucciones señaladas dentro de los braquets "{instrucciones}". sean clases, métodos o interfaces.

En la linea 3 la primera instrucción escrita es el método "public" , "static", "void" llamado "main" que tiene dentro de sus parámetros "()" el tipo de datos o "data types" del objeto"[]" "args" que va a entrar, para luego hacer lo descrito por este método pre-diseñado ya por el lenguaje de Java, y gracias a esto devolverá, si el syntax o la lógica están correcto, una respuesta esperada.

Por supuesto, esto sera también entendido mientras mas caves dentro de la tierra del conocimiento de la programación en Java.

En la linea 5 se ve la forma de comentar dentro de un programa sin afectar las instrucciones del programa. hay dos formas, esta la de una linea, que es "//" o la de un párrafo que tiene comienzo y final, si los colocas mas, el compilador no podrá traducir las instrucciones siguientes, ya que no las entenderá e inmediatamente se parara.  abre con "/*" y cierra con "*/" sin comillas por supuesto.

En la linea 7 se ve "System.out" que es el nombre de la clase que se quiere invocar para luego, invocar el nombre del método "println" cuyos parámetros "()" escribir lo que quieras usando el método "println".

El método "println" permite imprimir cualquier tipo de letras "strings" que estén marcadas  con comillas "", ademas de que también puede calcular operaciones básicas de matemática.

Por ejemplo; System.out.printl("Hola"); imprimirá Hola y System.out.printl(3+3); imprimirá 6.

Otra cosa es que toda instrucción que tenga una información para analizar debe terminar con un punto y coma ";" para que el "compiler" sepa que ahí termina la instrucción.

Esta informacion es mas especifica, del como el programa trabaja:
Source: http://docs.oracle.com/javase/tutorial/getStarted/cupojava/netbeans.html

1.6 Compilando y funcionando un programa de Java

*Ojo, todos los editores necesitan del JDK, en este esta el compiler entre otras mas utilidades necesarias para el JVM.

Source: http://docs.oracle.com/javase/7/docs/technotes/tools/index.html#general

*El programa es sensible al uso de caracteres, por ejemplo; no es lo mismo "a" que "A", y esto se sabe cuando se estudia un poco el como están codificados los caracteres ACSII.

Source: http://es.wikipedia.org/wiki/ASCII

Todo esto define la ubicación de la referencia en la memoria o la información en la memoria, dependiendo del "register" que se use.

TIP: Cuando se este diseñando un programa o se haya terminado o como quieras, siempre ten el archivo del programa guardado como respaldo porsiacaso le pasa algo al archivo o programa original, o cuando se trabaje en este y se borre por error.

1.7 Errores

Hay dos tipos de errores cuando se programa, uno es el error de sintaxis, este que pasa cuando se escribe algo que no este definido o se omite, llamado "compile-time". El otro error es de lógica. Cuando describen erróneamente los pasos que un programa sigue o cuando el resultado no se asemeja en nada lo esperado, un "run-time error"

"compile error" errores de sintaxis o no establecidos en el programa.
"run-time error" errores de lógica.

1.8 Algoritmos

Los algoritmos son las instrucciones lógicas y matemáticas que uno le da al programa para que haga su función predeterminada.

Para esto es recomendable primero entender el programa, ver de que se trata el problema e ir luego trabajándolo hasta su manejo técnico.

Cuando se entiende un problema se escribe un pseudo-código, esto significa escribir los pasos mas importantes para la ejecución del programa, y luego trabajar en sus detalles con mas calma.

Esto es también llamado trabajar de arriba-abajo, de las metas a los detalles.

Como sabemos cuantas personas saben manejar?

Buscando todas las personas que sepan manejar.
Pero para eso uno tiene que buscar la población entera e ir preguntando.

Y ejemplos así que uno con el tiempo entenderá.

véase, Interpretación de la clase de programación metodológica 01.

http://tecnolecciones.blogspot.com/2013/07/interpretacion-de-la-clase-de.html