Как стать автором
Обновить
117
0
Никита Цуканов @kekekeks

Гуру велосипедостроения

Отправить сообщение

Game++. Dancing with allocators

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

C и C++ не имеют встроенной сборки мусора, поэтому разработчик сам решает, как и когда выделять и освобождать память. Мы, конечно, можем покивать в сторону STL, сокрытия аллокаций в контейнерах, но от этого они никуда не денутся. Просто если раньше приходилось думать про выделенный кусок памяти, понимать, как он скажется на времени фрейма, помнить, что его надо удалить (а может, не надо и стоит оставить на следующий фрейм), то теперь всё заворачивается в сахарные контейнеры и разработку в стиле STL-blin-vse-sterpit. STL-то может и стерпит, и даже как-то будет ворочаться, однако не стоит полагаться исключительно на системный аллокатор, бездумно вызывая new или malloc для каждого запроса памяти. Вы ведь понимаете, что std::vector посреди цикла или горячей функции — это плохая идея?

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

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

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

Ребята из HFT, Database, Automotive и Embedded-систем наверняка могут рассказать немало интересных историй про оптимизацию new/delete. Давайте я расскажу немного про разные аллокаторы в играх?

Аллокатор аллокатору аллокации аллоцировал

Женщины, изменившие современную науку

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

11 февраля отмечался Международный день женщин в естественных науках, технологиях, инженерии и математике. В честь этого я расскажу о самых умных и творческих женщинах, внёсших огромный вклад в науку и наши знания о мире.
Читать дальше →

О вреде GOTO-фобии (с примерами на C)

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

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

Читать далее

Neo4j. Вместо тысячи join-ов…

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

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

Читать далее

YAML из Ада

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

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

Данный пост является нытьём и он более субъективен, чем мои обычные статьи.
Читать дальше →

Как я засунул Stable Diffusion в IPhone

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

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

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

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

Налоговый и валютный резидент РФ —последствия приобретения и утраты статусов — полный FAQ с примерами

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

Друзья, всех приветствую и предлагаю ознакомиться, как мне кажется с довольно полным FAQ по теме налогового и валютного резиденства РФ. По ходу материала есть некоторые примеры, а внизу вопросы & ответы.

Читать далее

Прионная болезнь. Романтический ужас

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

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

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

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

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

Известны также четыре прионных болезни человека: куру, болезнь Кройтцфельда-Якоба, синдром Герстманна-Штреусслера-Шейнкера и фатальная семейная бессонница. В данном очерке рассказ будет о трёх самых известных и наиболее распространённых прионных болезнях человека и животных: скрепи, куру и болезни Кройтцфельдта-Якоба.

Читать далее

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

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

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

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

Читать далее

Дефицит есть, а денег не дают. Почему?

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

Мы уже выяснили, что у нас есть дефицит рабочих рук во всех отраслях. На примере СССР увидели, что дефицит легко закрывается деньгами и плюшками, что сейчас и происходит в IT. Однако при дефиците рабочих рук в остальных отраслях зарплаты остаются на уровне Румынии и никак не подтягиваются. Почему?

Читать далее

Как работать в команде и не сойти с ума

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


Я посмотрела 1,5 часовое выступление скрам мастера и стендап комика Ильи Якямсева про работу в команде. Под катом расшифровка выступления на 15-20 минут чтения. А вот выжимка на 30 секунд:

  • Если команда/компания работает в цикле выгорания — вы тоже выгорите.
  • Для некоторых компаний цикл выгорания — способ не платить за переработки.
  • Общение с командой должно идти с командой, а не с отдельными представителями / лидерами / менеджерами и пр.
  • Электронная почта для общения команды — зло, мессенджеры с каналами рулят.
  • Если какой-то процесс должны регулярно выполнять два и больше людей, автоматизация в помощь.
  • Если вас можно понять неправильно, вас поймут неправильно. Избавьтесь от двусмысленности. Для особо сложных случаев — заведите словарь проекта.
  • Абсолютного знания не существует. Есть опыт прошлого в контексте прошлого.
  • Психологическая безопасность в коллективе — когда в коллективе люди не боятся сморозить глупость по рабочему вопросу.
  • Флудильня — индикатор, живой у вас коллектив или как.

Промотать к видео

Говорите, пожалуйста


Я совершенно случайно заговорил про депрессию и выгорание. Я не специалист по выгоранию, как человек, который сидел в доме во время пожара — не специалист по пожарам. Я просто пережил «пожар» и рассказал свои ощущения.
Читать дальше →

Безопасность для айтишников: как научить разработчиков устранять уязвимости и создавать безопасные приложения

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

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

На PHDays наши коллеги из «Яндекса» поделились своим опытом в обучении разработчиков и показали участникам систему, позволяющую тренироваться в поиске и исправлении уязвимостей. Каждое задание в этой системе состоит из кода, содержащего уязвимости. Задача разработчика — найти заложенную проблему и исправить ее.

Рассказ получился, как говорится, о наболевшем: из зала так и сыпались вопросы, и коллег не отпускали минут двадцать. Сегодня мы решили поделиться их докладом в нашем блоге. Итак, передаем слово ребятам.

Не хотите читать? У нас отличная новость: можно послушать подкаст-версию этой статьи. Выбирайте удобную вам платформу — и вперед!

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

Читать далее

Фантасты, которых стоит почитать любителям английского юмора

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

Английский юмор — словосочетание, которое интуитивно-понятно, но объяснить его тяжело. «Википедия» утверждает, что он несет в себе сильный элемент сатиры над «абсурдностью повседневной жизни». Пожалуй, к этому определению стоит добавить иронию, самоиронию, а вместе с этим — невозмутимый тон рассказчика.

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

Читать далее

Гайд начинающего тимлида

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

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

Всё это я проговаривал на вебинаре в Хекслете тут https://www.youtube.com/watch?v=y_HkXvFovAc

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

Общий стаж моей работы в ИТ - около 14 лет. Я начинал с системного администрирования, потом перешел в разработку, поработав как в аутсорсе, так и в продукте. Не один раз проходил путь от рядового разработчика до тимлида.

Читать далее

Школа юных управленцев

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

Люди сейчас «новая нефть», и только ленивый не говорит о том, как важны soft skills.

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

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

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

IQueryable порождает сильную связанность

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

Время от времени я встречаю людей, пытающихся выразить API в терминах IQueryable<T>. Почти всегда это плохая идея. В этой статье я объясню почему. Вкратце, IQueryable<T> — это один из лучших примеров заголовочного интерфейса (Header Interface), предлагаемых платформой .NET. Его почти невозможно реализовать полностью.


Эта статья о проблемах реализации API на основе интерфейса IQueryable<T>. Это не претензия к интерфейсу как таковому. Кроме этого, это не претензия к замечательным методам LINQ, доступным для интерфейса IEnumerable<T>.

Можно сказать, что IQueryable<T> — это одно сплошное нарушение принципа подстановки Лисков. Я буду использовать закон Постела, чтобы объяснить почему это так.


Принцип устойчивости, также известен как закон Постела в честь Джона Постела: «Будь либерален к тому, что принимаешь, и консервативен к тому, что отсылаешь (Be liberal in what you accept, and conservative in what you send)».
Читать дальше →

Эффект неисправного монитора для текста, картинок и SVG

Время на прочтение4 мин
Количество просмотров116K
Эффект Glitch Лукаса Беббера выглядит очень круто — как будто вы смотрите на текст на старом мониторе, который слишком часто роняли на пол и у него «плавает» вертикальная синхронизация и сведение.

Реализация этого эффекта на CSS выглядит вполне убедительно. Мне пришлось немного поломать голову, чтобы выяснить, как он работает, и теперь я хочу объяснить это вам. Кроме того, я воспроизвёл этот эффект не только для текста, но и для растровых изображений и SVG, а так же написал несколько примесей Sass, чтобы облегчить работу с ним.


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

Как программировать если совсем не хочется? План спасения на случай перегорания или дедлайна

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


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

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

Чего я не знал о CSS

Время на прочтение6 мин
Количество просмотров34K
Рисовать сайты я учился по старинке: глядя на исходный код и пытаясь воспроизвести увиденное. Плюс взял странную книгу для невидимых вещей (типа PHP/MySQL) — и вперёд.

Это ещё в 1999 году, когда мы писали <font size="4" color="#000000"> и т. д., а DHTML был модным.

Когда появился CSS, мой подход к обучению не отличался. Но я действительно жалею, что не потратил время, чтобы изучить CSS должным образом — и пропустил много фундаментальных понятий.

Вот некоторые вещи, которых я не знал, но хотел бы узнать раньше.
Читать дальше →

Уничтожение комаров

Время на прочтение5 мин
Количество просмотров93K
Наступило лето и, пришла комариная пора. Конечно, готовиться к их уничтожению уже поздновато, но лучше поздно, чем никогда.

Вводные.

  1. Комар типичный русский может летать на 100 метров, а отдельные виды летают на запах до 5 километров, что акула. Это значит, что для того, чтоб у вас не было комаров, комаров не должно быть в радиусе 100 метров.
  2. Комар плодится каждые 5 дней. Поэтому, если в сутки уничтожается менее 1/5 популяции комаров, то методы будут бесполезны.
  3. Комарам нужно много воды. Они живут возле заболоченых мест, либо там где вода. На участках они обычно вылетают вечером после жаркого дня, когда выпадает роса — чтоб напиться.

Методики уничтожения комаров


Читать дальше →
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность