Size: 750
Comment:
|
← Revision 15 as of 2010-05-17 14:34:49 ⇥
Size: 8764
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
#acl FrBrGeorge,Ximaera,eSyr,GQ,EdwardHades,MaximByshevskiKonopko:read,write,admin,revert,delete -All:read | ## page was renamed from LecturesCMC/ExamQuestions #acl FrBrGeorge,Ximaera,eSyr,GQ,EdwardHades,MaximByshevskiKonopko,dendik,OlgaTsaun,Allena:read,write,admin,revert,delete All:read Разделы третьего уровня написал (или скопировал из планов) FrBrGeorge, разделы второго уровня получены от докладчиков. Внимание: объём вопросов по разным темам неравномерен, просьба глубоко не зарываться. === Общие принципы программирования для Linux в свободном сообществе === * Постановка задачи: детализация, разделение на фронтенд/бэкенд * Изолированная разработка / совместное участие в существующем проекте / ветвление существующего проекта: достоинства и недостатки * Значение стандартов. POSIX, RFC, … * Принцип KISS и его значение при работе в сообществе * Выбор языка разработки * Особенности Linux как среды разработки и эксплуатации == Соглашения о стиле программирования == 1. Понятие «coding style» 1. Цели введения coding style в свободном сообществе * Дисциплина разработки и её влияние на сообщество * Предотвращение распространённых ошибок и заблуждений * Увеличение повторного использования кода * Популяризация определённых «правильных» методов разработки 1. Особенности рекомендованного стиля программирования в зависимости от задач, решаемых сообществом 1. Linux kernel coding style как пример подобного соглашения: * Мотивация * Пробелы и табуляции * Именование и typedef * Функции и goto * Комментарии; комментирование функций, данных и кода * Особенности LKCS: Magic numbers, #ifdefs, labaled identifiers 1. Другие CSP: NetBSD, Google, Mozilla, … === Make === * Makefile: Workflow сборки. * Понятие зависимости и правила. * Недостатки простого понятия правил. * Встроенные правила и встроенные переменные. * Правила-шаблоны. * Автоматические переменные. * Автоматическая генерация зависимостей. * Расширения GNU make (для подстановок, правил-шаблонов, условий). === CMake === 1. Задачи, решаемые с помощью CMake 1. Кроссплатформенность CMake 1. Возможности CMake: * изолированный каталог сборки * порождение исполняемых файлов и библиотек * Порождение `config.h` * установка собранного проекта * поиск требуемых по зависимости библиотек и функций * специальные модули для распространённых библиотек 1. Другие инструменты автоматической сборки: SCons, ant, qmake, … == Git == 1. Системы управления версиями: понятие (расплывчатое). 1. Системы управления версиями: основные задачи. 1. Системы управления версиями: основные операции. 1. Централизованные системы управления версиями. 1. Распределённые системы управления версиями: основные понятия, концепции. 1. Распределённые системы управления версиями: сравнение с централизованными. 1. Git: основные принципы и отличительные черты. 1. Git: ветви и удалённые репозитории. 1. Git: методы синхронизации репозиториев. 1. Распределённые системы управления версиями: модели совместной разработки. |
Line 7: | Line 70: |
== buildbot == 1. Сборочные системы: понятие, основные задачи, примеры реализаций. 1. Buildbot: схема работы, основные компоненты. 1. Buildbot: интерфейсы уведомлений. == Doxygen == 1. Документирование кода: цели, классификация по Макконнеллу, способы. 1. Генерация документации к проекту на основе комментариев к коду: цели, ограничения. 1. Doxygen: сфера применения, принципы работы, функциональность. Отличия от javadoc. == GDB == 1. Интерактивная runtime-отладка приложений: цели, функциональность. 1. Инструмент GDB: функциональность, примеры команд, фронтэнды. == Strace/Ltrace == 1. Системные вызовы в Си и UNIX: классификация функций Glibc по отношению к вводу-выводу, принципы работы механизма системных вызовов. 1. Инструмент strace: цели, функциональность, ограничения. 1. Инструмент ltrace: цели, отличия от strace, ограничения. 1. Принципы динамического связывания в GNU/Linux. Переменные окружения. Механизм отладки специфических внешних вызовов. === Qt === 1. Объектная модель Qt 1. Графические возможности Qt 1. Метаобъекты, сборка Qt-проекта 1. Что разработчики Qt причисляют к достоинствам этого инструментария? == Инструментальные библиотеки == 1. Зачем нужны библиотеки, что такое "разделяемые библиотеки" 1. Кроссплатформенность 1. Задачи, решаемые библиотекой "общего назначения" * унификация окружения * решения популярных подзадач * обеспечение пользовательского интерфейса 1. POSIX * Недостаточность POSIX как библиотекой "общего назначения" 1. GLib как пример инструментальной библиотеки 1.#0 Ориентация на GUI 1. Кроссплатформенность 1. Повышение уровня работы с программными примитивами (напр., StreamingIO) 1. "Новые" программные примитивы (списки, исключения, кодировки, IPC, сеть и т. п.) 1. !QtCore и wxBase, их особенности 1. Что не входит в библиотеку "общего назначения"? 1. Особенности "ориентации на GUI" |
Разделы третьего уровня написал (или скопировал из планов) FrBrGeorge, разделы второго уровня получены от докладчиков.
Внимание: объём вопросов по разным темам неравномерен, просьба глубоко не зарываться.
Общие принципы программирования для Linux в свободном сообществе
- Постановка задачи: детализация, разделение на фронтенд/бэкенд
- Изолированная разработка / совместное участие в существующем проекте / ветвление существующего проекта: достоинства и недостатки
- Значение стандартов. POSIX, RFC, …
- Принцип KISS и его значение при работе в сообществе
- Выбор языка разработки
- Особенности Linux как среды разработки и эксплуатации
Соглашения о стиле программирования
- Понятие «coding style»
- Цели введения coding style в свободном сообществе
- Дисциплина разработки и её влияние на сообщество
- Предотвращение распространённых ошибок и заблуждений
- Увеличение повторного использования кода
- Популяризация определённых «правильных» методов разработки
- Особенности рекомендованного стиля программирования в зависимости от задач, решаемых сообществом
- Linux kernel coding style как пример подобного соглашения:
- Мотивация
- Пробелы и табуляции
- Именование и typedef
- Функции и goto
- Комментарии; комментирование функций, данных и кода
- Особенности LKCS: Magic numbers, #ifdefs, labaled identifiers
- Другие CSP: NetBSD, Google, Mozilla, …
Make
- Makefile: Workflow сборки.
- Понятие зависимости и правила.
- Недостатки простого понятия правил.
- Встроенные правила и встроенные переменные.
- Правила-шаблоны.
- Автоматические переменные.
- Автоматическая генерация зависимостей.
- Расширения GNU make (для подстановок, правил-шаблонов, условий).
CMake
- Задачи, решаемые с помощью CMake
- Кроссплатформенность CMake
- Возможности CMake:
- изолированный каталог сборки
- порождение исполняемых файлов и библиотек
Порождение config.h
- установка собранного проекта
- поиск требуемых по зависимости библиотек и функций
- специальные модули для распространённых библиотек
- Другие инструменты автоматической сборки: SCons, ant, qmake, …
Git
- Системы управления версиями: понятие (расплывчатое).
- Системы управления версиями: основные задачи.
- Системы управления версиями: основные операции.
- Централизованные системы управления версиями.
- Распределённые системы управления версиями: основные понятия, концепции.
- Распределённые системы управления версиями: сравнение с централизованными.
- Git: основные принципы и отличительные черты.
- Git: ветви и удалённые репозитории.
- Git: методы синхронизации репозиториев.
- Распределённые системы управления версиями: модели совместной разработки.
Valgrind
- Типичные ошибки при использовании памяти: утечки, выход за границу массива, использование неинициализированных значений. Их возможные последствия.
- Ошибки в многопоточных приложениях: "состояние гонки" (data races), "тупики" (deadlocks). Их возможные последствия.
- Инструменты для поиска ошибок при использовании памяти и многопоточных ошибок.
buildbot
- Сборочные системы: понятие, основные задачи, примеры реализаций.
- Buildbot: схема работы, основные компоненты.
- Buildbot: интерфейсы уведомлений.
Doxygen
- Документирование кода: цели, классификация по Макконнеллу, способы.
- Генерация документации к проекту на основе комментариев к коду: цели, ограничения.
- Doxygen: сфера применения, принципы работы, функциональность. Отличия от javadoc.
GDB
- Интерактивная runtime-отладка приложений: цели, функциональность.
- Инструмент GDB: функциональность, примеры команд, фронтэнды.
Strace/Ltrace
- Системные вызовы в Си и UNIX: классификация функций Glibc по отношению к вводу-выводу, принципы работы механизма системных вызовов.
- Инструмент strace: цели, функциональность, ограничения.
- Инструмент ltrace: цели, отличия от strace, ограничения.
- Принципы динамического связывания в GNU/Linux. Переменные окружения. Механизм отладки специфических внешних вызовов.
Qt
- Объектная модель Qt
- Графические возможности Qt
- Метаобъекты, сборка Qt-проекта
- Что разработчики Qt причисляют к достоинствам этого инструментария?
Инструментальные библиотеки
- Зачем нужны библиотеки, что такое "разделяемые библиотеки"
- Кроссплатформенность
- Задачи, решаемые библиотекой "общего назначения"
- унификация окружения
- решения популярных подзадач
- обеспечение пользовательского интерфейса
- POSIX
- Недостаточность POSIX как библиотекой "общего назначения"
- GLib как пример инструментальной библиотеки
- Ориентация на GUI
- Кроссплатформенность
- Повышение уровня работы с программными примитивами (напр., StreamingIO)
- "Новые" программные примитивы (списки, исключения, кодировки, IPC, сеть и т. п.)
QtCore и wxBase, их особенности
- Что не входит в библиотеку "общего назначения"?
- Особенности "ориентации на GUI"