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

Администратор баз данных

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

Быстрый поиск изоморфных подграфов

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

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

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

Сначала будет приведён алгоритм поиска паттернов рекуррентным перебором, потом его быстрая модификация с минимальным отсечением.

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

Читать далее
Всего голосов 12: ↑10 и ↓2+12
Комментарии12

Стохастический язык программирования на основе алгоритмов Маркова

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

MarkovJunior — это вероятностный язык программирования, в котором программы являются сочетаниями правил перезаписи, а инференс выполняется при помощи распространения ограничений. MarkovJunior назван в честь математика Андрея Андреевича Маркова, придумавшего и исследовавшего то, что сейчас называется алгоритмами Маркова.
Читать дальше →
Всего голосов 139: ↑139 и ↓0+139
Комментарии24

Книга «Компьютерные сети. 6-е изд.»

Время на прочтение23 мин
Количество просмотров19K
image Привет, Хаброжители!

Мы отправили в типографию новое издание одной из ведущих книг классики Computer Science, а именно шестое издание «Компьютерных сетей».

Первая версия этого классического труда появилась на свет в далеком 1980 году, и с тех пор каждое издание книги неизменно становилось бестселлером. В книге последовательно изложены основные концепции, определяющие современное состояние компьютерных сетей и тенденции их развития. Авторы подробно объясняют устройство и принципы работы аппаратного и программного обеспечения, рассматривают все аспекты и уровни организации сетей — от физического до прикладного. Изложение теоретических принципов дополняется яркими, показательными примерами функционирования интернета и компьютерных сетей различного типа. Большое внимание уделяется сетевой безопасности.

Шестое издание полностью переработано с учетом изменений, произошедших в сфере сетевых технологий за последние годы, и, в частности, освещает такие технологии, как DOCSIS, 4G и 5G, беспроводные сети стандарта 802.11ax, 100-гигабитные сети Ethernet, интернет вещей, современные транспортные протоколы CUBIC TCP, QUIC и BBR, программно-конфигурируемые сети и многое другое.
Читать дальше →
Всего голосов 27: ↑27 и ↓0+27
Комментарии19

Книга «Kotlin. Программирование для профессионалов. 2-е изд.»

Время на прочтение8 мин
Количество просмотров11K
image Привет, Хаброжители!

Kotlin — это язык программирования со статической типизацией, который взяла на вооружение Google в ОС Android. Кроме того, это мультиплатформенный язык, позволяющий создавать приложения для macOS, Windows и iOS.

Джош Скин, Дэвид Гринхол, Эндрю Бэйли на практических примерах познакомят вас с ключевыми концепциями Kotlin и фундаментальными API.

Вы начнете с основных принципов и перейдете к расширенному использованию нетривиальных возможностей Kotlin, чтобы создавать надежные и эффективные приложения, а так же освоите среду разработки IntelliJ IDEA от JetBrains.
Читать дальше →
Всего голосов 8: ↑7 и ↓1+8
Комментарии6

Обзор шифра Хилла

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

В современном мире, полном информационных технологий, мы доверяем свои данные интернет – сервисам. Разумно предположить, что доступ к этим данным должен иметь только определенный круг лиц. Как раз для этого и существует шифрование. Шифрование – это кодирование информации, процесс использующийся для обеспечения конфиденциальности и безопасности данных, таких как тестовые сообщения, банковские реквизиты и т.д. Исходное сообщение (данные) называется открытым текстом, зашифрованное сообщение (данные) называется шифротекстом. Процедура шифрования обычно включает в себя использование определенного алгоритма и ключа. Алгоритм - это определенный способ засекречивания сообщения, то есть список инструкций. Ключ же конкретизирует процедуру засекречивания.

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

Читать далее
Всего голосов 10: ↑9 и ↓1+10
Комментарии3

Магия оптимизации SQL запросов

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

Даже самый простой SQL запрос можно выполнить по-разному. Но из всех вариантов СУБД нужно выбрать оптимальный, как же это сделать? Неужели придётся перебрать все возможные варианты? Давайте разбираться.

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

QR-code. Обнаружить и расшифровать. Шаг 1 — Обнаружить

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

Эта статья - первая в цикле статей, в котором мы разберемся с тем, как qr-код устроен, и напишем простенький Qr-детектор и дешифровщик, а также свой собственный генератор qr-кодов

Использовать мы будем python вместе с opencv и numpy. Учитывая, что opencv - кросс-язычная библиотека, а также то, что работа с изображением/текстурой в разных решениях выглядят примерно одинаково, то я думаю, что вы без труда сможете перевести алгоритм, который будет здесь написан, на любой нужный вам язык

В первую очередь мы будем рассматривать полноразмерный qr-код, Micro-qr возможно будет рассмотрен после завершения работы над полноразмерным qr

Также, хочу отметить, что готовый класс QrCodeDetector уже имеется внутри opencv. Возможно, вам не нужно изобретать велосипед :-)

Читать далее
Всего голосов 12: ↑11 и ↓1+14
Комментарии18

«Настоящий» Low-Code: деградация программирования, или назад в будущее?

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

Невозможно ошибиться, если на вопрос о самых сложных программах - упомянуть прошивки FADEC и автопилот Бурана. Что между ними общего? Это ultra-reliable код, исполняемый в RTOS-условиях - то есть буквально апогей программирования с выверенным каждым тактом и несколькими уровнями отказоустойчивости программ. Тем удивительнее, что все программы такого уровня разрабатываются только по Low-Code методикам - и началось это задолго до текущего хайпа.

Ну-ка, ну-ка!
Всего голосов 21: ↑10 и ↓110
Комментарии36

