Как стать автором
Обновить
2
0
dmitrye1 @dmitrye1

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

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

Зачем Программисту Микроконтроллеров Линейная Алгебра (или Как Найти Угол Между Векторами?)

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

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

Это всяческие встраиваемые системы, где есть подвижные, вращающиеся детали: PTZ камеры, поворотные платформы для радаров, турели, ветрогенераторы, солнечные панели, SDR обработка и прочее.

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

Читать далее
Всего голосов 21: ↑18 и ↓3+21
Комментарии105

Как запустить Mixtral на своём компьютере

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

Всякий раз, когда выходит новая хорошая публичная ИИ модель, Хабр наполняется вопросами "Как нам её попробовать" и неправильными ответами, будто нужно платить за какие-то сервисы или иметь железа на сто лямов. Поэтому я вновь напишу инструкцию, как запустить новейший mixtral-8x7 на обычных средних компьютерах.

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии7

Функциональное программирование в Python: ежедневные рецепты

Уровень сложностиСредний
Время на прочтение21 мин
Количество просмотров15K
Как говорится, спроси пять программистов, что такое функциональное программирование, получишь шесть разных ответов. В целом это программирование через функции в их математическом понимании, то есть когда функция принимает что-то на вход и что-то возвращает на выходе, не меняя глобального состояния.

В своей команде — команде разработки инструментов для разработчиков под KasperskyOS — мы создаем разные интересные консольные утилиты, эмулятор, обеспечиваем интеграцию с IDE и так далее. И для этого мы используем разные языки — C++, C, TypeScript; но больше всего пишем на Python.



В этой статье, которая написана по следам моего выступления на конференции PiterPy, я обращаюсь к практикующим разработчикам — расскажу о том, какие функциональные приемы можно использовать в этом языке. Сконцентрируюсь на практике — на тех примерах, которые можно использовать уже буквально сейчас, не переписывая свой проект.
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии3

Компиляция моделей МО в С

Уровень сложностиСложный
Время на прочтение28 мин
Количество просмотров5.4K

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

Недавно у меня состоялся приятный разговор с моим другом Крисом. Он познакомил меня с основами машинного обучения, когда я разбирал написанный Андреем Карпаты micrograd.

Для тех, кто не знает, micrograd – это небольшая реализация нейронной сети, написанная на чистом Python без библиотек, в которой вычислительными единицами выступают не векторы и матрицы, а скалярные величины.
Читать дальше →
Всего голосов 36: ↑35 и ↓1+52
Комментарии0

30 команд Git, необходимых для освоения интерфейса командной строки Git

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

Git — самая популярная в мире распределённая система контроля версий. Линус Торвальдс, разработчик ядра ОС Linux, создал этот инструмент ещё в 2005 году, а сегодня Git активно поддерживается как проект с открытым исходным кодом. Огромное количество открытых и коммерческих проектов используют Git для контроля версий.

В данной статье перечисляются самые основные команды, которые следует знать разработчику, чтобы освоить управление репозиториями GitHub на высоком уровне. Ознакомиться с ними будет полезно как новичкам, так и опытным разработчикам.
Читать дальше →
Всего голосов 64: ↑49 и ↓15+54
Комментарии63

OpenShift 4.5, лучшие практики edge-разработки и горы полезных книг и ссылок

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


Полезные ссылки на живые мероприятия, видео, митапы, техтолки и книги – ниже в нашем еженедельном посте.
Читать дальше: OpenShift 4.5, лучшие практики edge-разработки и горы полезных книг и ссылок
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Аппаратный ключ шифрования за 3$ — возможно ли это?

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

Итоговый результат — ключ размером с флешку

Повсеместное шифрование и, как следствие, обилие ключей заставляет задуматься об их надежном хранении. Хранение ключей на внешних устройствах, откуда они не могут быть скопированы, уже давно считается хорошей практикой. Я расскажу о том, как за 3$ и 2 часа сделать такой девайс.
Читать дальше →
Всего голосов 151: ↑151 и ↓0+151
Комментарии151

Альтернативное управление окнами в Linux

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

Я из тех, кто ставит на Caps Lock переключение раскладки потому, что лень нажимать 2 клавиши, когда можно нажимать одну. Я бы даже хотел 2 ненужные клавиши: одну бы я использовал для включения английской раскладки, а вторую для русской. Но вторая ненужная клавиша — это вызов контекстного меню, которая настолько ненужная, что выпиливается многими производителями ноутбуков. Так что приходится довольствоваться тем, что есть.


А ещё я не хочу при переключении окон искать их иконки на панели задач, ловить взглядом названия при листании через Alt+Tab, листать рабочие столы и т. д. Я хочу нажать комбинацию клавиш (в идеале вообще одну, но свободных ненужных клавиш уже нет) и сразу попасть в нужное мне окно. Например так:


  • Alt+F: Firefox
  • Alt+D: Firefox (Private Browsing)
  • Alt+T: Terminal
  • Alt+M: Калькулятор
  • Alt+E: IntelliJ Idea
  • и т. д.

Причём, по нажатию, например, на Alt+M я хочу видеть калькулятор вне зависимости от того, запущена ли в данный момент эта программа. Если запущена, то её окну надо передать фокус, а если нет — запустить нужную программу и передать фокус когда она загрузится.


На случаи, которые не покрываются предыдущим сценарием, я хочу иметь универсальные комбинации клавиш, на которые можно легко назначить любые из открытых окон. Например, у меня назначены 10 комбинаций от Alt+1 до Alt+0, которые не привязанные ни к каким программам. Я могу просто нажать Alt+1 и окно, которое сейчас в фокусе, будет получать фокус при нажатии Alt+1.


Под катом описание ещё пары фич и ответ на то, как можно это сделать. Но сразу предупрежу, что подобная кастомизация «под себя» может вызвать сильную зависимость и даже ломку при необходимости использовать Windows, Mac OS или даже чужой компьютер с Linux.

Читать дальше →
Всего голосов 33: ↑33 и ↓0+33
Комментарии54

Шпаргалка для сисадмина по SELinux: 42 ответа на важные вопросы

Время на прочтение6 мин
Количество просмотров30K
Перевод статьи подготовлен специально для студентов курса «Администратор Linux».




Здесь вы получите ответы на важные вопросы о жизни, вселенной и всем таком в Linux с улучшенной безопасностью.

«Важная истина, что вещи не всегда являются тем, чем кажутся, общеизвестна…»

―Дуглас Адамс, Автостопом по Галактике

Безопасность. Повышение надежности. Соответствие. Политика. Четыре Всадника Апокалипсиса сисадмина. В дополнение к нашим ежедневным задачам — мониторингу, резервному копированию, внедрению, настройке, обновлению и т. д. — мы также отвечаем за безопасность наших систем. Даже тех систем, где сторонний провайдер рекомендует нам отключить усиленную безопасность. Это похоже на работу Этана Ханта из “Миссия невыполнима”.
Читать дальше →
Всего голосов 18: ↑17 и ↓1+23
Комментарии4

Я фотограф и я сделаю сам себе рабочий инструмент

Время на прочтение5 мин
Количество просмотров14K
«Китайцы» делают очень крутые штуки, в том числе в сфере девайсов для фотографов. За последние 10 лет очень подтянули качество, стали разрабатывать свои уникальные продукты, которые бывает выше на голову чем от «именитых производителей». Но, почему то практически в каждом продукте находится хотя бы один, но огромный жирный минус. Такое ощущение, что разработчикам электроники прямо таки ставят в тз пунктик: «ложка дегтя — минимум 200 грамм».

Не так давно я решил побаловать себя постоянным светом и купил себе несколько «световых палок» yongnuo yn-360. Палки оказались просто волшебными, но без жирного минуса конечно же не обошлось — android приложение для дистанционного управления, оказалось практически не рабочим. Кроме мелких минусов приложения — главный, это невозможность управления несколькими устройствами сразу. Этот минус сделал бесполезным функцию управления, так как все равно приходилось бегать от палки до палки и регулировать свет вручную.

У меня был опыт в программировании, поэтому за несколько вечеров ситуация была исправлена.

image
Всего голосов 29: ↑28 и ↓1+41
Комментарии15

Файловые разрешения в Linux

Время на прочтение5 мин
Количество просмотров13K
Всем привет. Мы активно вливаемся в работу и уже в январе готовим много мощных запусков. Среди прочих, объявлен набор на новый поток полюбившегося всем курса «Администратор Linux». В преддверии запуска традиционно делимся переводом полезного материала.




Файловые разрешения предлагают безопасную альтернативу исполняемым файлам SUID, но могут показаться немного запутанными на первый взгляд.
Читать дальше →
Всего голосов 8: ↑6 и ↓2+7
Комментарии1

Улучшение производительности Zabbix + PostgreSQL при помощи партиционирования и индексирования

Время на прочтение24 мин
Количество просмотров28K
Примерно год назад передо мной и моими коллегами была поставлена задача разобраться с использованием популярной системы мониторинга сетевой инфраструктуры — Zabbix. После изучения документации мы сразу же перешли к нагрузочному тестированию: хотели оценить с каким количеством параметров может работать Zabbix без заметных падений производительности. В качестве СУБД использовали только PostgreSQL.

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

О результатах проделанной работы я и хочу поделиться в данной статье. Статья будет полезна как администраторам Zabbix, так и PostgreSQL DBA, а также всем желающим лучше понять и разобраться в популярной СУБД PosgreSQL.

Небольшой спойлер: на слабой машине при нагрузке в 200 тысяч параметров в минуту нам удалось снизить показатель CPU iowait с 20% до 2%, уменьшить время записи порциями в таблицы первичных данных в 250 раз и в таблицы агрегированных данных в 32 раза, уменьшить размер индексов в 5-10 раз и ускорить получение исторических выборок в некоторых случаях до 18 раз.
Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии19

GIT изнутри: введение (перевод)

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

Привет, Хабр! Представляю вашему вниманию перевод статьи "Git for Computer Scientists" автора Tommi Virtanen.


GIT изнутри: введение


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


Кому будет интересно и, возможно, полезно: людям, ежедневно работающим с Git (т.е. каждому второму, если не первому разработчику ПО), и желающим лучше понять механизм его работы.


Примечание: для лучшего понимания статьи следует иметь представление о таком звере, как направленный ациклический граф (directed acyclic graph, DAG).

Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии2

Sampler. Консольная утилита для визуализации результата любых shell команд

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

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


Sampler


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


Код доступен на гитхабе. Инструкции по установке — для Linux, macOS и (экспериментально) Windows.

Читать дальше →
Всего голосов 298: ↑297 и ↓1+296
Комментарии54

Гетерогенная конкурентная обработка данных в реальном времени строго один раз

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

Конкурентная сосиска


Аннотация


Обработка данных в реальном времени ровно один раз (exactly-once) — задача крайне нетривиальная и требующая серьезного и вдумчивого подхода на всей цепочке вычислений. Некоторые даже считают, что такая задача невыполнима. В реальности хочется иметь подход, обеспечивающий отказоустойчивую обработку вообще без каких-либо задержек и использование различных хранилищ данных, что выдвигает новые еще более жесткие требования, предъявляемые к системе: concurrent exactly-once и гетерогенность персистентного слоя. На сегодняшний день такое требование не поддерживает ни одна из существующих систем.


Предложенный подход последовательно раскроет секретные ингредиенты и необходимые понятия, позволяющие относительно просто реализовать гетерогенную обработку concurrent exactly-once буквально из двух компонент.


Введение


Разработчик распределенных систем проходит несколько стадий:


Стадия 1: Алгоритмы. Здесь происходит изучение основных алгоритмов, структур данных, подходов к программированию типа ООП и т.д. Код исключительно однопоточный. Начальная фаза вхождения в профессию. Тем не менее, достаточно непростая и может длиться годами.


Стадия 2: Многопоточность. Далее возникают вопросы извлечения максимальной эффективности из железа, возникает многопоточность, асинхронность, гонки, дебагинг, strace, бессонные ночи… Многие застревают на этом этапе и даже начинают с какого-то момента ловить ничем не объяснимый кайф. Но лишь единицы доходят до понимания архитектуры виртуальной памяти и моделей памяти, lock-free/wait-free алгоритмах, различных асинхронных моделях. И почти никто и никогда — верификации многопоточного кода.


Стадия 3: Распределенность. Тут такой треш творится, что ни в сказке сказать, ни пером описать.

Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии6

Радио-86РК на ESP-01S

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

