Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
🔮✨Волшебство, любовь… и шерсть на одежде!
Ищи улики, решай головоломки — и помни: каждый твой шаг меняет ход сюжета.

Мой Любимый Кот

Новеллы, Головоломки, Коты

Играть

Топ прошлой недели

  • Rahlkan Rahlkan 1 пост
  • Tannhauser9 Tannhauser9 4 поста
  • alex.carrier alex.carrier 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
Mr.Ducks
Mr.Ducks
9 месяцев назад
Серия PHP и веб-разработка: полезные руководства и совет

Регистрация на PHP с использованием PDO и MySQL: Полное Руководство⁠⁠

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

Мы также обсудим, почему важно использовать PDO для безопасности, как хэшировать пароли, и что такое подготовленные выражения.

Регистрация на PHP с использованием PDO и MySQL: Полное Руководство PHP, Mysql, Регистрация, HTML, Безопасность, База данных, Веб-разработка, Персональные данные, IT, Программа, Длиннопост

Шаг 1: Создание HTML-формы для регистрации

Начнем с базовой HTML-формы, которая будет собирать имя пользователя, электронную почту и пароль. Эта форма отправляет данные методом POST на PHP-скрипт (register.php), который будет обрабатывать информацию.

<!DOCTYPE html>

<html lang="ru">

<head>

<meta charset="UTF-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Регистрация</title>

</head>

<body>

<h2>Форма регистрации</h2>

<form action="register.php" method="post">

<label for="username">Имя пользователя:</label><br>

<input type="text" id="username" name="username" required><br><br>

<label for="email">Email:</label><br>

<input type="email" id="email" name="email" required><br><br>

<label for="password">Пароль:</label><br>

<input type="password" id="password" name="password" required><br><br>

<input type="submit" value="Зарегистрироваться">

</form>

</body>

</html>

Шаг 2: PHP-скрипт для обработки данных с использованием PDO

Теперь перейдем к созданию PHP-скрипта (register.php), который будет принимать данные из формы и сохранять их в базе данных MySQL. Мы будем использовать PDO (PHP Data Objects) для подключения и работы с базой данных, что обеспечивает безопасность и удобство работы.

<?php

// Настройки подключения к базе данных

$host = 'localhost'; // Имя хоста

$dbname = 'my_database'; // Имя базы данных

$username_db = 'root'; // Имя пользователя БД

$password_db = ''; // Пароль БД (если есть)

// Подключение к базе данных через PDO

try {

$dsn = "mysql:host=$host;dbname=$dbname;charset=utf8";

$pdo = new PDO($dsn, $username_db, $password_db, [

PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // Включаем обработку ошибок

PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // Массивы по умолчанию

PDO::ATTR_EMULATE_PREPARES => false, // Отключаем эмуляцию подготовленных выражений

]);

} catch (PDOException $e) {

die("Ошибка подключения к базе данных: " . $e->getMessage());

}

// Проверка отправки формы

if ($_SERVER["REQUEST_METHOD"] == "POST") {

// Получаем данные из формы

$username = $_POST['username'];

$email = $_POST['email'];

$password = password_hash($_POST['password'], PASSWORD_DEFAULT); // Хэшируем пароль

// SQL-запрос для вставки данных

$sql = "INSERT INTO users (username, email, password) VALUES (:username, :email, :password)";

// Подготовка и выполнение запроса через PDO

try {

$stmt = $pdo->prepare($sql);

$stmt->execute([

':username' => $username,

':email' => $email,

':password' => $password

]);

echo "Регистрация прошла успешно!";

} catch (PDOException $e) {

echo "Ошибка при выполнении запроса: " . $e->getMessage();

}

}

// Закрытие соединения (необязательно в PDO, но можно сделать для аккуратности)

$pdo = null;

?>

Пояснение к коду:

  • Подключение через PDO: Мы подключаемся к базе данных через PDO. Этот способ работы с базой данных считается безопасным, так как поддерживает подготовленные выражения, защищающие от SQL-инъекций.

  • Хэширование пароля: Использование функции password_hash() позволяет безопасно хранить пароли, применяя современный алгоритм хэширования. Это значительно увеличивает уровень защиты пользовательских данных.

  • Подготовленные запросы: Мы используем подготовленные запросы для передачи данных в базу. Это защищает от SQL-инъекций, так как данные передаются отдельно от структуры SQL-запроса.

Шаг 3: Создание таблицы в MySQL

Перед тем, как вы сможете зарегистрировать пользователей, вам нужно создать таблицу для хранения информации о них. Вот пример SQL-запроса для создания таблицы users в базе данных:

CREATE TABLE users (

id INT AUTO_INCREMENT PRIMARY KEY,

username VARCHAR(50) NOT NULL,

email VARCHAR(100) NOT NULL,

password VARCHAR(255) NOT NULL,

created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

);

