Search
Write a publication
Pull to refresh
2
0
Send message

Поверхность по сети кривых

Reading time11 min
Views3.1K

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

Заранее предупреждаем. Дальше вам встретится множество геометрических терминов и формул. А кто говорил, что будет легко?!

О различных аспектах построения поверхности по сети кривых, а также полезных для ее практической реализации тонкостей, рассказывает Павел Егоров, математик-программист в C3D Labs.

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

Читать далее

Как отрефакторить 2.5 млн строк кода

Reading time18 min
Views6.1K

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

Читать далее

Задача коммивояжера (TSP) точное решение — метод ветвей и границ

Reading time17 min
Views20K

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

Я говорю про NP-трудные задачи (NP-трудность - недетерминированная полиномиальная трудность по времени) и на одной из данного класса хочу акцентировать ваше внимание. Задаче коммивояжера.

Мы не будем рассматривать эвристические алгоритмы, нам нужно точное решение.

Читать далее

Совмещая несовместимое: клавиатура с дисковым номеронабирателем

Reading time6 min
Views6K

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

Читать далее

Паттерны отказоустойчивости приложений в Kubernetes

Reading time22 min
Views20K
Балансировщики падают, контроллеры зависают, а дата-центры атакуют экскаваторы. Это нормальная история. Мы живём в мире, где нет ничего надёжного на 100 %, а любой бит в планке оперативной памяти может внезапно перещёлкнуться из-за пролетевшей космической частицы.

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

По роду деятельности мне постоянно приходится сталкиваться с проблемами отказоустойчивости, так как я руководитель разработки в отделе Газпромбанка, обеспечивающем эксплуатацию ML и Big Data-решений. Поэтому сегодня я хочу рассказать о нескольких паттернах отказоустойчивости и типовых решениях при эксплуатации приложения в кластере Kubernetes. Разберём основные паттерны, ну и, конечно, рассмотрим варианты, при которых неправильные настройки прострелят вначале одну ногу, а потом — другую, потому что она слишком медленно стала шагать.


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

Cтандартизированные методики исследования UX

Reading time6 min
Views2.4K

Несмотря на разнообразие подходов к UX (статья 1, статья 2, статья 3), в научной и практической среде за последние два десятилетия сформировались стандартизированные методики изучения пользовательского опыта. Объединяет их то, что все они основаны на теоретических предпосылках, разработанных в рамках относительно новой дисциплины Human-Computer Interaction (HCI). При этом четко прослеживается тенденция на расширение факторов, входящих в UX. Сегодня я расскажу о трех самых распространенных опросниках: AttrakDiff, UEQ и meCUE. 

Читать далее

У вас нет причин использовать alpine для python-проектов

Reading time9 min
Views16K

По мотивам моего доклада на PyCon "Контейнеризация Python без боли". На своей практике я постоянно сталкиваюсь со спорами какой базовый образ лучше использовать для проектов: alpine или debian. Аргументы есть и у той, и у другой стороны, но мне это настолько надоело, что я решил сам разобраться и наконец-то поставить точку. В конце концов "В наше время верить нельзя никому, даже себе. Но мне - можно." (с)

Читать далее

mov Программирование на Ассемблере без знаний Ассемблера, habr

Level of difficultyHard
Reading time4 min
Views4.7K

Пролог

Решил поделиться своими мыслями и кратким двухдневным опытом написания (собирания по частям) программы на Ассемблере без чтения учебников, больших статей и в целом без опыта программирования на этом языке. На одном из форумов я набрёл на задачу вывода десятичного числа в консоль. Если на языке C или PHP эта операция совершенно элементарна, то на Ассемблере всё не так просто, как может показаться на первый взгляд. Для решения задачи я выбрал nasm (правда, выбора и не было), немножко поигравшись предварительно с вставками nasm (синтаксис AT&T) в код C (ссылка на форум с моими опытами в конце статьи).

Философское отступление
Остановись, дорогой читатель! И прежде чем читать дальше, задай себе вопрос: возможно ли начать ковать без обучения кузнечному делу?!

Я оставлю этот вопрос без ответа. Только скажу, что в нём нет ни капли иронии, издёвки, намёка на назидательность и т.д. Это вопрос без какого-либо дополнительного подтекста.

