faq_for_school_21 icon indicating copy to clipboard operation
faq_for_school_21 copied to clipboard

FAQ Школы 21 для новичков

FAQ Школы 21 для новичков и не очень

Эта статья предназначена для тех, кто находится в Школе 21 недавно, и еще не успел наступить на дорожку из граблей. Так же это будет являться памяткой для студентов-олдфагов, которые что-либо упустили или забыли, но не хотят волновать токсичный Slack вопросами, которые кажутся дурацкими настоящим просветленным гуру.

Настоятельно прошу всех новоприбывших обязательно читать nometa.xyz, прежде чем задавать свой первый вопрос в слаке.
А так же учится задавать вопросы примерно так:

Привет я подсяду? У меня в проекте PROJECT_NAME происходит PROBLEM. Не могу понять в чем дело. Пробовал гуглить по запросу SEARCH_REQUEST и SEARCH_REQUEST, почитал вот тут LINK и LINK, но не совсем понял, что значит QUOTE по этой LINK: ведь в man FUNCTION говорится X, у меня X, но почему-то не работает... Дебаггером прошелся, выходит, что на строчке N переменная VAR у меня становится VALUE, хотя я ожидал там ANOTHER_VALUE. Как думаете, откуда взялась ANOTHER_VALUE? Код в треде, система SYSTEM_NAME.

Этот документ составлен мной и другими студентами Школы 21, и носит рекомендательный характер. Ответы на все акутальные вопросы всегда можно найти здесь — 21-school.ru/adm, так же не забывайте про peer-to-peer. По вопросам, несостыковкам и ошибкам в FAQ пишите в Slack. Мой ник — swarner.

* — Некоторые разделы FAQ актуальны только для студентов 1-11 волн, обучающихся на платформе Intra. Такие разделы помечены звездочкой *.

Содержание

Вопросы, не связанные с технической стороной

  • Удаленная сдача проектов в период карантина
  • Случайно поставил неверную оценку за проект/забыл прикрепить ссылку с видео
  • Вопросы о ТИЖах / Пенальти
  • Сообщения в нашем Slack удаляются! Давайте переходить в {messenger_name}
  • Как привести гостя в Школу
  • Что делать, если заболел
  • Что делать, если что-то разлил/испачкал
  • Что делать, если сломался/не работает Mac
  • Забыл разлогиниться и теперь при попытке зайти в учетку выскакивает какая-то ошибка
  • Обязательные педагогические встречи
  • Получение справки от Школы
  • Где получить вещи, купленные за Wallets / Coins
  • Как получить лицензию JetBrains (Clion, PyCharm и т.д.)
  • Пора делать резюме. С чего начать?
  • Полезные каналы в Slack
  • Пришло сообщение о blackhole*
  • Вопросы по норме кода*
  • Вопросы об экзаменах (Exam Rank 02-06)*
  • Калькуляторы уровней и прочие полезности*