Пояснение к таблице:

  • id: Автоматически увеличивающийся идентификатор для каждого пользователя.

  • username: Имя пользователя, которое должно быть уникальным и не пустым.

  • email: Электронная почта, которая также должна быть уникальной и валидной.

  • password: Хэшированный пароль пользователя.

  • created_at: Автоматическая отметка времени, когда пользователь зарегистрировался.

Преимущества использования PDO:

  1. Безопасность: PDO поддерживает подготовленные выражения, которые защищают от SQL-инъекций, одной из наиболее распространенных атак на базы данных.

  2. Кросс-базовая поддержка: PDO позволяет легко менять драйверы для работы с разными базами данных (например, MySQL, PostgreSQL, SQLite).

  3. Обработка ошибок: PDO легко настраивается для выброса исключений в случае ошибок, что помогает отлавливать и решать проблемы на ранних стадиях.

Хэширование паролей в PHP

Хэширование пароля с помощью password_hash() делает вашу систему более безопасной. Это важно, так как хранение паролей в открытом виде крайне небезопасно. При хэшировании создается "отпечаток" пароля, который невозможно восстановить до оригинала, даже если данные будут скомпрометированы.

$password = password_hash($_POST['password'], PASSWORD_DEFAULT);

Для проверки пароля при авторизации можно использовать функцию password_verify().

Заключение

Создание системы регистрации с использованием PHP и PDO — это простой, но мощный способ начать работу с безопасной аутентификацией пользователей. Мы рассмотрели основные аспекты: создание формы, работу с базой данных через PDO, использование подготовленных запросов для защиты от SQL-инъекций, а также хэширование паролей.

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

Убедитесь, что ваш сервер настроен на работу с PHP и MySQL, а также что конфигурация базы данных соответствует вашим требованиям.

Показать полностью 1
PHP Mysql Регистрация HTML Безопасность База данных Веб-разработка Персональные данные IT Программа Длиннопост
11
vovanlinkin
vovanlinkin
9 месяцев назад

Создаём игру или веб приложение в тг боте с помощью gpt⁠⁠

Сразу покажу, что у нас выйдет, дабы не тратил ваше время понапрасну:
Я сделал что-то с тиле информативного веб приложения по крипто играм.
Но можно сделать по такому методу и аналог хомяка.

Создаём игру или веб приложение в тг боте с помощью gpt HTML, Приложение, Telegram, Telegram бот, Игры, Telegram (ссылка)

затестить приложение, пока что забросил)

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

Создаём игру или веб приложение в тг боте с помощью gpt HTML, Приложение, Telegram, Telegram бот, Игры, Telegram (ссылка)

Дальше заходим в CHAT GPT и просим его показать пример простой таполки:

Создаём игру или веб приложение в тг боте с помощью gpt HTML, Приложение, Telegram, Telegram бот, Игры, Telegram (ссылка)

По итогу у нас получился такой код:

ПРИМЕР ПРОСТОГО КОДА ТАПОЛКИ - можете скачать и открыть через браузер.
Далее перекидывает этот код в папку на Хостинге public_html
Заходим на наш сайт и проверяем, что всё работает, понятно что улучшить свою игру сможете через чат gpt.

Остаётся зайти в BotFather и создать своего бота, и в нем прописать команду
/setmenubutton
и добавляем адрес нашего сайта, всё наш тг бот готов, запускаем)

Если нужно подсказать пишите hebeebro , если будет время отвечу.

Показать полностью 2
HTML Приложение Telegram Telegram бот Игры Telegram (ссылка)
0
11
Аноним
Аноним
9 месяцев назад

Сайт ГАИ свой или чужой среди своих?⁠⁠

Сайт ГАИ свой или чужой среди своих? Негатив, ГАИ, Власть, HTML, Картинки, Длиннопост

Многие наверное знакомы с сайтом ГИБДД (госавтоинспекция.рф). И все, кто им пользовался, знают о том, что в поле "Текст обращения" невозможно вставить заранее подготовленное заявление.

Сайт ГАИ свой или чужой среди своих? Негатив, ГАИ, Власть, HTML, Картинки, Длиннопост

И кто же и главное зачем это сделал?

Сайт ГАИ свой или чужой среди своих? Негатив, ГАИ, Власть, HTML, Картинки, Длиннопост

Ой, а что там внутри? Смотрим текст скрипта

Сайт ГАИ свой или чужой среди своих? Негатив, ГАИ, Власть, HTML, Картинки, Длиннопост

document.oncopy=n

Неужели доблестные наши защитники, офицеры, лучшие люди нашей Родины самостоятельно предприняли шаги, чтобы затруднить нам.... ЧТООООО? Не может этого быть! Не верю!

Вот бы они взяли и всё нам объяснили. Зачем они это делают?!

