Nodejs | V8 release v8.5
21 июля вышло обновление движка V8 ( виртуальная машина JavaScript, написанная Google для браузера Chrome на C++ )
Основные обновления:
Promise.any() - как только один Promise выполнится успешно метод возвратит единственный объект Promise со значением выполненного "обещания". Если ни одно из "обещаний" не завершится успешно, тогда возвращенный объект promise будет отклонен(rejected).
String.prototype.replaceAll - простой способ заменить все вхождения подстроки без создания глобального RegExp.
21 июля вышло обновление движка V8 ( виртуальная машина JavaScript, написанная Google для браузера Chrome на C++ )
Основные обновления:
Promise.any() - как только один Promise выполнится успешно метод возвратит единственный объект Promise со значением выполненного "обещания". Если ни одно из "обещаний" не завершится успешно, тогда возвращенный объект promise будет отклонен(rejected).
String.prototype.replaceAll - простой способ заменить все вхождения подстроки без создания глобального RegExp.
queryString.replace(/\+/g, ' '); ==> queryString.replaceAll('+', ' ');
Операторы логического присваивания - упрощен синтаксис x &&= y; ==> x && (x = y); Аналогично для || ??PHP | коллективный доступ к файлу
Когда одновременно предпринимается попытка записи в файл более чем одним пользователем, файл может быть поврежден или же пользователь может получить весьма странные результаты.
flock() - функция ставит в очередь все другие запросы на доступ к файлу до тех пор, пока ваша программа не снимет блокировку. Блокируются только те процессы, которые вызывают эту функцию. Если есть код, который действует напрямую и изменяет файлы, не блокируя их с помощью flock, он всегда сможет обойти блокировку и внести хаос в ваши файлы.
Блокировку следует ставить непосредственно перед внесением изменений в файл и снимать ее сразу же после их внесения.
Когда одновременно предпринимается попытка записи в файл более чем одним пользователем, файл может быть поврежден или же пользователь может получить весьма странные результаты.
flock() - функция ставит в очередь все другие запросы на доступ к файлу до тех пор, пока ваша программа не снимет блокировку. Блокируются только те процессы, которые вызывают эту функцию. Если есть код, который действует напрямую и изменяет файлы, не блокируя их с помощью flock, он всегда сможет обойти блокировку и внести хаос в ваши файлы.
Блокировку следует ставить непосредственно перед внесением изменений в файл и снимать ее сразу же после их внесения.
<?php
$fh = fopen("testfile.txt", 'r+') or die("Сбой открытия файла");
$text = fgets($fh);
if (flock($fh, LOCK_EX))
{
fseek($fh, 0, SEEK_END);
fwrite($fh, "$text") or die("Сбой записи в файл");
flock($fh, LOCK_UN);
}
fclose($fh);
echo "Файл 'testfile.txt' успешно обновлен";
?>Как добавить комментарий в CSS файле?
Anonymous Quiz
46%
/* comment */
35%
/* comment */ или // comment
5%
# comment
13%
/* comment */ или <!-- comment -->
SQL | Вы можете это делать в SQL
1. Математические операции
Простые математические операции могут выполнятся прям в SQL. Например для суммирования чисел в 2 переменные при условии IF обычно используют цикл, но можно сделать это проще
Например, вы хотите получить все категории продукта.Чтобы получить это, без каких-либо циклов в коде:
Подстрока, конкатенация, регистр, сравнение строк есть в SQL. Например нужно получить first_name и last_name с пробелом между ними.
Можно использовать IF в SQL запросе для сортировки, вместо написания цикла.
Ниже прикреплена статья с примерами, где можно потренироваться.
1. Математические операции
Простые математические операции могут выполнятся прям в SQL. Например для суммирования чисел в 2 переменные при условии IF обычно используют цикл, но можно сделать это проще
SELECT fk_item, SUM(amount) AS total_paid, IF(is_cash = 1, 'cash', 'credit') as type
FROM payment WHERE fk_item = 2001 GROUP BY fk_item, is_cash;
2.Использование GROUP_CONCATНапример, вы хотите получить все категории продукта.Чтобы получить это, без каких-либо циклов в коде:
SELECT fk_item, GROUP_CONCAT(DISTINCT fk_refund) refund_ids3.Обработка строк
FROM payment WHERE fk_item = ш2001;
Подстрока, конкатенация, регистр, сравнение строк есть в SQL. Например нужно получить first_name и last_name с пробелом между ними.
SELECT CONCAT_WS(" ", firt_name, last_name) AS full_name
FROM table;
4.СортировкаМожно использовать IF в SQL запросе для сортировки, вместо написания цикла.
Ниже прикреплена статья с примерами, где можно потренироваться.
PHP | Session & Cookies
Поток авторизации с помощью сессий и файлов куки:
1. Пользователь открывает страницу авторизации на сайте.
2. Проверка введенных учетных данных сервером.
3. Создание идентификатора сессии (уникальное случайное число).
4. Пользователю передается идентификатор сессии (отправляется в куки ), а также любой запрошенный ресурс.
5. Браузер получает ответ от сервера. Если куки разрешены браузером, он сохранит запишет их к идентификатору сессии.
6,Для последующих запросов инициализируются куки с этим идентификатором сессии, создавая переменную суперглобального массива $_SESSION с данными, хранящимися в файле сессии.
Функцию
Поток авторизации с помощью сессий и файлов куки:
1. Пользователь открывает страницу авторизации на сайте.
2. Проверка введенных учетных данных сервером.
3. Создание идентификатора сессии (уникальное случайное число).
4. Пользователю передается идентификатор сессии (отправляется в куки ), а также любой запрошенный ресурс.
5. Браузер получает ответ от сервера. Если куки разрешены браузером, он сохранит запишет их к идентификатору сессии.
6,Для последующих запросов инициализируются куки с этим идентификатором сессии, создавая переменную суперглобального массива $_SESSION с данными, хранящимися в файле сессии.
Функцию
session_start должна вызываться в начале скрипта, прежде чем какой-либо вывод будет отправлен в браузер. В противном случае вы столкнетесь с печально известными заголовками Headers are already sent.<?php
// начало сессии
session_start();
// работа с переменными сессии
?>
This media is not supported in your browser
VIEW IN TELEGRAM
X-ray me (SVG)
Небольшой скрипт на JS с использованием
Небольшой скрипт на JS с использованием
'touchmove', 'mousemove' сделает эффект рентгена с помощью SVGCSS | HSL
Как работает функция HSL:
Разберем параметры:
1.Выберите значение от 0 до 359 из цветого круга, где 0 - красный, зеленый - 120, синий - 240. Так же 0 = 360 = 720, как и остальные значения.
2.Выберите насыщенность ( рамытость и яркость) от 0 до 100%, где 0 - абсолютно черный, а 100% - белый.
3.Выберите яркость от 0 до 100%, где 0 - сделает черным, а 100% белым.
4. Необязательный параметр, значение которого задается числом с плавающей точкой в диапазоне от 0 до 1. Значение 0 определяет, что цвет полностью прозрачный, а число 1 задает полную непрозрачность цвета.
Как работает функция HSL:
color:hsla(60, 100%, 50%, 0.3);- желтый цвет с полной насыщенностью, стандартной яркостью и 30%-ной непрозрачностью
Разберем параметры:
1.Выберите значение от 0 до 359 из цветого круга, где 0 - красный, зеленый - 120, синий - 240. Так же 0 = 360 = 720, как и остальные значения.
2.Выберите насыщенность ( рамытость и яркость) от 0 до 100%, где 0 - абсолютно черный, а 100% - белый.
3.Выберите яркость от 0 до 100%, где 0 - сделает черным, а 100% белым.
4. Необязательный параметр, значение которого задается числом с плавающей точкой в диапазоне от 0 до 1. Значение 0 определяет, что цвет полностью прозрачный, а число 1 задает полную непрозрачность цвета.
Как записать полностью насыщенный синий цвет со стандартной яркостью и с 82% непрозрачностью?
Anonymous Quiz
3%
hsla( 600, 0%, 50%, 82 )
61%
hsla( 240, 100%, 50%, 0.82 )
10%
hsla( 120, 50%, 100%, 82 )
26%
hsla( 240, 50%, 100%, 0.82 )
Как вывести строки, в которых присутствует 'Red' без использования OR?
Anonymous Quiz
48%
WHERE 'Red' IN ( C1, C2, C3 )
10%
WHERE 'Red' BETWEEN ( C1, C2, C3 )
29%
WHERE 'Red' CONCAT ( C1, C2, C3 ) LIKE '%Red%'
13%
Нет способа
PHP | Наследование класса
Как только класс будет создан, из него можно будет получить подкласс. Это достигается за счет использования инструкции
Как только класс будет создан, из него можно будет получить подкласс. Это достигается за счет использования инструкции
extends.
Например, у нас есть класс User, который создается при регистрацииclass UserЕсли пользователь захочет добавить данные
{
public $name, $password;
function save_user()
{
echo "Сохраняем данные";
}
}
class UpdateInfo extends User
{
public $phone, $email;
function display()
{
echo "Name: " . $this->name . "<br>";
echo "Pass: " . $this->password . "<br>";
echo "Phone: " . $this->phone . "<br>";
echo "Email: " . $this->email;
}
}
Таким образом мы расширили класс User🔥 Frontend skills matter?
Всех неравнодушных к фронтенду приглашаю на наш второй канал Senior Frontend
Там можно качать скиллы по HTML, CSS, JS, проходить викторины, общаться в обсуждениях
Всех неравнодушных к фронтенду приглашаю на наш второй канал Senior Frontend
Там можно качать скиллы по HTML, CSS, JS, проходить викторины, общаться в обсуждениях
Node.js | Однократное событие
Используйте метод класса EventEmitter
Например вам нужно изменить эхо-сервер так, чтобы воспроизводил только первый фрагмент отправленных ему данных.
Используйте метод класса EventEmitter
once(eventName, listener) для реакции на событие только один раз.Например вам нужно изменить эхо-сервер так, чтобы воспроизводил только первый фрагмент отправленных ему данных.
const net = require('net');
const server = net.createServer(socket => {
socket.once('data', data => {
socket.write(data);
});
});
server.listen(8888);
Событие data будет обработано всего один раз.Семь основных методологий разработки
В современной практике модели разработки программного обеспечения многовариантны. Нет единственно верной для всех проектов, стартовых условий и моделей оплаты.
Самые используемые методологии:
1. «Waterfall Model» (каскадная модель или «водопад»)
2. «V-Model»
3. «Incremental Model» (инкрементная модель)
4. «RAD Model» (rapid application development model или быстрая разработка приложений)
5. «Agile Model» (гибкая методология разработки)
6. «Iterative Model» (итеративная или итерационная модель)
7. «Spiral Model» (спиральная модель)
В статье вы найдете детальнее про каждую методологию и рекомендации когда их применять
В современной практике модели разработки программного обеспечения многовариантны. Нет единственно верной для всех проектов, стартовых условий и моделей оплаты.
Самые используемые методологии:
1. «Waterfall Model» (каскадная модель или «водопад»)
2. «V-Model»
3. «Incremental Model» (инкрементная модель)
4. «RAD Model» (rapid application development model или быстрая разработка приложений)
5. «Agile Model» (гибкая методология разработки)
6. «Iterative Model» (итеративная или итерационная модель)
7. «Spiral Model» (спиральная модель)
В статье вы найдете детальнее про каждую методологию и рекомендации когда их применять
This media is not supported in your browser
VIEW IN TELEGRAM
HTML | Datalist
Тег datalist позволяет добавить к полю выпадающие подсказки без сторонних библиотек
Когда пользователь будет набирать текст в поле ввода, снизу будет появляться дропдаун с подсказками и пользователь сможет выбрать один из предложенных вариантов, не заканчивая ввод
Если autocomplete включен (по умолчанию включен), то к значениям, которые вы задали в теге datalist, будут добавляться значения, которые пользователь вводил в это поле ранее
Тег datalist позволяет добавить к полю выпадающие подсказки без сторонних библиотек
<input
type="text"
list="country-value"
autocomplete="off"
>
<datalist id="country-value">
<option value="HTML">HTML</option>
<option value="JS">Javanoscript</option>
<option value="PHP">PHP</option>
</datalist>
Когда пользователь будет набирать текст в поле ввода, снизу будет появляться дропдаун с подсказками и пользователь сможет выбрать один из предложенных вариантов, не заканчивая ввод
Если autocomplete включен (по умолчанию включен), то к значениям, которые вы задали в теге datalist, будут добавляться значения, которые пользователь вводил в это поле ранее
Node.js | ZIP files
Модуль adm-zip npm экспортирует класс AdmZip.
1. С помощью Node.js buffer
Модуль adm-zip npm экспортирует класс AdmZip.
const AdmZip = require('adm-zip');
const file = new AdmZip();
Добавлять можно и файлы и папкиfile.addLocalFile('./package.json');
file.addLocalFolder('./node_modules', 'node_modules');
Запись в архив может осуществиться несколькими способами, например :1. С помощью Node.js buffer
const fs = require('fs');
fs.writeFileSync('output.zip', file.toBuffer());
2. С помощью writeZip()file.writeZip('output.zip');
Распаковка файлаconst AdmZip = require('adm-zip');
const file = new AdmZip('./output.zip');
file.extractAllTo('./output');