ff-multiconverter, multimedia, audio, video, linux, ubuntu ubuntu kylin, china, releases, linux terminal, ubuntu, linux, comandos, shell conky, gadgets, ubuntu, linux SpeedTest-Cli, velocidad, red, consola, terminal tag foto 6 pinta, grafica, linux, ubuntu djl, juegos, yum, synaptic, paquetes ubuntu, releases, canonical psensor, ubuntu, linux, sistema, monitor

Guia Python: métodos constructores de una clase.

python logoPython es un lenguaje de script desarrollado por Guido van Rossum.

Podemos codificar empleando programación lineal, estructurada y orientada a objetos (tengamos en cuenta que esta última es la que se ha impuesto en la actualidad)

Se cuenta con intérpretes de Python en múltiples plataformas: Windows, Linux, Mac etc. Se pueden desarrollar aplicaciones de escritorio como aplicaciones web. Empresas como Google, Yahoo, Nasa etc. utilizan este lenguaje para sus desarrollos (actualmente el creador de Python Guido van Rossum trabaja para Google.)

Se puede ejecutar instrucciones de Python desde la línea de comando o creando archivos con extensión *.py. Cuando uno comienza a aprender este lenguaje la línea de comandos nos provee una retroalimentación del resultado en forma inmediata.

El objetivo de este tutorial es presentar en forma progresiva los conceptos fundamentales de este lenguaje y poder analizar los problemas resueltos y codificar los problemas propuestos en este mismo sitio, sin tener que instalar en un principio el Python en su equipo (o luego de instalado poder avanzar con el tutorial en cualquier máquina conectada a internet).

Métodos de una clase.

python Atributos de una clase
Los métodos son como las funciones en los lenguajes estructurados, pero están definidos dentro de una clase y operan sobre los atributos de dicha clase.
Los métodos también son llamados las responsabilidades de la clase. Para encontrar las responsabilidades de una clase hay que preguntarse qué puede hacer la clase.
El objetivo de un método es ejecutar las actividades que tiene encomendada la clase a la cual pertenece.
Los atributos de un objeto se modifican mediante llamadas a sus métodos.
Confeccionaremos un nuevo problema para concentrarnos en la definición y llamada a métodos.
Problema:Confeccionar una clase CabeceraPagina que permita mostrar un título, indicarle si queremos que aparezca centrado, a derecha o izquierda.
Definiremos dos atributos, uno donde almacenar el título y otro donde almacenar la ubicación.
Ahora pensemos que métodos o responsabilidades debe tener esta clase para poder mostrar la cabecera de la página. Seguramente deberá tener un método que pueda inicializar los atributos y otro método que muestre la cabecera dentro de la página.
Veamos el código de la clase CabeceraPagina
class CabeceraPagina:
    def inicializar(self,tit,ubi):
      self.titulo=tit
      self.ubicacion=ubi

    def graficar(self):
        print '<div style="font-size:40px;text-align:'+self.ubicacion+'">'
        print self.titulo
        print '</div>'


cabecera=CabeceraPagina()
cabecera.inicializar('El blog del programador','center')
cabecera.graficar()
La clase CabeceraPagina tiene dos atributos donde almacenamos el texto que debe mostrar y la ubicación del mismo ('center', 'left' o 'right'), nos valemos de CSS para ubicar el texto en la página.
No es obligatorio en Python definir previo a los métodos todos los atributos. Como vemos se definen e inicializan al llamar al método inicializar.
Ahora analicemos lo que más nos importa en el concepto que estamos concentrados (métodos de una clase):
def inicializar(self,tit,ubi):
        self.titulo=tit
        self.ubicacion=ubi
Un método tiene un nombre, conviene utilizar verbos para la definición de métodos (mostrar, inicializar, graficar etc.) y sustantivos para la definición de atributos (color, enlace, titulo etc.)
Un método debe tener como primer parámetro el identificador self, el mismo nos permite acceder a los atributos de la clase, además puede tener otros parámetros que inicializan atributos del objeto:
self.titulo=tit
        self.ubicacion=ubi
Luego para llamar a los métodos debemos crear un objeto de dicha clase:
cabecera=CabeceraPagina()
cabecera.inicializar('El blog del programador','center')
cabecera.graficar()
Es importante notar que siempre que llamamos a un método le antecedemos el nombre del objeto. El orden de llamada a los métodos es importante, no va a funcionar si primero llamamos a graficar y luego llamamos al método inicializar.