Вопросы, связанные с технической стороной

  • Coding WIKI*
  • GCC или Clang?*
  • Ошибка при клонировании репозитория (Permission denied (publickey))*
  • Я настроил norminette по официальному гайду, но он продолжает не работать.*
  • Установка Oh-My-Zsh
  • Установка HomeBrew на Mac
  • Как проверять оставшееся место на школьном маке?
  • Кончилось место на маке. Как почистить кэш?
  • Ликбез по устройству памяти компьютера и утечкам
  • Установка valgrind для поиска утечек
  • Проверка на утечки в графическом проекте (FDF, Fract'ol и другие)
  • Leaks: ошибка "Failed to gain authorization"
  • Настройка дебаггера в VSCode
  • Настройка CLion
  • Настройка Xcode для работы с проектами Школы 21*
  • Создание проекта в Xcode*
  • norminette для Xcode*
  • Плагин для Xcode Header 42*
  • Сборник чекеров на проекты*

Вопросы, не связанные с технической стороной

Удаленная сдача проектов в период карантина

  • Официальные правила сдачи и проверки проектов - ТУТ
  • Официальная информация, мануалы по настройке Windows, MacOS и Ubuntu, полезные бонусы для студентов Школы и правила Школы от ADM - ТУТ

Случайно поставил неверную оценку за проект/забыл прикрепить ссылку с видео

Помните! Если вы вдруг ошиблись с выставлением оценки за проект или забыли прикрепить ссылку с записью проверки, то из-за вас человеку придется заново сдавать проект, потому, что ни Bocal / Support, ни ADM больше не исправляют и не сбрасывают такие проверки.
Будьте внимательны и аккуратны с проверками, иначе вы очень сильно подпортите человеку нервы, заставляя его сдавать проект, тратя вновь кучу времени и усилий!

Вопросы о ТИЖах / Пенальти

Получил ТИЖ / Пенальти, что делать?

  1. Записаться в intra / edu на удобный вам день, кроме субботы и воскресенья.
  2. Подойти в назначенный день в ADM в 11:00 и получить задание.
  3. Отрабатывать ТИЖ / Пенальти .

Мне дали 2/4/8 часовой ТИЖ / Пенальти. Как это?

Администрация раздает ТИЖи / Пенальти в зависимости от тяжести проступков. В итоге вы можете отрабатывать 8 часовой ТИЖ / Пенальти, каждый день приходя в 11:00, выполняя задание по 2 часа в течение 4 дней.

Я записался на отработку ТИЖа / Пенальти, но не пришел. Что теперь?

За неявку на отработку администрация автоматически даст вам второй двухчасовой ТИЖ / Пенальти. Остается лишь корить себя за нерасторопность и идти отрабатывать.

Я записался на отработку, но теперь хочу перенести на другой день. Как быть?

Нужно писать в канал ADM в Slack и просить перенести отработку.

Сообщения в нашем Slack удаляются! Давайте переходить в {messenger_name}

Мы все прекрасно знаем, что сообщения в нашем слаке удаляются. Для того, чтобы история сохранялась, Школе необходимо платить весьма приличную сумму денег слаку (~100000$) из-за большого количества человек. Почему же мы продолжаем общаться в слаке? Потому, что это позиция администрации Школы. Если хотите, то можете попробовать переманить коммьюнити в другой мессенджер, но как показывает практика и многочисленные попытки новых студентов - это бесполезно :D

Как привести гостя в Школу

Переходим по ссылке — ТУТ и записываем гостя.
Помните основные правила — гость приходит максимум на час, везде ходит с сопровождающим и носит бейджик. Записывать гостя необходимо за день до его прибытия.
В выходные привести гостя нет возможности, потому что ADM присутствует в Школе только по будням.

Что делать, если заболел

При болезни лучше сидите дома, чтобы не заражать других студентов. Справки администрации приносить не нужно. Однако если вы не успеваете в дедлайны и заболели, пишем на почту вашего кампуса и просим отсрочку дедлайнов по болезни, после приносим им все справки. Естественно, болезнь у вас должна быть серьезнее, чем насморк.

Что делать, если что-то разлил/испачкал

Пишем в канал в Slack #help о случившемся, или подходим к уборщицам и просим убрать беспорядок.

Что делать, если сломался/не работает Mac

Пишем в канал в Slack #report о случившемся и пересаживаемся за другой компьютер

Забыл разлогиниться и теперь при попытке зайти в учетку выскакивает какая-то ошибка

Все очень просто. Нужно нажать кнопку "Terminate sessions" и все. Однако вероятно при этом у вас сбросятся настройки учетки и придется выставлять их заново, поэтому лучше всего не забывать разлогиниться.
Иногда после всего этого Intra начинает насчитывать вам время бесконечно и неправильно указывает за каким компьютером вы сидите. Решение также тривиально — пишем в #report и ждем пока исправят.

Обязательные педагогические встречи

Что делать, если я не могу прийти (работаю/не успеваю)?

К сожалению, приходить нужно обязательно. При неявке на встречу выдается ТИЖ / Пенальти.

У меня уважительная причина для неявки. Кому писать?

Пишем вашу причину в ADM или на почту и ждем ответа.

Как проверяют присутствие на встрече?

На входе стоит Face ID, который определяет по лицу кто и во сколько зашел в Школу. Если встреча проходит онлайн, присутствие на ней тоже учитывается.

Получение справки от Школы

Вам нужна справка от Школы для армии/вуза/посольства. Нашей справкой об обучении является контракт со Школой. При необходимости сканируем и показываем копию договора.

Где получить вещи, купленные за Wallets / Coins

Приходим в ADM в рабочее время и просим выдать вашу покупку.

Как получить лицензию JetBrains (Clion, PyCharm и т.д.)

  1. Зайти на сайт JetBrains и создать аккаунт.
  2. Далее перейти по ссылке Apply for a free student or teacher license for educational purposes
  3. Нажать "Apply now".
  4. Ввести правильно все свои данные в форме. Email нужно указывать ваш школьный - [ваш ник]@student.21-school.ru.
  5. Ждать подтверждения на почте.

Пора делать резюме. С чего начать?

  • Прочитайте рекомендации по написанию к резюме
  • Не забывайте про FAQ в закрепе канала #internship
  • Заходите на сайт canva.com и начинайте создавать резюме :)

