Search
Write a publication
Pull to refresh
1
0

User

Send message

Доводите свои проекты до конца

Level of difficultyEasy
Reading time6 min
Views29K

Браться за новый проект всегда интересно и волнительно. Возможности безграничны. Нет никакого легаси-кода, тянущего ко дну; на этот раз мы будем принимать только хорошие решения! Начало любого проекта всегда характеризуется вдохновенной продуктивностью. Предстоит ещё так многое сделать. Как можно что-то не сделать даже за такое короткое время? Пограничных случаев не существует. Все дороги доставляют удовольствие. Нет ни тяжёлых решений, ни компромиссов, ни пользователей, ни клиентов. Только вы и бесконечный холст.

Но рано или поздно вдохновение сменяется чем-то больше похожим на… работу. На рутину. Но ведь так будет только с этим проектом, правда? Вы потеряли интерес. Страсть ушла. Он уже не такой интересный, как вы думали. Осталось сделать только самое «скучное».

У вас появляется новая идея, и вы думаете, что эту-то уж точно реализуете!

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

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

Приборы и материалы для чистки зубов (какая щётка лучше, например)

Level of difficultyEasy
Reading time14 min
Views38K
Вот это южнокорейская зубная щётка. Она в два раза длиннее обычной, потому что корейцы привыкли получать максимум эффекта на каждую потраченную вону. Теперь простой вопрос: может, стоит тоже купить такую, раз она больше? Можно будет чистить зубы быстрее или эффективнее?

image

Нет, не стоит. Лучше купить щётку с большим количеством щетинок, хотя бы 5 тысячами штук.

Такие щётки стоят в Москве 500–900 рублей в аптеках. Вот с ними реально одно движение может быть эквивалентно по эффекту 4–5 движениям обычной щёткой.

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

А, может, взять ионную, которая имеет заряд и лучше притягивает всякий мусор? Тоже есть пара исследований.

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

Messaging для чайников. Утилизируем все возможности RabbitMQ на Python

Level of difficultyEasy
Reading time9 min
Views15K

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

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

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

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

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

Поехали

Подойдет ли PostgreSQL вообще всем проектам или нужны альтернативы

Reading time15 min
Views18K

В интернете только и разговоров, что про PostgreSQL и MySQL, но выбор СУБД много шире. В этом материале мы рассмотрим несколько популярных баз данных, разберемся с их спецификацией и сценариями использования, чтобы выйти за рамки привычных решений.
Читать дальше →

Выбор структур данных для самописного текстового редактора

Level of difficultyMedium
Reading time13 min
Views11K

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

Ресурсы


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

  • Build Your Own Text Editor — наверно, самый фундаментальный пост о создании текстового редактора с нуля, который я видел. Это превосходный туториал на случай, если вы хотите начать писать собственный текстовый редактор. Стоит заметить, что в редакторе из этого туториала в качестве внутренней структуры для текста используется, по сути, вектор строк.
  • Text Editor: Data Structures — отличный обзор множества структур данных, которые можно использовать при реализации текстового редактора. (Спойлер: как минимум одна из них будет рассмотрена в моём посте)
  • Плейлист Ded (Text Editor) на YouTube — это потрясающая серия, в которой @tscoding фиксирует процесс создания с нуля текстового редактора. Эти видео стали для меня источником вдохновения.

Зачем?


Если в сети есть так много хороших ресурсов о создании собственного текстового редактора (не говоря уже о том, что уже существует множество феноменальных текстовых редакторов), то зачем я это пишу? На то есть несколько причин:

  1. Я хотел заняться проектом, непохожим ни на один свой прошлый.
  2. Я хотел создать инструмент, которым смогу пользоваться.
  3. Мне всегда хотелось глубже разобраться с созданием собственных структур данных.
Читать дальше →

Вероятностные структуры данных и где они обитают

Level of difficultyMedium
Reading time3 min
Views11K

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

В этой статье я сделаю обзор таких структур данных и расскажу, какую пользу они могут принести на практике. К базовым вероятностным структурам данных можно отнести фильтр Блума, HyperLogLog и Count-Min Sketch.

Читать далее

11 лет хостинга SaaS: история и мой опыт

Level of difficultyMedium
Reading time10 min
Views3.2K
Источник

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

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

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

Debouncer: практический пример использования замыкания

Level of difficultyEasy
Reading time3 min
Views12K

Что такое дебаунсер?

Дебаунсер - это функция-обертка, которая ограничивает число выполнений переданной в нее функции, некоторым промежутком времени.

Практическое применение

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

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

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

Читать далее

Как сэкономить свои нервы и деньги компании на перестроении структуры больших таблиц без простоя в PostgreSQL

Level of difficultyMedium
Reading time7 min
Views8K

Привет! Меня зовут Васильев Виктор, я DBA в компании UIS и CoMagic. В этой статье на реальных примерах расскажу, как можно сэкономить время разработчика, администратора баз данных и ресурсы сервера(ов), используя утилиту pg_rebuild_table. Сопровождая большие, высоконагруженные системы, с бо’льшей вероятностью каждый сталкивался с кейсами, о которых будет рассказано дальше. Некоторые технические подробности пройду без детализации, чтобы сильно не усложнять и не делать статью очень громоздкой. Лучше отвечу на вопросы в комментариях.

Читать далее

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

Level of difficultyEasy
Reading time7 min
Views6.3K

Привет! С вами Миша Наер и Ваня Звягин — дизайнеры нефинансового вовлечения.

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

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

В статье расскажем, как написать полезное понимание задачи, на примере боевых задач из мобильного банка Тинькофф.