Método constructor de una clase.
python Atributos de una clase1
El constructor es un método especial de una clase. El objetivo fundamental del constructor es inicializar los atributos del objeto que creamos.
Básicamente el constructor remplaza al método inicializar que habíamos hecho en el concepto anterior.
Las ventajas de implementar un constructor en lugar del método inicializar son:
  1. El constructor es el primer método que se ejecuta cuando se crea un objeto.
  2. El constructor se llama automáticamente. Es decir es imposible de olvidarse de llamarlo ya que se llamará automáticamente.
  3. Quien utiliza POO (Programación Orientada a Objetos) conoce el objetivo de este método.
Otras características de los constructores son:
  • El constructor se ejecuta inmediatamente luego de crear un objeto y no puede ser llamado nuevamente.
  • Un constructor no puede retornar dato.
  • Un constructor puede recibir parámetros que se utilizan normalmente para inicializar atributos.
  • El constructor es un método opcional, de todos modos es muy común definirlo.
Veamos la sintaxis del constructor:
def __init__([parámetros]):
       [algoritmo]
Debemos definir un método llamado __init__ (es decir utilizamos dos caracteres de subrayado, la palabra init y seguidamente otros dos caracteres de subrayado).
Confeccionaremos el mismo problema del concepto anterior para ver el cambio que debemos hacer de ahora en más.
Problema:Confeccionar una clase CabeceraPagina que permita mostrar un título, indicarle si queremos que aparezca centrado, a derecha o izquierda.
class CabeceraPagina:
    def __init__(self,tit,ubi):
        self.titulo=tit
        self.ubicacion=ubi

    def graficar(self):
        print '<div style="font-size:40px;text-align:'+self.ubicacion+'">'
        print self.titulo
        print '</div>'



cabecera=CabeceraPagina('El blog del programador','center')
cabecera.graficar()
Ahora podemos ver como cambió la sintaxis para la definición del constructor:
def __init__(self,tit,ubi):
        self.titulo=tit
        self.ubicacion=ubi
Veamos como se modifica la llamada al constructor cuando se crea un objeto:
cabecera=CabeceraPagina('El blog del programador','center')
cabecera.graficar()
Es decir el constructor se llama en la misma línea donde creamos el objeto, por eso disponemos después del nombre de la clase los parámetros:
cabecera=CabeceraPagina('El blog del programador','center')
Generalmente todo aquello que es de vital importancia para el funcionamiento inicial del objeto se lo pasamos mediante el constructor.

Llamada de métodos dentro de la clase.
Hasta ahora todos los problemas planteados hemos llamado a los métodos desde donde definimos un objeto de dicha clase, por ejemplo:
cabecera=CabeceraPagina('El blog del programador','center')
cabecera.graficar()
Utilizamos la sintaxis:
[nombre del objeto].[nombre del método]
Es decir antecedemos al nombre del método el nombre del objeto y el operador punto
Ahora bien que pasa si queremos llamar dentro de la clase a otro método que pertenece a la misma clase, la sintaxis es la siguiente:
self.[nombre del método]
Es importante tener en cuenta que esto solo se puede hacer cuando estamos dentro de la misma clase.
Confeccionaremos un problema que haga llamadas entre métodos de la misma clase.
Problema:Confeccionar una clase Tabla que permita indicarle en el constructor la cantidad de filas y columnas. Definir otra responsabilidad que podamos cargar un dato en una determinada fila y columna. Finalmente debe mostrar los datos en una tabla HTML.
class Tabla:
    mat=[]
    cantfilas=0
    cantcolumnas=0

    def __init__(self,fi,co):
        self.cantfilas=fi
        self.cantcolumnas=co
        for f in range(0,fi):
            self.mat.append([])
            for c in range(0,co):
                self.mat[f].append('')

    def cargar(self,fi,col,valor):
        self.mat[fi][col]=valor

    def iniciotabla(self):
        print '<table border="1">'
   
    def iniciofila(self):
        print '<tr>'

    def mostrar(self,fi,co):
        print '<td>'
        print self.mat[fi][co]
        print '</td>'

    def finfila(self):
        print '</tr>'

    def fintabla(self):
        print '</table>'

    def graficar(self):
        self.iniciotabla()
        for f in range(0,self.cantfilas):
            self.iniciofila()
            for c in range(0,self.cantcolumnas):
                self.mostrar(f,c)
            self.finfila()
        self.fintabla()
   
tabla1=Tabla(3,4)
tabla1.cargar(0,0,1)
tabla1.cargar(0,1,2)
tabla1.cargar(0,2,3)
tabla1.cargar(0,3,4)
tabla1.cargar(1,0,5)
tabla1.cargar(1,1,6)
tabla1.cargar(1,2,7)
tabla1.cargar(1,3,8)
tabla1.cargar(2,0,9)
tabla1.cargar(2,1,10)
tabla1.cargar(2,2,11)
tabla1.cargar(2,3,12)
tabla1.graficar()
Vamos por parte, primero veamos los tres atributos definidos,el primero se trata de una lista donde almacenaremos todos los valores que contendrá la tabla HTML y otros dos atributos que indican la dimensión de la tabla HTML (cantidad de filas y columnas):
mat=[]
  cantfilas=0
  cantcolumnas=0