Сайт ГАИ свой или чужой среди своих? Негатив, ГАИ, Власть, HTML, Картинки, Длиннопост

P.S. Здесь будет рекламная пауза. Спасибо uBlock-у и его "Моим фильтрам", в которые можно вставлять всякие ссылки, после чего нажимать F5 и

Сайт ГАИ свой или чужой среди своих? Негатив, ГАИ, Власть, HTML, Картинки, Длиннопост

Всех обнял.

Показать полностью 6
[моё] Негатив ГАИ Власть HTML Картинки Длиннопост
2
1
AdminVseyaRusi
10 месяцев назад

Мои простые игры на JS Canvas⁠⁠

Приветствую!

Цель поста:

  1. поведать об опыте публикации игр;

  2. получить отзывы по играм от пользователей;

  3. получить советы по коду от программистов;

Попал я значит под влияние видео на ютабчике про портал Яндекс.Игры, в которых говорилось об успехах "гуру" игровой индустрии в заработке на вышеуказанном портале. Зарабатывали те везунчики по несколько сотен тыс. рублей в месяц. Мне стало интересно: "... а что, так можно что ли?...".

Цель для себя была поставлена следующая: сделать что-то простое в реализации, что бы было красиво глазу и что бы сам мог залипать в это.

Пятнашки (релиз 13 июня 2024)

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

Мои простые игры на JS Canvas HTML, Javascript, Холст, Разработка, Gamedev, Мат, Длиннопост

Внешний вид пятнашек

В общем получилось вот это. Нет анимаций передвижения элементов и возможность передвигать несколько элементов за клик побуждают некий спортивный интерес. Интерес на количество шагов и времени потраченных на решение головоломки. Сейчас в топе 63 шага за 47 секунд.

Мои простые игры на JS Canvas HTML, Javascript, Холст, Разработка, Gamedev, Мат, Длиннопост

Дабы уменьшить вес игры, для быстрой загрузки, ибо на том же юнити или годот время загрузки да и сам файл с игрой были бы в разы больше, решил реализовывать на JS, отрисовывая всё в canvas. Хотя можно было сделать на div'ах, это быстрее и проще, но мне хотелось именно на canvas. Тем более что была в мыслях вторая игра. Иллюзий я никаких не питал, хотелось пройти весь путь от создания до публикации. К слову скрипт на 850 +\- строк.

Процесс модерации не составил особых проблем, не считая правила, при котором не должно быть одинаковых названий игр (Но как можно по-другому назвать Пятнашки? Они и в Африке пятнашки! Однако пришлось добавить "киберстайл". Тьфу!). По причине отсутствия опыта публикации были замечания которые устранялись за пару минут. Но был один косяк который заставил немного задуматься, а именно масштабирование игры под любую ориентацию экрана. Ещё было замечание по поводу малой площади игрового поля (на сколько помню оно должно занимать более 60%). В общем пришлось городить лютый пздц в коде для вычислений правильного отображения.

Опубликовался примерно с 4 раза (если память не подводит). Однако есть лазейка при первой публикации приложения. Если приложение новое (не обновление) тогда после первой не удачной модерации можно удалить приложение и создать новое, перенести туда все текста и картинки и отправлять в тот же день на модерацию, так как увеличение времени на модерацию привязано к ID приложения. Однако время модерации у меня занимало до суток.

По итогу, данная игра принесла 0 рублей с учётом потраченных средств на рекламу (реклама 1200 р.)

Мои простые игры на JS Canvas HTML, Javascript, Холст, Разработка, Gamedev, Мат, Длиннопост

Пятнашки - статистика вознаграждений

Очисти поле (релиз 9 июля 2024)

Следующим проектом была игра "Очисти поле", суть которой в том чтобы кликая на цепочку блоков одного типа уничтожать их и тем самым зачищать игровое поле. В игре несколько режимов. Есть возможно получения плюшек за просмотр рекламы (rewarded video).

Мои простые игры на JS Canvas HTML, Javascript, Холст, Разработка, Gamedev, Мат, Длиннопост

Очисти поле - главное меню

Мои простые игры на JS Canvas HTML, Javascript, Холст, Разработка, Gamedev, Мат, Длиннопост

Очисти поле - игровое поле

Модерация по данной игре прошла не совсем гладко. Загвоздка была в вызове Game Ready API (GRA). Пришлось добавить экран загрузки, который показывается пока загружается и отображается реклама, а после закрытия рекламы говорим игре и яндексу что можно начинать играть (отображать главное меню). А все эти махинации пришлось делать из-за того, что игра весит около 200КБ и даже с молниеносным инетом игра готова уже через пару секунд и можно было успеть нажать "Новая игра" и уже в процессе игры словить прилёт рекламы (а это нарушение правил), которая должна была отобразиться при загрузке(открытии) игры. Конечно, можно было бы анализировать данный момент и вовсе не отображать рекламу, тогда и выкладывать на данном портале не имело бы смысла из-за отсутствии рекламы и доходов с неё. Как то так.

