fix: unit router PUT request

This commit is contained in:
Ruslan Zagitov 2025-01-30 12:41:00 +03:00
parent 16fda2e7ed
commit 4ef941d62f
4 changed files with 167 additions and 19 deletions

View File

@ -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. Перевести текст собеседования на английский язык, сохраняя структуру и смысл.

View File

@ -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, используя правильную структуру.
- Исправить ошибки в существующей документации программы.
- Перевести фрагмент документации на русский язык, сохраняя точность и стиль.

View File

@ -1 +1 @@
[{"id":0,"filename":"unit-1","name":"Unit 1: Multifunctional Verbs: Be, Have, and Do"}]
[{"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"}]

View File

@ -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) => {