Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Миссия OSIRIS-REx: контейнер для забора грунта с околоземного астероида Бенну переполнен и теряет часть образцов

Научно-популярноеКосмонавтика
Смоделированный момент приближения аппарата Osiris-REx к астероиду Бенну. Источник: НАСА.

24 октября 2020 года НАСА рассказало о проблеме на зонде OSIRIS-REx. Контейнер для забора грунта с околоземного астероида Бенну оказался переполнен и теряет часть образцов. Его крышка не может полностью закрыться. Эта непредвиденная, но не критичная проблема.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Просмотры5.9K
Комментарии 8

Поиск в массиве (множестве) в JavaScript

JavaScript
Недавно решал задачу, когда нужно было определить, попадает ли определённое (строковое) значение во множество допустимых значений.
В JavaScript 1.6 существует метод indexOf объекта Array для поиска в массиве, но этот метод не поддерживается в Internet Explorer. Для IE данный метод реализовывается с помощью перебора массива в цикле.
Но так как порядок следования элементов был не важен и каждая миллисекунда была на счету, то я сравнил производительность перебора цикла в массиве с другими вариантами поиска (без перебора).
Читать дальше →
Всего голосов 34: ↑26 и ↓8+18
Просмотры54K
Комментарии 140

Практические рекомендации по выбору паролей по результатам взлома antichat.ru

Информационная безопасность
Как вы уже слышали Брайан Кребс недавно проводил аудит паролей, полученных после взлома antichat.ru (сама база была получена где-то год назад и уже не актуальна!). Честно говоря, не очень понимаю чем занимались его видеокарты 18 дней, победив только 44% паролей. Мне на довольно скромном железе удалось подобрать 77% паролей за 8 часов. Исходя из таких несколько пугающих цифр, особенно для сайта тематически связанного с информационной безопасностью, у меня есть несколько рекомендаций о том какие пароли никогда не следует использовать, дабы они не были подобраны за пару минут.
Читать дальше →
Всего голосов 148: ↑134 и ↓14+120
Просмотры23K
Комментарии 185

Анализ возможностей массового аудита на основе утечки хешей из LinkedIn

Информационная безопасностьАлгоритмы
Неделю назад утекла база хешей с LinkedIn, для других это событие может быть примечательным само по себе, но для меня, в первую очередь, это означает возможность провести анализ современных возможностей взлома паролей. И я не собираюсь рассказывать о том сколько раз слово «password» было встречено среди паролей и о том, сколько времени занимает перебор шестисимвольных комбинаций. Скорее буду пугать пользователей тем, насколько сложные пароли можно «взломать» за несколько часов. А программистам расскажу как это возможно эффективно реализовать, и в качестве небольшого подарка приложу программу, которую я написал для массового аудита. Присутствует и некоторый ликбез по использованию радужных таблиц с простыми выводами.

И так, за час удалось «восстановить» около 2.5 миллионов паролей на средней рабочей конфигурации, без специальных словарей и радужных таблиц. Среди найденных паролей присутствуют 16-символьные алфавитно-цифровые комбинации, и далеко не в единственном экземпляре.
Читать дальше →
Всего голосов 120: ↑116 и ↓4+112
Просмотры4.1K
Комментарии 123

Генератор/валидатор паролей по результатам взлома LinkedIn

Информационная безопасность
После анализа подобранных паролей к LinkedIn появилась идея создать генератор паролей, совмещенный с валидатором, не допускающим легко подбирающиеся пароли. Простейшего анализа на длину, наличие специальных символов здесь не достаточно — некоторые пароли можно легко собрать из очень вероятных «кусочков» и на их перебор уходит существенно меньшее время, нежели теоретически заявленное. И гарантий, что программа-генератор не выдаст вам подобный пароль нет — случайность, она на то и случайность. Мое творение не претендует на полное решение вопроса, скорее это повод для размышлений, но оно вполне работоспособно (исходники и небольшой разбор тоже присутствуют).
Читать дальше →
Всего голосов 66: ↑59 и ↓7+52
Просмотры8.7K
Комментарии 60

Оптимизация перебора

Алгоритмы
Из песочницы
Дисклеймер: для понимания этой статьи требуются начальные знания теории графов, в частности знание поиска в глубину, поиска в ширину и алгоритма Беллмана — Форда.

Введение


Наверняка вы сталкивались с задачами, которые приходилось решать перебором. А если вы занимались олимпиадным программированием, то точно видели NP-полные задачи, которые никто не умеет решать за полиномиальное время. Такими задачами, например, является поиск пути максимальной длины без самопересечений в графе и многим известная игра — судоку, обобщенная на размер . Полный перебор крайне долгий, ведь время его работы растёт экспоненциально относительно размера входных данных. Например, время поиска максимального пути в графе из 15 вершин наивным перебором становится заметным, а при 20 — очень долгим.

В этом посте я расскажу как можно оптимизировать большинство переборов, чтобы они стали работать на порядки быстрее.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Просмотры34K
Комментарии 8

Meet-in-the-middle: оптимизация перебора и не только

Алгоритмы
В прошлой статье я писал про эвристические методы оптимизации перебора. В этой статье я расскажу вам о ещё одной, но уже асимптотической оптимизации — meet-in-the-middle.

Типичные для этого метода снижения асимптотики: и .

Вступление


Метод заключается в том, чтобы разделить задачу пополам, получить какие-то данные и сопоставить их друг с другом.

Meet-in-the-middle имеет смысл применять, если для конкретной задачи выполняются два условия:
1) Время обработки половины данных асимптотически меньше времени получения итогового ответа.
2) Известен асимптотически более быстрый способ получения ответа для всей задачи с использованием информации об обработки её половинок.
Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Просмотры13K
Комментарии 0

Коды Грея и задачи перебора

ПрограммированиеАлгоритмыМатематика
В данной статье будет показан математический подход к составлению алгоритмов на примере следующих вопросов и задач:
  • Двоичные коды Грея. Их существование. Перебор подмножеств данного множества в порядке минимального изменения.
  • Существование и реализация перебора подмножеств из k элементов в порядке минимального изменения.

Итак, приступим.
Читать дальше →
Всего голосов 29: ↑26 и ↓3+23
Просмотры62K
Комментарии 18

О переборе на примере генерации кроссвордов

Занимательные задачкиПрограммированиеАлгоритмы
Из песочницы
С статье "Алгоритм формирования кроссвордов" были предложены несколько эвристик, которые были реализованы в программе автоматической генерации кроссвордов. Несмотря на то, что предложенные эвристики хорошо проработаны, даже они не позволили за разумное время сгенерировать кроссворд для самой сложной из приведенных сеток:

image
Этот и все последующие рисунки взяты из исходной статьи

В этой статье, я бы хотел обсудить гораздо более простое решение, которое позволяет решить эту задачу.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Просмотры10K
Комментарии 18

Программирование глазами (и руками ) гуманитария. Личный опыт. Немного философии

Читальный зал
Recovery mode
У каждого, наверное, есть какая-то своя излюбленная тема в IT, помимо повседневной практической работы, приносящей порой лишь хлеб насущный. Может быть, кто-то в свободное время делает мультфильмы или работает над какой-нибудь игрой, может быть, участвует в разработке какого-нибудь социального проекта или просто изучает что-то новое без особенной на то практической нужды, одним словом — делает что-то для себя, так сказать, для души.
Читать дальше →
Всего голосов 26: ↑19 и ↓7+12
Просмотры13K
Комментарии 28

Оптимизация поиска при выборе кампании

C++АлгоритмыC

Бла-бла-бла


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


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


Вчера меня озарило после разговора с Пашей Бейзманом, выступавшим на днях с докладом на HighLoad++. Битовые операции!!! Да, я прекрасно понимаю мощь битовых операций, но я их неправильно готовил ;) Результаты тестов превзошли мои самые оптимистичные ожидания.

Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Просмотры4.9K
Комментарии 11

«Распределение в запросе» или «избавляемся от перебора»

Высокая производительностьПрограммированиеSQL
Из песочницы
Хороший перебор — это отсутствие перебора. Рассмотрим пример замены полного перебора запросом.

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

Запрос специально привожу на T-SQL, т.к. думаю, что Хабравцам это будет ближе.
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Просмотры9.8K
Комментарии 21

Автоматический стол изменит свою высоту и подскажет вам, когда сидеть, а когда — стоять

ГаджетыЗдоровье


«Умный» стол от компании Stir не только подскажет вам, что пришло время сменить позицию (с сидячей на стоячую или наоборот), но и благодаря встроенным моторам, автоматически поднимется или опустится. Это уже второе поколение подобных устройств от Stir.
Читать дальше →
Всего голосов 10: ↑7 и ↓3+4
Просмотры7.5K
Комментарии 16

Мат конём и слоном. База решений

Искусственный интеллектИгры и игровые приставкиЛогические игры
Tutorial
Хотите озадачить начинающего шахматиста?
Попросите его поставить мат конём и слоном.

Хотите озадачить начинающего программиста?
Попросите его рассчитать мат конём и слоном.

image

Шахматные задачи будоражат воображение программиста,
именно поэтому для практической демонстрации комбинаторики
я выбрал самую сложную шахматную задачу из цикла «мат одинокому королю».
Читать дальше →
Всего голосов 40: ↑38 и ↓2+36
Просмотры19K
Комментарии 46

Перестановки. 9-й класс. Задача на четность

КодобредМатематика
image

Май выдался холодным, отопление отключили, а вычислительные (и обогревательные) мощности какие-никакие, а простаивают. Так почему бы не загрузить их чем-нибудь бесполезным, что и согреет, и развлечёт.

Но начну издалека. На днях попалась на глаза задачка для средней школы со следующей формулировкой: «Несколько последовательных натуральных чисел выписали в строку в таком порядке, что сумма каждых трёх подряд идущих чисел делится нацело на самое левое число этой тройки. Какое максимальное количество чисел могло быть выписано, если последнее число строки нечётно?»
Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Просмотры3.5K
Комментарии 36