El constructor recibe como parámetros la cantidad de filas y columnas que tendrá la tabla, además creamos la lista con tantas filas como indica el parámetro fi e insertamos una lista en cada componente (es decir que cada componente de la lista es una lista que representa los elementos de la fila respectiva) Dentro de un for interno agregamos string vacíos a cada elemento de la lista interna:
self.cantfilas=fi
      self.cantcolumnas=co
      for f in range(0,fi):
          self.mat.append([])
          for c in range(0,co):
              self.mat[f].append('')
Otro método de vital importancia es el de cargar datos. Llegan como parámetro la fila, columna y dato a almacenar:
def cargar(self,fi,col,valor):
        self.mat[fi][col]=valor
Otro método muy importante es el graficar:
def graficar(self):
        self.iniciotabla()
        for f in range(0,self.cantfilas):
            self.iniciofila()
            for c in range(0,self.cantcolumnas):
                self.mostrar(f,c)
            self.finfila()
        self.fintabla()
El método graficar debe hacer las salidas de datos dentro de una tabla HTML. Para simplificar el algoritmo definimos otros cinco métodos que tienen por objetivo hacer la generación del código HTML propiamente dicho. Así tenemos el método iniciotabla que hace la salida de la marca table e inicialización del atributo border:
def iniciotabla(self):
        print '<table border="1">'
De forma similar los otros métodos son:
def iniciofila(self):
        print '<tr>'

    def mostrar(self,fi,co):
        print '<td>'
        print self.mat[fi][co]
        print '</td>'

    def finfila(self):
        print '</tr>'

    def fintabla(self):
        print '</table>'
Si bien podíamos hacer todo esto en el método graficar y no hacer estos cinco métodos, la simplicidad del código aumenta a medida que subdividimos los algoritmos. Esto es de fundamental importancia con algoritmos más complejos./p>
Lo que nos importa ahora ver es como llamamos a métodos que pertenecen a la misma clase:
def graficar(self):
        self.iniciotabla()
        for f in range(0,self.cantfilas):
            self.iniciofila()
            for c in range(0,self.cantcolumnas):
                 self.mostrar(f,c)
            self.finfila()
        self.fintabla()
Es decir le antecedemos la palabra self al nombre del método a llamar. De forma similar a como accedemos a los atributos de la clase.
Por último debemos definir un objeto de la clase Tabla y llamar a los métodos respectivos:
tabla1=Tabla(3,4)
tabla1.cargar(0,0,1)
tabla1.cargar(0,1,2)
tabla1.cargar(0,2,3)
tabla1.cargar(0,3,4)
tabla1.cargar(1,0,5)
tabla1.cargar(1,1,6)
tabla1.cargar(1,2,7)
tabla1.cargar(1,3,8)
tabla1.cargar(2,0,9)
tabla1.cargar(2,1,10)
tabla1.cargar(2,2,11)
tabla1.cargar(2,3,12)
tabla1.graficar()
Es importante notar que donde definimos un objeto de la clase Tabla no llamamos a los métodos iniciotabla(), iniciofila(), etc.

python banner
Si te ha gustado el artículo inscribete al feed clicando en la imagen más abajo para tenerte siempre actualizado sobre los nuevos contenidos del blog:

La campaña de financiación colectiva (crowdfunding) de Ubuntu Edge paso a paso.

ubuntu edgeLa campaña de financiación colectiva que Canonical puso en marcha hace una semana comenzó con gran fuerza, pero en las últimas horas el empuje de esas inversiones se ha ralentizado de forma notable.
¿Conseguirán recaudar los 32 millones de dólares que persiguen para desarrollar y fabricar sus Ubuntu Edge?

El problema reside en que la avalancha de peticiones iniciales se ha debido a los importantes descuentos que Canonical ofreció. El Ubuntu Edge se podía conseguir por 600 dólares (más 30 de gastos de envío) frente a los 830 dólares que supondrían el coste final. Esa oferta se ha visto continuada con algunas más, pero éstas son cada vez menos atractivas.

Ubuntu Edge es un proyecto crowfunding que pretende comercializar un potente smartphone que, incluso, podría servir de base para un PC y ser proyectado a pantalla completa.

