Как стать автором
Обновить
0.63

Клиентская оптимизация *

Делаем сайты удобнее и приятнее

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

Тайное знание: синхронизация, многопоточность, очереди

Уровень сложностиСложный
Время на прочтение16 мин
Количество просмотров8.8K

Может ли быть так, что в большинстве популярных языков отсутствует самый эффективный механизм синхронизации? Что инженеры Microsoft, Oracle и мн. др., не говоря уже об остальных, вплоть до 2024 года так и не догадались, как же эффективнее всего синхронизировать доступ к данным? А все что знает абсолютное большинство программистов, в том числе топовых IT компаний (за исключением редких разработчиков платформ Apple) о синхронизации — ошибочно? Сегодня попробуем разобраться.

Эта статья подразумевает, что вы уже имеете базовое представление о механизмах синхронизации. Код написан на C#, но конкретный язык особого значения не имеет.

Читать далее
Всего голосов 21: ↑10 и ↓11-1
Комментарии73

Новости

INP: что это и зачем с этим работать

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров1.9K

С 12 марта 2024 года показатель FID (First Input Delay) из семейства Core Web Vitals заменён новой метрикой — INP (Interaction to Next Paint), которая отражает скорость отклика сайтов. Необходимость такой замены, среди прочего, подтверждают данные об использовании Chrome: согласно им, 90% времени пользователь проводит на странице после её загрузки. Таким образом, важно тщательно измерять скорость реагирования сайта на протяжении всего жизненного цикла страницы. В этом и помогает метрика INP.

Меня зовут Коновалов Илья. Я Performance Engineer и Front-end Developer в медицинской компании «СберЗдоровье». В этой статье я расскажу, что такое INP и как работать с новой метрикой.

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

ARR: что это такое и чем он полезен бизнесу

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

Работая в условиях жесткой конкуренции и турбулентной экономики, бизнесу постоянно необходимо искать новые методы и подходы для увеличения дохода. Для тех, кто работает с клиентами по подписочной модели, одним из таких инструментов является ARR (Annual Recurring Revenue), который помогает рассчитать ежегодную повторяемую выручку,  оценить долгосрочный потенциал сделки, эффективность работы сейлз-команды и маркетинговых кампаний.

Для полноты картины бизнесу также необходимы расчеты метрик юнит-экономики, которые являются взаимодополняющими инструментами ARR  — CAC (Customer Acquisition Cost), Retention cost, Gross Profit, LTV (Lifetime Value), Payback period. Все это позволяет достоверно оценить эффективность каждого отдельного продукта или услуги компании.

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

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

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

Челлендж по обработке миллиарда строк на Go: от 1 минуты 45 секунд до 4 секунд

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров22K

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

Я немного опоздал, соревнования проводились в январе. И на Java. Меня не особо интересует Java, зато давно интересует оптимизация кода на Go.

Этот челлендж был очень прост: обработать текстовый файл названий метеорологических станций и температур, и для каждой станции вывести минимальное, среднее и максимальное значение. Чтобы упростить задачу, было ещё несколько ограничений, однако я проигнорировал те, что относятся только к Java.

Читать далее
Всего голосов 66: ↑64 и ↓2+62
Комментарии20

Истории

Как удешевить авторизацию по максимуму, если в вашей системе миллионы пользователей: кейс компании UDS

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

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

Читать далее
Всего голосов 4: ↑0 и ↓4-4
Комментарии1

Обрезать нельзя сжать. Как ускорить метрики проекта без больших вложений

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

Мы не раз читали на Хабре, почему важно иметь быстрые сайты, как это влияет на посещаемость, время на странице, глубину и прочее. Но каждый раз это инструкции о том, как поменять инфраструктуру серверов, потратить десятки часов на разработку и ощутимое количество денег. В случае больших корпораций, конечно же, такие действия оправданы. А маленькие стартапы обычно таким и вовсе не занимаются, фокусируясь на других задачах. Мы же оказались где-то посередине. У нас были плохие показатели, но времени на какие-то значительные изменения не было. И несмотря на наличие ресурсов мы решили пойти самым простым путём и, как и гласит закон Парето, получить 80% результата за 20% усилий. Меня зовут Савичев Игорь, я работаю в Самолете и мы занимаемся цифровизацией строительства на российском рынке. Мы развиваем IT-технологии в разных направлениях от девелопмента до финтеха. И сегодня я расскажу, можно ли сделать себе хорошо, быстро и не очень дорого.

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

AI чат боты — хайп или реальная польза. Примеры интеграции умных помощников в  CRM и ERP системы

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

Всем уже известно, что чат-боты дают возможность быстро и эффективно выстраивать коммуникацию с клиентами, но их истинный сила раскрывается при интеграции с корпоративными системами управления, а именно CRM (Customer Relationship Management) и ERP (Enterprise Resource Planning), HRM (Human Resource Management), интернет магазином и любой другой открытой системой.

Читать далее
Всего голосов 5: ↑4 и ↓1+3
Комментарии3

Книга «Software Dynamics: оптимизация производительности программного обеспечения»

Время на прочтение11 мин
Количество просмотров2.6K
image Привет, Хаброжители!

Программное обеспечение — начиная с мобильных и облачных приложений, заканчивая видеоиграми и системами управления автономным транспортом — становится все более и более ограниченным по времени. Оно должно обеспечивать надежные результаты плавно, последовательно и практически мгновенно. Неспособность гарантировать это приведет к недовольству потребителей, а в некоторых случаях даже может создать риск для человеческих жизней. Когда комплексное ПО работает плохо или дает сбой, инженерам необходимо выявить и исправить первопричины. Задача непростая, и для ее решения существовало не так уж много инструментов. Ричард Л. Сайтс, эксперт по анализу производительности, решает задачу напрямую, предлагая действенные способы и профессиональные инструменты для выявления динамики сложных, ограниченных по времени программ, а также для повышения надежности и устранения проблем с производительностью.

За плечами автора несколько десятков лет практической работы и обучения профессиональных разработчиков. Он знакомит читателя с принципами и техниками, которые применимы в любой среде, начиная со встраиваемых устройств и заканчивая дата-центрами, и подкрепляет их примерами на основе подключенных по Ethernet систем x86 и ARM под управлением Linux. Опираясь на полученную с помощью KUtrace информацию, читатели смогут использовать конкретные решения, а не просто перебирать техники, такие как отключение кэша или ядер.
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии1

Как мы уложили компьютерный мультик в 8 кБ

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

В ноябре 2022 года мы задали себе задачку: можно ли запрограммировать анимацию, воспроизводимую в режиме реального времени как обычный короткий мультик, но с условием, что файл должен быть не больше 8 килобайт. При этом цель считалась бы достигнутой, если бы у нас получилась нормальная графика, анимация, режиссёрская и операторская работа, а ещё подходящая музыка. Да, 8 килобайт — на секундочку, в два с лишним раза меньше этого поста. Мы не представляли, насколько это вообще возможно, так что оставалось только попробовать.

В апреле 2023 года, спустя несколько месяцев работы, мы, наконец, выкатили ленту Барашек и цветок. Можете сами скачать его или проследить на YouTube ход выполнения программы.

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

Читать далее
Всего голосов 92: ↑90 и ↓2+88
Комментарии32

Создание и проведение опроса клиентов, пошаговая инструкция

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

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

Целевая аудитория этой статьи – профессионалы в сфере маркетинга, HR, управления клиентским опытом, а также специалисты по социологическим и маркетинговым исследованиям. Если вы стремитесь глубже понять своих клиентов, повысить уровень их удовлетворенности и лояльности, то здесь вы найдете ценные инсайты и практические рекомендации, основанные на реальном опыте и передовых методиках в области исследований.

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

Читать далее
Всего голосов 17: ↑13 и ↓4+9
Комментарии2

Как уменьшить размер бандла раз и навсегда: приемы, метрики, мониторинг

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров6.1K

Существует довольно много статей на тему оптимизации размера бандла, но большинство из них говорят об узких деталях или подходах к уменьшению размера бандла. Либо наоборот — совсем широко, с общими советами.
В этой статье я постараюсь рассказать как комплексно подойти к оптимизации бандла существующего или нового приложения и как не допустить дальнейшего раздувания сборки.

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

Собираем автономную игру на C# в 2 килобайтах

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

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

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

Размер важен только при передаче: если вы передаёте программу по проводам, мегабайты равны секундам. По быстрому соединению на 100 Мбит в лучшем случае можно передать 12 МБ в секунду. Если на другом конце провода находится человек, ожидающий завершения скачивания, то разница между пятью и одной секундой может существенно повлиять на его ощущения.

Человек может зависеть от времени передачи как напрямую (пользователь, скачивающий программу по сети), так и косвенно (serverless-сервис, отвечающий на веб-запрос).

Люди обычно воспринимают всё, что длится меньше 0,1 секунды, как мгновенное, 3 секунды — это примерно тот предел, после которого прерывается состояние потока пользователя; а уж 10 секунд удержать внимание пользователя очень сложно.

Хотя уменьшение сегодня уже необязательно, оно всё равно лучше.

Эта статья задумывалась как эксперимент, позволяющий выяснить, каким может быть минимальный размер полезного автономного исполняемого файла C#. Могут ли приложения на C# достичь размеров, при которых пользователи будут ощущать их скачивание как мгновенное? Позволит ли это использовать C# там, где он не используется сейчас?
Читать дальше →
Всего голосов 128: ↑127 и ↓1+126
Комментарии34

Сколько ядер CPU можно использовать параллельно в Python?

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

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

Как же проверить, сколько ядер есть у компьютера? И действительно ли это хороший совет?

Оказывается, на удивление сложно определить, сколько потоков выполнять:

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

- Хуже того, из-за таких функций CPU, как параллельность на уровне команд и одновременной многопоточности (Hyper-threading в CPU Intel), количество ядер, которое можно эффективно использовать, зависит от того кода, который напишете вы!

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

Читать далее
Всего голосов 25: ↑22 и ↓3+19
Комментарии33

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

Продукт 2.0: разработать стратегию, чтобы в неё поверили, и не сойти с ума

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров3.9K

Я работаю в банке, и каждый год мои Product Owners разрабатывают и защищают перед руководством и заказчиками стратегию развития продукта на следующий год. 

Это обязательный ритуал, потому что без этого:

а. Не будет денег на следующий год.
b. Непорядочно в целом называть себя РО и не иметь стратегии развития собственного продукта. 

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

Читать далее
Всего голосов 12: ↑11 и ↓1+10
Комментарии8

std fs в Rust медленнее, чем Python? Нет, это аппаратный баг

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров9.8K

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

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

Где приятнее покупать автозапчасти: сравнение интернет-магазинов из афтермаркета с «Озоном» и друг с другом

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

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

Читать далее
Всего голосов 9: ↑4 и ↓5-1
Комментарии10

Эффективность на максимум: Микрооптимизации в Golang

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров5.3K

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

Каждая миллисекунда имеет значение, микрооптимизация это must have, особенно на языке Go.

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

Читать далее
Всего голосов 33: ↑18 и ↓15+3
Комментарии11

ТОП-5 антисоветов для владельцев бизнеса, которые не хотят зарабатывать деньги

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.7K

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

Читать далее
Всего голосов 4: ↑1 и ↓3-2
Комментарии2

10 советов для создания опросов, которые люди захотят заполнить

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров2.4K

Привет, Хабр! Я работаю в компании Testograf, где занимаюсь анализом данных и помогаю клиентам делать хорошие опросы. Все мы знаем, что опросы — это отличный способ узнать мнение людей, будь то ваши сотрудники, клиенты или даже случайные прохожие. Но как сделать так, чтобы люди действительно захотели ответить на ваши вопросы, и не убежали после первой же страницы анкеты?

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

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

Читать далее
Всего голосов 3: ↑1 и ↓2-1
Комментарии5

Service Workers против медленного интернета: Кэширование и улучшение UX

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

Что может быть хуже чем плохой интернет ?

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

Одержать победу над медленным интернетом
Всего голосов 4: ↑4 и ↓0+4
Комментарии2
1
23 ...