PHP | cURL
Для получения данных с какого-либо сайта можно воспользоваться функцией file_get_contents. Но что делать, если, например, потребовалось отправить POST запрос с заголовком авторизации?
В таких случаях на помощь приходит cURL, однако не всегда удобно пользоваться им, так сказать, в "сыром" виде. Куда удобнее будет воспользоваться PHP Curl Class - composer пакетом для упрощения выполнения запросов.
Пример
Для получения данных с какого-либо сайта можно воспользоваться функцией file_get_contents. Но что делать, если, например, потребовалось отправить POST запрос с заголовком авторизации?
В таких случаях на помощь приходит cURL, однако не всегда удобно пользоваться им, так сказать, в "сыром" виде. Куда удобнее будет воспользоваться PHP Curl Class - composer пакетом для упрощения выполнения запросов.
Пример
require __DIR__ . '/vendor/autoload.php';
use Curl\Curl;
$curl = new Curl();
$curl->post('https://www.example.com/login/', array(
'username' => 'myusername',
'password' => 'mypassword',
));
var_dump($curl->response);
Технология максимально проста и позволяет строить текстовые колонки без дополнительных оберток и костылей.
column-count - количество столбцов, на которые элемент должен быть разделен
column-fill - задает способ заполнения столбцов
column-gap - указывает зазор между столбцами
column-rule - сокращенное свойство для установки всех свойств столбца
column-rule-color - задает цвет правила между столбцами
column-rule-style - задает стиль правила между столбцами
column-rule-width - задает ширину правила между столбцами
column-span - указывает, сколько столбцов элемент должен охватывать поперек
column-width - задает рекомендуемую, оптимальную ширину столбцов
columns - сокращенное свойство для задания ширины столбца и счетчика столбцов
column-count - количество столбцов, на которые элемент должен быть разделен
column-fill - задает способ заполнения столбцов
column-gap - указывает зазор между столбцами
column-rule - сокращенное свойство для установки всех свойств столбца
column-rule-color - задает цвет правила между столбцами
column-rule-style - задает стиль правила между столбцами
column-rule-width - задает ширину правила между столбцами
column-span - указывает, сколько столбцов элемент должен охватывать поперек
column-width - задает рекомендуемую, оптимальную ширину столбцов
columns - сокращенное свойство для задания ширины столбца и счетчика столбцов
article {
columns: 2 200px;
column-gap: 20px;
column-rule: 1px dotted #000;
}PHP | Генерация изображений с текстом
В статье рассказывается о небольшом классе для php, что позволяет легко генерировать изображения с текстом.
Пример реализации
В статье рассказывается о небольшом классе для php, что позволяет легко генерировать изображения с текстом.
Пример реализации
include_once 'LImageHandler.php';
$fontPath = 'fonts/MintTypeRistrettoProRegular.ttf';
$imagePath = 'images/original.jpg';
$fontSize = 45; // Указываем размер шрифта
$color = array(255, 255, 255); // Задаем цвет текста
$backgroundColor = array(0, 0, 0); // Задаем цвет подложки
$ih = new LImageHandler;
$imgObj = $ih->load($imagePath);
$imgObj->textWithBackground('Генерация изображений с текстом', $fontPath, $fontSize, $color, $backgroundColor, LImageHandler::CORNER_CENTER_TOP, 0, 150, 0, 50, 10);
$imgObj->textWithBackground('Виктор Зинченко', $fontPath, 30, $color, $backgroundColor, LImageHandler::CORNER_RIGHT_BOTTOM, 50, 50, 0, 30, 10);
$imgObj->show(false, 100);
Что будет в элементе с id="root"?
Anonymous Quiz
10%
yes
52%
no
24%
Ошибка в консоле
14%
пустая строка
CSS | Will-Change
CSS Will Change позволяет подготовить браузер перед изменением состояния элемента. Это позволяет добавить определенную оптимизацию к сайту.
Например, если элемент будет изменен при клике, то установка will-change при наведении курсора на этот элемент даёт браузеру достаточно времени, чтобы подготовиться к этому изменению.
CSS Will Change позволяет подготовить браузер перед изменением состояния элемента. Это позволяет добавить определенную оптимизацию к сайту.
Например, если элемент будет изменен при клике, то установка will-change при наведении курсора на этот элемент даёт браузеру достаточно времени, чтобы подготовиться к этому изменению.
.element {
transition: transform 1s ease-out;
}
.element:hover {
will-change: transform;
}
.element:active {
transform: rotateY(180deg);
}Что можно подставить место [PLACEHOLDER] в запрос ниже?
SELECT COUNT(*) AS count FROM table WHERE name IN ([PLACEHOLDER])
SELECT COUNT(*) AS count FROM table WHERE name IN ([PLACEHOLDER])
Anonymous Quiz
15%
UPDATE table_2 SET name = 'empty' WHERE id = 1
21%
INSERT INTO table (name, content) VALUES ('sWebDev', 'js, css, php, node.js')
64%
SELECT name FROM table_2 WHERE balance > 1000
Как правильно объявить конструктор для класса Ping в PHP 7?
Anonymous Quiz
28%
function Ping () {}
19%
function constructor () {}
44%
function __construct() {}
10%
function __init__ () {}
JS | Promise
Промис — это объект, который либо выполняется с некоторым значением, либо отклоняется с ошибкой. Промис может иметь одно из трех состояний: находится в режиме ожидания (pending), выполнен (fulfilled), отклонен (rejected).
Некоторые методы, которые ускорят разработку:
- race - возвращает Обещание (Promise) с результатом, первого завершенного из переданных обещаний. Т.е. возвратит resolve или reject, в зависимости от того, что случится первым
- any - Как только одно из "обещаний"(Promise) выполнится успешно(fullfill), метод возвратит единственный объект Promise со значением выполненного "обещания"
- allSettled - возвращает промис, который исполняется когда все полученные промисы завершены
Внизу подробная статья о Promise с примерами
Промис — это объект, который либо выполняется с некоторым значением, либо отклоняется с ошибкой. Промис может иметь одно из трех состояний: находится в режиме ожидания (pending), выполнен (fulfilled), отклонен (rejected).
Некоторые методы, которые ускорят разработку:
- race - возвращает Обещание (Promise) с результатом, первого завершенного из переданных обещаний. Т.е. возвратит resolve или reject, в зависимости от того, что случится первым
- any - Как только одно из "обещаний"(Promise) выполнится успешно(fullfill), метод возвратит единственный объект Promise со значением выполненного "обещания"
- allSettled - возвращает промис, который исполняется когда все полученные промисы завершены
Внизу подробная статья о Promise с примерами
Как в node.js вывести в консоль стек вызовов?
Anonymous Quiz
28%
console.log
7%
console.warn
63%
console.trace
2%
console.error
PHP | PDO
Для взаимодействия с базами данных обычно необходимо ставить специальную библиотеку, созданную для конкректной базы данных. Это может вызывать некоторые трудности, если, например, на сервере несколько разных СУБД. Но с PDO всё гараздо проще.
PDO (PHP Data Objects) — расширение PHP, которое реализует взаимодействие с базами данных при помощи объектов. В PDO отсутствует привязка к конкретной системе управления базами данных. Оно поддерживает, как MySQL, так и PostgreSQL, SQLite, Oracle, Microsoft SQL Server и другие.
Ещё одним плюсом будет встроенная защита от SQL инъекций.
Пример
Для взаимодействия с базами данных обычно необходимо ставить специальную библиотеку, созданную для конкректной базы данных. Это может вызывать некоторые трудности, если, например, на сервере несколько разных СУБД. Но с PDO всё гараздо проще.
PDO (PHP Data Objects) — расширение PHP, которое реализует взаимодействие с базами данных при помощи объектов. В PDO отсутствует привязка к конкретной системе управления базами данных. Оно поддерживает, как MySQL, так и PostgreSQL, SQLite, Oracle, Microsoft SQL Server и другие.
Ещё одним плюсом будет встроенная защита от SQL инъекций.
Пример
// Подключение к базе данных
$db = new PDO('mysql:host=localhost;dbname=pdo', 'root', 'password');
// Выполнение подготовленного запроса, такой запрос защищён от инъекции
$stmt = $pdo->prepare("SELECT `name` FROM categories WHERE `id` > ?");
$stmt->execute([$id]);
// Получение данных
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($data as $k => $v){
echo 'Category name: '.$v['name'].';';
}
👍1
Как изучить React и построить международную карьеру?
🔥Максим Иванов, разработчик Minecraft и Battlefield, запускает авторский курс по React.
Курс стартует 1 ноября, но уже можно начать учиться бесплатно не выходя из Телеграма:
⭐️Как сделать клон Minecraft на React (делаем 3d-игру на компонентах)
⭐️Как делать формы любой сложности на React и react-hook-form
⭐️Как освоить реакт быстро, не тратя время на булщит? 💩
⭐️Как попасть в интересный проект? Самая короткая дорога от hello world до удаленки за баксы 🔥
⭐️Как справиться с застреванием в процессе обучения и в карьере
💥Инсайт: Как всех обогнать. Прокачиваем карьеру. Как в этом помогает блог и привычка описывать свои шаги.📝
Чтобы получить доступ материалам, переходи в наш Телеграм-бот. Он заботливо выдаст все видео.
🔥Максим Иванов, разработчик Minecraft и Battlefield, запускает авторский курс по React.
Курс стартует 1 ноября, но уже можно начать учиться бесплатно не выходя из Телеграма:
⭐️Как сделать клон Minecraft на React (делаем 3d-игру на компонентах)
⭐️Как делать формы любой сложности на React и react-hook-form
⭐️Как освоить реакт быстро, не тратя время на булщит? 💩
⭐️Как попасть в интересный проект? Самая короткая дорога от hello world до удаленки за баксы 🔥
⭐️Как справиться с застреванием в процессе обучения и в карьере
💥Инсайт: Как всех обогнать. Прокачиваем карьеру. Как в этом помогает блог и привычка описывать свои шаги.📝
Чтобы получить доступ материалам, переходи в наш Телеграм-бот. Он заботливо выдаст все видео.
Какое свойство transition-timing-function означает - медленное начало, быстрый переход, затем медленное завершение?
Anonymous Quiz
8%
ease
7%
linear
11%
ease-in
74%
ease-in-out
HTML | DATA
data-* атрибуты позволяют хранить дополнительную информацию в стандартных элементах HTML
data-* атрибуты позволяют хранить дополнительную информацию в стандартных элементах HTML
<articleДоступ из CSS
id="post1"
data-columns="3"
data-index-number="12314">
</article>
article[data-columns='3']{
width: 400px;
}
Доступ из JSvar article = document.getElementById('post1');
article.dataset.columns // "3"
article.dataset.indexNumber // "12314"CSS | Селекторы
Универсальный селектор -
Универсальный селектор -
* {}
Селекторы типов - div {}
Селекторы классов - .classname {}
Селекторы идентификаторов - #idname {}
Селекторы потомков - span em {}
Селекторы дочерних элементов - div > em {}
Селекторы смежных элементов - i + b {}
Селекторы атрибутов - a[href='info.htm'] {}
Псевдоклассы - a:hover {}
Псевдоэлементы - p::first-letter {}😣 На рынке жёсткий дефицит фронтендеров
Хочешь быстро влиться во фронтенд и через пару лет хвастаться ЗП > 200к?
Вот план для старта:
1. Веб-верстка - 3 месяца
2. JavaScript - 3 месяца
3. Система контроля версий GIT - 1 месяц
4. Онлайн-сессии по вебразработке - 1 месяц
5. Vue.js - 2 месяца
6. React.js - 2 месяца
7. Защита дипломного проекта
8. 💰Трудоустройство💰
Это программа курса Профессия Frontend разработчик от Skillbox.
Да - трудоустройство они тоже берут на себя.
Тут можно получить курс со скидкой 50% 👇
Хочешь быстро влиться во фронтенд и через пару лет хвастаться ЗП > 200к?
Вот план для старта:
1. Веб-верстка - 3 месяца
2. JavaScript - 3 месяца
3. Система контроля версий GIT - 1 месяц
4. Онлайн-сессии по вебразработке - 1 месяц
5. Vue.js - 2 месяца
6. React.js - 2 месяца
7. Защита дипломного проекта
8. 💰Трудоустройство💰
Это программа курса Профессия Frontend разработчик от Skillbox.
Да - трудоустройство они тоже берут на себя.
Тут можно получить курс со скидкой 50% 👇
Node.js | Telegraf
Telegraf - очень простой и удобный фреймворк для телеграм ботов.
Преимущества
- Полная поддержка Telegram Bot API 4.8
- Поддержка платежной платформы Telegram
- Поддержка HTML5 игр
- Инлайн мод
- Совместим с веб-хуками (http, https, fastify, express.js)
Пример
Telegraf - очень простой и удобный фреймворк для телеграм ботов.
Преимущества
- Полная поддержка Telegram Bot API 4.8
- Поддержка платежной платформы Telegram
- Поддержка HTML5 игр
- Инлайн мод
- Совместим с веб-хуками (http, https, fastify, express.js)
Пример
var { Telegraf } = require('telegraf')
var bot = new Telegraf(process.env.BOT_TOKEN)
bot.start((ctx) => ctx.reply('Добро пожаловать!'))
bot.help((ctx) => ctx.reply('Отправь мне стикер'))
bot.on('sticker', (ctx) => ctx.reply('👍'))
bot.hears('Привет', (ctx) => ctx.reply('Приве-е-ет!'))
bot.launch()