1. Реляционная модель данных
2. Проектирование баз данных
3. Работа с СУБД в Python
4. Работа с СУБД в Django
5. Понятие ORM, модели Django
6. Описание таблиц и связей в модели Django
7. Типы полей в моделях
12 - Web-технологии. Django моделиRoman Brovko1. Создание и изменение объектов
2. Загрузка данных из базы
3. QuerySet
4. ModelManagers
5. Расширение ModelManagers
6. Миграции баз данных
10 - Web-технологии. MVC фреймворки (продолжение)Roman Brovko1. Контроллеры в Django
2. Объекты HttpRequest и HttpResponse
3. Получение GET и POST параметров
4. Работа с HTTP заголовками в Django
5. Декораторы
6. Шаблонизация в Django
7. Наследование шаблонов
8. Context processors
Лекция #7. Django ORMЯковенко КириллWeb-программирование
Лекция #7. Django ORM
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
Суперсилы Chrome developer tools2ГИС ТехнологииВ своей работе мы постоянно используем инструменты, призванные облегчить нам жизнь. Но как хорошо мы ими на самом деле владеем? И почему мы пренебрегаем их суперсилами? Например, Chrome DevTools — это не только отладчик и инспектор HTML. Но когда у нас в руках молоток, кругом мерещатся гвозди. Десятки мегабайт и процентов загрузки процессора на вкладку браузера — верный признак того, что пора учиться пользоваться микроскопом.
Роман предложит освоить что-то посложнее молотка и расскажет о том, какую реальную пользу можно получить от профилирования, как найти в огромном отчёте проблему с кодом и что лучше — написать в коде десяток console.log или async debug.
Mongo db aggregationAccepticPrerared by: Igor Wizma, mongoDB Certified Engineer.
Summary:
What is Aggregation Framework?
Aggregation operators
Sets of aggregation operators
Samples
Analogy with SQL-grouping functions (GROUP BY)
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"YandexАлексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Я.Субботник в Челябинске в рамках конференции UWDC
О докладе:
Все, что вы хотели узнать про одностраничное ajax-приложение Яндекс.Почта, но боялись спросить. Изнанка фронтенда, загрузка данных, обновление страниц и взаимодействие с пользователями без регистрации, без смс. Бонус-трек: как работают сторонние приложения в рамках одной платформы.
16 - Web-технологии. Технология AJAXRoman Brovko1. AJAX на стороне клиента
2. AJAX запросы с использованием jQuery
3. Передача HTML и JSON в AJAX запросах
4. Особенности контроллеров для AJAX
5. Cross Origin Resource Sharing
Суперсилы Chrome developer tools2ГИС ТехнологииВ своей работе мы постоянно используем инструменты, призванные облегчить нам жизнь. Но как хорошо мы ими на самом деле владеем? И почему мы пренебрегаем их суперсилами? Например, Chrome DevTools — это не только отладчик и инспектор HTML. Но когда у нас в руках молоток, кругом мерещатся гвозди. Десятки мегабайт и процентов загрузки процессора на вкладку браузера — верный признак того, что пора учиться пользоваться микроскопом.
Роман предложит освоить что-то посложнее молотка и расскажет о том, какую реальную пользу можно получить от профилирования, как найти в огромном отчёте проблему с кодом и что лучше — написать в коде десяток console.log или async debug.
Mongo db aggregationAccepticPrerared by: Igor Wizma, mongoDB Certified Engineer.
Summary:
What is Aggregation Framework?
Aggregation operators
Sets of aggregation operators
Samples
Analogy with SQL-grouping functions (GROUP BY)
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"YandexАлексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Я.Субботник в Челябинске в рамках конференции UWDC
О докладе:
Все, что вы хотели узнать про одностраничное ajax-приложение Яндекс.Почта, но боялись спросить. Изнанка фронтенда, загрузка данных, обновление страниц и взаимодействие с пользователями без регистрации, без смс. Бонус-трек: как работают сторонние приложения в рамках одной платформы.
16 - Web-технологии. Технология AJAXRoman Brovko1. AJAX на стороне клиента
2. AJAX запросы с использованием jQuery
3. Передача HTML и JSON в AJAX запросах
4. Особенности контроллеров для AJAX
5. Cross Origin Resource Sharing
14 - Web-технологии. Обработка формRoman Brovko1. GET и POST формы
2. Общий сценарий обработки
3. Перенаправления в HTTP
4. Описание форм в Django
5. Типы полей в формах Django
6. Валидация данных
7. Использование форм в контроллерах и шаблонах
8. CSRF
01 - Web-технологии. Архитектура Web приложенийRoman Brovko1. Понятие URL и документа
2. Виды документов: HTML, CSS, JS, JSON.
3. Абсолютные и относительные URL
4. Правила разрешения URL-ов
5. Гиперссылки
6. Клиент-серверная архитектура
07 - Web-технологии. Web-сервераRoman Brovko1. Файлы и процессы сервера
2. Внутренняя архитектура сервера
3. Примеры конфигурации
4. Понятие location
5. Методы обработки сетевых соединений
Практический анализ и визуальное моделирование на UMLNikolai KireevПрезентация курса online-тренингов, проводимых совместно Школой Системного Анализа г. Москва и IT-Студией WebMax.BY г. Минск.
Запись на курс по ссылке: http://school.system-analysis.ru/uml-online/
06 - Web-технологии. Протокол HTTPRoman Brovko1. Назначение и ключевые особенности
2. Синтаксис запроса и ответа
3. Методы запросов
4. HTTP заголовки
5. Коды ответа
6. Управление соединением
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)OnticoРазница между “несколько серверов в облаках” и “вся инфраструктура в облаках“ огромна. С одной стороны, мы перекладываем миллион забот на гигантские плечи Amazon и Google. С другой стороны, к сожалению, обретаем много новых и порой необычных проблем.
Как жить в облаках двух самых популярных провайдеров? Что это за проблемы и как их решать? В чем особенности облаков, если вы живете в мире highload? Как выжимать максимум из того, что предоставляют провайдеры?
Я попытаюсь рассказать о наиболее важных, на мой взгляд, особенностях:
- Почему не стоит полагаться на заявленные характеристики виртуальных машин.
- Почему нет разницы между загрузкой CPU в 85% и 100%.
- Всевозможные аномалии и неожиданные "спайки" в метриках.
- "Облачные" диски и их особенности.
Антон Потапов — С++ контейнеры и многопоточность: вместе или врозь?YandexАнтон Потапов, Intel
Стандартная библиотека С++ содержит набор наиболее распространённых контейнеров для организации данных. С++11 предоставляет минимальные гарантии безопасности работы с контейнерами в многопоточной среде, но зачастую этого недостаточно для эффективного их использования в параллельных программах. В докладе речь пойдёт о современных подходах к реализации эффективных «конкурентных» контейнеров, а также основных возникающих при этом проблемах и способах их решения.
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...OnticoЧтобы добиться от системы максимальной производительности, необходимо учитывать структуру данных, с которыми вы работаете. Проблемы возникают, если данные очень неоднородные, и один из способов решения этих проблем - использовать возможности современных реляционных БД для хранения данных в документо-ориентированной форме.
Этот подход имеет свои плюсы и минусы, которые будут обсуждаться в докладе на примерах PostgreSQL/MySQL/MariaDB etc.
Основные вопросы:
* конечно, производительность тех или иных решений и подходов - чего необходимо избегать, а чего бояться не стоит (бенчмарки для разных конфигураций и видов нагрузки);
* способы безболезненного переноса данных в такой формат.
Object-Relational Mapping for DummiesGlobalLogic UkraineThis presentation deals with the evolution of object-relational mapping, its essence and goals. There is also an accent on challenges of ORM use, its benefits and disadvantages.
This presentation by Andrii Sidun (Software Engineer, GlobalLogic) was delivered at Java.io 3.0 conference in Kharkiv on March 22, 2016.
Individual task NetworkingRoman BrovkoThe document provides instructions for extending a UDP server to handle additional commands for reading the state of GPIO pins connected to LEDs on a board. The UDP server extension should accept "read gpio<PORT> <PIN>" commands to check the status of LEDs connected to pins 13, 12, 14, and 15, and reply with the pin and state like "GPIOD.15=1". The ncat utility can be used as a UDP client to send commands to control the LEDs or get their status by communicating with ports 5678 and 1234 of the UDP server, respectively.
Networking essentials lect3Roman BrovkoThis document provides an agenda and overview of topics related to the transport layer and networking essentials. The agenda includes discussions of the transport layer, UDP overview, TCP communication process, the socket API, and tools and utilities. Specific topics that will be covered include the role and functions of the transport layer, UDP features and headers, TCP reliability mechanisms like connection establishment and termination, sequence numbers and acknowledgments, window sliding, and data loss/retransmission. The document also provides brief overviews and usage examples for common networking tools like ifconfig, nmcli, route, ping, traceroute, netstat, dig, ncat, nmap, tcpdump, and wireshark.
Gl embedded starterkit_ethernetRoman BrovkoThis document provides an overview of connecting the STM32F407x microcontroller on the GlobalLogic Embedded Starter Kit to Ethernet. It discusses the STM32F407x Ethernet interface, HAL Ethernet driver, Lightweight TCP/IP stack, and examples of implementing TCP client/server and an HTTP server. The KSZ8081RND PHY chip is used along with the RMII interface. The document also outlines configuring LwIP and developing a UDP server to control LEDs on the board via commands from a UDP client.
Networking essentials lect2Roman BrovkoThe document provides an agenda and overview of key topics related to networking essentials including the network layer, IPv4 and IPv6 packets and addresses, and network address translation (NAT). Specifically, it discusses network layer characteristics such as addressing, encapsulation, routing and de-encapsulation. It also examines IPv4 packet headers, fragmentation, and maximum transmission units. IPv6 is introduced as improving on IPv4 by providing increased address space and simplified packet handling. Network address translation is defined as a method for mapping an IP address space to overcome IPv4 address depletion.
Networking essentials lect1Roman BrovkoThis document provides an overview of networking concepts including network types, medium access control protocols, TCP/IP protocol suite, addressing, Ethernet frames, ARP, and standards organizations. It begins with an agenda that lists these topics and includes diagrams to illustrate CSMA/CD, the OSI model, TCP/IP encapsulation, and Ethernet encapsulation. Examples are provided for different network devices, addressing formats and protocols.
Bare metal training_06_I2CRoman BrovkoThis document is a training presentation on I2C interface. It discusses understanding I2C, the internal structure of I2C modules, the I2C interface in an embedded starter kit schematic, using an I2C PWM LED controller, and using I2C in blocking mode. The individual task is to control LED brightness using I2C PWM outputs by modifying the duty cycle, frequency, and number of outputs.
Glesk worshopRoman BrovkoThe document describes a workshop for the GlobalLogic Embedded Starter Kit (GL ESK). It includes instructions for a "Hello World" project using the kit to blink an LED. It also provides guidance on additional exercises including controlling more LEDs with buttons, using interrupts to check buttons, and debugging techniques. The document recommends downloading documentation and sources from GitHub and provides information on the STM32F407 microcontroller and Discovery board used with the kit.
Bare metal training_05_uartRoman BrovkoThis document is a training module on using UART interfaces. It discusses UART fundamentals, the UART interface on an embedded starter kit, the internal structure of UART modules, and how to use UART in both polling and interrupt modes. Learners are assigned the tasks of modifying an existing UART code to control additional LEDs and print sensor values to a terminal using UART communication.
Bare metal training_04_adc_temp_sensorRoman BrovkoThis document outlines the goals, theory, and practice of a training on using analog to digital converters (ADCs) in polling and interrupt modes. The training covers the internal structure of ADCs, using an on-board temperature sensor, reading voltage values from an external potentiometer, and reading multiple ADC channels. Trainees are assigned individual tasks like controlling LED brightness based on temperature sensor readings.
Bare metal training_03_timers_pwmRoman BrovkoThis document provides an overview of a training on timers and PWM for bare metal embedded systems. The goals are to learn clock control, generate 1Hz signals using delays and timers, and create PWM signals at predefined duty cycles. It explains clock control diagrams and settings, and provides code examples to generate a 1Hz signal using delays, use Timer4 to toggle a pin in an interrupt handler, and set up PWM on Timer4 Channel 3. Finally, it lists an individual task to control 4 LEDs with PWM using different channels and buttons to fade the LEDs in/out.
Bare metal training_02_le_ds_and_buttonsRoman BrovkoThis document provides an overview of training materials for an embedded starter kit focused on bare metal programming of LEDs and buttons. The goals are to create firmware to control LEDs and read button presses, learn about the hardware operation of LEDs and buttons, and learn GPIO input/output and interrupt basics. It introduces GPIO configuration as digital I/O with pull-up/down resistors or analog, covers GPIO pin functionality, and discusses using interrupts to address the delay issues of polling button states in a main loop. The practice section has the learner set up a project to control an LED based on a button press via polling initially, then refactors to use interrupts to eliminate delays.
Bare metal training_01_hello_worldRoman BrovkoThis document outlines a training for creating a "Hello World" firmware project for an embedded starter kit using the Keil IDE. The goals are to create an LED blinking firmware, learn the hardware basics of the starter kit, and learn how to create, build, flash and debug firmware projects. Trainees will go through adding LEDs to the project, implementing a custom blinking sequence, and stepping through the code using the debugger.
Bare metal training_00_prerequisitesRoman BrovkoThis document provides instructions for installing software prerequisites for a bare metal embedded training using a GlobalLogic starter kit. The instructions include downloading and installing: 1) An ST-Link driver to interface with the board; 2) Keil uVision IDE for embedded development; and 3) STM32 CubeMx for configuration. Completing these steps prepares the hardware and software for the trainings by setting up the development environment and debugger connection to the board.
C language lect_21_advancedRoman BrovkoThe document discusses several topics related to advanced C language programming including:
1. Decomposing a program into multiple files by creating libraries and header files.
2. The structure of a software component including public header files, private header files, and library object files.
3. Techniques for building a program such as compilation, linking, and conditional compilation.
2. Решаемые проблемы
• Структура хранения
• Эффективный поиск данных
• Управление памятью
• Совместный доступ к данным
• Атомарные операции - транзакции
• Язык управления базой и данными - SQL
2
3. Реляционная модель данных
Данные хранятся в виде таблиц. У каждой таблицы фиксированное
число столбцов. Все данные в столбце одного типа.
3
4. Проектирование базы данных
Основная задача проектирования - сокращение избыточности и
дублирования данных.
Существуют формальные правила проверки схемы базы данных на
«правильность» - нормальные формы базы данных.
4
5. Проектирование на практике
• Логическое разделение сущностей
• Выделение синтетических первичных ключей
• Связи 1:N, N:1 реализуются через внешний ключ
• Связи N:M реализуются через промежуточную таблицу
• Атрибут с фиксированным числом значений – внешняя таблица
либо поле типа enum
5
7. Подключение к базе
Полное интерфейса для работы с СУБД в PEP-0249
import MySQLdb
db = MySQLdb.connect(host="localhost", user="joe",
passwd="moonpie", db="thangs")
cursor = db.cursor()
# запросы с использованием cursor
db.commit()
db.close()
7
8. Выполнение запросов
cursor.execute("""
update users set age = age + 1 where name = %s
""", (name,))
cursor.execute("select * from users")
users = cursor.fetchall()
cursor.execute("""
select * from users where name = %s
""", (name,))
user = cursor.fetchone()
8
12. Прямой доступ к базе
from django.db import connection, connections
cur = connection.cursor()
cur.execute("select * from tbl limit 10")
default_cur = connections['default'].cursor()
default_cur.execute("select * from tbl2 limit 10")
another_cur = connections['another'].cursor()
another_cur.execute("select * from tbl2 limit 10")
12
13. Полезные утилиты
• ./manage.py validate - проверить структуру моделей
• ./manage.py syncdb - создать таблицы в базе (1 раз)
• ./manage.py shell - запустить python shell
• ./manage.py dbshell - запустить клиент базы данных
13
14. Django Models
ORM - Object relational mapping - библиотек предоставляющая
объектно-ориентированный интерфейс к реляционной базе
данных. Django Models - библиотека ORM в Djnago.
Django SQL
класс Модели Таблица
объект модели строка таблицы
QuerySet запрос
14
15. ORM vs SQL
cursor.execute('select * from users where age > 18')
for user in cursor.fetchall():
pk, name, age = user
print name
for user in User.objects.filter(age__gt=18):
print user.name
15
16. Модели Django
class Post(models.Model):
title = models.CharField(max_length=255)
content = models.TextField()
creation_date = models.DateTimeField(blank=True)
def __unicode__(self):
return self.title
def get_absolute_url(self):
return '/post/%d/' % self.pk
class Meta:
db_table = 'blogposts'
ordering = ['-creation_date']
16
17. Типы полей
Django MySQL
CharField VARCHAR(N)
EmailField
TextField LONGTEXT
BooleanField TINYINT(1)
IntegerField INT(11)
DateField DATE
DateTimeField DATETIME
17
18. Свойства полей
• blank - поле может быть пустым
• null - при этом хранится в базе как NULL
• max_length - максимальная длина поля
• primary_key - это поле - первичный ключ
• unique - поле уникально
• db_index - для этого поля нужен индекс в базе
• default - значение по-умолчанию
• choices - варианты значений
18
20. Связи между моделями
class Post(models.Model):
title = models.CharField(max_length=255)
# еще поля...
category = models.ForeignKey(Category,
null=True, on_delete=models.SET_NULL)
status = models.OneToOneField(PostStatus)
tags = models.ManyToManyField(Tag)
20
22. Ограничения внешних ключей
Применимо к полям типа ForeignKey , OneToOneField
• RESTRICT → models.PROTECT
• CASCADE → models.CASCADE
• SET NULL → models.SET_NULL
• NO ACTION → models.DO_NOTHING
22
23. Использование отношений в коде
# прямое использование
post = Post.objects.get(pk=1)
category = post.category # Category
category_id = post.category_id # int
status = post.status # Status
status_id = post.status_id # int
tags_manager = post.tags # RelatedManager
post.tags.all() # [ Tags ]
# использование обратного отношения
category.post_set.all() # [ Post ]
tag.post_set.all() # [ Post ]
23