diff --git a/server/routers/kfu-m-24-1/eng-it-lean/units/data/job-interview.md b/server/routers/kfu-m-24-1/eng-it-lean/units/data/job-interview.md new file mode 100644 index 0000000..0868ec1 --- /dev/null +++ b/server/routers/kfu-m-24-1/eng-it-lean/units/data/job-interview.md @@ -0,0 +1,70 @@ +### Цель урока: +Изучение ключевых слов и фраз, связанных с процессом трудоустройства, а также освоение базовой структуры диалога на собеседовании. + +### Лексика: +**Базовая лексика:** +1. **Job interview** – собеседование при приеме на работу +2. **Resume / CV** – резюме +3. **Cover letter** – сопроводительное письмо +4. **Interviewer** – интервьюер +5. **Application form** – анкета при приеме на работу +6. **Salary** – зарплата +7. **Benefits** – льготы + +**Расширенная лексика:** +1. **To apply for a job** – подавать заявку на работу +2. **To be offered the job** – получить предложение о работе +3. **To negotiate salary** – вести переговоры о зарплате +4. **To accept the offer** – принять предложение +5. **To decline the offer** – отклонить предложение +6. **To resign from your current position** – подать заявление об уходе с текущей работы +7. **To start working at the company** – начать работать в компании +8. **Probation period** – испытательный срок +9. **References** – рекомендации +10. **Work experience** – опыт работы + +### Грамматический фокус: +**Правило:** +Структура простого вопроса на английском языке: +- Общий вопрос: "Do you have any questions?" +- Специальный вопрос: "What are your strengths and weaknesses?" + +**Пример:** +Общий вопрос: "How do you feel about this job opportunity?" +Специальный вопрос: "Can you tell me about your previous work experience?" + +**Типичные ошибки и как их избежать:** +Ошибка: Неправильное использование порядка слов в вопросах. +Решение: Практиковать построение вопросов до автоматизма. + +### Контекстуализация: +**Текст для анализа:** +"I'm applying for the position of a marketing manager at XYZ Company. Here is my resume." +"Thank you for considering me. Can you please tell me more about the responsibilities of this role?" +"Sure, let me give you an overview." + +### Упражнения: +**Письменное задание:** +Составьте список из 5 вопросов, которые вы бы задали на собеседовании. Используйте простые вопросы и специальные вопросы. + +**Устная практика:** +Ролевая игра: один студент играет роль интервьюера, другой – кандидата на должность. Меняйтесь ролями. + +**Аналитическое задание:** +Найдите и исправьте ошибки в следующем письме: +"Dear HR Manager, + +My name is John Smith and I am writing to apply for the position of Sales Representative at ABC Inc. I enclose my resume for your review. + +I believe that my skills and experiences make me an ideal candidate for this position. In my current role as a sales representative at XYZ Corp, I have consistently met or exceeded my sales targets. Additionally, I possess strong communication and negotiation skills which will enable me to effectively represent your products and services. + +If you would like to schedule an interview, please contact me at your convenience. Thank you for your time and consideration. + +Best regards, +John Smith" + +### Домашнее задание: +**Текстовые задачи:** +1. Написать сопроводительное письмо для конкретной вакансии, используя расширенную лексику. +2. Составить резюме для воображаемой должности, включая все необходимые разделы. +3. Перевести текст собеседования на английский язык, сохраняя структуру и смысл. \ No newline at end of file diff --git a/server/routers/kfu-m-24-1/eng-it-lean/units/data/unit-2.md b/server/routers/kfu-m-24-1/eng-it-lean/units/data/unit-2.md new file mode 100644 index 0000000..ca55259 --- /dev/null +++ b/server/routers/kfu-m-24-1/eng-it-lean/units/data/unit-2.md @@ -0,0 +1,74 @@ +# Цель урока + +Изучение структуры документации программы с блоком кода. + +## Лексика + +### Базовая лексика: + +- Documentation – документация +- Code block – блок кода +- Description – описание +- Function – функция +- Variable – переменная +- Comment – комментарий + +### Расширенная лексика: + +- API – интерфейс прикладного программирования +- Method – метод +- Class – класс +- Library – библиотека +- Framework – фреймворк + +## Грамматический фокус + +Правило: Структура документации программы должна включать краткое описание, блок кода и примеры использования. + +Пример: + +Documentation for a program typically includes the following sections: + +1. **Description**: A brief overview of what the program does and its purpose. +2. **Code Block**: The actual code that implements the functionality described in the first section. +3. **Examples**: One or more examples demonstrating how to use the features described in the documentation. + +Типичные ошибки и как их избежать: Ошибки могут возникнуть из-за недостаточного описания функционала или неправильного форматирования кода. Чтобы избежать этого, важно тщательно проработать каждый раздел документации и убедиться, что все примеры корректны и понятны. + +## Контекстуализация + +Текст для анализа: + +**Description**: This is a simple Python script that calculates the average value of a list of numbers. + +**Code Block**: +```python +def calculate_average(numbers): + """Calculate the average value of a list of numbers""" + return sum(numbers)/len(numbers) +``` + +Примеры использования: + +```python +# Example usage +numbers = [10, 20, 30] +average = calculate_average(numbers) +print("The average value of the list", numbers, "is", average) +``` + +## Упражнения + +Письменное задание: Написать документацию для простой функции на языке Python, которая принимает список чисел и возвращает среднее значение. Включить описание, код блока и пример использования. + +Устная практика: Ролевой диалог между разработчиком и техническим писателем о структуре и содержании документации программы. + +Аналитическое задание: Проанализировать существующую документацию программы и найти ошибки или неясности. Предложить улучшения. + +## Домашнее задание + +Текстовые задачи: + +- Написать документацию для другой функции на языке Python, используя правильную структуру. +- Исправить ошибки в существующей документации программы. +- Перевести фрагмент документации на русский язык, сохраняя точность и стиль. diff --git a/server/routers/kfu-m-24-1/eng-it-lean/units/data/units.json b/server/routers/kfu-m-24-1/eng-it-lean/units/data/units.json index 88e5812..d0a4dd7 100644 --- a/server/routers/kfu-m-24-1/eng-it-lean/units/data/units.json +++ b/server/routers/kfu-m-24-1/eng-it-lean/units/data/units.json @@ -1 +1 @@ -[{"id":0,"filename":"unit-1","name":"Unit 1: Multifunctional Verbs: Be, Have, and Do"}] \ No newline at end of file +[{"id":1,"filename":"unit-1","name":"Unit 1: Multifunctional Verbs: Be, Have, and Do"},{"id":2,"filename":"unit-2","name":"Документация программы"},{"id":3,"fileName":"job-interview","name":"Job Interview"}] \ No newline at end of file diff --git a/server/routers/kfu-m-24-1/eng-it-lean/units/index.js b/server/routers/kfu-m-24-1/eng-it-lean/units/index.js index 8e131a5..4824386 100644 --- a/server/routers/kfu-m-24-1/eng-it-lean/units/index.js +++ b/server/routers/kfu-m-24-1/eng-it-lean/units/index.js @@ -10,33 +10,37 @@ router.get('/', (req, res) => { }); router.put('/', (req, res) => { - const newUnit = req.body + const newUnit = req.body; - if (!newUnit) { - return res.status(400).send('No new unit to be added') - } + if (!newUnit) { + return res.status(400).send('No new unit to be added'); + } - if (!data) { - return res.status(500).send('No data to be updated') - } + if (!data) { + return res.status(500).send('No data to be updated'); + } - data.push({ "id": data.length, ...newUnit }) + const newId = data.length + 1; + const fileName = newUnit.name.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); + fs.writeFileSync(path.join(__dirname, 'data', `${fileName}.md`), newUnit.content); - fs.writeFileSync(path.join(__dirname, 'data', 'units.json'), JSON.stringify(data)); - res.status(200).send(data); + data.push({ id: newId, fileName: fileName, name: newUnit.name }); + + fs.writeFileSync(path.join(__dirname, 'data', 'units.json'), JSON.stringify(data)); + res.status(200).send(data); }); router.delete('/:id', (req, res) => { - const id = parseInt(req.params.id); - const index = data.findIndex((unit) => unit.id === id); + const id = parseInt(req.params.id); + const index = data.findIndex((unit) => unit.id === id); - if (index < 0) { - return res.status(404).send('Not found'); - } + if (index < 0) { + return res.status(404).send('Not found'); + } - data.splice(index, 1); - fs.writeFileSync(path.join(__dirname, 'data', 'units.json'), JSON.stringify(data)); - res.send({ message: `Unit with ID ${id} deleted` }); + data.splice(index, 1); + fs.writeFileSync(path.join(__dirname, 'data', 'units.json'), JSON.stringify(data)); + res.send({ message: `Unit with ID ${id} deleted` }); }); router.get('/:id', (req, res) => {