Pull to refresh
2
0
Send message

Самовосстанавливающийся код

Level of difficultyEasy
Reading time8 min
Views4.4K

Рано или поздно компьютер сбоит. Если мы отметаем механические причины, то приходим к выводу, что неправильно отрабатывает какая-то часть кода какого-то драйвера и так далее. А теперь представьте, что программы состоят из «самовосстанавливающегося кода», который не просто выдаёт ту или иную ошибку, но и устраняет эту ошибку, а также предотвращает любые вредоносные программы, пытающиеся внести изменения.

Или допустим, вы работаете в компании с большой, постоянно растущей кодовой базой. Что, если бы ваш старый код пересмотрел свою структуру и внёс изменения, которые сделают ваш код более эффективным? Или внести необходимые обновления в библиотеку, которые принесут пользу вашей архитектуре.

Другими словами, что если бы был код, который сам себя восстанавливает и улучшает? Это можно сравнить с автоматическим выключателем. Обычно автомат срабатывает при перепаде напряжения, что приводит к отключению электричества. Говоря программным языком, автоматический выключатель просто возвращает ошибку после срабатывания. А теперь представьте, что этот автомат может устранять перепад напряжения до того как сработает, чтобы не было отключения электричества. Самовосстанавливающийся код в идеале работает как такой автомат.
Читать дальше →
Total votes 33: ↑31 and ↓2+34
Comments10

Разделяй и властвуй. Повышение эффективности алгоритмов. Часть 1

Level of difficultyMedium
Reading time5 min
Views10K

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

Но, что если нам надо перемножить два числа любой длины? Не LONG, не байт, не число от 1 до 10, а любые два числа, которое, имеют в общем случае длину n бит, а результат умножения может иметь длину 2n бит.

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

Давайте применим его к нашей задаче.

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

Читать далее
Total votes 21: ↑20 and ↓1+24
Comments17

Что под капотом у нейронной сети. Нейросеть c точки зрения математики и программирования

Level of difficultyEasy
Reading time3 min
Views28K

Цель данной публикации – комплексное рассмотрение строения искусственных нейронных сетей c точки зрения и математики и программного кода. В данной работе нейронная сеть реализуется на языке Python с использованием библиотеки tensorflow.keras. Статья сосредоточена в основном на строении и функционировании искусственной нейронной сети, поэтому такие этапы как обучение и т.д. в ней не затрагиваются.

Читать далее
Total votes 28: ↑15 and ↓13+9
Comments28

Мой первый супероптимизатор

Level of difficultyMedium
Reading time6 min
Views8.1K

Настало время для очередного бесполезного проекта.

Возможно ли для любого отдельно взятого фрагмента кода найти абсолютно оптимальный вариант, который будет давать тот же вывод? Несколько лет назад я наткнулся на этот принцип, называемый супероптимизация. Он не практичен, но сама его идея засела у меня в голове.

Смысл такой: сгенерировать все возможные пермутации инструкций кода и протестировать каждую полученную программу на равнозначность исходной. Вот, по сути, и всё. Несложно представить, что область возможных программ очень быстро разрастается, да и протестировать две программы на равнозначность тоже нелегко. Но, если эта задача была выполнима на компьютерах в 1987 году, то мой ноутбук определённо с ней справится.
Читать дальше →
Total votes 33: ↑32 and ↓1+43
Comments11

Как разместить телеграм бота на сервере. Хостим бота через Push в GIT

Level of difficultyEasy
Reading time4 min
Views32K

В этой статье мы рассмотрим, как развернуть телеграм бота на python в облаке через push в GIT одной командой

Читать далее
Total votes 9: ↑5 and ↓4+1
Comments12

Поиск объектов на изображении. Часть 1

Level of difficultyHard
Reading time3 min
Views20K

Компьютерное зрение - удивительная область, которая позволяет компьютерам видеть и понимать мир через обработку изображений и видео. Одним из наиболее популярных инструментов для работы с компьютерным зрением является библиотека OpenCV. В этой статье мы рассмотрим, как использовать OpenCV для распознавания обьектов на изображении.

Допустим мы хотим найти карты из игры Дурак онлайн. Вот такое изображение мы будем обрабатывать.

Читать далее
Total votes 12: ↑9 and ↓3+10
Comments6

Telegram API и библиотека TDLib для .NET платформ

Level of difficultyEasy
Reading time6 min
Views26K

