Наверное, каждый задавался вопросом, почему умножение матриц такое. В этой статье мы разберём из каких соображений оно вводится именно так.
Хоккеист — на микроконтроллерах программист
Анализ задачи с собеседования в Google: конь и телефонные кнопки
Для начала я должен заявить: хотя собеседование кандидатов — это одна из моих профессиональных обязанностей, в этой статье представлены лишь личные наблюдения, истории и мнения. Они ни в коем случае не являются официальными заявлениями Google, Alphabet или любых других лиц или организаций.
Это была первая задача, которую я использовал в своей карьере собеседующего, она же первая утекла и была запрещена к использованию. Мне она нравится потому, что обладает очень приятными свойствами:
- Её легко сформулировать и понять.
- У неё есть множество решений, каждое из которых требует разной степени знаний алгоритмов и структур данных. Кроме того, здесь важны логические рассуждения.
- Каждое решение можно реализовать в относительно малом объёме кода, поэтому она идеальна для ограниченных по времени собеседований.
Если вы студент или ищете работу в технологической сфере, то, надеюсь, после прочтения статьи вы будете лучше понимать, чего ожидать от задач на собеседованиях. Если же вы проводите собеседования, то мне бы хотелось поделиться своим мыслительным процессом и стилистическим подходом к собеседованиям.
VPN с Mobile IP на Raspberry Pi. WG туннель
Для умных дядь в статье ничего интересного, это статья про обычный туннель. Оно для самых маленьких, но отчаянно нуждающихся. Никаких wg-quick'ов тут, впрочем, не будет. :)
Когда я стал упорядочивать «знания» ввиде этой статейки, и понял, что в итоге получилось, то заметил, что информации по данной теме, оказывается, предостаточно (даже на Хабре), жаль, что осознал я это только уже когда всё сделал и понял, что мне, собственно, нужно было гуглить. В общем, пусть останется, дабы кто‑то, кто гуглит так же неправильно, мог случайно на эту статью наткнуться и что‑то полезное для себя почерпнуть. В процессе реализации я на каждом шаге споткнулся по нескольку раз, поэтому решил прокомментировать тут всё максимально подробно.
Паттерны многопоточности в Go
В этой статье я постараюсь рассказать о том как их компоновать в самые популярные паттерны для поддержки масштабируемости и удобства сопровождения будущих систем.Почему же многопоточность так важна? Сегодняшние приложения должны быть быстрыми и отзывчивыми, а для этого нужно выполнять множество задач одновременно.
Представь себе, что твоя программа обрабатывает запросы пользователей, одновременно загружает данные с сервера и проводит вычисления. И все это должно происходить без задержек и ошибок. Для всего этого у тебя есть горутинки! Однако если с ними обращаться неосторожно, то могут возникнуть такие ошибки, которые сложно будет сразу отловить. Вот здесь на сцену выходят паттерны многопоточности, которые помогают структурировать и оптимизировать параллельную работу.
Лучшие способы обойти блокировку Discord на данный момент
Всем привет, как мы могли заметить у многих появились проблемы с дискордом, а именно у многих нет подключения, когда вы заходите в голосовой канал. (Подключение к RTC.. и не установлен маршрут )
Как можем увидеть проблем у самого дискорда нет https://discordstatus.com/, приступаем к фиксу!
Регулярные выражения простыми словами. Часть 1
Разработчики делятся на два типа: тех, кто уже понимает регулярные выражения и порой решает сложные задачи одной строкой, и тех, кто все еще боится и всячески их избегает. Эта статья специально для вторых, чтобы им было проще стать первыми. Она либо поможет преодолеть «регекспофобию», либо усугубит ее. В любом случае, добро пожаловать под кат.
REDIS: такой простой и такой сложный
Меня зовут Андрей Комягин, я СТО компании STM Labs. Мы занимаемся разработкой очень больших распределённых высоконагруженных систем для различных отраслей и в своей работе широко используем open-source решения, в том числе СУБД Redis. Недавно я подробно рассказывал об этой системе на конференции Saint HighLoad++, а теперь с удовольствием поделюсь основной информацией с читателями Хабра. Итак, поехали.
Бесплатный курс компьютерной графики для детей: 11 уроков с нуля
Создание компьютерной графики – востребованное направление. И справиться с ним может даже подросток. Мы хотим доказать это на примере бесплатного видеокурса Blender и компьютерной графики для школьников от 13-14 лет и старше.
Специалисты, способные создавать 2D- и 3D-изображения, модели, подобные предметы и объекты становятся все более востребованными. Они в той или иной мере вовлекаются в киноиндустрию, веб-разработку, создание игр и в другие сферы. Перспективность направления очевидна: речь не столько о вероятном профессиональном будущем, сколько о связи с графическим дизайном – еще одной распространенной областью, вытолкнуть человека из которой пока не может ни одна нейросеть.
Мы хотим предложить нашим читателям подборку бесплатных видеоуроков. Они помогут освоить основы и вникнуть в азы направления и использования программы Blender. Для начала предлагаем окунуться в теорию и разобраться, чем интересны инструменты среды Blender и почему ей отдают предпочтение современные специалисты, занятые созданием 2Д- и 3Д-графики.
FP32, FP16, BF16 и FP8 — разбираемся в основных типах чисел с плавающей запятой
Привет, Хабр! Сегодня давайте поговорим о том, как современные вычисления на GPU стали более гибкими и эффективными благодаря различным форматам чисел с плавающей запятой (FP64, FP32, FP16, BFLOAT16 и FP8). Эти форматы не просто числа — за каждым из них стоит конкретная область применения. В разных ситуациях мы сталкиваемся с задачами, где важны либо скорость, либо точность, и правильно выбранный тип floating point помогает оптимизировать ресурсы. Давайте разберём всё это на примерах и поймём, в каких задачах каждый из этих форматов будет наиболее полезен.
Как написать ТЗ на простую программу (калькулятор)
Рассмотрим, как может выглядеть работа по созданию ТЗ на несложную программу.
Возьмём калькулятор, который будет выполнять базовые арифметические операции (+, -, *, /).
Работу можно построить в 2 этапа:
Создаем свою простую (C++) библиотеку с документацией, CMake и блекджеком
В мире программирования создание собственных библиотек — это не просто возможность пополнения своего портфолио или способ структурировать код, а настоящий акт творческого самовыражения (и иногда велосипедостроения). Каждый разработчик иногда использовал в нескольких своих проектах однообразный код, который приходилось каждый раз перемещать. Да и хотя бы как упаковать свои идеи и знания в удобный и доступный формат, которым можно будет поделиться с сообществом.
Если вы ловили себя на мысли: «А почему мне бы не создать свою полноценную библиотеку?», то я рекомендую прочитать вам мою статью.
Эту статью вы можете использовать как шпаргалку для создания проектов, и не только библиотек.
Некоторые из вас могут подумать что мы изобретаем велосипед. А я в ответ скажу — сможете ли вы прямо сейчас, без подсказок, только по памяти, нарисовать велосипед без ошибок?
Электросмачивание как интересный эффект для применения в самоделках и не только
Существует весьма любопытный эффект, который в данный момент уже применяется во множестве направлений, и суть его заключается в изменении взаимодействия жидкости с поверхностью вследствие приложенной разницы потенциалов между жидкостью и поверхностью.
Сфера применения этого эффекта весьма широка и позволяет использовать его как профессиональных целей, так и для разнообразных самоделок.
Реализация подписчиков в c++ — пляшем от печки, но уже совсем далеко
В прошлой статье мы написали вполне себе разумный оповещатель (notifier) для рассылки уведомлений подписчикам (subscribers). Он достаточно удобен, там нет ничего лишнего - всего 130 строчек кода. Моменты, важные для клиентов этого кода, продуманы. Как например, многопоточный вызов доставки оповещений с минимальными взаимными блокировками и возможность отписывать прямо из обработчика подписчика.
На этом бы и остановиться, но мы шагнём дальше, добавив немного шаблонной магии и сделав код "академичнее".
Python: как переменные работают на самом деле? Погружаемся в байткод и C
Привет! Меня зовут Никита Соболев, я core-разработчик языка программирования CPython, а так же автор серии видео про его устройство.
Сегодня я хочу рассказать, как на самом деле работают переменные в CPython.
Под катом куча кишков питона и видео на 46 минут с дополнительными кишками питона (ни один настоящий питон не пострадал при написании данной статьи).
Каждый имеет право быть похожим на себя. Расстройство аутистического спектра и карьера в IT: личный опыт
«Я офигеваю от нелогичности окружающих, а они — от того, что я робот». Эта фраза идеально описывает особенности моего взаимодействия с окружающим миром. Я такой же робот. Или инопланетянин. Я могу только догадываться, каким я кажусь окружающим. Но я знаю, что другие считают меня по меньшей мере странным. Это взаимно. Многие поступки окружающих людей кажутся мне совершенно нелогичными и иррациональными.
Долгое время это ставило меня в тупик. Я не понимал, в чём дело, и считал себя глубоким интровертом, замкнутым мрачным типом, совсем не понимающим людей. Всё гадал, что же со мной не так...
Как починить GoodbyeDPI, если он перестал работать 22.09.24
Решение нашел в комментариях оригинального гитхаба от ValdikSS (работает только для самой последней версии 0.2.3rc3-2).
Реализация подписчиков в c++ — пляшем от печки
За время долгой работы в IT непосредственно с кодом, подмечаю одну особенность, что писать приходится всё меньше (в последнее время практически не писать), а ревьювить всё больше. И всё чаще видны нагромождения тонн кода, которые по факту не нужны, не вносят никакой дополнительной пользы. Но создают раз за разом головную боль для следующего читающего этот код программиста, который вынужден что-то поправить или дописать в этом коде. По итогу, программист махает рукой на эту чудную "архитектуру"... и пишет ещё один wrapper / adapter над ним. И, таким образом, передаёт пламенный привет последующим коллегам в будущее ;).
Попробуем взять и переписать с минимумом кода одну из очень часто встречающихся задач - рассылку уведомлений объектам в коде при возникновении какого-то события. На первый взгляд кажется, что в c++ уже есть все инструменты, чтобы написать этот код в несколько строк: функтор std::function<...>
- чтобы сохранить отложенный вызов, контейнер std::vector<std::function...>
- чтобы сохранить цепочку отложенных вызовов. По которым нужно просто пробежаться при возникновении события и вызвать сохранённые функторы...
Доктора Кнут, Моррис и Пратт, или Как я перестал бояться и полюбил префикс-функцию
Если вы не знаете, что такое префикс-функция строки, не знаете, как она вычисляется, или, что самое главное, не до конца понимаете, почему алгоритм вычисления префикс-функции работает за линейное время, то эта статья для вас.
Я прошел через череду осознаний и озарений, прежде чем достичь просветления, и теперь предлагаю вам пройти этот путь вместе со мной.
Дорогая, я уменьшил {fmt}: уменьшил размер до 14kB и избавился от рантайма C++
Библиотека форматирования {fmt} известна своим небольшим влиянием на размер бинарников. Чаще всего её код в несколько раз меньше по сравнению с такими библиотеками, как IOStreams, Boost Format или, что иронично, tinyformat.
Давайте разберем, как можно уменьшить размер бинарников еще больше!
Что такое TDD. Создаем валидатор паролей на регулярках
Приветствую всех, в данной статье я кратко расскажу и покажу, что такое TDD на очень простом примере.
Итак, представим себя разработчиком в вымышленной ИТ компании, перед которым стоит задача: написать валидатор пользовательских паролей, при этом стараясь следовать принципам TDD.
Начнем разработку нашей программы с ознакомления с требованиями службы безопасности:
Информация
- В рейтинге
- Не участвует
- Откуда
- Челябинск, Челябинская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность