SQL | UNION
Оператор UNION используется для объединения результатов двух или более запросов SELECT
Oсновные правила объединения наборов результатов двух запросов SELECT с помощью UNION:
- Количество и порядок столбцов должны быть одинаковыми во всех запросах.
- Типы данных соответствующих столбцов должны быть совместимыми.
Пример, нужно получить всех пользователей ( платных и в пробной версии):
+---------------+-------------——-+
| first_name | last_name |
+---------------+-------------——-+
| Ethan | Hunt |
| Tony | Montana |
Оператор UNION используется для объединения результатов двух или более запросов SELECT
SELECT column_list FROM table1_name
UNION SELECT column_list FROM table2_name;
Операция UNION отличается от использования JOIN. Операция UNION создает новую таблицу, помещая все строки из двух исходных таблиц в одну таблицу.Oсновные правила объединения наборов результатов двух запросов SELECT с помощью UNION:
- Количество и порядок столбцов должны быть одинаковыми во всех запросах.
- Типы данных соответствующих столбцов должны быть совместимыми.
Пример, нужно получить всех пользователей ( платных и в пробной версии):
SELECT first_name, last_name FROM trial
UNION
SELECT first_name, last_name FROM premium;
Результат:+---------------+-------------——-+
| first_name | last_name |
+---------------+-------------——-+
| Ethan | Hunt |
| Tony | Montana |
Что означает ошибка Reference Error в Node.js?
Anonymous Quiz
43%
Переменная, которая не определена
18%
Не валидный код для JS
21%
Аргумент вне диапазона
18%
Не допустимый тип аргумента
PHP | Сортировка массива
sort($array, $flag); — по возрастанию.
rsort($array, $flag); — по убыванию.
asort($array, $flag); — подходит для ассоциативных массивов, cсортирует по значению элементов с сохранением связи «ключ — значение».
arsort($array, $flag); — антагонист asort.
ksort($array, $flag); — аналог asort, сортировка не по значениям, а по ключам.
shuffle($array); — перемешает массив и разместит его элементы в случайном порядке.
usort($array, ‘function’); — сортировкa массива без сохранения связи «ключ-значение» в соответствии с пользовательской функцией.
uasort($array, ‘function’); — аналогично usort, но сохраняет связь «ключ-значение».
ukrsort($array, ‘function’); — oтличие от usort заключается в том, что сортировка происходит по ключам элементов.
array_multisort($array1, $array2, $flag); — первый параметр – сортируемый массив, в качестве второго массива указывается порядок сортировки первого, после чего второй массив сортируется по аналогии с первым
sort($array, $flag); — по возрастанию.
rsort($array, $flag); — по убыванию.
asort($array, $flag); — подходит для ассоциативных массивов, cсортирует по значению элементов с сохранением связи «ключ — значение».
arsort($array, $flag); — антагонист asort.
ksort($array, $flag); — аналог asort, сортировка не по значениям, а по ключам.
shuffle($array); — перемешает массив и разместит его элементы в случайном порядке.
usort($array, ‘function’); — сортировкa массива без сохранения связи «ключ-значение» в соответствии с пользовательской функцией.
uasort($array, ‘function’); — аналогично usort, но сохраняет связь «ключ-значение».
ukrsort($array, ‘function’); — oтличие от usort заключается в том, что сортировка происходит по ключам элементов.
array_multisort($array1, $array2, $flag); — первый параметр – сортируемый массив, в качестве второго массива указывается порядок сортировки первого, после чего второй массив сортируется по аналогии с первым
JS | map vs forEach
Метод map() вызывает функцию для каждого элемента массива и возвращает новый массив.
Пример: преобразование массива в верхний регистр.
Пример: вывести измененные элементы массива на странице.
Метод map() вызывает функцию для каждого элемента массива и возвращает новый массив.
Пример: преобразование массива в верхний регистр.
var low = ['a', 'b', 'c'];forEach() ничего не возвращает, а просто вызывает функцию для каждого элемента массива
var upper = low.map(function(v) {
return v.toUpperCase();
});
// теперь upper = ["A", "B", "C"]
// а low все еще ['a', 'b', 'c']
Пример: вывести измененные элементы массива на странице.
var low = ['a', 'b', 'c'];
var upper = low.forEach(function(v){
console.log(v.toUpperCase());
});
// A , B , C
// upper = undefined, low = ['a', 'b', 'c'];
SQL | TRUNCATE TABLE
Команда TRUNCATE TABLE удаляет данные внутри таблицы, но не саму таблицу.
Используйте TRUNCATE TABLE, если вы просто хотите удалить все строки и заново создать всю таблицу.
Команда TRUNCATE TABLE удаляет данные внутри таблицы, но не саму таблицу.
TRUNCATE TABLE table_name;TRUNCATE TABLE работает быстрее и использует меньше системных ресурсов, чем DELETE, потому что DELETE сканирует таблицу для создания количества удаляемых строк, затем удаляет строки одну за другой и сохраняет в лог каждую из них, тогда как TRUNCATE TABLE просто удаляет все строки без сохранения дополнительной информации. Но в TRUNCATE TABLE отсутствует оператор WHERE.
Используйте TRUNCATE TABLE, если вы просто хотите удалить все строки и заново создать всю таблицу.
PHP | checkdate
Как проверить, что пользователь передал правильную дату вашей программе?
Нужно передать месяц, день и год функции checkdate, которая вернет значение TRUE, если ей передана допустимая дата, или значение FALSE в противном случае.
Например, если введена дата 30 февраля любого года, то она в любом случае будет недопустимой.
Как проверить, что пользователь передал правильную дату вашей программе?
Нужно передать месяц, день и год функции checkdate, которая вернет значение TRUE, если ей передана допустимая дата, или значение FALSE в противном случае.
Например, если введена дата 30 февраля любого года, то она в любом случае будет недопустимой.
<?php
if (checkdate(2, 30, 2020)) echo "Допустимая дата";
else echo "Недопустимая дата";
// Недопустимая дата
?>
Node.js | multer
Одной из наиболее часто встречаемых задач в Node.js является загрузка файлов на сервер. В Node.js для этого нет встроенных инструментов. Одним из популярных пакетов является multer, который работает поверх Express.
Для конфигурации в функцию multer передается объект, в котором параметр dest указывает на путь, по которому будет загружаться файл. В данном случае это папка uploads:
Настроив multer, мы можем при обработке запроса получить файл через req.file.
В статье более вы найдете подробную информацию, и узнаете как как загрузить несколько файлов.
Одной из наиболее часто встречаемых задач в Node.js является загрузка файлов на сервер. В Node.js для этого нет встроенных инструментов. Одним из популярных пакетов является multer, который работает поверх Express.
Для конфигурации в функцию multer передается объект, в котором параметр dest указывает на путь, по которому будет загружаться файл. В данном случае это папка uploads:
app.use(multer({dest:"uploads"}).single("filedata"));
app.post("/upload", function (req, res, next) {
let filedata = req.file;
console.log(filedata);
if(!filedata)
res.send("Ошибка при загрузке файла");
else
res.send("Файл загружен");
});
В index.html <input type="file" name="filedata" />;, поэтому в функцию single() передается соответствующее значение.Настроив multer, мы можем при обработке запроса получить файл через req.file.
В статье более вы найдете подробную информацию, и узнаете как как загрузить несколько файлов.
SQL | Подзапрос с EXISTS
Например выберем всех клиентов, которые совершили покупки до конца зимы:
Например выберем всех клиентов, которые совершили покупки до конца зимы:
select id, company_nameОператор EXISTS используется для проверки существования любой записи в подзапросе. Если подзапрос возвращает одну или несколько записей, то возвращается true. Обычно EXISTS используется в зависимых (коррелирующих) подзапросах.
from client
where exists (select *
from purchase
where client.id = purchase.client_id
where date > '2020-28-02')
👍1
Node.js | Streams
Стрим — это концепция, c помощью которой можно обрабатывать данные небольшими частями, что позволяет задействовать небольшой объем оперативной памяти.
Например нужно записать "тяжелый файл"
Модуль fs.createReadStream может предоставить нам Stream
В статье вы найдете больше информации и где еще применяют потоки.
Стрим — это концепция, c помощью которой можно обрабатывать данные небольшими частями, что позволяет задействовать небольшой объем оперативной памяти.
Например нужно записать "тяжелый файл"
const fs = require('fs');
const file = fs.createWriteStream('./big.file');
for(let i=0; i<= 1e6; i++) {
file.write('Длинный текст\n');
}
file.end();
Запуская сервер мы получим нагрузку на оперативную память ~ 400 MBМодуль fs.createReadStream может предоставить нам Stream
const fs = require('fs');
const server = require('http').createServer();
server.on('request', (req, res) => {
const src = fs.createReadStream('./big.file');
src.pipe(res);
});
server.listen(8000);
Когда клиент запросит этот файл, мы транслируем его по частям, что означает, что мы вообще не буферизуем его в памяти. Использование памяти снизилось до 25 МБ.В статье вы найдете больше информации и где еще применяют потоки.
Кто такой Deno?
Deno – это новая runtime-среда для JavaScript и TypeScript от создателя Node.js. Инструмент построен на V8 (JavaScript-движок ), Rust (производительный и безопасный язык) и Tokio (асинхронный рантайм для Rust).
Преимущества
- Модули Deno могут быть размещены в любом месте ( локально кэшируются, не используется "package.json" )
- Безопасность ( не имеет открытого доступа к файловым или сетевым ресурсам по умолчанию)
- Встроенный TypeScript
- Тестирование ( в ядре )
- Форматирование кода
- Дебаг
- Compile/Bundle
- Deno HTTP server смогло обработать 25 тысяч запросов в секунду с максимальной задержкой в 1.3 миллисекунд. В Node.js аналогичное приложение обработало 34 тысячи запросов в секунду, но задержки колебались от 2 и 300 миллисекунд
- Все скрипты приложения могут быть объединены в один JavaScript файл
Deno имеет все шансы стать более продуманной средой выполнения Javanoscript, чем Node.js.
Deno – это новая runtime-среда для JavaScript и TypeScript от создателя Node.js. Инструмент построен на V8 (JavaScript-движок ), Rust (производительный и безопасный язык) и Tokio (асинхронный рантайм для Rust).
Преимущества
- Модули Deno могут быть размещены в любом месте ( локально кэшируются, не используется "package.json" )
- Безопасность ( не имеет открытого доступа к файловым или сетевым ресурсам по умолчанию)
- Встроенный TypeScript
- Тестирование ( в ядре )
- Форматирование кода
- Дебаг
- Compile/Bundle
- Deno HTTP server смогло обработать 25 тысяч запросов в секунду с максимальной задержкой в 1.3 миллисекунд. В Node.js аналогичное приложение обработало 34 тысячи запросов в секунду, но задержки колебались от 2 и 300 миллисекунд
- Все скрипты приложения могут быть объединены в один JavaScript файл
Deno имеет все шансы стать более продуманной средой выполнения Javanoscript, чем Node.js.
This media is not supported in your browser
VIEW IN TELEGRAM
CSS | Плавная прокрутка
Раньше, для оснащения страницы плавной прокруткой, требовалось задействовать несколько строк JS-кода. А теперь эта задача может быть решена исключительно средствами CSS
Раньше, для оснащения страницы плавной прокруткой, требовалось задействовать несколько строк JS-кода. А теперь эта задача может быть решена исключительно средствами CSS
html {
scroll-behavior: smooth;
}
После этого кода все якорные ссылки на странице будут прокручиваться плавно.Его пока не поддерживают Edge, IE и Safari (настольная и мобильная версии)Продолжите SQL запрос, что бы выбрать всех сотрудников начинающихся с буквы 'М' и заканчивающихся на 'А'
SELECT * FROM EMPLOYEES WHERE ...
SELECT * FROM EMPLOYEES WHERE ...
Anonymous Quiz
22%
EmpName like '/M/*А'
52%
EmpName like 'M%А'
9%
EmpName like 'M_А'
17%
EmpName like '%M%A'
This media is not supported in your browser
VIEW IN TELEGRAM
CSS | line-clamp
Свойство CSS -webkit-line-clamp позволяет ограничить содержимое контейнера блока указанным количеством строк
Нам, чтобы им пользоваться, надо прибегнуть к старой реализации flexbox, применив свойства display: -webkit-box и -webkit-box-orient: vertical.
Свойство CSS -webkit-line-clamp позволяет ограничить содержимое контейнера блока указанным количеством строк
Нам, чтобы им пользоваться, надо прибегнуть к старой реализации flexbox, применив свойства display: -webkit-box и -webkit-box-orient: vertical.
.card-denoscription {
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
}
Описание карточки отобразит только 3 строкиJavaScript | async и defer
Если скрипт – внешний, то пока браузер не выполнит его, он не покажет часть страницы под ним.
Defer — сработает, когда весь HTML-документ будет обработан браузером. Также используют, когда нужно выполнить скрипты в строгом порядке
Если скрипт – внешний, то пока браузер не выполнит его, он не покажет часть страницы под ним.
<head>Чтобы этого избежать, JavaScript предоставляет нам две техники, известные как async и defer. Вы можете просто добавлять эти атрибуты к тегам
<noscript src="big.js"></noscript>
</head>
<body>
Этот текст не будет показан, пока браузер не выполнит big.js.
</body>
<noscript>.
Async — это когда вы говорите браузеру загружать скрипт, не затрагивая рендеринг. То есть, браузер не останавливает обработку страницы, а спокойно работает дальше. Когда скрипт будет загружен – он выполнится.Defer — сработает, когда весь HTML-документ будет обработан браузером. Также используют, когда нужно выполнить скрипты в строгом порядке
<noscript src="1.js" defer></noscript>Первым сработает всегда 1.js, а скрипт 2.js, даже если загрузился раньше, будет его ждать.
<noscript src="2.js" defer></noscript>
SQL | JOIN
Оператор языка SQL JOIN предназначен для соединения двух или более таблиц базы данных по совпадающему условию.
Выведем все голы, забитые в матче Россия-Чехия
Получим таблицу со всеми игроками, которые забили в этом матче с временем гола
———————————
|player | gtime |
———————————
|Alan Dzagoev | 39 |
Оператор языка SQL JOIN предназначен для соединения двух или более таблиц базы данных по совпадающему условию.
Выведем все голы, забитые в матче Россия-Чехия
SELECT player, gtimeОператор ON представляет одно или несколько условий JOIN.
FROM game JOIN goal ON matchid = id
WHERE (team1='RUS' AND team2='CZE')
Получим таблицу со всеми игроками, которые забили в этом матче с временем гола
———————————
|player | gtime |
———————————
|Alan Dzagoev | 39 |