image
Доброго времени суток! В Telegram существует два вида API: Telegram Bot API (обыкновенный бот с пометкой "бот") и Telegram API (клиент и юзербот, который обладает больше функционалом, чем просто бот). В этой статье пойдет речь о втором виде, а именно: что требуется для взаимодействия с Telegram API, какие средства нужны для написания кода своего юзербота на языке C#, как их правильно установить, а также каким образом использовать их.

Читать дальше →
Total votes 20: ↑18 and ↓2+25
Comments7

DeepPavlov «из коробки» для задачи NLP на Python

Level of difficultyEasy
Reading time5 min
Views5.5K

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

Сегодня с вами участник профессионального сообщества NTA Пётр Гончаров.

В этом посте я разобрал последовательность действий, выполненных при решении задачи автоматизированного анализа текстовой информации в публикациях на Хабре для составления отчётов: парсинга сайта и использования «из коробки» инструментов библиотеки DeepPavlov для поиска ответов на вопросы в заданном контексте.

Погрузиться глубже
Total votes 6: ↑5 and ↓1+6
Comments2

Сокеты в Python для начинающих

Reading time4 min
Views576K

Предисловие


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



Что это


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

Существуют клиентские и серверные сокеты. Вполне легко догадаться что к чему. Серверный сокет прослушивает определенный порт, а клиентский подключается к серверу. После того, как было установлено соединение начинается обмен данными.

Читать дальше →
Total votes 75: ↑50 and ↓25+25
Comments28

Autobinary: библиотека для простого обучения «деревяшек» — Part 1

Level of difficultyMedium
Reading time4 min
Views1.8K

Рождение autobinary, как и многих других фреймворков, началось с автоматизации рутинных задач. На тот момент мы создавали много look-alike моделей (в основе - модель бинарной классификации) по разным продуктам банка. Одни и те же скрипты писать было скучно. Более того – накопилось много разрозненных скриптов, которые хотелось привести к единому формату.

Что из этого получилось
Total votes 4: ↑4 and ↓0+4
Comments0

Data Fusion Contest. Издание 2-ое, переработанное и дополненное

Level of difficultyMedium
Reading time13 min
Views1.2K

Соревнование Data Fusion Contest 2023 в этом году состоялось во второй раз и собрало  сильнейшие индустриальные команды и отдельных любителей моделей алгоритмов машинного обучения. Кто-то участвовал впервые, а кто-то, уже умудрённый прошлым опытом был явно настроен только на победу.

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

Мы задали себе все эти вопросы и решили найти ответы на практике, подготовив для участников Data Fusion Contest 2023 очень нестандартное и по теме и по формату соревнование по Adversarial ML с атаками на модели машинного обучения, а также с их защитой.

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

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

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

Level of difficultyEasy
Reading time5 min
Views9.7K
image

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

— Почему у нас всё упало?
— Ничего не знаю, на моей машине работает — вот.

В компаниях, где сотни разработчиков разбросаны по стране, нередко можно встретить десятки разных конфигураций. Разработчики используют региональные зоопарки. Чтобы код одинаково работал на всех машинах, разработку можно перенести в облако. А еще инструменты из этой статьи помогут гибко управлять ресурсами и сократить Time To Market. И, конечно, иногда просто хочется покодить с планшета в отпуске.

Читать дальше →
Total votes 9: ↑6 and ↓3+6
Comments9

Безопасное использование JSON: Распространенные ошибки и решения

Level of difficultyEasy
Reading time9 min
Views10K

JSON — это инструмент, которым каждый веб-разработчик пользуется ежедневно. На первый взгляд кажется, что JSON слишком прост и незамысловат, чтобы читать про него целую статью. Но если вы не знаете, что такое санитизация данных, никогда не слышали про JSON Injection или XSS атаки, если информация о том, что JSON.parse и JSON.stringify принимают 2 и 3 аргумента для вас новость, то эта статья будет вам полезна.

Читать далее
Total votes 15: ↑9 and ↓6+6
Comments7

Как Почта моделирует риски потери отправлений

Level of difficultyMedium
Reading time7 min
Views6.2K

Привет! Я Кирилл Мамонов, главный аналитик отдела монетизации данных в Почтатехе. Расскажу, как мы создали модель, которая предсказывает до 97% возможных пропаж международных отправлений.

Читать далее
Total votes 11: ↑9 and ↓2+14
Comments23

Poetry: from zero to hero

Level of difficultyEasy
Reading time13 min
Views39K

Привет, Хабр! Меня зовут Тимур, я тружусь ML-инженером в одной сибирской IT-компании.

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

В качестве бонусов - готовая GitLab CI джоба для сборки и публикации пакетов, а также шаблон Dockerfile для multi-stage сборки образов в проектах с использованием Poetry.

Добро пожаловать под кат!

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

Все DETRы мира: претрейним, скидываем жирок и другие трюки. Часть 3

Level of difficultyHard
Reading time18 min
Views1.4K

Вы еще живы после прочтения прошлых двух частей, смогли их осилить и готовы двигаться дальше? Хорошо. Обещаю закрыть вопрос с ДЕТРами в этой чати.

Да-да, мы помним, DETR долго обучается?! А что если его предобучить, да ещё и в self-supervised манере?

Материал для ТГ-канала “Варим ML”.

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

Книга «Аппаратный хакинг: взлом реальных вещей»

Reading time16 min
Views7.6K
imageПривет, Хаброжители!

Встроенные системы трудно атаковать. Различных конструкций плат, процессоров и операционных систем слишком много, и это затрудняет их реверс-инжиниринг. Но теперь все станет проще — вас обучат два ведущих мировых эксперта по взлому аппаратного обеспечения. Пройдите ускоренный курс по архитектуре и безопасности встроенных устройств, узнайте об электрических сигналах, анализе образов прошивок и многом другом. Авторы объединяют теорию с практическими инструкциями, которые вы можете применить на реальном железе. Книга завершается описанием атак на такие устройства, как Sony PlayStation 3, Xbox 360 и лампы Philips Hue. В приложении приведен список всего оборудования, которое понадобится вам для домашней лаборатории, независимо от того, планируете ли вы модифицировать печатную плату или собирать и анализировать графики потребляемой мощности.

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

Мы не ждем, что у вас дома найдется лазерное оборудование, ускорители частиц или другие вещи, которые любителю не по карману. А если такое оборудование у вас есть, например в лаборатории вашего университета, то книга станет еще полезнее. Что касается целевых встроенных устройств, то мы предполагаем, что у вас есть физический доступ к ним и что вам интересно с ними поэкспериментировать. И самое главное: мы предполагаем, что вам нравится изучать новые методы, вы мыслите в рамках обратного проектирования и готовы к глубокому погружению в тему!
Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments4

Есть проблемы гораздо сложнее, чем NP-Complete

Level of difficultyMedium
Reading time8 min
Views10K


Люди часто сравнивают P и NP в таком духе, что проблемы P простые, а NP — сложные. Но это чрезмерное упрощение. На самом деле проблемы могут быть намного, намного сложнее, чем NP.

В этом смысле можно вспомнить интеллектуально-фантастический триллер Travelling Salesman (Коммивояжёр, 2012) о четырёх математиках, нанятых правительством США для решения самой сложной проблемы в истории информатики — равенства классов сложности P и NP (P versus NP problem). И им это удалось. Чиновник министерства обороны США предлагает за их алгоритм вознаграждение $10 млн. Но сами математики слишком хорошо понимают, какие разрушительные последствия принесёт в мир их открытие. Один из лучших фильмов про математику в истории кинематографа…
Читать дальше →
Total votes 35: ↑31 and ↓4+42
Comments3

Детекция и классификация заданных предметов по изображениям с разделением модели и данных

Level of difficultyMedium
Reading time9 min
Views5K

Целью данной статьи является описание моей квалификационной работы при получении профессии Data Scientist. Поскольку профессиональная деятельность до этого не была прямо связана с направлением ML, тема итоговой работы получилась несколько академической.

Как известно, для успешной работы системы детекции и классификации (СДК) с применением технологии компьютерного зрения необходим большой объем данных, в том числе разметка объектов на изображении. Такая предварительная подготовка трудоемка и длительна. До сих пор работа по разметке объектов для создания обучающей выборки проводится в ручном режиме, хотя уже применяется и определенная автоматизация. Один из возможных вариантов такой автоматизации и был рассмотрен в работе.

Читать далее
Rating0
Comments0

10 игр для изучения JavaScript

Reading time3 min
Views34K

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

Без лишних слов, представляю десять фантастических игр, с помощью которых вы можете изучать JavaScript.

Читать далее
Total votes 14: ↑13 and ↓1+17
Comments0

Information

Rating
Does not participate
Registered
Activity

Specialization

Backend Developer, Fullstack Developer
Junior
Linux
OOP
Python
SQL
Git