uk: Комп'ютерні науки

description: A comprehensive guide on building custom models fields in Django. Including descriptors, lookups, expressions and many more. Often you need to map domain entities onto your application and store them in a database. Django provides you with a very extensible API that allows you to integrate domain entities with ORM seamlessly. This talk will walk through all essential steps in building a Money instances support for Django from the ground, based on real-life examples taken from django-money library. Here is an overview of the talk structure: Historical notes on django-money project. Implementing a field for Money Connecting py-moneyed with Django. Map Money to Model What field to choose? Implicit currency field How descriptors could help here? Querying MoneyField Designing the API Lookup API vs. old style model managers surgery Expressions. Enhancing Money class Extras: Integrating Django admin. Utilizing AppConfig.ready Serialization Validators Migrations. Deconstruction & backends differences Testing

uk: вхід без авторизації

name: Building a custom model field from the ground up


Building a Django Community in Africa

Abigail Mesrenyame Dogbe

type: Person

cs: Informatika

de: Informatik

fi: tietojenkäsittelytiede

uk: Комп'ютерні науки

en: Computer Science

fr: Informatique

da: Datalogi

es: Ciencias de la Computación

nl: Informatica

cs: Technické vědy

de: Ingenieurwissenschaften

fi: tekniikka

uk: Інженерія

en: Engineering Sciences

fr: Ingénierie

da: Ingeniørvidenskab

es: Ingeniería

nl: Engineering

description: The fast spread of Django in Africa through some initiatives such as Django Girls and Python Conferences has gained popularity especially in the West of Africa. Pushing the agenda of creating an active community will go a long way to promote the use of Django and strengthen the relationship between Django developers in Africa.

TIB AV-Portal

type: Service

type: WebContent

type: MediaObject

@language: en

cs: přihlášení není vyžadováno

de: keine Anmeldung erforderlich

uk: вхід без авторизації

en: no login required

nl: geen login vereist

DjangoCon Europe

type: Organization

cs: Video

de: Video

fi: Video

uk: Відео

en: Video

fr: Vidéo

da: Video

nl: Video

es: Video


Building plugin ecosystems with Django

uk: Комп'ютерні науки

description: The power of some popular web applications like WordPress comes from a flexible plugin system. This talk will show how to implement such plugin architectures for Django applications including real-world examples. It is probably common sense by now that modular architectures win over monolithic architectures in a number of ways. Django gives us reusable apps, but just because they are reusable doesn’t mean they automatically integrate nicely with each other and a Python programmer is still required to glue them together. In this talk I will show how to build a rich Django application that provides a well-defined plugin API. The API will allow plugins to seamlessly integrate with the main application. The talk will show various patterns around URL routing, Django‘s signal system and the use of setuptools to provide auto-detection of installed plugins. Installing a plugin should not be much more complicated than a simple pip install. The explained architecture has been in use for some years in the pretix open source project and made it possible to us to grow a rich plugin ecosystem.

uk: вхід без авторизації


uk: Комп'ютерні науки

description: Anderson, Craig - Introducing Black Alexan, Nader - The use of feature toggles in migrating models in order to prevent maintenance downtime in production Arminio, Patrick - Strawberry Hammershoy, Andreas - Cycling in Copemnhagen et al.

uk: вхід без авторизації

name: DjangoCon Europe 2019 - Lightning Talks Day 1


uk: Комп'ютерні науки

description: N. N. - Managing Django Settings: Issues N.N. - Type-checking your Django N. N. - Managing Django Settings: Issues Romijn, Sasha - Secrets of a Secret Society Séguin, François - Privacy be Default in a Django App Bujniewicz, Krzysztof - Request-wide state in Django: Not to be confused with global state

uk: вхід без авторизації

name: DjangoCon Europe 2019 - Lightning Talks Day 2


uk: Комп'ютерні науки

description: Maloney, Curtis - Another view on handling settings Winterbottom, David - Heretical Django practices Godwin, Andrew - The Beginning of Real Time Wallroth, Tom - Deus State Machine: Yet another state machine Bhimjyani, Harsh - Managing Elasticsearch in Django like a pro N. N. - Django for Social Good Kolibri ...

uk: вхід без авторизації

name: DjangoCon Europe 2019 - Lightning Talks Day 3


uk: Комп'ютерні науки

description: Have you ever skimmed through a README, tried to follow a quickstart tutorial, attempted to decipher an error message, or typed ‘–help’ in your console? Congratulations – you have encountered documentation! Long gone are the days of massive books with never-ending stories about your software. Today’s users are smarter and less patient, which means that we no longer need to document all the things, as long as what we do document is clear, concise, helpful, and accessible. And that’s where the real work starts. Documentation requires some attitude adjustment, since prose doesn’t neatly compile into binaries as code does. But Don’t Panic™! No matter what your role is in the community, you can apply a few key principles from the technical writing world to make your project more docs-friendly, and therefore more user- and contributor-friendly. This talk covers strategies, best practices, and pro tips for rethinking how we create and curate documentation. This special edition will include Django-specific examples and use-cases as well as a special Q&A session, where we will try to address some of the community’s top concerns and ideas about the Django docs. Special edition: Send me questions before the talk, and I will try to answer them on stage. If you have a twitter account send your question here. Otherwise, you can email me at docs@docsideofthemoon.com. Don’t be shy!

uk: вхід без авторизації

name: Keynote: Docs or it didn't happen!: (with Q&A)


uk: Комп'ютерні науки

description: Algorithms are fun to learn and their usefulness goes beyond getting that good grade or acing a coding interview. This talk aims to showcase some the hidden benefits of keeping your algorithmic skills sharp, as well as the speaker’s personal recommendations in keeping up the good work without feeling like studying for an exam. How many sorting methods can you name out of your head? What is greedy? If these terms sound familiar, you’ve probably heard of algorithmics. For the everyday developer, algorithms are either the scare of all the technical interviews, or that one course you took in university which they vaguely remember. It seems that if you’re not working for one of the big companies, you will never use them. So you might ask yourself: Why do I need to know about linear time when the libraries I’m using already optimise for this? While you might not implement binary search in that new feature you’re working on, or use dynamic programming, diving a bit deeper into this world could prove useful in training your mind to see patterns you might have a harder time seeing otherwise, or to write code that is better optimised and will give the end users a better experience. I am going to try to dispel some of the myths surrounding the study of algorithms and competitive programming, and argue that sharpening this skill is something that benefits us, as software developers, outside of passing technical tests.

uk: вхід без авторизації

name: Does this run in linear time?: A case for algorithmics


uk: Комп'ютерні науки

description: Django’s life-blood is its contributors. This talk is about how we enable more contributors from across the community, how they (You!) can get involved, and how you can make sure that it helps your career. Django looks like it’s doing just fine: it’s a popular framework in a popular language. We have major releases every six months. We have Django Girls, a Foundation (and Fellows), super conferences in glamorous locations, and more. But the code is old and there’s only the smallest number of people that regularly contribute. We need more. We need you! What’s more, as good as we are elsewhere as a community, the group of contributors isn’t as diverse as the community at large: there are clearly barriers to entry here. We’re trying to change that, and we want to invite you to come and join-in. Contributing to open source is great fun, it’s a great learning opportunity, and it can really help your career. I’m going to tell you how to get involved, and how to get support in that. Importantly I’m going to tell you how to avoid the pitfalls. You are qualified to contribute. More than that, your contribution is the future of Django. Come code!

uk: вхід без авторизації

name: Keynote: Feeding the Pony: Contributing back to Django & How to make that work for you


uk: Комп'ютерні науки

description: In this talk, I will present how I fetched data from GitHub API without hitting rate limits along with a walkthrough of my project and the pros of using GraphQl over REST in my project. In addition to this, I’ll also highlight various tools I have used to accomplish this and why I chose to add this data source and the tools. My project is important because fetching data is troublesome when it comes to rate limits and taking care of number of API calls, and will be helpful for both beginners and intermediate developers. As far as GitHub API is concerned, the data which is to be pulled is already sorted and classified which makes it an excellent source for visualization. The data that is available includes meticulous information regarding pull requests, issues, activity feeds, repositories, organizations etc, which is why I thought GitHub will be a relevant data source to add to Open Humans. I had developed this project as a part of my Outreachy internship with Open Humans Foundation. Open Humans Foundation provides a single platform to upload, connect and privately store data from a plethora of sources including 23andMe, AncestryDNA, Fitbit, Runkeeper and so on. My proposal included adding GitHub and Twitter data sources to this platform. The workflow of this project can be described as follows: 1. User goes to the website provided by this repo 2. A user signs up/signs in with Open Humans and authorizes the Github integration on Open Humans 3. This redirects the user back to this Github-integration website 4. The user is redirected starts the authorization with Github. For this they are redirected to the Github page 5. After a user has authorized both Open Humans & Github their Github data will be requested and ultimately saved as a file in Open Humans. 6. Regular updates of the data should be automatically triggered to keep the data on Open Humans up to date. The whole project uses Django to fetch data from the GitHub API. Now, fetching data has a couple of challenges: 1. The Github API uses rate limits, which need to be respected and going over the rate limit would not yield more data but just errors 2. Getting all the data from Github takes a while, not only because of the rate limits, but also because it can be a lot of data For this reason this application makes good use of background tasks with Celery and the Python module requests_respectful, which keeps track of API limits by storing limits in a redis database. As redis is already used for Celery as well this does not increase the number of non-python dependencies. To exercise rate limiting, I came across requests_respectful, a wrapper that Open Humans is using in its API integrations. It is a rate-limiting wrapper built on top of Requests by SerpentAI. This enables users to work within rate limits(user rate limiting) of any amount of services simultaneously. Requests_respectful maximizes allowed requests without going over rate limits. Going through the API documentation, I found the v4 of GitHub API, also known as GraphQL API. GraphQL is a query language for your API, for executing queries by using a type system you define for your data and gives the power to request exactly the data that they need. GraphQL provides a complete and understandable description of the data in your API and makes it easier to aggregate from multiple sources. GraphQL requests are POST requests to the GraphQL endpoint and the response is returned as JSON(link) matching the query. Using GraphQL in Github API v4 has enabled me to easily extract required data in a single API call.

uk: вхід без авторизації

name: Fetching data from APIs (GitHub) using Django and GraphQl without hitting the rate limits


Making your life (h)APIer with Django

uk: Комп'ютерні науки

description: In today’s web, creating API’s has become a big part of web-development. Django and Django REST Framework make our lives easy :-) But let’s take it a notch further with DRF-Schema-Adapter. When it comes to building API’s with Django, Django REST Framework has become the go-to solution. It is a great tool that integrates seamlessly with Django and it’s ORM. Unfortunately when building a medium-to-large API, DRF leads to a lot of very similar and somewhat repetitive code in building your ViewSet, Serializer, Pagination or Filter classes. In the long-run, all this code also has to be maintained! This is where DRF-Schema-Adapter can make your life easier and happier! In this talk, we’ll go over the basics of building an API with DRF versus using DRF-Schema-Adapter and how it will help shrink your codebase.

uk: вхід без авторизації


uk: Комп'ютерні науки

description: In this talk we will see how we have integrated a map into a web project already in production using GeoDjango, PostGIS and Leaflet and we will perform a demonstration of integration of a map from scratch into a Django project. A map allows users to view and search for data in a spatial way and it is common to add one to their web project. In this talk we will see how we have integrated a map into a web project already in production using GeoDjango, PostGIS and Leaflet and we will perform a demonstration of integration of a map from scratch into a Django project. GeoDjango is a module included in Django that transforms it into a world-class geographic Web framework. PostGIS is an extension of the PostgreSQL database that adds support for geographic objects allowing you to perform spatial queries. Leaflet is the leading open source JavaScript library for interactive web maps optimized for mobile devices.

uk: вхід без авторизації

name: Maps with GeoDjango, PostGIS and Leaflet


uk: Комп'ютерні науки

description: There’s something rich, beautiful and mysterious in the several kinds of nothingness and identity that we encounter as Python/Django programmers. Understanding the connections they make with ontology, epistemology and metaphysics adds another dimension to the joy of programming. As Django programmers, we’re blessed - we have several kinds of nothingness and identity at our fingertips. There’s something rich, beautiful and mysterious in them, and in their variety and relation. For the programmer, the discovery of them is an opening into Python’s power and expressiveness. It’s the same richness and mystery that logicians and philosophers have discovered in them: entire schools of thought are founded on various approaches to nothingness. Programmers are in fact working with key ideas that are also crucially important to ontology, epistemology and metaphysics. From the pioneers of boolean electronics who adopted the NAND gate as the basic building block of logical circuits to thinkers like Sartre and Kant, nothing repeatedly turns out to be at the heart of everything. And the Python programmer who gets a surprise when checking for the identity of a variable is in fact running into the same problems that Heraclitus was aware of, 25 centuries before Guido van Rossum was even born. We’re in good company, in other words. Nothingness and identity and the way we use them in Python and Django are related to phenomenology, utopia, politics, theories of agency and much, much more. Knowing about these connections might not make anyone a better programmer, but it can add another dimension to their understanding of the discipline, and add to the richness and beauty of their world, making the joy of programming even deeper.

uk: вхід без авторизації

name: Nothingness and identity in Python and Django


Pentesting your Django apps

uk: Комп'ютерні науки

description: We’ll look at why Django developers should learn to pentest the apps they build, explain how we learnt to do it, and show how basic security tests fit into our development workflow. Having your apps professionally pentested is a great way to find and fix security problems. For many projects though, resource constraints mean that pentesting either never happens, or it happens infrequently. Our solution to this problem was to learn to do basic pentesting of our own applications. With this talk we aim to encourage other developers to do the same. We’ll show the benefits to a project of even simple security testing, and show people how to get started with pentesting as developers. We’re also running a workshop/sprint in which you can learn to pentest a vulnerable Django app.

uk: вхід без авторизації


Pushing the ORM to its limits

uk: Комп'ютерні науки

description: You can do a lot more with the Django ORM than you might think, and when something isn’t possible using the existing primitives, you can easily add your own. In this talk you will learn about both advanced features of the ORM and how to run your own SQL queries. Django’s ORM makes it super simple to run quick queries against your database, but it can do a lot more for you than you might think. Need to get some statistics on a monthly-basis? Easy, just annotate your queryset with year and month using ExtractYear and ExtractMonth, and you can use .values() to get the data aggregated by month. When you find yourself in need of something that is not already covered by the existing ORM functions, you will often be able to create it yourself. Have you modelled your data with separate date and time fields, but need to compare this to a datetime field? You can make a custom expression in Django for combining the date and time into a datetime in the database. Starting with Django 1.11, you can easily make subqueries using the Django ORM. In Django 2.0 we got support for window functions. Django 2.1 exposes additional functions that are available in many databases, and version 2.2 will introduce support for custom constraints and extends the primitives for custom indexes. It is also easy to drop down to writing raw SQL if you need to. It is probably not something you need to do every day, but it’s good to know that the option is there, and know how and when to do it.

uk: вхід без авторизації


uk: Комп'ютерні науки

description: When using WebSockets to communicate between your server and the client every new browser context–tab, window, iframe, and so on–is likely to create another WebSocket connection. All these open connections can quickly take a toll on your server resources, or if you’re using a PaaS which charges for each connection, it could quickly add up to a big bill. In this talk, we’ll look at how you can use SharedWorkers to create a single persistent WebSocket which can be used by every browser context to communicate with your Django Channels WebSocket server

uk: вхід без авторизації

name: Reduce, Reuse, Recycle - Persisting WebSocket connections with SharedWorkers


Serverless Django with Zappa

uk: Комп'ютерні науки

description: An exploration of how Serverless can be used to run your Django applications with the pros and cons of doing so. The focus is on AWS Lambda using Zappa for deployment. Over the last couple of years, Serverless has become an increasingly popular option for serving applications, going beyond even containerisation in its promise of minimal DevOps overheads and reduced operational costs - unburdening developers to focus on the applications themselves. Often serverless is used in conjunction with microservices as part of a larger application stack. But how effective is it for running your entire Django application as an alternative to the traditional ‘always-on’ model for a website? This talk explores the pros and cons of running your own personal/experimental Django projects and the challenges of using it in a full production environment. We’ll be exploring this with a concrete example based on AWS Lambda and associated services, Zappa for deployment and Wagtail as the Django application to give a Serverless Content Mangement System. The talk is accompanied by online documentation so that attendees can run their own Serverless CMS or their own application with little or no running costs.

uk: вхід без авторизації


Simple visual regression testing

uk: Комп'ютерні науки

description: Visual regression testing is an afterthought to many developers working on lean development teams. We will go over how to create automated visual tests that are both scalable and simple to implement. Most of us will agree that testing CSS changes is important…in theory. But when you have limited development time and no QA resources, how do you ensure that pages look as expected after CSS changes? Instead of constantly having to click around we can programmatically detect UI changes In this talk I will start with how to set up your existing test environment with automated visual tests using Python and Selenium. Then we will discuss a few pit falls that I ran into when implementing visual regression testing The audience will be expected to have a general understanding about how test cases are set up in Django

uk: вхід без авторизації


uk: Комп'ютерні науки

description: This talk will take a look at how Django could look if it was designed from the ground up as an ASGI framework. We’ll examine how we could approach this design in a way that helps reduce tight coupling and framework complexity, and take a look at what new capabilities this would provide. This talk sketches out how a redesign of Django might look, if it was reworked as an ASGI web framework. It draws on the design work behind the Starlette web framework and the Uvicorn web server. Where we are now Overview of the fundamentals of the request/response flow in Django: WSGI, the Django middleware stack, and request routing. Introducing ASGI ASGI’s evolution. The ASGI interface. Capabilities that ASGI provides: Concurrency & performance, WebSockets, Server Sent Events, HTTP/2 Server Push, Background tasks. Startup / shutdown / clock events. Running threaded code in an ASGI context. Concurrency and database transactionality. An ASGI-centered design ASGI middleware vs. a middleware interface. Using ASGI middleware, but with a request/response interface. Routing as an ASGI interface. Class-based views as an ASGI interface. Mountable ASGI components. An ASGI-based TestClient. Settings and configuration Per-component configuration, over global configuration settings. Implications to framework complexity Why this approach matters in terms of complexity and framework-interoperation. Challenges Does it matter enough? How to get from A to B? What does it make more difficult? What’s the bigger picture?

uk: вхід без авторизації

name: Keynote: Sketching out a Django redesign


uk: Комп'ютерні науки

description: Developing, packaging and integrating JS apps with Django. As a Django dev you cannot ignore Javascript frameworks anymore. But integrating React (or any javascript framework) with Django is not seamless: there’s no documented guide to setup a project, getting hot reloading to work is a painful must-have, and then how do you even leverage the power of both frameworks to code faster? Doing this without losing time and productivity is very hard. After 4 years of building a dozen django/react projects at Theodo, I want to share with you the very efficient setup we came up with, both for development and production use. In this session we’ll see how to: setup a JS frontend alongside Django for a smooth development experience (with hot reloading!) package and deploy a js app with a Django project make frontend and backend work together: automatically harvest Django REST framework validation errors inside redux-form and get free validation in React

uk: вхід без авторизації

name: Take the goRe out of a DjangoReact stack: Integrating JS apps with Django


uk: Комп'ютерні науки

