Rambler.iOS #8: Как не стать жертвой бэкендеровRAMBLER&Co
Клиент-серверное взаимодействие лежит в основе большинства мобильных приложений. Язык общения между клиентом и сервером всегда закреплён определённым контрактом. Однако валидация этого контракта незаслуженно остаётся в стороне. Отсюда и большинство проблем на клиенте — некорректное отображение, неконсистентность данных и падения.
Как избежать этих проблем и повысить уровень crash-free ваших приложений, добавив предварительную валидацию, расскажет Ирина Дягилева.
Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.
Rambler.iOS #8: Как не стать жертвой бэкендеровRAMBLER&Co
Клиент-серверное взаимодействие лежит в основе большинства мобильных приложений. Язык общения между клиентом и сервером всегда закреплён определённым контрактом. Однако валидация этого контракта незаслуженно остаётся в стороне. Отсюда и большинство проблем на клиенте — некорректное отображение, неконсистентность данных и падения.
Как избежать этих проблем и повысить уровень crash-free ваших приложений, добавив предварительную валидацию, расскажет Ирина Дягилева.
Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.
1. Контроллеры в Django
2. Объекты HttpRequest и HttpResponse
3. Получение GET и POST параметров
4. Работа с HTTP заголовками в Django
5. Декораторы
6. Шаблонизация в Django
7. Наследование шаблонов
8. Context processors
1. Контроллеры в Django
2. Объекты HttpRequest и HttpResponse
3. Получение GET и POST параметров
4. Работа с HTTP заголовками в Django
5. Декораторы
6. Шаблонизация в Django
7. Наследование шаблонов
8. Context processors
В 2015 году мы изменили порядок лекций. На первом этапе стажировки задача была делать проекты. И работа шла на результат. Мы не занимались качеством кода и архитектурой.
Это было сделано намеренно, чтобы когда дойдет до лекций о правильном коде, у участников стажировки уже был опыт реального проекта, на который они могут опираться, когда мы говорим о проблемах и о способах их решения.
Надежный обмен данными в гетерогенной среде, между разными платформами и технологиями является одним из ключевых моментов разработки сложных систем. Во время обмена данные преобразуются в некоторый промежуточный формат совместимый между платформами. Преобразование в подобный формат и из него — крайне рутинная и подверженная ошибкам работа.
Метаописание данных неким декларативным языком с последующей автогенерацией типизированных структур облегчает жизнь разработчику. Снимает с него необходимость задумываться о промежуточном формате, о правильном порядке полей, а типизированность гарантирует выявление ошибок еще на этапе компиляции кода.
В докладе будет рассмотрено несколько подобных решений, их плюсы и минусы. Также будет рассмотрен с практической стороны наш собственный формат метаданных, используемый нами на протяжении более 5 лет.
Целевая аудитория:
Ограничений нет, но в большей степени разработчики, имеющие уже определенный опыт разработки разнородных систем или приступающие к подобной задаче.
В своей работе мы постоянно используем инструменты, призванные облегчить нам жизнь. Но как хорошо мы ими на самом деле владеем? И почему мы пренебрегаем их суперсилами? Например, Chrome DevTools — это не только отладчик и инспектор HTML. Но когда у нас в руках молоток, кругом мерещатся гвозди. Десятки мегабайт и процентов загрузки процессора на вкладку браузера — верный признак того, что пора учиться пользоваться микроскопом.
Роман предложит освоить что-то посложнее молотка и расскажет о том, какую реальную пользу можно получить от профилирования, как найти в огромном отчёте проблему с кодом и что лучше — написать в коде десяток console.log или async debug.
Пластилиновый код: как перестать кодить и начать житьMoscow.pm
Елена Шишкина, ведущий программист Деньги Mail.Ru. Она покажет практический пример лени как двигателя прогресса в отдельно взятом веб-проекте:
- Надоело писать код? Будем думать, как его не писать!
- Боремся с однотипным кодом. Боремся с неоднотипным кодом.
- Код, которого не существует, и код, который существует.
- Следите за руками: программируем на конфигах!
- Как жить дальше?
Similar to Стажировка-2015. Разработка. Занятие 14. Twitter Flight (14)
Анна Тарасенко, «долгожитель» ИТ-лофта, генеральный директор 7bits, организатор таких событий, как IT-субботники в Омске, ИТ-конференций HappyDev и HappyDev-lite, стартап-интенсива Magic Kick Startup MKS рассказывает о своем докладе «Стартап = факап?»:
«Чем больше я общаюсь со стартаперами, инвесторами и бизнесменами, читаю книги, статьи и блоги о бизнесе, тем больше я понимаю, что надо просто браться и делать. Не ждать чудес, а идти ножками к клиенту и стараться решить его проблему. Хочу поделиться опытом проведения 2-х Magic Kick startup, одного Startup weekend и участия в 2-х Стартап-сабантуях, демо дне выпуска 10-го акселератора ФРИИ и многим другим.
Перековывалась из программиста в бизнесмены долго и мучительно. Это потребовало в частности излечения от перфекционизма и типичного российского нытья. Могу и люблю делиться опытом про все подряд».
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта7bits
Попробует вспомнить, откуда возник IT-лофт, почему он так назвался, что тут было хорошего и интересного. Как проводили субботники и хакатоны. Как кодили, слушали лекции, ели пиццу и печеньки, общались и работали.
Новейшая история ИТ-лофта — такой доклад решил подготовить Денис Нелюбин, системный архитертор 7bits, резидент лофта с 2014 года, организатор хакатонов и частый докладчик на ИТ-событиях Омска (и не только).
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать7bits
Реветь никто не собирается, а просто Саша Лопатюк, дизайнер Rosberry и соорганизатор Дизайн-среды, расскажет о том, почему договорённости и коммуникация в команде важнее расстояний, технологий и прочих мелочей.
Саше ИТ-лофт очень близок. Он работал здесь в команде А2 Дизайн, а потом участвовал в хакатонах и сам проводил события. Ему есть, что вспомнить и рассказать. Послушаем!
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи 7bits
Человек, рабочее место которого в IT-лофте всегда можно узнать по большому количеству телефонов — Игорь Гончаровский.
Работая в IT-Loft и занимаясь длительное время вопросами связи, Игорь хотел бы поделиться мыслями о развитии технологий и их востребованности сейчас и в недалеком будущем в своем докладе «IT-Loft без связи».
Игорь также является владельцем ООО «Айтек», менеджером проектов Velvetech LLC и организатором конференций по Asterisk в России.
Доклад-ретроспектива — как Сергей с командой провели 15 Людумов, и какое будущее у проекта. Вы узнаете как вспомогательное IT-мероприятие превращается в городскую тусовку и свободный образовательно-практический проект.
Сергей Мячин настраивает бизнес-процессы в Лайв Тайпинг, помогает клиентам решать бизнес-задачи, кроме всего этого уже 5 лет разрабатывает игры и устраивает геймджемы.
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT7bits
Тараканов Алексей — один из организаторов Omsk Linux User Group, Omsk Ubuntu LoCo, омской GPG-сети доверия (web of trust), евангелист Ubuntu, активист свободного программного обепечения, ведущий специалист ООО «ЛинуксМастер», занимается продвижением свободного программного обеспечения, делает нестандартные решения на базе СПО расскажет близкую ему тему: «Идеология в IT». Доклад о том, что такое OmskLUG, и ИТ-лофт как положительно повлиял на него.
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub7bits
This document discusses setting up and using Git and GitHub for version control of a Java project. It explains how to initialize a Git repository, add and commit files, configure user information, check status and history, ignore files, connect to a remote GitHub repository, authenticate with SSH keys, and push code to GitHub. The steps taken are initializing a Git repository, adding files, committing with a message, configuring user details, viewing status and log, ignoring files, connecting to a remote repository, generating and adding SSH keys, and pushing the local code to the remote GitHub repository.
5. Спагетти код
1 var fnGetSearchForm;
2 var fnGetSearchFormQuery;
3 var fnGetSearcheable;
4 var searcheableSelector;
5 var paginatableSelector;
6 var pagingContainerSelector;
7 var fnGetPaginatable;
8 var fnGetPaginatableContainer;
9 var fnGetPagingInfo;
10 var sortableSelector;
11 var sortableContainerSelector;
12 var fnGetSortingOrder;
13 var fnGetSortableContainer;
14 var fnGetSortableElementsNotBoth;
15 var fnInsertTableRows;
16 var fnGetMetaFieldsCodes;
17 var fnAddColumnsHtml;
18 var sortColumnCode = 'data-sort-code';
19 var tableSelector = '[data-table="true"]';
20 var tableWithMarkableRowsSelector = '[data-
table-with-markable-rows="true"]';
21 var sortableColumnSelector =
sortableContainerSelector + ' thead ' +
sortableSelector;
22 var rowSelectedClass = 'selected-row';
23 var dataRowMarkerAttr = 'data-row-
marker="true"';
24 var checkboxRowMarkerSelector = '[' +
dataRowMarkerAttr + ']';
25 var dataMetaFieldCode = 'data-meta-field-code';
26 var dataFromMetaField = 'data-from';
27 var dataToMetaField = 'data-to';
28 var dataPrimaryMetaField = 'data-primary';
29 var toggleAllInPageSelector = '[data-check-
type="toggle-all-in-page"]:first';
30 var dataTableFilterRowAttributes = 'data-filter-
row-attributes';
31 var dataFilterUrl = 'data-filter-url';
32 var dataTableFilterAdditionalRequestParams =
'data-filter-additional-request-params';
33 var dataTableFilterResponseJsonPart = 'data-
filter-response-json-part';
34 var dataTableRawObjectCode = 'data-object-raw-
code';
35 var mainTable = '[data-main-table="true"]';
36 var searchFormSelector = '[data-search-
component="form"]:first';
37 var editButtonSelector = '.edit-set-btn:first';
38 var dataObjectId = 'data-object-id';
39 ….
5
6. Решение № 1.
Свой велосипед
придумать правила
рассказать команде
рассказать новичку
написать документацию
написать свой framework
6
8. Angular
используем малый процент функционала
навязывание своей архитектуры
кто-то замечает тормоза
гадит в шаблоны
боль с подлючением jquery плагинов
для single page
8