Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Python Meetup
В своем докладе Олег расскажет о замене стандартных функций на более быстрые и об ускорении работы python. Также продемонстрирует несколько примеров быстрых конструкций python.
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...pgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
Уникальный семинар от опытного "базиста" Ивана Фролкова призван наглядно пояснить слушателям адекватность применения реляционных СУБД на задачах веба. В рамках доклада Иван рассмотрит типичные "грабли", на которые натыкаются разработчики, и субоптимальные решения, изобретаемые с целью побороть возникшие проблемы. В качестве альтернативы, коллега Фролков наглядно пояснит, как эти же задачи решаются штатными средствами PostgreSQL.
В качестве бонуса Иван — "ветеран" промышленной разработки ПО для реляционных СУБД — проведет краткий ликбез по рекомендуемым практикам построения SQL-запросов и программирования на языке PL/PGSQL.
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...Ontico
Многие современные высоконагруженные системы построены с использованием очередей. Не является исключением и внутренний сервис обработки OAuth токенов, который создала наша команда. Исключением является то, что и в качестве основного хранилища, и в качестве всех очередей используется один и тот же продукт - Tarantool. Более того, мы поставили себе амбициозную цель по отказоустойчивости - полную доступность сервиса, когда уходят любые два из трёх датацентров, и успешно её достигли.
При решении мы столкнулись с массой интересных инженерных задач и в нашем докладе мы расскажем вам о том, какие технологии и подходы использовались. В частности, рассмотрим более детально такие вещи, как:
- создание deadline очереди и проблемы, с ней связанные;
- создание кольцевой очереди;
- интеграция между собой шардинга, Raft и очередей;
- как мы победили split brain ;)
Лекция #5. Введение в язык программирования Python 3Яковенко Кирилл
Web-программирование
Лекция #5. Введение в язык программирования Python 3
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Python Meetup
В своем докладе Олег расскажет о замене стандартных функций на более быстрые и об ускорении работы python. Также продемонстрирует несколько примеров быстрых конструкций python.
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...pgdayrussia
Доклад был представлен на официальной российской конференции PG Day'14 Russia, посвященной вопросам разработки и эксплуатации PostgreSQL.
Уникальный семинар от опытного "базиста" Ивана Фролкова призван наглядно пояснить слушателям адекватность применения реляционных СУБД на задачах веба. В рамках доклада Иван рассмотрит типичные "грабли", на которые натыкаются разработчики, и субоптимальные решения, изобретаемые с целью побороть возникшие проблемы. В качестве альтернативы, коллега Фролков наглядно пояснит, как эти же задачи решаются штатными средствами PostgreSQL.
В качестве бонуса Иван — "ветеран" промышленной разработки ПО для реляционных СУБД — проведет краткий ликбез по рекомендуемым практикам построения SQL-запросов и программирования на языке PL/PGSQL.
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...Ontico
Многие современные высоконагруженные системы построены с использованием очередей. Не является исключением и внутренний сервис обработки OAuth токенов, который создала наша команда. Исключением является то, что и в качестве основного хранилища, и в качестве всех очередей используется один и тот же продукт - Tarantool. Более того, мы поставили себе амбициозную цель по отказоустойчивости - полную доступность сервиса, когда уходят любые два из трёх датацентров, и успешно её достигли.
При решении мы столкнулись с массой интересных инженерных задач и в нашем докладе мы расскажем вам о том, какие технологии и подходы использовались. В частности, рассмотрим более детально такие вещи, как:
- создание deadline очереди и проблемы, с ней связанные;
- создание кольцевой очереди;
- интеграция между собой шардинга, Raft и очередей;
- как мы победили split brain ;)
Лекция #5. Введение в язык программирования Python 3Яковенко Кирилл
Web-программирование
Лекция #5. Введение в язык программирования Python 3
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
Презентация со встречи сообщества SPb Python Interest Group рассказывающая об устройстве словарей в Python.
В презентации рассмотрена работа словаря в CPython 2.x, словаря в CPython 3.x, а также рассмотрены изменения в CPython 3.6.
Помимо CPython рассмотрены версии словаря в альтернативных реализациях Python, таких как PyPy, IronPython и Jython.
Лекция 5. Встроенные коллекции и модуль collections.Roman Brovko
И снова встроенные коллекции: кортеж, список, множество, словарь - обход в глубину, обзор методов, примеры. Почти всё про модуль collections: именованные кортежи, счётчики, defaultdict, OrderedDict.
Статический анализ: вокруг Java за 60 минутAndrey Karpov
Статический анализ всё больше воспринимается как неотъемлемая часть процесса разработки качественного программного обеспечения. Разумеется, у этой технологии уже есть свои сторонники и противники, но, несмотря на это, тема статического анализа всё более актуальна и требует детального рассмотрения. Рассмотрим, что такое статический анализ, как он применяется и как влияет на качество и надёжность кода. Поговорим о важности раннего обнаружения ошибок и дефектов уязвимости. Рассмотрим существующие инструменты для Java, такие как Sonar Java, FindBugs и анализатор встроенном в среду разработки IntelliJ IDEA. Расскажем историю, почему несмотря на уже существующие инструменты, мы решили разработать PVS-Studio для Java, как мы это делали и что в итоге получилось. В конце затронем вопрос интеграции статических анализаторов кода в большие старые проекты. Другими словами, как увидеть 100500 срабатываний и не упасть духом.
3. R работает по принципу «вопрос-ответ»
Команды вводятся после «знака подсказки» в
командной строке, напр.:
> plot(rnorm(1000))
1000 случайно
сгенерированных
нормально распределенных
значений
Author: Sergey Mastitsky
0 200 400 600 800 1000
-3-2-10123
Index
rnorm(1000)
5. > x <- 2
> x
[1] 2
> x + x
[1] 4
> y <- 5
> x * y
[1] 10
Author: Sergey Mastitsky
6. Можно использовать любые символы, но:
имена не должны начитаться с точки “.” и
содержать пробелы
имена не должны начинаться с цифр
имена чувствительны к регистру: WT и wt –
для R это разные переменные
Не следует использовать зарезервированные
служебные имена:
- c, q, t, C, D, F, I, T
- diff, df, pt, и некоторые др.
Author: Sergey Mastitsky
7. Векторы в R – самостоятельные объекты:
> weight <- c(60, 72, 57, 90, 95, 72)
> weight
[1] 60 72 57 90 95 72
c(…) – функция «конкатенации» (concatenation)
Можно выполнять вычисления над
векторами, как над обычными числами:
> height <- c(1.75, 1.80, 1.65, 1.90,
1.74, 1.91)
> bmi <- weight/height^2
> bmi
[1] 19.592 22.2222 20.937 24.931 31.378 19.736
Author: Sergey Mastitsky
11. То, что мы вводим в командную строку, имеет
более общее название – выражение (expression)
Выражения обычно включают имена
переменных, операторы и функции:
xbar <- sum(weight)/length(weight)
функция
имя переменной
оператор
Author: Sergey Mastitsky
12. Выражения выполняют действия над
объектами
Практически все, что мы создаем в R,
можно назвать “объектом”
x, weight, height, SD – все это объекты
R – объекто-ориентированный язык
Author: Sergey Mastitsky
13. Объекты, содержащие данные (data
objects) – векторы, матрицы, списки и
таблицы данных
Функции (function objects)
Author: Sergey Mastitsky
15. Функция – имеющий имя набор команд,
которые выполняют определенные операции
над другими объектами:
plot(), c(), sum(), mean()...
Фактичекие аргументы функций – объекты, к
которым применяется функция:
plot(height, weight)
Формальные аргументы – параметры,
управляющие поведением функции:
plot(height, weight, pch = 2)
Author: Sergey Mastitsky
16. Скобки должны использоваться всегда,
даже если мы не указываем никаких
аргументов при вызове функции
Типичный пример: ls()
Author: Sergey Mastitsky
19. Часто встречаются на практике
В R обозначаются как NA:
> c(2, NA, 10)
[1] 2 NA 10
Операции над NA возвращают NA, и поэтому
часто такие значения приходится исключать
из анализа:
> mean(c(2, NA, 10))
[1] NA
Author: Sergey Mastitsky
28. Фактор – качественная переменная,
содержащая метки для групп данных
(например, пол, место отбора проб,
экспериментальная группа и т.д.)
Уровни фактора – конкретные
категории такой переменной (например,
“самец” и “самка”)
Author: Sergey Mastitsky
29. > sex <- c("male", "male",
"female", "female", "female")
> sex <- factor(sex)
> sex
[1] male male female female female
Levels: female male
> levels(sex)
[1] "female" "male"
> as.numeric(sex)
[1] 2 2 1 1 1
Author: Sergey Mastitsky
30. Этот способ тоже сработает, но лучше
его не использовать:
> sex <- c(0, 0, 1, 1, 1)
> sex <- factor(sex)
> sex
[1] 0 0 1 1 1
Levels: 0 1
Author: Sergey Mastitsky
36. Таблица данных – список векторов
и/или факторов одинаковой длины,
упорядоченных в виде таблицы.
Каждый ряд в такой таблице
соответствует одному наблюдению. У
рядов также могут быть имена.
Author: Sergey Mastitsky
37. > data <- data.frame(
Sex = sex,
Weight = weight,
Height = height)
> data
Sex Weight Height
1 male 80 1.75
2 male 85 1.80
3 female 60 1.68
Author: Sergey Mastitsky
38. > names(data)
[1] "Sex" "Weight" "Height“
> data$Sex
[1] male male female
Levels: female male
> data$Height
[1] 1.75 1.80 1.68
Author: Sergey Mastitsky
42. Значения из 2-го ряда 3-го столбца:
> data[2, 3]
[1] 1.8
Весь 2-й ряд:
> data[2, ]
Sex Weight Height
2 male 85 1.8
Весь 3-й столбец:
> data[, 3]
[1] 1.75 1.80 1.68
Author: Sergey Mastitsky
43. Все данные для самцов:
> data[data$Sex == "male", ]
Sex Weight Height
1 male 80 1.75
2 male 85 1.80
> data$Sex == "male"
[1] TRUE TRUE FALSE
Author: Sergey Mastitsky
44. Данные из 1-го и 3-го столбцов:
> data[, c(1, 3)]
Sex Height
1 male 1.75
2 male 1.80
3 female 1.68
Author: Sergey Mastitsky
45. Полезные команды для больших таблиц:
> head(data, n = 2)
Sex Weight Height
1 male 80 1.75
2 male 85 1.80
> tail(data, n = 2)
...
Author: Sergey Mastitsky
48. Рабочее пространство – часть памяти
компьютера, где хранятся все объекты,
созданные в ходе конкретной R-сессии
(временно, пока не будут сохранены!)
Проверка содержимого рабочего
пространства:
> ls()
...
В RStudio имеется закладка “Environment”
Author: Sergey Mastitsky
49. Периодически стоит проводить «уборку»:
> rm(i)
Для удаления всех объектов (осторожно!):
> rm(list = ls())
В RStudio:
закладка “Environment”, кнопка “Clear All”
Author: Sergey Mastitsky
50. Сохранение текущего рабочего
пространства (создает файл .Rdata в
текущей рабочей директории):
> save.image()
В RStudio:
- Закладка “Environment”
- Кнопка “Save Workspace As…”
Author: Sergey Mastitsky
51. Рабочая директория – папка, из которой R по
умолчанию пытается загружать файлы (и
сохранять в нее)
Проверка пути к текущей рабочей папке:
> getwd()
[1] "D:/DOCS"
Создание новой рабочей директории:
> setwd("D:/DOCS/Analysis")
В RStudio:
Session/Set Working Directory/Choose Directory
Author: Sergey Mastitsky
53. Для выполнения нескольких
однотипных/специализированных команд
стоит сохранить их в виде скрипта
Опция 1: функция source() – загружает
файл со скриптом и выполняет его
Опция 2: редактор скриптов в RStudio –
позволяет выполнять несколько команд
одновременно
Author: Sergey Mastitsky
56. Имеется обширная встроенная справочная
система:
> help.start()
или закладка Help в RStudio
Справка по конкретной функции:
> help(plot) # или просто
> ?plot
Справка по определенной теме:
> help.search("correlation")
Справка по определенному пакету:
> help(package = "name")
Author: Sergey Mastitsky
58. Пакет – коллекция функций, созданных для
выполнения определенного класса задач, или
колекция таблиц с данными (см. закладку
Packages в RStudio)
Для загрузки (уже установленного) пакета:
> library(package)
Инсталляция нового пакета (требуется Интернет-
соединение):
> install.packages("имя_пакета")
Author: Sergey Mastitsky