Поиски
Информации по Ассемблеру в Интернете очень много и заблудиться в разных видах Ассемблера (для различных систем) крайне просто. Я не единственный задавался вопросом в поиске «how to print a number in asm». Ответы на разных диалектах языка относительно легко можно найти на Stack Overflow, однако это совершенно не означает, что будет легко запустить найденный код на своей машине. Велика вероятность того, что что-нибудь не сойдётся. Научиться отличать синтаксис AT&T и intel можно за несколько минут, а вот с узнаванием tasm, fasm, masm, nasm - несколько сложнее. Единственное, что можно предположить и (почти) не прогадать: базовые инструкции во всех Ассемблерах имеют (почти) одинаковые мнемоники.

Читать далее

Лучшие новые библиотеки Python за 2022 год

Reading time10 min
Views35K

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

Читать далее

Путешествие сакуры из Японии в Россию по TCP/IP. Анатомия передачи файла: как выглядят фреймы, сегменты и пакеты

Level of difficultyMedium
Reading time4 min
Views10K

Допустим, я скачиваю браузером картинку PNG с фотографией ветки сакуры с веб-сайта из Японии. Она ведь не умещается в одном фрейме. Как выглядит каждый фрейм в нашем случае и сколько их всего будет? И будет ли внутри каждого фрейма что-то меняться в процессе передачи из Японии в Россию?

На каждом этапе перемещения данных по стеку TCP/IP каждый протокол добавляет свой заголовок и передает на следующий уровень абстракции..

И сколько в одном фрейме уместится данных?

Event propagation

Reading time10 min
Views4.3K

Типичное видение модели распространения события, которое мы привыкли видеть в интернете - это модель всплытия события (bubbling) подобно пузырьку, или погружению (capturing) подобно “камню”.

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

Вдохнуть поглубже

Как составить Customer Journey Map и почему не надо игнорировать этот инструмент

Reading time3 min
Views3.9K

Customer Journey Map (CJM) или карта пути пользователя — это один из способов найти новые гипотезы по увеличению количества заявок и продаж. Это маркетинговый инструмент, который можно использовать в разработке на этапе прототипирования. В статье подробно о CJM и о том, как он помогает создавать продукты.

Читать далее

Когда клиент мучает бесконечными правками

Reading time8 min
Views8.4K

Это глава из «Книги нормального фрилансера», в которой я делюсь опытом проектировщика интерфейсов, работающего на себя.

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

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

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

Открывал я его с большим оптимизмом, так как считал, что отлично справился с проектом. Но когда увидел объём обратной связи, расстроился и разозлился одновременно. «Мда, не видать мне оплаты в ближайшее время!» — подумал я, вчитываясь в десятки замечаний.

Читать далее

Однажды у нас будет полностью настраиваемый select

Reading time4 min
Views13K

Сегодня я хочу рассмотреть предложенную функцию HTML, которая может в итоге заменить множество пользовательских компонентов ввода на основе <div>: <selectmenu>.

Читать далее

35 лет DNS, системе доменных имён

Reading time9 min
Views6.7K

В 1987 году произошло много событий, так или иначе повлиявших на развитие информационных технологий: CompuServe разработала GIF-изображения, Стив Возняк покинул Apple, а IBM представила персональный компьютер PS/2 с улучшенной графикой и 3,5-дюймовым дисководом. В это же время незаметно обретала форму ещё одна важная часть интернет-инфраструктуры, которая помогла создать Интернет таким, каким мы знаем его сегодня. В конце 1987 года в качестве интернет-стандартов был установлен набор протоколов системы доменных имен (DNS). Это было событием которое не только открыло Интернет для отдельных лиц и компаний во всем мире, но и предопределило возможности коммуникации, торговли и доступа к информации на поколения вперёд.

Сегодня DNS по-прежнему имеет решающее значение для работы Интернета в целом. Он имеет долгий и весомый послужной список благодаря работе пионеров Интернета и сотрудничеству различных групп по созданию стандартов.
Читать дальше →

Невидимая рука паразитов

Reading time7 min
Views25K

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

Читать далее

Инструменты для GraphQL клиента на Python

Reading time9 min
Views13K

Речь в статье пойдет о специальных инструментах для работы с GraphQL на Python в качестве клиента. Если вы используете GraphQL в своих сервисах на Python, то, скорее всего, сталкивались с необходимостью писать и хранить строки, содержащие GraphQL запросы, а так же писать Python классы для хранения результатов этих запросов. Вероятнее всего, вам было неудобно: не хотелось дублировать схожие запросы, постоянно править классы при частом изменении схемы и т.п. Вот и мне тоже. Поэтому, решая описанные проблемы, появились на свет два пакета: graphql-query и graphql2python.

Читать далее

Экосистема фронтенд-разработчика на JavaScript: полезный инструментарий для начинающих

Reading time9 min
Views18K

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

Читать далее

Information

Rating
6,791-st
Registered
Activity