description: As open source communities grow, they need to adapt to new dynamics: Different types of expertise between contributors, different expectations, etc. The arrival of a very large PR on the OpenFisca project became the test of the work we had put in to create a more resilient community. Since 2011, a community of developers and economists are developing OpenFisca, an open source framework in Python that turns law into software so it can be used by administrations, economists and activists. The contributors are split between tech experts and domain experts, each bringing interesting skills, mindsets and issues. However, a full time tech team became the full time core team, shifting the balance of the community. Having a full time team working on the project was a plus, but it gave tech experts a central role that put a lot of strain on domain experts’ contributions. In this talk, I will describe how we worked to create a dynamic community that can deal with uncertainty (new contributors, very large PRs, …) and grow to reach new heights in the hope it can inspire other communities.

uk: вхід без авторизації

name: The 750,000-line long pull request: crafting a more resilient open source community


A different Form of navigation

uk: Комп'ютерні науки

description: Web tooling for data analysis requires, at its heart, a way to select the data a user want's to analyze. This talk shows how you can use forms to pass data among pages, retain the selected form elements through the request/response cycle and build web interfaces that utilize forms while looking like simple link elements. I will also show how I use my django-modelqueryform package to facilitate an advanced user-centric data filtering interface. Data analysis and visualization tools are different than many applications we build with django. They are not simple CRUD apps, and different users often want to use vastly different data subsets for their analysis. The talk will start with a quick demo of such an application to give context. Overview of the functionality provided by [django-modelqueryform](https://django-modelqueryform.readthedocs.io/en/latest/ Building widgets that encapsulate an instance of the form Coding required to maintain the form context through the request/response cycle so that the data selection is maintained through navigation to different analysis types Questions/Comments

uk: вхід без авторизації


uk: Комп'ютерні науки

description: Accessibility is an afterthought to many, but to those with issues navigating the web it's very important. We will go over examples of accessibility on the web, short and long term solutions, and talk about why accessibility matters to a variety of users. The audience should leave with the ability to spot some accessibility issues and the knowledge of how to fix them. Accessibility is a huge topic that is often acknowledged as important...by the people who already care about it. This talk is meant to help the entire audience start thinking about accessibility and realize how easy it is to at least put some accessibility into a site (or avoid adding blatantly inaccessible content). Ten to fifteen percent of the EU has a disability, according to the EU Labour Force Survey, which is a large potential audience for any site. There are various laws that factor into the amount of web accessibility a country must have, and the consequences a business can face because of that. Accessible web development also tends to lead to better UX and a happier user base. And, another plus: It will save devs time and frustration when they’re working with the code, since good HTML is enforced. This talk will start with a broad introduction to accessibility, how to break different concerns down into categories for consideration, and touch on some laws around web accessibility. The second part will go through examples of good and bad accessibility and what to look out for, as well as ways to improve accessibility (including "easy wins" that they could implement quickly to drastically improve their sites). The final section will include resources for finding accessibility standards and also browser extensions and the like for people to check on their own. The audience will be expected to have working knowledge of the internet, webpages, and using webpages.

uk: вхід без авторизації

name: Accessibility Matters: Creating a Better Web


An Intro to Docker for Djangonauts

uk: Комп'ютерні науки

description: If you've never used it before, Docker can be a little overwhelming. There is new vocabulary to learn, new commands to memorize, and new files to add to each project. Most resources fall into one of two camps: they teach you the bare bones of Docker but still leave you with too many questions to comfortably try it on your own, or they throw you into the deep end by assuming you're more familiar with Docker than you are. In this talk, you will find that middle ground: a talk that doesn't assume you're familiar with Docker and so keeps everything simple, but leaves you with enough information that you can get started as soon as you leave the room. Together, we will step through the parts of a Dockerfile and learn what they do. Then, I'll introduce you to Docker Compose and explain why using it to run multiple containers is helpful. Finally, you will learn to run commands and execute scripts from the command line using Docker, how to enter a container and why you might need to, and what to do before you go home for the day. This talk is for Djangonauts who are curious about Docker, need to learn to use it for work or personal projects, or who seek a better understanding of containers in general. Audience members might be beginners to Python/Django or not, but they are definitely beginners to containerizing all the things. The audience should be familiar with basic Python concepts such as variables and running things from the command line. Some basic familiarity with Django would be helpful, as the sample project I will demo is a Django app, but beginner Djangonauts will be able to follow along. Introduction - Who am I? (1 minute) What is Docker? Why use it? (3 min) - Eliminates "it works on my machine" problems - Never install anything globally ever again - Great for working with teams Docker definitions (4 min) - Image - Container - Dockerfile - Where do virtual environments fit in? Dockerfile (5 min) - Go through parts: Python image, setting environment variables, dealing with requirements.txt, set working directory of /code/, expose port Docker Compose - What is Docker Compose? (3 min) Allows you to run more than one container in a Docker application Useful for running multiple services like your web server, database, Redis, etc. in separate containers as part of one Docker application docker-compose.yml (6 min) Version Define services (db and web for this presentation) Explain volumes Run commands from services, like runserver Define dependencies Docker on the Command Line (8 min) - docker-compose up - manage.py commands (docker-compose run web ./manage.py [command]) - running tests (docker-compose run web py.test [or ./runtests.py]) - opening a shell (docker-compose run web bash) - viewing containers (docker ps) and entering a container (see where the /code/ dir is that we created in the Dockerfile) - docker-compose down Q&A (any remaining time)

uk: вхід без авторизації


An ODe to OAuth

uk: Комп'ютерні науки

description: We all know that remembering passwords is hard, so why not leave it to someone else? In this talk, I would like to introduce how we improved our social authentication system in our Django applications at Prezi with the aid of the Python Social Auth package. After a long time coming, we at Prezi introduced social authentication using Google mid last year. This seemingly trivial problem soon became a nightmare after we realized that our custom built session management systems completely misalign with the standards of the industry and open source. However, our team did not give up the dream of having a fully scalable and easy-to-maintain component that we can be proud of. In this talk, I would like to present you the war story of how we revamped the social authentication systems at Prezi (whilst becoming open source contributors) using the Python Social Auth package, enabling a significant amount of users to access our services on all platforms.

uk: вхід без авторизації


Auf Wiedersehen

uk: Комп'ютерні науки

uk: вхід без авторизації


uk: Комп'ютерні науки

description: I'm aiming to show how avoid spelling errors by showing ways to implement automated spell-checking. Nearly all Django applications have two main textual bodies that users come in touch with: First, any text in the application and its translation, second the documentation. Since both are usually written by humans, they will contain spelling errors. This is considered harmful and can from time to time hinder the user trying to understand what to do. Therefore, an automated spell-checking tool should be a part of any CI-cyle. For spell-checking documentation, I will give a short demonstration on how to use the "sphinxcontrib-spelling"-tool written by Doug Hellmann, the problems we had and how we overcame them. For spell-checking text in the application and its translations that are usually found in .po-files, I have implemented a small tool called "potypo" (name and development in progress). I will present this tool and show challenges and problems on the way to implementing automated spell checking for .po-files.

uk: вхід без авторизації

name: Automated spell-checking in Django projects: using potypo


uk: Комп'ютерні науки

description: How Holvi decided to pick Django as part of their core infrastructure. I'll go through both the business reasons for using Django for banking (5-10 minutes), and technical details of how we do reliable distributed software which keeps our and customer's money safe (10-20 minutes).

uk: вхід без авторизації

name: Banking with Django - how to not lose your customer's money


uk: Комп'ютерні науки

description: Since the introduction of Channels, real time web has become much easier to work with in Django: discover how you can easily create yours with Django! Since the introduction of Channels, real time web has become much easier to work with in Django. It’s now possible to build real time applications with much less effort in managing the idiosyncrasies of the async programming and a lot of batteries are included. Starting with a brief introduction to Channels (targeting version 2.0), we will see how to build a real time application, both on the Django and the frontend side and how easy it’s to start experimenting with it. The talk has a very hands-on approach, to allow the attendees to experiment with the proposed solution and approach, and starting immediately building their own real time applications with Django.

uk: вхід без авторизації

name: Building real time applications with Django


uk: Комп'ютерні науки

description: How can packaging Django projects make deployments easier, faster and more reliable? Deployments of Django projects can be a challenging task. Beside the Python source code itself you usually have to handle a lot of other stuff: Installing Python dependencies Shipping JavaScript code and installing it's dependencies Compiling SCSS to CSS Collecting static files Building documentation Compiling translations … And of course you want a deployment approach that is independent of a specific hosting solution. Also you have to think about the scalability of your deployment when the number of servers you operate increases. This usually means that git pull is not the best way to deal with these tasks. So I will discuss different ways to package your Django project like Wheels JavaScript packages Operating system packages Containers Some of these concepts will hopefully help you to make your deployment process easier, faster and more reliable.

uk: вхід без авторизації

name: Can packaging improve Django deployments?


Creating Solid APIs

uk: Комп'ютерні науки

description: Increasingly, our apps are used not by humans but by other apps - via their APIs. Thus it is increasingly important that your APIs are well-designed and easy to consume for other developers. I will share tips and good practices on authentication, versioning, documentation, response structure, and why it all matters. Adding a few API endpoints to your application for internal consumption is easy. Creating APIs that other developers will love to use is a much harder problem. You'll need to think about solving variety of topics such as versioning, authentication, response structure, documentation and more. There are existing good practices for each of them, but often developers who haven't done a lot of API work aren't familiar with them. My talk will show how to build on top of Django and DRF and find reasonable solutions for those problems. I will talk about JSON API, OAuth2, and other technologies and show how they fit into the puzzle. Benefits of standardized response structure, as well as auto-generated documentation will also be discussed. I'll introduce OAuth2, discussing when it is a good choice and when not, as well as some trickier parts of it. Next we'll look at why a standardized response structure such as JSON API makes lives of 3rd-party developers easier. We'll then move on to versioning and how you can change your API without breaking all existing apps. And the talk wouldn't be complete without looking at documenting your APIs and why the docs should be auto-generated.

