Pull to refresh
7
0

Пользователь

Send message

Solutions architect, который не пишет код

Level of difficultyMedium
Reading time4 min
Views6.5K

В данной статье рассматривается профстандарт архитектора ПО (06.003).

Чем он занимается и как им стать.

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

Читать далее
Total votes 8: ↑5 and ↓3+3
Comments29

Подборка кино и сериалов про шпионов, разведку и OSINT

Level of difficultyEasy
Reading time9 min
Views12K

Привет, Хабр! Однажды непогожим осенним вечером мы с командой OSINT mindset взялись вспоминать хорошие фильмы про шпионов и разведку, а в итоге насобирали приличный список того, что приятно посмотреть и не стыдно порекомендовать.

Читать далее
Total votes 14: ↑11 and ↓3+11
Comments21

Специальный шрифт для нахождения ошибок после OCR

Reading time1 min
Views16K
Сообщество Distributed Proofreaders («Распределённые корректоры») больше десяти лет занимается сканированием книг для проекта «Гутенберг». Сотни добровольцев помогают вычитывать тексты и исправлять ошибки.

После автоматического распознавания чаще всего ошибки встречаются в символах, которые похожи друг на друга, как I, l и 1, O и 0, и так далее. Если пользоваться обычным шрифтом вроде Times, то такие ошибки можно и не заметить. Поэтому для проекта Distributed Proofreaders был создан специальный шрифт, в котором «похожие» символы как можно сильнее отличаются друг от друга.


Читать дальше →
Total votes 49: ↑39 and ↓10+29
Comments62

Моделирование нелинейных функций и ограничений в задачах линейного программирования

Level of difficultyMedium
Reading time7 min
Views3.1K

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

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

Выделение регионов памяти в C++: советы и приёмы

Reading time12 min
Views8.2K

Эта статья обсуждалась на Hacker News.

В течение минувшего года я шлифовал мой подход к выделению регионов. Практика показывает, что это эффективный, простой и быстрый подход; обычно его используют в качестве средства для сборки мусора без издержек. В зависимости от того, что нам требуется, в аллокаторе может быть всего 7–25 строк кода — идеально для случаев, когда мы работаем без среды исполнения. Теперь, когда я окончательно сформулировал ключевые аспекты моего подхода, самое время их задокументировать и рассказать вам о том, что мне удалось выучить. Определённо, это не единственный возможный подход к выделению регионов. Я просто расскажу вам о приёмах, которые сам выработал для упрощения программ и искоренения ошибок.

Регион (арена) — это буфер памяти и смещение до этого буфера. Изначально это смещение равно нулю. Чтобы выделить объект, нужно взять указатель на него с заданным смещением, увеличить смещение на размер объекта, а затем вернуть указатель. Этим дело не ограничивается — например, нужно обеспечить выравнивание и доступность. До этого мы ещё дойдём. Объекты не высвобождаются каждый по отдельности. Напротив, сразу высвобождаются целые группы ранее выделенных объектов, и смещение откатывается к более раннему значению. Когда не предусмотрены собственные времена жизни для отдельных объектов, деструкторы писать также не требуется, а вашим программам не приходится прямо во время выполнения обходить структуры данных и убирать ненужные. Кроме того, больше можно не беспокоиться об утечках памяти.

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

Трансформером по A*, или как уменьшить число итераций самого известного алгоритма поиска пути

Level of difficultyMedium
Reading time24 min
Views7.6K

Привет! Меня зовут Константин Яковлев, я научный работник и вот уже более 15 лет я занимаюсь методами планирования траектории. Часто эта задача сводится к поиску пути на графе, для чего обычно используется алгоритм эвристического поиска A*. Этот алгоритм был предложен в 60-х годах XX века и с тех пор используется повсеместно. Скорее всего, юнит вашей любимой RTS бежит по карте с помощью той или иной вариации A*. Точно так же, под капотом беспилотного авто вы, наверняка, найдёте A*, хотя там, конечно, не только он.

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

