Search
Write a publication
Pull to refresh
27
0.1
Григорьев Андрей @Pochemuk

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

Send message

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

Reading time3 min
Views21K
В предыдущей публикации был рассмотрен алгоритм решения задачи коммивояжёра на плоскости рекурсивным полным перебором. Результат получился любопытным, но итоговый маршрут содержал очевидные неоптимальные участки. В предлагаемой заметке рассмотрен улучшенный алгоритм, который я назвал «рекурсивным жадным алгоритмом». Признаюсь сразу, итоговый маршрут в сравнении с рекурсивным полным перебором получается лучше, в среднем, на 8%.
Читать дальше →

Как взять сетевую инфраструктуру под свой контроль. Глава первая. Удержание

Reading time8 min
Views23K
Эта статья является первой в цикле статей «Как взять сетевую инфраструктуру под свой контроль». Содержание всех статей цикла и ссылки можно найти здесь.

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

Итак, начальные условия.

Вы на новом месте работы или у вас повышение или вы решили по-новому взглянуть на свои обязанности. Сеть компании – это ваша зона ответственности. Для вас во многом это челендж и новое, что несколько оправдывает наставнический тон данной статьи :). Но, надеюсь, что статья также может быть полезна и любому сетевому инженеру.

Ваша первая стратегическая цель – научиться противостоять энтропии и удержать уровень предоставляемого сервиса.

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

«Потомок» AlphaGo самостоятельно научился играть в шахматы, сеги и го

Reading time3 min
Views11K
image

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

Тем не менее, компания не останавливается на достигнутом, а продолжает работу. Благодаря исследованиям ее сотрудников на свет появилась улучшенная версия AlphaGo, которая получила название AlphaZero. Как и указано в заголовке, система сама смогла научиться играть сразу в три логических игры — шахматы, сеги и го.
Читать дальше →

7 лучших бесплатных программ для проведения вебинаров в 2018

Reading time7 min
Views103K


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


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

Читать дальше →

Схема разделения секрета Шамира

Reading time7 min
Views55K
Рассмотрим сценарий, когда необходимо обеспечить безопасность банковского хранилища. Оно считается абсолютно неприступным без ключа, который вам выдают в первый же день работы. Ваша цель — надёжно сохранить ключ.

Предположим, вы решили всё время хранить ключ при себе, предоставляя доступ к хранилищу по мере необходимости. Но вы быстро поймёте, что такое решение на практике нормально не масштабируется, потому что всякий раз для открытия хранилища требуется ваше физическое присутствие. А как насчёт отпуска, которые вам обещали? Кроме того ещё более пугает вопрос: а что если вы потеряли единственный ключ?

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

Отчаявшись, вы уничтожаете дубликат и решаете разделить исходный ключ пополам. Теперь, вы думаете, два доверенных человека с фрагментами ключей должны физически присутствовать, чтобы собрать ключ и открыть хранилище. Это означает, что вору необходимо украсть два фрагмента, что вдвое труднее кражи одного ключа. Однако вскоре вы понимаете, что эта схема ненамного лучше, чем просто один ключ, потому что если кто-то потеряет половину ключа, полный ключ нельзя восстановить.
Читать дальше →

UDP hole punching для Symmetric NAT: немного теории и почти честный эксперимент

Reading time7 min
Views18K
Доброго времени суток, коллеги.

Некоторое время назад заинтересовался сабжем. Поиск дал много материала, при изучении которого возник ряд вопросов и захотелось некоторые теоретические моменты проверить на практике. Кому интересно — прошу.

Читать дальше →

Как узнать свой внешний IP из программы

Reading time7 min
Views19K


При написании различных программ для работы с сетью, особенно p2p систем, время от времени возникает необходимость узнать внешний IP своего компьютера из программы (тот адрес, по которому Ваш компьютер доступен из Большого Интернета). Часто возникает искушение пойти легким путем и использовать внешние WEB-сервисы, которые по http возвращают Вам IP, или самому развернуть таковой. Хотя такой способ решения задачи и работоспособен, он тем не менее, имеет ряд недостатков:

  • При использовании собственного сервера – нужно где-то его держать и поддерживать, заодно и c соответствующим доменным именем. В случае выхода его из строя, или принудительного отзыва домена, вся Ваша p2p сеть выходит из строя.
  • При использовании внешнего сервера – Вы вводите зависимость своей системы как от его работоспособности, так и от формата ответов, который вообще никак не стандартизирован, и который владелец сервера может поменять в любой момент. С теми же последствиями для вашей сети.
  • http, которым советуют пользоваться – базируется на tcp, то есть протокол сравнительно тяжеловесный, требующий установки соединения и тп. В общем, пользоваться можно, но перерасход ресурса как компьютера, так и сети налицо.
Читать дальше →

Запуск просмотрщика картинок из Windows XP на современных Windows

Reading time2 min
Views38K
Есть у меня папка со старыми картинками, которые я собирал в нулевых. Переношу с компьютера на компьютер вместе со всеми моими файлами при каждом апгрейде, изредка захожу поностальгировать. Но каждый раз меня немного смущало то, что стандартный просмотрщик Windows 7 не показывал GIF-анимацию, хотя память мне подсказывала, что во времена XP анимация показывалась без проблем. При очередном приступе ностальгии я всё же решил запустить просмотрщик из XP на Windows 7. После преодоления ряда препятствий, я теперь уверен — GIF-анимация там действительно поддерживалась! А главное — теперь я могу смотреть свою старую папку с картинками в аутентичном интерфейсе просмотрщика картинок Windows XP, что создаёт более подходящую атмосферу =)


Скачать: shimgvw_xp32.7z (включает бинарник и исходный код лаунчера, плюс shimgvw.dll из англоязычной Windows XP SP3).

Читать дальше →

Методы наименьших квадратов без слёз и боли

Reading time10 min
Views51K


Итак, очередная статья из цикла «математика на пальцах». Сегодня мы продолжим разговор о методах наименьших квадратов, но на сей раз с точки зрения программиста. Это очередная статья в серии, но она стоит особняком, так как вообще не требует никаких знаний математики. Статья задумывалась как введение в теорию, поэтому из базовых навыков она требует умения включить компьютер и написать пять строк кода. Разумеется, на этой статье я не остановлюсь, и в ближайшее же время опубликую продолжение. Если сумею найти достаточно времени, то напишу книгу из этого материала. Целевая публика — программисты, так что хабр подходящее место для обкатки. Я в целом не люблю писать формулы, и я очень люблю учиться на примерах, мне кажется, что это очень важно — не просто смотреть на закорючки на школьной доске, но всё пробовать на зуб.

Итак, начнём. Давайте представим, что у меня есть триангулированная поверхность со сканом моего лица (на картинке слева). Что мне нужно сделать, чтобы усилить характерные черты, превратив эту поверхность в гротескную маску?



В данном конкретном случае я решаю эллиптическое дифференциальное уравнение, носящее имя Симеона Деми Пуассона. Товарищи программисты, давайте сыграем в игру: прикиньте, сколько строк в C++ коде, его решающем? Сторонние библиотеки вызывать нельзя, у нас в распоряжении только голый компилятор. Ответ под катом.
Читать дальше →

Враг внутри: как я попался на инсайдерском редтиминге

Reading time10 min
Views92K


У меня были все преимущества. Я уже был внутри сети. Я был вне подозрений. Но они обнаружили мой взлом, выкинули из сети… и выследили физически.
Читать дальше →

Трагикомедия в NaN актах: как мы cделали игру на JS и выпустили ее в Steam

Reading time13 min
Views29K
“Эка невидаль”, — скажете вы, — “В топ-100 вашей игры нет, так что нещитово”. Тоже правда. Зато за год разработки Protolife мы поднакопили какой-никакой опыт, которым можем поделиться с потенциальными будущими игроделами. Ветераны индустрии, боюсь, ничего интересного для себя не найдут. Но, может быть, хоть повеселитесь от души.


Что за игра-то? И кто “мы”?


Мы — это команда из трех человек (GRaAL, A333, icxon), волею судеб названная Volcanic Giraffe без какого либо умысла. Работали долгое время вместе, несколько раз втроем участвовали в Ludum Dare (соревнования по написанию игр за выходные), и однажды решившие довести до релиза одну из наших поделок под названием Protolife.

Если коротко: это необычная tower defense, где надо бегать героем-курсором и выстраивать оборону из блоков против постоянно растущей красной биомассы.
Остальное под катом - осторожно, тяжелые пиксельартные картинки

Проблемы доступа к персональным данным от лица всех участников процесса

Reading time8 min
Views5.9K
Приветствую дорогие хабровчане.

Лирическое отступление
Как пользователь одного из «высокоразвитых» ресурсов рунета, я обнаружил довольно распространённую картину в админке своего профиля: от моего имени рассылался спам.
Для меня это стало некоторым сигналом, так как за то время (активный пользователь интернет ресурсов с 1999-го) пока я использовал способы доступа к своим ресурсам в виде логина и пароля, у меня не было ни одного (по крайней мере зарегистрированного) случая взлома или утечки таких данных. На каждый ресурс я использую уникальный пароль, конечно, как у многих опытных пользователей этот пароль имеет общий корень, но всё же он не является примитивным.

История о том как простой пользователь начал принимать меры


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

Первым делом я решил что одно из моих устройств может быть зомбировано. Так как я почти не использую VPN, а тем более в случае с этим ресурсом, то для проверки я решил сравнить логи доступа со своими данными. После непродолжительного поиска я выявил, что ресурс не обладает программной функцией для доступа пользователя к такой информации. Соответственно я написал в поддержку о просьбе
Читать дальше →

Безопасность Microsoft Office: встраиваемые объекты

Reading time16 min
Views11K


Изначально архитектура Microsoft Office строилась на основе концепции составных документов, они же документы OLE, активно продвигаемой Microsoft на заре 32-разрядных Windows. В те времена идея «бесшовного» объединения в одном документе данных самых разных форматов казалась заманчивой и увлекательной, и до выявления первых проблем успела прочно врасти во многие масштабные продукты.

«Плохая новость» заключалась в том, что универсальный способ добавления в документы данных (и кода обработки этих данных) стал универсальным путем появления в продукте уязвимостей, который и сегодня постоянно преподносит приятные сюрпризы создателям malware исследователям безопасности.
Читать дальше →

Вы опасно некомпетентны в криптографии

Reading time7 min
Views142K
От переводчика: Хоть посыл статьи Najaf Ali, переведённой ниже, и носит слегка рекламный оттенок («оставьте криптографию нам, экспертам»), но описанные в ней примеры показались мне довольно интересными и заслуживающими внимания.
Кроме того, никогда не будет лишним повторить прописную истину: не придумывайте свою крипто-защиту. И эта статья отлично иллюстрирует почему.

Читать дальше →

Памятка по разновидностям фишинга

Reading time2 min
Views32K

Мы с племянником решили внести свою лепту в дело противодействия фишингу и подготовили памятку. Распространяется безвозмездно. Вы можете скачать её и, распечатав, повесить у себя в офисе; разместить в посте в социальных сетях, добавить в буклет или книгу.


Вот памятка:



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

Читать дальше →

DNS over TLS — Шифруем наши DNS запросы с помощью Stunnel и Lua

Reading time5 min
Views21K


источник изображения


DNS (англ. Domain Name System — система доменных имён) — компьютерная распределённая система для получения информации о доменах.

TLS (англ. transport layer security — Протокол защиты транспортного уровня) — обеспечивает защищённую передачу данных между Интернет узлами.

После новости "Google Public DNS тихо включили поддержку DNS over TLS" я решил попробовать его. У меня есть Stunnel который создаст шифрованный TCP туннель. Но программы обычно общаются с DNS по UDP протоколу. Поэтому нам нужен прокси который будет пересылать UDP пакеты в TCP поток и обратно. Мы напишем его на Lua.


Вся разница между TCP и UDP DNS пакетами:


4.2.2. TCP usage
Messages sent over TCP connections use server port 53 (decimal). The message is prefixed with a two byte length field which gives the message length, excluding the two byte length field. This length field allows the low-level processing to assemble a complete message before beginning to parse it.

RFC1035: DOMAIN NAMES — IMPLEMENTATION AND SPECIFICATION


То есть делаем туда:


  1. берём пакет из UDP
  2. добавляем к нему в начале пару байт в которых указан размер этого пакета
  3. отправляем в TCP канал

И в обратную сторону:


  1. читаем из TCP пару байт тем самым получаем размер пакета
  2. читаем пакет из TCP
  3. отправляем его получателю по UDP
Читать дальше →

WebP vs BPG

Reading time2 min
Views18K
Уже очень давно самыми популярными форматами остаются: JPEG — для lossy сжатия, PNG — для сжатия без потерь и GIF для анимации. Эти форматы поддерживаются всеми браузерами и веб-приложениями.

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

Если измерить вес всех фотографий на странице — иногда можно получить сердечный приступ. Чем больше фотографий, тем больше весит страница и тем дольше она загружается.

Сейчас уже созданы несколько форматов, имеющих все шансы заменить и JPEG и GIF и PNG. Очень хорошие результаты показывают гугловский WebP и «свободный» BPG.
image
Читать дальше →

Переустановка предустановленной Windows 8 в конце 2018

Reading time1 min
Views21K
Статья о том, как восстановить лицензионную windows 8 на старом ноутбуке, в котором погиб HDD.

Очень много можно почерпнуть из статьи 2013 года.
Однако время внесло свои коррективы.

Пошаговая инструкция (для тех кто, как и я, переставлял винду последний раз лет 10 назад) под катом. Надеюсь она поможет кому-то сэкономить несколько часов, которые я потратил на поиски 8.0 CoreSingleLanguage на torrent'ах.
Читать дальше →

Интересные алгоритмы кластеризации, часть вторая: DBSCAN

Reading time10 min
Views113K
Часть первая — Affinity Propagation
Часть вторая — DBSCAN
Часть третья — кластеризация временных рядов
Часть четвёртая — Self-Organizing Maps (SOM)
Часть пятая — Growing Neural Gas (GNG)

Углубимся ещё немного в малохоженные дебри Data Science. Сегодня в очереди на препарацию алгоритм кластеризации DBSCAN. Прошу под кат людей, которые сталкивались или собираются столкнуться с кластеризацией данных, в которых встречаются сгустки произвольной формы — сегодня ваш арсенал пополнится отличным инструментом.


Читать дальше →

Подборка бесплатных утилит компьютерной криминалистики (форензики)

Reading time3 min
Views101K
image

В этой статье представлены бесплатные инструменты для проведения расследования инцидентов информационной безопасности.
Читать дальше →

Information

Rating
5,367-th
Location
Коломна, Москва и Московская обл., Россия
Date of birth
Registered
Activity