# Як правильно заливати код?

Це важливий документ, просимо прочитати повністю та декілька разів!

## Файли, директорії, імена:

* Ви завантажуєте на портал один .zip архів, що має містити всі рішення задач рівня (для рівня 1 це буде 4 задачі). Назва архіву неважлива, бо ми потім самі замінимо його імʼя.
* Якщо ви використовуєте Провідник Windows, переконайтеся, що він не приховує розширення відомих типів файлів: <http://remontka.pro/file-extensions/>.
* Якщо ви WinRAR'ом створили `.rar` архів — не перейменовуйте його в `.zip`, так не можна :) та і **взагалі не користуйтесь WinRAR'ом**. Гарна заміна WinRAR'у: [7-zip](https://www.7-zip.org/download.html), але інколи він створює архіви, які наша система (і компʼютери студентів) не можуть розпакувати, тож краще користуйтесь вбудованими механізмами архівування (на папочці проекту клік правою кнопкою миші і далі шукаєте, у Віндовс буде типу "відправити -> стиснута папка", читайте далі щоб побачити скріншоти).
* В архіві (в корені) повинна лежати папка src, а в ній папкИ `com/shpp/p2p/cs/nsurname/assignmentN` (все маленькими літерами), усередині — файли `AssignmentNPartM.java`, де:
  * `N` — номер завдання. На першому рівні виходить завдання (ассайнмент) 1;
  * `M` — номер підзадачі. На першому рівні 4 підзадачі;
  * `nsurname` — це ваше ім'я і прізвище маленькими буквами. Наприклад, якщо ви — Вася Пупкін, то буде `vpupkin`;&#x20;
    * Так, **одна** буква для імені. Якщо у вас імʼя починається із складної для транслітеації букви типу "ж", то звісно можна писати "zh" замість "z".
  * якщо є додаткові `.java` файли, то їх можна називати як завгодно.&#x20;
* як ви зрозуміли, ваш package (декларується на початку кожного `.java` файлу) має бути таким самим:

  `com.shpp.p2p.cs.nsurname.assignmentN`

  ...за пакедж, що не відповідає положенню файлу в папках, вам мають поставити **оцінку 2**...

  * у відео та матеріалах можна побачити інші формати пекеджу та папок, але **прислухайтесь саме до цього документу**
* все має бути маленькими англійськими літерами (окрім імені файлу).&#x20;

  ...за пакедж, положення та ім'я файлів та класів, що не відповідають цим всім умовам, вам мають поставити **оцінку 2**...&#x20;
* деякі рівні вказують інше іменування для завдань, будьте уважні.

## Ще:

* в корені архіву **має** бути файл **me.txt**, в якому міститься: ваше ім'я і прізвище українською мовою і контакти на наступному рядку;&#x20;
  * Якщо цього файлу немає (або в нього не та позиція чи ім'я), то попросіть людину бути уважнішою наступного разу, без заниження оцінок.
  * Контакти - це ваш діскорд юзернейм, телефон, телеграм, вайбер, пошта; \
    не обовʼязково все, але буває корисно коли воно є все.
* на повторне рев'ю в корені архіву повинен лежати файл `CHANGELOG.txt`, що описує (будь-якою мовою), що ви виправили в порівнянні з архівом, що пішов на перше рев'ю;
  * **Якщо цього файлу не буде — вам мають право просто не дивитися роботу (!), бо це неповага до рев'ювера. Але за це не обов'язково ставити 2. На розсуд рев'ювера.**
* переконайтеся, що в архіві немає нічого зайвого, окрім, власне, вищезгаданих файлів;
  * там може бути щось додаткове, якщо це має сенс для конкретного завдання (будуть такі);
  * якщо знайшли щось зайве, попросіть людину бути уважнішою наступного разу,  без заниження оцінок;
  * в архіві можуть бути файли/папки `.DS_Store`*, `__MACOSX`*, — це особливість архівування файлів під mac os, просто ігноруйте це сміття.
* не завантажуйте файли більше 1 МБ (наприклад, не включайте наш `.jar` файл у ваш архів);
* можна заливати свою домашку **безліч разів**, скільки хочете (до дедлайну), бо лише останній залитий архів буде доступний іншим;
* ім'я архіву може бути будь-яким, ми все одно змінимо це ім'я;
* користуйтесь Google Chrome на комп'ютері, інакше портал може погано працювати;

Знаєте, як зробити програми більш вражаючими? Зробіть більше, це буде плюсом в вашу карму 😃. Тільки зробіть це в вигляді додаткового `.java` файлу, назва якого містить суфікс `ext` чи `Ext`. Приклад: `Assignment1Part3ext.java`. &#x20;

## Нащо всі ці двійки:

* перевірка на уважність
* повага до інших (щоб чужі архіви були як свої)&#x20;
* та дисципліна (увага до деталей цінується в ІТ та інколи буває критичною)
* ... це все спірні пункти, та ми добре подумали.

Двійку за неуважність, будь ласка, сприйміть з подякою, це — частина навчання. \
Двійку за неуважність ставте відповідально.\
Нам буде неприємно зловити вас на невиконанні цього обов'язку. \
Просимо перестати навчатися, якщо не поважаєте наші правила.

**Що робити, якщо** людина просить вас не ставити 2-ку, яку вона чесно заслужила за неуважність:

* людина не читала цей документ, і не поважає наші правила.&#x20;
* можете запропонувати звернутися до адміністрації, ми шукатимемо найм'якіше рішення.

**Що робити, якщо** ви намагались бути уважним, але не помітили вищеописані нюанси під час перевірки архіву людини:

* вам не буде ніяких штрафів, з будь-ким *інколи* трапляється неуважність.
* ...за умови вашої відвертості та чесності.

## Для наочності:

Приклад архіву студента **на 1 рівні:**

Корінь архіву:

<figure><img src="https://428859209-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M4PKghVp3NJTTjbKtMh%2Fuploads%2FWOXKYIWFUhdOBWWdxq1K%2Farchive-rootdir.png?alt=media&#x26;token=eaef1c28-2a48-4a6c-8198-454a4b2cce70" alt=""><figcaption></figcaption></figure>

.java-файли в кінцевій (найглибшій) директорії пекеджа (та, що assignmentN):

<figure><img src="https://428859209-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M4PKghVp3NJTTjbKtMh%2Fuploads%2FOtDu87mskk6A68LLkrsc%2Farchive-assignmentdir.png?alt=media&#x26;token=e1e2b362-4288-406e-8e99-0948a7c15439" alt=""><figcaption></figcaption></figure>

Крім самих AssignmentNPartM тут можуть, звісно, лежати й інші файли з кодом: ваші власні класи, ext-версії завдань (AssignmentNPartMext.java), додаткові задачі (як-от про реактор) тощо.&#x20;

Пекедж всередині java-файла має відповідати реальному, як в архіві (звісно, без src):

<figure><img src="https://428859209-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M4PKghVp3NJTTjbKtMh%2Fuploads%2FTsblCZCHcl3Hfq55cWNa%2Fimage.png?alt=media&#x26;token=b7de4206-dae2-40ba-8b6e-8231d6a1e185" alt=""><figcaption></figcaption></figure>

**Бонус для тих хто дочитав до кінця:** як архівувати щось у Windows (на інших ОС схожим чином)

![](https://428859209-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M4PKghVp3NJTTjbKtMh%2Fuploads%2FJlBYiZUquM99IJIQl10S%2F%D1%81%D1%82%D0%B8%D1%81%D0%BD%D1%83%D1%82%D0%B0.png?alt=media\&token=d6bc3f2b-302b-4b33-957b-7ccf56f18ad8)
