12 subscribers
182 photos
3 videos
212 links
Programmer - Курсы программирования. Канал для тех, кто не хочет остаться на задворках цивилизации.
Download Telegram
🚀 Изучаем HTML5 | Урок 10: Мультимедиа и графика

Привет, друзья! В этом уроке мы продолжим изучать возможности HTML5, сосредоточившись на мультимедиа и графике. Мы узнаем, как добавлять аудио и видео на страницы, а также как создавать графику с помощью <canvas> и <svg>. Поехали! 🎉

---

### 🎧 Аудио и видео в HTML5
HTML5 предоставляет встроенную поддержку для добавления аудио и видео на веб-страницы без необходимости использования сторонних плагинов.

#### Пример аудио:
<audio controls>
<source src="audio.mp3" type="audio/mpeg">
Ваш браузер не поддерживает аудио элемент.
</audio>


#### Пример видео:
<video controls width="600">
<source src="video.mp4" type="video/mp4">
Ваш браузер не поддерживает видео элемент.
</video>


- `controls`: Добавляет элементы управления (воспроизведение, пауза, громкость).
- `<source>`: Указывает источник файла и его тип.

---

### 🎨 Графика с помощью `<canvas>`
Элемент <canvas> используется для создания графики на лету с помощью JavaScript. Это мощный инструмент для рисования графиков, анимаций и даже игр.

#### Пример:
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;">
</canvas>
<script>
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.fillStyle = '#FF0000';
ctx.fillRect(10, 10, 50, 50);
</script>


- `getContext('2d')`: Получает контекст для рисования 2D графики.
- `fillRect(x, y, width, height)`: Рисует прямоугольник.

---

### 🖼 Графика с помощью `<svg>`
SVG (Scalable Vector Graphics) — это формат векторной графики, который позволяет создавать масштабируемые изображения. SVG можно использовать для создания сложных графических элементов, таких как иконки, диаграммы и анимации.

#### Пример:
<svg width="100" height="100">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
</svg>


- `<circle>`: Создает круг с заданными параметрами.
- `cx`, `cy`: Координаты центра круга.
- `r`: Радиус круга.

---

### 🎯 Практическое задание
1. Добавьте на свою страницу аудиоплеер и видеоплеер.
2. Создайте простой рисунок на элементе <canvas> с использованием JavaScript.
3. Используйте SVG для создания графического элемента, например, иконки или диаграммы.

---

💡 Совет: Используйте семантические теги (<header>, <main>, <footer>) для улучшения структуры вашей страницы. Это не только сделает код чище, но и поможет поисковым системам лучше понять ваш контент.

---

В следующем уроке мы начнем изучать CSS, чтобы ваши страницы стали стильными и красивыми! 🎨

Не забывайте задавать вопросы в комментариях, если что-то непонятно. Удачи в изучении HTML5! 🚀

#HTML5 #вебразработка #урокиHTML #программирование

