{"id":19901242,"url":"https://github.com/vbrazhnik/unit-factory-cookbook","last_synced_at":"2026-03-19T12:18:54.768Z","repository":{"id":220985367,"uuid":"317050148","full_name":"VBrazhnik/UNIT-Factory-Cookbook","owner":"VBrazhnik","description":"UNIT Factory // Что нужно знать студенту школы","archived":false,"fork":false,"pushed_at":"2020-11-29T21:58:47.000Z","size":2268,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-08T07:42:58.653Z","etag":null,"topics":["unit-factory"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":false,"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/VBrazhnik.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}},"created_at":"2020-11-29T21:52:03.000Z","updated_at":"2023-01-20T09:14:13.000Z","dependencies_parsed_at":"2024-02-12T01:30:18.143Z","dependency_job_id":null,"html_url":"https://github.com/VBrazhnik/UNIT-Factory-Cookbook","commit_stats":null,"previous_names":["vbrazhnik/unit-factory-cookbook"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/VBrazhnik/UNIT-Factory-Cookbook","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VBrazhnik%2FUNIT-Factory-Cookbook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VBrazhnik%2FUNIT-Factory-Cookbook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VBrazhnik%2FUNIT-Factory-Cookbook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VBrazhnik%2FUNIT-Factory-Cookbook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VBrazhnik","download_url":"https://codeload.github.com/VBrazhnik/UNIT-Factory-Cookbook/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VBrazhnik%2FUNIT-Factory-Cookbook/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30022971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T22:30:10.381Z","status":"ssl_error","status_checked_at":"2026-03-02T22:23:34.650Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["unit-factory"],"created_at":"2024-11-12T20:14:27.282Z","updated_at":"2026-03-02T22:43:55.026Z","avatar_url":"https://github.com/VBrazhnik.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# UNIT Factory Cookbook\n\n![UNIT Factory Cookbook](./images/uf-cookbook.png)\n\n\u003e **Disclaimer**\n\u003e\n\u003e UNIT Factory это школа программирования, открытая по франшизе французской «Школы 42» в Киеве в 2016 году.\n\u003e\n\u003e В 2017 году я стал студентом этой школы.\n\u003e\n\u003e А в 2018 воспользовался возможностью стать ментором для нового набора учащихся.\n\u003e\n\u003e Перед первой встречей с ребятами, которым мне предстояло помогать, я написал следующий текст и опубликовал его на форуме «Школы 42».\n\u003e\n\u003e ![Slack](./images/slack.png)\n\u003e\n\u003e К сожалению, в следующем году этот форум был закрыт и заменен на Stack Overflow. А несколько месяцев спустя — весной 2020 — и сама школа UNIT Factory прекратила свое существование.\n\u003e\n\u003e Поэтому темы, затронутые в этом тексте, как и большинство содержащихся в нем ссылок, на данный момент неактуальны.\n\u003e\n\u003e Это публикация архивной записи. Ее цель — сохранить историю.\n\nПривет!\n\nПеред первой встречей с ребятами, которым мне предстояло помогать в качестве ментора, я решил записать свои мысли и советы, чтобы во время живого разговора ничего не упустить и каждому предоставить одинаковый набор данных.\n\nВ результате получился короткий справочник со списком полезных ресурсов, советов и разъяснений, который я решил опубликовать.\n\nНадеюсь, тем, кто также решил попробовать себя в роли ментора, он послужит своеобразным checklist'ом.\n\nА ребята, которые тоже могут поделиться полезной информацией, дополнят этот пост в комментариях.\n\n## Полезные ресурсы\n\n- [unitportal.click](https://unitportal.click/)\n\nФорум студентов UNIT Factory, где собрано огромное количество полезной информации.\n\nЗдесь можно найти [советы по выполнению проектов](https://unitportal.click/forum/viewforum.php?f=13\u0026sid=02c7ea6d1e9895da833208bde681aec7) от ребят, которые их уже сдали. А также ссылки на статьи и книги, помогающие понять теоретическую основу задания.\n\nТакже здесь доступны [карты кластеров](https://unitportal.click/cluster2/), которые можно просматривать за пределами UNIT Factory.\n\n- [Официальный форум](https://forum.intra.42.fr/)\n\nПолезной информации на этом форуме, к сожалению, немного меньше. А значительная часть постов написана на французском языке.\n\nНо все же и здесь можно найти прекрасные публикации с разъяснениями. В особенности, по проекту `ft_printf`.\n\n- [cheatera.pp.ua](https://cheatera.pp.ua/)\n\nАналог сайта [cheatera.unit.ua](https://cheatera.unit.ua/), который, в отличие от оригинала, позволяет просматривать рейтинг студентов и статистическую информацию за пределами UF.\n\nА также имеет [прекрасный калькулятор](https://cheatera.pp.ua/calculator/), который поможет рассчитать какой уровень будет получен после выполнения конкретного проекта. Нужно только указать сложность проекта (T1, T2 ...) и предполагаемый балл.\n\nЕсли не знаете с кем из студентов проконсультироваться во время работы над проектом, то [раздел 42/project](https://cheatera.pp.ua/students/projects/) подскажет, кто его уже выполнил и на какую оценку.\n\nТакой же раздел есть и на [оригинальном сайте](https://cheatera.unit.ua/42/projects).\n\n### Android-приложение «Intra 42»\n\nВ Google Play существует [приложение «Intra 42»](https://play.google.com/store/apps/details?id=com.paulvarry.intra42), которым удобней пользоваться, чем официальным сайтом.\n\n## О техническом обеспечении\n\n### Как установить или обновить приложение на iMac?\n\n#### О проблеме\n\nК сожалению, на школьных iMac'ах заблокирован доступ в App Store. А студентам предлагается устанавливать ПО из Managed Software Center.\n\nВот только в MSC представлены не все необходимые программы, а те, что все же доступны для скачивания, могут иметь старую версию. (Прав администратора, необходимых для обновления ПО, у нас нет)\n\nКстати, приложение, которое вы скачиваете из MSC, устанавливается в папку `/Applications` на конкретный школьный компьютер, а не на вашу учетную запись.\n\nПоэтому приложения, которыми вы привыкли пользоваться, прийдется устанавливать заново на каждом компьютере, за которым вы еще не сидели. Если этого никто не сделал до вас.\n\n#### Инструкция\n\nКак я уже упомянул, приложения устанавливаются в папку `/Applications`. И, к сожалению, прав на установку в эту directory'ю у нас нет.\n\nНо у нас есть личная папка. Та самая home directory, где хранятся все наши файлы. Её содержимое подгружается на тот школьный iMac, за которым мы логинимся.\n\nИ в этой папке есть своя папка `Applications`. В нее можно попасть с помощью следующей команды:\n\n```\nopen ~/Applications\n```\n\nДля этой папки, как и для home directory в целом, у нас есть все необходимые права.\n\nИменно сюда мы можем устанавливать необходимые приложения.\n\nЧтобы получить обновляемое приложение, нужно перетащить его из папки `/Applications` в папку `~/Applications`.\n\nЧтобы установить приложение, нужно:\n\n1. Скачать его образ — файл с расширением `.dmg`\n\n2. Открыть образ\n\n3. Перетащить иконку приложения в папку `~/Applications`\n\n![App installation](./images/app-installation.png)\n\nК сожалению, этот способ не универсален. Поскольку некоторые vendor'ы ПО не предоставляют необходимый `.dmg`-образ. Но в большинстве случаев его можно скачать с сайта разработчика.\n\n#### Важно\n\nТот факт, что мы помещаем приложения в свою личную папку, имеет два важных последствия. Одно — хорошее, а другое — не очень.\n\n**Хорошее последствие**\n\nПоскольку содержимое папки `home_\u003cлогин\u003e` подгружается на каждый компьютер, за которым мы логинимся, то приложение в папке `~/Applications` также будет доступно нам на всех iMac'ах.\n\n**Плохое последствие**\n\nЛичная папка, где хранятся все наши файлы, ограничена в объеме. Нам доступны всего 5GB.\n\nДанный лимит установлен не из-за жадности бокала или заговора масонов, а чтобы процесс логина не занимал вечность.\n\nНо все же 5GB это довольно мало и стоит следить за тем, какие приложения вы переносите в папку `~/Applications`.\n\nИначе память быстро закончиться.\n\n### Что делать если закончилась память?\n\n#### Как проверить, что закончилась память?\n\nДля этого есть следующая команда:\n\n```\ndu -sh ~/\n```\n\nЕсли выведенная в результате сумма близка к 5GB, то вам предстоит работа по удалению нужных и ненужных файлов.\n\n#### Как удалить ненужные файлы?\n\nВ вашей личной папке также могут появиться файлы, которые вы не создавали. Это файлы кэша, которые можно смело удалить:\n\n```\nrm -rf ~/Library/*42_cache*\n```\n\nЕсли у вас закончилась память, то скорее всего причина именно в этом. Поскольку файлы кэша часто разрастаются до значительного объема.\n\n#### Как найти корень зла?\n\nИногда свободная память пропадает не из-за файлов кэша. А из-за чего-то другого.\n\nЧтобы выяснить, кто «сожрал» всю память в конкретной папке, можно воспользоваться этой командой:\n\n```\ndu -sh ./*\n```\n\n### Не работает мышка / Завис компьютер\n\nВ UNIT Factory находятся 422 компьютера, за которыми каждый день сидят сотни студентов. При таком потоке людей мелкие неполадки в работе техники неизбежны.\n\nЕсли у вас не работает колесико мышки или повис компьютер, то необходимо:\n\n1. Зайти в Slack\n2. Зайти в чат с самим собой\n3. В этом чате написать:\n\n```\n/marvin broken eXrYpZ\n```\n\nX — номер кластера. Y — номер ряда. Z — номер места.\n\nНикого беспокоить не нужно. В том числе не стоит писать в bocal или любой другой диалог.\n\nПросто оставьте репорт marvin'у и пересядьте за другой компьютер. Когда у UNIT Team появится время, проблему устранят.\n\nИсключением из правила «Оставить репорт и пересесть» может быть только событие, требующее немедленного вмешательства:\n\n- iMac завис, но музыка продолжает звучать (Такое уже было)\n- iMac горит (Такого еще не было)\n\nВ таких случаях можно и нужно побеспокоить bocal.\n\n### Полезные команды marvin'a\n\nMarvin это бот, который много чего знает и много чего умеет.\n\nОзнакомиться со всеми его возможностями можно с помощью команды:\n\n```\n/marvin help\n```\n\nСреди прочего он подскажет пароль от Wi-Fi и пароль для входа в UNIT.City.\n\n### «Слетающие» настройки\n\nО всех возможных причинах, которые могут вызвать сброс к настройкам «по умолчанию», мне не известно.\n\nНо об одной причине, выявленной с помощью собственных экспериментов, расскажу.\n\nКак известно, время разлогина составляет 42 минуты. Если вас вылогинило, то пока за этот компьютер еще никто не садился, быстро залогинтесь обратно.\n\nВ таком случае настройки сохраняться.\n\nНо если вы после такого принудительного вылогина пересядете за другой компьютер или уйдете домой, то ваши настройки сбросятся.\n\nПоэтому, даже если вам уже пора уходить или вы решили пересесть, залогиньтесь и вылогиньтесь на том же iMac'e, чтобы сохранить настройки.\n\n## Обучение\n\n### Что такое blackhole?\n\nBlackhole это такие контрольные точки или, если хотите, мини-дедлайны. Они нужны для того, чтобы дать студенту ориентир, как он двигается по учебной программе.\n\nЧтобы вложиться в каждый из трех blackhole'ов, у вас есть три попытки.\n\nЕсли вы не успели выполнить условия blackhole'а за первый временной промежуток, то вы получаете вторую попытку и такой же временной отрезок.\n\nПри второй неудаче вас ждет разговор с UNIT Team и новая попытка.\n\nПосле третей неудачи вас ждет разговор с UNIT Team и, возможно, отчисление из школы.\n\nСледить за своей успеваемостью вы можете на специальной странице. Попасть на эту страницу можно нажав на значок книги с закладкой в верхней панели Intra'ы или [пройдя по ссылке](https://profile.intra.42.fr/users/me/quests).\n\n### Проверки\n\n#### Проверочную форму можно почитать заранее\n\nНа GitHub'е [есть репозитории](https://github.com/rizkyario/42-corrections), где опубликованы pdf-файлы проверочных форм. С ними можно ознакомиться перед сдачей проекта, чтобы убедиться, что вы ничего не упустили.\n\n«Подгонять» свой проект («Лишь бы на указанных тестах работало...») под проверочную форму нельзя. Ваш проект должен быть корректным в целом, а не только во время работы над приведенными case'ами.\n\nКстати, в некоторых формах отдельно указано, что оцениваемый проект должен быть проверен на предмет подобной «адаптации».\n\n**В случае применения такого подхода вы получите -42.**\n\nСсылка на репозиторий с pdf-ками в данном разделе приведена исключительно для удобства. Вы в любом случае ознакомитесь с их содержанием заранее, когда будете проверять других ребят.\n\n#### Несколько проверок на одно время — тяжкий грех\n\nЕсли вы выступаете в роли проверяемого, то **не назначайте несколько проверок на одно и то же время**. Так делать нельзя.\n\nЕсли вы проверяющий, то обнаружив на месте еще одного, который уже начал проводить оценивание, скажите, что раз сложилась такая ситуация, вы подойдете чуть позже.\n\nОдновременную проверку вы не проводите!\n\nОтноситесь к подобным эксцессам спокойно. Часто проверки накладываются не по вине студента.\n\nВедь не все проекты можно полноценно проверить за 30 минут. А проверяющие, разведенные во времени с разницей в несколько часов, могут сильно опоздать и прийти в один момент. (Не будьте такими проверяющими, но к другим относитесь с пониманием)\n\n#### Укажите номер телефона в профиле Intra'ы\n\nИногда случается, что проверяющий задерживается. У него должна быть возможность оперативно вас предупредить об этом. А у вас — возможность быстро его найти.\n\nТакже иногда система сбоит и может перестать отображать кто и где сидит.\n\nПри таких форс-мажорных обстоятельствах телефонная связь вас выручит.\n\n#### Unit-тесты\n\nПрохождение или fail любого теста на работоспособность проекта, скачанного из интернета или написанного кем-то из знакомых, не является доказательством того, что данный проект правильный или неправильный.\n\nТесты пишут такие же люди, как и вы. Они могут ошибаться.\n\nПоэтому слепо верить любым тестам, даже самым популярным, не стоит.\n\nЧтобы вынести вердикт, корректный проект или нет, перепроверяйте лично все case'ы, на которые указывает тест.\n\n#### Свою работу нужно защищать\n\nСтрогий проверяющий, который понимает суть проекта и может по фактам рассказать, где вы ошиблись, это хорошо.\n\nНе обижайтесь, если он заслужено ставит вам низкий бал. (Вроде, нет причины для обиды, но случаи бывали)\n\nНо не всегда проверяющий бывает прав. Тогда ваша задача переубедить его. **Переубедить аргументами**.\n\n«Вот здесь в subject'е (проверочной форме) указано, что нужно делать так» это аргумент.\n\n«Вот код, который доказывает мою точку зрения. Давай запустим его и посмотрим» это аргумент.\n\n«Мне кто-то говорил, что так нужно делать. Но почему так, я не знаю» это не аргумент.\n\n«У кого-то в репозитории на Github так же сделано» это не аргумент.\n\n#### «У меня все работает»\n\n_Внимание! В этом разделе приведена информация, опирающаяся на факты, но не имеющая стопроцентного подтверждения._\n\nДовольно часто в канал bocal'а приходят сообщения следующего содержания: «У меня на iMac'е все работает. Это у вас на сервере проблема».\n\nТак вот. На сервере нет проблемы. Если вы посмотрите на пришедшие вам trace'ы, то вверху будет указано какой компьютер проверял ваш код.\n\n![Trace](./images/trace.png)\n\nЕще раз. Ваш проект проверяется на таком же iMac'е. В общем, в 99% процентах случаев «дело в тебе», хотя по началу может казаться, что это не так.\n\n## Разное\n\n### Нужна справка, что я учусь в UNIT Factory\n\nНа вашей странице в Intra'e есть кнопка «School record». Она сделает все необходимое.\n\n### Я видел автобус с надписью «UNIT»\n\nМы тоже его видели.\n\nОт метро «Дорогожичи» до UNIT.City действительно курсирует специальный автобус.\n\nС его расписанием можно ознакомиться [на официальном сайте UNIT.City](https://unit.city/shuttle-bus/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvbrazhnik%2Funit-factory-cookbook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvbrazhnik%2Funit-factory-cookbook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvbrazhnik%2Funit-factory-cookbook/lists"}