Pull to refresh
1
0
Богомолов Дмитрий @Exo

Инженер-программист баз данных

Send message

Next.js: подробное руководство. Итерация первая

Reading time35 min
Views196K


Привет, друзья!


Хочу поделиться с вами заметками о Next.js (надеюсь, кому-нибудь пригодится).


Next.js — это основанный на React фреймворк, предназначенный для разработки веб-приложений, обладающих функционалом, выходящим за рамки SPA, т.е. так называемых одностраничных приложений.


Как известно, основным недостатком SPA являются проблемы с индексацией страниц таких приложений поисковыми роботами, что негативно влияет на SEO.


Впрочем, по моим личным наблюдениям, в последнее время ситуация стала меняться к лучшему, по крайней мере, страницы моего небольшого SPA-PWA-приложения нормально индексируются.


Кроме того, существуют специальные инструменты, такие как react-snap, позволяющие превратить React-SPA в многостраничник путем предварительного рендеринга приложения в статическую разметку. Метаинформацию же можно встраивать в head с помощью таких утилит, как react-helmet. Однако Next.js существенно упрощает процесс разработки многостраничных и гибридных приложений (последнего невозможно добиться с помощью того же react-snap). Он также предоставляет множество других интересных возможностей.



Обратите внимание: данная статья предполагает, что вы обладаете некоторым опытом работы с React. Также обратите внимание, что заметки не сделают вас специалистом по Next.js, но позволят получить о нем исчерпывающее представление.


Заметки состоят из 2 частей. Это часть номер раз.


Итерация вторая.

Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments3

Как мы достигли 1 млн скачиваний с нулевым бюджетом

Reading time7 min
Views8.1K

Десять советов по бесплатному продвижению от автора приложения "Avocation", которое достигло отметки в миллион скачиваний на 441-й день после выхода.

Начиная этот проект австрийский студент Дэвид Йох совершенно ничего не знал о маркетинге и ASO, но за прошедшее время многому научился. У молодого человека не было возможности тратить деньги на платные каналы по привлечению пользователей, поэтому он искал пути естественного роста аудитории.

В этой статье Дэвид поделится десятью методами, которые он бы порекомендовал тем, кто хочет увеличить число скачиваний своего приложения, но ограничен в бюджете.

Читать далее
Total votes 10: ↑9 and ↓1+8
Comments1

Как устроена серверная UI-система Airbnb

Reading time13 min
Views4K

Прежде чем разбираться с реализацией серверного UI (SDUI) от Airbnb, важно понять, что это вообще такое и какие преимущества оно дает относительно традиционного клиентского UI.

Обычно данные обрабатываются серверной частью, а за работу интерфейса отвечает конкретный клиент (веб-браузер, приложения для iOS, Android). В качестве примера возьмем страницу Airbnb со списком предложений. Чтобы отобразить этот список пользователю, клиент может запросить данные у бэкенда, а затем преобразовать их в UI.

И здесь есть несколько трудностей. Во-первых, на каждом клиенте нужно реализовать специфичную для списка логику, обеспечивающую преобразование и отрисовку данных. Если по ходу развития проекта вносить изменения в то, как список отображается, эта логика быстро усложняется и становится негибкой.

Во-вторых, функциональность всех клиентов должна быть единообразной. Логика экрана со списком быстро усложняется, и при этом у каждого клиента есть свои тонкости и особенности реализации для обработки состояния, отображения UI и т. д. Поэтому клиенты по реализации начинают быстро расходиться друг с другом.

Наконец, у мобильных приложений возникают сложности с версиями: при добавлении новых функций на страницу со списком нужно выпускать новую версию приложения, и пока пользователи не обновятся, у нас мало возможностей определить, насколько удобны эти функции и насколько хорошо их приняли.

А что, если клиент даже не будет знать, что он отображает список предложений? Можно ли передавать клиенту напрямую UI, а не данные для построения интерфейса? Именно это и происходит в случае SDUI: мы передаем UI и данные вместе, а клиент отображает всё это независимо от того, что конкретно там внутри.

Читать далее
Total votes 3: ↑3 and ↓0+3
Comments4

Uni Localization. Абсолютная кастомизация, работает на любом сайте (Vue, React, Angular, ...)

Reading time5 min
Views3.1K

Я всегда мечтал о функциональности, которую можно было бы использовать на любом web проекте. Еще я мечтал иметь максимально гибкое решение для абсолютной кастомизации под себя. Два года назад мы начали работать над воплощением этой смелой мечты в реальность. Первой такой функциональностью стала именно Uni Локализация.

Читать далее
Total votes 8: ↑7 and ↓1+6
Comments0

Юрист, ставший кошмаром компании DuPont

Reading time27 min
Views396K
Роб Билот работал корпоративным адвокатом восемь лет. Затем он взялся за судебный иск, связанный с окружающей средой, перевернувший всю его карьеру – и вскрыл бесстыдную историю химического загрязнения, длившуюся десятилетиями.

image

Всего лишь за несколько месяцев до того, как стать партнёром в юридической фирме Taft Stettinius & Hollister, Роб Билот ответил на телефонный звонок от фермера, занимавшегося разведением скота. Фермер Уилбур Тенант [Wilbur Tennant] из Паркерсбурга в Западной Виргинии рассказал, что его коровы дохнут. Он решил, что виной тому компания-химический гигант DuPont, до недавнего времени хозяйничавшая на участке в Паркесбурге, превышающем Пентагон по площади в 35 раз. Тенант пытался заручиться помощью местных властей, но у DuPont весь город был в кармане. Его просьбы с презрением отвергли не только юристы Паркерсбурга, но и его политики, журналисты, доктора и ветеринары. Раздосадованный фермер говорил с сильным акцентом, выдававшим в нём жителя региона Апалачиа. Билот пытался понять, что говорит фермер. Он, возможно, бросил бы трубку, не упомяни фермер имени бабушки Билота, Альмы Холланд Уайт.
Total votes 119: ↑116 and ↓3+113
Comments147

Unit-тесты в СУБД — как мы делаем это в Спортмастере, часть вторая

Reading time7 min
Views5.8K
Первая часть — здесь.



Представьте ситуацию. Перед вами стоит задача разработки нового функционала. У вас есть наработки от ваших предшественников. Если предположить, что вы никаких моральных обязательств не имеете, то как бы вы поступили?

Чаще всего все старые наработки подвергаются забвению и всё начинается сначала. В чужом коде копаться никто не любит, а при наличии времени почему бы не заняться созданием собственной системы? Это типичный подход, и он во многом правильный. Но в своём проекте мы поступили не так. В основу будущей системы автоматического тестирования мы заложили наработки по unit-тестам на utPLSQL от предшественников, а затем пошли работать в нескольких параллельных направлениях.
Читать дальше →
Total votes 22: ↑21 and ↓1+20
Comments5

Как сделать веб-формы на сайте удобными и безопасными: инструменты разработки и конструкторы

Reading time9 min
Views37K
Помощник руководителя проектов stepFORM Артем Петров рассказал, как сделать веб-формы удобными для пользователей, защитить их от спама и перечислил основные способы их разработки.

Веб-формы — простой инструмент и один из главных источников лидов на сайте. С его помощью возможно выстроить хороший поток заявок с любой страницы. Чтобы веб-форма приносила стабильный приток прибыли, а не слабый ручеек из не целевых заявок, важно сделать ее удобной для посетителей. И не забудьте о безопасности, если не хотите получать спам вместо лидов.
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments0

Производительность фронтенда: разбираем важные метрики

Reading time12 min
Views31K
Обычно под производительностью понимают количество операций за определенный интервал времени и чем их больше, тем лучше. Но такое определение, да и подход в целом, мало применим к фронтенду, потому что у каждого пользователя будет свой «фронтенд». Именно об этом я и хочу поговорить, что же происходит «там», у пользователя, на другой стороне, в реальности, а не на вашем топовом MacBook.

Кроме это, я постараюсь вскользь рассмотреть общие правила оптимизации кода и некоторые ошибки на которые стоит обратить внимание. Ещё расскажу про инструмент, который помогает не только в профилировании, но и «из коробки» собирает кучу базовых метрик о производительности вашего приложения (и надеюсь, вы дочитаете этот пост до конца).
Читать дальше →
Total votes 65: ↑65 and ↓0+65
Comments22

Кросспостинг постов из Instagram в паблик VK на Python

Reading time9 min
Views12K


Предисловие


Решил выйти на новый рынок сбыта, тем более, целевая аудитория моего интернет-магазина, не имеющая аккаунтов в Instagram, давно интересовалась появлением дубликата в VK. Идея хорошая, но постов на странице сотни, соответственно вручную работать ctrl+c ctrl+v не хотелось, плюс дальнейшие перспективы обезьянней работы не впечатляли.

Уверенный, что в интернете полно бесплатный решений, я начал гуглить. Естественно, первые страницы поисковой выдачи пестрят платными сервисами, с довольно обширными функционалами. Но мне, всего лишь на всего, надо было перенести все посты со страницы Instagram в паблик VK и в дальнейшем синхронно пополнять его.

Не найдя ничего подходящего может плохо искал, было решено задушила жаба писать скрипт самому. Выбрал язык python. Просто, удобно, без лишних наворотов, да и скорость в этом деле не важна.

Документация по api Instagram и VK довольно подробная и задачка не кажется сложной. Освободив себе пару вечеров, я приступил к работе. Первым делом необходимо было получить токены как в Instagram, так и в VK. С этим проблем не было, оба были получены за пару минут.

Дальше меня ждал первый подводный камень…
Читать дальше →
Total votes 10: ↑9 and ↓1+8
Comments12

Мой способ создания мастер-компонентов в Фигме

Reading time3 min
Views13K
Заметил, что многие продуктовые дизайнеры задаются вопросом «Как организовывать разные состояния компонентов?». Весь дизайнерский мир делится на 2 части. Первые делают один компонент, в котором несколько папок для всех состояний. Вторые делают для каждого состояния элемента отдельный компонент.

Сначала разберу преимущества и недостатки каждого из них, а потом рискну предложить еще один вариант. Рассказываю о реализации в Фигме. Возможно, в других редакторах что-то не применимо.

1. Один компонент со множеством состояний


image

Преимущества


  • Библиотека компонентов выглядит компактнее.
  • В панели компонентов меньше элементов и поэтому меньше скролишь в поиске нужного. В этом случае спасает поиск по имени.

Недостатки


  • Где-то нужно все таки показать верстальщику все возможные состояния, потому что он не видит скрытые слои.
  • Приходится тратить время на поиск нужного состояния: его показ и скрытие ненужного. Особенно это утомляет, если структура компонента сложная.
Читать про остальные способы
Total votes 12: ↑12 and ↓0+12
Comments8

IDE нормального человека или почему мы выбрали Monaco

Reading time12 min
Views31K

Памятка от редактора


В прошлой статье мы рассказали про релиз панели управления Voximplant, не забыв упомянуть обновленную IDE. Сегодня мы посвящаем этому инструменту отдельный лонгрид – наша коллега Geloosa заботливо описала как процесс выбора технологии, так и имплементацию с вкладками, автокомплитом и кастомными стилями. Садитесь удобнее, отложите остальные дела и заходите в подкат, где любопытных ждут кишки Monaco – не поскользнитесь, их там много :) Приятного чтения.

Читать дальше →
Total votes 44: ↑41 and ↓3+38
Comments13

Другой Github 2: машинное обучение, датасеты и Jupyter Notebooks

Reading time6 min
Views19K


Несмотря на то, что в интернете существует множество источников свободного программного обеспечения для машинного обучения, Github остается важным центром обмена информацией для всех типов инструментов с открытым исходным кодом, используемых в сообществе специалистов по машинному обучению и анализу данных.

В этой подборке собраны репозитории по машинному обучению, датасетам и Jupyter Notebooks, ранжированные по количеству звезд. В предыдущей части мы рассказывали о популярных репозиториях для изучения работ по визуализации данных и глубокому обучению.
Читать дальше →
Total votes 47: ↑45 and ↓2+43
Comments1

На работу на велосипеде. Еще одно мнение

Reading time15 min
Views82K

Внимание! Это не автор поста!

Вступление


Статья не про электротранспорт. Электровелосипеды живут где-то в соседних темах.
Коллега RicoScrewdriver опубликовал неплохую статью про поездки на работу на велосипеде. Я же беру на себя смелость написать аналогичный опус, но с точки зрения увлеченного катальца, который рассматривает велосипед не только как транспорт. Скажем так, это мнение любителя с упоротостью выше среднего.

Все начиналось прозаично. Однажды, теплым мартовским днем 2016 года, где-то между извилин подогретого первыми солнечными лучами мозга, появился зуд. Я вспоминал детство. Не вообще всё, а те моменты, когда я катил на велосипеде. Это было давно и последние годы моим основным транспортом до работы была электричка, метро и ноги. И я предложил жене купить по велосипеду. Так мы стали обладателями двух MTB (в простонародье «горных») аппаратов типа «Хардтейл». В начале были легкие покатушки по городу и парку «Лосиный остров». С каждым разом было интересно заехать в невиданные ранее уголки города и ближайшего пригорода. Тогда я и не думал, что так просто можно ездить на работу. Но такие мысли однажды появились. Я смотрел карту, видел там «Лосиный остров», он манил. И я поддался. Бумажная просека стала для меня откровением. Асфальтовая дорога в лесу. Так я доехал от Королёва до парка «Сокольники», а там было рукой подать до метро «Добрынинская», где я тогда и работал. И началось. За прошедшее время и тысячи километров появился некий опыт и мнение, которым я и постараюсь поделиться.
Total votes 120: ↑94 and ↓26+68
Comments552

Микроэлектроника для школьников от самого истока

Reading time5 min
Views28K
Несколько лет назад довелось мне попробовать свои силы в заманивании пытливых отроков в разработку микроэлектроники. А дальше было, как в известной пословице: «Коготок увяз — птичке пропасть!» Остановиться уже не смог. Хочу поделиться с общественностью этим опытом, возможно, другие инженеры-электронщики тоже захотят устроить что-то подобное. Грамотнее народ – лучше жизнь.

Началось все с того, что мы почти случайно договорились с Межрегиональной компьютерной школой в подмосковной Дубне о проведении для их слушателей чего-то вроде лекции о проектировании микропроцессоров. Тема эта известна мне не понаслышке, два десятка лет в ней варюсь. Довелось поработать и в отечественных, и в зарубежных фирмах. Ну и почему бы подросткам не рассказать, в чем состоит работа инженеров, выдумывающих внутренности «процов». Это не среди таких же зануд на конференции выступать — перед детьми просто оттарабанить текст не получится. Если им будет совсем не интересно, то плевать им на почетные седины, блистательные лысины и надутые щеки. Будут зевать, не стесняясь, и ерзать на стульях в надежде сбежать поскорее. Но есть и плюсы — всякие вольности, шутки, неточности и упрощения не вызовут негодования и требований сжечь еретика-докладчика. В общем, судя по количеству вопросов в процессе общения, первый блин вышел не комом, стало интересно двигаться дальше.

image
Читать дальше →
Total votes 86: ↑86 and ↓0+86
Comments197

Для тех, кто познаёт ушами: подкасты для разработчиков

Reading time6 min
Views52K


Кто сказал, что разработчики могут учиться новому только через книги, видео и анализ чужого кода? Ведь у нас и другие каналы получения информации из окружающего мира. Конечно, речь не о том, чтобы попробовать знания на вкус, пощупать их или понюхать. А вот послушать — самое оно. Мы собрали для вас коллекцию действующих русскоязычных подкастов для разработчиков. Хороший способ дать глазам отдых или занять себя в пробках.
Читать дальше →
Total votes 83: ↑80 and ↓3+77
Comments57

Другой GitHub: репозитории по Data Science, визуализации данных и глубокому обучению

Reading time6 min
Views34K

(с)

Гитхаб — это не просто площадка для хостинга и совместной разработки IT-проектов, но и огромная база знаний, составленная сотнями экспертов. К счастью, сервис предоставляет не просто инструменты для работы с открытым исходным кодом, но и качественные материалы для обучения. Мы выбрали некоторые популярные репозитории и отсортировали их по количеству звезд в порядке убывания.

Эта подборка поможет разобраться, на какие именно репозитории стоит обратить внимание, если вас интересует работа с данными и сфера глубокого обучения.
Читать дальше →
Total votes 58: ↑55 and ↓3+52
Comments10

Создание собственной цветовой палитры

Reading time4 min
Views44K
Адаптировано из нашей будущей книги «Рефакторинг UI»

Видели эти модные генераторы цветовой палитры? Когда выбираешь цвет, настраиваешь несколько параметров с музыкальными словечками типа «триада» или «четвёртый мажор» — и получаете пять идеальных цветов для своего веб-сайта?



Такой вычислительный и научный подход к выбору идеальной цветовой гаммы крайне соблазнителен, но не очень полезен.
Читать дальше →
Total votes 94: ↑92 and ↓2+90
Comments12

GeoPuzzle — собери мир по кусочкам

Reading time11 min
Views16K
image

Хочу рассказать о проекте, который развивал последние пару лет. Называется он GeoPuzzle и представляет собой игру-паззл на политической карте мира. Цель — расставить кусочки-страны на свои места. Идея подсмотрена в статье «Головоломка Mercator для знатоков географии», также в детстве играл в тетрис из стран (ещё под DOS), но название программы уже не припомню. Я был настолько вдохновлён идеей, что захотел сделать полноценный продукт, интересный не только школьникам, но и знатокам географии. За развитием проекта можно наблюдать на GitHub.
Читать дальше →
Total votes 57: ↑53 and ↓4+49
Comments44

Реальный дизайн-процесс. Пошаговый рассказ о том, как создать бизнес-ориентированный сайт

Reading time9 min
Views12K


По дизайну написано тысячи статей и записано столько же вебинаров, но начинающих специалистов заботит один и тот же резонный вопрос: «Так что же мне конкретно делать?!». В этом материале я на реальном примере поэтапно покажу, какие действия нужно совершать для создания дизайн-проекта, нацеленного на решение задач бизнеса.
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments2
1
23 ...

Information

Rating
Does not participate
Location
Новороссийск, Краснодарский край, Россия
Date of birth
Registered
Activity