Ubuntu Edge se ha propuesto revolucionar el mercado de los smartphones con el lanzamiento de un servicio financiado a través de crowfunding basado en la creación de un dispositivo que mezclaría las características de un smartphone y un PC.

Entre otras características, el terminal podría conectarse a nuestro PC y pasar de ser un teléfono móvil a la base del ordenador personal. Entre sus principales características destacarían las siguientes:

· Diseño elegante y pantalla de 4,5 pulgadas que podría ser manejada con una mano. Su resolución óptima sería de 300 ppi y estaría protegida por un cristal de zafiro, duro y resistente material que sólo puede ser dañado o rayado por un diamante.
· Hardware: su funcionamiento dependería de un procesador de 4 Gb de memoria RAM y sería capaz de almacenar datos con una capacidad máxima de 128 Gb de memoria interna. La batería utilizaría tecnología de silicio-ánodo que permite exprimir al máximo su rendimiento y contener más energía que cualquier otra batería del mismo tamaño.
· Software: con doble sistema operativo, mobile OS y Android.
Y si lo que te preocupa es que tu aplicaciones Android no son compatibles con PC, no tienes por qué. Desde el primer momento se realizaría una actualización que hará que todos los contenidos de Android sean compatibles con el sistema operativo de Ubuntu y así puedas utilizarlo también en su versión para ordenador.
Como va la campaña.
La expectación que ha generado el proyecto de Canonical ha hecho que durante los primeros días surgieran muchísimas peticiones para apoyar el desarrollo de este singular smartphone, que llegaría con Android y Ubuntu preinstalados y que estaría dotado de unas prestaciones hardware notables.
ubuntu-edge-campana-1
Dos desarrolladores quisieron seguir de cerca la evolución de la campaña de crowdfunding, y desarrollaron dos gráficos que mostraban el nivel de recaudaciones. El primero, de MoveBits, parece haber dejado de funcionar en los últimos días, algo extraño considerando que el pequeño y elegante código en Ruby parecía estar cumpliendo perfectamente al comienzo de la campaña.
El segundo apareció poco después en la página Ubuntu-Edge.info, y en este caso las estadísticas han seguido funcionando de forma continua, mostrando además como referencia una diagonal con el “objetivo” lineal de recaudación de cada día.
ubuntu-edge-campana-2
Esa situación hace que no quede claro si la campaña de financiación colectiva tendrá éxito, algo en lo que influyen varios factores. El primero, la desaparición de las atractivas ofertas (o “perks”, como los denominan en Indiegogo) iniciales por ir agotándose. En segundo, el apoyo de los medios, que supusieron también un importante impulso inicial para el proyecto.

Canonical realizó algunas ofertas adicionales para tratar de volver a reimpulsar la campaña, pero las más relevantes ya están agotadas y actualmente el Ubuntu Edge se puede conseguir a 700 dólares (si aprovechamos la opción Double Edge, en la que reservamos 2 dispositivos por 1.400 dólares), o bien 775 dólares en el caso de querer reservar solo uno. Ese segundo precio es lógicamente menos atrayente para muchos interesados que llegan algo más tarde a la campaña de financiación.


Si te ha gustado el artículo inscribete al feed clicando en la imagen más abajo para tenerte siempre actualizado sobre los nuevos contenidos del blog:

Cómo monitorear y analizar una red con Nagios.

Nagios_logo_blackNagios es un sistema de monitorización de redes de código abierto ampliamente utilizado, que vigila los equipos (hardware) y servicios (software) que se especifiquen, alertando cuando el comportamiento de los mismos no sea el deseado.

Las redes de cómputo de las organizaciones, se vuelven cada vez más complejas y laexigencia de la operación es cada vez más demandante.
Las redes, cada vez más, soportanaplicaciones y servicios estratégicos de las organizaciones. Por lo cual el análisis ymonitoreo de redes se ha convertido en una labor cada vez mas importante y de carácterpro-activo para evitar problemas.