uk: вхід без авторизації


uk: Комп'ютерні науки

description: In the 1850s, Edward Orange Wildman Whitehouse was appointed the lead engineer of the first attempt to build a trans-Atlantic telegraph cable. This is a tale of a project gone horribly wrong in the age of magnificent facial hair. Step up to learn the secrets of recovering your project from failure! In the 1850s, Edward Orange Wildman Whitehouse was appointed the lead engineer of the first attempt to build a trans-Atlantic telegraph cable. With the entire population of two continents waiting for his go-live, their handlebar moustaches aquiver, he demonstrated in fine form just how spectacularly a big project can be a bigger disaster. This is a tale of long-winded rants, spectacular sideburns, and gentlemen scientists behaving badly. It is also a lesson about the importance of honest reflection in technical teamwork. Lilly outlines some of the mistakes made during one of the biggest tech delivery projects in history, and how a constructive view of failure helped to turn it all around. Through the public meltdowns of Wildman Whitehouse you will learn the importance of feedback, how to handle complex tasks gracefully, and the best way to recover from having your pipeline eaten by a whale.

uk: вхід без авторизації

name: Don't Look Back in Anger: Wildman Whitehouse and the Great Failure of 1858


GraphQL in Python and Django

uk: Комп'ютерні науки

description: In this talk, I’ll talk about GraphQL, a data query language created by Facebook as an alternative to the widely used REST. I’ll list the key differences between the twos and pros and cons of GraphQL over a “traditional” REST API. I’ll tell why GraphQL has been created, what problems does it solve and how to create GraphQL APIs with Python with an additional follow up on how to use it with Django, one of the most popular web framework. If we have enough time I’ll touch on advanced topics like authentication, caching, security and real-time. Takeaway: the objective of the talk is to have an introduction on GraphQL, understand why and when to use it and, finally, how to use it Python. Audience: the talk is for web developers with some experience building web APIs.

uk: вхід без авторизації


uk: Комп'ютерні науки

