{"id":22382146,"url":"https://github.com/olgapavlova/lectures","last_synced_at":"2025-10-25T04:38:10.106Z","repository":{"id":263981036,"uuid":"891969056","full_name":"olgapavlova/lectures","owner":"olgapavlova","description":"Материалы к лекциям","archived":false,"fork":false,"pushed_at":"2025-10-03T05:52:45.000Z","size":18197,"stargazers_count":99,"open_issues_count":0,"forks_count":10,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-10-03T07:12:09.312Z","etag":null,"topics":["avr","bdd","books","c","driver","esp32","git","kernel","keyboard","linux","makefile","patterns","stm32"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/olgapavlova.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-11-21T09:30:36.000Z","updated_at":"2025-10-03T05:52:49.000Z","dependencies_parsed_at":"2024-12-06T20:35:23.432Z","dependency_job_id":"f1d36e7a-63e7-49f6-b82a-53fd9ab69d1a","html_url":"https://github.com/olgapavlova/lectures","commit_stats":null,"previous_names":["olgapavlova/lectures"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/olgapavlova/lectures","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olgapavlova%2Flectures","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olgapavlova%2Flectures/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olgapavlova%2Flectures/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olgapavlova%2Flectures/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/olgapavlova","download_url":"https://codeload.github.com/olgapavlova/lectures/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olgapavlova%2Flectures/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279078140,"owners_count":26098456,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-15T02:00:07.814Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avr","bdd","books","c","driver","esp32","git","kernel","keyboard","linux","makefile","patterns","stm32"],"created_at":"2024-12-05T00:11:55.102Z","updated_at":"2025-10-25T04:38:10.100Z","avatar_url":"https://github.com/olgapavlova.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Эксперименты с языком C • Стримы для начинающих\n* [Прямые эфиры на Twitch](https://www.twitch.tv/olgampavlova) каждую пятницу в 🕖 19:00 GMT+3.\n* Архив видеозаписей на [Youtube-канале](https://www.youtube.com/@olgapavlova).\n\n**Рассказы об интересном в языке C** и вокруг него. Это _не_ рассказы о том, как надо или как правильно. Это рассказы о том, как можно и что бывает. И живые попытки сделать что-то конкретное [в прямом эфире](https://www.twitch.tv/olgampavlova).\n\n## Дополнения к базе языка C\n1. [Нюансы работы с файлами в C на Linux](file_in_c_linux) ```2024-11-29```\n2. [Приёмы использования указателей на функции](function_pointers) ```2024-12-27```\n3. [Мнимый полиморфизм в Си](polymorphism) ```2025-01-03```\n4. [Ошибки как часть дизайна программы на Си](errors_design) ```2025-01-10```\n5. [Как делать функции с произвольным количеством аргументов произвольных типов](menu_vargs) ```2025-01-17```\n6. [Практикуем мышление указателями](pointer_thinking) ```2025-01-24```\n7. [Как работает и не работает обобщённый указатель void * в языке C (Си)](voidstar) ```2025-01-31```\n8. [Препроцессор и его макросы в C](macro) ```2025-02-07```\n9. [Менеджер динамической памяти для небольших проектов на C](regmem) ```2025-02-21```\n\n## Тестирование\n1. [Основы модульного тестирования в C](unit_testing_base) `2024-11-22`\n2. [Продвинутые техники и конкретные приёмы работы в \u003ccheck.h\u003e](checkplus) `2024-12-20`\n3. [Библиотека check.h: как и зачем хранить тестовые данные во внешних файлах](checktxt) `2025-08-29`\n\n## Знания, полезные для создания драйверов\n1. [Механизм setjmp()/longjmp()](setjmp) ```2025-03-07```\n2. [Роль побитовых операций в C](bitops) ```2025-03-14```\n3. [Самое-самое начало многопоточности](threads) ```2025-03-21```\n4. [Многопоточный сканер сети](threadsync) ```2025-03-28```\n5. [Первый модуль ядра и инструменты для его разглядывания](khello) ```2025-04-04```\n6. [Превращаем модуль ядра в драйвер](chardrive) `2025-04-11`\n7. [Шина, протокол, микроконтроллер — наглядное первое знакомство](tinyhard) `2025-04-18`\n8. [Виртуальная и физическая память в ядре Linux • Щупаем средствами C](kmemory) `2025-04-25`\n9. [Цена «естественных прав» на память в ядре Linux • Щупаем средствами C](kalloc) `2025-05-02`\n\n## Проект «Старая клавиатура» (базовый для изучения драйверов)\n1. [Порты, протоколы и регистры на нашу голову](kbmicro) `2025-05-09`\n2. [Превращаем электричество в данные на микроконтроллере ATmega32u4](kuart) `2025-05-16`\n3. [USB HID + запуск хоть чего-то на разных микроконтроллерах](usbhid) `2025-05-23`\n4. [USB HID • Реализация на LUFA](lufa) `2025-05-30`\n5. [Обработка сигналов от специальной клавиатуры](kspec) `2025-06-06`\n\n## Toolbox и источники информации\n1. [Отладчики в С • gdb—lldb](gdb) ```2024-12-06```\n2. [Логи в небольших проектах на C](logs) ```2024-12-13```\n3. [Бумажные книги по C и смежным вопросам](books) `2025-06-13`\n4. [Шаблон небольшого проекта на C • Начало](ctemp_start) `2025-06-20`\n5. [Makefile для новичков: пара приёмов и общий настрой использования](makenew) `2025-06-27`\n6. [Скрещиваем Docker, Makefile и gcc](mosaic) `2025-07-04`\n7. [Экономим нервы: две фишки git’а, затейливый bash-скрипт и настройки в отдельном файле](gitco) `2025-07-11`\n8. [Flex — генератор сканеров текста (лексических анализаторов)](flex) `2025-09-05`\n9. IDE без фантазий `2025-09-19`\n10. [Измеряем скорость C-кода](profiling) `2025-10-17`\n\n## Странные затеи\n1. [Рисуем на осцилллографе](oscipaint) `2025-07-18`\n2. [Режим Лиссажу, скважность ШИМ из файла и формат изображений PPM/PGM/PBM (PNM)](lis) `2025-07-25`\n3. [Расшифровываем WiFi-логи](cardsnif) `2025-10-03`\n\n## Микроконтроллеры\n1. [Крохотный конечный автомат на ATtiny13A и C](wrem) `2025-01-01`\n2. [Зачем нам в микроконтроллере прерывания](drink) `2025-08-08`\n3. [Чуть больше о коде в прерываниях: варианты архитектуры, рефакторинг, плохие идеи](interrupt) `2025-08-15`\n4. [Плата «Мир» с двумя микроконтроллерами](peace) `2025-09-26`\n5. [Реанимация ESP8266 — можно даже без C](8266) `2025-10-10`\n\n## Алгорифмы, структуры данных, паттерны\n1. [(Анти)паттерн Singleton в C (Си)](singleton) `2025-02-14`\n2. [Структуры данных для себя, любимых](structdata) `2025-02-28`\n3. [Разбираем алгорифм Double Dabble своими руками](doubledabble) `2025-08-22`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Folgapavlova%2Flectures","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Folgapavlova%2Flectures","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Folgapavlova%2Flectures/lists"}