Читать далее

Как тестировать не-REST-бекэнд. Часть первая, GraphQL

Level of difficultyMedium
Reading time13 min
Views15K

Привет! Меня зовут Сергей, я более 11 лет в тестировании, и успел за это время перепробовать множество разных подходов в QA — начинал простым тестировщиком, затем строил и развивал всевозможные отделы тестирования и автоматизации, а сейчас работаю в QIWI.

В этой серии постов я хочу поговорить с вами про тестирование трех популярных так называемых не-REST-бэкендов. Самое главное для начала — определиться с терминами, договоримся, что везде в тексте, где я упоминаю REST — речь идет именно о REST HTTP-бэкенде. Наверняка многие из вас с ним работали и вообще неплохо знакомы.

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

Под катом — разбор тестирования первого из этой тройки, GraphQL. Все примеры в посте я делал с помощью Postman, он достаточно популярен и доступен, чтобы вы при желании могли всё быстро в нём повторить.

Читать далее

Я ничего не успеваю

Level of difficultyEasy
Reading time8 min
Views30K
В годы юности я играла в «Ну, погоди» до высоких уровней, на которых яйца катились практически непрерывным потоком. В какой-то момент внимание и ловкость подводили и звучал характерный сигнал: всё, жизни закончились. А при включении можно было увидеть двух четырёхруких (шестилапых?) волков, пытающихся поймать все яйца. Казалось бы — игрушка, которая осталась в прошлом, но её образ нет-нет, да всплывает в голове. Это случается в минуты полной перегрузки делами, когда пытаешься поймать все яйца, закрыть задачи и планы, а все шесть лап опускаются. Приходит усталость: то ли от сделанного, то ли от хронического неуспевания, то ли от переживаний за всё сразу. От этого состояния до выгорания рукой подать. А вокруг все такие эффективные, скоростные, продвинутые или… нет?

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

Параметрический анализ данных

Level of difficultyMedium
Reading time8 min
Views10K


Автор статьи: Артем Михайлов

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

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

Эксклюзив: детализация уровней сотрудников Shopify. Часть 2

Level of difficultyEasy
Reading time14 min
Views2.9K

Публикуем вторую часть материала о новшествах в системе управления персоналом Shopify. Читайте также первую часть.

Читать далее

Поговорим об оптимизирующих компиляторах. Сказ третий: неопределённое поведение и оптимизации

Level of difficultyMedium
Reading time13 min
Views12K

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

Наверное, многие слышали, что неопределённое поведение (undefined behavior, UB) -- постоянный источник разнообразных багов, иногда очень забавных, иногда довольно жутких. Тема также неоднократно освещалась и на Хабре, навскидку раз, два, три (и даже целый тег есть). Однако чаще всего статьи по данной теме посвящены тому, как можно отстрелить себе ногу, голову или случайно сжечь свой жёсткий диск, исполнив какой-нибудь опасный код. Я же намерен сделать акцент на том, зачем авторы языков программирования надобавляли всей этой красоты, и как оптимизатор может её эксплуатировать. Всё будет проиллюстрировано наглядными примерами из LLVM и присыпано байками из собственного опыта, так что наливайте себе чай, располагайтесь поудобнее, и погнали.

На дно

Мой подход к реализации крупных технических проектов

Level of difficultyEasy
Reading time8 min
Views7.3K
Источник

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

Гибкая разработка прототипа на Python

Level of difficultyEasy
Reading time5 min
Views3.9K

Всем привет!
Меня зовут Дмитрий, и я системный аналитик в отделе прототипирования в Первой грузовой компании. Наша команда помогает создавать новые цифровые продукты в компании и оптимизировать бизнес-процессы. Для этого мы разрабатываем прототипы/PoC-продукты для быстрого тестирования гипотез. Чем я занимаюсь: общение с заказчиком, анализ и описание требований к продукту, сопровождение процесса создания прототипа, разбор кейсов. Сегодня я поделюсь лайфхаками гибкой разработки прототипа.

Читать далее

В изоляции. История появления и развития контейнеров

Level of difficultyEasy
Reading time9 min
Views10K


У всего на свете есть своя история. В некоторых случаях она полна неожиданных поворотов, как сюжет детективного романа, в других довольно-таки проста и незатейлива. Имеется история и у двух самых популярных систем контейнеризации: Docker и Kubernetes. О появлении и эволюции развития этих востребованных технологий рассказывает сегодняшняя статья.
Читать дальше →

Убийство разработки: опыт Selectel

Reading time8 min
Views34K

Итак, я зашел в раздел с постами и там увидел диаграмму (пик рилейтед).

А под ней ссылка на статью «Разработчики - в стойло, менеджеры в - башню из слоновой кости: создаем касту избранных в 4 шага».

Фейл за фейлом

Диаграммы без боли и страданий: PlantUML

Level of difficultyMedium
Reading time9 min
Views104K

Системный аналитик всегда и везде сталкивается с бесконечным количеством диаграмм разного вида, с нотациями (правилами), чтобы нарисовать данные диаграммы и с бесконечным количеством инструментов для их описания. Но мало кто говорит о таком инструменте, как PlantUML. 

Лично мне завесу тайны приоткрыл Альфа-Банк, здесь документация ведется рядом с кодом, и схемы логичнее описывать тоже кодом. Но это не так страшно и не так сложно (почти) как кажется. Давайте я приоткрою ящик Пандоры и сниму кармическое проклятье с  этого инструмента. 

Читать далее

Information

Rating
Does not participate
Registered
Activity