Как стать автором
Обновить
Сначала показывать

Как работает память в Python

Время на прочтение7 мин
Количество просмотров66K

Ни одна компьютерная программа не может работать без данных. А данные, чтобы программа имела к ним доступ, должны располагаться в оперативной памяти вашего компьютера. Но что такое оперативная память на самом деле? Когда произносишь это словосочетание, многие сразу представляют «железную» плашку, вставленную в материнскую плату, на которой написано что-то типа 16Gb DDR4 2666MHz. И они, разумеется, правы — это действительно физический блок оперативной памяти, в котором, в итоге, все данные и оказываются. Но прежде, чем стать доступной внутри вашей программы, на память (как и на всё остальное аппаратное обеспечение) накладывается куча абстракций.

Читать далее
Всего голосов 55: ↑53 и ↓2+61
Комментарии10

BFcache

Время на прочтение12 мин
Количество просмотров5K


BFcache — технология оптимизации работы браузера, обеспечивающая мгновенную отдачу ранее просмотренной страницы при помощи кнопок «Вперед» и «Назад». Этот паттерн значительно улучшает пользовательский опыт, особенно у пользователей, обладающих слабенькими устройствами или просматривающих сайт из-под медленных сетей. Люди пользуются кнопкой возврата, возможно, даже чаще, чем вы думаете. А если так, то зачем сразу выбрасывать страницу из памяти браузера, а спустя мгновение тратить трафик на её повторное открытие?

Веб-разработчикам необходимо понимать, как улучшить взаимодействие пользователей с их продуктом. Давайте посмотрим, каким образом для решения этой задачи может быть использован BFcache.
Читать дальше →
Всего голосов 47: ↑47 и ↓0+47
Комментарии13

DRY CSS: Как использовать каждое объявление только один раз

Время на прочтение13 мин
Количество просмотров8.2K

Использование DRY в CSS — это способ максимально избегать повторения в таблицах стилей. Этот подход не панацея, но он достаточно эффективен и является одним из основных методов оптимизации. Поскольку я использовал и изучал его почти 10 лет, в этой статье хочу поделиться своим опытом и знаниями.

А если вам будет интересна тема оптимизации CSS, то я рассказал об основах в моей небольшой книге "CSS Optimization Basics".
Читать дальше →
Всего голосов 38: ↑38 и ↓0+38
Комментарии6

Казнить нельзя помиловать

Время на прочтение4 мин
Количество просмотров12K

Привет! 

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

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

Условия эксперимента следующие:

Вы руководите несколькими командами разработки. Одна из команд (не единственная) состоит из 10 человек, делает классный и востребованный продукт для конечных клиентов. В состав команды входят:

7 инженеров—разработчиков (допустим, все фуллстеки, чтобы убрать из задачи сложности по непересекающимся стекам);

UI/UX-дизайнер;

системный аналитик;

владелец продукта — ведущий специалист от Бизнеса, который определяет приоритеты доработок и пользу от новых фич.

Однажды к вам приходит Владелец продукта и сообщает, что недоволен продуктивностью одного из инженеров. Якобы он делает меньше задач, и аналогичные по сложности доработки другие инженеры выполняют быстрее (в той же кодовой базе).

Вроде бы стандартная история, которая раньше решалась объяснением Владельцу продукта сложности и нетривиальности задачи, которую выполнял конкретный инженер (в отличие от прочих задач, которые кажутся «аналогичными»).

Погрузившись в историю коммитов и побеседовав со всеми инженерами команды (в том числе и с тем, по которому «есть вопросы») вы получаете следующую картину:

Читать далее
Всего голосов 36: ↑31 и ↓5+32
Комментарии157

Telegram-бот как фитнес-менеджер во время пандемии

Время на прочтение6 мин
Количество просмотров6.6K
image

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

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

Сначала всё было хорошо и мест всем хватало, но по мере выхода людей в офис мест больше не становилось, и запись в зал превратилась в попытки поймать момент, когда освободится местечко. Как говорится, лень — двигатель прогресса: почти сразу как, начались трудности с запись, пришла в голову идея создать бота, который будет это делать за меня.
Читать дальше →
Всего голосов 21: ↑20 и ↓1+22
Комментарии6

Внедряем кросс-платформенные пуш-уведомления: дополнительные возможности

Время на прочтение10 мин
Количество просмотров6.4K

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


Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии0

Каверзные вопросы по Python

Время на прочтение4 мин
Количество просмотров39K

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


Читать дальше →
Всего голосов 51: ↑50 и ↓1+59
Комментарии47

Тесты, деньги и техдолг (сказ из жизни одного Java-проекта)

Время на прочтение19 мин
Количество просмотров8.2K


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

Сказ мой о разработке на Java, при этом всё нижеизложенное справедливо и для других языков программирования. От смены языков люди и проблемы в тестировании не меняются.
Отказ от ответственности (aka disclaimer): все персонажи являются вымышленными, и любое совпадение с реально живущими или когда-либо жившими людьми случайно.
Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии15

Модели угроз в дифференциальной приватности

Время на прочтение6 мин
Количество просмотров2.7K


Это перевод второй статьи из серии публикаций по дифференциальной приватности.

На прошлой неделе, в первой статье цикла — «Дифференциальная приватность — анализ данных с сохранением конфиденциальности (введение в серию)» — мы рассмотрели базовые концепции и случаи применения дифференциальной приватности. Сегодня же мы рассмотрим возможные варианты построения систем в зависимости от ожидаемой модели угроз.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии0

Дифференциальная приватность — анализ данных с сохранением конфиденциальности (введение в серию)

Время на прочтение5 мин
Количество просмотров3.7K


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

Что нас побудило начать эту серию статей? В прошлом году NIST (Национальный институт стандартов и технологий США, прим. пер.) запустил Privacy Engineering Collaboration Space — площадку для сотрудничества, на которой собраны open source-инструменты, а также решения и описания процессов, необходимых для проектирования конфиденциальности систем и риск-менеджмента. Как модераторы этого пространства, мы помогаем NIST собирать имеющиеся инструменты дифференциальной приватности в области анонимизации. NIST также опубликовал работу «Privacy Framework: A Tool for Improving Privacy through Enterprise Risk Management» и план действий, описывающий ряд проблемных вопросов, связанных с приватностью данных, в том числе и анонимизацией. Сейчас мы хотим помочь Collaboration Space достичь поставленных в плане целей по анонимизации (де-идентификации). А в конечном счете — помочь NIST развить эту серию публикаций в более глубокое руководство по дифференциальной приватности.
Читать дальше →
Всего голосов 17: ↑16 и ↓1+17
Комментарии3

Как стать фронтенд-разработчиком? Пошаговый гид в мир фронтенда

Время на прочтение14 мин
Количество просмотров237K


Приветствую всех! Меня зовут Пучнина Анастасия, я ведущий разработчик в компании ДомКлик, занимаюсь фронтендом Витрины объявлений. Сегодня я хотела бы поделиться с вами своим мнением на тему того, что важно знать фронтенд-разработчику. Эта статья будет полезна тем, кто только начинает свой путь в разработке, или имеет опыт программирования в другой области и решил перейти на сторону фронтенда.

Содержание:

  1. Кто такой фронтендер и чем он занимается?
  2. С чего начать и что читать? Чек-лист обучения
  3. Какие трудности могут быть? Ошибки в начале пути
  4. Подготовка к собеседованию на Junior-разработчика

Читать дальше →
Всего голосов 29: ↑28 и ↓1+32
Комментарии22

Перечислимый тип и PostgreSQL

Время на прочтение20 мин
Количество просмотров13K


Пролог


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

Читать дальше →
Всего голосов 24: ↑23 и ↓1+27
Комментарии50

Как привести проект в чувство

Время на прочтение5 мин
Количество просмотров14K


Представьте ситуацию, вы первый день на новом для вас проекте, с чего будете начинать? Опишите свои шаги.

Так звучит один из популярных вопросов на собеседовании для фронтенд-разработчиков. Я не знаю, что хочет услышать человек, задающий этот вопрос, но у меня есть ответ на его техническую составляющую и бэклог на несколько месяцев вперед.
Читать дальше →
Всего голосов 35: ↑31 и ↓4+33
Комментарии32

Девять советов по повышению производительности Kubernetes

Время на прочтение11 мин
Количество просмотров12K

Всем привет! Меня зовут Олег Сидоренков, и я работаю в компании ДомКлик руководителем команды инфраструктуры . Эксплуатируем кубик в проде уже больше трёх лет и за это время пережили с ним много разных интересных моментов. Сегодня я поведаю вам, как при правильном подходе, можно выжать из "ванильного" Kubernetes еще больше производительности для вашего кластера. Ready steady go!

Читать далее
Всего голосов 37: ↑35 и ↓2+41
Комментарии1

О полезности contextvars

Время на прочтение5 мин
Количество просмотров28K

В Python есть множество возможностей и языковых конструкций. Какие-то мы используем каждый день, а о некоторых даже опытные программисты узнают с удивлением после нескольких лет работы с языком (привет, Ellipsis!). Совсем недавно вышел Python 3.9, но в этой статье я расскажу о функциональности, представленной еще в версии 3.7. На мой взгляд, она совершенно незаслуженно обделена пристальным вниманием. Речь, конечно же, о contextvars.
Читать дальше →
Всего голосов 39: ↑35 и ↓4+38
Комментарии9

Retry и Circuit Breaker в Kubernetes с помощью Istio и Spring Boot

Время на прочтение7 мин
Количество просмотров9.7K

Каждому service mesh-фреймворку абсолютно необходимо уметь обрабатывать сбои в межсервисном взаимодействии. К ним также относятся таймауты и HTTP-коды ошибок. Я покажу, как с помощью Istio настроить механизмы retries (повторных попыток) и circuit breaker (автоматического выключения). Мы проанализируем взаимодействие между двумя простыми Spring Boot-сервисами, развёрнутыми в Kubernetes. Но вместо основ рассмотрим более сложные вопросы.


Читать дальше →
Всего голосов 23: ↑22 и ↓1+29
Комментарии3

WorkBox: ваш toolkit в мире сервис-воркеров

Время на прочтение6 мин
Количество просмотров15K

Всем привет! 

Меня зовут Святослав. Я лидирую разработку сервисов оформления ипотеки в компании Домклик. Не так давно наша компания взяла курс на внедрение философии Progressive Web Application в наших клиентских сервисах.

Одним из важных аспектов PWA является использование технологии Service Worker API. Однако технология не так проста, как кажется на первый взгляд. Для эффективного использования нужно пройти тернистый путь из квестов, связанных с особенностями жизненного цикла воркеров, неполной поддержкой браузерами, проблемами с политикой кэширования и попутно встречающимися сайд-эффектами (кэширование устаревшего контента, сломанные ссылки и другое).

Workbox - это набор инструментов, предоставляющих высокоуровневый API для конфигурации и работы с такими браузерными технологиями как Service Worker API и Cache Storage API. Инструментарий состоит из набора изолированных модулей, которые помогут сделать ваше приложение "offline-ready". 

Читать далее
Всего голосов 29: ↑29 и ↓0+29
Комментарии6

Мониторинг Node.js-приложения

Время на прочтение7 мин
Количество просмотров13K


Здравствуйте! Меня зовут Ренат Саматов, я возглавляю фронтенд-направление в линейке продуктов Витрина. Большая часть наших проектов рендерится на сервере. Сегодня мы побеседуем об одном из важнейших аспектов SSR-приложения: о мониторинге.

Даже в 2020-м мониторинг Node.js-приложения является непростой задачей. Node.js — среда выполнения JavaScript, однопоточного языка программирования с динамической типизацией. Интерпретатору и среде исполнения предоставлены широкие полномочия, что очень легко может привести к утечке памяти или высокой нагрузке на процессор. Node.js работает асинхронно (псевдопараллельно), однако если одна функция блокирует поток или очередь событий, производительность приложения начинает сильно проседать.

В этой статье я расскажу о том, как контролировать ваше Node.js-приложение и быть уверенным в том, что проблем с утечкой памяти, ресурсов процессора и блокировкой потока не возникает. Мы побеседуем об управлении производительностью приложения (Application Performance Management, APM) и метриках, на которые следует обращать внимание. Погнали!
Читать дальше →
Всего голосов 29: ↑24 и ↓5+23
Комментарии10

А ваш CDN умеет так?

Время на прочтение4 мин
Количество просмотров5.1K


Изображение взято с сайта www.aerotime.aero


Всем привет, меня зовут Семён, я руковожу разработкой партнёрских сервисов в ДомКлике. Недавно, работая над оптимизацией загрузки страниц, я наткнулся на интересную заметку от Cloudflare о приоритизации потоков при работе с CDN. Я заинтересовался и решил проверить, поддерживает ли наш CDN эту опцию стандарта HTTP/2? Тех, кому интересно узнать больше, прошу под кат, где мы рассмотрим механизм приоритизации HTTP/2-потоков и протестируем работу некоторых CDN.

Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии6

Зачем нужна выделенная Frontend Core команда и как мы внедряли дизайн систему

Время на прочтение9 мин
Количество просмотров10K


Всем привет, меня зовут Ростислав, я занимаю должность Front Lead в компании ДомКлик. Хочу поделиться с вами опытом создания Web Core команды и сразу ответить на следующие вопросы:


  • Необходима ли такая команда в компании?

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


  • Выгодно ли внедрять такую команду?

Безусловно. Изначально было сложно измерить и спрогнозировать выгоду от её создания, все расчеты, P&L были на словах, в цифрах — только примерные предположения. Спустя год мы можем посчитать сэкономленное время, профиты, и все расчеты говорят о том, что это было не зря.


  • На долгую перспективу ли эта команда?

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


  • Чем эта команда занимается?

Основное направление — дизайн система, но по ходу её разработки у нас появилось еще много интересных задач.

Читать далее
Всего голосов 28: ↑28 и ↓0+28
Комментарии16

Информация

Сайт
domclick.ru
Дата регистрации
Дата основания
Численность
501–1 000 человек
Местоположение
Россия
Представитель
Dangorche