Полезные каналы в Slack

  • #chess_school21 — шахматный клуб.
  • #школьныйкофе — раз в неделю встречаемся с новым человеком и пьем кофе.
  • #мафия — мафия в московском кампусе.
  • #101км — здесь марафоны, полумарафоны и неравнодушные к бегу
  • #21entrepreneurs — клуб предпринимателей и стартапов
  • #21hackers — канал с хакатонами.
  • #21lectures — студенты пишут, кого хотят позвать в школу в качестве лектора.
  • #it_news — новости из мира IT, митапы, вебинары, хакатоны.
  • #born_to_code — канал по вопросам о проектах и коде.
  • #lab_moscow — канал робототехники в Москве.
  • #lab_kazan — канал робототехники в Казани.
  • #lab_news — новости из мира электроники и робототехники.
  • #coding_cups — контесты по программированию.
  • #kvartira — поиск жилья.
  • #datascience — канал дата саентистов.
  • #web — канал веб-разработчиков.
  • #school_life — обзор мероприятий и каналов.
  • #java — в основном Java SE.

Пришло сообщение о Blackhole*

Вы заходите в интру, а вам высвечивается ошибка "Blackhole". Это означает, что вы провалили французский дедлайн, где нужно получить 7 уровней за полгода. Но наша Школа живет по своим дедлайнам, так что волноваться не о чем. Просто нажимаем "продолжить игру". Но если вы не можете после зайти в интру и/или нажали "покинуть игру", то пишем в #report и просим разблокировать учетку.

Вопросы по норме кода*

Где найти актуальные правила нормы?

По ссылке - ТУТ. Перевод правил нормы на русский вы можете найти - ТУТ. Перевод оставляет желать лучшего, и вообще — учите английский, он программисту необходим.

Можно ли использовать макросы?

Нельзя. Norminette и пиры не пропустят такие вещи как:

#define SUM(x, y) (x + y)

К тому же в подобных вещах абсолютно нет нужды. Просто создайте отдельную функцию.

Можно ли использовать глобальные или статик переменные?

Статические переменные используются без ограничений, глобальные с учётом обоснования (см. разд. II.1 Правил). Обратите внимание, что в некоторых проектах использование глобальных переменных прямо запрещено.
Необоснованное использование глобальной переменной: счётчики, переменная использованная в одной функции. Обоснованное использование: ссылка на структуру хранения, например, символьный буфер.

Можно ли использовать константы и структуры из библиотек limits.h или bool.h?

Можно. Если сомневаетесь, просто скопируйте исходный код себе в проект.

Как правильно оформить комментарий?

В теле функции комментарии не допускаются. Комментарии в стиле С99 - //, запрещены. (см. разд. II.11 Правил). Правильно оформленный комментарий выглядит так:

/*
** Текст комментария.
*/

Вопросы об экзаменах (Exam Rank 02-06)*

Во сколько и когда бывают экзамены?

По четвергам и субботам в 12:00 (МСК) и 15:00 (КЗН).

Как правильно залогинится на экзамене?

  • Приходим и логинимся с помощью учетки экзамена — exam:exam.
  • Далее заходим в терминал и пишем kinit [ваш логин] и вводим ваш пароль.
  • Ждем команды от экзаменаторов о начале экзамена и после в терминале пишем examshell.
  • Экзамен начался!

Нужно ли приводить к норме на экзамене?

Нет. На экзамене это не нужно.

Я все сделал верно, протестил, а Moulinette выдала 0!!!

Значит что-то неверно. Внимательно читайте трассировку от Moulinette (её пониманию очень поможет знание команды diff). Так же вероятно вы забыли скомпилировать с флагами -Wall -Werror -Wextra и не увидели скрытой ошибки. Впрочем, Moulinette — программный комплекс, и в нём тоже могут быть ошибки. Если считаете, что это именно ваш случай — можете попробовать оспорить в Bocal / Support.

Калькуляторы уровней и прочие полезности*

Вопросы, связанные с технической стороной

Coding WIKI*

Очень полезная notion страничка, которая содержит множество полезной учебной информации (лекции/гайды/инструкции/памятки).
Ссылка - Coding WIKI

GCC или Clang?*

Не забываем, что у нас в школе используется Clang, а не GCC (сделан алиас). Между ними присутствуют сильные разничия (в частности GCC строже при -Werror -Wall -Wextra). Так, что при работе на своей системе компилируем с помощью Clang.

Ошибка при клонировании репозитория (Permission denied (publickey))*

Не забываем выполнять действия из 21-school.ru/ssh:

  1. ssh-keygen -t rsa
  2. Три раза Enter
  3. cat ~/.ssh/id_rsa.pub
  4. Всё содержимое файла вставить в интру по ссылке https://profile.intra.42.fr/gitlab_users/new
  5. Должен быть включен школьный VPN.

Если проблема остается после всех вышеперечисленных действий, то обращаемся сначала к пирам. Если они не помогают, пишем в #report о проблеме.

Я настроил norminette по официальному гайду, но он продолжает не работать.*

Проверьте, записались ли настройки DNS сервера школы.
DNS - 192.168.50.130
Домены msk.21-school.ru

Например в linux в файле /etc/resolv.conf будут строчки:

