Обновить
434.11

Веб-разработка *

Делаем веб лучше

Сначала показывать
Порог рейтинга
Уровень сложности

О книгах и собеседованиях

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели1.5K

В последнее время опять участвую в собеседованиях со стороны интервьюера. Спрашиваем, казалось бы, не слишком сложные технически вещи. Но многие кандидаты, сами себя оценивающие достаточно высоко, "залипают" на этих вопросах, не хватает глубины, знаний основ. Начинаю задумываться: а в чём причина? И опыт больше трёх-пяти лет, и образование техническое, и опыт руководства у соискателя имеется, но зацепиться не за что.

Обычно задаю вопрос: из каких источников получаешь знания о новых технологиях в своей области? Самый частый ответ -- видео. Кто-то ещё читает каналы в Telegram. Книги не упоминает никто. Аргументация слабенькая -- видео самый удобный для меня канал информации. Но, как мне кажется, 10-20 минутный ролик не даст всей полноты знаний. А ещё чтение -- это труд потяжелее просмотра коротких роликов. Но этот труд и вознаграждается значительнее.

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

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

Хорошие издательства технической литературы, на мой взгляд: O'Reilly, Manning, Apress, Packt. Особенно мне нравятся обложки с редкими видами животных и национальными костюмами у первых двух. Если серьёзно, то важно то, что у книг этих изданий практически всегда есть рецензенты и научные редакторы из той сферы технологии, о которой речь в тексте. Это вызывает доверие. Кроме того, среди авторов люди, который и сами являются разработчиками стандартов, по которым мы с вами пишем программное обеспечение. В роликах на Youtube такое ещё надо поискать!

Читать далее

Представляем Taiga UI v4: еще больше компонентов и улучшений

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели8.8K

Рад поделиться, что мы опубликовали первый стабильный релиз четвертой мажорной версии Taiga UI — нашей огромной библиотеки компонентов для Angular. Улучшений в нем так много, что одной статьи едва ли хватит. Расскажу про самые аппетитные из них.

Читать далее

Как подружить веб-компоненты и JS-фреймворки

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели3.2K

Всем привет, я Роман Троицкий. Очень люблю веб-разработку; участвовал в проектах, попавших на Awwwards, Tagline и GoldenSite; помогаю организовывать митап Moscow CSS; участвовал в записи и разработке курса по фронтенду для Skillbox. На примере своего проекта я расскажу о сложившейся с Web Components ситуации, опишу их достоинства и недостатки. 

Читать далее

Внутреннее устройство sync.Map, сравнение производительности с map + RWMutex

Время на прочтение3 мин
Охват и читатели3.8K

Привет, Хабр! Эта статья для тех, кто хочет понять, когда стоит использовать sync.Map, а когда достаточно обычной map с мьютексом.


В Каруне этот вопрос иногда возникал на код ревью, поэтому такая статья мне показалась полезной. TLDR: sync.Map лучше работает на задачах, где много операций чтения, и ключи достаточно стабильны.


Внутреннее устройство sync.Map


sync.Map — это потокобезопасная реализация мапы в Go, оптимизированная для определенных сценариев использования.


Основная структура sync.Map выглядит примерно так:


type Map struct {
    mu Mutex
    read atomic.Value // readOnly
    dirty map[interface{}]*entry
    misses int
}

type readOnly struct {
    m       map[interface{}]*entry
    amended bool
}

type entry struct {
    p unsafe.Pointer // *interface{}
}

Здесь мы видим несколько ключевых полей:

Читать дальше →

Не JavaScript’ом единым: как фронтенд-разработчику затащить на собесе

Время на прочтение16 мин
Охват и читатели15K

Привет! Меня зовут Виталий, я тимлид в KTS, и за годы работы я провел больше 100 собеседований.

Кто-то на собеседовании от вас может ожидать знание 50-го аргумента функции callKek(), но это не мой подход, потому что в реальной жизни глубокого знания JavaScript не всегда бывает достаточно, а отдельные его тонкости и вовсе пригождаются крайне редко.

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

Читать далее

CTO в стартапе. Проблемы и выводы

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели3.4K

Привет, Хабр!

В этой статье я расскажу об опыте выполнения функций CTO в EdTech стартапе, о моих выводах и об основных проблемах с которыми я столкнулся на этом пути за 4 года.

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

Думаю, наиболее полезной эта статья будет для стартапов на ранних стадиях, для фаундеров и для CTO с небольшим опытом.

Читать далее

Деплой сайта в облако за 4 команды в IDE

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели10K

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

Эта статья создана для новичков, которые смогут просто скопировать код и в “два клика” опубликовать сайт.

Читать далее

PWA вместо приложения: плюсы, минусы, подводные камни

Время на прочтение6 мин
Охват и читатели12K

Осенью прошлого года мы решили делать PWA для платформы: в нашем случае это оказалось существенно дешевле, проще и практичней. Решил поделиться, почему выбрали PWA, какие преимущества и недостатки нашел при сравнении технологий, что успели сделать с командой за полгода, и какие проблемы сейчас есть у технологии.

Читать далее

Используем Proxy в Selenium

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели3.6K

Привет, Хабр. Вряд ли эта статья откроет Америку для прожженных разработчиков "парсеров" или тестировщиков, но должна помочь тем, кто работает с Selenium время от времени.

Если вы иногда занимаетесь автоматизированным сбором информации с веб-ресурсов (т.н. веб-скрапинг или парсинг), то однозначно сталкивались с проблемой, что некоторые ресурсы недоступны из некоторых регионов, по разным причинам. Сейчас этой проблемы стало даже чуточку больше. И для преодоления этого препятствия нам помогают прокси-серверы (промежуточные серверы). Однако, если в части библиотек для работы с запросами использование прокси является очевидным решением, идущим из коробки, то такой инструмент как Selenium очевидного встроенного решения или не имеет, или я не смог его обнаружить. Не смог его обнаружить я, в том числе, и на Хабре, поэтому решил это исправить.

Читать далее

Интерфейсы в JS с помощью @teqfw/di

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели1.7K

На эту статью меня сподвигла переписка в комментах с коллегой @iliazeus и его вопрос, как в @teqfw/di код может зависеть от интерфейса, а не от его имплементации. В своём ответе я попытался провести параллели с героем Джейсона Стэйтэма из фильма "Перевозчик" - с Фрэнком Мартином. У Фрэнка было три правила (условия контракта) и любой, кто удовлетворял этим правилам (и имел достаточно денег), мог нанять Фрэнка в качестве первозчика.

Ниже я продемонстрирую на примере Фрэнка Мартина, каким образом могут работать интерфейсы в обычном JS (не TS).

Читать далее

Подбираем нужные автозапчасти: миллиарды комбинаций за 12 минут

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели7.5K

Привет! Меня зовут Кирилл Егоров, я технический лидер двух юнитов Авито: «Запчасти» и «Строительство и ремонт». В этой статье рассказываю о том, как мы определяем, к каким автомобилям подходят запчасти из объявлений, как нам с помощью Golang удается перебрать миллиарды вариантов и какие трудности пришлось решить при реализации этого решения.

Читать далее

Система оценивания для проведения экзаменов, срезов в СПО

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели1K

Привет всем! Сегодня я расскажу вам о моей системе оценивания, которая создана для проведения экзаменов и оценки знаний студентов. Система построена на Django Rest Framework (DRF) для бэкенда и React с MaterialUI для фронтенда. Я добавил множество полезных функций, включая интеграцию с ISPmanager, которые делают систему удобной и эффективной.

Читать далее

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

Время на прочтение7 мин
Охват и читатели4.7K

Привет, Хабр! Меня зовут Екатерина Саяпина, я Product Owner личного кабинета платформы МТС Exolve. В разных проектах я вижу одну и ту же ошибку: разработчики пытаются внедрить как можно больше разных методов аутентификации. В результате падает безопасность, пользователям сложнее ориентироваться, а разработчикам — управлять и поддерживать продукт.

В этой статье я объясню отличие аутентификации от авторизации, идентификации от верификации и опишу два простых варианта ее реализации с использованием node.js: по SMS и через Telegram.

Читать далее

Ближайшие события

Ищем альтернативу Ngrok в России

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели44K

Мне часто нужно открыть доступ к локальному стенду, вебхуки там и так далее, и раньше я всегда использовал Ngrok. По последнее время пользоваться им становится сложнее, оплатить подписку уже нельзя, а бесплатные функции всё время урезают. По этому решил найти какие есть альтернативы, желательно в России.