Para prevenir errores en un sistema existe podemos utilizar un equipo que se ocupe deestar “controlado y observando” el funcionamiento de la red, esto podemos realizarlo pormedio de un software llamado Nagios.
Nagios-screenshot-8
Nagios es un sistema de monitorización de equipos y de servicios de red, escrito en C ypublicado bajo la GNU General Public License, el lenguage con el cual está desarrolladonos asegura una rápida ejecución y su licencia que lo determina como Software Libre nosasegura que siempre tendremos actualizaciones disponibles y que hay una grancomunidad de desarrolladores soportándolo.
Creado para ayudar a los administradores a tener siempre el control de qué está pasandoen la red que administran y conocer los problemas que ocurren en la infraestructura queadministran antes de que los usuarios de la misma los perciban, para así no sólo podertomar la iniciativa, sino asumir la responsabilidad de hacer que las cosas sucedan; decidir en cada momento lo que queremos hacer y cómo lo vamos a hacer, debido a que estesoftware nos permite obtener datos, interpretarlos y tomar decisiones en base a ellocomo:
Nagios-PNP-Screenshot
• Conservar y almacene datos de la red para manejar reportes y tendencias.
• Ver y analizar la red, así como el tráfico de la red a través del tiempo
• Monitorear el estado de la red en comparación a los reportes de análisis
• Generar reportes sustentados para justificar las necesidades de actualización de la redQue se puede hacer con Nagios
• Monitorización de servicios de red.
• Monitorización de los recursos de un host (carga del procesador, uso de los discos, logs del sistema) en varios sistemas operativos.
nagios captura
Entre sus características principales figuran la monitorización de servicios de red (SMTP, POP3, HTTP, SNMP...), la monitorización de los recursos de sistemas hardware (carga del procesador, uso de los discos, memoria, estado de los puertos...), independencia de sistemas operativos, posibilidad de monitorización remota mediante túneles SSL cifrados o SSH, y la posibilidad de programar plugins específicos para nuevos sistemas.
Se trata de un software que proporciona una gran versatilidad para consultar prácticamente cualquier parámetro de interés de un sistema, y genera alertas, que pueden ser recibidas por los responsables correspondientes mediante (entre otros medios) correo electrónico y mensajes SMS, cuando estos parámetros exceden de los márgenes definidos por el administrador de red.
Llamado originalmente Netsaint, nombre que se debió cambiar por coincidencia con otra marca comercial, fue creado y es actualmente mantenido por Ethan Galstad, junto con un grupo de desarrolladores de software que mantienen también varios complementos.
Nagios fue originalmente diseñado para ser ejecutado en GNU/Linux, pero también se ejecuta bien en variantes de Unix.
Nagios está licenciado bajo la GNU General Public License Version 2 publicada por la Free Software Fundation.
Instalación:
Nagios2

Si te ha gustado el artículo inscribete al feed clicando en la imagen más abajo para tenerte siempre actualizado sobre los nuevos contenidos del blog:

7 aplicaciones multimedia presentes en los repositorios oficiales de Ubuntu.

ubuntu_audioUbuntu ofrece una amplia gama de aplicaciones multimedia desde sus repositorios Main, Universe y Multiverse.