Этот текст посвящен как самому алгоритму A*, так и попыткам повысить его эффективность с помощью методов искусственного интеллекта. Заодно я расскажу о том, какие новшества в этом направлении придумали мы с коллегами: научная статья на эту тему опубликована в сборнике конференции AAAI 2023.

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

Изучаем математическую статистику — гайд для новичков

Level of difficultyEasy
Reading time3 min
Views30K

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

Все представленные ниже материалы основаны на моём опыте изучения математической статистики.

Читать далее
Total votes 26: ↑23 and ↓3+25
Comments2

Лучший софт для автоматизации скриншотов

Level of difficultyEasy
Reading time6 min
Views27K
Такие скриншоты присылала Таня

У нас была знакомая девушка Таня (имя изменено), которая делала скриншоты ПК только смартфоном. То есть фотографировала экран — и присылала сделанную фотографию. Всё с телефончика, очень удобно…

В то же время есть масса эффективных инструментов для сохранения копии экрана каждую секунду или минуту, хранения архива, поиска по нему, автоматического копирования на удалённый хостинг и т. д.
Читать дальше →
Total votes 45: ↑45 and ↓0+45
Comments61

Быстрый двоичный поиск без ветвления

Level of difficultyMedium
Reading time15 min
Views13K

Мои читатели — занятые люди, поэтому сразу перейду к делу. Вот она, самая быстрая обобщённая (и простая) реализация двоичного поиска на C++:

template <class ForwardIt, class T, class Compare>
constexpr ForwardIt sb_lower_bound(
      ForwardIt first, ForwardIt last, const T& value, Compare comp) {
   auto length = last - first;
   while (length > 0) {
      auto rem = length % 2;
      length /= 2;
      if (comp(first[length], value)) {
         first += length + rem;
      }
   }
   return first;
}

Тот же интерфейс функции, что и у std::lower_bound, но вдвое быстрее и короче. «Без ветвления», потому что if компилируется в команду условной передачи, а не в ветвление/условный переход. Ближе к концу статьи мы изучим опции компилятора и даже более быстрые версии полностью без ветвления. Для понимания этой статьи не нужны особые знания в C++. Достаточно понимать, что итераторы (first и last) по сути являются указателями на элементы массива, хотя могут указывать на один элемент дальше, чем последний элемент массива. Можете не обращать внимания на template, class, constexpr и &. Вот если бы существовал быстрый и чистый язык, работающий на уровне железа...1 2
Читать дальше →
Total votes 78: ↑78 and ↓0+78
Comments6

О контрактной разработке и производстве электроники в России

Level of difficultyMedium
Reading time13 min
Views6.7K

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

Читать далее
Total votes 15: ↑12 and ↓3+15
Comments13

Тимлид на испытательном сроке

Level of difficultyEasy
Reading time5 min
Views18K

Испытательный срок – сложное время. Нужно разобраться в проекте, процессах. Привыкнуть к новой компании. А если ты тимлид? Ко всему этому нужно еще и быстро разобраться с командой и показать какие-то результаты руководству. Сложность возрастает.

Что делать тимлиду, чтобы эффективно пройти испытательный срок? Приглашаю почитать.

Читать далее
Total votes 17: ↑11 and ↓6+9
Comments4

Пароли здорового человека (part II) и зачем вам цифровое завещание

Level of difficultyEasy
Reading time7 min
Views9K

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

Но в начале, надо обсудить еще один способ восстановления доступа к своим данным аутентификации, на самый крайний случай: если потеряны ВСЕ устройства с бэкапами.

Читать далее
Total votes 12: ↑10 and ↓2+11
Comments17

Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 3

Level of difficultyMedium
Reading time6 min
Views4K

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

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

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

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

Проверка целостности исполняемых файлов

Reading time9 min
Views6.1K

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

В деле контроля целостности нам помогут хэш-функции.

Читать далее
Total votes 7: ↑6 and ↓1+6
Comments22

15 несложных видеоредакторов, доступных из России

Reading time12 min
Views156K

Если вам нужно быстро смонтировать видеоролик для рекламной кампании или других целей, совсем не обязательно изучать сложные программы. Собрали 15 простых инструментов, с которыми справится даже новичок в видеомонтаже. Все они бесплатные, имеют бесплатную версию или их можно оплатить из России. Читайте новую подборку от редакции click.ru.