Думаю обновить игру и добавить в ней подсветку цепочки блоков для наглядности и красоты. Есть тестовая версия с этой возможностью, ссылка будет в конце статьи. И да, скрипт на 2 000 +\- строк.

Вознаграждения по данной игре равны 600 рублей при затратах на рекламу 1 500 р. Причём пока действовала реклама (3 недели) игроки стабильно были и приносили хоть что-то, но как только реклама остановилась - остановился и поток игроков.

Мои простые игры на JS Canvas HTML, Javascript, Холст, Разработка, Gamedev, Мат, Длиннопост

Очисти поле - статистика вознаграждений

Думаю будет интересно упомянуть о статистике

Мои простые игры на JS Canvas HTML, Javascript, Холст, Разработка, Gamedev, Мат, Длиннопост

Основная статистика

Мои простые игры на JS Canvas HTML, Javascript, Холст, Разработка, Gamedev, Мат, Длиннопост

Подробная статистика

В общем пока была реклама, были игроки и они довольно долго играли. На данный момент мне кажется что остались только поклонники :) Спасибо им! Кстати отзовитесь кто постоянно играет с момента релиза, если таковые тут есть.

Если кому интересно покопаться в коде и жестко его отрефакторить, я только ЗА! Ссылка ниже. Было бы интересно глянуть как оно может выглядеть красиво и масштабируемо.

Ссылки на игры: Пятнашки, Очисти поле, Очисти поле тест. Исходники можно взять тут (за код сильно не бейте). Буду рад отзывам к играм как тут так и на портале игр. Ну и хотелось бы почитать про то какой же автор шкодер такое нашкодить))

Цель поста:

4. прорекламировать своё "я сделяль!".

Всем спасибо, все свободны.

Показать полностью 8
[моё] HTML Javascript Холст Разработка Gamedev Мат Длиннопост
0
4
kelvinn
kelvinn
10 месяцев назад

Для любителей смотреть видео быстрее⁠⁠

Так повелось что на IVI.ru (не реклама) ускоренный просмотр только по подписке. Я знаю что иногда это дело можно обойти малой кровью. Ускоренный просмотр сокращает потраченное время, если кто вдруг не знал. На KION переключатель скорости (для пользователей) еще не прикрутили, о чем я им уже написал, в июле первично, и в августе повторно, - рожают они очень медленно.
Вернёмся к IVI.ru:

Когда начался фильм, нажимаем F12

Для любителей смотреть видео быстрее HTML, Javascript

и в открывшейся консоли находим вот такой значок

Жмякаем его, и ниже где мигает курсор вставляем вот эту строчку.

const video=document.querySelector('video');video.playbackRate=1.25;

Где цифра означает скорость просмотра, Можно поставить любое значение до 2, Быстрее чем 1,5 смотреть неудобно.
Вот так это выглядит после ввода команды.

Для любителей смотреть видео быстрее HTML, Javascript
HTML Javascript
17
3
cherkalexander
cherkalexander
10 месяцев назад

Соседние селекторы в CSS⁠⁠

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

Тут я подумал, что в первый раз в жизни смогу использовать "Родственные селекторы" ~, чтобы пофиксить стили если оба элемента отображаются на странице:

.new-feature-element ~ .element-with-scroll {
// тут фиксим стили, они применяются к .element-with-scroll
}



Посмотрел на разметку, понял что .element-with-scroll всегда идёт непосредственно после .new-feature-element поэтому можно поменять на +:


.new-feature-element + .element-with-scroll {
// тут фиксим стили, они применяются к .element-with-scroll
}


Основные различия + и ~:

- + выбирает только один элемент, который непосредственно следует за первым элементом.
- ~ выбирает все элементы, которые следуют за первым элементом, но не обязательно сразу за ним.

Посмотрел на разметку ещё раз и понял, что элементы видны всегда, а не по условию, поэтому просто пофиксил стили для .element-with-scroll без всяких соседних селекторов, но хоть потренировался.

https://t.me/cherkashindev/226

UPD:

cherkashin.dev

cherkashin.dev

cherkashin.dev

Показать полностью
[моё] CSS Программирование IT HTML Текст
3
6
Proglib
Proglib
11 месяцев назад
Серия Итоги недели в мире фронтенда и обзоры сервисов

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков⁠⁠

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост

🔮 10 полезных JavaScript-трюков

Деструктуризация с переименованием (алиасингом)

Деструктуризация – это способ извлечь значения из массивов или свойства из объектов и присвоить их отдельным переменным. Алиасинг (переименование) позволяет дать новые имена этим переменным в процессе деструктуризации:

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост

Зачем это нужно:

  • Улучшает читаемость кода.

  • Помогает избежать конфликтов имен – если у вас уже есть переменная city, можно использовать hometown.

  • Пригодится при работе с API, если он возвращает данные с неподходящими для вашего кода именами.

Каррирование

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

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост

Та же функция, но с использованием каррирования:

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост

Зачем это нужно:

  • Обеспечивает переиспользуемость функций.

  • Повышает читаемость и модульность кода.

  • Позволяет создавать новые функции на лету, используя уже существующие, например:

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост

🤖🎓 Подтянуть свои знания по DS вы можете на нашем телеграм-канале «Библиотека DS для собеса»

debounce() и throttle()

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

debounce() работает так:

  • Функция вызывается только после того, как прошло определенное время с момента последнего вызова.

  • Если функция вызывается снова до истечения этого времени, таймер сбрасывается.

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

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост

throttle() работает так:

  • Функция вызывается не чаще, чем раз в заданный интервал времени.

  • Если попытка вызвать функцию происходит до истечения интервала, вызов игнорируется.

В этом примере функция handleScroll будет вызываться не чаще, чем раз в 300 миллисекунд, независимо от того, сколько раз пользователь прокрутил страницу за это время:

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост

Мемоизация

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

  • Когда функция вызывается с определенными аргументами, мы сначала проверяем, вычисляли ли мы уже результат для этих аргументов.

  • Если да, мы возвращаем сохраненный результат.

  • Если нет, мы выполняем вычисление, сохраняем результат и возвращаем его.

Пример мемоизации при вычислении ряда Фибоначчи:

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост
  • Без мемоизации вычисление fibonacci(40) заняло бы очень много времени, потому что функция вызывала бы себя рекурсивно миллионы раз, повторяя одни и те же вычисления.

  • С мемоизацией каждое число Фибоначчи вычисляется только один раз. При повторном запросе того же числа результат берется из кэша, что значительно ускоряет работу.

Когда использовать мемоизацию:

  • Для функций с очень сложными вычислениями.

  • Когда функция часто вызывается с одними и теми же аргументами.

  • Когда функция  возвращает один и тот же результат для одних и тех же входных данных.

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

🐘🧩 Интересные задачи по PHP для практики можно найти на нашем телеграм-канале «Библиотека задач по PHP»

Proxy

Proxy позволяет нам обернуть объект и контролировать взаимодействие с ним. Мы можем перехватывать и изменять основные операции – чтение свойств, их запись, вызов функций и т. д. Proxy особенно полезен, когда нужно добавить дополнительное поведение к объектам, не изменяя их напрямую: это может быть полезно для отладки, для реализации реактивных систем (как в Vue.js), для создания умных объектов и многого другого:

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост

Для чего еще можно использовать Proxy:

  • Валидация – проверка данных перед их установкой в объект.

  • Логирование – отслеживание использования и изменений свойств объекта.

  • Создание вычисляемых на лету свойств.

  • Безопасность – можно контролировать доступ к свойствам объекта.

Генераторы

Генераторы – особый тип функций в JavaScript:

  • Могут приостанавливать свое выполнение и возобновлять его позже.

  • Сохраняют свое состояние между вызовами.

  • Используют ключевое слово yield для возврата значений.

Пример итерации по свойствам объекта:

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост

Преимущества генераторов:

  • Ленивые вычисления – вычисляют значения, когда они действительно нужны.

  • Создание бесконечных последовательностей, не занимающих бесконечный объем памяти.

  • Упрощение асинхронного кода – можно сделать асинхронный код более похожим на синхронный.

  • Создание кастомных итераторов для сложных структур данных.

Эффективное использование консоли

Помимо console.log(), консоль предоставляет несколько более наглядных методов вывода информации.

  • Ошибки и предупреждения:

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост
  • Вывод табличных данных:

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост
  • Группировка логов:

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост
  • Измерение времени выполнения:

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост
  • Условное логирование:

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост
  • Трассировка стека:

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост

🐍🎓 Подтянуть свои знания по Python вы можете на нашем телеграм-канале «Библиотека Python для собеса»

Структурированное клонирование

Структурированное клонирование – метод создания полной (глубокой) копии объекта, включающей все вложенные объекты и структуры данных. Функция structuredClone позволяет выполнять такое клонирование просто и эффективно – в  отличие от JSON.parse(JSON.stringify()), structuredClone корректно обрабатывает Date, Map, Set и другие специальные типы JavaScript:

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост

Структурированное клонирование стоит использовать, если:

  • Нужно создать полную, независимую копию сложного объекта.

  • Данные не должны изменяться (иммутабельность).

  • Необходимо избежать побочных эффектов при изменении данных.

Самовызывающиеся функции

Самовызывающиеся функции (IIFE) выполняются автоматически сразу после их создания. Они создают временную область видимости, в которой можно безопасно определять переменные и функции, не беспокоясь о том, что они будут конфликтовать с другими частями кода и загрязнять глобальную область видимости. Эта техника особенно полезна в старых средах JavaScript, где блочная область видимости (let и const) недоступна, или в сценариях, где требуется немедленное выполнение для инициализации:

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост

Теговые шаблоны

Теговые шаблоны позволяют разбирать шаблонные литералы с помощью функции. Первый аргумент такой функции содержит массив строковых значений, а остальные содержат выражения из подстановок. Здесь, например, функция sanitize заменяет опасные символы на их безопасные HTML-сущности, предотвращая выполнение нежелательного кода:

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост

Как можно использовать теговые шаблоны:

  • Автоматически обрабатывать пользовательский ввод, предотвращая XSS-атаки.

  • Форматировать числа, даты и т. д.

  • Безопасно формировать SQL-запросы, экранируя ввод.

  • Создавать теги для автоматического перевода строк с одного языка на другой.

🤖🧩 Интересные задачи по DS для практики можно найти на нашем телеграм-канале «Библиотека задач по DS»

📐 Единицы измерения высоты и ширины экрана в современном CSS

На протяжении многих лет разработчики использовали vh и vw, чтобы задавать размеры элементов в процентах от высоты и ширины экрана. Например, чтобы заполнить весь экран элементом, его размеры можно задать как 100vh на 100vw. Однако эти единицы могут работать ненадежно в некоторых случаях, например, при изменении видимой области экрана на мобильных устройствах из-за скрытия адресной строки браузера при прокрутке. Сейчас CSS предлагает новые единицы измерения, которые учитывают динамические изменения интерфейса браузера.

Large Viewport Units (lvh, lvw)

Эти единицы задаются относительно максимального размера видимой области, когда интерфейс браузера минимизирован (например, скрыты панели). По сути, они ведут себя аналогично классическим vh и vw, но с учетом возможных изменений интерфейса. Этот элемент будет занимать весь экран независимо от состояния интерфейса браузера:

.full-page-element {
height: 100lvh;
width: 100lvw;
z-index: -1
background: #f51;
}

Small Viewport Units (svh, svw)

Эти единицы рассчитываются относительно минимального размера видимой области, когда интерфейс браузера максимально расширен (например, когда панели видимы). Пример – статичный заголовок, занимающий 10% от минимальной видимой области:

.header {
height: 10svh;
background-color: #642;
}

Dynamic Viewport Units (dvh, dvw)

Эти единицы измеряются с учетом динамических изменений видимой области при взаимодействии пользователя с интерфейсом (например, при прокрутке страницы или появлении виртуальной клавиатуры). Есть нюансы: использование этих единиц иногда приводит к неожиданным изменениям размеров контента и ухудшению производительности. Пример – элемент, который адаптируется к изменениям высоты видимой области:

.adjustable-element {
height: calc(100dvh - 10svh);
}

Привет!

Мы запустили еженедельную email-рассылку, посвященную последним новостям и тенденциям в мире фронтенда. В наших еженедельных рассылках ты найдешь:

  • Современные JavaScript-фреймворки и библиотеки

  • HTML5 и CSS3: новые возможности и трюки

  • Оптимизация производительности веб-приложений

  • Тестирование и отладка кода

  • Лучшие практики UX/UI

  • Новые веб-стандарты и браузерные технологии

  • Тренды в веб-дизайне и интерфейсах

  • Прогрессивные веб-приложения (PWA)

📧 Подпишись, чтобы быть в числе первых, кто получит дайджест

✍️ 50 лучших ресурсов с бесплатными HTML/CSS/JS-шаблонами

  • HTMLrev – крупнейшая бесплатная библиотека шаблонов, созданных с использованием всех существующих технологий, включая HTML/CSS/JS, Bootstrap, Tailwind, Bulma, Angular, React, Vue, Next.js, Nuxt, Svelte, Astro, Laravel, Django, Gatsby, Hugo, Jekyll и BCMS.

  • HTML5 UP – бесплатная коллекция HTML-шаблонов с уникальным дизайном и высоким качеством кода.

  • StyleShout предлагает широкий выбор шаблонов для различных целей, включая SaaS, мобильные приложения, блоги, лендинги, портфолио и агентства.

  • One Page Lovе включает шаблоны на Bootstrap, Next.js, Tailwind, Carrd и Framer.

  • Cruip предлагает шаблоны на Tailwind, React, Vue, Next.js и Laravel.

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост

🐍🧩 Интересные задачи по Python для практики можно найти на нашем телеграм-канале «Библиотека задач по Python»

  • Templatemo – огромная коллекция бесплатных Bootstrap-шаблонов.

  • ThemeSelection – библиотека бесплатных и платных шаблонов на Vue, Next.js, Nuxt и Laravel. Специализируется на административных панелях и UI-китах.

  • Creative Tim – шаблоны на Bootstrap, Tailwind, Angular, React, Vue, Next.js, Nuxt, Svelte, Laravel, Django и Astro.

  • Themesberg предлагает широкий выбор шаблонов для административных панелей, лендингов, дизайн-систем и UI-китов.

  • TemplateDeck – небольшая библиотека креативных Bootstrap-шаблонов высокого качества.

  • Flout UI – коллекция компонентов Tailwind и готовых шаблонов Next.js.

  • Michael Andreuzza – бесплатная подборка шаблонов Astro, созданная опытным и креативным разработчиком.

  • Just Good UI – собрание бесплатных и платных шаблонов Astro.

  • Startup Landing – подборка бесплатных шаблонов Next.js и Gatsby.

  • Web3Templates – красивые шаблоны Tailwind, Astro и Next.js, оптимизированные для конверсий.

  • Landify – красивые и современные шаблоны Gatsby.

  • Nextjs Templates – широкий выбор шаблонов для разных целей, включая SaaS, стартапы, бизнес, программное обеспечение и блоги.

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост
  • LayoutFlow – отличные шаблоны для агентств, портфолио и сайтов услуг.

  • Template Foundation – шаблоны, ориентированные на портфолио и личные сайты.

  • Templated – продуманные шаблоны на HTML/CSS и Bootstrap.

  • Freebiesbug – высококачественные шаблоны, оптимизированные для маркетинга.

  • Start Bootstrap – широкий выбор профессиональных шаблонов для стартапов, агентств, портфолио, личных сайтов и блогов.

  • MonsterOne – современные шаблоны с несколькими страницами.

  • TemplatesJungle – шаблоны для бизнеса, агентств, сервисов, портфолио, электронной коммерции и других целей.

  • 3rd Wave Media – коллекция высококачественных шаблонов, ориентированных на ИТ-сферу.

  • Tooplate – большая коллекция стильных и современных Bootstrap-шаблонов.

  • Pixel Rocket – качественные Bootstrap- и Tailwind-шаблоны.

  • HTML Codex – широкий выбор шаблонов для бизнеса, курсов, продуктов, агентств, сервисов, портфолио, резюме и других целей.

  • W3Layouts отличается широким выбором шаблонов для бизнеса.

  • Bootstrapious – шаблоны с хорошим дизайном и продвинутыми компонентами.

  • Untree – стильные шаблоны со сложными элементами.

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост
  • Tailwind Toolbox – красивые шаблоны с продуманной структурой.

  • Pixelcave – современные шаблоны для сайтов и административных интерфейсов.

  • Themefisher – коллекция шаблонов для бизнеса, SaaS, блогов и других целей.

  • Tailspark – Tailwind-шаблоны для SaaS-сайтов и лендингов.

  • Red Pixel Themes – шаблоны с  хорошим дизайном и многими полезными компонентами.

  • Ari Budin – уникальные шаблоны для портфолио, агентств, журналов и дизайн-систем.

  • Treact – бесплатная библиотека React-шаблонов.

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост
  • DesignToCodes – шаблоны для стартапов, агентств, портфолио и административных панелей.

  • UI Lib – библиотека Bootstrap-, Tailwind-, Angular-, React- и Vue-шаблонов.

  • AdminMart – профессиональные шаблоны со множеством секций и компонентов.

  • WrapPixel – специализируется на административных панелях и UI-китах, предлагает широкий выбор шаблонов с разным дизайном и структурой.

  • Tabler – бесплатная библиотека Bootstrap-шаблонов, специализируется на административных панелях.

  • KeenThemes – современные шаблоны для админ-панелей со множеством компонентов.

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост

🎮 Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека разработчика игр | Gamedev, Unity, Unreal Engine»

  • EaseTemplate – подборка современных Bootstrap-шаблонов.

  • BootstrapDash – шаблоны с несколькими страницами и продвинутыми компонентами.

  • CodedThemes – профессиональные Bootstrap-, Angular-, React- и Vue-шаблоны с красивым дизайном.

  • Salvia Kit предлагает коллекцию Angular-, React-, Vue-, Nuxt- и Svelte-шаблонов. Отличается широким выбором шаблонов для административных панелей.

Итоги недели в мире фронтенда и обзоры новых сервисов: 10 полезных JavaScript-трюков Программирование, Разработка, Шаблон, Angular, Bootstrap, CSS, Frontend, Gatsby, HTML, IT, Javascript, Laravel, React, Vue, Длиннопост
  • JustBoil – Tailwind-, React-, Vue-, Next.js-, Nuxt- и Laravel-шаблоны для сайтов и админ-панелей.

  • Iqonic Design – библиотека React- и Vue-шаблонов, предлагает несколько бесплатных пакетов для создания современных интерфейсов.

Автор рассылки: Наталья Кайда

📧 Подписаться на рассылку

Показать полностью 24
Программирование Разработка Шаблон Angular Bootstrap CSS Frontend Gatsby HTML IT Javascript Laravel React Vue Длиннопост
1
sumat777
sumat777
11 месяцев назад
Лига программистов
Серия Курсы

Таинственный мир HTML сущностей⁠⁠

Развлекательно - познавательная информация для тех, кто хочет начать погружение в веб дизайн и программирование.

© 2024 Константин Оборотов

===

Таинственный мир HTML сущностей Лингвистика, Слова, HTML, Основы HTML, Веб-дизайн, Видео, Длиннопост

Как вы думаете, сколько букв в алфавите русского языка? Если вы считаете, что 33, то я с удовольствием с вами поспорю.

Я считаю, что всего лишь 32, т.к. буква "ё" формально существует, но лучше ее никогда не использовать на практике. По современным правилам букву "ё" всегда можно заменить буквой "е", но нельзя поступать наоборот. Это означает, что использование буквы "ё" ничем не оправдано и несет в себе дополнительные риски ошибок. А раз мы букву "ё" никогда не используем, то зачем ее считать буквой алфавита?

Впрочем, все эти диспуты о русском языке покажутся детскими по своей простоте и наивности, если мы начнем рассуждать о китайском языке.

Как китайцы набирают свои тексты? Используют огромные клавиатуры с площадью несколько квадратных метров? Или кропотливо комбинируют сбор иероглифов хитрыми комбинациями клавиш на клавиатурах, которые похожи на наши? А может голосом диктуют свои рассказы, а умный софт компьютера переводит китайскую речь в китайский текст на иероглифах?

Все перечисленные выше варианты реальны и все они трудоемки, требуют ясности ума, чистоты мышления и большого трудолюбия.

Впрочем, это еще полбеды. А как хранится это огромное количество иероглифов и сколько их вообще?

Если мы можем согласиться, что в русском языке 32 буквы, ну, пускай, максимум 33, то в китайском языке все сложнее. Не всякий сможет подсчитать их точное количество. Кто-то говорит, что всего лишь 800, кто-то 3000. Другие специалисты утверждают, что около ста тысяч. Но это неточно.

Так сколько же иероглифов в китайском языке? У меня есть простой, четкий и однозначный ответ на этот, казалось бы, сложный вопрос. Ровно 20992 знака. Как мне удалось так точно подсчитать? Я открою вам этот секрет. Следите за полетом моей мысли.

Как всем известно, мы с вами работаем в кодировке "UTF-8", самым популярном представлении Юникода. При этом используем 1112064 кодовых позиций, т.е. символов. По сути, у нас тут получается мировой алфавит из более чем миллиона букв. В этот алфавит входят все английские и русские буквы, китайские иероглифы, буквы известных древних языков и разного рода "веселые картинки".

Русские буквы находятся в этом алфавите, начиная с позиции 1040 (большая русская буква А) до позиции 1103 (маленькая русская буква я).

Самые популярные китайские иероглифы занимают места от 19968 до 40959. Нехитрая арифметика дает тут результат по общему количеству: 20992.

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

Предлагаю вам поверхностно познакомиться с этим алфавитом. Давайте, бросим взгляд на 80 произвольно выбранных знаков из этого алфавита.

Таинственный мир HTML сущностей Лингвистика, Слова, HTML, Основы HTML, Веб-дизайн, Видео, Длиннопост

В самой верхней строчке этой выборке я предлагаю вашему вниманию первые десять иероглифов китайского алфавита.

Понемножку мы можем начинать изучать китайский язык прямо сейчас. Первый иероглиф означает вовсе не "минус", как вы могли подумать, а "один". Второй иероглиф означает "человек". Что означает третий иероглиф, я не помню, найдите сами в Интернете. Зато я помню, что означает десятый иероглиф - "три".

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

Я нисколько не удивлюсь, если в ближайшее время появится новое направление - создание текстов исключительно из таких вот "картинок". Интересный вид творчества.

Если вы дочитали до этого места, и вас заинтересовал прекрасный таинственный мир HTML сущностей, пробудился интерес к веб дизайну и строительству, то самое время погрузиться в эту тему более глубоко:

https://wpvi.ru/pages/html/entity/

Небольшая видео инструкция поможет вам ориентироваться в этом сложном большом мировом алфавите.

🐣🐤🐥🐓🐔🦆🦢

...

Первоисточник:

https://wpvi.ru/pages/story/00070/

===

Показать полностью 2 1
[моё] Лингвистика Слова HTML Основы HTML Веб-дизайн Видео Длиннопост
12
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии