Задать вопрос
  • В чем суть соли хэш паролей?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В 2000х годах хакеры, используя метод радужных таблиц (rainbow tables) научились находить пароль по известному хешу
    за вполне короткое время если обладали заранее расчитанной базой этих таблиц. И если они знали
    какая хеш-функция работала. Особенно для Windows NTLM у них ловко выходило. И при условии
    что пароль был корткий. До 8 символов например. Для большего пароля база росла экспоненциально.

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

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

    В криптографии есть аналогия с вектором инициализации IV для симметричных шифров.
    Ответ написан
    Комментировать
  • Как точность нейронной сети зависит от функции активации?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В процессе обучения сигмоид очень важен т.к. он обеспечивает сходимость алгоритма. Направление грубо говоря.

    Насчет рабочего режима модели я не скажу. Но вроде-как нейросети очень толерантны к элементной базе. В 20м веке считалось что нейроны вообще нужно строить не на софте а в виде транзисторной логики. Или на биологических элементах (уж каких я не знаю).

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тут пишут https://go.dev/tour/methods/9 весьма сухо.

    Interfaces
    An interface type is defined as a set of method signatures.
    A value of interface type can hold any value that implements those methods.


    Судя по всему Google не особо заинтересован описывать детали реализации интерфейса.
    Возможно на реализацию нет спеки. И Google планирует в будущем ее изменять.
    Ответ написан
    Комментировать
  • Как написать симулятор посадки на Луну?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Как рассчитывать движение, работу двигателя и так далее?

    Это - вопрос на мильон. Я думаю что если здесь собрать ракето-конструкторов - все они не сойдутся
    на единой формуле расчета. Каждое конструкторское бюро конструирует их опираясь на свой
    опыт. И мне кажется что там главной движущей силой расчета были ограничения чем формулы.
    Например какое топливо? Как горит? Как долго горит? Насколько его хватит? Когда отделять
    первую ступень? Да тут даже нет формулы. Бесконечно большое число испытаний. Наблюдения.
    Привязка к ограничениям.

    По игре-симулятору.

    Чтоб полет был реалистичным - надо ХОТЯ-БЫ соблюсти все реальные физические свойства этого полета. Расстояния. Массы земли и луны. Скорость ракеты. Ускорение ракеты. Влияние атмосферы земли.

    Это кажется пустяк но если ты хочешь делать симулятор то надо сделать его так чтоб полет хотя-бы не длился 30 секунд. Это уж будет слишком "не по лунному сценарию".

    Как процедурно сгенерировать реалистичную поверхность Луны?

    Ну после такого курса физики аэрокосмоса, генерация текстуры будет пустяком. Луна
    состоит из кратеров. И все что мы видим с земли - это резкие тени от них. Создай
    пустую поверхность. Сделай случайных кратеров по вкусу. И сделай резкие боковые тени.
    Ответ написан
  • Шаблонный код: Чем можно удобно генерировать код для автоматизации сборки по шаблону?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я использовал Apache Velocity https://velocity.apache.org/ он правда не для кодо-генерации,
    а для отчетов, но в некоторых простых кейсх подходит. В шаблон можно добавлять проверки условий и циклы.

    Есть еще Mustache https://mustache.github.io/ , он более простой. Там просто строковые замены. Но, поддерживает все языки разработки для запуска.
    Ответ написан
    Комментировать
  • Как вызывать метод в Java определенное количество раз?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Предположительно ты скомпилировал программу но забыл задеплоить и поэтому видишь старое значение итераций.

    Используй логгирование как здесь пишут https://developer.android.com/studio/debug/logcat чтобы подтвердить что твой метод действительно вызван 5 раз.
    Ответ написан
    Комментировать
  • Откуда появились артефакты?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Такой эффект может быть в инженерной графике когда стоят близко два полигона. Параллельно друг к другу
    и расстояние между ними настолько маленькое что глубины и точности Z-buffer не хватает чтобы определить
    что показывать ближе. Вот. Но тут еще артефакт воспризводится на прозрачных объектах. И это странно.

    Решением может быть просто увеличение физических размеров объектов. Вот у тебя размер задан в чем.
    Допустим в сантиметрах. Сделай все в милиметрах. Или в микронах.
    Ответ написан
    Комментировать
  • Есть ли способы включить компьютер по wake on lan через nat?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В магазинах спец-техники и наблюдения продавались такие устройства. Размером со спичечный коробок. Вобщем это почти мобильный телефон с удаленным управлением. И это устройство может выдавать на выход сигналы управления и к этим сигналам можно подключать реле управления техникой. Сад-огород поливать. Включать какие-то бытовые приборы удаленно. Управлялись такие устройства через DTMF тональный набор.
    Ответ написан
  • В каком порядке учить темы по алгоритмам?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В ВУЗах такой программы обычно нет. Мы учили лет 20 назад ОА и СД (оснонвы алгоритмов и структур данных).

    Ваш список - чудовищно длинный. Если по нему расписать все - то примерно хватит на 5 лет учебы.
    Я сомневаюсь что вы будете планировать с таким горизонотом. Я предложу выкинуть следующее.

    - Алгебра
    - Геометрия

    И я объясню почему. Когда вы идете в ВУЗ - вы уже знаете алгебру и геометрию. Это курс школьной
    программы и я не вижу смысла его подмешивать к компьютерным науками. Если вы по каким-то причинам
    алгебру не знаете. То я вообще не вижу смысла вам дальше двигаться. Вы не будете понимать доказательтв
    и выводов формул в других науках поэтому выкидываем.

    Далее выкидываем.

    - Теория игр
    - Динамика
    - Расписания

    Теория игр - это факультатив. Почитаете книжки на досуге. Не включают обычно в базовые программы.
    Не знаю зачем выделять отдельно расписания? Это может быть просто подраздел какой-то другой
    оптимизации. Динамика ... хм... Что за динамика? Упругого тела? Непонятно. Разверните опредление.

    - Строки

    Выкидываем строки. Это первое занятие по Turbo Pascal. За 15 минут вы узнаете что такое строки.
    Никаких особых знаний там нет. Алгоритм КМП и Боуер Мур - пойдет в ОЯ и СД.

    Графы - я не буду выкидывать. Но они идут как подраздел дискретной математики.
    Теория множеств. Дискретка. Графы. Это обычно один предмет.

    Далее.

    - Алгоритмы на последовательностях

    Я не знаю что это такое. Приведите пример. Возможно это имеет другие названия? Автоматы? Сети? Цепи?

    - Комбинаторика

    Тоже идет как подраздел дискретной математики.

    Итого в сухом остатке у нас остается 4 предмета.

    - ОЯ и СД из программы любого ВУЗа
    - Дискретная математика из ВУЗа
    - Линейная алгебра
    - Численные методы (да это реально настоящий предмет ВУЗа и притом достаточно плотный). Семестр как минимум.

    Структуры данных - поглощаются ОЯ и СД. Вот. Остается Линейная Алгебра. Я ее не знаю куда положить.
    Я не изучал ее отдельно как предмет. Возможно это и где-то выделяется в науку. Говоря о последовательности
    изучения этих 4 предметов - я могу просто сослаться на методички ВУЗов. Ищите их. Ищите учебные планы.
    Некоторые из этих наук я думаю можно учить параллельно.
    Ответ написан
    Комментировать
  • Как обойти все исполнения программы?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Посмотри ключик
    -fsanitize=thread

    и еще посмотри PVS Studio. Вроде у них был статический анализ таких ситуаций но я точно не уверен.
    Надо искать инфу.
    Ответ написан
    8 комментариев
  • Можно ли учить Go первым языком?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Да. Go - хороший язык. По крайней мере в нем есть типизация.
    Кроме того этот язык востребован на ниве devops и и микро-сервисов.
    Значит приток задач будет постоянно.
    Ответ написан
    Комментировать
  • Как произвести сортировку в таблице SQLite3, после удаления записи?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Все базы данных хранят строки не так как Excel. Хранят как предписано в файловом
    формате для целевой DBMS. Когда удаляешь - обычно
    остаются дырки которые потом заполняются другими строками. Но это я упрощенно рассказываю.
    В реальности все еще сложнее. И есть процессы вакуума или другой релокации строк. И таблица
    может двигаться в памяти. Шаффлиться. Делиться на части. Кластеризоваться и т.п.

    Поэтому твоя хотелка достигается только с использованием order by.

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

    UPD: Для авто-нумерации https://stackoverflow.com/questions/16847574/how-t...
    Ответ написан
    Комментировать
  • Как взять интеграл в уме?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Зубри формулы дифференцирования. Интегрирование - это обратный процесс по отношению к Д.
    И без этой зубрежки ты все равно никуда не сдвинешся.

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

    А в реальном мире очень редко когда можно найти интеграл от произвольной функции. Скорее всего.. 99%
    что нельзя.
    Ответ написан
    Комментировать
  • Как реализовать передачу данных между компьютером и сервером?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Насколько я знаю, она может отправлять данные не только по локальной сети, но для этого у компьютера должен быть так называемый 'белый' ip, но я не знаю будет ли у пользователя он.

    Для большинства обычных пользователей-обывателей интернета которые сидят в телефонах, домашних проводных интернетах, кафешках с wifi, невозможно зафиксировать постоянный IP. Он у них меняется либо раз в сутки либо по сеансу.

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

    Задача неизвестного IP:port частично решена в торрент-протоколах. Там пользователи "отмечаются" раз в несколько минут по трекерной ссылке и таким образом трекер владеет информацией о свежих парах IP:port которые присуствуют в сети. Вот. Эта схема тоже рабочая. Но нужен вот еще один сервис для трекинга.
    Ответ написан
    Комментировать
  • Можно ли запустить программу на языке C в операционной системе FreeDOS или MSDOS?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я думаю можно. Поищи такие компилляторы как Watcom C, Borland C.
    Они умеют генерить код для DOS. На ваткоме кажется была написана
    игра Doom for DOS.

    UPD +Линка www.openwatcom.org
    Ответ написан
    Комментировать
  • Как хранить большое количество json в mysql?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Когда обсуждают базу данных - то ее физический размер обычно не имеет значения. Она может быть и терабайт и пета-байт. Но важно подумать о том какие виды запросов вы будете там гонять. И какие индексы надо построить чтобы быстро искать нужный JSON.

    Хорошая коробочная поддержка JSON с индексами и бинарным представлением документа есть в Postgresql.
    Про MySQL я не в курсе. Но вот посмотрите эту статью https://habr.com/ru/companies/skillfactory/article...
    Может быть появятся мысли.

    Ваш вопрос требует создания POC + Benchmark. Безотносительно того что вам тут напишут в ответах - ваша
    задача создать прототип и загрузить туда 100К синтетических записей и понаблюдать как быстро MySQL будет
    делать поиск нужных значений.
    Ответ написан
    2 комментария
  • MySQL on duplicate key update. Как избавиться от увеличения ID?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Дырки могут быть связаны с механикой кеширования sequence для каждого сеанса mysql.
    По сути если 10 сеансов хотят быстро и без конкуренции вставлять в таблицу то они должны
    прочитать пачку номеров. Например первый сеанс с 1 по 10 и второй с 11 по 20 и так далее.
    В разных БД это реализовано по разному но это в целом - механика оптимизации скорости.
    И если сеанс закрылся и недочитал 7, 8, 9 номер то и хер с ним. Диапазон уже был использован
    как туалетная бумага.

    У тебя-же нет желания доставать из ведра грязную бумагу и еще раз ее использовать?
    Ответ написан
    Комментировать
  • Бот не вносит данные в таблицу sqlite, в чем может быть ошибка?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Эти два запроса - какая-то безсмыслица.

    SELECT Town FROM users WHERE user_id = (?)

    UPDATE users SET 'Town' = (?)

    Автор ты можешь прокомментировать словами что здесь происходит. Мне кажется что после обсуждения
    у тебя должны возникнуть другие вопросы.
    Ответ написан
    Комментировать
  • Как оставить java.util.date в gmt0?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Для java11 имеет смысл отказаться от использования java.util.date в пользу java.time.LocalDate, java.time.ZonedDateTime. И использовать API из time для переводов локальных времен.
    Ответ написан
    Комментировать
  • Как следить за изменением авторизации пользователя?

    mayton2019
    @mayton2019
    Bigdata Engineer
    На протяжении 20 лет я наблюдаю за базами данных и механизмами стриминга событий, слежениями
    и прочее. Так вот. Это все НЕ РАБОТАЕТ. Не работает по причине идеологии ACID. Вы не можете операцию
    DML считать основанием для генерации события. Потому что DML это не транзакция. Если мы фиксируем
    DML commit/rollback операцией - то при этом неочевидно что должна видеть стриминговая платформа.

    Она не может откатывать события в обратную сторону. Такой механизм технически дорог. Поэтому
    основанием для стриминга событий может быть только событие внутри приложения. PHP, Node, Java e.t.c.
    вот там и генерируйте события.

    А база данных здесь вообще не помошник. Сканировать таблицу по скедулеру тоже не надо. Это дорого
    и не реал-тайм.
    Ответ написан
    Комментировать