Несколько лет назад на сайте гремела новость об эмуляции Радио-86РК на Maximite. Теперь для этого лучше подходит ESP-01S. Идею, витающую в воздухе, претворил в жизнь участник форума ZX-PK Алексей Пресняков.
Читать дальше →
Всего голосов 48: ↑48 и ↓0+48
Комментарии41

Cuckoo 2.0. Собираем лучшую open source платформу анализа вредоносных файлов

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

Cuckoo Sandbox logo
Приветствую Хабр!


4 года назад я публиковал инструкцию по сборке платформы динамического анализа вредоносных файлов Cuckoo Sandbox 1.2. За это время проект успел обрасти внушительным функционалом и огромным комьюнити, недавно обновившись до версии 2.0, которая больше полутора лет висела в стадии Release Candidate.


Я наконец-то подготовил для вас полнейший мануал по сборке Cuckoo Sandbox 2.0.5 со всеми плюшками, какие есть в проекте на данный момент, с упаковкой Cuckoo в venv и без использования root, добавив более 12-ти security утилит в песочницу! По совокупности собранного материала, не побоюсь сказать: "Это самый полный и выверенный шаг в шаг гайд из всех опубликованных в интернете на данный момент". Тем кто, осилит статью до конца — дам маленький совет, что делать, когда песочница собрана и как получить максимальный профит с автоматизации процессов ИБ своими сиилами с помощью опенсорса. Всем гикам, вирусным аналитикам, безопасникам, ребятам из SOC, CERT, CSIRT и просто любителям потыкать кнопки в терминале — добро пожаловать под кат!

Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии6

Программирование и передача данных в «Ардуино» по «воздуху» с помощью ESP8266. Часть Третья. Здравствуй, «ANDROID»

Время на прочтение18 мин
Количество просмотров42K
Предлагаю вам, уважаемые читатели GeekTimes, очередную статью из цикла по использованию микросхемы ESP8266 в качестве беспроводного моста для AVR микроконтроллеров, на примере аппаратной платформы Arduino Uno (Nano). В этот раз для полета на Луну управления платформой мы задействуем вместо компьютера устройство на базе «ANDROID». Ну, например, смартфон.



Подробности под катом:
Читать дальше →
Всего голосов 20: ↑16 и ↓4+12
Комментарии25

Введение в VxLAN

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


Сегодня мы поговорим об очередной интересной технологии — VxLAN — что это за зверь и с чем его едят, да и вообще нужен ли он вам. Мое знакомство с данной технологией началось с изучения гипервизоров — я постоянно натыкался на термин VxLAN, но что это и как работает не знал. В один прекрасный день я решил все-таки прочитать, что это за зверь. Прочитав пару-тройку статей, я усвоил для себя основные аспекты работы технологии и облегченно выдохнул, прочитав, что данная технология — удел гипервизоров и к транспорту имеет косвенное отношение (хотя, как оказалось позже отношение VxLAN к транспорту имеет самое, что ни на есть прямое). После чего про технологию благополучно забыл и вернулся я к ней снова только через год, когда начал погружаться в EVPN — большинство статей и мануалов были именно о симбиозе EVPN и VxLAN. Литературы по данной технологии много, особенно если вы владеете английским. Я же попробую в данной статье рассказать об основах работы данной технологии и показать на практике — как это настраивается и работает. Но начнем с MPLS…
Читать дальше →
Всего голосов 36: ↑35 и ↓1+34
Комментарии7

Стандарты и шаблоны для ТЗ на разработку ПО

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

Введение


Недавно ко мне обратились, чтобы я посоветовал стандарты для написания технического задания (ТЗ) на разработку автоматизированных систем (АС) и программного обеспечения (ПО). Вот думаю, сейчас зайду в Яндекс, найду подходящую статейку и отправлю её. Но не тут-то было! Одной статьи, где перечисляются стандарты для ТЗ, включая шаблоны и примеры готовых документов, я не нашел. Придется сделать такую статейку самому…

И так, основные стандарты, методологии и своды знаний, где упоминается ТЗ или SRS (Software (or System) Requirements Specification):

• ГОСТ 34
• ГОСТ 19
• IEEE STD 830-1998
• ISO/IEC/ IEEE 29148-2011
• RUP
• SWEBOK, BABOK и пр.
Читать дальше →
Всего голосов 36: ↑34 и ↓2+32
Комментарии22

Информация

В рейтинге
5 440-й
Зарегистрирован
Активность