January 21, 2023

Гайд по школе 21

Не претендую на достоверность. Всё что здесь будет написано это моё личное мнение и мнение таких же людей который ни на что не претендуют....

Постараюсь сделать так чтобы гайд был актуален даже людям с отсутствие понимания что такое КОД

Оглавление

Глава 0. и глава 1. Можете спокойно читать сейчас. Но пока вы не пройдёте курсы которые чуть ниже. Читать дальше первой главы вам смысла нет.

Прошли курс по Git. Заглянули в эту главу. и т.д.

0. Всё подряд....

  1. Организационные моменты
  2. Git
  3. Си
  4. Терминал
  5. High lvl
  6. Ссылки

0. Всё подряд....

Весь гайд будет состоять из тысячи и одного скриншота с выделением главных моментов.

Возможно я буду прыгать из пятого в десятое. Ну уж извиняйте...

Интенсив == Бассейн (просто запомни)

3 основных курса которые нужно ОБЯЗАТЕЛЬНО пройти, если вы не хотите утонуть....

Основы командной строки https://ru.hexlet.io/courses/cli-basics

Основы Git https://ru.hexlet.io/courses/intro_to_git

Основы Си https://stepik.org/course/3078/promo

Немного поясню:

  1. Правила написания кода немного изменили, и актуальной информации нет. Но вы не удивляйтесь, если на курсах вы учили ставить скобки в одном месте, а на интенсиве нужно будет переучиваться.
  2. Как написали выше там будет гит-репозиторий. ЛОКАЛЬНЫЙ! Из дома работать не получится. Каждое новое задание выдаётся после сдачи предыдущего
  3. Самое первое задание нужно делать всегда! Так как если вы сделали его не правильно, то остальные вам обнулят

Как гуглить?

Вот на самом деле. Основной инструмент у вас будет гугл.

С языком си есть сложность. Он не ищётся... Потому что он состоит из одной буквы "C"

Поэтому если вы ищите на русском. Пишите не "С", а "Си".

Если же на английском. То вам может попасть "С++". Не пропускайте. Хоть это и разные языки. Но они похожи. И возможно это сработает у вас.

Как правильно гуглить если не гуглит....?

К примеру вопрос такой:

"Как перевести число в строку в языке Си"

А он выдаёт вам не язык Си... А к примеру Python

Тогда ход конём добавляем +

"Как перевести число в строку в языке +Си"

"+" - это ключевой знак для поисковика. Слово которое идёт после него будет обязательным условием в тексте.

Т.е. Если на сайте не будет слова "Си" он не станет вам выдавать такой сайт

Или ещё пример

"Как скомпилировать программу +clang"

Он выдаст сайты только те где присутствует слово "clang"

Не находит на русском? Переводим и ищем на английском.

Наиболее точный переводчик для технических переводом это https://www.deepl.com/translator

1. Организационные моменты

Вот такое сообщение придёт за несколько дней до интенсива

далее....

Каждый день нужно регистрироваться на все события самому! Каждый день!

ВОТ сейчас ниже пойду несколько скринов. Пожалуйста прочитайте полностью

Далее скрин от 20 года. Он касательно основного обучения.

Нужно понять вот что. Это крайние даты для достижения определенного уровня. Не достигли, вас выкинут.

Кривой перевод с англоязычного блога. Но есть что подчерпнуть

👨‍💻 Правила школы и устав

https://42-21-school.blogspot.com/2019/08/21_7.html
https://42-21-school.blogspot.com/2019/08/21.html

2. GIT

Сначала курс! https://ru.hexlet.io/courses/intro_to_git

ПРОЙДИ ЕГО!

Желательно посмотри на ютубе "Что такое GIt и как пользоваться" Посмотри несколько роликов!

Потом почитай главу про гит вот здесь

https://github.com/robotrainer/school21

👨‍💻 Просто запомни

git clone
git add .
git commit
git push

3. Cи

Курс на степике. Пока его не пройдешь. Дальше даже смысла нет читать.

https://stepik.org/course/3078/promo

👨‍💻 Русскоязычный справочник по C

https://cpp.com.ru/shildt_spr_po_c/index.html

ВИКИПЕДИЯ
Там на самом деле много определений для общего понимания.

Стандарт языка Си (Стандарт С99) — офиц. документация.

https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf

Эта штука вам пригодится на более поздной стадии. Просто запомни что это тут есть.

Визуализатор кода

Довольно полезная штука для отслеживания что и как работает.

В названии выбираем gcc

https://pythontutor.com/c.html#mode=edit

👨‍💻 Указатели

Эта нужно почитать и разобраться в теме указателей обязательно!

Но перед этим пройдите курс на степике.

Если просто и тупо то:

& - адрес переменной

* - значение по этому адресу

1. http://chernyy.ru/blog/2010/04/19/pointers-and-references-in-c-and-cpp
2. https://www.youtube.com/watch?v=VQ-7Plii7XY
3. https://42-21-school.blogspot.com/2019/07/blog-post_24.html

4. Терминал

Про компилятор

Код будет у тебя лежать в файлике по типу:

code.c

Так вот чтобы его скомпилировать нужно будет ввести в терминале

clang -Wall -Werror -Wextra "тут название твоего файла (code.c)"

Если всё хорошо. то не будет никаких сообщений

Если же неправильно то посыпяться ошибки!

В папке появится файлик a.out (если ты не поменял файл вывода)

чтобы его запустить нужно ввест ./a.out

если название другое, то

./название

./ обязательно для запуска

5. High lvl

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

Крч пришлось бы книгу написать....

Возможно вы обратитесь к ним на самом интенсиве. И вы знаете где это теперь искать...

👨‍💻 Шорткаты для компиляции в Nvim

В файле конфигурации n/vim нужно прописать 2 строки.

nmap <F3> :!clang -Wall -Werror -Wextra % -o compile<CR>
nmap <F4> :!./compile<CR>

При нажатии:
F3 — происходит компиляция текущего файла
F4 — выполняет скомпилированный файл и запускает его

Тесты

https://github.com/Abaker-Hype/42-Cursus-Tester

https://github.com/xicodomingues/francinette

VIM

Норминетта

Инфа почти не актуальна, так как сейчас другая софтина. Но принцип тот же

👨‍💻 Проверка всех файлов в каталоге норминетой

norminette -R CheckForbiddenSourceHeader

Что-то крутое, касательно кода. Пока не очень понимаю зачем оно мне. Но может потом пойму

https://github.com/agavrel/42_CheatSheet

далее,....

далее

👨‍💻 Права доступа для запуска файла

👨‍💻Компиляция и флаги.

#C_Clang_Gcc
#Terminal

Исходя из доступных сведений компиляция доступна на clang и gcc

Для сборки проекта работает следующая команда:

clang -Wall -Wextra -Werror file.c -o out_file

-Werror — не даст скомпилить если есть предупреждения

file.c — файл который нужно скомпилировать.
out_file — файл который по итогу получится

Желательно пройтись norm-ом. Для проверки стилистики.

Чтобы запустить файл, нужно ввести в терминале.
./out_file

линки:
- про компиляцию clang » (https://clang.llvm.org/docs/UsersManual.html#cmdoption-pedantic) « (en)
- про компиляцию gcc » (https://github.com/robotrainer/school21#3-%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80-gcc-) « (ru)

👨‍💻 Замер скорости работы функции
https://42-21-school.blogspot.com/2019/07/bsq_52.html

👨‍💻 make > makefile

1. https://cpp.com.ru/shildt_spr_po_c/27/2703.html
2. https://tdelegia.ru/linux/mini-rukovodstvo-po-sozdaniyu-makefile-ov-makefile-dlya-samyh/
3. https://www.gnu.org/software/make/manual/make.html
4. https://www.gnu.org/software/make/manual/make.pdf

Куча гитов. Если что я не несу ответственности если вас кикнут за читы....

https://github.com/robotrainer/school21#terminal

https://github.com/secondfry/school21-day11-tests

https://github.com/Caceresenzo/My-School-42-Piscine-Experience

https://github.com/Caceresenzo/42

https://github.com/agavrel/42_CheatSheet

https://github.com/pasqualerossi/42-Exams

https://github.com/Binary-Hackers/42_Subjects

https://github.com/pasqualerossi/42-Piscine

https://github.com/pasqualerossi/42-School-Guide

https://github.com/pasqualerossi/42-Tools

https://github.com/JCluzet/42_EXAM/tree/main/.subjects/PISCINE_PART

https://github.com/daniiomir/faq_for_school_21/blob/master/README.md#coding_wiki

6. Ссылки

  1. Блог от 19 года https://t.me/winnotlose
  2. Чей то блог http://coding-girl.ru/how-to-pass-the-piscine-21-42/