Para ayudarte a escoger al reproductor de música o el editor de vídeo más conveniente, es útil distinguir entre los reproductores de medios de comunicación ellos mismos (o 'front-ends) y los motores de reproducción (playback)(' back-ends') que utilizan. Los front ends son las aplicaciones con las que interactuas con tu escritorio.

Algunos están integrados fuertemente con los entorno de escritorio, el GNOME y KDE; otros son independientes de plataforma.

Mientras algunas aplicaciones, como Mplayer y XMMS, usan sus propios motores de reproducción, los otros aprovechan de dos de los principales Back-ends que son el gstreamer y xine. Algunos reproductores soportan tanto gstreamer como xine.

Tu decisión dependerá de la combinación de caracteríscicas, funcionamiento, opciones de formatos de medios, su entorno de escritorio y otras preferencias personales.

1.- FF-Multi Converter aplicación para convertir rápidamente archivos de video, audio, imagen y texto.

ff multiconverter logoFF-Multi Converter es una aplicación gratuita para Linux que nos permite convertir rápidamente archivos de video, audio, imagen y texto a los formatos más populares a través de su amigable interfaz gráfica.
Hoy veremos las principales características de esta nueva versión, la 1.5.0 con  los formatos que soporta y cómo instalarla en Ubuntu y Linux Mint.
La aplicación està escrita en Python y PyQt.

2.- Nuvola un reproductor que nos permitirá llevar GrooveShark al escritorio de Ubuntu.

NuvolaPlayerNuvola Player (anteriormente llamado Google Music Frame) es un reproductor de música para Linux que permite integrar diversos servicios de música online en tu escritorio. Ya tenemos actualización de Nuvola.
Esta versión además de añadir soporte para Precise Pangolin añade nuevas opciones de radios para streaming.
En primer lugar, debemos comentar que Nuvola antes era conocido como Google Music Frame, ya que su primer objetivo fue ofrecer una aplicación de escritorio para Google Music, sin embargo, sus desarrolladores han decidido que también sea compatible con GrooveShark, y por ello han cambiado el nombre del software.
De este modo, gracias a Nuvola, no será necesario que iniciemos nuestro navegador web para disfrutar de la música en streaming de GrooveShark en Ubuntu.

3.- FreetuxTV excelente aplicación para ver la TV o escuchar la radio en Ubuntu.


Si buscas una aplicación que te permita ver la televisión en directo o escuchar la radio de cualquier parte del mundo en GNU/Linux puede que FreeTuxTV te sea de gran utilidad ya que nos permite hacer esto mismo de forma sencilla.
La interfaz de FreetuxTV es muy sencilla y cuando lo iniciamos ya podremos agregar los canales en español, también podremos grabar lo que estamos viendo muy útil si quieres mantenerlo en tu equipo para verlo cuando quieras.
Para instalarlo basta agregar los PPA dedicados, es decir agregar los repositorios propios de FreeTuxTV.
Cada vez que hacemos partir el programa FreeTuxTV actualiza automaticamente la lista de los grupos que hemos seleccionado.

4.- Medusa, la mejor alternativa a AutoCAD en Linux.


De sobra nos es conocido que el rey indiscutible del CAD es AutoCad, ningún programa ha sido capaz de hacerle sombra, aunque los precios del software son, por ser amables, abusivos.
La única distribución que, desde mi punto de vista, permite trabajar de forma cómoda al estilo de AutoCad es ZWCAD que se puede adquirir por un precio inferior. Ambas distribuciones tienen el problema que no presentan versiones en Linux, aunque el futuro está en la adptación del software al Linux (por su creciente demanda en el mercado) y en la virtualización. No obstante, nos encontramos con otros programas CAD libres con los que podemos desarrollar nuestros proyectos, y en este reportaje hablamos de Medusa4 y como instalarlo en Ubuntu.

5.- Crea tus propios ritmos con Hydrogen (1a parte).

Hydrogen_drum_machine_iconHydrogen es un avanzado sintetizador de batería que te permite programar sencillos patrones de ritmo con resultados verdaderamente profesionales.
Hydrogen cuenta con una interfaz totalmente gráfica y relativamente fácil de usar, con soporte para simples, un secuenciador basado en patrones, múltiples capas disponibles para los diversos instrumentos y hasta 32 pistas de composición.
Pros
  • Interfaz muy visual y fácil de utilizar
  • Hasta 32 pistas
Contras
  • Algunos problema
  • Faltan algunos sonidos de batería

6.- Crea tus propios ritmos con Hydrogen (2a parte).
_label_
Con el kit de batería cargado por defecto en el Pattern Editor haz clic en los nombres de los instrumentos para oir su sonido. Para añadir un sonido en el patrón solo tienes que hacer clic en la rejilla donde quieras que suene y aparecerá un pequeño rombo negro como referencia.
Debajo de cada evento de percusión (rombo negro), aparecerá una linea vertical de una altura determinada. Modificando esta altura variará la dinámica del golpe percutivo. Es decir la percepción de su volumen y fuerza. Empieza con alguno de los platillos, por ejemplo el charles (Open HH,Pedal HH, Closed HH) para introducir una pulsación a corcheas, agrega a continuación otros sonidos: bombo en los tiempos fuertes del compás (1 y 3) y caja en los tiempos débiles (2 y 4).

7.- Workarround para usar PulseAudio y Jack de forma sencilla.

Para los que están metidos en el mundo de grabación y producción musical en GNU/Linux de seguro están más que familiarizados con JACK (una herramienta excelente), y seguramente tengan más de una placa de audio (alguna interfaz profesional, la placa de sonido onboard, el micrófono incorporado en las cámaras web, etc) y la forma más fácil de tener todas las placas en orden es a través de PulseAudio.
Después de un rato concluí con que la mejor opción es matar de lleno PulseAudio y lanzar el servidor Jack cuando se necesite. Es decir, usar siempre PulseAudio y pasar a Jack cuando lo necesitemos.
Lo primero que hay que hacer es configurar PulseAudio para que no intente iniciarse cada vez que muere. Para esto hay que crear el archivo client.conf en ~/.pulse/ y agregarle una única línea que diga autospawn=no

Si te ha gustado el artículo inscribete al feed clicando en la imagen más abajo para tenerte siempre actualizado sobre los nuevos contenidos del blog:

Dota 2 un juego de campo de batalla multijugador para Linux.


Dota 2 es un juego de campo de batalla multijugador en linea aun en desarrollo por Valve.

El juego esta actualmente disponible para pruebas preliminares a través de la compra y sera free-to-play cuando se lance finalmente.

DotA fue creado por "Eul", un jugador como cualquiera de nosotros, quien deseaba crear un modo "Diferente" de jugar Warcraft. Eul creo el mapa para jugarlo con sus amigos y se basaba en el uso de una unica unidad por jugador, denominada "Heroe" en un mapa con 3 caminos principales que conectaban las 2 bases enemigas, en el que para ganar habia que destruir la base enemiga.

El jugador no deberia construir la base ni desarrollarla, solo tendria que preocuparse por su heroe. Yo no voy a entrar en la explicacion del modo de juego, porque es demasiado extensa y no va al caso.


 
Al cabo de un año el juego dejo de ser solo para jugar entre "Amigos" y se fue haciendo muy popular en internet.

En 2003, sale la expansion de Warcraft III, llamada Warcraft III: The Frozen Trone

Los jugadores esperaban una actualizacion del mapa a esta expansion por parte de Eul, pero esta nunca llego y el mapa siguio siendo desarrollado a travez del tiempo por diferentes usuarios. Desde hace ya varios años, el mapa viene siendo desarrollado por un usuario llamado "Icefrog", quien lo actualiza periodicamente y nombro a su version DotA All Stars (actualmente renombrada a simplemente "DotA" ). Actualmente el mapa se encuentra en la version 6.73c


En el primer enlace, hay una captura de pantalla (la imagen de arriba) de Steam para GNU/Linux con "Dota 2" mostrándose en la barra lateral.

Como el juego no aparece en color gris, significa que esta instalado, por lo tanto Dota 2 está, probablemente, en proceso de ser portado a GNU/Linux.

Pero desde que Dota 2 usa el motor Source, como Counter-Strike: Source, el cual ya esta disponible para GNU/Linux, es probable, considerando también la captura de pantalla anterior, que Dota 2 va a estar disponible nativamente en GNU/Linux.
dota2 brew_pubstomp
dota2 secret-shop
Dota_2_minimap
Dota_2
Dota_2 wallpaper
dota2_2

Si te ha gustado el artículo inscribete al feed clicando en la imagen más abajo para tenerte siempre actualizado sobre los nuevos contenidos del blog:

Cómo instalar un emulador de Android en Ubuntu.

Este emulador lo pueden encontrar en la página oficial de Android para desarrolladores.
Pensado para desarrolladores, incluye:
Herramientas.
Ejemplos de código.
Documentación.
Permite seleccionar cuales de los anteriores desea instalarse.
Posibilidad de descargar cualquier versión del Sistema Operativo (1.6,3.0,4,etc).
Todo para apoyar el desarrollo de aplicaciones para esta plataforma. Además permite:
Navegar por internet, utilizando la conexión de tu ordenador.
Navegar por la interfaz y algunas configuraciones del dispositivo virtual.
Instalar aplicaciones (muy útil si quieres probarlas antes de instalarlas en tu gadget).
Crear varios dispositivos virtuales.
Crear y asignar tarjetas de memoria, de diferentes tamaños.
Asignar la resolución de la pantalla.
En fin, de ahora en más pasaremos a la instalación.
Para hacerlo tenemos que tener instalado previamente el JDK 6, si lo tienen instalado pueden pasar al paso 2. Si no lo tienen (o no saben) pueden instalarlo rápidamente usando el Gestor de Paquetes Synaptic buscando “openjdk-6-jdk”, lo marcan para instalar y aplican.

Después de instalar el JDK, nos disponemos a descargar el paquete de instalación del emulador desde la Pagina oficial
Descomprimimos el paquete, y accedemos a él mediante la terminal, por ejemplo:
$ cd /home/usuario/Android/android-sdk-linux/tools/
Luego, dentro del directorio debemos ejecutar:
$ ./android
Estaremos entonces viendo la pantalla del “Android SDK Manager”. En este punto podremos seleccionar las herramientas y APIs que deseemos instalar. Tan simple como marcar y darle Install Packages.
Una vez instalados los paquetes deseados nos dirigimos a Tools – Manage AVDs y allí encontraremos las opciones de creación de nuevos dispositivos. Le damos a New, y configuramos los datos necesarios para nuestro gadget virtual, nombre, versión del SO (API), tarjeta de memoria, resolución de pantalla, etc. Al finalizar damos Create AVD, y listo, ya tenemos nuestro dispositivo Android creado
Ahora podemos ver en la lista de dispositivos el que acabamos de crear. Lo seleccionamos, damos Start, seleccionamos la escala del display en caso que queramos verlo en tamaño real y empezará a correr. No se desesperen puede demorar uno o varios minutos en reaccionar la primera vez.


Para instalar aplicaciones solo debes bajar la misma con la extensión .apk, y mediante una terminal posicionarte en el directorioplataform-tools, y, con el dispositivo corriendo, ejecutar:

$ adb install nombre_aplicacion.apk
 
De la misma manera, para desinstalar: 

$ adb uninstall nombre_aplicacion.apk
 
Una muy buena herramienta para probar aplicaciones, recomendado sobre todo si eres desarrollador o quieres probar aplicaciones con la seguridad de que no va a suceder nada con tu gadget.

Si te ha gustado el artículo inscribete al feed clicando en la imagen más abajo para tenerte siempre actualizado sobre los nuevos contenidos del blog:

Introducción a Inkscape programa de diseño vectorial.

inkscape-draw-freely-program-LOGOInkscape es un programa de diseño vectorial. Esto significa que los gráficos así creados se podrán escalar a cualquier tamaño sin que pierdan calidad, o reformar una vez hechos sin tener que borrar cada línea.

También tiene la capacidad de exportar lo que dibujemos a un formato de mapa de bits para utilizarlo en cualquier aplicación, como fondo de pantalla, en una página web, etc.

Inkscape se encuentra desarrollado principalmente para el sistema operativo GNU/Linux, pero es una herramienta multiplataforma.
Es una aplicación disponible en muchas lenguas, incluyendo sistemas de escritura complejos (como sistemas de escritura de derecha a izquierda como árabe, hebreo...).

Ink1.png

En esta primera imagen se puede observar la explicación de la utilidad de cada herramienta. También vemos en la parte inferior: el zoom al que estamos trabajando en este momento, la posición en la que está el mouse y un mensaje de ayuda para saber qué podemos hacer en cada momento. En la parte superior hay una barra de menús que convendría que usted mismo investigue, una barra de botones de tareas más frecuentes y una barra contextual que irá cambiando según la herramienta que usted haya seleccionado. Le muestro a continuación las posibilidades de esta barra contextual.

Detalle de los botones con la herramienta "puntero":
Ink2.png
Función de cada botón, de izquierda a derecha:
Rotar izquierda
Rotar derecha
Espejar horizontal
Espejar vertical
Enviar al fondo
Bajar una capa
Subir una capa
Enviar arriba de todo
Posición horizontal (1)
Posición vertical (1)
Ancho
Alto
Unidad de medida
(1) Del vértice superior izquierdo de la figura o lo seleccionado.
El pequeño "candado" que se ve entre "Ancho" y "Alto" es para mantener la proporcionalidad entre estas magnitudes cuando se cambia una de ellas.
Detalle de los botones con la herramienta "Editor de nodos":
Ink3.png
Función de cada botón, de izquierda a derecha:
Agregar nodo (2)
Sacar nodo (2)
Cerrar figura
Cerrar con un segmento
Sacar un segmento
Crear un corte
Cúspide
Empalme
Empalme simétrico
Convertir a recta
Convertir a curva
Objeto a curvas
Contorno a curvas
(2) Entre dos nodos seleccionados.
Detalle de los botones con la herramienta "Zoom":
Ink4.png
Función de cada botón, de izquierda a derecha:
  • Acercar
  • Alejar
  • Zoom a la selección
  • Zoom a todo
  • Zoom a la página
  • Zoom al ancho de página
  • Zoom anterior
  • Zoom siguiente
  • 100%
  • 50%
  • 200%
Detalle de los botones con la herramienta "Rectángulos":
Ink5.png
Función de cada botón, de izquierda a derecha:
  • Radio horizontal de las esquinas
  • Radio vertical de las esquinas
  • Unidad de medida
  • esquinas en punta
Detalle de los botones con la herramienta "Elipses":
Ink6.png
Función de cada botón, de izquierda a derecha:
�?ngulo de inicio (3)
�?ngulo de fin (3)
Arco o Porción
Figura cerrada
(3) Medido desde la línea horizontal sobre el lado derecho de la figura y en el sentido de las agujas del reloj.
Detalle de los botones con la herramienta "Polígonos":
Ink7.png
Función de cada botón, de izquierda a derecha:
  • Cantidad de puntas
  • Polígono o estrella
  • Distancia del centro a la cuenca de la estrella
  • Convierte en curva las caras
  • Vuelve a los valores del principio
Detalle de los botones con la herramienta "Espirales":
Ink8.png
Función de cada botón, de izquierda a derecha:
  • Vueltas del espiral
  • Aumento de radio progresivo
  • Punto interior donde comienza la espiral
  • Vuelve a los valores del principio
Detalle de los botones con la herramienta "Líneas caligráficas":
Ink9.png
Función de cada botón, de izquierda a derecha:
Máximo ancho de la pluma
Angulo de la mano
Suavidad del trazo
Lentitud del trazo
Vuelve a los valores del principio

Si te ha gustado el artículo inscribete al feed clicando en la imagen más abajo para tenerte siempre actualizado sobre los nuevos contenidos del blog: