Гайд по I курсу 🐣
Описание
Вашему вниманию представляется сборник мануалов и гайдов по первому курсу ВТ. Была проделана большая работа как тех, кто находил эту информацию, так и тех, кто структурировал, оформлял и объеденял в один источник. Мы старались :smile:
Первокурсники, пользуйтесь с умом и всем хороших оценок!)
Оглавление
Общая информация
Если вы читаете этот гайд, значит вы поступили на такие факультеты как: Cистемное и прикладное программное обеспечение (СППО), Информатика и вычислительная техника (ИВТ), Нейротехнологии и программирование (Нейротех), факультет Систем управления и робототехники (СУИР) и другие. Как только вы узнали о поступлении следует идти по следующим шагам:
- Заселение в общагу (опционально, 17-? августа)
- Купить симку с интернетом
- Узнать группу и присоединиться к чату с адаптерами (старшекурсник, помогающий первокурсникам освоиться в университете), возможно они вас сами найдут, но лучше не надеяться на это благословение
- Выборность на ITMO.ENTER (29 августа)
- Написать распределительный тест по математике (опционально :-), 28-31 августа)
- Написать распределительный тест на знание английского языка (30 августа)
- Скачать приложение itmo.map на телефон (30 августа)
- Встреча с факультетом (31 августа)
- Встреча с адаптерами (31 августа)
- ITMO.ENTER (2-4 сентября)
- Выборность на следующий семестр (2 сентября с 17:00 до 21:00, 3-4 сентября с 9:00 до 21:00)
- Первые пары (5 сентября)
- ITMO GO! (7 сентября)
- ITMOtion Night (7-8 сентября)
Система оценивания:
- Физкультура
- 100+ баллов - зачёт (20+ посещений)
- Зачётный предмет
- 60+ баллов - зачёт*
- *количество баллов не влияет на стипендию, оценку, красный аттестат и т.д.
- *есть слух, что количество баллов влияют на перевод на бюджет в спорных ситуациях
- Дифференцированный зачет/Экзаменационный предмет
- 60-74 баллов - оценка 3
- 74.01-90 баллов - оценка 4
- 90.01+ баллов - оценка 5
Устройство университета
Пояснения и расшифровки
- **ВТ**: раньше была кафедра Вычислительной Техники, вместо которой сейчас факультет ПИиКТ. Употребляется ВТ заместо СППО или ИВТ.
- **ИВТ**: "Информатика и вычислительная техника" (09.03.01)
- **СППО**: "Cистемное и прикладное программное обеспечение" (09.03.04)
- **Нейротех**: "Нейротехнологии и программирование" (09.03.04)
- **СУИР**: факультет Систем управления и Робототехники. Часто спрашивают, т.к. существует используемый многими первашами перевод с конкретных направлений СУИРа на ВТ.
- **КТ (ПМИ)**: "Прикладная математика и информатика" (01.03.02)
- **ИС (ИСиТ, ~~β-версия КТ~~)**: "Информационные системы и технологии" (09.03.02)
graph TD;
ИТМО-->мф.КТиУ;
ИТМО-->мф.ТИнТ;
ИТМО-->мф.НОЖ;
ИТМО-->ФТмф;
мф.КТиУ-->ф.ПИиКТ;
мф.КТиУ-->ф.СУИР;
мф.КТиУ-->ф.БИТ;
мф.КТиУ-->ц.ХИ;
ф.ПИиКТ-->ИВТ;
ф.ПИиКТ-->Нейротех;
ф.ПИиКТ-->Дизайн;
ф.ПИиКТ-->СППО;
ц.ХИ-->Биоинж
мф.ТИнТ-->ф.ИТиП
мф.ТИнТ-->ф.ИкТ
ф.ИТиП-->ПМИ;
ф.ИТиП-->ИСиТ;
ф.ИкТ-->Мобилки;
ф.ИкТ-->ПвИС;
ф.ИкТ-->ИСвГС;
мф.НОЖ-->ф.БиоТех;
мф.НОЖ-->ХБк;
мф.НОЖ-->НОЦ;
мф.НОЖ-->ф.ЭиЭ;
НОЦ-->Инфохим;
ФТмф-->Фф;
ФТмф-->и.ЛТ;
ФТмф-->ИФф;
ФТмф-->ФизФ;
и.ЛТ-->Лазеры;
Сокращения, сленг и ссылки
Предметы
Корпуса университета
Подробно и наглядно можно посмотреть тут
Кронва / ГК
- главный корпус университета на Кронверском 49
Ломо
- корпус университета на Ломоносова 9
Биржа
- корпус университета на Биржевой линии 14-16
Гривцова
- корпус университета на Гривцовом переулке 14-16 лит.А
Чайка
- корпус университета на Чайковской улице 11.2 лит.А
Гастелло
- корпус университета на улице Гастелло 12
Общежития
Подробно и наглядно можно посмотреть тут
Вязьма
- общежитие на Вяземском переулке 5-7 лит.А
- 20 минут до ГК
- 45 минут до ломо
- Микс блочки (две комнаты, на 2-3 человека, душ, туалет) и коридорки (комнаты на 2-3 человека, душ на первом этаже, туалеты на каждом)
- В некоторых частях этажей есть тараканы
- Не во всех блоках новый ремонт
Белорусская / б6 / белка
- общежитие на Белорусской улице д.6 лит.А
- 70 минут до ГК
- 50 минут до ломо
- Блочка (две комнаты, на 2 и 3 человека, душ, туалет)
- Тараканов нет
- Постоянный ремонт одного из 12 этажей
Альпийка
- общежитие на Альписском переулке 15 к.2 лит.А
- 60 минут до ГК
- 50 минут до ломо
- коридорка (комната на 2 человека, для двух комнат общий балкон)
- Тараканов нет
- В коридоре примерно 6 комнат и один туалет. Душ один и только на втором этаже.
Ленсовета
- Общежитие на улице Ленсовета д.23 лит.А
- 40 минут до ГК
- 40 минут до ломо
- Коридорка (комнаты на 2, чаще 3 человек)
- Тараканы на кухне
МСГ
- Новоизмайловский пр., 16
Доходный дом
- наб. р. Карповки, д. 22, корп. 2, лит. Б
ЛТУ
- ул. Вавиловых, д. 12
Сайты
Прочее
Cем
- семестр, пол учебного года
Курс
- два семестра
Пара
- занятия продолжительностью 1.5 часа
Автомат
- автоматические баллы за экзамен
Лаба
- может обозначать как пару по предмету, так и саму лабораторную работу
Прод
- профильная (продвинутая) математика
База
- базовая математика
Экз
- экзамен
Алгосы
- aлгоритмы
Олпрога
- олимпиадное программирование
Рубежка
- рубежная работа
Курсач
- курсовая работа
ДЗ
- домашняя работа
кр
- контрольная работа
Сессия
- период массовой сдачи экзаменов в конце сема
Допса
- дополнительная сессия, идущая во время следующего семестра в течение первых 1-2 месяцев для закрытия долгов за предыдущий семестр
Комса
- комиссия, последний способ закрыть долги, совещание после которого отчисляют студентов
Гх
- гитхаб
Гит
- git, распределённая система контроля версий
ось
- операционная система
линка
- ссылка (от англ. link)
Сборник полезных источников
Пояснения к иконкам
- - курс по базам данных
- - курс по ЯПам
- - курс по вышмату
- - курс по дискретной математике
- - курс по информатике
- - курс по программированию на java
- - курс по КИКу
- - курс по БЖД
- - курс по ОПД
- - курс по веб-программированию
- - курс по философии
- - курс по физике
P.S. сортировка содержимого по релевантности слева->направо
Гелиус
- Примерно в 5-х числах сентября у вас откроется доступ к Гелиусу вот здесь.
- Гелиус - это итмошный сервак. На нём будут сдаваться лабораторные по
проге
(1-7), ОПД
(1) и БД
(1-4)
Все работы нужно загружать на этот сервер, они должны на нём полностью функционировать, если это требуется.
Сделано это для того, чтоб все были в равных условиях и вы могли попрактиковать bash и взаимодействие с сервером.
P.S. - на сервере стоит ось FreeBSD
Подключение и загрузка файлов
### Авторизация в [se.ifmo.ru](https://se.ifmo.ru/)
- Логин: `sТабельныйНомер` (далее `sXXXXXX`)
- Пароль: [se.ifmo.ru/passwd](http://se.ifmo.ru/passwd) (далее `PASSWD`)
### Подключение через консоль (powershell, bash, zsh, e.t.c)
```bash
На выбор:
1. ssh -p 2222 sXXXXXX@helios.cs.ifmo.ru
2. ssh sXXXXXX@helios.se.ifmo.ru -p 2222
3. ssh sXXXXXX@se.ifmo.ru -p 2222
```
### Загрузка файлов через консоль (powershell, bash, zsh, e.t.c)
```bash
scp -P 2222 FileForUpload.java sXXXXXX@helios.se.ifmo.ru:DirectoryToUpload
```
- Пример загрузки файла README.md в вашу корневую директорию sXXXXXX:
```bash
scp -P 2222 README.md sXXXXXX@se.ifmo.ru:.
```
### Создание `.bat` - файла для авто-подключения к серверу (консоль + для загрузки файлов)
Уже готовый архив со всем необходимым для подключения можно скачать [здесь](https://205826.github.io/auto_connect_gelius.zip)
> Никаких дополнительных программ для работы не нужно скачивать, следует лишь отредактировать `.bat` - файлы, написав свой `логин` и `пароль`
Пример содержания такого файла:
```powershell
rem PuTTY
start "" "putty_portable.exe" sXXXXXX@se.ifmo.ru:2222 -pw PASSWORD
rem start "" "C:\\Program Files\\PuTTY\\putty.exe" -ssh -P 2222 sXXXXXX@se.ifmo.ru -pw PASSWORD
rem WinSCP
start "" "%ProgramFiles%\\WinSCP\\WinSCP.exe" sftp://sXXXXXX:PASSWORD@se.ifmo.ru:2222
rem start "" "C:\\Program Files (x86)\\WinSCP\\WinSCP.exe" sftp://sXXXXXX:PASSWORD@se.ifmo.ru:2222
rem FileZilla
rem start "" "%ProgramFiles%\\FileZilla FTP Client\\filezilla.exe" sftp://sXXXXXX:PASSWORD@se.ifmo.ru:2222
```
### [PuttY](https://putty.org.ru/download.html) (консоль)
1. Имя хоста: `sXXXXXX@se.ifmo.ru`
2. Порт: `2222`
3. Нажимаем "Соединиться"
4. Пишем `PASSWD`
### [WinSCP](https://winscp.net/eng/download.php) (для загрузки файлов)
1. Протокол: `sftp`
2. Имя хоста: `se.ifmo.ru`
3. Порт: `2222`
4. Имя пользователя: `sXXXXXX`
5. Пароль: `PASSWD`
### [FileZilla](https://filezilla.ru/get/) (для загрузки файлов)
1. Хост: `sftp://se.ifmo.ru`
2. Имя пользователя: `sXXXXXX`
3. Пароль: `PASSWD`
4. Порт: `2222`
### Git (для загрузки файлов)
1. Создаём репозиторий на гх и [загружаем туда свои файлы через браузер](https://youtu.be/yjivWxxH0eE)
2. Заходим на сервак
3. Пишем `git clone <Ссылка на репозиторий>`
Сочетания клавиш и команды терминала
- `Tab` - может помочь вводить имена файлов (автозаполнение)
- `Enter` - может помочь копировать
- `Cntrl+D` - **EOF**, чтобы оборвать выполнение чего угодно
- `Cntrl+C` - попросить приложение прервать свою работу
- `↑↓` - предыдущая / последующая команда
- `Cntrl+shift+V / Cntrl+Shift+C` - **вставить из** / **скопировать в** буфера обмена
- `chmod -R 755 ./*` может помочь избавиться от ошибок доступа
- `chmod -R 700 ~` может помочь избавиться от любопытных глаз
- [Список основных команд UNIX](#UNIX-команды)
Траблы
### JAVA: ошибка переполнения кучи или java по дефолту 11 версии, BindException
```bash
[sXXXXXX@helios ~]$ javac
Error occurred during initialization of VM
Could not reserve enough space for 31424512KB object heap
```
В большинстве случаев спасает патч Ценекова:
```bash
# By @dts256 (feat. @Fenaven)
export _JAVA_OPTIONS="-Xmx256M"
export JAVA_VERSION="17.0+"
export JAVA_HOME="/usr/local/openjdk17"
export PATH=/usr/local/openjdk17/bin/:$PATH
```
Второй патч, который просто закрывает все сессии
```bash
killall -u `whoami`
```
> Также поможет при `java.net.BindException: Address already in use`
Третий вариант, просто дождаться 4х часов ночи, именно в это время происходит перезагрузка гелиуса
### Проблемы с базой данных и клиентскими и серверными приложениями (не запускается, переполнение кучи и т.д.)
- Посмотрите какие потоки работают:
```bash
ps -A
```
- Искусственно выключите ненужные:
```bash
kill
```
Cоздание перманентной переменной окружения
1. Создаем файлик .bash_profile в своей корневой директории `sXXXXXX`:
```bash
vim .bash_profile
```
2. В файлик пишем следующее (на примере 5 лабы):
```bash
lab5="/home/studs/sXXXXXX/{pathToFile}"; export lab5
```
3. Нажимаем `Esc` и пишем следующее:
```bash
:wq
```
> *записываем* + *выходим* из текстового редактора `vim`
4. Закрываем соединение (`exit`) и подключаемся снова
Приколы
Get IP addresses
```
[sXXXXXX@helios ~]$ w
USER TTY FROM LOGIN@ IDLE WHAT
sXXXXXX pts/$$ $$.$$.$$.$$ $$:$$ $$ -
sXXXXXX pts/$$ $$.$$.$$.$$ $$:$$ $$ -
sXXXXXX pts/$$ $$.$$.$$.$$ $$:$$ $$ -
sXXXXXX pts/$$ $$.$$.$$.$$ $$:$$ $$ -
sXXXXXX pts/$$ $$.$$.$$.$$ $$:$$ $$ -
sXXXXXX pts/$$ $$.$$.$$.$$ $$:$$ $$ -
```
**За следующие действия вас могут отчислить, так что пользуйтесь с умом, не злоупотребляйте**
Broadcast message
```bash
1. echo "Здесь могла быть ваша реклама">>test
2. wall test
3. Broadcast Message from sXXXXXX@helios.cs.ifmo.ru
(/dev/pts/##) at $$:$$ MSK...
Здесь могла быть ваша реклама
```
Игра в minecraft по shh:)
```bash
# HOST
ssh -R GeliusPort:localhost:25565 sYOUR_ID@helios.se.ifmo.ru -fNT -p 2222
# CLIENT
ssh sYOUR_ID@helios.se.ifmo.ru -p 2222 -L 25565:localhost:GeliusPort
# GeliusPort - any number from 1024 to 32000
```
[//]: # (TODO: сделать гайд)
Система оценивания БаРС и разбалловка по всем предметам
graph
POINTS(ваши баллы)-->A(<60);
POINTS(ваши баллы)-->С(60-67);
POINTS(ваши баллы)-->Е(67.01-74);
POINTS(ваши баллы)-->G(74.01-83);
POINTS(ваши баллы)-->I(83.01-90);
POINTS(ваши баллы)-->К(90.01);
A(<60)-->B[2FX];
С(60-67)-->D[3E];
Е(67.01-74)-->F[3D];
G(74.01-83)-->H[4C];
I(83.01-90)-->J[4B];
К(90.01+)-->L[5A];
ITMO ENTER
Фотки презентаций, тестов и QR-кодов с ITMO Enter 2022
Можно ли получить незачёт?
- В 2022-23 году обучения эта дисциплина была обязательной. Да, по ней действительно в теории можно было получить незачёт. Насколько нам известно, в новом учебном году эту дисциплину сделали необязательной, поэтому поручаем вам задачу выяснить это самостоятельно :)
Прочие материалы
Спорт:
- Талисман - снежный барс Барс Тим
- 5 раз были лучшим спортивным студенческим клубом с 2016 по 2021
На "внимание образование" посоветовали взять у преподавателей рабочую программу дисциплины и чеклист для зачёта, чтобы не пропустить ничего!
Как эффективно читать книги
ФабЛаб - является малой лабораторией-мастерской для реализации личных проектов и ведения учебной деятельности для студентов. Логин. ТГ чат.
Мегабайт медиа и их школа (прием анкет уже закрыт, но вы можете написать им на почту). У их участников повышенная стипендия.
Информатика
Курс по информатике представляет собой совокупность самый актуальных сфер IT. Он достаточно хорошо расписан преподавателем в тг канале 2022-23, так что сложности с этим предметом возникают редко.
Журнал успеваемости потока 2022-23 учебного года
Журнал успеваемости потока 2023-24 учебного года
Автомат и разбалловка
1. ~~Анонимный~~ тест об ожиданиях от курса Информатики (`1 балл` + `1.25 баллов` за своевременность)
2. 7 аннотаций, сдаваемых в начале каждой лекции (`7 * 1 балл` + `7 * 1.25 баллов` за своевременность)
3. 6 лабораторных:
1. Системы счисления: n-ричная (вещественная), фибоначчиевая, нега-позиционная, симметричная, факториальная (`3 балла`)
2. Код Хэмминга (`4 балла`)
3. [Регулярные выражения](https://youtube.com/playlist?list=PLA0M1Bcd0w8w8gtWzf9YkfAxFCgDb09pA). `import re` в Python (6 баллов)
4. Написание парсера на Python из XML/JSON/YAML в XML/JSON/YAML, наверное самая сложная лаба (`9 баллов`)
5. Поразрядное сложение чисел в Exel (`6 баллов`)
6. Воссоздание скриншота страницы книги в LaTeX. [Онлайн-редактор](https://overleaf.com/) (`7 баллов`)
4. 2 теста на ЦДО (`2*10 балла`, 2 попытки)
5. Экзамен (`20 баллов`, **автомат** на `11-14 баллов` (вычисляется как `сумма баллов за 1-4 пункт * 0.185`) баллов при 4х первых лабах и 2х ЦДО-тестах на 60%+, минимально необходимо набрать `7 баллов`)
6. Мемы в конце аннотаций, полезные ссылки/смешные мемы в лс преподавателю (`3 балла`)
Аннотации
- `Аннотация` - это краткое изложение содержания статьи в интернете. В ней нужно собрать всю актуальность, которая будет ценна читателю. Важно именно пересказывать, а не копировать части статьи.
- Найти подходящую статью не так просто: чаще всего используется [тактика поиска по хабру](https://habr.com/ru/search/?q=Система%20счисления). Более крутые используют статьи с других сайтов (Например: [techxplore.com](https://techxplore.com/) и [newatlas.com](https://newatlas.com/)).
> - Поле `Дата прошедшей лекции` - дата прошедшей лекции
> - Поле `Номер последней лекции` - порядковый номер прошедшей лекции
> - Поле `Дата сдачи` - дата лекции, на которую вы `принесёте аннотацию`. Если будете сдавать позже, то писать `фактическую` дату сдачи.
> - Дата материала должна быть не старше `{текущий год} - 3 года`, т.е. с 01.01.{текущий год - 3} по сегодняшний день.
> - Материал должен быть `близким к теме прошедшей лекции`. Либо быть очень важным для вас, либо очень прорывная технология и т.п. В ином случае часто режут баллы, но если есть желание писать по тому, что вам интересно - `пишите!` Аннотации приносят не так много баллов, поэтому даже со срезанными баллами не сложно получить 5A (на личном опыте).
> - Концентрируйтесь лучше на `лабах` и `рубежке`.
> - Не надо новости IT-экономики, только если Google и Amazon вдруг купят друг друга (тогда это кардинально повлияет на весь IT-мир).
> - Шаблон аннотации берите из телеграмм канала, он каждый год немного меняется.
Рубежка
- [Скриншоты и генераторы ответов](https://github.com/Imtjl/1st-year-guide/tree/main/INF/de).
- Рубежка пишется под камерой, тактика списывания может быть аналогична списыванию истории.
- Многие заданий по типу запустить в питоне или посчитать на [калькуляторе](https://205826.github.io/calc).
> Но мы этого, конечно же, не говорили!
> `Авторы` этого гайда все писали рубежки `сами` и на `максимум`, чего и вам советуем :)
Математика
> За лабами и доп.материалами советую всегда обращаться в сборник полезных источников <
База
На результаты тестов на OnlineTestPad можно просто скидывать ссылки, таким образом объеденяя ответы. Exemple. В итоге можно получить что-то такое или такое. Скрипт для автоматизации сбора данных по ссылкам.
Прод
Программирование
> За лабами и доп.материалами советую всегда обращаться в сборник полезных источников <
И в первом
и во втором
семестре по 4 лабы
.
Журнал успеваемости потока 2022-23 учебного года 1 семестра
Журнал успеваемости потока 2022-23 учебного года 2 семестра
Этапы сдачи
Кроме 8 лабы этапы сдачи следующие:
- Делаете лабу
- Закидываете на гелиус -> туториал
- Делаете отчет (у некоторых практиках нетребуется)
- Защищаете лабу
Отчет
- Код (соответвие заданию, реализованые патерны...)
- Выполнение на гелиусе (программу пытаються крашнуть, Ctrl+C/D, Фаззинг...)
- Теория
Отличие с 8 лабой в том, что там GUI - графический интерфейс, который не надо выгружать на гелиос. Бд либо локально поднимаете, либо делаете проброс портов на сервер.
Автомат
- в 1 семестре чтобы получить автомат - достаточно закрыть все лабы и рубежку
- во 2 семестре нужно получить >= 70 баллов за практику (лабы + рубежка), тогда поставят 5А автоматом.
Прочие материалы
Ручная сборка приложения
.java - файл в котором написана ваша программа (текстовый)
.class - файл с байткодом (бинарный)
MANIFEST.mf - файл описывающий как архивировать и запускать классы (текстовый)
.jar - архив с одним или несколькими .class (бинарный)
Один .java
Создадим файл HelloWorld.java:
echo 'class HelloWorld{public static void main(String args[]){System.out.println("Hello!");}}' > HelloWorld.java
Можем сразу запустить этот .java файл:
java HelloWorld.java
Либо скомпилировать (.java -> .class):
javac HelloWorld.java
в директории должен создаться файл HelloWorld.class, запустить его можно так:
java HelloWorld
Стоит заметить что расширение НЕ пишется, для запуска .class файла, иначе можно получить ошибку:
Error: Could not find or load main class HelloWorld.class
Caused by: java.lang.ClassNotFoundException: HelloWorld.class
Несколько .java + библиотеки
Теперь допустим у нас несколько .java файлов
Пример
```
.
├── Program.java
├── pokemons/
│ ├── HoOh.java
│ └── Piloswine.java
├── attacks/
│ ├── physicalAttacks/
| │ └── Bulldoze.java
│ └── statusAttacks/
| └── Amnesia.java
└── lib/
├── LibName.jar
├── LibName2.jar
└── LibName3.jar
```
Для компиляции лучше выбрать папку, куда сохранять наши .class файлы:
javac -d classes {*,*/{*,*/*}}.java
или если для компиляции класса необходимы внешние библиотеки:
javac -cp lib/LibName.jar:lib/LibName2.jar:lib/LibName3.jar -d classes {*,*/{*,*/*}}.java
Состояние директорий после выполнения
```
.
├── Program.java
├── pokemons/
│ ├── HoOh.java
│ └── Piloswine.java
├── attacks/
│ ├── physicalAttacks/
| │ └── Bulldoze.java
│ └── statusAttacks/
| └── Amnesia.java
├── lib/
| ├── LibName.jar
| ├── LibName2.jar
| └── LibName3.jar
└── classes/
├── Program.class
├── pokemons/
│ ├── HoOh.class
│ └── Piloswine.class
└── attacks/
├── physicalAttacks/
│ └── Bulldoze.class
└── statusAttacks/
└── Amnesia.class
```
В Linux разделитель -classpath :
, а в Windows ;
!
-cp или -classpath - то, где искать вспомогательные классы
{*,*/{*,*/*}}.java
- сокращенная запись *.java */*.java */*/*.java
Теперь создадим MANIFEST.mf файл, сообщающий главный класс + библиотеки которые использует приложение:
echo -e "Manifest-Version: 1.0\nMain-Class: Program\nClass-Path: lib/LibName.jar lib/LibName2.jar lib/LibName3.jar\n" > MANIFEST.mf
Состояние директорий после выполнения
```
.
├── Program.java
├── pokemons/
│ ├── HoOh.java
│ └── Piloswine.java
├── attacks/
│ ├── physicalAttacks/
| │ └── Bulldoze.java
│ └── statusAttacks/
| └── Amnesia.java
├── lib/
| ├── LibName.jar
| ├── LibName2.jar
| └── LibName3.jar
├── classes/
| ├── Program.class
| ├── pokemons/
| │ ├── HoOh.class
| │ └── Piloswine.class
| └── attacks/
| ├── physicalAttacks/
| │ └── Bulldoze.class
| └── statusAttacks/
| └── Amnesia.class
└── MANIFEST.mf
```
Содержание MANIFEST.mf:
```
Manifest-Version: 1.0
Main-Class: Program
Class-Path: lib/LibName.jar lib/LibName2.jar lib/LibName3.jar
```
Тут важно не забыть про перенос строки в конце файла, иначе последняя строчка будет игнорироваться
Теперь собирём .jar архив из этих .class файлов и MANIFEST.mf манифеста:
jar -cvfm app.jar MANIFEST.mf -C classes .
Состояние директорий после выполнения
```
.
├── Program.java
├── pokemons/
│ ├── HoOh.java
│ └── Piloswine.java
├── attacks/
│ ├── physicalAttacks/
| │ └── Bulldoze.java
│ └── statusAttacks/
| └── Amnesia.java
├── lib/
| ├── LibName.jar
| ├── LibName2.jar
| └── LibName3.jar
├── classes/
| ├── Program.class
| ├── pokemons/
| │ ├── HoOh.class
| │ └── Piloswine.class
| └── attacks/
| ├── physicalAttacks/
| │ └── Bulldoze.class
| └── statusAttacks/
| └── Amnesia.class
├── MANIFEST.mf
└── app.jar
```
-c - recompile
-v - info of compile
-f - output file name
-m - manifest name
-C - change main dir
Запускаем:
java -jar app.jar
Отладка .java
Для отладки программы, компилируем класс с флагом -g:
javac -g HelloWorld.java
Запускаем отладчик:
jdb HelloWorld
> stop in HelloWorld.main
- set breakpoint in HelloWorld.class on main method
> stop in HelloWorld:3
- set breakpoint in HelloWorld.class on 3 line
> run
- run program
main[1] list
- print programm
main[1] print i
- print value of i
main[1] dump i
- print value of i
main[1] locals
- print value of local values
main[1] step
- do 1 step
взято отсюда
ОПД
> За лабами и доп.материалами советую всегда обращаться в сборник полезных источников <
В первом
семестре - 2 лабы
, во втором
семестре - 5 лаб
.
Журнал успеваемости потока 2022-23 учебного года 1 семестра
Журнал успеваемости потока 2022-23 учебного года 2 семестра
Автомат
- в 1 семестре чтобы получить автомат - достаточно закрыть все лабы и рубежку
- во 2 семестре все будут писать билетный экзамен
Вопросы с 7й лабы
1) Почему команды начинаются с 01, а не с 00. (вопрос глубокий в том плане что да, нам это говорили на лекции, но придётся открыть схему микрокоманд, показать как там происходит всё и дать комментарии)
2) В чём преимущество вертикальных команд перед горизонтальными
3) Какие вентили не имеет смысла, либо не рекомендуется ставить одновременно в ОМК. Ну т.е. какие всё сломают и почему.
4) За какое минимальное и максимальное количество тактов у меня будет работать комплекс микропрограмм (изи вопрос, но оставлю на всякий) (у меня он имеет смысл ибо у меня умножение и тут различается аж на 15 тактов)
5) Забыл, но насколько я помню вопрос был не сложный, я сразу ответил. что-то из серии а что будет если вот так сделать
Первый рубеж
- Заходим в методичку, указанную в материалах к ОПД выше и читаем, там подробно описан этот рубеж. Советую внимательно прочитать, а затем потренироваться на тренажёре
Второй рубеж
- Есть 2 варианта этой рубежки.
Основной - первый
, второй может быть на переписи.
1 вариант
: запускают в аудиторию, выдают листки, реализуем какую-то "полезную" программу полностью на ассемблере
. Пишем ручкой/карандашём на листочках, вы всё правильно поняли)
2 вариант
: трассировка микрокода. Он проще, там по ходу разберётесь. Потренируйтесь)
Некоторые пояснения к 1 варианту рубежки
Висячий переход
- это значит, что нет метки назначения или название не совпадает
- На листах пишем код как на АССЕМБЛЕРЕ БЭВМ, ни на каком другом.
Реентерантная программа
- код, который работает корректно независимо
от количества одновременно вызванных модулей. Поэтому, нужно корректно инициализировать и класть нули в нужные переменные при работе с ними, во избежание мусорных значений
.
- В столбце АДРЕС/МЕТКА пишем ТОЛЬКО метку (адрес не нужно)
- Чтобы указать адрес, достаточно во втором столбце команд написать ORG 0x*
- Файл с примерами задач рубежки, кодами и подробностями
- Самый удобный, на мой взгляд, варинт написания рубежки:
- Карандашом, со стёркой
- Сначала пишем рабочий код, а потом уже дописываем все нужные переменные
- Во время написания кода можно на втором листе, или на этом же, но на обороте
- писать карандашом заготовки, если не уверены в написании сразу
- все переменные, о которых забыли - используем как ни в чём не бывало, оставив пометку на полях. и в конце проги, на оставшемся месте дописываем эту перменную
Экз
- Вопросов 40. Билетов 20.
- Билеты нереально непропорциональны. Одни сложные, другие простые.
- Дадут 2 билета - оба чилл, либо 1 чилл 1 сложный (скорее всего так), 2 гробовых давать не должны.
виды информации + прерывания с контроллером, к примеру
- Написать один вопрос билета недостаточно - надо писать оба и идеально.
- Половина билетов, которые про бэвм и про числа - ботаются быстро и легко, там ничего сложного нет. Но все равно надо заботать :)
- Вторая половина - гробовая. Написание билета на экзамене может занять как 5 минут, так и 40, я уже не говорю сколько времени надо потратить чтобы их заботать.
- Просто прочитав вы не поймете ничего в сложных билетах. Для этого надо лезть в синюю библию, лекции, гугл, e.t.c. Не халтурьте, начните за месяц и делайте по 1-2 билета в день. Потом повторите и углубитесь в сложные билеты и 5А у вас в кармане.
-
Грубо говоря, вот самые сложные темы экзамена:
> Сборник расписанных билетов к экзамену смотрите прямо в этом репозитории <
P.S. - от человека, у которого 5А: я начинал за месяц, но ботал по одному билету или по 0, в результате чего я начал забывать билеты к сессии, поэтому пришлось в конце ботать всё сразу. Именно поэтому рекомендую сначала во всём разобраться и прочитать как можно больше всего, а потом уже всё повторить. Желательно пару раз, чтобы всё осталость в голове. Могу сказать, что ВСЕ контроллеры можно заботать за 2 дня. А вот в остальном придётся разбираться и запоминать. Рекомендую конспектировать все важные моменты билетов. Удачи!)
UNIX - команды
```
╠╦ man (имя команды) - говорит что делает команда
║╚ (имя команды) --help - короткая подсказка по команде
╠╦ cd (имя директории) - смена директории
║╠ cd - к родной директории
║╠ cd .. - к директории выше
║╠ ls - вывести список файлов
║╠ ls -l - вывести список файлов + много инфы по файлам
║╠ ls -R - вывести список всех файлов
║╚ pwd - полный путь директории
╠╦ mkdir (имя директории)- создание каталога
║╠ cp -r (что) (куда) - рекурсивное копирование
║╠ rmdir (имя директории) - удалить директорию если она пустая
║╚ rm -r (имя директории) - удалить директорию со всеми файлами
╠╦ touch (имя файла) - создание файла (обновление даты доступа)
║╠ cp (что) (куда) - копирование файла
║╠ mv (что) (куда) - переместить
║╠ chmod (новые права доступа) (имя файла) - смена прав на файл
║║ ╠ 1 способ: [User: 0-7][Group: 0-7][Other: 0-7]
║║ ║ ╠ 0 (0+0+0) - No permission.
║║ ║ ╠ 1 (0+0+1) - Only execute permission.
║║ ║ ╠ 2 (0+2+0) - Only write permission.
║║ ║ ╠ 3 (0+2+1) - Write and execute permissions.
║║ ║ ╠ 4 (4+0+0) - Only read permission.
║║ ║ ╠ 5 (4+0+1) - Read and execute permission.
║║ ║ ╠ 6 (4+2+0) - Read and write permissions.
║║ ║ ╠ 7 (4+2+1) - Read, write, and execute permission.
║║ ║ ╚ Пример: `chmod 700 file.txt`
║║ ╠ 2 способ: [ugo](+|-|=)[rwx-][,<...>]
║║ ║ ╚ Пример: `chmod u+rwx,go=r-x file.txt`
║║ ╠ Для деректорий x(execute) работает как доступ
║║ ╚ Дополнительно почитать: https://losst.ru/prava-dostupa-k-fajlam-v-linux
║╠ ln –s (имя файла) (имя ссылки) – символическая ссылка
║║ ╚ файл содержащий путь к файлу
║╠ ln (имя файла) (имя ссылки) – жесткая ссылка
║║ ╚ указатель на используемый другим файлом память
║╚ rm (что) - удалить файл
╠╦ vim (имя файла) - редактирование файла
║║ ╠ для редактирования нажмите `i`
║║ ╚ для выхода нажмите `Esc` и напишите `:wq`
║╠ cat (имя файла) - содержимое файла
║╠ cat > (имя файла) - запись в файл(стереть + записать)
║╠ cat >> (имя файла) - дозапись
║╠ cat (имя файла1) (имя файла2) > (имя файла3) - записывает в файл 3, 1 и 2 файл
║╚ echo "текст" > (имя файла) – запись в файл
╠╦ grep '(регулярное выражение)' - фильтрует вывод по регулярке
║╠ head - выводит на экран первые 10 строк. Поведение зависит от опций
║╠ tail - выводит на экран последние 10 строк. Поведение зависит от опций
║╠ wc - статичтика по входу/файлу
║╠ sort - сортирует вывод по алфавиту
║╠ sort -r - сортирует вывод по обратному алфавиту
║╚ more - интерактивный вывод
╠╦ bash (имя файла) – запуск файла с командами
║╠ sh (имя файла) – запуск файла с командами
║╠ ksh (имя файла) – запуск файла с командами
║╚ ./(имя файла) – запуск файла с командами (прописать chmod u+x для него)
╠═ (команда) | (куда) - Конвейер (pipeline)
╠═ (что)>(куда) - перенаправляет поток
║ ╠ что
║ ║ ╠ 0 - поток ввода
║ ║ ╠ 1 - поток вывода
║ ║ ╚ 2 - поток ошибок
║ ╚ куда
║ ╠ /dev/null - в никуда
║ ╠ &0 - в поток ввода
║ ╠ &1 - в поток вывода
║ ╚ &2 - в поток ошибок
╠╦ < (файл) - подаёт на вход команды содержимое файла
║╠ << someSTOPword - интерактивный ввод пока не будет введён someSTOPword
║╚ <<< "текст" - подаёт на вход команды текст
╚═ Кавычки
╠ '' - текст оставляет таким как внути кавычек
╠ "" - позволяют осуществлять раскрытие переменных
╚ `` - значение кавычек это результат работы команд внтури
```
**Примеры использования**
```bash
# Рекурсивная выдача файлам всех прав для пользователя, ошибки не выводить
chmod -R 700 lab0 2>/dev/null
# Удалить всю папку lab0, ошибки не выводить
rm -r lab0 2>/dev/null
# Подсчитать количество строк содержимого файла wingull6,
# результат дописать в тот-же файл, добавить вывод ошибок доступа в стандартный поток вывода
wc -l wingull6 >>wingull6
# Вывести список имен файлов в
# директории clefable3, список отсортировать по имени z->a, ошибки доступа перенаправить в файл в директории /tmp
(ls clefable3 | sort) 2>/tmp/error
# Рекурсивно вывести содержимое файлов с номерами строк из директории lab0,
# имя которых начинается на 'n', строки отсортировать по имени z->a, ошибки доступа не подавлять и не перенаправлять
cat -n "^n" | sort -r
# Вывести рекурсивно список имен и атрибутов файлов в директории lab0, начинающихся на символ 'g', список
# отсортировать по возрастанию даты изменения записи о файле, добавить вывод ошибок доступа в стандартный поток вывода
ls -lRt lab0
# Вывести четыре последних элемента рекурсивного списка имен и атрибутов файлов в директории lab0,
# список отсортировать по убыванию даты изменения записи о файле, подавить вывод ошибок доступа
ls -lRt 2>/dev/null | tail -4 | sort -r
# Вывести рекурсивно список имен и атрибутов файлов в директории lab0,
# заканчивающихся на символ 'a', список отсортировать по возрастанию размера, подавить вывод ошибок доступа
ls -lR lab0 2>/dev/null | grep "a$" | sort -k6
# Список всех файлов отсортированные по z-a, ошибки не выводить
ls -R ./ | grep '^.*[^:]$' | sort -r 2>/dev/null
# Список всех файлов заканчивающиеся на t отсортированные по размеру файла, ошибки выводить в общий поток
ls -R -l ./ | grep 't$' | sort -nk5 2>&1
# Список всех файлов начинающие с m отсортированные по a-z, ошибки выводить в общий поток
ls -R ./ | grep '^m.*[^:]$' | sort 2>&1
# Список всех файлов, оканчивающихся на t, с сортировкой по последнему доступу к файлу
ls -R -ltu ./ | grep 't$'
# Создание нескольких деректорий
mkdir dir01 dir02 dir03 dir04
mkdir dir{01,02,03,04}
mkdir -p lab0/dir1/dir2/dir3
# Вернуться в прошлую деректорию
cd -
# выполнение команды в фоновом процессе
команда &
# 1. Передача команде списка файлов
# 2. Перенапраление потокаприменяеться только к одной команде,
# поэтому её надо примеять там где надо,
# иначе всю строчеку надо обваачивать в скобки
wc -l donphan7/* 2>/dev/null | sort
*p # вложено в ноль деректорий и оканичваеться на p
*/*p # вложено в одну деректорию и оканичваеться на p
**/*p # вложено в 1-inf деректорию и оканичваеться на p (Для верной работы необходимо написать: shopt -s globstar)
chmod +rwx file # аналогично (777 & 755), то есть 755 (почему & 755 я не знаю)
chmod a+rwx file # a=ugo
chmod a=r,g-r file # выполнение идёт слева направо
chmod -rwx,u=rw file
chmod a+w-x-r,u+r # видимо ему тоже норм
chmod u=rw-,g=---,o=r-- # работает, как вы и ожидаете
# фильтрует вывод по последней букве
| grep 'u$'
# ` comands ` или $( comands )
# результат выполнения команд в ковычках вставляються в исходную строчку
cat `ls -R 2>/tmp/s123456 | grep '3$' | sort -r`
# вывод где испоьзуються перенос, а не табуляция
ls -1
# НУ КАК ТЕБЕ ТАКОЕ ИЛОН МАСК????
ls -R | grep "\..*:" | sed "s/://" | sed "s/^\./ls -1dp \./" | sed "s/$/\/\*/" | sh | grep -v "/$" | grep "\/c[^\/]*$" | xargs wc -l | sort -r
```
БД
> За лабами и доп.материалами советую всегда обращаться в сборник полезных источников <
Во втором
семестре - 4 лабы
.
Журнал успеваемости потока 2022-23 учебного года
Дискретная математика (базовая)
> За лабами и доп.материалами советую всегда обращаться в сборник полезных источников <
Дискретная математика
- предмет на котором вы изучите как компьютер выполняет математические действия (1 сем) и выучите алгоритмы на графах(2 сем).
Предмет ведёт Поляков (далее Дискрадед). Он не связан с сайтом с задачками по информатике.
Лекция занимает 1-2 пары, со второй пары могут отпускать или на второй паре происходит перепись. Переписывать кр можно сколько угодно раз.
У дискрадеда можно списать, да и задания контрольных не меняются из года в год, так что самое сложное в этом предмете - это ДЗ и курсовая (варианты почти у всех индивидуальные). Их сдача происходит дистанционно, необходимо присылать на почту дискрадеда docx или pdf с решением варика.
Автомат
1 сем
: сдаём все домашки и обе части курсача, из сборника домашек выше и получаем зачёт
2 сем
: сдаём все домашки и курсач, за 1 курс ставится средняя арифметическая ВСЕХ оценок за прошедшие кр (1 + 2 семестры)
Официальные материалы лежат в учебной документации ИСУ
Алгосы (Олпрога)
Теория:
На своём опыте могу сказать, что чтение таких источников в большенстве случаев бесполезна без практики!
Практика:
Особая благодарность
- \<T>
- worthant
- Zerumi
- TsenekovIT
- maxbarsukov
- owl from hogvarts
- Black Rider
- DecafMango