Pull to refresh
1
0
Власов Сергей @kets

User

Send message

Как прогнозировать время выполнения задач

Level of difficultyHard
Reading time20 min
Views30K

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

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

Читать далее
Total votes 70: ↑68 and ↓2+66
Comments57

Не Unity единым…

Level of difficultyEasy
Reading time15 min
Views36K

Игры бывают разные, большие и маленькие, триA и супер инди, в компаниях с сотнями разработчиков и что создаются самородками-одиночками. Редко их делают с нуля и пишут код только игры, чаще пишут игровые тулы, редактор и параллельно пишут саму игру. За всей этой многомиллиардной индустрией стоит код, много кода, очень много кода. Игровые движки и фреймворки – мощные инструменты, которые помогают разработчику творить его идеи и создавать увлекательные игровые миры. Это каркас, на котором строятся все игровые вселенные, они включают в себя сотни инструментов, библиотек и ресурсов, позволяя разработчикам превратить строчки кода в театр для одного зрителя.

Существует более сотни игровых движков, каждый из них содержит как минимум одну фичу которой нет ни в каком другом. Всех возможностей вместе нет ни в одном, и это прекрасно - иначе бы такой движок монополизировал рынок. Хм, Unreal5 ты ли это? Иногда полезно пробежать по release notes движка, чтобы оставаться в курсе последних новостей. Возможно вы разрабатываете свое решение и эта статья натолкнет вас на новые идеи. Готовы узнать что ваша любимая игры была сделана не на Unity, а на православном SDL?

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

Domain Driven Design на практике

Reading time12 min
Views265K
Эванс написал хорошую книжку с хорошими идеями. Но этим идеям не хватает методологической основы. Опытным разработчикам и архитекторам на интуитивном уровне понятно, что надо быть как можно ближе к предметной области заказчика, что с заказчиком надо разговаривать. Но не понятно как оценить проект на соответствие Ubiquitous Language и реального языка заказчика? Как понять, что домен разделен на Bounded Context правильно? Как вообще определить используется DDD в проекте или нет?

Последний пункт особенно актуален. На одном из своих выступлений Грег Янг попросил поднять руки тех, кто практиукует DDD. А потом попросил опустить тех, кто создает классы с набором публичных геттеров и сеттеров, располагает логику в «сервисах» и «хелперах» и называет это DDD. По залу прошел смешок:)

Как же правильно структурировать бизнес-логику в DDD-стиле? Где хранить «поведение»: в сервисах, сущностях, extension-методах или везде по чуть-чуть? В статье я расскажу о том, как проектирую предметную область и какими правилами пользуюсь.
Читать дальше →
Total votes 32: ↑28 and ↓4+24
Comments18

Борьба с  TOAST или будущее JSONB в PostgreSQL

Reading time9 min
Views21K

В PostgreSQL есть два типа данных: JSON и JSONB. Первый формат является текстовым хранилищем, в котором json хранится "as is",  второй — бинарным, в нем ключи отсортированы  (сначала по длине ключа, а потом по его названию), дубликаты удалены, а пробелы удалены.

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

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

Читать далее
Total votes 58: ↑57 and ↓1+56
Comments10

Повторил клип Foo Fighters из LEGO

Reading time5 min
Views4.3K

Всем привет, это Денис Вебер.

Foo Fighters - одна из самых популярных рок групп современности и одна из моих любимых групп. Посмотрев сотый раз клип на песню Pretender, я подумал: "А как бы выглядело это видео, если бы участники и декорации были из LEGO?".

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

Читать далее
Total votes 22: ↑20 and ↓2+18
Comments9

Что «под капотом» у LinkedList?

Reading time5 min
Views129K
Добрый день, хабрачитатели!

Как работает ArrayList, вполне понятно. Есть много статей по этому поводу, часть из них иллюстрированы замечательными картинками, так что даже новичкам становится сразу все ясно. К лучшим статьям на эту тему я отношу «Структуры данных в картинках. ArrayList», написанную tarzan82.

Этот же автор описывает принципы работы LinkedList, однако часть данных устарела еще с выходом Java 7, поэтому попытка детально разобраться, что происходит внутри этой коллекции, по рисункам tarzan82 уже сложно. Да и в других источниках я не встретила понятных картинок, потому и возникла идея написать эту статью.
Читать дальше →
Total votes 22: ↑16 and ↓6+10
Comments45

«Ленивый сахар» PostgreSQL

Reading time7 min
Views37K

SQL - декларативный язык - то есть вы описываете "что" хотите получить, а СУБД сама решает, "как" именно она будет это делать. Некоторые из них при этом позволяют им "подсказывать", как именно лучше выполнять запрос, но PostgreSQL - нет.

Тем не менее, "синтаксический сахар" некоторых языковых конструкций позволяет не только писать меньше кода (учите матчасть!), но и добиться, что ваша база будет делать часть вычислений "лениво", только при фактической необходимости.

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

Как приручить DDD. Часть 2. Практическая

Reading time16 min
Views23K

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

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

Читать далее
Total votes 24: ↑22 and ↓2+20
Comments3

Как работает оптимизатор PostgreSQL при большом количестве таблиц в запросе

Reading time9 min
Views19K
SQL — это декларативный язык программирования, используемый для создания и манипулирования объектами в реляционных СУБД. Этот язык описывает что должно быть получено, но не описывает как это получить. Программист пишет запрос и (чаще всего) хочет получить результат от СУБД максимально быстро.

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

Поэтому оптимизатор — это ключевая часть СУБД, один из самых сложных элементов всей системы.

Для демонстрации работы оптимизатора практически во всех наших (и чужих) примерах на эту тему используются довольно скромные параметры: две-три таблицы, пара JOIN-ов, миллисекунды на выполнение запросов. А что будет, если загрузить оптимизатор десятками таблиц за раз? Как разные конфигурационные параметры влияют на производительность запросов с сотней JOIN-ов? И переживет ли это среднестатистический рабочий ноутбук? Ответы на эти вопросы — со схемами и графиками — вы найдете под катом!
Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments4

Строковые алгоритмы на практике. Часть 2 — Алгоритм Бойера — Мура

Reading time13 min
Views20K

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

Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments8

Нейронная сеть считает лес кругляк и распознает автомобильные номера. Как это сделано?

Level of difficultyMedium
Reading time9 min
Views15K

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

Необходимая подготовка читателя — должно быть общее представление о компьютерном зрении (computer vision) и нейронных сетях. Здесь не будет описаний, что такое сверточная нейронная сеть и т.п., статей по таким основам найдете много на хабре (вот хорошая Глубокое обучение для новичков: распознаем изображения с помощью сверточных сетей). В то же время, совсем новички могут получить представление, какие знания и компетенции нужны для решения подобных задач.

Читать далее
Total votes 28: ↑27 and ↓1+26
Comments21

«Импортозамещаем» анализ планов PostgreSQL

Reading time4 min
Views10K

Вчера Hubert 'depesz' Lubaczewski закрыл доступ с российских IP ко всем своим сайтам, включая широко известный визуализатор планов PostgreSQL-запросов explain.depesz.com.

Но это не беда, потому что в компании "Тензор" мы разработали сервис explain.tensor.ru, функционал которого гораздо обширнее, и которым можете воспользоваться и вы.

Читать далее
Total votes 42: ↑41 and ↓1+40
Comments8

Оформляем README-файл профиля на GitHub

Reading time14 min
Views201K

Летом 2020 года GitHub позволила пользователям создавать персональные README-файлы и с их помощью кастомизировать свои профили. Сама платформа при создании подобного файла предлагает уже готовый шаблон, в который можно вписать свои данные. Но о какой кастомизации может идти речь, если у всех будут одинаково оформленные профили? За почти два года сообщество придумало множество различных способов выделиться и особенно оформить свою страницу на GitHub.

Читать далее
Total votes 77: ↑75 and ↓2+73
Comments25

«Зожный» перекус: безопасные перекусы для работников умственного труда

Reading time7 min
Views52K

Когда много работаешь мозгом и не слишком часто поднимаешь пятую точку с «компьютерного» кресла — лишний вес и прочие проблемы неправильного питания часто становятся проблемой. Знаю по себе не понаслышке: четыре года напряжённой и не всегда нормированной аналитической работы в своё время превратили меня из 75-килограммового парня в 105-килограммового увальня. Потом пришлось заморачиваться, чтобы за полгода сбросить 20-25 лишних кило.

А ведь когда часами работаешь над сложной или хотя бы объёмной задачей с полным погружением — организм требует «жрааать» не хуже кота в пять утра. И поесть полноценно не всегда получается. Значит, кидаем в рот то, что позволяет заглушить чувство голода без отрыва от монитора. И часто кидаем мы туда разные отнюдь не душе- и тушкоспасительные вещи. Шоколадные батончики, быстрорастворимая лапша, чипсы, пиццу, бургеры… ну вы знаете. Вкусно, голод глушит, стресс тоже, настроение поднимает — только вот (trigger warning!) на пользу это не идёт. И чем дальше, тем больше.
Читать дальше →
Total votes 93: ↑74 and ↓19+55
Comments177

Новый запуск курса Natural Language Processing

Reading time2 min
Views8.2K

TL;DR: Этой осенью сообщество Open Data Science и компания Huawei делают новый запуск курса. Регистрироваться на сайте ODS.ai

посмотреть, что внутри
Total votes 10: ↑10 and ↓0+10
Comments7

Автоматический анализ документов

Reading time6 min
Views13K

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

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

Теория графов. Термины и определения в картинках

Reading time5 min
Views164K

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

Граф - это топологичекая модель, которая состоит из множества вершин и множества соединяющих их рёбер. При этом значение имеет только сам факт, какая вершина с какой соединена.

Теория графов
Total votes 20: ↑18 and ↓2+16
Comments8

OpenID Connect простыми словами

Reading time6 min
Views86K

Некоторое время назад я получил довольно непростую задачу написать техническое задание для нашей службы поддержки на тему OpenID Connect (OIDC).


Тут же я понял, что хоть я и знаком с OAuth и SAML, я не знал практически ничего об OpenID Connect (кроме того, что благодаря этому Pokemon Go получает сведения о моем профиле сразу после авторизации в Google+).


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

Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments1

Извлечение троих: Как найти пасхалки в книгах Стивена Кинга с помощью NLP алгоритмов

Reading time7 min
Views12K

У нас было 17 романов Стивена Кинга, много свободного времени, навыки анализа данных Python и безудержная любовь к поиску пасхалок. Вот, что из этого вышло.

Читать далее
Total votes 24: ↑22 and ↓2+20
Comments8

Полное визуальное руководство/шпаргалка по CSS Grid

Reading time7 min
Views341K

Сегодня мы с вами рассмотрим свойства CSS Grid (далее также — Грид), позволяющие создавать адаптивные или отзывчивые макеты веб-страниц. Я постараюсь кратко, но полно объяснить, как работает каждое свойство.


Что такое CSS Grid?



Грид — это макет для сайта (его схема, проект).


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


Вот простой пример макета сайта, созданного с помощью Грида.

Читать дальше →
Total votes 41: ↑40 and ↓1+39
Comments4
1
23 ...

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity