Pull to refresh
-6
0
Send message

Алгоритмы заливки многоугольников

Reading time4 min
Views47K
Сегодня прочитал интересную статью по алгоритмам заливки и решил немного дополнить её. Если в оригинальной статье говорилось о заливке произвольных областей, то мы с вами поговорим о частном, но более распространённом случае заливке многоугольников.
В этом топике мы рассмотрим три группы алгоритмов:
  • Алгоритм закраски с затравкой
  • Алгоритмы со списком рёберных точек
  • Алгоритмы XOR

Читать дальше →
Total votes 51: ↑50 and ↓1+49
Comments7

Психология в UX/UI дизайне: 10 принципов, повышающих вовлеченность и удержание

Level of difficultyMedium
Reading time3 min
Views4.1K

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

Читать далее
Total votes 16: ↑14 and ↓2+12
Comments5

Как я собрал красивое ведро для гидропоники

Level of difficultyEasy
Reading time10 min
Views17K

Несколько лет назад я писал пост о том, как вырастить на гидропонике крайне острый Trinidad Scorpion CARDI. Он, при его живительных 1.2 миллионах единиц Сковилла, на неподготовленных перцеедов производит впечатление эквивалентное облизыванию паяльника.

Пока Монстр плодоносил и радовал в течение нескольких лет, я продумывал более удобный вариант гидропонной установки, который было бы не стыдно показывать в приличном интерьере гостям. Классический вариант “юного гидропониста” из канализационных труб, алюминиевого скотча и вороха булькающих трубочек был с негодованием забракован женой. Я разработал и протестировал несколько прототипов с 3D-печатными элементами, но потом проект был поставлен на паузу.

Окончательно доделать его получилось после того, как внезапно выяснилось, что коллеги тоже фанаты острого. Мы собрались в нашей виртуальной “курилке”, запилили проект со всеми положенными milestone в Asana и начали тестировать. Садитесь поудобнее, сегодня будет лонгрид-оффтопик, про то, как толпа DevOPS из WiseOPS пилила совместный хобби проект для украшения офиса. Да, мы заняты не только работой) А еще я поделюсь подробной инструкцией и файлами для 3D-печати.

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

Читать далее
Total votes 89: ↑99 and ↓-10+109
Comments142

Нужно ли устанавливать радиаторы на NVMe-накопители?

Reading time7 min
Views102K


За последние несколько лет стоимость 2,5-дюймовых твердотельных накопителей снизилась практически до уровня жестких дисков. Теперь на смену SATA-решениям приходят NVMe-накопители, работающие по шине PCI Express. За период 2019-2020 года мы также наблюдаем снижение стоимости на эти устройства, так что на текущий момент они незначительно дороже своих SATA-собратьев.

Главное же их преимущество в том, что такие хранилища данных намного компактнее (как правило, это типоразмер 2280 — 8×2,2 см) и быстрее традиционных SATA SSD. Впрочем, есть и нюанс: с расширением пропускной способности и ростом скорости передачи данных, увеличивается и нагрев компонентной базы накопителей, работающих по протоколу NVMe. В особенности, ситуация с сильным нагревом и последующим троттлингом типична для устройств бюджетных брендов, которые вызывают у пользователей больший интерес своей ценовой политикой. Вместе с этим добавляется головная боль по части организации грамотного охлаждения в системном блоке: в ход идут дополнительные кулеры и даже специальные радиаторы для отвода тепла от чипов M.2-накопителей.
Читать дальше →
Total votes 25: ↑23 and ↓2+21
Comments37

Масляное охлаждение корпуса (продолжение)

Reading time3 min
Views132K
Некоторое время назад я проделал эксперимент по охлаждению компонентов компьютера путем погружения системного блока в растительное масло. В этой статье я уже поделился опытом охлаждения маслом при полной нагрузке компьютера. Система охлаждения была пассивной — т.е. масло не подвергалось принудительному охлаждению, а лишь рассеивало тепло через стенки аквариума. Это привело к тому, что за 3 часа работы (нагрузка 100%, частота 850МГц — штатная) видеопроцессор разогрелся с 55 до 80 градусов (при разгоне частоты до 1000МГц время нагрева до 80 градусов сократилось втрое). Масло в аквариуме, при этом, прогрелось с комнатной температуры до 58 градусов. Я снял нагрузку и оставил компьютер включенным — за 2 часа температура масла упала до 50 градусов и зафиксировалась. Таким образом я определил порог эффективности системы охлаждения в режиме простоя — и он меня не устроил. 50 градусов для некоторых компонентов — это не самая комфортная температура.
Поэтому я решил доработать конструкцию и осуществить циркуляцию масла через радиатор
Total votes 83: ↑70 and ↓13+57
Comments73

Краткое введение в тензоры

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

Сейчас я попытаюсь дать совсем простое введение в тензоры. Я не претендую на математическую строгость, поэтому некоторые термины могут употребляться не совсем корректно.
Читать дальше →
Total votes 39: ↑34 and ↓5+29
Comments26

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

Level of difficultyEasy
Reading time6 min
Views7.1K

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

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

Погнали!
Total votes 38: ↑39 and ↓-1+40
Comments3

Удивительная производительность параллельных алгоритмов C++17. Миф или Реальность?

Reading time8 min
Views21K
Добрый вечер!

От нашего курса «Разработчик C++» предлагаем вам небольшое и интересное исследование про параллельные алгоритмы.

Поехали.

С появлением параллельных алгоритмов в C++17, вы с легкостью можете обновить свой “вычислительный” код и получить выгоду от параллельного выполнения. В этой статье, я хочу рассмотреть STL алгоритм, который естественным образом раскрывает идею независимых вычислений. Можно ли ожидать 10-кратного ускорения при наличии 10-ядерного процессора? А может больше? Или меньше? Поговорим об этом.

Введение в параллельные алгоритмы

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

Вглубь std::unordered_map: магические числа

Level of difficultyEasy
Reading time3 min
Views8.6K

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

Эта статья о том, каким странным бывает легаси - и куда же всё-таки копать, чтобы понять, что происходит. stdlibc++ опровергает даже стандартные математические понятия. Как хорошо, что это хотя бы опенсорс....

Узнать всю правду
Total votes 22: ↑20 and ↓2+18
Comments15

Преобразование Уолша-Адамара

Level of difficultyHard
Reading time11 min
Views12K

На сайте hackerrank.com есть отличная задача. По заданному массиву short[] A; найти максимальное количество его подмассивов, xor элементов которых будет одинаковым. Сам этот xor тоже нужно найти.

Максимальная длина массива равна 105, так что квадратичный алгоритм не укладывается в лимит по времени исполнения. Я в своё время с этой задачей не справился и сдался, решив подсмотреть авторское решение. И в этот момент я понял почему не справился — автор предлагал решать задачу через дискретное преобразование Фурье.

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

Имитация рисования от руки на примере RoughJS

Reading time8 min
Views11K
RoughJS это маленькая (<9 КБ) графическая библиотека JavaScript, позволяющая рисовать в эскизном, рукописном стиле. Она позволяет рисовать на <canvas> и с помощью SVG. В этом посте я хочу ответить на самый популярный вопрос о RoughJS: как это работает?


Немного истории


Очарованный изображениями рукописных графиков, схем и эскизов, я, как истинный нерд, задался вопросом: можно ли создавать такие рисунки с помощью кода, как можно точнее имитировать рисунок от руки, в то же время сохранив возможность программной реализации? Я решил сосредоточиться на примитивах — линиях, многоугольниках, эллипсах и кривых, чтобы создать целую библиотеку 2D-графики. На её основе можно создавать библиотеки и графики для рисования графиков и схем.

Вкратце изучив вопрос, я нашёл статью Джо Вуда и его коллег под названием Sketchy rendering for information visualization. Описанные в ней техники стали основой библиотеки, особенно в рисовании линий и эллипсов.

В 2017 году я написал первую версию библиотеки, которая работала только на Canvas. Решив задачу, я потерял к ней интерес. Год спустя я много работал с SVG, и решил адаптировать RoughJS для работы с SVG. Также я изменил структуру API, сделав её более простой, и сосредоточился на простых векторных графических примитивах. Я рассказал о версии 2.0 на Hacker News и внезапно она обрела огромную популярность. В 2018 году это был второй по популярности пост ShowHN.
Читать дальше →
Total votes 46: ↑46 and ↓0+46
Comments4

Парамагноны и магноны: энергия из тепла

Reading time8 min
Views7.8K


Оглянитесь вокруг, что вы видите? Дома, машины, деревья, людей и т.д. Все куда-то бегут, все куда-то спешат. Город, напоминающий муравейник, особенно в час пик, всегда наполнен движением. И такая же картина наблюдается не только в «большом» мире, но и на атомарном уровне, где неисчислимое множество частиц движутся навстречу друг другу, сталкиваются, отдаляются и вновь находят нового партнера для своего невероятно сложного и порой столь кратковременно танца. Отбросим в сторону утрирование и поэтичность и поговорим сегодня об исследовании, в котором международная команда ученых из университета штата Северная Каролина, Ок-Риджской национальной лаборатории, университета штата Огайо и Китайской академии наук доказали, что парамагноны могут преобразовывать разницу температур в электрическое напряжение. Что такое парамагноны, в чем их уникальная особенность, как ученые реализовали свой необычный «генератор» и насколько он эффективен? Об этом мы узнаем из доклада исследовательской группы. Поехали.
Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments15

Стандарт C++20: обзор новых возможностей C++. Часть 4 «Ranges»

Reading time10 min
Views25K


25 февраля автор курса «Разработчик C++» в Яндекс.Практикуме Георгий Осипов рассказал о новом этапе языка C++ — Стандарте C++20. В лекции сделан обзор всех основных нововведений Стандарта, рассказывается, как их применять уже сейчас, и чем они могут быть полезны.

При подготовке вебинара стояла цель сделать обзор всех ключевых возможностей C++20. Поэтому вебинар получился насыщенным. Он растянулся почти на 2,5 часа. Для вашего удобства текст мы разбили на шесть частей:

  1. Модули и краткая история C++.
  2. Операция «космический корабль».
  3. Концепты.
  4. Ranges.
  5. Корутины.
  6. Другие фичи ядра и стандартной библиотеки. Заключение.

Это четвёртая часть, рассказывающая о новом модуле стандартной библиотеки, — Ranges.
Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments62

Как снимался фильм «Трон»

Reading time9 min
Views6.6K

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

Читать далее
Total votes 21: ↑18 and ↓3+15
Comments3

Pull request'ы на GitHub или Как мне внести изменения в чужой проект

Reading time6 min
Views494K
По просьбе tulskiy делаю вольный перевод частей официальной документации GitHub'а Fork A Repo и Send pull requests.

Итак, что же такое «запрос на включение (сделанных вами изменений)» (именно так я перевёл pull request)? В официальной документации гитхаба говорится следующее:
Pull request'ы позволяют вам рассказать другим о тех изменениях, которые вы разместили в своём GitHub-репозитории. Как только pull request отправлен, заинтересованные стороны рассматривают ваши изменения, обсуждают возможные правки или даже добавляют дополняющие коммиты, если нужно.

Говоря своим языком: Посылая pull request, вы говорите автору изначального репозитория (и всем заинтересованным лицам): «Смотрите, что я сделал, не хотите ли принять мои изменения и влить их в проект?»
Читать дальше, но теперь уже обо всём по порядку
Total votes 84: ↑80 and ↓4+76
Comments31

Алгоритм триангуляции Делоне методом заметающей прямой

Reading time7 min
Views59K
Доброго времени суток!

В этой статье я подробно опишу алгоритм, который у меня получился в результате использования идеи «заметающей прямой» для построения триангуляции Делоне на плоскости. В нем есть несколько идей, которые я нигде не встречал, когда читал статьи про триангуляцию.
Возможно, кто-то тоже найдет их необычными. Я постараюсь сделать все в лучших традициях и включить в рассказ следующие вещи: описание используемых структур данных, описание шагов алгоритма, доказательство корректности, временные оценки, а также сравнение с итеративным алгоритмом, использующим kD-дерево.
Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments19

Как работает физика в играх

Level of difficultyMedium
Reading time17 min
Views16K

В мире видеоигр игровая физика играет важную роль, определяя реалистичность и взаимодействие игрового мира с игроком. Что же происходит под капотом? Какие алгоритмы и подходы используются в современных движках? И что же значит «застрять в текстурах»? (спойлер: чушь полнейшая)

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

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

Кривые Безье и Пикассо

Reading time14 min
Views43K

Пабло Пикассо в своей студии на фоне картины «Кухня», фотография Херберта Листа.

Художник и простота


Одни из самых любимых мной работ Пабло Пикассо — это его линейные рисунки. Он изобразил на некоторых из них животных: сову, верблюда, бабочку и т.д. Эта работа под названием «Собака» висит на моей стене:


(Можете перейти к интерактивному демо, в которой мы воссоздали «Собаку» с помощью представленных в статье математических расчётов)

Эти рисунки чрезвычайно просты, но каким-то образом им удаётся глубоко тронуть зрителя. Они создают впечатление простоты композиции и реализации. Одно движение руки и подпись создают настоящий шедевр! Рисунок одновременно кажется и небрежной импровизацией, и точно подобранной увертюрой в симфонии изящества.
Total votes 20: ↑18 and ↓2+16
Comments1

Бесплатный Telegram-бот для расшифровки аудио. Рассказываем кратко, как мы его сделали

Reading time3 min
Views58K

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

Читать далее
Total votes 17: ↑16 and ↓1+15
Comments36

Корутины C++ для чайников: пишем асинхронный веб-клиент

Level of difficultyMedium
Reading time24 min
Views20K

Написать этот материал меня побудило... отсутствие хороших статей по корутинам в C++ в русскоязычном интернете, как бы странно это не звучало. Ну серьезно, C++20 существует уже несколько лет как, но до сих пор почти все статьи про корутины, что встречаются в рунете, относятся к одному из двух типов. Или обзор начинается с самых глубин и мелочей, пересказывая cppreference, а потом автор выдыхается и все сводится к "ну а дальше все понятно, возьмите и примените это в своем коде", что напоминает известную картинку с совой. Либо иногда в статьях рассматривается применение корутин на примере генераторов, и этим все и ограничивается. Но, давайте будем честны, генераторы — это замечательно, но за все время моей многолетней карьеры разработчика я, вероятно, делал что‑то подобное генераторам разве что разок, в то время как асинхронный ввод‑вывод приходится использовать почти в каждом проекте. И поэтому меня гораздо больше интересует реализация асинхронного ввода‑вывода с использованием корутин, а не генераторы. Поэтому пришлось разбираться во всем самому.

Читать далее
Total votes 68: ↑66 and ↓2+64
Comments34
1
23 ...

Information

Rating
4,317-th
Registered
Activity

Specialization

Software Developer, Game Developer
Junior
SQL
C++
C++ STL
Cmake
MySQL
SQLite