Читать далее
Total votes 18: ↑11 and ↓7+6
Comments19

Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 1

Reading time8 min
Views14K

Квантовые компьютеры. С точки зрения традиционного программиста-математика.
Часть 1. Основы. Квантовый регистр.

О чем эта публикация

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

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

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

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

Популярные заблуждения про радиационную стойкость микросхем

Reading time31 min
Views107K
Примерно в каждой второй теме на Хабре, касающейся космонавтики или электроники, всплывает тема радиационной стойкости. Через новости об отечественной космонавтике красной нитью проходит тематика импортозамещения радстойкой элементной базы, но в то же самое время Элон Маск использует дешевые обычные чипы и гордится этим. А изральтяне в «Берешите» использовали радстойкий процессор и тоже гордятся этим. Да и в принципе микроэлектронная отрасль в России живет по большей части за счет госзаказа с соответствующими требованиями. Наблюдение за регулярными спорами насчет того, как надо правильно строить спутники, показывает, что подготовка участников обычно невысока, а их аргументация отягощена стереотипами, случайно услышанными вырванными из контекста фактами и знаниями, устаревшими много лет назад. Я подумал, что читать это больше нет сил, поэтому, дорогие аналитики, устраивайтесь поудобнее на своих диванах, и я начну небольшой (на самом деле большой) рассказ о самых популярных заблуждениях на тему того, что такое радиационная стойкость интегральных микросхем.


Рисунок 1. Непременная красивая картинка про космическое излучение и хрупкую Землю.
Читать дальше →
Total votes 231: ↑230 and ↓1+229
Comments117

SiC: микроэлектроника — это не только кремний

Reading time25 min
Views22K
Современная микроэлектроника практически полностью построена вокруг кремниевых КМОП-микросхем. Как вышло, что кремний опередил появившийся раньше германий и более перспективный арсенид галлия, я уже рассказывал раньше, а сегодня давайте поговорим о другом полупроводниковом материале, стремительно ворвавшемся в царство кремния и готовящемся остаться в нем всерьез и надолго. Этот материал — карбид кремния (SiC).


Статья получилась длинной, поэтому спойлеры: гегемонии кремния в микропроцессорах ничего не угрожает, но в силовой электронике SiC действительно намного лучше. В частности, внутри статьи можно будет увидеть чуть-чуть внутренностей автомобилей Tesla и много силовых полупроводниковых приборов.
Читать дальше →
Total votes 35: ↑35 and ↓0+35
Comments27

О метастабильности в электронике

Reading time8 min
Views15K
Многие начинающие разработчики часто недооценивают влияние асинхронности на работу цифровых схем. В проектах с одним тактовым генератором сложностей не возникает: схема полностью синхронна, и от разработчика требуется только соблюдать требования Setup и Hold. Но как только в системе появляется второй тактовый генератор, возникает проблема CDC – Clock Domains Crossing, связанная с асинхронностью работы участков схемы, работающих от независимых (асинхронных) генераторов. На практике эта проблема выливается в усложнение маршрута проектирования, связанное с особенностями статического временного анализа в САПР, а в железе проявляется в виде такого эффекта как метастабильность, и аномальное поведение триггеров. Собственно, о метастабильности здесь уже писали, но я предлагаю чуть глубже разобраться в проблеме.
Читать дальше →
Total votes 43: ↑43 and ↓0+43
Comments22

Монотонная кубическая интерполяция

Level of difficultyMedium
Reading time8 min
Views3.8K

Привет, Хабр!

В данной статье разобран алгоритм монотонной кубической интерполяции, предложенный Фритчем и Карлосоном в работе [1].

На рисунке красным обозначен результат обычной кубической интерполяции Эрмита, а синим - монотонной, кругами - опорные точки траектории.

Примеры кода написаны на C++, исходники всей библиотеки лежат здесь. Также написана копия библиотеки на Java, исходники лежат здесь.

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

Information

Rating
Does not participate
Location
Россия
Registered
Activity