Rust 1.66.0: дискриминанты для перечислений с полями, black_box, cargo remove

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

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


Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.66.0 вам достаточно выполнить команду:


rustup update stable

Если у вас ещё нет rustup, то можете установить его со страницы на нашем веб-сайте, а также ознакомиться с подробным описанием выпуска 1.66.0 на GitHub.


Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать beta (rustup default beta) или nightly (rustup default nightly) канал. Пожалуйста, сообщайте обо всех встреченных вами ошибках.

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

Как смотрели нюдсы на древних компьютерах?

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


Формат JPEG представили в 1993 году, а GIF — в 1987-м. Но тогда непонятно, как смотрели фотографии девушек на этой прекрасной машине образца 1983 года?

Такой вопрос пришёл мне от читателя обзора портативного компьютера Compaq Portable. Ответ оказался сложнее, чем мы думали. Давайте разберёмся.
Читать дальше →
Всего голосов 72: ↑70 и ↓2+94
Комментарии93

Обновление прошивки противоугонной системы Starline E90

Время на прочтение4 мин
Количество просмотров66K
Так уж получилось, что любая вещь становится для меня более интересной, если ее можно соединить с компьютером. А если еще из такого «соседства» выходит практическая польза, то это вдвойне плюс! Впрочем, все это предисловие, а суть состоит в следующем.

Некоторое время назад я приобрел для своего автомобиля сигнализацию Starline E90. Почти сразу же после покупки выяснилось, что у данной модели сигнализации существует несколько ревизий, отличающихся версией прошивки, и, вероятно, железом. Купленное мной устройство было выпущено в 2013 году, соответственно, имело не самую свежую прошивку, а какой же гик не любит новейших версий ПО! Как оказалось в дальнейшем, версию прошивки моей автосигнализации можно достаточно легко обновить. Осторожно, под катом скриншоты!


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

Как я «напрограммировал» себе скилл рисования диаграмм в скетч-стиле

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

По работе мне часто приходится рисовать разные схемы, диаграммы процессов и графики, в том числе и те, которые потом используются в качестве иллюстраций для сайта, статей и презентаций. Всё бы ничего, но есть у диаграмм и графиков, сделанных в популярных онлайн-сервисах наподобие draw.io или lucidcharts одна беда — они выглядят как-то слишком уныло и «олдскульно», в духе «90-х». Всю эту инфографику хотелось бы сделать более заметной, привлекательной и душевной (и, желательно, без привлечения дизайнера).

Так у меня возникла идея создания инструмента для отрисовки диаграмм и графиков в стиле «нарисовано от руки». Об истории создания сервиса и «подводных камнях» я расскажу в этой заметке.

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

Как развитие алгоритмов сжатия остановилось 20 лет назад, или о новом конкурсе на 200 тысяч евро

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

В октябре прошлого года я опубликовал статью «О талантах, деньгах и алгоритмах сжатия данных», где с юмором описал, как «изобретают» новые алгоритмы сжатия люди, не имеющие достаточно навыков для реализации своих идей. А заодно рассказал про существующие конкурсы по новым алгоритмам, в том числе двигавшийся тогда к завершению конкурс алгоритмов сжатия с призовым фондом 50 тысяч евро.

Пост набрал 206 «плюсов», вышел на 2 место топа недели и вызвал оживленную дискуссию, в которой мне больше всего понравился комментарий: «Коммерческого интереса эффективность по сжатию алгоритмов сжатия без потерь сегодня не представляет, в силу отсутствия принципиально более эффективных алгоритмов. Деньги сегодня — в сжатии аудио-видео. И там и алгоритмы другие. Тема сжатия без потерь удобна именно лёгкостью верификации алгоритма, и не слегка устарела. Лет на 20.» 

Поскольку я сам уже 20 лет в области сжатия видео, с ее бурным развитием мне спорить сложно. А вот что сжатие без потерь развиваться перестало… Хотя логика тут понятна каждому. Я до сих пор пользуюсь ZIP, все мои друзья пользуются ZIP с 1989 года — значит, ничего нового не появляется. Так ведь? Похоже рассуждают сторонники плоской земли. ))) Я не видел, знакомые не видели, и даже некоторые авторитеты утверждают, значит, это так! 

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

Развивались ли алгоритмы сжатия без потерь в последние 20 лет? Чем закончился прошлый конкурс и на сколько опередили baseline? Сколько денег получили русские таланты, а сколько зарубежные? И есть ли вообще жизнь на Марсе в сжатии без потерь? 

Кому интересно — добро пожаловать под кат! 
Читать дальше →
Всего голосов 198: ↑197 и ↓1+255
Комментарии134

Решение проблем с портами в Apache в Windows

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

(OS 10048) Only one usage of each socket address (protocol/network address/port) is normally permitted. : make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down


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

Трёхпозиционный checkbox (aka tristate) без скриптов и смс

Время на прочтение2 мин
Количество просмотров32K
Понадобилось мне недавно реализовать трёхпозиционный переключатель. Ну это такой, у которого вместо двух состояний «включено/выключено», есть ещё промежуточное состояние. Это часто используется, например, в чекбоксе «выбрать всё», для того чтобы показать, что выбраны не все элементы, а только часть. В общем, захотелось такое реализовать, да чтобы без скриптов.
Читать дальше →
Всего голосов 59: ↑56 и ↓3+53
Комментарии29
12 ...
8

Информация

В рейтинге
5 227-й
Откуда
Караганда, Карагандинская обл., Казахстан
Дата рождения
Зарегистрирован
Активность