HTML | SEO мета теги
Чаще всего сео-оптимизация это последнее о чем задумывается фронтендер при создании сайта, при этом настроить автоматическую генерацию или вручную указать эти теги проще в начале разработки.
Небольшие рекомендации по заполнению тегов :
- noscript - уникальный для каждой страницы, обычно составляют из двух частей "название страницы | название сайта" (организации, сервиса)
- denoscription - короткий текст, обычно до 160 символов, также составляется из двух частей, описание конкретной страницы + короткая информация о компании, контакты или адрес
- keywords - основные ключевые слова страницы, можно выжимать из denoscription самый сок, три, четыре ключевых слова достаточно
Так же стоит обратить внимание на настройку OpenGraph Meta, формат мета-тегов, созданный в Facebook, служащий для передачи информации о странице при репосте в социальные сети.
Чаще всего сео-оптимизация это последнее о чем задумывается фронтендер при создании сайта, при этом настроить автоматическую генерацию или вручную указать эти теги проще в начале разработки.
Небольшие рекомендации по заполнению тегов :
- noscript - уникальный для каждой страницы, обычно составляют из двух частей "название страницы | название сайта" (организации, сервиса)
- denoscription - короткий текст, обычно до 160 символов, также составляется из двух частей, описание конкретной страницы + короткая информация о компании, контакты или адрес
- keywords - основные ключевые слова страницы, можно выжимать из denoscription самый сок, три, четыре ключевых слова достаточно
Так же стоит обратить внимание на настройку OpenGraph Meta, формат мета-тегов, созданный в Facebook, служащий для передачи информации о странице при репосте в социальные сети.
SQL | Дубликаты строк
Одним из частых вопросов на собеседовании являтся вопрос вида "Как найти дубликаты записей".
Для поиска дубликатов с одним полем можно воспользоваться следующим трюком:
Если же необходимо выбрать дубликаты записей с несколькими полями:
Одним из частых вопросов на собеседовании являтся вопрос вида "Как найти дубликаты записей".
Для поиска дубликатов с одним полем можно воспользоваться следующим трюком:
SELECT COUNT(field)
FROM table
GROUP BY field
HAVING COUNT(field) > 1Если же необходимо выбрать дубликаты записей с несколькими полями:
SELECT field1, field2, COUNT(id)
FROM table
GROUP BY field1, field2
HAVING COUNT(id) > 1Что выведется в логе?
Anonymous Quiz
22%
Иван Иванов
7%
Петя Иванов
70%
Иван Сидоров
1%
Петя Сидоров
Резервируем место под картинку
Изображениям в современном вебе уделяется особое внимание и часто встречается ситуация, когда страница загрузилась и пользователь начинает мотать страницу, потом подгружаются картинки из начала страницы и контент начинает скакать, пользователь недоволен. Рассмотрим один из способов решения проблемы, основывающийся на том, что вертикальные внутренние отступы блока рассчитываются от его ширины, а не высоты. Если вы знаете соотношение сторон картинки, то этот способ идеально вам подходит.
Изображениям в современном вебе уделяется особое внимание и часто встречается ситуация, когда страница загрузилась и пользователь начинает мотать страницу, потом подгружаются картинки из начала страницы и контент начинает скакать, пользователь недоволен. Рассмотрим один из способов решения проблемы, основывающийся на том, что вертикальные внутренние отступы блока рассчитываются от его ширины, а не высоты. Если вы знаете соотношение сторон картинки, то этот способ идеально вам подходит.
PHP | Наследование переменных в анонимных функциях
В PHP можно наследовать переменные из родительской области видимости при использовании анонимных функциях.
Однако стоит помнить о том, что значение будет браться из места определения функции, а не её вызова.
Чтобы этого избежать нужно наследовать переменную по ссылке.
Пример:
В PHP можно наследовать переменные из родительской области видимости при использовании анонимных функциях.
Однако стоит помнить о том, что значение будет браться из места определения функции, а не её вызова.
Чтобы этого избежать нужно наследовать переменную по ссылке.
Пример:
$message = 'Hi, ';
$test = function () use (&$message) {
echo($message);
};
$test();
$message = 'sWebDev!';
$test();
CSS | Правило внутреннего и внешнего
Хороший фронтендер должен разбираться в основах дизайна и типографике.
Существует универсальное правило внутреннего и внешнего:
внутреннее ≤ внешнее
Внутреннее — расстояние между строками, внешнее — между абзацами или поля вокруг текста.
Внутреннее — padding блока, внешнее — margin блока.
Поняв это правило и научившись им пользоваться можно улучшить свою разметку или найти общий язык с дизайнером, а то и поспорить с ним на счёт отступов.
Хороший фронтендер должен разбираться в основах дизайна и типографике.
Существует универсальное правило внутреннего и внешнего:
внутреннее ≤ внешнее
Внутреннее — расстояние между строками, внешнее — между абзацами или поля вокруг текста.
Внутреннее — padding блока, внешнее — margin блока.
Поняв это правило и научившись им пользоваться можно улучшить свою разметку или найти общий язык с дизайнером, а то и поспорить с ним на счёт отступов.
Что выведется в консоль?
Anonymous Quiz
22%
[{ a: 1 }]
53%
[{ a: 1 }, { a: 1 }]
12%
{ a: 1 }
13%
[1, 1]
Node.js | Twitter
Для Node.js существует npm пакет Twitter. Как понятно из названия, он будет полезен при взаимодействии с Twitter'ом.
Авторизация
Создаём новый твит
Получаем последние твиты о php в стриме
Для Node.js существует npm пакет Twitter. Как понятно из названия, он будет полезен при взаимодействии с Twitter'ом.
Авторизация
var Twitter = require('twitter')
var client = new Twitter({
consumer_key: process.env.TWITTER_CONSUMER_KEY,
consumer_secret: process.env.TWITTER_CONSUMER_SECRET,
access_token_key: process.env.TWITTER_ACCESS_TOKEN_KEY,
access_token_secret: process.env.TWITTER_ACCESS_TOKEN_SECRET
})Создаём новый твит
client.post('statuses/update', { status: 't.me/sWebDev is beautiful' })
.then(console.log)
.catch(console.error)Получаем последние твиты о php в стриме
var stream = client.stream('statuses/filter', { track: 'php' })
stream.on('data', (event) => {
console.log(event.text)
})
stream.on('error', (error) => {
console.error(error)
})👍1
Avocode
Avocode – это продукт созданный специально для верстальщиков. Сами создатели называют его "Мост между дизайнерами и разработчиками". Работает это так: дизайнер нарисовал макет в Photoshop, отправил верстальщику, а тот открывает его в Avocode, где удобно реализованы все необходимые инструменты.
Avocode – это продукт созданный специально для верстальщиков. Сами создатели называют его "Мост между дизайнерами и разработчиками". Работает это так: дизайнер нарисовал макет в Photoshop, отправил верстальщику, а тот открывает его в Avocode, где удобно реализованы все необходимые инструменты.
Что может вернуть net.isIP(input) в Node.js?
Anonymous Quiz
53%
если input - валидный IP, то true, иначе - false
9%
если input - не валидный IP, то 0, иначе - 1
22%
если input - не валидный IP, то 0, иначе - 4 (если input - IPv4) или 6 (если input - IPv6)
16%
если input - не валидный IP, то 0, иначе - 1 (если input - IPv4) или 2 (если input - IPv6)
This media is not supported in your browser
VIEW IN TELEGRAM
Реализация карточки товара с несколькими изображениями
В примере описано как сделать карточку товара которая будет менять своё изображение по ховеру, представлено два варианта - две картинки на чистом css и несколько картинок с использованием скриптов.
В примере описано как сделать карточку товара которая будет менять своё изображение по ховеру, представлено два варианта - две картинки на чистом css и несколько картинок с использованием скриптов.
CSS | Pointer-events
Свойство pointer-events позволяет управлять тем, как элементы будут реагировать на события мыши или прикосновения к сенсорному экрану. Свойство позволяет контролировать когда, как и может ли вообще указатель устройства взаимодействовать с элементом.
pointer-events: none предотвращает события указателя для элемента: hover, active, click и т.п., в том числе и JavaScript событие click.
pointer-events: auto восстанавливает стандартное взаимодействие указателя с элементом.
Применение pointer-events на практике:
Запретить пользователю клик правой кнопкой мыши по фото на сайте.
Выключить взаимодействие со странице во время обработки ajax-запроса.
Блокировать любой элемент страницы от взаимодействия с курсором.
Свойство pointer-events позволяет управлять тем, как элементы будут реагировать на события мыши или прикосновения к сенсорному экрану. Свойство позволяет контролировать когда, как и может ли вообще указатель устройства взаимодействовать с элементом.
pointer-events: none предотвращает события указателя для элемента: hover, active, click и т.п., в том числе и JavaScript событие click.
pointer-events: auto восстанавливает стандартное взаимодействие указателя с элементом.
Применение pointer-events на практике:
Запретить пользователю клик правой кнопкой мыши по фото на сайте.
Выключить взаимодействие со странице во время обработки ajax-запроса.
Блокировать любой элемент страницы от взаимодействия с курсором.
WEB | Расширения браузера для фронтендера
В интернете существует множество статей про полезные расширения, которые ускоряют и облегчают вёрстку. Вот четыре расширения, которые позволят держать сетку под контролем
Tape - позволяет размещать направляющие, которые привязываются к содержимому страницы (и придерживается его, при прокрутке), и помогает легко измерять отступы и размеры элементов.
PerfectPixel - позволяет разработчикам накладывать полупрозрачное изображение поверх разметки и выполнять между ними идеальное сравнение пикселей. Идеально для вёрстки " пиксель в пиксель".
Design Grid Overlay - Расширение для наложения дизайнерской сетки поверх страницы. Сетка имеет множество настроек.
wireframify - Предварительный просмотр каркаса веб-сайта одним щелчком мыши. Наглядно показывает границы блоков, позволяет в целом оценить качество разметки или найти блок который вызывает горизонтальный скролл.
А какие ваши любимые расширения?
В интернете существует множество статей про полезные расширения, которые ускоряют и облегчают вёрстку. Вот четыре расширения, которые позволят держать сетку под контролем
Tape - позволяет размещать направляющие, которые привязываются к содержимому страницы (и придерживается его, при прокрутке), и помогает легко измерять отступы и размеры элементов.
PerfectPixel - позволяет разработчикам накладывать полупрозрачное изображение поверх разметки и выполнять между ними идеальное сравнение пикселей. Идеально для вёрстки " пиксель в пиксель".
Design Grid Overlay - Расширение для наложения дизайнерской сетки поверх страницы. Сетка имеет множество настроек.
wireframify - Предварительный просмотр каркаса веб-сайта одним щелчком мыши. Наглядно показывает границы блоков, позволяет в целом оценить качество разметки или найти блок который вызывает горизонтальный скролл.
А какие ваши любимые расширения?
Как записать звук с микрофона в Node.js?
Для записи аудио с микрофона в Node.js существует созданный сообществом npm пакет mic.
Модуль работает на основе sox (Windows/Mac) или ALSA (Linux), поэтому необходимо предустановить их.
Базовое использование
Для записи аудио с микрофона в Node.js существует созданный сообществом npm пакет mic.
Модуль работает на основе sox (Windows/Mac) или ALSA (Linux), поэтому необходимо предустановить их.
Базовое использование
var mic = require('mic')
var fs = require('fs')
var micInstance = mic({
rate: '16000',
channels: '1',
debug: true,
exitOnSilence: 6
})
var micInputStream = micInstance.getAudioStream()
var outputFileStream = fs.WriteStream('output.raw')
micInputStream.pipe(outputFileStream)
micInstance.start()