El Samsung Galaxy S20 FE empieza a actualizarse a Android 11 y One UI 3.0

El Samsung Galaxy S20 FE empieza a actualizarse a Android 11 y One UI 3.0

El despliegue de One UI 3.0 o lo que es lo mismo, la capa de personalización de Samsung y Android 11 sigue su camino. No sabemos si será de baldosas amarilla, pero por ahora ya ha empezado a llegar a los Samsung Galaxy S20 y al Galaxy Note 20 Ultra. Dos modelos a los que ahora se suma el Samsung Galaxy S20 FE, que ha comenzado a actualizar antes de lo previsto.

Hace unos días conocimos cuál era el calendario de actualizaciones de Samsung para Europa en lo que respecta a Android 11 y su ultima capa de personalización. Un listado encabezado por la familia Galaxy S20 en el que el Galaxy S20 FE quedaba fuera y en lugar de diciembre, quedaba relegado al mes de febrero. Por eso llama la atención este cambio en las fechas. Continue reading

Más cosas sobre Python. Los componentes del lenguaje

Más cosas sobre Python
En el artículo anterior habíamos comentado las razones de por qué aprender el lenguaje de programación Python y como tener la última versión. Llegó el momento de aprender los componentes del lenguaje con algunos ejemplos.

Más cosas sobre Python. Las herramientas para empezar

Pip

Python tiene muchos módulos que ahorran tiempo de escritura de código porque traen preprogramadas funciones que necesitamos. Aunque algunos de ellos vienen preinstalados otros debemos agregarlos a medida que los necesitamos.

Hay dos formas fáciles de agregarlos; desde los repositorios de tu distribución (como si fueran un programas normal) o utilizando un gestor de paquetes llamado PIP. El segundo método nos asegura tener las versiones más actuales.

Importante
Recuerda que el comando para lanzar programas es python3 nombre_del_programa y no python nombre_del_programa.

Comprobemos si tenemos instalado PIP
pip3 -V

Deberías recibir un mensaje parecido a este
pip 20.2.3 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)
En caso de que no tengas instalado Pip puedes hacerlo desde el gestor de paquetes de tu distribución. Necesitas el paquete
python3-pip

Ingresando y mostrando datos

Vamos a escribir nuestro primer programa. Es probable que si copias y pegas los programas, no funcionen. Te recomiendo que los tipees. Asegúrate de respetar los espacios o no funcionarán.

print("¡Hola!")
nombre=input("¿Cómo te llamas? ")
print("¡Bienvenido/a!", nombre, ".Gracias por leer Linux Adictos")

En la primera línea del programa imprimimos el mensaje de saludo. En la segunda definimos una variable llamada «mombre» y le asignamos como valor la respuesta a la pregunta ¿Cómo te llamas?. Nota que Input cumple dos funciones, la de mostrar un mensaje y asignarle a la variable el valor de la respuesta.

