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 |
This media is not supported in your browser
VIEW IN TELEGRAM
CSS | Random
Нестандартная реализация генерации случайного числа на чистом CSS без строчки JS.
Автор использовал :
Нестандартная реализация генерации случайного числа на чистом CSS без строчки JS.
Автор использовал :
@keyframesНа видео реализовано для большего понимания задумки, в оригинале анимация ускорена и получается эффект рандома.
z-index
:checked
🔥 Для тех кто ищет первую работу в IT
Работодатели платят хорошую ЗП, но не берут на себя обучение кадров. Их можно понять - бизнесу надо решать задачи прямо сейчас
Чтобы избежать боли поиска первой работы - возьмите обучение на себя
В Skillbox можно пройти обучение с гарантированным трудоустройством:
Frontend разработчик - 2750р / мес
* Fullstack разработчик - 2919р / мес
* Веб-разработчик PRO - 4083р / мес
* - первый платеж через 6 месяцев
Работодатели платят хорошую ЗП, но не берут на себя обучение кадров. Их можно понять - бизнесу надо решать задачи прямо сейчас
Чтобы избежать боли поиска первой работы - возьмите обучение на себя
В Skillbox можно пройти обучение с гарантированным трудоустройством:
Frontend разработчик - 2750р / мес
* Fullstack разработчик - 2919р / мес
* Веб-разработчик PRO - 4083р / мес
* - первый платеж через 6 месяцев
JSON.parse() и JSON.stringify()
нужны для преобразования json строки в объект и наоборот
Например, нам нужно сохранить данные в localStorage:
второй пример - полное клонирование объекта с преобразованием, метод JSON.parse принимает колбэк, который позволяет изменить результат парсинга
нужны для преобразования json строки в объект и наоборот
Например, нам нужно сохранить данные в localStorage:
const object = {id: 1};
const string = JSON.stringify(object);
localStorage.setItem(key, string);
const data = localStorage.getItem(key);
const retrieved = JSON.parse(string);
// retrieved содержит объект {id: 1}
второй пример - полное клонирование объекта с преобразованием, метод JSON.parse принимает колбэк, который позволяет изменить результат парсинга
const userStr = JSON.stringify({
id: 1,
name: 'John',
friends: [
{id: 2, name: 'Maria'},
{id: 3, name: 'Peter'}
]
});
const clone = JSON.parse(userStr,
(key, value) => {
if (typeof value === 'string') {
return value.toUpperCase();
}
return value;
});
console.log(clone);
// {
// id: 1,
// name: "JOHN",
// friends: [
// {id: 2, name: "MARIA"},
// {id: 3, name: "PETER"}
// ]
// }GIT | Основные команды
- git init - создает в текущем каталоге новый подкаталог с именем .git, создает git - репозиторий.
- git status - статус файлов, любых изменений.
- git add имя_файла - начинает отслеживать введенный файл.
- git add . - для отслеживания всех новых файлов текущего локального репозитория.
- git diff --cached - для просмотра что войдёт в следующий коммит.
- git commit -m "name commit" - фиксация изменений, создание коммита.
- git checkout master - отменит последние коммиты.
- git reset HEAD - очищает буферную зону от изменений, которые мы только что проиндексировали.
- git remote add origin - связывается с вашим репозиторием на GitHub, добавьте ссылку на ваш гит-репозиторий в конце.
- git push -u origin master - для размещения локального репозитория на сервере GitHub (или внесения изменений).
- git init - создает в текущем каталоге новый подкаталог с именем .git, создает git - репозиторий.
- git status - статус файлов, любых изменений.
- git add имя_файла - начинает отслеживать введенный файл.
- git add . - для отслеживания всех новых файлов текущего локального репозитория.
- git diff --cached - для просмотра что войдёт в следующий коммит.
- git commit -m "name commit" - фиксация изменений, создание коммита.
- git checkout master - отменит последние коммиты.
- git reset HEAD - очищает буферную зону от изменений, которые мы только что проиндексировали.
- git remote add origin - связывается с вашим репозиторием на GitHub, добавьте ссылку на ваш гит-репозиторий в конце.
- git push -u origin master - для размещения локального репозитория на сервере GitHub (или внесения изменений).
Какой цвет будет при наведении на ссылку после ее посещения?
Anonymous Quiz
37%
Red
4%
Green
10%
Yellow
49%
Lightblue
JS | Копирование объектов
1.
1.
function copy(mainObj) {
let objCopy = {}; // objCopy будет хранить копию mainObj
let key;
// копирует каждое свойство objCopy
for (key in mainObj) {
objCopy[key] = mainObj[key];
}
return objCopy;
}
2. let objCopy = Object.assign({}, obj);
3. let newObj = JSON.parse(JSON.stringify(obj));
4. let newObj = { ...obj };
У каждого из этого метода есть свои недостатки. В каких случаях применять каждый вы найдете в статье, где автор подробно разобрал каждый описанный метод.PHP | MAILРассмотрим простейший пример отправки письма PHP
<?phpВ начале мы определяем кому адресовано письмо, за это отвечает переменная $to, если же получателей несколько человек, то записываем через запятую адреса эл. почты. Переменные $subject и $message тема и текст письма соответственно.
$to = "<mail@example.com>, " ;
$to .= "mail2@example.com>";
$subject = "Заголовок письма";
$message = ' <p>Текст письма</p> </br> <b>1-ая строчка </b> </br><i>2-ая строчка </i> </br>';
$headers = "Дополнительный зоголовок";
mail($to, $subject, $message, $headers);
?>
Cейчас же так никто не делает, потому что почта стала более сложной вещью, поэтому используют библиотеки Swift Mailer или PHPMailer.
В статье присутствует инструкция по PHPMailer.
Как установить нулевую прозрачность элемента?
Anonymous Quiz
14%
opacity: none;
2%
opacity: hide;
16%
opacity: 0%;
68%
opacity: 0;
Node.js | Segmentation Fault
Ошибка сегментации возникает, когда программа пытается получить доступ к области памяти, к которой ей не разрешен доступ, или недопустимым способом.
Когда вы можете столкнуться с этим в Node:
- Когда вы используете собственные дополнения ( C++ addons, пакеты ), если они несовместимы с вашей версией Node, вы часто будете получать сбои.
- Если вы изменяете встроенные объекты, модули Node.
- Когда в самой Node.js где-то есть ошибка.
Как это исправить?
- Перекомпилируйте все ваши собственные модули node с помощью
- Установите модуль Segfault-Handler
- Убедитесь, что все ваши модули обновлены.
- Большинство ошибок описаны по ссылке Node issue tracker
Ошибка сегментации возникает, когда программа пытается получить доступ к области памяти, к которой ей не разрешен доступ, или недопустимым способом.
Когда вы можете столкнуться с этим в Node:
- Когда вы используете собственные дополнения ( C++ addons, пакеты ), если они несовместимы с вашей версией Node, вы часто будете получать сбои.
- Если вы изменяете встроенные объекты, модули Node.
- Когда в самой Node.js где-то есть ошибка.
Как это исправить?
- Перекомпилируйте все ваши собственные модули node с помощью
npm rebuild .- Установите модуль Segfault-Handler
npm install segfault-handler для подробной информации об ошибке.- Убедитесь, что все ваши модули обновлены.
- Большинство ошибок описаны по ссылке Node issue tracker
PHP | Include and Require Files
Операторы include() иrequire() позволяют включать код, содержащийся в файле PHP, в другой файл PHP.
Если файл отсутствует оператор
Рекомендуется использовать оператор
Операторы include() иrequire() позволяют включать код, содержащийся в файле PHP, в другой файл PHP.
include("path/to/filename"); -Or- include "path/to/filename";
require("path/to/filename"); -Or- require "path/to/filename";
В чем их отличие?Если файл отсутствует оператор
include() будет генерировать только предупреждение, но позволит продолжить выполнение скрипта, тогда как оператор require() сгенерирует фатальную ошибку и остановит выполнение скрипта.Рекомендуется использовать оператор
require(), если вы включаете файлы библиотеки или файлы, содержащие функции и переменные, которые необходимы для запуска вашего приложения, например файл конфигурации базы данных.JS | Call stack
Стек выполнения - это LIFO ( last in, first out ) -стек, который используется для хранения контекстов выполнения, создаваемых в ходе работы кода.
Механизм работы Call-stack:
- JS-движок начинает обрабатывать скрипт.
- При обнаружении команды вызова функции движок добавляет ее в начало стека.
- Выполняет функцию в верхней части стека.
- Oтработанная функция извлекается и выполняется нижняя.
- Если стек переполнен, то будет ошибка ("stack overflow" error).
Стек выполнения - это LIFO ( last in, first out ) -стек, который используется для хранения контекстов выполнения, создаваемых в ходе работы кода.
Механизм работы Call-stack:
- JS-движок начинает обрабатывать скрипт.
- При обнаружении команды вызова функции движок добавляет ее в начало стека.
- Выполняет функцию в верхней части стека.
- Oтработанная функция извлекается и выполняется нижняя.
- Если стек переполнен, то будет ошибка ("stack overflow" error).
function first(){
console.log("Hello from firstFunction");
}
function second(){
first();
console.log("The end from secondFunction");
}
second();
// Hello from firstFunction
// The end from secondFunction
По ссылке потренируйтесь с call-stack-ом. И выполните код выше на платформе, если не совсем поняли почему такой вывод.This media is not supported in your browser
VIEW IN TELEGRAM
CSS | Flexbox
Наглядное пособие по CSS-Flexbox
Автор сделал интерактивными самые популярные свойства:
Наглядное пособие по CSS-Flexbox
Автор сделал интерактивными самые популярные свойства:
flex-shrink, flex-grow, align-items, flex-wrap и другие.Как сформировать уникальный временный каталог в Node.js?
Anonymous Quiz
14%
fs.mkdtemp
53%
fs.mkdirTemp
11%
fs.rmdir
21%
fs.tempdirUnic
PHP | Поиск файлов
При работе с каталогом и файловой структурой иногда может потребоваться найти определенные типы файлов в каталоге ( *.text ,* .png )
PHP glob() - Находит файловые пути, совпадающие с шаблоном и возвращает массив найденных файлов.
Код PHP в следующем примере будет искать в каталоге documents и выводить все файлы с расширением .txt. Поиск в подкаталогах не выполняется.
При работе с каталогом и файловой структурой иногда может потребоваться найти определенные типы файлов в каталоге ( *.text ,* .png )
PHP glob() - Находит файловые пути, совпадающие с шаблоном и возвращает массив найденных файлов.
Код PHP в следующем примере будет искать в каталоге documents и выводить все файлы с расширением .txt. Поиск в подкаталогах не выполняется.
<?php
foreach(glob("documents/*.txt") as $file){
echo basename($file) . " (size: " . filesize($file) . " bytes)" . "<br>";
}
?>