В этой статье представлен новый подход к разработке программного обеспечения. Он будет полезен как для начинающих, так и для средних программистов.
Читать далееЗадача Эдсгера Дейкстры о философах – великая задача великого программиста. Уж сколько лет, а она актуальна. Решая ее, прикасаешься к этому величию. И вот, перефразируя известное, «давно не было такого и вот опять», можно познакомиться с ее «новым прочтением» на Хабре[1].
Ну, как новое?… Но она стала тем триггером, который подвигнул меня к очередной попытке ее решения. Тем более, что с момента знакомства с философами пролетела уйма лет, а в багаже - опыт применения автоматной модели и значительно усовершенствованная среда их реализации.
Познакомился с проблемой обедающих философов – Dinning Philosopher Problem (DPP), я более двадцати лет тому назад (про DPP см. [2]). Результатом стала статья, в которой философы выполняли поставленную задачу, как минимум, не хуже, чем классические алгоритмы сортировок[3]. Позднее был сделан доклад на конференции по параллельным вычислениям в Саратове, где на суд научной общественности была предъявлена модель автоматных параллельных вычислений и пример ее приложения - задача Дейкстры[4].
Замечание 1. В рамках обсуждения статьи на Хабре было проигнорировано предложение поручить сортировку философам. Зря, конечно, т.к. надо же как-то убедиться, что предлагаемое решение работает хотя бы в первом приближении. К примеру, тот же DeepSeek, моментально выдавший свое решение DPP, так и не смог заставить их сортировать.
Не знаю, считается ли данная задача решенной, но то, с чем я знаком, по большей части беглое рассмотрение проблем, которые она отражает. У задачи есть теория, которая представлена монографией Хоара[5], или моделями сетей Петри у Питерсона[6] и В.Е. Котова[7] или другими подобными публикациям. Но, повторюсь, все это по большей части достаточно краткий анализ свойств модели и/или даже конкретного решения. Статья на Хабре из этой же серии. Все это ни как не окончательное решение описываемых ею проблем параллелизма. Правда, может, [авторами] вопрос так и не ставился, но все же ответ на него весьма желательно иметь.
Читать далееПервым делом пришла идея, я тогда пробовал делать игры только в 2d и пиксель арте. Порисовав в изометрии, я подумал, что графика слишком слабая и я не наберу восторженных отзывов об игре, да и к тому же некоторые симуляторы славятся тем, что после определённого цикла развития, развиваться становится уже некуда и игру приходится заканчивать просто без конечных титров.
В один прекрасный день, как это бывает у меня по цикличности, я вновь загорелся учить электронику, когда увидел книгу "Основы Электричества". Я её купил, а когда начал читать, то в первой теме я всё понимал, но дальше потребовался векторный анализ, который я не знал и тогда я принялся учить линейную алгебру и аналитическую геометрию. Так я прошел и векторный анализ и дошел до того, что захотелось реализовывать каждое знание, которое я подчерпнул из книги.
Таким образом я стал рассуждать, вот 3d, надо пустить луч, я помню, что был способ через матрицы, но не помню какой. Спросив у нейросети и выполнив то, что нужно, я заметил, что алгоритм пересечения сферы с лучем не правильный. Тогда я решил выработать свой способ, ну просто порасчитывать так как мне этого захотелось. Тогда я потратил 5 дней на это и выработал формулу, которая помогает манипулировать фронтом камеры без вычисления обратных матриц. Я обрадовался. Теперь моя функция бросания луча выглядит так.
Читать далееПятая статья в серии о DOM-подобных моделях данных в разных языках программирования.
В предыдущих частях мы разобрали DOM-подобные структуры данных, оценили их поддержку в ряде языков с помощью бенчмарка CardDOM и сравнили их реализацию в JavaScript. и С++, Rust и D-lang (а также упомянули Zig, Odin, Jai, Python, V, Cone и Pony).
Эта растянутая на несколько публикаций серия показала, что современные языки удивительно плохо приспособлены для работы с документной объектной моделью — фундаментальной структурой данных современных высокоуровневых приложений.
Посмотрим, как с этой задачей справляется Argentum — язык, для которого такие структуры данных являются нативными.
Читать далееИстория о том, как наша команда смогла ускорить релизы, снизить затраты и построить масштабируемую архитектуру без хаоса. В статье вы узнаете, подходят ли вам микрофронтенды.
Читать далееЭто довольно короткая статья, целью которой является пояснение того, что вообще такое "модуляризация" Spring Boot, почему она появилась и откуда, собственно, ноги растут.
Для многих Spring Boot это просто автоконфигурация. Само собой Spring Boot гораздо шире и включает в себя в том числе ещё и
Spring Boot Actuator
Spring Boot DevTools
Spring Boot Tools и т.д.
Читать далееИстория стартует в 1982, когда Университет Карнеги (Carnegie Mellon University, CMU) и корпорация IBM запустили Andrew Project, проект который должен был упростить коммуникацию и совместную работу внутри университетского кампуса.
Читать далееНравится вам это или нет, но мы уже давно живем в эпоху, когда хорошие игры так или иначе возвращаются. И зачастую в своем гораздо лучшем варианте, чем в оригинале. Так, мы, например, не ждали, но получили просто шикарный ремейк Silent Hill 2 от Bloober Team, да и о крутости переосмысления Resident Evil 2/3/4 повторяться не хочется.
Однако есть пара неприятных моментов. Первый — эпоха PS3 и Xbox 360 это такое же ретро, как и времена до нее, смиритесь. А второй факт — в этой эпохе застрял ряд очень крутых игр, которые надо спасать. Им нужен ну хотя бы ремастер на современные консоли, а лучше полноценный ремейк.
Что это за игры? А давайте вместе и посмотрим.
Читать далееВсе, кто более-менее знаком с электротехникой, знают, насколько это консервативная сфера: большинство законов, принципов (и даже устройств!) были разработаны чуть ли не сто, а то и более лет назад!
Тем не менее, иногда даже в такой консервативной сфере случаются серьёзные прорывы и, одному из них, многие из нас, были свидетелями: на рубеже между 1980 и 1990 годами благодаря открытию и широкому внедрению редкоземельных магнитов NdFeB (неодим-железо-бор) , SmCo (самарий-кобальт) произошла тихая революция в электродвигателях, где, благодаря таким магнитам удалось кардинально улучшить их характеристики: в те годы даже ходила поговорка, что «электродвигатель никогда не будет летать», из-за большого веса старого типа двигателей (особенно это поговорка касалась малой, беспилотной авиации), а повсюду властвовали исключительно двигатели внутреннего сгорания.
И вот, нынешнее поколение уже даже, наверное, и не представляет, что «а разве когда-то было иначе?», видя, как лавинообразно распространяется беспилотная авиация, дроны.
В свете всего этого, имеет смысл ещё раз взглянуть на историю электродвигателей, как таковых…
Читать далееПривет, Хабр! Продолжаю рассказывать про российские аналоги Microsoft Active Directory для построения корпоративных доменов. Идея этих материалов — собрать в одном месте все известные и распространённые отечественные аналоги, и чтобы человек, малознакомый или не знакомый с ними, мог выбрать нужный и сравнить ответы самих разработчиков. Да, тут на Хабре уже полно статей, но я решил сделать серию материалов, от которой можно отталкиваться, выбрать нужное решение и потом искать дальше материалы по теме. Первый материал был про российскую систему централизованного управления IT‑инфраструктурой «Ред Адм». В новом я поговорил с разработчиками ALD Pro.
Итак, встречайте разговор с директором серверного ПО «Группы Астра» Алексеем Фоменко и менеджером продукта ALD Pro «Группы Астра» Анатолием Лысовым. Мы поговорили о том, как был реализован проект, когда начался, какими он обладает фичами на конец 2025 года и можно ли на ALD Pro перейти с Windows‑инфраструктуры безболезненно. Приятного чтения!
Читать далееВ российском предпринимательском ландшафте появилась структура, которая способно по-новому развивать бизнес-сообщество, меняя правила игры. Telegram и WhatsApp-чаты стали играть роль нового интеллектуального центра тяжести.
С первого взгляда это бизнес-клубы нетворкинга, но в глубине — куда больше. Наше консалтинговое агентство предлагает результаты проведенного обзора чатов по бизнесу в Telegram и WhatsApp российского сегмента.
Читать далееИздание SelaNi опубликовало результат анализа утечки секретных документов DARPA, слитых в сеть в начале недели. В документах в основном финансовые отчёты и перечисления финансируемых программ, но также там оказались планы и отчёты по экспериментам и разработкам проведённым агентством за период с 2009 до 2025 год.
Отчёт 2010 года свидетельствует о том, что основной проблемой военной промышленности США стал найм программистов. Основные критические системы, такие как банки, были написаны на COBOL, а в военной сфере по директиве DoD 3405.2 использовался только язык программирования Ada. Оба языка постепенно потеряли носителей и к 2010 году стало понятно, что им нужно искать замену.
Читать далееПередача информации с помощью электромагнитного излучения происходит двумя основными способами – оптическим (в видимой части спектра с включением соседних областей – УФ и ИК) и радио (в длинноволновой части спектра). Эти способы принципиально отличаются друг от друга и это связано не только с длиной волны используемого излучения.
Оптический способ
На нем основано зрение живых существ и вся техника фиксирования изображений, начиная с фотографии. Хотя обычно зрение и фотографию не относят к процессу передачи информации, фактически это есть основной по объему передаваемой информации способ передачи – из области пространства, в которой расположен наблюдаемый объект, в область восприятия – на сетчатку глаза или фотоматрицу камеры.
Для формирования изображения требуется источник освещения. Каждая точка поверхности оптической сцены излучает сферическую волну, отражая излучение источника. Таким образом, всё пространство оптической сцены заполнено излучением одного и того же спектра, распространяющимся во все стороны. В процессе распространения пересекающиеся волны не взаимодействуют (линейная оптика), но на любой поверхности (экране), куда они попадают, возникает интерференция. При монохромном источнике интерференционная картина явно видна (это используется в голографии), при немонохромном экран освещен равномерно (интерференция есть, но она неразличима из-за очень большого числа волн с разными длинами). Для получения изображения оптической сцены необходим объектив (в простейшем случае – выпуклая линза). Линза осуществляет пространственное разделение попадающих на нее волн таким образом, что в каждую точку экрана приходит волна только из одной точки оптической сцены. Поэтому никакой интерференции на экране не возникает. При монохромном освещении формируется одноцветное изображение, при немонохромном – многоцветное.
Читать далееКомпьютерное зрение развивается стремительно: задачи, которые ещё недавно требовали собственных датасетов и долгого обучения моделей, теперь решаются готовыми инструментами.
Всем привет! Меня зовут Алина, я инженер‑исследователь в Центре искусственного интеллекта СФУ. В этой статье расскажу, как мы применяем методы компьютерного зрения для анализа фотографий уборок в проекте «Чистые игры», как подошли к задаче автоматической оценки качества уборок и какие технические решения легли в основу MVP. В конце поделюсь выводами и тем, что удалось сделать, а что ещё предстоит улучшить.
Читать далееТрагедия карьерного роста состоит в том, что человек чаще всего демонстрирует лучшие рабочие качества не тогда, когда ему дают возможности, а тогда, когда его запихивают в ситуацию «спасай» или «выкручивайся как хочешь».
Читать далееУ нас было пять руководителей проекта, семь лет разработки, несколько почти законченных решений, меняющиеся цели, задачи и разнообразные системы всех цветов и размеров. Не то, чтобы это было нужно для успешной реализации, но раз уж начал пилить долгострой, то иди в своём увлечении до конца. Единственное, что меня пугало — это разработка серебряной пули, которая якобы исправит все проблемы. В ИТ нет ничего более иллюзорного, чем попытка разработать универсальную систему для решения всех проблем. И я знал, что мы скоро в это окунёмся.
Читать далееСалют, Хабр!
В этот раз мы хотим поделиться с вами чем-то большим... буквально большим — 712
миллиардами параметров! И всё это под открытой лицензией MIT!
Мы подготовили двух представителей моделей нового поколения с открытыми весами: компактная модель для локального запуска на своем ноутбуке и наш флагман, о котором сегодня и поговорим.
Салют, Хабр!
В этот раз мы хотим поделиться с вами чем-то большим... буквально большим — 712
миллиардами параметров! И всё это под открытой лицензией MIT!
Мы подготовили двух представителей моделей нового поколения с открытыми весами: компактная модель для локального запуска на своем ноутбуке и наш флагман, о котором сегодня и поговорим
Любую программу можно написать различными способами, и она будет как-то работать, иногда даже правильно. Но лучше все-таки в своем коде определенных конструкций избегать, чтобы не возникало последующих проблем. Эта статья предназначена для начинающих разработчиков на C++, и в ней мы рассмотрим несколько вредных советов по написанию кода и пояснений, почему так делать не нужно.
Читать далееПривет, Хабр! На связи Лера, технический писатель в Авито. В своих статьях продолжаю делиться кратким содержанием книг, связанными с продуктивностью и работой мозга. Сегодня поговорим про книгу Дэвида Аллена — Getting Things Done (или «Как привести дела в порядок»).
Читать далее