En la tercera línea vuelve el comando print imprimiendo dos tipos de contenidos. El saludo predefinido (Qué siempre va entre comillas) y el valor de la variable (Las variables van siempre sin comillas. El contenido variable y no variable se separa con una coma (,).

Intentemos una modificación

print("¡Hola!")
nombre=input("¿Cómo te llamas? " )
saludo="Bienvenido "+ nombre +". Gracias por leer Linux Adictos"
print(saludo)

En la tercera línea asignamos a la variable «saludo» una combinación de texto predefinido (entre comillas) y el valor de la variable (sin comillas)

Módulos

Tener que escribir una serie de instrucciones en código cada vez que se necesita es una pérdida de tiempo y espacio. Sobre todo si se trata de un programa extenso. Es por eso que lo mejor es utilizar un entorno integrado de desarrollo y escribir un programa largo (script en la jerga) para que luego lo ejecute el intérprete.

A medida que el programa se alarga, lo aconsejable es dividirlo en varios archivos para facilitar su mantenimiento y la reutilización. Para eso se utilizan los módulos.

Los módulos son archivos que contienen definiciones y declaraciones en Python. El nombre del archivo es el nombre del módulo terminado en .py. Por ejemplo, nosotros crearemos un módulo llamado Bienvenida.py. Dentro de un módulo, el nombre del módulo (como cadena) está disponible como el valor de la variable global __nombre__.

Ten en cuenta lo que dije más arriba de los espacios. Nota que la segunda, tercera y cuarta líneas del programa comienzan justo debajo del espacio entre la palabra def y la palabra Bienvenida. Esto es requerido por Python y lo explicaremos en los siguientes artículos.

En la primera línea definimos una función llamada Bienvenida. Las tres líneas siguientes son las instrucciones que tienen que ejecutarse cada vez que se llama a la función.

En la línea 5 definimos el contenido de la variable publicación que la última instrucción de la función necesita para imprimir el mensaje de bienvenida.

Con la última línea del programa, ejecutamos la función.

Probemos otra cosa. Crea dos archivos. Uno llamado Bienvenida.py y el otro prueba. py.

En Bienvenida.py escribe estas líneas:
def Bienvenida():
   publicacion="Linux adictos"
   nombre=input("¿Cómo te llamas ")
   saludo="Bienvenido "+nombre+" Gracias por leer "+publicacion
   print(saludo)

En prueba.py escribe:
from Bienvenida import Bienvenida
Bienvenida()
Lo que estamos haciendo es separar la función y la llamada a la función en dos archivos separados.

 

from Linux Adictos https://ift.tt/37x6mAW
via IFTTT

basename y dirname: dos comandos que deberías conocer

terminal shell comandos Linux

A veces, algunos tutoriales van dirigidos a explicar comandos algo más exóticos y extraños, en cambio, existen algunos que incluyen las distribuciones de serie y no son tan populares como cd, ls, cat, etc., pero que son igualmente prácticos. En este tutorial te mostraré lo que se puede realizar con dos de esos comandos: basename y dirname.

Quizás a priori te parezcan absurdos y que no tienen ninguna utilidad, pero tienen aplicaciones bastante prácticas en algunos casos como, por ejemplo, en los scripts donde se necesita extraer alguna parte de una ruta, como el nombre del fichero o el directorio para que otro comando opere sobre esto…

Para qué sirven

Estos comandos son muy básicos, y sus funciones son:

  • basename: sirve para extraer el nombre del fichero de una ruta.
  • dirname: sirve para extraer el nombre del directorio de una ruta.

Ejemplos de uso

Aquí puedes ver algunos ejemplos de cómo usarlos:

  • Por ejemplo, para usar basename con /etc/passwd, y que te devuelva en su salida el nombre del fichero, en este caso passwd:

basename /etc/passwd

  • También puedes especificar una extensión para que te de el nombre del fichero sin la extensión. Por ejemplo, imagina que quieras extraer el nombre de una imagen /home/media/prueba.jpg sin la extensión jpg (devolvería prueba):

basename -s .jpg /home/media/prueba.jpg

  • Incluso puedes procesar varias rutas a la vez por separado, para ello tienes que usar la opción -a:

basename -a /etc/passwd /var/log/boot.log

  • Para hacer lo contrario, y que te de el nombre del directorio, sin el nombre del fichero, entonces tienes que usar dirname. Por ejemplo, si quieres usarlo en la ruta /var/spool/mail/prueba.txt y que te devuelva /var/spool/mail, entonces usa:

dirname /var/spool/mail/prueba.txt

En cuanto a una utilidad en un script, aquí tienes otro ejemplo. Imagina que tienes un script simple, y que en él hay una ruta que es variable. Pero quieres que muestre el directorio que contiene un fichero, independientemente del fichero, en ese caso podrías tener algo como:


pathname="/home/usuario/data/fichero"

result=$(dirname "$pathname")

echo $result

Evidentemente, en este script el «pathname» sería siempre ese mismo estático declarado por la constante del principio, pero pueden darse casos en los que no lo sea, y es ahí donde se vuelve práctico. Por ejemplo:


/*script para convertir una imagen gif en png*/

#!/bin/sh
for file in *.gif;do
    #Salir si no hay ficheros
    if [! -f $file];then
        exit
    fi
    b='basename $file .gif'
    echo NOW $b.gif is $b.png
    giftopnm $b.gif | pnmtopng >$b.png
done

from Linux Adictos https://ift.tt/37tMhLJ
via IFTTT