👉 Подписывайтесь на наш канал: [https://t.me/Safety_Y](https://t.me/Safety_Y)
Урок 10: Методология BEM — Пишем чистый и поддерживаемый CSS

Привет, друзья! 👋 Сегодня мы изучим BEM (Block, Element, Modifier) — методологию, которая помогает писать чистый, понятный и легко поддерживаемый CSS-код. BEM особенно полезен в больших проектах, где важно избегать конфликтов стилей и упрощать работу в команде. Поехали! 🚀

---

### Что такое BEM?
BEM — это подход к организации CSS-кода, который делит интерфейс на независимые блоки. Это делает код более модульным и предсказуемым.

Основные понятия:
1. Блок (Block)
Независимый компонент, который имеет смысл сам по себе (например, кнопка, меню, карточка).

2. Элемент (Element)
Часть блока, которая не имеет смысла вне его (например, заголовок или иконка внутри карточки).

3. Модификатор (Modifier)
Свойство, которое изменяет внешний вид или поведение блока/элемента (например, кнопка может быть большой или красной).

---

### Синтаксис BEM
BEM использует строгую нотацию для именования классов:

1. Блок
Название блока пишется одним словом (например, .menu, .button).

2. Элемент
Название элемента отделяется от блока двойным подчеркиванием __ (например, .menu__item, .button__icon).

3. Модификатор
Название модификатора отделяется от блока или элемента двойным дефисом -- (например, .button--large, .menu__item--active).

---

### Пример использования BEM

#### HTML:
<div class="card">
<img class="card__image" src="image.jpg" alt="Image">
<h2 class="card__title">Заголовок</h2>
<p class="card__description">Описание карточки.</p>
<button class="card__button card__button--primary">Кнопка</button>
</div>



#### CSS:
/* Блок */
.card {
border: 1px solid #ccc;
padding: 20px;
}

/* Элементы */
.card__image {
width: 100%;
height: auto;
}

.card__title {
font-size: 24px;
margin-bottom: 10px;
}

.card__description {
font-size: 16px;
color: #666;
}

/* Модификатор */
.card__button--primary {
background-color: blue;
color: white;
}



---

### Преимущества BEM
1. Модульность
Каждый блок независим, что позволяет легко переиспользовать код.

2. Понятность
Имена классов четко описывают структуру и назначение элементов.

3. Отсутствие конфликтов
Уникальные имена классов предотвращают случайные переопределения стилей.

4. Масштабируемость
BEM отлично подходит для больших проектов и командной работы.

---

### Практика
1. Создайте блок header с элементами logo, menu и search.
2. Добавьте модификатор для активного пункта меню.
3. Напишите стили, используя BEM-нотацию.

---

### Домашнее задание
Создайте страницу с использованием BEM:
- Блок header с логотипом и навигацией.
- Блок card с изображением, заголовком и кнопкой.
- Добавьте модификаторы для кнопок (например, primary и secondary).

Поделитесь результатами в комментариях! 😉

На этом наш курс по CSS подходит к концу. Мы изучили основы, Flexbox, Grid, анимации, адаптивный дизайн, препроцессоры и методологию BEM. Теперь вы готовы создавать современные и красивые веб-страницы! 🎉

Подписывайтесь на наш канал: [https://t.me/Safety_Y](https://t.me/Safety_Y)

#CSS #ВебРазработка #УрокиCSS #Программирование
👉Основы JavaScript, jQuery и Ajax
Недавно мне надо было в кратчайшие сроки освоить JavaScript. Я начал искать информацию в Интернете. Вначале мне попадались толстенные, да и ещё, как правило, устаревшие книги, пока я не наткнулся на один интересный курс.

Это курс достаточно известного в своих кругах специалиста в области создания сайтов - Михаил Русакова.

Сразу даю ссылку на курс: https://Hottab.programsite.ru/freejs

Я получил этот курс и прошёл его. И теперь могу поделиться своими впечатлениями. Курс мне очень понравился. Во-первых, он для начинающих, во-вторых, разбираются примеры из практики, в-третьих есть примеры и по библиотеке jQuery и технологии Ajax, и, наконец, курс ещё совсем свежий и информация в нём актуальна.

А самое удивительное, что этот курс абсолютно бесплатный!

В общем, если Вы хотите изучить JavaScript, то могу смело Вам рекомендовать курс, который и Ваш покорный слуга прошёл на одном дыхании: https://Hottab.programsite.ru/freejs
This media is not supported in your browser
VIEW IN TELEGRAM
📘 Полное руководство по PHP – Глава 14: Работа с API (RESTful API) 🐘

В этой главе мы изучим, как создавать и использовать RESTful API на PHP. API (Application Programming Interface) позволяет приложениям взаимодействовать друг с другом. Мы рассмотрим создание API, обработку запросов и работу с JSON.

---

### 1. Что такое RESTful API?
REST (Representational State Transfer) — это архитектурный стиль для создания веб-сервисов. RESTful API использует HTTP-методы (GET, POST, PUT, DELETE) для выполнения операций с ресурсами.

---

### 2. Создание простого RESTful API
#### Шаг 1: Настройка маршрутов
Создайте файл index.php и настройте маршруты:
<?php
header("Content-Type: application/json");

$request_method = $_SERVER['REQUEST_METHOD'];
$request_uri = $_SERVER['REQUEST_URI'];

switch ($request_method) {
case 'GET':
if ($request_uri == '/users') {
getUsers();
} elseif (preg_match('/\/users\/(\d+)/', $request_uri, $matches)) {
getUser($matches[1]);
}
break;
case 'POST':
if ($request_uri == '/users') {
createUser();
}
break;
default:
http_response_code(405);
echo json_encode(["message" => "Метод не поддерживается"]);
}
?>


#### Шаг 2: Функции для обработки запросов
<?php
function getUsers() {
$users = [
["id" => 1, "name" => "Иван"],
["id" => 2, "name" => "Мария"]
];
echo json_encode($users);
}

function getUser($id) {
$users = [
1 => ["id" => 1, "name" => "Иван"],
2 => ["id" => 2, "name" => "Мария"]
];
if (isset($users[$id])) {
echo json_encode($users[$id]);
} else {
http_response_code(404);
echo json_encode(["message" => "Пользователь не найден"]);
}
}

function createUser() {
$data = json_decode(file_get_contents("php://input"), true);
if (isset($data['name'])) {
echo json_encode(["message" => "Пользователь создан", "name" => $data['name']]);
} else {
http_response_code(400);
echo json_encode(["message" => "Неверные данные"]);
}
}
?>


---

### 3. Использование API
#### GET-запрос (получение списка пользователей)
curl -X GET http://localhost/users

Ответ:
[
{"id": 1, "name": "Иван"},
{"id": 2, "name": "Мария"}
]


#### GET-запрос (получение одного пользователя)
curl -X GET http://localhost/users/1

Ответ:
{"id": 1, "name": "Иван"}


#### POST-запрос (создание пользователя)
curl -X POST -H "Content-Type: application/json" -d '{"name": "Алексей"}' http://localhost/users

Ответ:
{"message": "Пользователь создан", "name": "Алексей"}


---

### 4. Обработка ошибок
- 404 Not Found: Ресурс не найден.
- 400 Bad Request: Неверные данные.
- 405 Method Not Allowed: Метод не поддерживается.

Пример:
<?php
http_response_code(404);
echo json_encode(["message" => "Ресурс не найден"]);
?>


---

### 5. Работа с JSON
PHP предоставляет функции для работы с JSON:
- json_encode(): Преобразует массив в JSON.
- json_decode(): Преобразует JSON в массив.

Пример:
<?php
$data = ["name" => "Иван", "age" => 25];
$json = json_encode($data);
echo $json; // {"name":"Иван","age":25}

$array = json_decode($json, true);
print_r($array); // Array ( [name] => Иван [age] => 25 )
?>


---

### 6. Авторизация и токены
Для защиты API часто используются токены (например, JWT).

#### Пример с JWT
1. Установите библиотеку для работы с JWT:

   composer require firebase/php-jwt

2. Создайте токен:

   <?php
use Firebase\JWT\JWT;

$key = "your_secret_key";
$payload = [
"user_id" => 1,
"username" => "Иван"
];
$jwt = JWT::encode($payload, $key);
echo $jwt;
?>

3. Проверка токена:

   <?php
try {
$decoded = JWT::decode($jwt, $key, array('HS256'));
print_r($decoded);
} catch (Exception $e) {
http_response_code(401);
echo json_encode(["message" => "Ошибка авторизации"]);
}
?>




🎯 Что дальше?
В следующей главе мы изучим работу с файлами и загрузкой данных на сервер. Продолжайте изучать PHP, и вы сможете создавать мощные веб-приложения!
Урок 8: Работа со списками в Python 🐍

Привет, друзья! Сегодня мы продолжаем изучать Python и переходим к одной из самых мощных структур данных — спискам. Списки позволяют хранить и обрабатывать множество элементов в одной переменной. Давайте разбираться! 🚀

---

### Что такое список?
Список — это упорядоченная коллекция элементов, которые могут быть разных типов (числа, строки, другие списки и т.д.). Списки изменяемы, то есть вы можете добавлять, удалять и изменять элементы.

### Как создать список?
Списки создаются с помощью квадратных скобок []. Например:

fruits = ["яблоко", "банан", "вишня"]
numbers = [1, 2, 3, 4, 5]


### Основные операции со списками

1. Доступ к элементам
Элементы списка индексируются, начиная с 0.

   print(fruits[0])  # Вывод: яблоко
print(numbers[2]) # Вывод: 3


2. Изменение элементов
Списки можно изменять:

   fruits[1] = "апельсин"
print(fruits) # Вывод: ["яблоко", "апельсин", "вишня"]


3. Добавление элементов
Используйте метод append() для добавления элемента в конец списка:

   fruits.append("киви")
print(fruits) # Вывод: ["яблоко", "апельсин", "вишня", "киви"]


4. Удаление элементов
Удалить элемент можно с помощью метода remove():

   fruits.remove("вишня")
print(fruits) # Вывод: ["яблоко", "апельсин", "киви"]


5. Длина списка
Узнать количество элементов в списке можно с помощью функции len():

   print(len(fruits))  # Вывод: 3


6. Срезы
Срезы позволяют получить часть списка:

   print(numbers[1:3])  # Вывод: [2, 3]


---

### Пример использования списков
Допустим, мы хотим посчитать сумму всех элементов в списке:

numbers = [1, 2, 3, 4, 5]
total = sum(numbers)
print(total) # Вывод: 15


---

### Практика
Создайте список из 5 любимых фильмов и выведите:
1. Первый фильм.
2. Последний фильм.
3. Добавьте новый фильм в конец списка.
4. Удалите второй фильм из списка.

---

Если вам понравился урок, ставьте ❤️ и делитесь с друзьями!
Все вопросы и решения задачек можно обсудить в комментариях. 😉

👉 Подписывайтесь на наш канал: [Safety_Y](https://t.me/Safety_Y)
#Python #Программирование #УрокиPython #Списки
🚀 Изучаем HTML5 | Урок 11: Формы и элементы ввода

Привет, друзья! В этом уроке мы погрузимся в мир форм и элементов ввода, которые позволяют собирать данные от пользователей. HTML5 предлагает множество новых возможностей для создания удобных и функциональных форм. Давайте начнем! 🎉

---

### 📝 Основы форм
Формы создаются с помощью тега <form>. Они могут содержать различные элементы ввода, такие как текстовые поля, кнопки, флажки и многое другое.

#### Пример простой формы:
<form action="/submit" method="post">
<label for="name">Имя:</label>
<input type="text" id="name" name="name" required>

<label for="email">Email:</label>
<input type="email" id="email" name="email" required>

<button type="submit">Отправить</button>
</form>


- `action`: Указывает URL, на который отправляются данные формы.
- `method`: Определяет метод отправки данных (GET или POST).
- `required`: Обязательное поле для заполнения.

---

### 🛠 Элементы ввода
HTML5 предоставляет множество типов элементов ввода, которые упрощают сбор данных и улучшают пользовательский опыт.

#### Примеры:
<label for="color">Выберите цвет:</label>
<input type="color" id="color" name="color">

<label for="date">Дата:</label>
<input type="date" id="date" name="date">

<label for="range">Уровень удовлетворения:</label>
<input type="range" id="range" name="range" min="0" max="10">

<label for="file">Загрузите файл:</label>
<input type="file" id="file" name="file">


- `type="color"`: Поле для выбора цвета.
- `type="date"`: Поле для выбора даты.
- `type="range"`: Ползунок для выбора значения в диапазоне.
- `type="file"`: Поле для загрузки файлов.

---

### 🔍 Валидация форм
HTML5 упрощает валидацию данных с помощью встроенных атрибутов.

#### Пример:
<label for="phone">Телефон:</label>
<input type="tel" id="phone" name="phone" pattern="[0-9]{10}" required>


- `pattern`: Указывает регулярное выражение для проверки ввода.
- `type="tel"`: Поле для ввода номера телефона.

---

### 🎯 Практическое задание
1. Создайте форму регистрации с полями для имени, email, пароля и даты рождения.
2. Добавьте поле для выбора цвета и ползунок для оценки.
3. Используйте атрибуты валидации, чтобы сделать поля обязательными.

---

💡 Совет: Используйте семантические теги, такие как <fieldset> и <legend>, для группировки элементов формы. Это улучшит читаемость и доступность вашего кода.

---

В следующем уроке мы начнем изучать CSS, чтобы ваши формы и страницы стали стильными и привлекательными! 🎨

Не забывайте задавать вопросы в комментариях, если что-то непонятно. Удачи в изучении HTML5! 🚀

#HTML5 #вебразработка #урокиHTML #программирование

👉 Подписывайтесь на наш канал: [https://t.me/Safety_Y](https://t.me/Safety_Y)
👉Создание сайта от начала и до конца
Вы много видели книг по созданию сайтов? Я думаю, что да, по крайней мере, я их видел, как минимум, сотню. Но чем они плохи? Вот некоторые недостатки, которые встречаются в большинстве книг:

Устаревшая. Смысл читать книгу по созданию сайта, написанную 10 лет назад? По этой причине, от зарубежных авторов можно читать только в оригинале, так как пока её издадут в России пройдёт года 3, а это уже много.
Автор пишет непонятно для кого. Вроде пишет о простых вещах, но при этом он делает это так трудно, что понять нереально. Такое ощущение, что задача автора показать себя, а не помочь читателю.
Большинство книг по созданию сайта разбирает какой-то отдельный аспект, например, вёрстку, или, например, программную часть. Вроде хорошо, но новичок-то, откуда должен знать, какие темы нужно проходить? У него есть простая цель - научиться создавать сайты, а то, что при этом нужно найти дизайн, сделать вёрстку, написать программную часть, купить домен, хостинг - он изначально никак не знает. Поэтому для начинающих подобные книги вообще не подходят.
И вот недавно я нашёл книгу, которая лишена этих недостатков: https://Hottab.programsite.ru/book

Эта книга рассчитана на начинающих, и вот там создаётся сайт ОТ и ДО. То есть готовится дизайн, затем верстаются страницы, пишется программная часть, а после сайт размещается в Интернете. Автор тщательно всё комментирует, а в книге очень много скриншотов и иллюстраций. Причём особенностью книги является то, что создаётся не какой-то абстрактный сайт, а вполне реальный и существующий в Интернете.

Подводя итог, мне эта книга очень понравилась, поэтому я её Вам рекомендую, тем более, что она бесплатная: https://Hottab.programsite.ru/book
This media is not supported in your browser
VIEW IN TELEGRAM
📘 Полное руководство по PHP – Глава 15: Работа с файлами и загрузка данных на сервер 🐘

В этой главе мы рассмотрим, как работать с файлами в PHP, включая загрузку файлов на сервер, чтение и запись данных, а также управление файловой системой. Эти навыки необходимы для создания функциональных веб-приложений.

---

### 1. Загрузка файлов на сервер
PHP позволяет загружать файлы на сервер через HTML-форму.

#### HTML-форма
<form action="upload.php" method="post" enctype="multipart/form-data">
Выберите файл: <input type="file" name="file">
<input type="submit" value="Загрузить">
</form>


#### Обработка загрузки (upload.php)
<?php
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
$upload_dir = 'uploads/';
$upload_file = $upload_dir . basename($_FILES['file']['name']);

if (move_uploaded_file($_FILES['file']['tmp_name'], $upload_file)) {
echo "Файл успешно загружен!";
} else {
echo "Ошибка при загрузке файла!";
}
} else {
echo "Ошибка: " . $_FILES['file']['error'];
}
?>


---

### 2. Чтение и запись файлов
PHP предоставляет функции для работы с файлами.

#### Чтение файла
<?php
$file = fopen("example.txt", "r") or die("Не удалось открыть файл!");
echo fread($file, filesize("example.txt"));
fclose($file);
?>


#### Запись в файл
<?php
$file = fopen("example.txt", "w") or die("Не удалось открыть файл!");
$text = "Привет, мир!";
fwrite($file, $text);
fclose($file);
?>


---

### 3. Работа с директориями
PHP позволяет создавать, удалять и переименовывать директории.

#### Создание директории
<?php
if (!file_exists("new_dir")) {
mkdir("new_dir");
echo "Директория создана!";
} else {
echo "Директория уже существует!";
}
?>


#### Удаление директории
<?php
if (file_exists("new_dir")) {
rmdir("new_dir");
echo "Директория удалена!";
} else {
echo "Директория не существует!";
}
?>


#### Переименование директории
<?php
if (file_exists("old_dir")) {
rename("old_dir", "new_dir");
echo "Директория переименована!";
} else {
echo "Директория не существует!";
}
?>


---

### 4. Работа с CSV
CSV (Comma-Separated Values) — это формат для хранения табличных данных.

#### Чтение CSV
<?php
$file = fopen("data.csv", "r");
while (($data = fgetcsv($file, 1000, ",")) !== FALSE) {
print_r($data);
}
fclose($file);
?>


#### Запись в CSV
<?php
$file = fopen("data.csv", "w");
$data = [
["Иван", 25],
["Мария", 30]
];
foreach ($data as $row) {
fputcsv($file, $row);
}
fclose($file);
?>


---

### 5. Работа с JSON
JSON (JavaScript Object Notation) — это популярный формат для обмена данными.

#### Чтение JSON
<?php
$json = '{"name": "Иван", "age": 25}';
$array = json_decode($json, true);
print_r($array);
?>


#### Запись JSON
<?php
$array = ["name" => "Иван", "age" => 25];
$json = json_encode($array);
echo $json;
?>


---

### 6. Управление файловой системой
PHP предоставляет функции для работы с файловой системой.

#### Проверка существования файла
<?php
if (file_exists("example.txt")) {
echo "Файл существует!";
} else {
echo "Файл не существует!";
}
?>


#### Получение размера файла
<?php
echo "Размер файла: " . filesize("example.txt") . " байт";
?>


#### Удаление файла
<?php
if (unlink("example.txt")) {
echo "Файл удалён!";
} else {
echo "Ошибка при удалении файла!";
}
?>


---

🎯 Что дальше?
В следующей главе мы изучим работу с сессиями и куками, а также управление состоянием пользователя. Продолжайте изучать PHP, и вы сможете создавать мощные веб-приложения! 🚀

#PHP #Файлы #Загрузка #Программирование #Телеграм
Урок 9: Циклы в Python 🐍

Привет, друзья! Сегодня мы продолжаем изучать Python и переходим к одной из самых важных тем — циклам. Циклы позволяют выполнять один и тот же блок кода несколько раз, что делает их незаменимыми для обработки данных, перебора элементов и автоматизации задач. Поехали! 🚀

---

### Что такое цикл?
Цикл — это конструкция, которая повторяет выполнение блока кода, пока выполняется определенное условие. В Python есть два основных типа циклов:
1. Цикл `for` — используется для перебора элементов.
2. Цикл `while` — выполняется, пока условие истинно.

---

### Цикл for
Цикл for идеально подходит для перебора элементов списка, строки или любого другого итерируемого объекта.

#### Пример:
fruits = ["яблоко", "банан", "вишня"]
for fruit in fruits:
print(fruit)


Вывод:
яблоко
банан
вишня


#### Функция range()
Часто цикл for используется вместе с функцией range(), которая генерирует последовательность чисел:

for i in range(5):  # Перебор чисел от 0 до 4
print(i)


Вывод:
0
1
2
3
4


---

### Цикл while
Цикл while выполняется, пока условие истинно. Например:

count = 0
while count < 5:
print(f"Счетчик: {count}")
count += 1


Вывод:
Счетчик: 0
Счетчик: 1
Счетчик: 2
Счетчик: 3
Счетчик: 4


---

### Управление циклами
Иногда нужно прервать цикл или пропустить итерацию. Для этого используются:
- break — завершает цикл.
- continue — пропускает текущую итерацию.

#### Пример с break:
for i in range(10):
if i == 5:
break # Выход из цикла, когда i равно 5
print(i)


Вывод:
0
1
2
3
4


#### Пример с continue:
for i in range(5):
if i == 2:
continue # Пропустить итерацию, когда i равно 2
print(i)


Вывод:
0
1
3
4


---

### Практика
1. Создайте список чисел от 1 до 10 и выведите только четные числа с помощью цикла for.
2. Используя цикл while, напишите программу, которая выводит числа от 10 до 1 в обратном порядке.

---

Если вам понравился урок, ставьте ❤️ и делитесь с друзьями!
Все вопросы и решения задачек можно обсудить в комментариях. 😉

👉 Подписывайтесь на наш канал: [Safety_Y](https://t.me/Safety_Y)
#Python #Программирование #УрокиPython #Циклы
🚀 Изучаем HTML5 | Урок 12: Мультимедиа и графика

Привет, друзья! В этом уроке мы продолжим изучать возможности HTML5, сосредоточившись на мультимедиа и графике. Мы узнаем, как добавлять аудио и видео на страницы, а также как создавать графику с помощью <canvas> и <svg>. Поехали! 🎉

---

### 🎧 Аудио и видео в HTML5
HTML5 предоставляет встроенную поддержку для добавления аудио и видео на веб-страницы без необходимости использования сторонних плагинов.

#### Пример аудио:
<audio controls>
<source src="audio.mp3" type="audio/mpeg">
Ваш браузер не поддерживает аудио элемент.
</audio>


#### Пример видео:
<video controls width="600">
<source src="video.mp4" type="video/mp4">
Ваш браузер не поддерживает видео элемент.
</video>


- `controls`: Добавляет элементы управления (воспроизведение, пауза, громкость).
- `<source>`: Указывает источник файла и его тип.

---

### 🎨 Графика с помощью `<canvas>`
Элемент <canvas> используется для создания графики на лету с помощью JavaScript. Это мощный инструмент для рисования графиков, анимаций и даже игр.

#### Пример:
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;">
</canvas>
<script>
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.fillStyle = '#FF0000';
ctx.fillRect(10, 10, 50, 50);
</script>


- `getContext('2d')`: Получает контекст для рисования 2D графики.
- `fillRect(x, y, width, height)`: Рисует прямоугольник.

---

### 🖼 Графика с помощью `<svg>`
SVG (Scalable Vector Graphics) — это формат векторной графики, который позволяет создавать масштабируемые изображения. SVG можно использовать для создания сложных графических элементов, таких как иконки, диаграммы и анимации.

#### Пример:
<svg width="100" height="100">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
</svg>


- `<circle>`: Создает круг с заданными параметрами.
- `cx`, `cy`: Координаты центра круга.
- `r`: Радиус круга.

---

### 🎯 Практическое задание
1. Добавьте на свою страницу аудиоплеер и видеоплеер.
2. Создайте простой рисунок на элементе <canvas> с использованием JavaScript.
3. Используйте SVG для создания графического элемента, например, иконки или диаграммы.

---

💡 Совет: Используйте семантические теги (<header>, <main>, <footer>) для улучшения структуры вашей страницы. Это не только сделает код чище, но и поможет поисковым системам лучше понять ваш контент.

---

В следующем уроке мы начнем изучать CSS, чтобы ваши страницы стали стильными и красивыми! 🎨

Не забывайте задавать вопросы в комментариях, если что-то непонятно. Удачи в изучении HTML5! 🚀

#HTML5 #вебразработка #урокиHTML #программирование

👉 Подписывайтесь на наш канал: [https://t.me/Safety_Y](https://t.me/Safety_Y)
This media is not supported in your browser
VIEW IN TELEGRAM
📘 Полное руководство по PHP – Глава 16: Работа с сессиями и куками 🐘

В этой главе мы рассмотрим, как управлять состоянием пользователя с помощью сессий и кук. Эти технологии позволяют сохранять данные между запросами, что особенно полезно для авторизации, корзин покупок и персонализации.

---

### 1. Сессии
Сессии позволяют хранить данные на сервере для каждого пользователя. Каждая сессия имеет уникальный идентификатор, который передаётся через куки.

#### Начало сессии
<?php
session_start();
?>


#### Сохранение данных в сессии
<?php
session_start();
$_SESSION['username'] = "Иван";
echo "Данные сохранены в сессии!";
?>


#### Получение данных из сессии
<?php
session_start();
if (isset($_SESSION['username'])) {
echo "Привет, " . $_SESSION['username'] . "!";
} else {
echo "Сессия не найдена!";
}
?>


#### Удаление данных из сессии
<?php
session_start();
unset($_SESSION['username']);
echo "Данные удалены из сессии!";
?>


#### Завершение сессии
<?php
session_start();
session_destroy();
echo "Сессия завершена!";
?>


---

### 2. Куки
Куки позволяют хранить данные на стороне клиента. Они могут быть использованы для персонализации или отслеживания пользователей.

#### Установка куки
<?php
setcookie("username", "Иван", time() + 3600, "/");
echo "Кука установлена!";
?>


#### Получение данных из куки
<?php
if (isset($_COOKIE['username'])) {
echo "Привет, " . $_COOKIE['username'] . "!";
} else {
echo "Кука не найдена!";
}
?>


#### Удаление куки
<?php
setcookie("username", "", time() - 3600, "/");
echo "Кука удалена!";
?>


---

### 3. Пример: Авторизация с использованием сессий
#### Форма входа
<form action="login.php" method="post">
Имя пользователя: <input type="text" name="username">
Пароль: <input type="password" name="password">
<input type="submit" value="Войти">
</form>


#### Обработка входа (login.php)
<?php
session_start();

$username = $_POST['username'];
$password = $_POST['password'];

// Проверка логина и пароля (пример)
if ($username === "Иван" && $password === "12345") {
$_SESSION['username'] = $username;
echo "Вход выполнен!";
} else {
echo "Неверные данные!";
}
?>


#### Проверка авторизации
<?php
session_start();

if (isset($_SESSION['username'])) {
echo "Привет, " . $_SESSION['username'] . "!";
} else {
echo "Пожалуйста, войдите в систему.";
}
?>


#### Выход из системы
<?php
session_start();
session_destroy();
echo "Вы вышли из системы!";
?>


---

### 4. Пример: Запоминание пользователя с использованием кук
#### Установка куки при входе
<?php
$username = $_POST['username'];
$password = $_POST['password'];

if ($username === "Иван" && $password === "12345") {
setcookie("username", $username, time() + 3600, "/");
echo "Вход выполнен!";
} else {
echo "Неверные данные!";
}
?>


#### Проверка куки
<?php
if (isset($_COOKIE['username'])) {
echo "Привет, " . $_COOKIE['username'] . "!";
} else {
echo "Пожалуйста, войдите в систему.";
}
?>


---

### 5. Безопасность
- Сессии: Используйте session_regenerate_id() для предотвращения фиксации сессии.
- Куки: Устанавливайте флаг HttpOnly и Secure для защиты от XSS и перехвата.

  setcookie("username", "Иван", time() + 3600, "/", "", true, true);


---

🎯 Что дальше?
В следующей главе мы изучим работу с базами данных, включая PDO и ORM. Продолжайте изучать PHP, и вы сможете создавать мощные веб-приложения! 🚀

#PHP #Сессии #Куки #Программирование #Телеграм
👉JavaScript, jQuery и Ajax с Нуля до Гуру
Видеокурс "JavaScript, jQuery и Ajax с Нуля до Гуру"

Привет моим читателям! Приступлю сразу к делу.

Я думаю не надо объяснять, что JavaScript - это очень важный язык, если Вы занимаетесь созданием сайтов. С его помощью делаются проверки форм без перезагрузки страницы (что очень удобно для пользователей), всякие анимации (плавное исчезновение, плавные движения и так далее), динамическая подгрузка контента с сервера (безусловно, с помощью технологии Ajax).

Вопрос лишь в том, как научиться всё это делать.

Многие из Вас слышали о принципе Парето, который говорит о том, что 20% дел дают 80% результата. Я был уверен, что и в программировании то же самое. Невозможно знать всё, однако, для успеха достаточно знать лишь малую часть. Таким образом, задача упрощается в разы, если найти материал настоящего практика, который и поведает только то, что он использует в своей практике.

И такой практик нашёлся - это Михаил Русаков, который выпустил курс как раз по JavaScript. Называется курс "JavaScript, jQuery и Ajax с Нуля до Гуру" (https://Hottab.programsite.ru/javascript). Особенностью курса является то, что автор рассказывает ровно то, что необходимо и ничего лишнего. Он даёт всю необходимую теорию и массу практических примеров. А упражнения, которые идут к урокам, позволяют закрепить материал, что также мне очень понравилось.

В общем, если Вы хотите использовать JavaScript на своих сайтах, то рекомендую курс https://Hottab.programsite.ru/javascript. На мой взгляд, в Рунете лучше курса по JavaScript Вам точно не найти.
Урок 10: Словари в Python 🐍

Привет, друзья! Сегодня мы продолжаем изучать Python и переходим к одной из самых полезных структур данных — словарям. Словари позволяют хранить данные в формате "ключ-значение", что делает их идеальными для работы с большими объемами информации. Давайте разбираться! 🚀

---

### Что такое словарь?
Словарь — это неупорядоченная коллекция элементов, где каждый элемент состоит из ключа и значения. Ключи уникальны и используются для доступа к значениям.

### Как создать словарь?
Словари создаются с помощью фигурных скобок {}. Например:

student = {
"имя": "Анна",
"возраст": 20,
"курс": 3
}


---

### Основные операции со словарями

1. Доступ к элементам
Чтобы получить значение по ключу, используйте квадратные скобки:

   print(student["имя"])  # Вывод: Анна


2. Изменение элементов
Значения в словаре можно изменять:

   student["возраст"] = 21
print(student) # Вывод: {'имя': 'Анна', 'возраст': 21, 'курс': 3}


3. Добавление элементов
Новые пары "ключ-значение" можно добавлять просто по новому ключу:

   student["город"] = "Москва"
print(student) # Вывод: {'имя': 'Анна', 'возраст': 21, 'курс': 3, 'город': 'Москва'}


4. Удаление элементов
Удалить элемент можно с помощью оператора del:

   del student["курс"]
print(student) # Вывод: {'имя': 'Анна', 'возраст': 21, 'город': 'Москва'}


5. Проверка наличия ключа
Чтобы проверить, есть ли ключ в словаре, используйте оператор in:

   if "возраст" in student:
print("Ключ 'возраст' существует!")


6. Методы словарей
- keys() — возвращает все ключи.
- values() — возвращает все значения.
- items() — возвращает пары "ключ-значение".

Пример:

   print(student.keys())    # Вывод: dict_keys(['имя', 'возраст', 'город'])
print(student.values()) # Вывод: dict_values(['Анна', 21, 'Москва'])
print(student.items()) # Вывод: dict_items([('имя', 'Анна'), ('возраст', 21), ('город', 'Москва')])


---

### Пример использования словарей
Допустим, мы хотим создать словарь с информацией о книге:

book = {
"название": "1984",
"автор": "Джордж Оруэлл",
"год": 1949
}

print(f"Книга: {book['название']}, Автор: {book['автор']}, Год: {book['год']}")


Вывод:
Книга: 1984, Автор: Джордж Оруэлл, Год: 1949


---

### Практика
1. Создайте словарь с информацией о себе (имя, возраст, город, хобби).
2. Добавьте новый ключ "любимый фильм" и выведите все ключи и значения словаря.
3. Удалите ключ "возраст" и проверьте, существует ли он в словаре.

---

Если вам понравился урок, ставьте ❤️ и делитесь с друзьями!
Все вопросы и решения задачек можно обсудить в комментариях. 😉

👉 Подписывайтесь на наш канал: [Safety_Y](https://t.me/Safety_Y)
#Python #Программирование #УрокиPython #Словари
🚀 Изучаем HTML5 | Урок 13: Формы и элементы ввода

Привет, друзья! В этом уроке мы погрузимся в мир форм и элементов ввода, которые позволяют собирать данные от пользователей. HTML5 предлагает множество новых возможностей для создания удобных и функциональных форм. Давайте начнем! 🎉

---

### 📝 Основы форм
Формы создаются с помощью тега <form>. Они могут содержать различные элементы ввода, такие как текстовые поля, кнопки, флажки и многое другое.

#### Пример простой формы:
<form action="/submit" method="post">
<label for="name">Имя:</label>
<input type="text" id="name" name="name" required>

<label for="email">Email:</label>
<input type="email" id="email" name="email" required>

<button type="submit">Отправить</button>
</form>


- `action`: Указывает URL, на который отправляются данные формы.
- `method`: Определяет метод отправки данных (GET или POST).
- `required`: Обязательное поле для заполнения.

---

### 🛠 Элементы ввода
HTML5 предоставляет множество типов элементов ввода, которые упрощают сбор данных и улучшают пользовательский опыт.

#### Примеры:
<label for="color">Выберите цвет:</label>
<input type="color" id="color" name="color">

<label for="date">Дата:</label>
<input type="date" id="date" name="date">

<label for="range">Уровень удовлетворения:</label>
<input type="range" id="range" name="range" min="0" max="10">

<label for="file">Загрузите файл:</label>
<input type="file" id="file" name="file">


- `type="color"`: Поле для выбора цвета.
- `type="date"`: Поле для выбора даты.
- `type="range"`: Ползунок для выбора значения в диапазоне.
- `type="file"`: Поле для загрузки файлов.

---

### 🔍 Валидация форм
HTML5 упрощает валидацию данных с помощью встроенных атрибутов.

#### Пример:
<label for="phone">Телефон:</label>
<input type="tel" id="phone" name="phone" pattern="[0-9]{10}" required>


- `pattern`: Указывает регулярное выражение для проверки ввода.
- `type="tel"`: Поле для ввода номера телефона.

---

### 🎯 Практическое задание
1. Создайте форму регистрации с полями для имени, email, пароля и даты рождения.
2. Добавьте поле для выбора цвета и ползунок для оценки.
3. Используйте атрибуты валидации, чтобы сделать поля обязательными.

---

💡 Совет: Используйте семантические теги, такие как <fieldset> и <legend>, для группировки элементов формы. Это улучшит читаемость и доступность вашего кода.

---

В следующем уроке мы начнем изучать CSS, чтобы ваши формы и страницы стали стильными и привлекательными! 🎨

Не забывайте задавать вопросы в комментариях, если что-то непонятно. Удачи в изучении HTML5! 🚀

#HTML5 #вебразработка #урокиHTML #программирование

👉 Подписывайтесь на наш канал: [https://t.me/Safety_Y](https://t.me/Safety_Y)
👉Бесплатные уроки по созданию Интернет-магазина с нуля
Бесплатные уроки по созданию Интернет-магазина с нуля

Вы, наверняка, сталкивались с различными уроками по созданию сайта. Однако, абсолютное большинство из них объединяет использование готового движка, например, Joomla или WordPress.

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

К сожалению, в Интернете я практически ничего не видел толкового по созданию сайта именно с нуля, то есть так, как и нужно. И вот недавно я увидел бесплатные уроки по созданию Интернет-магазина без всяких готовых движков: https://Hottab.programsite.ru/freeim

Михаил Русаков (автор этого курса) записал бесплатные уроки, в которых чётко показал, как сделать дизайн и вёрстку страниц, как сделать движок для своего сайта на PHP и MySQL, как делается Admin-панель и как размещается сайт в Интернете.

Я уже просмотрел эти уроки, и остался очень доволен, поэтому рекомендую и Вам: https://Hottab.programsite.ru/freeim

Отдельное спасибо Михаилу Русакову, что он не просто подготовил эти уроки, но ещё и сделал их бесплатными.
This media is not supported in your browser
VIEW IN TELEGRAM
📘 Полное руководство по PHP – Глава 18: Создание и использование RESTful API 🐘

В этой главе мы рассмотрим, как создавать и использовать RESTful API на PHP. API (Application Programming Interface) позволяет приложениям взаимодействовать друг с другом. Мы изучим основы REST, создадим простое API и научимся его использовать.

---

### 1. Что такое RESTful API?
REST (Representational State Transfer) — это архитектурный стиль для создания веб-сервисов. RESTful API использует HTTP-методы (GET, POST, PUT, DELETE) для выполнения операций с ресурсами.

---

### 2. Создание простого RESTful API
#### Шаг 1: Настройка маршрутов
Создайте файл index.php и настройте маршруты:
<?php
header("Content-Type: application/json");

$request_method = $_SERVER['REQUEST_METHOD'];
$request_uri = $_SERVER['REQUEST_URI'];

switch ($request_method) {
case 'GET':
if ($request_uri == '/users') {
getUsers();
} elseif (preg_match('/\/users\/(\d+)/', $request_uri, $matches)) {
getUser($matches[1]);
}
break;
case 'POST':
if ($request_uri == '/users') {
createUser();
}
break;
default:
http_response_code(405);
echo json_encode(["message" => "Метод не поддерживается"]);
}
?>


#### Шаг 2: Функции для обработки запросов
<?php
function getUsers() {
$users = [
["id" => 1, "name" => "Иван"],
["id" => 2, "name" => "Мария"]
];
echo json_encode($users);
}

function getUser($id) {
$users = [
1 => ["id" => 1, "name" => "Иван"],
2 => ["id" => 2, "name" => "Мария"]
];
if (isset($users[$id])) {
echo json_encode($users[$id]);
} else {
http_response_code(404);
echo json_encode(["message" => "Пользователь не найден"]);
}
}

function createUser() {
$data = json_decode(file_get_contents("php://input"), true);
if (isset($data['name'])) {
echo json_encode(["message" => "Пользователь создан", "name" => $data['name']]);
} else {
http_response_code(400);
echo json_encode(["message" => "Неверные данные"]);
}
}
?>


---

### 3. Использование API
#### GET-запрос (получение списка пользователей)
curl -X GET http://localhost/users

Ответ:
[
{"id": 1, "name": "Иван"},
{"id": 2, "name": "Мария"}
]


#### GET-запрос (получение одного пользователя)
curl -X GET http://localhost/users/1

Ответ:
{"id": 1, "name": "Иван"}


#### POST-запрос (создание пользователя)
curl -X POST -H "Content-Type: application/json" -d '{"name": "Алексей"}' http://localhost/users

Ответ:
{"message": "Пользователь создан", "name": "Алексей"}


---

### 4. Обработка ошибок
- 404 Not Found: Ресурс не найден.
- 400 Bad Request: Неверные данные.
- 405 Method Not Allowed: Метод не поддерживается.

Пример:
<?php
http_response_code(404);
echo json_encode(["message" => "Ресурс не найден"]);
?>


---

### 5. Работа с JSON
PHP предоставляет функции для работы с JSON:
- json_encode(): Преобразует массив в JSON.
- json_decode(): Преобразует JSON в массив.

Пример:
<?php
$data = ["name" => "Иван", "age" => 25];
$json = json_encode($data);
echo $json; // {"name":"Иван","age":25}

$array = json_decode($json, true);
print_r($array); // Array ( [name] => Иван [age] => 25 )
?>


---

### 6. Авторизация и токены
Для защиты API часто используются токены (например, JWT).

#### Пример с JWT
1. Установите библиотеку для работы с JWT:

   composer require firebase/php-jwt

2. Создайте токен:

   <?php
use Firebase\JWT\JWT;

$key = "your_secret_key";
$payload = [
"user_id" => 1,
"username" => "Иван"
];
$jwt = JWT::encode($payload, $key);
echo $jwt;
?>

3. Проверка токена:

   <?php
try {
$decoded = JWT::decode($jwt, $key, array('HS256'));
print_r($decoded);
} catch (Exception $e) {
http_response_code(401);
echo json_encode(["message" => "Ошибка авторизации"]);
}
?>


---
🎯 Что дальше?
В следующей главе мы изучим работу с файлами и загрузкой данных на сервер. Продолжайте изучать PHP, и вы сможете создавать мощные веб-приложения! 🚀

#PHP #API #RESTful #Программирование #Телеграм
Урок 11: Работа с файлами в Python 🐍

Привет, друзья! Сегодня мы продолжаем изучать Python и переходим к важной теме — работе с файлами. Умение читать и записывать данные в файлы — это ключевой навык для любого программиста. Давайте разбираться, как это делать в Python! 🚀

---

### Зачем работать с файлами?
Файлы позволяют:
- Сохранять данные между запусками программы.
- Читать и обрабатывать большие объемы информации.
- Обмениваться данными между программами.

---

### Основные операции с файлами

1. Открытие файла
Для работы с файлом его нужно открыть с помощью функции open(). Она принимает два аргумента: имя файла и режим доступа.

Основные режимы:
- "r" — чтение (по умолчанию).
- "w" — запись (если файл существует, он будет перезаписан).
- "a" — добавление в конец файла.
- "b" — работа с бинарными файлами (например, "rb" или "wb").

Пример:

   file = open("example.txt", "r")


2. Чтение из файла
Чтобы прочитать содержимое файла, используйте методы:
- read() — читает весь файл.
- readline() — читает одну строку.
- readlines() — возвращает список строк.

Пример:

   file = open("example.txt", "r")
content = file.read()
print(content)
file.close()


3. Запись в файл
Для записи данных в файл используйте метод write():

   file = open("example.txt", "w")
file.write("Привет, мир!")
file.close()


4. Добавление в файл
Чтобы добавить данные в конец файла, используйте режим "a":

   file = open("example.txt", "a")
file.write("\nНовая строка.")
file.close()


5. Закрытие файла
После работы с файлом его обязательно нужно закрыть с помощью метода close(). Это освобождает ресурсы и предотвращает ошибки.

---

### Контекстный менеджер with
Чтобы не забывать закрывать файл, используйте конструкцию with. Она автоматически закрывает файл после завершения блока кода:

with open("example.txt", "r") as file:
content = file.read()
print(content)
# Файл автоматически закрыт!


---

### Пример работы с файлами

#### Чтение файла построчно:
with open("example.txt", "r") as file:
for line in file:
print(line.strip()) # strip() убирает лишние пробелы и переносы строк


#### Запись списка строк в файл:
lines = ["Первая строка", "Вторая строка", "Третья строка"]
with open("example.txt", "w") as file:
for line in lines:
file.write(line + "\n")


---

### Практика
1. Создайте текстовый файл и запишите в него несколько строк.
2. Прочитайте файл и выведите его содержимое на экран.
3. Добавьте новую строку в конец файла и снова выведите его содержимое.

---

Если вам понравился урок, ставьте ❤️ и делитесь с друзьями!
Все вопросы и решения задачек можно обсудить в комментариях. 😉

👉 Подписывайтесь на наш канал: [Safety_Y](https://t.me/Safety_Y)
#Python #Программирование #УрокиPython #Файлы
👉Создание Интернет-магазина на PHP и MySQL
Видеокурс с примером создания Интернет-магазина на PHP и MySQL

Многие из Вас, наверняка, хотят создать свой сайт. Причём хочется создать по настоящему профессиональный сайт.

Недавно перед такой задачей встал и я. Читая различные книги, я много узнал, да так и не смог применить полученные знания. Мне просто не хватало конкретного примера.

И вот не так давно мне попался на глаза видеокурс Михаила Русакова "Создание Интернет-магазина на PHP и MySQL": https://Hottab.programsite.ru/im

Я его решил приобрести и ни капли не жалею. Мне очень понравилось, что сайт создаётся от идеи до размещения в Интернете. Автор в курсе показал процесс создания дизайна, процесс вёрстки сайта, создание движка на PHP и MySQL, создание Admin-панели. А в конце ещё разместил сайт в Интернете: http://storedvd.ru

Курс я уже просмотрел и уже заканчиваю создавать свой портал.

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

Ссылка на курс: https://Hottab.programsite.ru/im