Мы собрали 8 вспомогательных книг для тех, кто решил связать свою жизнь с python. Разнообразные книги для вдумчивого знакомства.
Присаживайтесь поудобнее, открывайте блокноты для записей.
Пользователь
Про алгоритмы распознавания по отпечаткам пальцев человека написано много статей. Описание алгоритмов обработки и сравнения отпечатков пальцев включено во многие учебники по компьютерному зрению и обработке цифровых изображений. Целью этой заметки не является дать исчерпывающую информацию по алгоритмам распознавания отпечатков пальцев, а на примере решения задачи сравнения отпечатков пальцев показать, как можно использовать и комбинировать между собой классические алгоритмы Сomputer Science (обход графа и нахождение наибольшей общей подпоследовательности) для решения практической задачи.
Дан набор данных, в нем — информация об отделе, эффективности, длительности работы, количестве отгулов, о рабочих часах нескольких сотрудников.
Чтобы увидеть проблемы с эффективностью нам нужно показать взаимосвязь между двумя числовыми переменными. Легко! Скаттерплот (он же график рассеяния) нам решит эту задачку на раз-два.
Но! Нам нужно не просто построить диаграмму, но и оформить ее таким образом, чтобы вывод был ясен. Вот с этим у нас и возникнут проблемы в самых разных инструментах…
Библиотека форматирования {fmt} известна своим небольшим влиянием на размер бинарников. Чаще всего её код в несколько раз меньше по сравнению с такими библиотеками, как IOStreams, Boost Format или, что иронично, tinyformat.
Давайте разберем, как можно уменьшить размер бинарников еще больше!
Как выучить английский язык? Задавались ли вы этим вопросом? Учили ли вы его в школе и институте, что б потом осознать, что дальше фразы «My namy is...» ваших знаний не хватает, не смотря на потраченное время и усилия?
Если ответ на часть из этих вопросов — да, то добро пожаловать под кат :)
Чтобы сразу расставить все точки над i:
Всем привет! Продолжаем наш разговор об использовании электронных таблиц в работе OSINT-аналитиков. В первой части нашего цикла статей мы говорили об автоматизации генерации дорков (расширенных операторов поисковых запросов). Сегодня мы коснемся вопроса интеграции в таблицы данных из внешних API. За подробностями добро пожаловать под кат!
Начну с небольшой шутки:
"Знаете ли вы, что до изобретения часов людям приходилось активно ходить повсюду и спрашивать время?"
Этот незамысловатый анекдот иллюстрирует важную концепцию: информация, доступная одному члену группы, может распространяться среди остальных. Эта идея имеет глубокий смысл и находит применение во многих областях.
Рассмотрим самоорганизующиеся системы в природе, например, стаи птиц или рыб. Представим такую систему как совокупность частиц, где каждая особь – это отдельная частица. Можно предположить, что движение каждой частицы в пространстве определяется двумя основными факторами:
Индивидуально оптимальная позиция: то, что особь считает наилучшим для себя.
И глобально оптимальная позиция: определяемая коллективным взаимодействием частиц, своего рода "инструкция", получаемая особью от "лидера группы".
В связи с этим возникает естественный вопрос: что считать "оптимальным" в природе? Что является наилучшим для отдельной особи и для всей группы? Не будучи биологом, я не могу дать ответы на эти вопросы. Однако, наблюдая за подобным поведением в природе, мы можем разработать эффективный алгоритм оптимизации. Другими словами, определив критерии "оптимальности", мы можем применить этот эволюционный подход для оптимизации заданной функции.
Данный алгоритм известен как оптимизация роем частиц (Particle Swarm Optimization, PSO). Возможно, это звучит несколько сложно. Что подразумевается под "оптимизацией"? Какова роль математики в этом процессе? Что именно оптимизируется? В статье я постараюсь подробно разъяснить все эти моменты. Более того, мы применим ООП на Python для создания собственного класса ParticleSwarmOptimizer(). И таким образом, мы пройдем путь от теоретических основ PSO до их практической реализации.
Итак, приступим! Желаю приятного чтения.
Хабр, привет! Сегодня обсудим, как проверять много гипотез в одном эксперименте. Разберёмся, почему растут вероятности ошибок. Познакомимся с метриками множественного тестирования и поправками, которые позволяют их контролировать. Узнаем, как оценить необходимый размер групп и повысить чувствительность.
Мало того что наше восприятие искажено строго трёхмерным пространством (точнее не искажено, а работает только в нём), так ещё и это воспринимаемое нами трёхмерное пространство неоднородно — одно из измерений строго направлено (верх и низ) и задано гравитацией. Если вперёд и назад, влево и вправо зависит от нашего положения и, когда мы разворачиваемся, легко переходит одно в другое без каких‑либо когнитивных усилий и проблем в восприятии — то с верхом и низом так не происходит. Подвесь нас вниз головой, направь куда угодно в любом положении — верх останется верхом, а низ — низом. Мы будем двигаться именно вверх, стоя в поднимающемся лифте, и будем спускаться именно вниз, ныряя с аквалангом, хотя в обоих случаях мы движемся головой вперёд )
Понятно от чего так и зачем — мозг эволюционировал и родился в гравитации, но речь не об этом.
Говорят, есть ещё четвертое недо‑ или пере‑ измерение — время. Его мы воспринимаем ещё более направленным и постоянно в нём движемся.
В попытках порассуждать о восприятии только в трёхмерном пространстве, можно предположить о том, что в одномерном пространстве мы тоже мыслим, и привести в качестве примера как раз время. Но пространство предполагает возможности покоя и движения вдоль измерений в любом направлении (даже если измерение направлено в восприятии, например, гравитацией). С движением обратно во времени у нас всё сложно, с остановкой времени — ещё гораздо сложнее. Но пока закроем на это г̶л̶а̶з̶а̶ мозг и предположим, что ок — у нас есть в восприятии примеры трехмерного и одномерного (время) пространств. Но как быть с двумерным? Можете себе представить 2 разных ортогональных друг другу направления времени? Я — нет 🙂
На связи Егор из блока поддержки платформы F5, сегодня предлагаем вспомнить основы systemd. Поскольку утилит и возможностей в нем много, а новые функции добавляются регулярно, следить за всем этим может быть непросто, так что начнем с основ.
Systemd — это init процесс, который запускается при загрузке ядра операционной системы linux и его задачей является форкать другие процессы. Информацию о том, какие процессы необходимо исполнить он берет из, так называемых “юнитов” (systemd unit - https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html). Юниты бывают различных типов, каждый из которых выполняет определенную задачу.
В этой статье я кратко изложу абстрактную идею того, что такое внутренняя размерность геометрической фигуры, попутно введя один из вариантов размерности Минковского, а затем расскажу про другой, приблизительный способ оценки внутренней размерности, который применим к реальным (то есть, конечным) облакам точек и называется Two Nearest Neighbours (TwoNN). В конце статьи для интересующихся будут оставлены ссылки на несколько научных статей, в которых второй способ используется для анализов эмбеддингов нейросетей.
Итак, давайте разбираться!
В этой статье рассмотрено решение задачи по нахождению всех возможных цепочек чисел в матрице, где каждое число соединяется с другим числом, если их сумма является квадратом. Изначально данная задача была предложена в рамках собеседования, что делает её потенциально интересной для тех, кто готовится к техническим интервью.
Хотя предложенный метод и демонстрирует способ решения задачи, важно отметить, что это решение не претендует на звание оптимального. Оно служит лишь одним из возможных подходов, и оптимальные решения могут варьироваться в зависимости от конкретных условий и требований задачи.
Статья также включает примеры кода на Scala, комментарии к методам и обсуждение возможных улучшений для более эффективного решения аналогичных задач.
Хочу написать про то, как мы презентуем данные другим. Технические специалисты часто сталкиваются с необходимостью доносить результаты своей работы до людей, которые не так глубоко погружены в тему. Однако, даже самые ценные выводы могут остаться непонятыми, если их неправильно представить. В этой статье я рассмотрю пять типичных ошибок, которые инженеры совершают при подготовке презентаций, и предложу способы их исправления.
Есть задача, а для кого-то почти мечта - реализовать нечеткую математику в ВКПа. И здесь отдельное спасибо Вячеславу Петухову за материал, ставший основой похода в нечеткую логику на базе автоматов. Правда, сам Вячеслав высказался отрицательно о реальности подобного "блицкрига", но, ведь, когда есть цель и неистребимое желание ее достичь, то, порой, даже невозможное становится возможным. Мне же, что там скрывать, очень захотелось в ВКПа создавать объекты на основе нечеткой логики, аналогичные объектам в SimInTech. Тем более, что когда-то теория нечетких множеств привлекала мое внимание, а понятие нечеткого регулятора и сейчас, если честно, бередит мои мысли...
Чтобы от чего-то оттолкнуться, был выбран проект из каталога демо-примеров платформы SimInTech из подкаталога "Автоматика и математика\Нечёткая Логика\Система поддержания уровня воды в баке". И на момент начала написания данной статьи мною уже были успешно реализованы некоторые из типовых блоков библиотеки "Нечеткая логика" платформы SimInTech (см. рис. 1). Заметим, что дополнительную информацию о нечеткой логике можно почерпнуть из справки платформы SimInTech, зайдя в раздел "Лабораторные работы по ВУЗам", затем в "Московский Политех" и в завершение - "Разработка системы нечеткого вывода".
Спустя годы проекты обрастают тёмными местами, в которые никто не хочет соваться, поскольку их сложно понять и легко сломать. Сегодня мы посмотрим на кейс рефакторинга такого кода с переводом на ООП рельсы при помощи паттернов, причём со стилем (современным).
Мы постоянно используем высокоуровневые команды git, такие как git add
и git commit
. Однако также существует другая группа команд git, которые обрабатывают низкоуровневые операции.
В этой статье мы создадим git‑коммит, используя низкоуровневые операции, а не команду git commit
.
Открываю серию статей про повседневное использование Linux и *BSD-систем в качестве основной ОС для работы. Начнем с общих принципов и выбора подходящего оборудования.
Разбирался я в низкоуровневой работе камер iPhone, и дошёл до FaceID — системы распознавания лиц, используемой Apple для разблокировки смартфона. И наткнулся внутри на интересную вещь: чип, единственное предназначение которого в том, чтобы вывести из строя FaceID. Навсегда.
О том, как в iPhone вообще работает FaceID, где там этот чип стоит, что именно он делает, зачем его сделали таким злым, и как в ремонте справляются с этой напастью — под катом!