Лекция #5. Введение в язык программирования Python 3Яковенко Кирилл
Web-программирование
Лекция #5. Введение в язык программирования Python 3
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
Андрей Карпов
Вы узнаете, что такое статический анализ кода и историю его развития. Узнаете, как эффективно применять инструменты статического анализа в своей работе, увидите практические примеры использования этой методологии. Доклад ориентирован на программистов, использующих языки Си/Си++, но будет полезен всем
Лекция 12. Быстрее, Python, ещё быстрее.Roman Brovko
Измерение времени работы кода на Python с помощью модулей timeit, cProfile и line_profiler. Немного о NumPy. JIT и AOT компиляция кода на Python на примере Numba и Cython.
Лекция 2. Всё, что вы хотели знать о функциях в Python.Roman Brovko
Синтаксис объявления функций. Упаковка и распаковка аргументов. Ключевые аргументы и аргументы по умолчанию. Распаковка и оператор присваивания. Области видимости, правило LEGB, операторы global и nonlocal. Функциональное программирование, анонимные функции. Функции map, filter и zip. Генераторы списков, множеств и словарей. Немного о PEP 8.
Модули threading, queue и concurrent.futures. Использование потоков для параллельных вычислений на Python. GIL. Параллельность и конкурентность. Модуль asyncio. Модуль multiprocessing.
Зачем тестировать? Тестирование в интерпретаторе и доктесты. Модуль unittest. Пакет py.test - на порядок лучше. Тестирование свойств и пакет hypothesis.
При написании программы, разработчик примерно представляет себе, как должна работать его программа. Но не всегда его ожидания соответствуют действительности — приложения тормозят, потребляют много ресурсов и вообще ведут себя не так, как задумывалось, особенно под большой нагрузкой. В своём докладе я покажу, как заглянуть "под капот" ваших приложений на Python (и Django в частности): какие способы профилирования бывают и когда их можно использовать, расскажу об отладке приложений и различных инструментах, которые помогают разработчику при разработке.
Лекция 8. Итераторы, генераторы и модуль itertools.Roman Brovko
Два протокола итераторов: __next__ + __iter__ и __getitem__. Итераторы и цикл for, а также операторы in и not in. Генераторы, оператор-выражение yield. Генераторы как: итераторы, сопрограммы, менеджеры контекста. Модуль itertools.
Синтаксис объявления классов. Атрибуты, связанные и несвязанные методы, __dict__, __slots__. Статические методы и методы класса. Свойства, декоратор @property. Наследование, перегрузка методов и функция super. Декораторы классов. Магические методы.
ЛЕКЦИЯ 7. Многопоточное программирование без блокировок. Модель потребитель-производитель. Потокобезопасный стек: проблема ABA, указатели опасности, сборщики мусора, счётчик ссылок, применение модели памяти С++.
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
Юнит-тестирование и Google Mock. Влад Лосев, Googleyaevents
Владимир Лосев, Google
Закончил математико-механический факультет Санкт-Петербургского государственного университета в 1995 году. Работал в компаниях Motоrola, Fair Isaac и Yahoo. С 2008 года работает в Google, в группе, занимающейся вопросами повышения производительности инженеров.
Тема доклада
Юнит-тестирование и Google Mock.
Тезисы
В модульных (юнит) тестах каждый элемент программы тестируется по отдельности, в изоляции от других. Такие тесты исполняются очень быстро, поэтому их можно запускать когда угодно, что позволяет отлавливать дефекты на самых ранних стадиях разработки. Однако для тестирования объекта в изоляции от других необходимо имитировать поведение связанных с ним объектов, что на C++ довольно утомительное занятие. Разработанная в Googlе библиотека для создания и использования mock-объектов — Google Mock — позволяет существенно упростить этот процесс и ускорить написание тестов. В докладе пойдет речь о принципах и возможностях библиотеки, примерах её использования и её внутреннем устройстве.
Вводная лекция в язык C#, для тех кто знает программирование и в особенности C++. В статье будет уделено внимание наиболее важным отличиям языков, будут обсуждаться вопросы производительности и эффективного кода.
Другие интересные статьи по C# ищите тут: http://itw66.ru/blog/c_sharp/
Написание компактного и эффективного кода в C#: http://itw66.ru/blog/c_sharp/520.html
ЛЕКЦИЯ 4. Стандарт POSIX Threads. Реентерабельность функций. Обработка сигналов. Локальные данные потоков. Принудительное завершение потоков. Шаблоны программирования с использованием потоков
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
This document discusses Alibaba Mobile's ecosystem and strategies for launching products in various markets. It covers Alibaba's entrance into the mobile internet world through smartphones, operating systems, and application stores/browsers. It then discusses how Alibaba builds its ecosystem through big data, content monetization, and various traffic sources. The document outlines Alibaba's strategies for global markets and provides real examples of products launched in India and Indonesia, including services related to cricket, music, video, Facebook notifications, e-commerce, and news.
The Dining Man: how does Afisha Restaurants change the behavioral patterns of choice and payments in cafes and restaurants. Based on the real experience of Project Manager
This document provides a summary of Marvin Liao's 2016 investment outlook. It discusses 7 trends that early stage tech investors should pay attention to:
1. Virtual and augmented reality being the next major engagement platform, as AR/VR startups raised $658M in 2015.
2. The internet of everything (IoT), as IoT startups raised over $1.9B in 2015.
3. FinTech as a major growth area, with Asian FinTech startups raising $3.5B in 2015 and US startups raising $3B in Q1 2015.
4. Millennials now being the largest demographic group and redefining smartphone usage and preferences.
RxJava is a library for composing asynchronous and event-based programs using observable sequences. It provides features for concurrency, request management, data flow manipulation, and error handling. RxJava uses streams and new objects like Schedulers, Subscriptions, and Subjects. It can be used with techniques like retained fragments, cached observables, binding to lifecycles, and services to handle configuration changes and loading data.
The document discusses the Observer pattern and RxJava. RxJava allows for concurrency, data flow manipulation, and error handling through its use of observables and subscribers. It provides links to documentation on RxJava operators and a blog post that helps explain RxJava fundamentals.
This document discusses Spotify's transition to a "consistent, thin, and dumb" approach to app development. It summarizes Spotify's user and song numbers, the challenges of their previous iOS client, and their shift to a backend-driven model with modular organization. This allows for innovation, scaling, and a unified user experience across platforms through frameworks like GLUE. The document endorses frameworks as "machines" and sharing knowledge and success.
The document summarizes the architectural changes made to the Wunderlist app between versions 2 and 3. Version 3 was completely redesigned with a modular layered architecture that is highly decoupled, enables real-time syncing, and is easier to maintain, test, and adapt compared to the previous monolithic structure. The key layers include presentation, sync, SDK, and model layers with defined boundaries and dependencies between the layers.
The document discusses SoundCloud's approach to mobile testing, including:
- Engineers write unit and UI tests which are run continuously after each code change. Manual testing is also done before releases.
- A test runner service manages test execution across devices in parallel to improve efficiency compared to relying solely on Jenkins.
- An IntelliJ plugin was created to allow testing directly from the IDE for local development, integrating with the test runner service.
The document discusses the VIPER architecture pattern for structuring iOS applications. It begins by introducing the key components of a VIPER module: the View, Presenter, Interactor, Router, and Entity. It then provides examples of how each component is responsible for lifecycle management, event handling, data validation, routing, and other tasks. The document argues that VIPER increases testability, modularity, and code quality of iOS apps. It also promotes open sourcing example VIPER code on GitHub to help disseminate knowledge of this architecture.
MBLTDev15: Anna Mikhina, Maxim Evdokimov, Tinkoff Bank e-Legion
This document discusses working on errors and testing. It focuses on improving performance by identifying mistakes, analyzing what caused them, and learning from the experience to do better in the future. The goal is to enhance skills and knowledge through reflection on past weaknesses or issues uncovered by assessment.
6. Контекст блока3. переменные – указатели на объекты с подсчетом ссылок (id, NSObject)NSDate* date = [ [ NSDate alloc ] init ];void(^printDate)() = ^() {NSLog( @"date: %@", date );};//копируем блок в кучуprintDate = [ [ printDatecopy ] autorelease ];[ date release ];printDate();
7. Контекст блока4a. управление памятьюNSDate* date = [ [ NSDate alloc ] init ];//создаем блок в стекеvoid(^printDate)() = ^() {NSLog( @"date: %@", date );};[ date release ];//копируем блок в кучу и падаемprintDate = [ [ printDatecopy ] autorelease ];
8. Контекст блока4b. управление памятью__blockNSDate* date = [ [ NSDatealloc ] init ];void(^printDate)() = ^() {//здесь падаем при обращении к dateNSLog( @"date: %@", date );};//копируем блок в кучу, для объекта dateretain не вызываетсяprintDate= [ [ printDatecopy ] autorelease ];[ date release ];printDate();
10. Блоки и управление памятью2. block как результат функции-(JFFSimpleBlock)example{return [ [ ^ {NSLog( @"test" ); } copy ] autorelease ];}
11. Блоки и управление памятью3. Виды блоковых объектовГлобальные- без состоянияЛокальные- в стекеMalloc- Блоки в кучеIos < 4.0 support:PLBlocks- googlecodeESBlocksRuntime–github
14. БлокиBest practice1. Работа с контейнерами на примере NSArray2. Охраняющиевыражения -guards3. Отложенные вызовы:onDeallocBlockScheduled operations4. Блоки вместо делегатов в UIAlertView
28. Блоки вместо делегатов в UIAlertViewJFFAlertButton* bt_ = [ JFFAlertButtonalertButton: title_action: ^{//do some action} ];JFFAlertView* alert_view_ =[ JFFAlertViewalertWithTitle: @"Alert2"message: @"test"cancelButtonTitle: @"Cancel"otherButtonTitles: bt_, nil ];
29. Обобщенное асинхронное программирование1. Асинхронная операция в общем виде2. Кеширование3. Порядок выполненияДерево зависимостей, loginLazy load, вычитка страниц4.Load balancer5. Асинхронные операции в контексте сессии6. Асинхронные операции в UI
30. Асинхронная операция в общем видеCancelBlock(^AsyncOperation) ( ProgressHandler, CancelHandler , FinishHandler) { … };