Читать далее

«Арендовал телефон — стал фермером»: знакомство с Mobile Farm

Время на прочтение7 мин
Охват и читатели6.3K

Привет, Хабр! На связи Саша, менеджер фермы мобильных устройств в Selectel. Чуть больше года назад я выпустил текст про наши эксперименты во время работы над продуктом, чтобы клиенты могли тестировать ферму удаленно. Тогда мы находились только в начале пути и показали первый вариант решения. Не обошлось без сложностей, которые мы выяснили в том числе благодаря вам. Спасибо, что вписались в авантюру и попробовали себя в роли фермера!

С тех пор многое изменилось: ферма мобильных устройств вышла в релиз, разрослась до 100+ устройств разных моделей и форм-факторов, а в панели управления появился крутой интерфейс. Хочу вкратце рассказать о наших достижениях за последний год и показать, как живет продукт сегодня. Подробности под катом!
Читать дальше →

ХрюХрюКар: как перестать беспокоиться, начать создавать сервисы и обзавестись друзьями

Уровень сложностиПростой
Время на прочтение28 мин
Охват и читатели5.6K

Привет, Хабр!

Мы хотели научиться создавать сервисы от момента возникновения идеи и до этапа эксплуатации, попутно освоив новые технологии.
В итоге получился экспериментальный проект "ХрюХрюКар" — сервис для борьбы с неправильной парковкой, работающий под лозунгом "Хорошие ребята говорят 'Bla-Bla' и не ставят машину на зелёной зоне".

В этой статье мы расскажем, как выбирали проект, на решение каких задач нацелен "ХрюХрюКар", какие технологии мы использовали, какие трудности возникали и что получилось в итоге.

Ну и поделимся всеми исходниками, конечно.

Припарковаться правильно

Atomic CSS Deep Dive

Уровень сложностиСложный
Время на прочтение24 мин
Охват и читатели6.2K

Здравствуйте, товарищи! Меня зовут Валик и в этой статье мы поговорим про подход Atomic CSS в верстке, разработку инструментов и смежные темы.

Кратко вспомним базу - почему Atomic CSS. Рассмотрим популярные решения для работы в этом подходе и сравним их с моим изобретением - mlut. Разберем проблемы известных инструментов и посмотрим, как я решил их в своем. Будут интересные архитектурные решения, технические детали и немного хардкора.

Те, кто занимается версткой, смогут по-другому взглянуть на Atomic CSS и, возможно, взять в работу новый инструмент. А те, кто пишет системный код и тулинг - получить вдохновение и перенять нестандартный опыт.

Читать далее

AstroJS проекты в monorepo с помощью npm workspaces

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели1.2K

image


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


В этом случае полезно иметь монорепу, и я это сделаю без внешних зависимостей только с помощью npm workspaces.

Читать дальше →

Создание кастомного интерактивного одностраничного минисайта с ИИ без платных сервисов

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели1.4K

У любого последователя создания nocode сайтов может возникнуть проблема: хочу создать то‑то, но у сервиса нет этой функции, при этом сервис прекрасный: хорошая цена, обширная функциональность, доступность эксклюзивных функций и т. д. То есть менять на другой нет смысла, но того что я хочу — нет.

Этот рассказ о том, как я пытался решить эту проблему и что из этого вышло.

Спойлер: Получилось

Читать далее

Давайте сделаем крупное приложение на Flask (язык Python)

Время на прочтение18 мин
Охват и читатели18K

На Хабре я часто вижу статьи о реализации тех или иных фич на Python-фреймворках. Я объединил все эти фичи в реальный проект с открытым исходным кодом, чтобы у вас сложилась целостная картина. Мы с вами создадим UX/UI на Figma, напишем фронтенд на HTML, CSS, SASS, Bootstrap и JavaScript, создадим ER-диаграмму в MySQL Workbench, напишем бекэнд на Flask, создадим регистрацию через социальные сети OAuth 2.0 в один клик, используем брокер сообщений и асинхронную очередь Celery для отправки писем на электронную почту, сделаем WYSIWYG-редактор, реализуем полнотекстовый поиск Elasticsearch, закешируем Redis, покроем тестами pytest и запустим в Docker-контейнерах, поговорим о многопроцессности для WSGI-шлюза Gunicorn.

Читать далее

Вклад авторов