Snaps en Python Distribuyendo programas mediante Facundo Batista

Slides:



Advertisements
Presentaciones similares
PLEASE READ (hidden slide) This template uses Microsofts corporate font, Segoe Segoe is not a standard font included with Windows, so if you have not.
Advertisements

GWT Designer, Organización del proyecto GWT Google Web Toolkit Prof
para desarrolladores Minimizar el cambio Concentrarse en estabilidad, confiabilidad y rendimiento. Ayudar a mejorar la productividad Reducir la curva.
Programación orientada a objetos
Parts of the Computer Las partes de la computadora
What time is it? DLT: I can tell time in Spanish..
SABES QUE – LUNES EL 13 DE OCTUBRE 2014 Escribe una pregunta (the question) y una respuesta (the answer). You will ask & answer these questions with a.
Hoy es viernes, el 26 de septiembre
© 2011 Autodesk Productividad en AutoCAD Néstor G. Barrera Líder U.N. Tecnología y Capacitación CIAR S.A. - Argentina Virtual Class ID: AC4596.
Talking about weather Discussing the weather is a very human thing to do, and every language has its own way of doing it. If you think about it, the weather.
JUEVES, EL 10 DE SEPTIEMBRE LT: I WILL RECOGNIZE SOME NEW VOCABULARY WORDS. Go over tests & retake procedures Interpretive Assessment: numbers & alphabet.
.NET Multiplataforma (Windows, Linux, OS X)
ALC 68 Hoy es martes el 27 de marzo de 2012 Hay 12 preguntas para la bienvenida. If you have not done the bienvenida yet, you need to make a new flash.
Repasemos la tarea REPASE (review) “Expresiones útiles” – página 7 HAGA (do) – ejercicio 2 – página 8.
Campana #2 Hoy es juves, 3 de septiembre Use your notas on Frases Importantes. Translate each phrase. Escribe the Spanish version only. 1. What’s your.
¡BIENVENIDOS! ALPHABET, COGNATES.. DO NOW Take five minutes to Silently and Independently fill out the calendar on your desk. Every Calendar should have:
LEARNING INTENTIONSSUCCESS CRITERIA We are learning (to)… utilize new and old essential vocabulary & concepts in different contexts use questioning strategies.
Análisis (Documentación de CU) Francisco Valdés Souto 2 al 6 de marzo 2009 © Avantare Consultores S. A. de C. V. – Derechos.
Fedora Nicaragua Yader Velásquez N. Embajador identi.ca/yaderv twitter.com/yaderv.
GvSIG_des_2.x_d: Curso de desarrolladores de gvSIG Desktop v 2.x Proyectos y paquetes Novedades de desarrollo en gvSIG 2.0
Tivion Por Ángel Guzmán. ¿Que? Un simple reproductor de streaming.
Empaquetamiento de RPM. Que es un archivo RPM? Un archivo rpm es formato de archivo definido para el manejador de paquetes rpm y en esencia es un archivo.
Ofelia Cervantes Instalación de Python en Linux 1.
Administración de la configuración (SCM) Introducción Control de versiones Analisis y diseño USAC Por: Víctor Orozco
Opciones del Package Manager. - Create new package: Me permite crear un nuevo paquete - Write new specification files for all installed, locally generated.
Compartir carpetas, Crear Cuotas. Existen varias maneras de compartir carpetas Botón secundario sobre una carpeta, propiedades y en compartir. Botón secundario.
Tienes un nuevo mensaje…. Ella era una chica timida, llamada Lina, no tenia amigosy solo convivia con su familia especialmente con su madre y su padre…
G DATA V14 Client Instalación
Conociendo un Ubuntu: Una distribución diferente a Linux
Desarrollo Móvil Cross-platform
Subjuntivo: A Grammatical Mood
Spanish Class Mrs. Rogers.
Desde cero a una Distribución Features, Drush Make y Profiler
Introducción a Sistemas Operativos (clase práctica)
Una breve introducción
El show de la moda Spanish 1 Fashion Show.
Buenas prácticas de programación con Drupal
created by Elisabeth Alvarado at
Spanish Class Mrs. Rogers. CLASSROOM EQUIPMENT 20 de setiembre de 2016
EspaÑol 1 Lesson 3 30 de Agosto de 2016
First Grade Dual High Frequency Words
SOBRE GUSTAR + INFINITIVOS
KUbuntu Carlos Torres Denis González 7 de septiembre de 2015.
Los doce días de Navidad Versión: PROFE y la clase de español
¿Qué hora es?.
Base de Datos II 2da Parte. Propiedad ACID  La propiedad ACIDa es una carácterística de un DBMS para poder compartir datos en forma segura.  A :
How to Log in to RosettaStone and Install the Speech Component
Precondiciones para la instalación de SpeechAnywhere
Integration Services.
FRACTIONAL REGULATION ENERGY SAVING DEVICE
Hoy es _________, el _____ de ______ de______________.
Hardware e implementación en Sistemas Operativos
Protocolo SMB y Samba  Explicar protocolos SMB e implementación Samba  Implementar una conexión por Samba entre sistemas operativos Unix / GNU – Linux.
Intro to the Google Certified Educator Level 1 exam Google for Education Certified Trainer.
Demonstrative adjective
A PowerPoint Template Your Presentation Name. This text is a placeholder Main Content Page Layout 2 Copyright 2009.
JKSimMet Software (windows & buttons) Split Engineering Chile Ltda. General Salvo #331 oficina 201 Casilla Sucursal Panorámico Providencia – Santiago,
Introduction to CAN. What is CAN and what are some of its features? Serial communication Multi-Master Protocol Compact –Twisted Pair Bus line 1 Megabit.
The Windows File System and Windows Explorer To move around the file system and examine your files or get to one you want (say, to modify, delete or copy.
No hemos puesto al día nuestra fuente principal de fondos para carreteras en más de 20 años Because the main source of revenue for roads is the gas tax.
Fundamentals of Web Development - 2 nd Ed.Randy Connolly and Ricardo Hoar Fundamentals of Web DevelopmentRandy Connolly and Ricardo Hoar © 2017 Pearson.
Estar Ch. 2B.
Quasimodo: Prepárate para la prueba.
My life Name: benjamín Aravena barrios Thicher: Alexis fernandes DATE: 26|06|2018 COURSE: 7°BASICO.
Welcome to PowerPoint gdskcgdskfcbskjc. Designer helps you get your point across PowerPoint Designer suggests professional designs for your presentation,
PAC Meeting Reunión PAC November 8, 2018 November 8,2018
OPC? OPC: OLE COM for Process Control COM: Component Object Model, Microsoft/Win32 API CORBA w/ actual application support All COM Objects have Interface.
Adm. Sistemas Operativos Arquitectura de Plataformas y Servicios Tic.
ACTIVITY 2 Information, their names, where they are from and what they do for a living.
Transcripción de la presentación:

Snaps en Python Distribuyendo programas mediante Facundo Batista taniquetil.com.ar

La Teoría

? El problema Distribución de software en general Desarrolladores Usuarios

? El problema Distribución de software en general Múltiples entornos Debian ? Fedora Arch Ubuntu Windows Desarrolladores Usuarios

? El problema Distribución de software en general Múltiples entornos Dependencias distintas en distintos sistemas no siempre están no están linkeadas estáticamente Debian Fedora ? Arch D1 D2 D3 Ubuntu Windows Desarrolladores Usuarios

? El problema Distribución de software en general Múltiples entornos Dependencias El transporte Repos: transparentes? curados? Distribución propia: binarios? Fuentes? Descubribilidad? Confianza? Debian ? Fedora Arch D1 D2 D3 Ubuntu Windows Desarrolladores Usuarios

¿Snaps? A Snap: is a squashFS filesystem containing your app code and a snap.yaml file containing specific metadata. It has a read-only file-system and, once installed, a writable area is self-contained. It bundles most of the libraries and runtimes it needs and can be updated and reverted without affecting the rest of the system is confined from the OS and other apps through security mechanisms, but can exchange content and functions with other snaps according to fine-grained policies controlled by the user and the OS defaults

? ¡Snaps! Desarrolladores Usuarios Debian Fedora Arch Ubuntu Windows

? ¡Snaps! Encapsulamiento de dependencias Desarrolladores Usuarios Debian ? Fedora Arch D1 D2 D3 Ubuntu Windows Desarrolladores Usuarios

¡Snaps! Encapsulamiento de dependencias Hay un “Store” descubribilidad acceso Debian Fedora Arch D1 D2 D3 Ubuntu Windows Desarrolladores Usuarios

¡Snaps! Encapsulamiento de dependencias Hay un “Store” descubribilidad acceso Multiplataforma D1 D2 Linux D3 Windows Desarrolladores Usuarios

¡Snaps! Encapsulamiento de dependencias Hay un “Store” descubribilidad acceso Multiplataforma Y más instalación transaccional permisos granulares D1 D2 Linux D3 Windows Desarrolladores Usuarios

Obvio

Entonces, ¿para qué molestarse? ¡Veamos! Otro medio de distribución Para Python es trivial de usar porque ya tenemos lo necesario armado de antes Nos da algunos beneficios piolas ¡Veamos!

La Teoría A los bifes

Del lado del desarrollador

Nuestro programejo El código en sí: currate.py from yahoo_finance import Currency def get_rate(literal): """Get the currency rate from its literal.""" rate = 1 if literal == 'USD' else Currency(literal).get_rate() return Decimal(rate) def main(amount, literal_from, literal_to): """Main entry point.""" rate_from = get_rate(literal_from) rate_to = get_rate(literal_to) result = amount * rate_to / rate_from print("{} {} = {:.3f} {}".format( amount, literal_from, result, literal_to))

Nuestro programejo El código en sí: currate.py El setup.py #!/usr/bin/env python3 from distutils.core import setup setup( name='currate', version='0.3', license='GPL-3', author='Facundo Batista', author_email='facundo@taniquetil.com.ar', description="Get currency rates", long_description="Show the exchange rate from two currencies", scripts=["currate.py"], )

Nuestro programejo El código en sí: currate.py El setup.py Un iconito opcional, pero nice to have

Armamos el snapcraft.yaml Metadata general name: currate version: 0.3 summary: Get currency rates description: > Show the exchange rate from two currencies icon: logo.png

Armamos el snapcraft.yaml Metadata general Madurez de la app confinement: devmode, classic, strict (quality) grade: devel, stable confinement: devmode grade: devel

Armamos el snapcraft.yaml Metadata general Madurez de la app Aplicaciones demonios comandos apps: currate: command: currate.py

Armamos el snapcraft.yaml Metadata general Madurez de la app Aplicaciones Partes código fuente paquetes tarballs pasos para buildear app parts: currate: plugin: python source: . python-packages: - yahoo-finance

Generamos el snap Corremos snapcraft $ snapcraft

En la distribución D1 D2 D3

Integración básica con el Store Registramos el nombre $ snapcraft register currate Subimos el paquete $ snapcraft push currate_0.3_amd64.snap Lo vemos desde snapcraft $ snapcraft status currate Lo vemos en la web dashboard.snapcraft.io

Canales Concepto: riesgo de usar el programa stable candidate beta Potestad del desarrollador qué versión implica qué riesgo Liberemos $ snapcraft release currate 1 edge Veamoslo stable candidate beta edge + riesgo -

Del lado del usuario D1 D2 D3

Qué tenemos hasta ahora No es encontrable (no está en stable) $ snap find currency Pero sí instalable $ snap install currate \ --channel=edge \ --devmode … $ which currate /snap/bin/currate

Vayamos hasta el fondo: dev Queremos ponerlo en stable listo para el usuario final: confinement → strict también actualizamos el grade Buildeamos $ snapcraft Liberamos $ snapcraft push \ currate_0.3_amd64.snap \ --release=stable confinement: strict grade: stable

Vayamos hasta el fondo: user Ahora lo encontramos $ snap find currate Name Version Developer Notes Summary currate 0.3 facundobatista - Get currency rates Pedimos info $ snap info currate name: currate summary: "Get currency rates" publisher: facundobatista description: | Show the exchange rate from two currencies channels: stable: 0.3 (2) 10MB - candidate: 0.3 (2) 10MB - beta: 0.3 (2) 10MB - edge: 0.3 (1) 10MB devmode

Vayamos hasta el fondo: user Lo instalamos $ snap install currate Lo probamos! $ currate 50 ARS USD … <PUMBA> (error de red) No funciona!!

Lo arreglamos Le decimos que puede usar la red Y dale $ snapcraft Y liberamos de nueeeeeeeevo $ snapcraft push \ currate_0.3_amd64.snap \ --release=stable apps: currate: command: currate.py plugs: [network]

Usamos el corregido Instalamos Refrescamos $ snap refresh currate Lo probamos! $ currate 50 ARS USD 50 ARS = 3.247 USD Veamos el permiso $ snap interfaces currate Slot Plug :network …,currate,…

¡Hay más! Entender los cuatro canales cadencia de releases tracks branches Entender el sistema de permisos ej: dónde guardar configuración o data del usuario

¡Hay más! Auto-buildear para distintas arquitecturas arma el snap en cada commit para N archs GitHub: build.snapcraft.io Launchpad: itself Mucha documentación snapcraft.io/docs

¿Preguntas? (quizás respuestas) ¡Muchas gracias! ¿Preguntas? (quizás respuestas) bit.ly/charla-snaps Facundo Batista @facundobatista taniquetil.com.ar Imágenes: https://pixabay.com/p-463928/?no_redirect https://upload.wikimedia.org/wikipedia/commons/2/21/Mandel_zoom_00_mandelbrot_set.jpg https://c1.staticflickr.com/4/3764/12118717326_349f2aff6d_b.jpg https://d13yacurqjgara.cloudfront.net/users/115718/screenshots/776068/silver-bullet.jpg https://www.flickr.com/photos/57527070@N06/34002917996 Licencia: Creative Commons Atribución-NoComercial-CompartirDerivadasIgual 2.5 Argentina http://creativecommons.org/licenses/by-nc-sa/2.5/deed.es_AR