description: Software development is often seen as a young person's game. But what if, as you get older, you want to keep at the keyboard? Thoughts from a (now) veteran developer on building your career in software development for the long-haul. This is a community talk. My favourite topics from DjangoConEU 2017 were the non-technical talks. The most interesting (on-topic) conversations I had were about the non-programming aspects of working in software. I wanted to give a talk on that line. Prima facie I'm not the best place person to talk about diversity (white, male, etc), but, having been freelance since 2006, with four young children, and now slightly greying hair, I am in a position to talk about how to build a career in software development for the long-haul. Hiring in tech is massively ageist. I want to discuss strategies to handle that. My target audience is individual programmers (whether freelance or employed) as well as software managers, looking to build and retain a team. (The message for managers is simply that they need to facilitate their employees' careers. This seems obvious but it is worth bringing out.) The core point of my talk is around the idea that a career is very much a marathon rather than a sprint, and that it needs to be approached in that spirit. (Again, this may seem obvious but it is worth bringing out.) There are two aspects of this. The one is pace. That to work on software day-in, day-out for 10, 20, 30, 40 years (or more) we need to pace ourselves, to manage our reserves, and to have fun. The other is that there is noting to be scared of. That expertise which now may seem intimidating is, yes, available to us too. That with 5, 10, 15 years of continued effort we too (yes, us) can be as experienced as whomever, in the speciality we choose. I bring this out with three points. That we need to: Be disciplined: The key point is to keep going. We each need to find patterns that work for us and develop them into habits that we build into a routine. The great thing is it doesn't have to be 100 hour weeks. As long as we keep doing it, whatever we do builds up over time. Despite the impression to the contrary, time is on our side. Which leads to... Be prolific: Do lots, and put it out there. This one seems scary. "I'll never do as much as ..." — but it's an illusion. Do one thing. Put that out there. Do something else. Repeat. Again, the work builds up over time, and (seemingly) all of a sudden, you're in a position of being the expert. Finally... Be social: And I don't necessarily mean Facebook (unless Facebook is your thing). In whatever environment or medium suits you get out there meet people. (Stretch your comfort zones a bit here.) Share what you've done. Relish in what others have done. Be part of the community. Help build the community. All three of these are essential. As you get older — all the more as you get older — they allow you to build a sustainable career writing software. This tale is brought out with stories on finding work, and on choosing clients, and employers, financial planning and job security, on family and free-time, and on the importance self-care. It's part inspiration, part battle-plan.

uk: вхід без авторизації

name: Growing old gracefully: on being a career programmer.


Guten Morgen

uk: Комп'ютерні науки

uk: вхід без авторизації


Intro to Sprints

uk: Комп'ютерні науки

description: What on earth is a code sprint?

uk: вхід без авторизації


It's about time

uk: Комп'ютерні науки

description: Why is dealing with dates and time so difficult? Well, it's because time has a very sordid history. Join us on a deep dive into that history, and how that history affects the data modelling and APIs we use every day. Here's a fun experiment: Mention timezones within earshot of any experienced programmer. Now wait until the profanity stops. Handling dates and time is an incredibly common requirement in computer applications. That's hardly surprising - we all use computers to record when we did old things, track how long things take, and to plan when we're going to do things. So why is dealing with time so difficult? Well, it's because time has a very sordid history. What we even think of as time has changed. In this talk, you'll travel through time, and see the impact that two thousand years of history have had on our modern life. You'll be shown how all this wibbly-wobbly, timey-wimey history stuff affects the data modelling and APIs we use on a daily basis. This is going to take... some time.

uk: вхід без авторизації


It's not a bug, it's a bias

uk: Комп'ютерні науки

description: Product makers have a biased view of the world, and this translates to biased algorithms. How can we take this into account, and create a fairer world though fairer algorithms? Even though Apple's Siri came out with a built-in response to where to hide a body, it was incapable of pointing a user to an abortion clinic. How did an Artificial Assistant get iffy about abortion? And how can I stop my own biases from seeping into the products and services I create? In this talk, I explore our preconceptions about the nature of algorithms, and how users and makers influence them to model the world according to their perspective. I conclude the talk by proposing a change of mindset for product designers, to be more aware of our capacity to let our biases infuse our services, and to put in place tools to create more inclusive experiences for our clients.

uk: вхід без авторизації


Keynote: 23 Years Without A Proper Job

uk: Комп'ютерні науки

description: Ever wondered about being your own boss? Then this talk is for you. Good experience, bad experience: I’ve had some of both as a startup founder and freelancer in the 23 years after I left my last salaried job. Let me share them with you. Whether you love your job or hate it, at some time you’ve probably wondered what it would be like to work for your self. Maybe you’re working on a sideproject and wonder how you could make some money from it? Or maybe you have the idea for the next Facebook or Uber? To be a coder in today’s world of work is to have amazing opportunities to design the business life you want. You can work remotely; you can write books, or teach, or consult, with anyone anywhere. You can have a crazy idea on Friday and have it running by Monday. Design your architecture to use cloud computing, so your tiny team can scale up your huge ideas. Or keep it small, and just earn some extra money with a Wordpress plugin, or a training course. It has been 23 years since I last had a ‘real job’ and a regular income. I survived creating and running a company through the madness of the dotcom years. I made money from sideprojects, that I had started just for fun and for learning. I have freelanced without needing to use an agency to find the work. Listen to my stories and learn from my mistakes and successes.

uk: вхід без авторизації


Keynote: The naïve programmer

uk: Комп'ютерні науки

uk: вхід без авторизації


uk: Комп'ютерні науки

description: We’re heading into a future of delivery drones, driverless cars and 3D-printed “hoverboards” … With machines now able to perform many tasks better than humans, some people are going to be out of a job. But not software developers, right?! Could a computer generate the code you currently write for a living? In this talk, we’ll take a look at how technology is changing the work that people do, and think about the implications of that for our society. We'll then take a look at one of the many biologically inspired approaches to AI - Genetic Algorithms, and how they can be used to generate code given a description of the function that that code should perform, rather than having a software developer write it. Spoiler - you’re probably not out of a job, yet…

uk: вхід без авторизації

name: Keynote: Writing Code? Pfft... Evolve it Instead!


uk: Комп'ютерні науки

description: Mayer, Justin: Django Multi-Factor Authentication McLaughlin, Katie: Serialization formats are not toys Spielmann, Johannes: I hate CSV N. N.: Django for Managers: How to create a nice looking application in just two days Maloney, Curtis (Funkybob): Django Staticfiles

uk: вхід без авторизації

name: DjangoCon Europe 2018 - Lightning Talks I


uk: Комп'ютерні науки

description: N. N.: Recording Lectures: With Python and GStreamer Laat, Arne de: HiSPARC: High School Project Astrophysics Research and Cosmics Henschel, Lacey Williams: How to Propose a Conference Talk? Verhaegen, Leila: Making a clock in Python Peña, Lorenzo: MTPU - Quick recipe for creating a simple software as a service with user hierarchies that gracefully downcast based on the current tenant Hepper, Daniel: The hidden powers of Custom Django Path Converters

uk: вхід без авторизації

name: DjangoCon Europe 2018 - Lightning Talks II


uk: Комп'ютерні науки

description: Django ORM has lots of resources for making complex database queries and the documentation brings good examples on how to apply each one of them, but understanding how to orchestrate all of those resources on real-life projects may not be so simple. My goal with this talk is to show through examples how to combine some of the QuerySet Methods, Query Expressions and other optimization techniques to make the most of DB resources when processing information inside the code is not an option. When we start modelling an application, we don’t always know how it’s models will evolve and it may be even more difficult to foresee their behaviour when big amounts of data are stored in their respective tables. With tables getting bigger through the project’s life apparently harmless operations may become impossible to make. Thankfully, databases are already prepared for dealing with large amounts of data and resource consuming operations and Django’s ORM provides solutions for most of them. For this talk I’m going to build an example Django project, populate it’s tables with big enough datasets and formulate complex questions to demand the most on the ORM’s possibilities. For each question I’m writing at least one solution using the resources described in the QueryExpressions section of Django’s Docs to then analyse the SQL generated by it and the pros and cons between operational costs and code complexity. The following topics will be covered: - Using F() expressions for filtering, ordering and annotate operations - Using Max, Min, Avg with annotations - Compare Subquery expressions to queryset equivalents - Present the new Window functions for partitioned operations - Using Union queries

uk: вхід без авторизації

name: Making smarter queries with advanced ORM resources


On The Look-Out For Your Data

uk: Комп'ютерні науки

description: Do you have data in the database of your Django project? Do you want to find that needle in the haystack of your data? There are plenty options how you can achieve that. With various levels of complexity, confidence, and reliability. I'll give an insight into what the most common are nowadays. You're tasked with building a search for the project you're working on. But where do you start? What search implementation are you going to use? There's a sheer unlimited set of ways to implement "I'm looking for X in Y" out there. Elasticsearch, LIKE and ILIKE queries, MySQL's Fulltext Search, PostgreSQL's Fulltext Search, Solr, Whoosh, Xapian, to only name a few. I'll be looking at the most common ones and will be showing some basic implementation techniques. You should be familiar with Django in so much as that I'm not talking about how to create or update an object in a database. You should also have an idea of what database transactions are. The talk will feature some code snippets that I will provide in full, afterward.

uk: вхід без авторизації


uk: Комп'ютерні науки

description: In this talk you will hear about the importance of organizing conferences for school learners, how you can go about organizing one, what you need to do and what you need to avoid as you prepare the conference, how to engage with school teachers as a software developer, what the results of such conferences could bring out in our children and many more. The poor quality of the software developers in our community is increasing. On top of other factors, most of our learners are introduced or exposed to computing only in university. This has caused the quality of our software developers to drop. We wanted to change that by introducing programming clubs in high schools and then we decided that why not run a conference for them. That's how this idea came up.

uk: вхід без авторизації

name: Organizing Conferences For Learners: How we made it work in Namibia


ORM: The Sequel

uk: Комп'ютерні науки

description: This summer... a story of learning. She came from a different world, and must understand her new surrounds. Follow her on a journey of self discovery as she learns about... the Django ORM, via SQL. Django tutorials often use the perspective of a complete newcomer to Python and web development, and while they provide a good practical on-ramp for brand new developers, they are often not quite right for developers from other backgrounds. The common backbone of MVC development, no matter the base language, is the database and the language specifically for it's manipulation: Structured Query Language (SQL). But Django hides this behind it's amazing drawcard, the Object Relational Model (ORM). But how can a developer already familiar with SQL get a handle on the ORM? This talk endeavours to introduce the ORM using shared SQL and relational database concepts, showcasing the features the ORM uses to make database querying and manipulation a joy, rather than a burden, to the polyglot developer.

uk: вхід без авторизації


uk: Комп'ютерні науки

description: What to do and what not to do in order to collaborate remotely on Django projects without losing your mind Remote working and “smart working” is very much in fashion these days, but what does it entail for the daily routing of a distributed development team? We will talk about tools, the disputed use of email, Skype, Slack but more specifically about time management, what you can expect from yourself and from other members of the remote team. Is your company “remote-friendly” or rather “remote-first”? When it’s time to spend a few days in physical proximity with your colleagues? We will share some examples out of the experience of a distributed team actively working with Python and Django on a daily basis, and show how you can make it all work, if you work on it.

uk: вхід без авторизації

name: Out of Sight, Out of Mind: Survival tricks and tools for remote developers (especially Python and Django)


Physical Health offering

uk: Комп'ютерні науки

uk: вхід без авторизації


uk: Комп'ютерні науки

description: A new EU regulation comes into effect in the middle of this conference. Here is an overview of what is required and how you can use Django to comply. From 25 May 2018, anyone collecting personal data on European Union residents will have to follow a number of new rules, some of which are pretty far-reaching. The new rules are however simple enough to understand, and as professionals, getting on top of things like this is what we're being paid for. The regulation is called "Regulation (EU) 2016/679" and is commonly known as the "General Data Protection Regulation" or "GDPR". It has been around for a couple of years and comes into effect now. The previous regime (95/46/EC) was only an EU Directive, so the exact rules were implemented in the native laws of each EU Member State. The new regulation applies everywhere automatically, so it is a single set of rules for all of Europe, which is a good thing. Not everyone will be responsible for managing compliance, but I think every professional software developer should get to know this regulation. In the first half, I'll provide an overview of the parts of the regulation that are relevant for developers. In the second half, I'll look at the ways of complying using Django: what Django already does for you, how to make Django do more, and also (quickly) what sort of data protecting batteries might be useful Django to include going forward. I'll be around for the sprints if anyone is interested in working on this at a framework level.

uk: вхід без авторизації

name: Protecting Personal Data with Django (because it's the law)


uk: Комп'ютерні науки

description: In this talk, I’ll explain the fundamental problem representing deep hierarchies in relational databases. To address this problem, we can use a database design pattern, named Materialized Path Trees. Many data structures require a representation, where one parent node can have any arbitrary number of children. Inside relational databases, this typically is represented by a foreign key onto its own table. In Django’s ORM, we use models.ForeignKey('self', ...), to create this kind of recursive relationship. The major problem with this kind of representation is, that it doesn’t scale for deep trees. Whenever we have to traverse the tree from a given starting node, our code has to perform one database query per hierarchy level. To circumvent this, some database vendors implemented SQL dialects, to fetch a whole subtree with one query. Long time ago, Oracle for instance implemented 'CONNECT BY', which is proprietary and not part of the SQL standard. Nowadays, newer releases of most major database vendors implemented the 'WITH RECURSIVE' clause, which has been added to the SQL-99 standard. This allows us to build recursive queries. Fortunately there is a clever recipe to represent hierarchies in relational databases using standard SQL techniques, but without the mentioned scaling problem: Materialized Path Trees, discovered by Vadim Tropashko. Django’s ecosystem offers two libraries, which implement this design pattern: django-mptt and django-treebeard. I also would like to mention django-tree, which only works on Postgres, using their SQL extension mentioned before. In this talk I’ll explain the design patterns for Materialized Path Trees. Furthermore I’ll show the pros and cons of both libraries.

uk: вхід без авторизації

name: Representing Hierarchies in Relational Databases


uk: Комп'ютерні науки

description: AMO - https://addons.mozilla.org/ was originally written as a PHP web application, ported to Python / Django 1.1 in 2010, more or less maintained over time and only recently got much more traction because of Firefox Quantum and Mozilla's move to WebExtensions. The talk will show our approach to maintaining very old code, handling refactoring, adding new features as well as feature/code removal while slowly upgrading our way to a Python 3 and Django 2.0 ecosystem and why we chose that approach over a rewrite.

uk: вхід без авторизації

name: Slow Food Digests Better: Or how to maintain an ancient project without getting lost


Strategies to Edit Production Data

uk: Комп'ютерні науки

description: Editing data in a production database is sometimes necessary. However, mistakes in running these queries can be disastrous. In this talk, you will learn strategies for making edits to a production database with examples from a Python stack that increase safety and auditability. At some point, we all find ourselves at a SQL prompt making edits to the production database. We know it’s a bad practice and we always intend to put in place safer infrastructure before we need to do it again — what does a better system actually look like? This talk progresses through 5 strategies for teams using a Python stack to do SQL writes against a database, to achieve increasing safety and auditability: (1) Develop a process for raw SQL edits (2) Run scripts locally (3) Run scripts on an existing server (4) Use a task runner (5) Build a Script Runner service We’ll talk about the pros and cons of each strategy and help you determine which one is right for your specific needs. By the end of this talk you’ll be ready to start upgrading your infrastructure for making changes to your production database safely!

uk: вхід без авторизації


Taking Channels Async

uk: Комп'ютерні науки

description: We take a look at Channels 2.0 and the changes it brings by going fully async, examining not only why the change makes things better, but also how we've managed to bridge between Django's synchronous world and the async world, and what the future might hold for Django and Channels. The Channels project has taken a major turn with version 2.0, embracing Python's async functionality and building applications around an async event loop rather than worker processes. But why the big change? And what does it mean for Django? We'll look at the progress Channels is making in turning more of the request/response cycle into native async code - how far can we get down the stack before making APIs async becomes hard? Can we make it as far as the ORM? How do we bridge between Django's synchronous world and the async world when we do reach that boundary? We also take a look at how it's changed both Channels consumers, opening up the possibility of mixing async calls in with your synchronous code, and how it's changed what the ASGI spec looks like and what that might mean for adoption. And, finally, we'll look what's next for Django and Channels, and maybe how it will affect the Python web world as a whole.

uk: вхід без авторизації


uk: Комп'ютерні науки

description: If your hometown can benefit from a free, friendly environment where women can learn to program, it’s time to bring Django Girls to your city. You’ll learn what it takes to run a successful event while hearing tales from the trenches from a seasoned Django Girls organizer. Ever heard of Django Girls and thought, “Gee, if only that would come to my city, I’d love to be involved!” Django Girls is a fantastic, free weekend-long workshop that teaches women how to code through a comprehensive, Django-based tutorial. Encouraging more women to strive for programming careers benefits the tech community at large, and spearheading a Django Girls event in your city is a positive, actionable way for you to personally become involved. But I’m a Developer - Not an Event Planner! So you’re sold that Django Girls is a great idea, but maybe you’re not confident you can execute on it. You don’t need a degree in event planning to plan a great event - developers specialize in problem solving, and running a workshop involves just that. All it takes is a little passion. And sponsors. And a great venue with impeccable WiFi. And a team full of mentors, volunteers and organizers dedicated willing to follow you into the battlefield… Okay, okay. It’s a lot of hard work, but it’s incredibly rewarding to yourself and your community, and I’m ready to share my years of wisdom to help your event run smoothly. Learn From My Mistakes From avoiding volunteer burnout to preventing mutiny from your attendees because the caterer was a flop, I’ll share my insights on what’s worked and what hasn’t over the past three years - and how I intend to improve upon the past two years to make my next event my best yet. I’ll cover logistics, and how to make the event memorable and enjoyable for everyone involved, including recruiting attendees, mentors, sponsors, and other organizers; how to find a great location; what small details are illogically important; and how to communicate effectively within your role as you transform from developer into a community leader.

uk: вхід без авторизації

name: Want More Women in Tech? Start with Django Girls


NDA: NVMe CAM attachment

uk: Комп'ютерні науки

description: A walk through of CAM, its data flows, code flows and how to write drivers for it will be presented. CAM has been in the FreeBSD system for 17 years, yet it remains one of the more difficult subsystems to approach. It started out in a parallel SCSI world on systems with 16MB doing maybe 20 I/Os per second (iops) and a few disks. It has evolve to cope with systems with dozens of solid state drives that push tens of thousands of iops poised to move to hundreds of thousand. Towards that end, the author has written a CAM front end to the NVMe driver. This talk will walk through the new nvme front end. To understand the work, however, you need to understand CAM and how it fits together. The talk will focus on providing a tutorial for CAM. Starting with a brief overview of the FreeBSD I/O stack, the tutorial will focus on how CAM's connections to the system. I/O will be traced trough CAM, from its "periph" drivers that connect to the GEOM system to consume I/O from the upper layers, down through the transport (XPT) layer to the host interface modules (SIMs) which send the I/O requests to the drives. In addition to the simple data flows through CAM, various auxiliary details of CAM will be discussed. From a walk through of how CAM enumerates devices and how it divides those roles, to how the SIM drivers are created by the "new bus" drivers and how they interact with the BUS DMA system, these little discussed auxiliary details will be presented. Details of the new NVMe CAM front end will also be presented along side the more general details of CAM. Accompanying the talk will be a paper documenting the connections within CAM in more detail than the one hour format of the talk will allow. The author hopes to also complete man pages for all the CAM APIs before BSDcan, which this paper will cross reference.

uk: вхід без авторизації


Amateur Radio and SDR: BoF

uk: Комп'ютерні науки

description: Amateur radio users and those curious about radio and SDR meet and discuss hardware, software, triumphs and challenges with pursuing the hobby on BSD. Come talk all things radio!

uk: вхід без авторизації


uk: Комп'ютерні науки

description: This talk introduces an implementation of the OpenFlow protocol for OpenBSD – a protocol from the SDN world that allows to control data planes of switches or routers remotely. switchd(8) uniquely combines a simple controller and a virtual switch in a simple, secure, and privilege-separated daemon. OpenBSD's in-kernel bridge(4) driver has been extended to support the OpenFlow protocol natively, so switchd(8) implements a virtual switch by running as a controller on the local system. With the MP network stack overhaul it became obvious that OpenBSD's bridge(4) needs some updates. It wasn’t built for a MP networking stack and before anyone talked about “virtual switches”, flow tables, or split data and control planes for such things. People were looking into supporting “Open vSwitch” (OVS), but the costs of adding the complex kernel layer of OVS to OpenBSD was just too high and with questionable licensing. So we were reconsidering further modernizing bridge(4). I came up with a simple idea: we don’t need it or another virtual switch, we just need a controller to offload the “control plane”. OpenBSD is already doing bridging, VXLANs, VLANs, STP, routing domains and many other things in the kernel, so why should we move it to yet another complex daemon? All we need is a controller daemon and a well-defined, pluggable interface to handle the forwarding decisions from bridge(4) in the daemon and the Cloud: OpenFlow. Fortunately, I had started such a simple, privilege separated OpenFlow controller some time ago, but I have never released it because it wasn’t complete, not comparable to any of the “big” controllers, and I didn’t have an actual use case in OpenBSD for it. It only provided a simple learning switch that works with Open vSwitch or OpenFlow-enabled HP (HPE) switches. I also didn’t find a satisfying name for it, as “OpenFlow™” is an open protocol but also a very strict trademark and calling it openflowd would violate their trademark policy. I don’t use funny or pet names for software, and OpenWolf or sdnflowd simply didn’t work, but now I could simply rename it to “switchd(8)”. Following the idea of using the OpenFlow protocol itself as our new kernel interface, Yasuoka@ and Goda@ worked on “bridgeofp” and managed to get it working as a simple layer 2 switch. We’ll need it for many things, including the distributed virtual switching for vmd(8) and to facilitate OpenBSD in the SDN.

uk: вхід без авторизації

name: SWITCHD: An OpenFlow implementation for OpenBSD


uk: Комп'ютерні науки

description: Launched with the aim of disrupting the Linux monoculture in the Tor anonymity network, The Tor BSD Diversity Project (TDP) continues the quest to extend a little bit of *BSD sanity into the privacy-enhancing technologies (PETs) scene. The Tor BSD Diversity Project (TDP) formally began in the early spring of 2015. This presentation will start with the larger context of the PETs scene, making the case for TDP's relevance, while illustrating our approach and contributions. Developing Tor Browser for OpenBSD remains TDP's flagship project, with seven releases to date. TDP also expanded its focus, with smaller projects such as "Porting PETs" and "Quick-and-Dirty Statistics" to illustrate the lack of Tor network diversity not to mention a number of other efforts such as recruiting New York Internet to contribute two high-bandwidth Tor relays on BSDs. While it's hard to directly attribute to TDP, the chatter around PETs in the BSDs increased significantly. From the porting of PETs like the Tor XMPP client Ricochet for FreeBSD and attempts to implement OpenBSD's pledge(2) to the Tor daemon, to a significant increase in the number of relays running a BSD on the Tor network, TDP imagines that somehow its presence began to fulfill its goals.

uk: вхід без авторизації

name: Beyond Monocultures: the BSDs in Torland


uk: Комп'ютерні науки

description: Biidirectional Forwarding Detection (BFD) is a protocol that allows detecting faults in links or routes. This is similar to GRE keep-alives, but is actually supported on real routers. Contrary to traditional link-state detection, BFD works on the next-hop IP address; so one can detect failures of some peers that do not affect the link state. Internet links fail. This is a truism as old as Internet links. When a link fails, traffic gets dropped until the failure is detected and traffic can be re-routed. Detection of failures can be quite tricky however, since they are not always directly visible. Most systems use link state or a form of keep-alives for detection of failures. Link state detection does not help when there are active devices between a router and the other system, such as a switch or long distance links which use MPLS. The in-protocol BGP timers can also be quite long (a common default is 90 seconds) which is a lot of traffic when one are sending 10Gbps or even faster rates. BFD is a new protocol that exists outside of existing routing protocols, but can communicate the status to all protocols. This allows for a single keep-alive to detect the health of a single link, without having to depend on a keep-alive in each and every protocol being used. As this is part of the "parent" interface, this does not introduce another layer in the network configuration. And since the link-state is only per next-hop IP, one can mix and match BFD and non-BFD neighbours on the same interface. This is extremely useful for routers connected to an Internet Exchange Point, which can have hundreds of peers spread over 10 or more physical locations. A clever description of this is described in a draft RFC, which introduces automagic configuration of BFD between parties allowing for stronger resilience when there are many potential neighbouring networks without the overhead of manual configuration. I will be discussing of the implementation of the BFD protocol for OpenBSD, problems discovered in both the protocol and network stack, use cases and production experience.

uk: вхід без авторизації

name: Bidirectional Forwarding Detection (BFD) implementation and support in OpenBSD: Or: A new protocol actually /did/ improve our routing.


uk: Комп'ютерні науки

description: FreeBSD has supported disk encryption with GBDE and GELI since 2002 and 2005 respectively. However, booting the system required storing the loader and kernel unencrypted so that the requisite GEOM module could be loaded to handle decryption. This became a significantly larger stumbling block with the introduction of ZFS, as having multiple separate partitions detracts from the advantages of ZFS, and also causes headaches when upgrading the operating system. With the growing popularity of ZFS Boot Environments, a solution was needed that allowed the kernel and loader to remain part of the primary file system, even if it was encrypted. This paper provides an overview of the design of the GELI enabled boot code and loader, as well as the numerous challenges encountered during their development. A walk through the tale of woe that was implementing support for GELI in the FreeBSD bootcode and loader. Hear the story of a very junior developer persisting through countless complications and roadblocks to finally arrive at working code. Learn just how complicated it is to boot a computer, and how much worse it can get. In the end, we are left with working ZFS Boot Environments, even with fully encrypted pools. Overview: The x86 boot process MBR GPT Investigation Stage Initial Implementation Roadblocks Dealing with UFS Overcoming Limits Adding More Encryption Password Caching

uk: вхід без авторизації

name: Booting from Encrypted Disks on FreeBSD: GELI in the boot code


BSDCan PGP Key Signing Party

uk: Комп'ютерні науки

description: We will be having a PGP Key Signing Party at BSDCan 2016. During the Event We will distribute printed copies of the key list to everyone participating. Everyone will verify the fingerprint of their keys. Everyone will identify every other participant. Afterwards Go home with the list of keys you have verified and sign the key.

uk: вхід без авторизації


uk: Комп'ютерні науки

description: Capsicum is a sandbox framework in the FreeBSD operating systems and it's based on the capabilities concept. Programs running in a sandbox don't have access to any global namespaces. For some applications this limitation could be too restraining. So how developers handle those exceptions with Capsicum? Capsicum is a lightweight OS capability and sandbox framework implementing a hybrid capability system model. As mentioned before after entering the sandbox we don’t have access to any global namespaces (such as path names, so we can’t open files in a sandbox). The main idea behind Casper is to replace standard libc functions (those which are using global namespaces) with wrappers which allow for using those functions in sandboxed programs in secure and controlled way. When Casper was first implemented it was a daemon in operating system (called casperd(8)). But this implementation created a lot of problems because zygotes inherits all capabilities from the daemon not from the process which will use it. Author recent work was to change Casper architecture. The best way will be forking zygotes from the original process which run it. This is how libcasper was created. The implementation was possible thanks to mechanism like pdfork(2), which allows us to fork inside the other process but without being afraid that it will react with standard wait(2) functions. The talk will cover Capsicum architecture basics and compare it to well known security frameworks such as seccomp and to new models like pledge. The main part of the talk will be presentation of Casper and its architecture. Old one in which Casper is a demon and new one in which we transformed it into a library.

uk: вхід без авторизації

name: Capsicum and Casper: fairy tale about solving security problems


uk: Комп'ютерні науки

description: The Self-Monitoring, Analysis and Reporting Technology or S.M.A.R.T. is a interface implemented by manufacturers of storage devices to present device “health” information to the OS. This information can include device identification and configuration information, service hours, temperature, bad block reallocation counts, SSD endurance remaining, plus vendor-specific attributes. These attributes are commonly accessed from various operating systems using the “smartmontools” project and specifically the smartctl(8) command. While widespread in its use, the smartmontools project suffers from a number of limitations, the greatest of which is a license that prevents its inclusion in BSD operating systems. The diskctl(8) project aims to address the licensing and output formatting limitations of “smartmontools” and provide a user-friendly framework for new output formatting syntaxes. In addition, diskctl(8) aims to provide device-level command communication and address issues unique to virtualized environments. The Self-Monitoring, Analysis and Reporting Technology or S.M.A.R.T. is an industry-standard interface implemented by manufacturers of hard disk, solid state drive or SSD, and similar storage devices to present device “health” information to the controlling operating system. This information can include device identification and configuration information, service hours, temperature, bad block reallocation counts, SSD endurance remaining, plus vendor-specific attributes. These attributes are commonly accessed from various operating systems using the “smartmontools” project and specifically the smartctl(8) command. While widespread in its use, the smartmontools project does not feature a license that is suitable for inclusion in BSD Unix operating systems, does not support nVME devices, and is limited in its output formatting abilities. The diskctl(8) project aims to address the licensing and output formatting limitations of “smartmontools” and provide a user-friendly framework for new output formatting syntaxes. In addition, diskctl(8) aims to provide an interface to common ATA management commands such as IDENTIFY, plus the acoustic and power management series of commands. Finally, the diskctl(8) project project will explore the possibility of VirtIO AHCI S.M.A.R.T. and underlying zpool status pass-through for virtual machine disk devices and other opportunities relating to virtualized storage. The Request For Comments or RFC strategy of the diskctl(8) will allow a team of subject matter experts including David Gwynne of OpenBSD and Allan Jude of FreeBSD to define the problem that diskctl(8) aims to address and reach out to their respective communities for input and collaboration on its scope, features and implementation. The diskctl(8) project will also employ a documentation-driven strategy that will define the diskctl(8) manual page as its first deliverable, prior to any accompanying source code.

uk: вхід без авторизації

name: diskctl: A permissively-licensed S.M.A.R.T. and raw disk command framework


uk: Комп'ютерні науки

uk: вхід без авторизації

name: Dodging Raindrops: Escaping the Public Cloud: A user story od De-Google-ication Using FreeBSD and Other Open Source Software


uk: Комп'ютерні науки

description: I've been working on a new system call ABI and the required runtime support for a C variant with spacial memory safety. Along the way I've encountered lots of interesting bits and pieces required to implement a simple C "Hello, World" program. I found the process fascinating so and this talk brings all that knowledge together in one place. The first example in the classic "The C Programming Language" by Kernighan and Ritchie is in fact a remarkably complete test of the C programming language. This talk provides a guided tour a slightly more complex program where printf() is called with multiple arguments. Along the way from the initial processes' call to exec() to the final _exit(), we'll tour the program loading code in the kernel and the dynamic linker, the basics of system call implementation, the implementation of the memory allocator, and of course printf(). We'll also touch on localization and a little on threading support. Where appropriate, I'll discuss portions of the system that need changing to accommodate memory safe versions of C like the version we are developing for our CHERI CPU. This talk will assume some knowledge of a language with C-like syntax (C, C++, Java, and PHP should all be fine).

uk: вхід без авторизації

name: Everything You Always Wanted to Know About "Hello, World"*: (*But Were Afraid To Ask)


uk: Комп'ютерні науки

description: This talk will discuss OARnet's (regional nonprofit ISP) ongoing transition of 100+ servers providing network services and management infrastructure from FreeBSD 8 to 10 and the work done to make this possible. The transition had two major goals: Integration of modern changes and updates with legacy modifications focused on minimizing custom work; and raising the already high standards for uptime and reliability of services our customers have come to expect. It was very important for this transition to find the right balance between progress and tried and tested designs.This transition had to find solutions for limited physical access limiting install/provisioning options, limited personnel(1 person), all software being compiled from source by hand for legacy reasons and more. All of these were overcome with careful engineering and integration of parts of FreeBSD, PC-SysInstall for installs with modifications for provisioning, Life-Preserver for backups, ZFS filesystems, and many more technologies. I will be discussing how we (OARnet a regional nonprofit ISP) made the transition from FreeBSD 8 to FreeBSD 10 which involved touching many systems including the install process(PC-SysInstall), system provisioning(custom), backups(Life-Preserver),and others. The transition FreeBSD 8 to FreeBSD 10 was accomplished by first identifying a mix of past decisions that had been made starting in the freebsd 4 era and making stops at 6 and 8. Then sorting the decisions made and carried forward into their underpinnings which mostly fell into 4 categories: inspired designs obsoleted technical issues personal preferences coin flips These decisions were combined with our use case for servers and restrictions from various sources especially time to come up with a FreeBSD 10 infrastructure that was easily maintainable and superbly stable. This is really in the end about my discovery of the lesson that many are already aware of which is "your problems are not just your own when it comes to system administration". Simply said most problems a sysadmin face have solutions that are already out there and that there are usually many interested parties if there isn't a shared solution . I believe this is one of the great strength of open source software. This talk is also my attempt to share some of my own/OARnet's solutions in return and as thanks for all the great ones I’ve gotten from the community.

uk: вхід без авторизації

name: FreeBSD 8 to 10: One ISP's journey forward and backward in time


uk: Комп'ютерні науки

description: Aduka-II is a remotely operated hexapod robot powered by BeagleBone black and FreeBSD that offers server/client connection over WiFi to control its directions to be used as a supervisory system. Hexapod robots are terrestrial mobile robots that have six legs for locomotion; they are morphologically resembling insects, arthropods with three pairs of legs. Building a mobile robot involves a number of peculiarities, it is necessary to deal with guidance position errors, problems with the batteries, programming errors, choice of engines and materials for frame. Therefore the right choice of an operational system can make the difference during the project. This talk is about a remotely operated hexapod robot powered by BeagleBone black and FreeBSD that offers server/client connection over WiFi to control its directions to be used as a supervisory system. The hardware platform is composed by a Beaglebone Black (BBB) and a dedicated Pulse Width Modulation (PWM) demultiplexer board. Most of the work behind controlling the pod and its sensors also contributed to new code added to the FreeBSD's base system to ARMv6 with the benefits granted by Flattened Device Trees (FDT). The main idea of this talk is to show the possibilities of developing a remotely operated hexapod robot (Aduka-II) and its control system out of many researchers' comfort zone.

uk: вхід без авторизації

name: FreeBSD, BeagleBone Black and Robotics: Authorities empowered to control, support and guide endeavours the academic research behind the modeling of Aduka-II, a hexapod robot with 12 degrees of freedom


uk: Комп'ютерні науки

description: Rod Grimes, involved with early FreeBSD, will give a brief history of the early days. Rod will talk about the time from the pre-patch-kit days up to the 2.x releases, with some mysterious history gleaned from the repo logs.

uk: вхід без авторизації

name: FreeBSD: A brief history of the early days


FreeBSD and GDB

uk: Комп'ютерні науки

description: This talk will focus on FreeBSD-specific details the gdb debugger in the devel/gdb port. In the past year, several changes have been added to devel/gdb (many of them upstreamed) including support for fork following and a new thread target. In addition, the kgdb kernel debugger has been ported to GDB 7.x including support for cross-debugging crashdumps. The talk will cover both the use of these recent changes as well as how they were implemented.

uk: вхід без авторизації


Wie geht "Überall-Lernen"?

uk: Комп'ютерні науки

@language: de

uk: вхід без авторизації

name: Moderation Skorupka, Sascha (Leitung, Regie, Redaktion)

Leibniz Universität Hannover (LUH)

addressCountry: DE

addressLocality: Hanover

addressRegion: Lower Saxony


uk: Комп'ютерні науки

description: The lecture describes the FreeBSD operating system port for the Cavium ThunderX CN88XX System on a Chip. ThunderX is a newly introduced, ARM64 (ARMv8) SoC designed for the high performance and server markets. It is currently the only one in the ARM world to incorporate up to 96 CPU cores in the system along with the whole technology to make it possible. ThunderX is up to date with the latest trends in the computer architecture industry, including those that are relatively new to FreeBSD like SR-IOV (Single Root I/O Virtualization) or completely unique, such as ARM GICv3 and ITS). The main focus of this article is to provide a bottom-up overview of how the FreeBSD platform support for ThunderX was implemented and what are the benefits and pitfalls of the newly introduced ARMv8 technology in terms of the OS development. The paper also describes the key components of the ThunderX system and explains, how they were supported in FreeBSD. Finally, possible fields of further improvements are pointed out briefly.

uk: вхід без авторизації

name: FreeBSD on Cavium ThunderX System on a Chip


uk: Комп'ютерні науки

description: We will discuss ongoing work, and ideas for improvements to, the tool chain in the FreeBSD base system.

uk: вхід без авторизації

name: FreeBSD Developer Summit: Toolchain Working Group


uk: Комп'ютерні науки

description: This talk provides a taxonomy of filesystem and storage development from 1979 to the present with the BSD Fast Filesystem as its focus. It describes the early performance work done by increasing the disk block size and by being aware of the disk geometry and using that knowledge to optimize rotational layout. With the abstraction of the geometry in the late 1980's and the ability of the hardware to cache and handle multiple requests, filesystems performance ceased trying to track geometry and instead sought to maximize performance by doing contiguous file layout. Small file performance was optimized through the use of techniques such as journaling and soft updates. By the late 1990's, filesystems had to be redesigned to handle the ever growing disk capacities. The addition of snapshots allowed for faster and more frequent backups. Multi-processing support got added to utilize all the CPUs found in the increasingly ubiquitous multi-core processors. The increasingly harsh environment of the Internet required greater data protection provided by access-control lists and mandatory-access controls. The talk concludes with a discussion of the addition of metadata optimization.

uk: вхід без авторизації

name: A Brief History of the BSD Fast Filesystem


uk: Комп'ютерні науки

description: OpenBSD 5.9 will include a native implementation of Xen PVHVM drivers. It was written from scratch to facilitate simplicity and maintainability. One of major goals of this effort is to run OpenBSD images in the Amazon cloud. Xen virtual machine monitor provides two types of guest hosting depending on the underlying hardware: paravirtualized and hardware assisted virtualization mode when a CPU with virtualization extensions (AMD-V or Intel VT-x) is used. At the same time guests running in the hardware assisted virtualization mode are not restricted access to the paravirtualized facilities via the hypercall interface normally used by the paravirtualized instances. We will explore what facilities are provided and how an HVM guest can combine emulated PCI device tree and interfaces provided via paravirtualization on the example of an OpenBSD PVHVM driver implementation.

uk: вхід без авторизації

name: Implementation of Xen PVHVM drivers in OpenBSD


uk: Комп'ютерні науки

description: There is recently a lot of work going on on FreeBSD's version of PF. Does it perform better? Does it contain bugs? How does it compare to other implementations of PF? At my $WORK I was given a wonderful opportunity to use FreeBSD as pf-based loadbalancer. Reality was not matching the expectations especially when faced with what the Internet is throwing at us. We have 38 LoadBalancers running FreeBSD, each handles up to 600k states under normal conditions with a few thousand rules. DDoS attacks forced me to review not only the ruleset, but also the code. There was much place for improvement of both. Also the latest development of multithreaded pf in FreeBSD brought light and hope for better performance under harsh conditions. But how does it really perform? Topics covered: - How my $WORK uses PF and FreeBSD as its choice for LoadBalancing. - Short introduction on what a DoS and DDoS attacks are. - How PF fails (or rather failed before patching) to handle them. - What can be improved, what was already improved. Both in ruleset and in code. - How FreeBSD's 10 "multithreaded" PF is better in handling such attacks. - Comparison of performance and bugs/features between implementations of PF in different *BSD operating systems, especially under attacks.

uk: вхід без авторизації

name: Improving PF's performance and reliability.: Lessons learned from bashing pf with DDoS attacks and other malicious traffic.


uk: Комп'ютерні науки

description: The FreeBSD build has largely gone unchanged in the past 20 years. There is a 'buildworld' with multiple redundant phases that bootstrap their way to building everything. This presentation will go over recent improvements and planned work. The FreeBSD build has mostly seen small incremental improvements over the years and a lot of bitrot. Not many people are active today that understand all of the pieces involved in the build. While some recent work is moving towards a drastically new build, much of the work is also benefiting the historical buildworld which most people are used to and is likely to prevail. The ability to build a subset of the tree is a large goal of this effort since it is a big productivity loss for developers. Improving the speed of buildworld is being done while working towards the new build goals. Recent improvements to be covered: * External toolchains. * More parallelization of buildworld and bsd.subdir.mk. * FASTDEPEND: Generating dependencies at compile time with GCC 3.0 flags rather than pre-processing files before compiling them and then pre-processing them again. This brings a 16% buildworld improvement and 35% to buildkernel. * Removing the need for 'make depend'. * CCACHEBUILD: Built-in ccache support. This brings up to 65% incremental build time improvement when combined with FASTDEPEND. * LIBADD and its improvements. * DIRDEPSBUILD (Presented by Simon Gerraty in 2014 as "meta mode") improvements, which bring reliable sub-directory builds. * Incremental build fixes for stealth dependencies. * WITHSYSTEMCOMPILER: Skipping building clang sometimes * WITHMETAMODE: reliable incremental buildworld Planned work to be covered: * Adding more build-time assertions to ensure the framework is used properly, such as was done with great success in Ports. * Library over/under-link testing. * Building clang once for make universe * Reducing duplicated dependency logic and redundant phases in buildworld. * Foreign building, such as from OSX or Linux. * Ports cross-building without QEMU, as it is not always feasible to use it.

uk: вхід без авторизації

name: Improving the FreeBSD Build: Making it faster, more parallelized, smarter, cross-compilable, and more easily maintained


Improving the freebsd Translation Tools

uk: Комп'ютерні науки

description: Translation of FreeBSD’s English documentation into other languages is extremely important to users and the FreeBSD project itself. The old methods used to translate FreeBSD documentation are very labor-intensive. Existing translators have difficulty keeping translations up to date, new translators are discouraged by the depth of expertise required to translate, and even writers working on the English original documents must take extra steps to accommodate translations. The gettext PO translation system automates much of the work and provides new abilities to make translation easier and faster, to share the work with other members of a translation team, and to reuse previous work. The PO translation tools have now been implemented for translating FreeBSD books and articles and this new method has begun to revitalize our translation efforts. Here we describe the benefits of translation, the difficulties with the old method, the benefits of the new system, and some potential challenges and possibilities for the future.

uk: вхід без авторизації


uk: Комп'ютерні науки

description:
We propose a JSON-based protocol for kernel subsystems configuration that overcomes some limitations of existing configuration methods, such as their ad-hoc-ness, or their lack of atomicity. We illustrate the current preliminary implementation of this configuration mechanism in the netmap subsystem and discuss some possible extensions. The kernel contains a lot of subsystems that need to be con*gured, typically by setting key/value pairs. Moreover, sometimes the user may dynamically create new kernel entities (such as tap devices, bridges, virtual machines, . . . ) each requiring its own set of parameters, both at creation time and during its lifetime. These new entities also need unique names, so that they may be referenced afterwards and maybe connected together (e.g., a tap to a bridge). In the netmap subsystem, for example, we need a way to create memory areas containing preallocated buers, and we want to specify the number and size of such buffers, and possibly other options such as the use of huge pages, or the selection of a NUMA node. Once a memory area has been created, we want to bind selected netmap ports to it, e.g., to isolate ports passed through to virtual machines, or ports used by independent applications or users. To do this comfortably and reliably, we would like to specify all the parameters atomically at creation and bind time. Current solutions to these kind of problems either involve ad-hoc primitives (e.g., ioctl()) and tools to call them, or try to use more general mechanisms such as the sysctl interface or a pseudo-lesystem. We think that general mechanisms are preferable, since the in-kernel code may be reused and the user does not need to learn new tools. Unfortunately, neither sysctls, nor pseudo-lesystems have a natural way to express atomicity: each sysctl entry or pseudo-*le write and read operation is independent from all others. Several concurrent scripts that need to create and manipulate similar entities may interfere with each other, unless particular care is taken. We propose to use an (extended) JSON-based protocol for kernel subsystems conguration. Users may write a JSON specication to a special device; if the device is kept open, they may also read a JSON reply from the kernel. All actions specifyied between the initial open() and a following read() (or close()) are executed atomically by the kernel. The JSON input refers to kernel "objects", organized in a hierarchy, and their properties. E.g.,
{ "netmap": { "mem": { "1": { "buffers": 100000, "size": 2048 }}}}
 may be used to (atomically) set the number of buers and their size in the already existing netmap memory area with ID 1. Extended syntax is used to inspect, rather than set, values:
{ "netmap": { "mem": { "1": { "free-buffers": ? }}}}
 By writing this request to the special device, and then reading from it, one would obtain something like:
{ "netmap": { "mem": { "1": { "free-buffers": 531 }}}}
 Another extension to the syntax allows for the creation of new objects and symbolic manipulation of their automatically assigned unique identiers:
 { "netmap": { "mem": { &X: { "buffers": 100000, "size": 2048 }}} "port": { "em0" : { "mem": X } } } }
 This will atomically create a new memory area with 100000 bu*ers of 2048 bytes, and bind port em0 to it. We have implemented a tiny JSON parser and most of the above features for the conguration of the netmap subsystem. The JSON parser is about 700 lines of code (including comments) and uses a compact representation for the parsed objects. We have chosen JSON because its object syntax naturally relates to the in-kernel objects, and because of the extensive availability of userspace libraries and tools that parse and output JSON. We are nonetheless aware that JSON, while certainly more human-friendly than XML, is still a terribly annoying syntax for interactive command line usage. For this reason, our parser accepts some syntax extensions that allow, in most cases, avoid unnecessary quotes and curly braces. E.g., the first example above may also be written as
netmap.mem.1: { buffers: 100000, size: 2048 }
 Note, fi*nally, that the hierarchical nature of the parsing allows for incremental development: subsystems may adopt our proposal one at a time, without interference with other subsystems.

uk: вхід без авторизації

name: JSON-based configuration of kernel subsystems