nameserver 192.168.50.130
search msk.21-school.ru

IP школы для проверки:
IP vogsphere:

192.168.50.135

IP norminette:

192.168.50.133

Установка Oh-My-Zsh

Пишем в терминал и запускаем:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Установка HomeBrew на Mac

Пишем в терминал и запускаем:

curl -fsSL https://rawgit.com/kube/42homebrew/master/install.sh | zsh

Как проверять оставшееся место на школьном маке?

Учимся пользоваться стандартными командами терминала.

man du
man df

Кончилось место на маке. Как почистить кэш?

Вводим команды по очереди:

rm -rf ~/Library/Caches/*

rm -rf ~/Library/42_cache

rm -rf ~/Library/Application\ Support/Slack/Service\ Worker/CacheStorage/

rm -rf ~/Library/Application\ Support/Slack/Cache/

rm -rf ~/Library/Application\ Support/Slack/Code\ Cache/

Ликбез по устройству памяти компьютера и утечкам

Данный ликбез написан студентом школы 21 amatilda.
Он отвечает на самые распространенные вопросы о памяти и ее утечках.
Начинающим программистам и новым студентам школы 21 крайне рекоммендовано к прочтению и изучению.
Мануал можно найти - ТУТ

Установка valgrind для поиска утечек

Пишем в терминал и запускаем:

  • Устанавливаем HomeBrew:

curl -fsSL https://rawgit.com/kube/42homebrew/master/install.sh | zsh

  • Подключаем репозиторий:

brew tap LouisBrunner/valgrind

  • Устанавливаем valgrind:

brew install --HEAD LouisBrunner/valgrind/valgrind

Использование:

valgrind ./[ваш бинарник] [аргументы] --leak-check=full

Проверка на утечки в графическом проекте (FDF, Fract'ol и другие)

Проверить на утечки в проектах графики можно двумя способами.
Первый:

  1. Запускаем вашу программу
  2. В другом терминале пишем:

leaks [имя вашего бинарника]

Второй:

  1. Запускаем Xcode
  2. Вверху нажимаем на вкладку Xcode
  3. Ищем "Open Developer Tool" и нажимаем на "Instruments"
  4. Выбираем "Leaks"
  5. Нажимаем на кнопку с красным кругом и выбираем свой бинарник.
  6. Если нужны аргументы - пишем их в поле "Arguments".

Leaks: ошибка "Failed to gain authorization"

Если при попытке запуска инструмента Leaks возникает ошибка "Failed to gain authorization":

  1. Создайте файл прав с помощью права com.apple.security.get-task-allow:

% /usr/libexec/PlistBuddy -c "Add :com.apple.security.get-task-allow bool true" tmp.entitlements
File Doesn't Exist, Will Create: tmp.entitlements

  1. Подпишите свой код с помощью этих прав:

% codesign -s - --entitlements tmp.entitlements -f /path/to/tool
xxst: replacing existing signature

После этого Leaks успешно запустит вашу программу.
Решение найдено на форуме Apple Developer (ссылка на тред)

Настройка дебаггера в VSCode

  • Установите в VSCode расширение CodeLLDB
  • Не забудьте почитать Users Manual, там много интересного.

Или:

  • Берем и копируем конфигурацию из этого файла
  • Вставляем все вместо вашего файла launch.json, который лежит в .vscode
  • После у вас появится вверху кнопка "(lldb) Запустить"
  • Теперь вы можете дебажить ваш код :)

Вы можете поменять переменную ${workspaceFolderBasename} на имя вашего бинарника, если ваш бинарник называется не также как и папка.
Чтобы запускать программу с аргументами нужно в строчке - "args": [], в скобки вставить ваши аргументы.

Настройка CLion

Для корректной работы clion нужен аналог Makefile - CMakeList.txt. К счастью, clion умеет генерировать его автоматически.

  1. Нужно открыть clion и нажать - New CMake Project from sources.
  2. Откроется окно, где нужно будет выбрать папку проекта.
  3. Нажимаем окей в следующем окне, где clion предлагает выбрать файлы проекта.
  4. Clion готов к работе.

Если вам нужно запустить программу с аргументами:

  1. Нажимаем вверху на вкладку Run.
  2. Ищем Edit configurations и нажимаем.
  3. В поле Program arguments вписываем аргументы.

Сборник чекеров на проекты*

Чекер для 6 начальных проектов - 42FileChecker

Libft

libft-unit-test
Libftest
test-libft

Fillit

fillit_checker

Ft_printf

pft
printf-unit-test - 3,4 миллиона тестов
curqui_test

Push_swap

push_swap cheker (супер крутой чекер, сделанный студентом школы 21)
Визуализация push_swap

Lem-in

Lem-in-Checker
lem-in_test

Filler

filler_checker

Corewar

42-Corewar-Checker
unit-tests