• Почему код выдает ошибку http 451?

    @cicatrix
    было бы большой ошибкой думать
    https://ru.wikipedia.org/wiki/HTTP_451
    Ошибка 451 или «Недоступно по юридическим причинам» (англ. Unavailable For Legal Reasons) — стандартный код ответа HTTP, означающий, что доступ к ресурсу закрыт, например, по требованию органов государственной власти или правообладателя в случае нарушения авторских прав. Был одобрен IESG 21 декабря 2015 года[1] и опубликован как RFC 7725 в феврале 2016 года. Код ошибки является отсылкой к роману Рэя Брэдбери «451 градус по Фаренгейту»[2]. Можно сказать, что код HTTP 451 — это уточняющая версия кода HTTP 403[3].
    Ответ написан
  • По какому волшебству в Laravel работает Hash::check() - ведь хэши генерируемые Hash::make() всегда разные?

    @cicatrix
    было бы большой ошибкой думать
    1. У одной строки может быть несколько (кстати, а сколько их всего там для одной строки?) хэшей?

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

    2. Каким чудесным Hash::check() узнает что разные хэши происходят из одной и той же строки?

    Из неверного предположения в п. 1 идёт неверный вывод о чуде в п. 2.
    Ответ написан
    8 комментариев
  • Сколькибитный пароль считается достаточно сложным, чтобы его не сломало брутфорсом ЦРУ/ФСБ?

    @cicatrix
    было бы большой ошибкой думать
    67 бит это мало.
    100-128 бит вполне достаточно для текущих вычислительных мощностей.
    256 бит, которые используются в большинстве современных криптосистем - overkill с огромным запасом.
    Но надо понимать, что это всё теория, где имеется идеальная безошибочная реализация криптоалгоритма и используется действительно уникальный, никому не известный ключ.
    Так же надо учитывать, что сам алгоритм может быть уязвимым для квантовых алгоритмов. Пока ещё у людей нет квантовых компьютеров, способных взломать, например RSA, но они могут появиться в будущем. Более уязвимы ассимитричные алгоритмы, симметричные будут вполне устойчивы даже после квантовой революции.
    Единожды взломанная база данных какого-нибудь интернет-магазина делает ВСЕ пароли, которые были использованы его пользователями, уязвимыми, даже если это хорошие пароли, потому что сначала будут использовать не брутфорс, а атаку по словарю, в котором уже будут эти пароли.
    Пользователь-идиот - классический вектор атаки. Соц. инженерия, кейлоггеры, зловреды - вполне рабочие инструменты.
    Ну и главное - универсальный метод взлома - терморектальный криптоанализ, имеющий практически 100%-ю эффективность.
    ФСБ будет действовать именно так, как показано на картинке от XKCD:
    538_v1.png
    Ответ написан
    2 комментария
  • Как вывести список клиентов с непрерывной историей за год?

    @cicatrix
    было бы большой ошибкой думать
    SELECT ID_client FROM 
    (SELECT
    ID_client, LAG(date_new, 365, 0) OVER (PARTITION BY ID_client ORDER BY date_new) diffdate
    FROM Transactions_info) calcdiff
    WHERE diffdate > 0

    sqlfiddle.com/#!18/902cf/40

    Вместо 365 вот здесь: LAG(date_new, 365, 0) надо поставить кол-во требуемых непрерывных дней
    Ответ написан
    Комментировать
  • Как перехватывается HTTP трафик в рамках web-сайтов?

    @cicatrix
    было бы большой ошибкой думать
    Как злоумышленник я могу:
    1. Внедрить зловреда тебе на машину
    2. Хакнуть твой роутер
    3. Если ты в локальной сети, могу слушать твой трафик на пути к шлюзу
    4. Если ты через Wi-Fi это сделать ещё проще
    5. Прислать тебе фишинговую ссылку
    6. Перехват можно осуществить на провайдере
    ...
    ещё 100500 способов
    Пакет от твоей машины до веб-сервера может проходить через десятки соединений и на каждом звене в этой цепочке можно перехватить / перенаправить / видоизменить незашифрованный трафик.

    P.S. Правда, если зловред на твоей машине, то уже поздно пить боржоми.
    Ответ написан
    1 комментарий
  • Как сделать запрос в БД чтобы получилось так как на скрине?

    @cicatrix
    было бы большой ошибкой думать
    Сделай вычисляемый столбец (price_range), где будет цена, округлённая до десятков, скажем (впрочем, шаг можно подобрать индивидуально). На него индекс.
    Дальше select price_range, count(id) from options group by price_range
    Ну а дальше отрисовывай график.
    Ответ написан
    Комментировать
  • Как и на чём сделать музыкальный плеер?

    @cicatrix
    было бы большой ошибкой думать
    Для плеера - чем меньше он отжирает памяти и процессорного времени у других процессов, тем лучше. Unity здесь вообще не вариант по этой причине.
    Собственно, плеер можно сделать вообще с управлением от командной строки. Ну или да, WF для C# или MFC для С++.
    Ответ написан
    Комментировать
  • Как можно передать в качестве параметра данный аргумент?

    @cicatrix
    было бы большой ошибкой думать
    1. MIME типы никогда не вводятся вручную при запросе, они не для этого
    2. Константы вполне определяются, вот пример для распространённых MIME типов
    https://gist.github.com/markwhitaker/b29c014236071...
    3. Если вам надо получить MIME тип в контроллер, то, скорее всего, вы что-то делаете не так.
    Ответ написан
    Комментировать
  • Вылезает ошибка Object reference not set to an instance of an object?

    @cicatrix
    было бы большой ошибкой думать
    var stream = GetStreamFromFile("Faded.mp3");
    playy = CrossSimpleAudioPlayer.CreateSimpleAudioPlayer();
    playy.Load(stream); // ОШИБКА ВЫЛЕЗАЕТ ТУТ

    2 варианта - либо GetStreamFromFile не загрузил файл и вернул null
    либо CreateSimpleAudioPlayer никакого плеера не создал и тоже вернул null
    Проверь, stream != null и playy != null
    Ответ написан
    5 комментариев
  • Ошибка: «Отсутствует аргумент, соответствующий требуемому формальному параметру», в чем причина?

    @cicatrix
    было бы большой ошибкой думать
    Вы передаёте мета-описания функций, а не их реализации.
    Делегат - это указатель на место в памяти процесса, по которому расположен тот или иной метод, который можно вызвать, если соблюдать соглашения, предписанные делегатом - количество и типы аргументов и возвращаемое значение.
    В вашем случае реализаций мат. функций в памяти нет. Машина не знает, по какому адресу сделать вызов.
    Вы должны написать реализации синуса, косинуса и пр. Только тогда вы сможете передавать функции для выполнения другому методу через делегат.

    Вот простенький пример (реализация функций может быть и в отдельных методах):
    delegate double mathfunc(double arg);
    static void Main()
    {
            mathfunc sin = arg => Math.Sin(arg);  // реализация синуса
            mathfunc cos = arg => Math.Cos(arg);  // реализация косинуса
            var result_sin = DoMath(sin, Math.PI / 2);  // передача адреса на реализацию синуса методу DoMath
            var result_cos = DoMath(cos, Math.PI / 2);
    }
    
    // Метод, который выполняет вызов функции через делегат
    static double DoMath(mathfunc function, double argument) 
    {
        return function(argument);
    }
    Ответ написан
    Комментировать
  • Как создать свою базу данных и выводить с нее данные на сайт?

    @cicatrix
    было бы большой ошибкой думать
    Можно уточнить, что вы понимаете под "своей базой данных"?
    Это устроено так: есть т. н. "движок", это программное обеспечение, которое предоставляет тебе API для ввода и вывода данных. Таких движков много - это MySQL, PostgresSql, MS-Sql, MongoDb, SqLite, и пр.
    У всех свои плюсы и минусы, выбирать нужно исходя из конфигурации твоей разработки и твоих потребностей.
    Такой сервер (ПО) должен быть запущен и крутиться на машине, к которой можно "достучаться" из твоего приложения.
    Альтернативой использованию БД может служить файловое хранение данных (где данные просто хранятся в файле на диске рядом с твоим приложением).
    Что именно выбрать - исходя из твоего вопроса сказать сложно. Какой предполагается хранить объём данных? Какая наиболее частая операция (выборка по условиям, запись, агрегация)? Сколько запросов в секунду (час) нужно обрабатывать, и пр.
    Если у тебя лабораторная работа в ВУЗе и надо сохранить 50 значений, то можешь вообще не париться и хранить данные в файле.
    Ответ написан
  • Что можно сделать с windows 10 для уменьшения объема утекающего трафика?

    @cicatrix
    было бы большой ошибкой думать
    Человеку, который наверняка пользуется смартфоном от гугла или яблока, просто смешно задумываться о паразитном трафике в винде.
    Выход простой - dual boot или виртуальная машина (с виртуалкой удобнее).
    Безопасность начинается с анализа угроз.
    Затыкивать дырки в винде - занятие безблагодатное. И меры действенны до следующего её обновления, после чего требуется снова выяснять, а где ещё потекло.
    Гораздо проще защитить именно ту информацию, которая не должна попасть к третьим лицам. На удивление, такой информации у рядового пользователя весьма немного (финансовые данные и, может быть, дикпики).
    Вот всё это на шифрованный раздел (только Bitlocker не пользуй) или лучше сразу на шифрованный раздел на виртуальной машине.
    Паранойя - она такая, но современная цифровая индустрия устроена так, что надо выбирать, либо удобство, либо privacy.
    Ну и можно до кучи hosts настроить.
    Шаблон отсюда можно взять:
    someonewhocares.org/hosts
    Ответ написан
    4 комментария
  • Где подключить бесплатную (дешёвую) почта на протоколе Microsoft Exchange?

    @cicatrix
    было бы большой ошибкой думать
    - нужна бесплатная почта на протоколе Microsoft Exchange (или другом, при сохранении функционала и возможности переноса старых писем и контактов)


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

    @cicatrix
    было бы большой ошибкой думать
    [^1] - синтаксический сахар.
    Если посмотреть, как этот код выглядит в IL, окажется, что выполняется один и тот же код.
    Кто сомневается, вот:
    Трансляция в IL
    Для понимания и последующей поддержки лучше пользоваться array[Length-1]. Это более наглядно и понятно, может быть, через несколько лет синтаксис [^1] и станет более узнаваем и распространён, но пока что это не так.
    Ответ написан
    Комментировать
  • Как найти человека по лицу по фотографии?

    @cicatrix
    было бы большой ошибкой думать
    Нужно именно по несуществующим в интернете фото.

    Вот эта библиотека поможет libastral
    Ответ написан
    Комментировать
  • Как задать разные действия при нажатия на одну и ту же кнопку?

    @cicatrix
    было бы большой ошибкой думать
    КнопкаНажата()
    1) запусти таймер на n миллисекунд
    2) выполни прыжок

    КнопкаОтжата()
    останови таймер

    ИстеклоВремяТаймера()
    1) останови таймер
    2) выполни длинный прыжок
    Ответ написан
    2 комментария
  • Как сделать из этого не говнокод?

    @cicatrix
    было бы большой ошибкой думать
    DRY = Don't Repeat Yourself (не повторяйся)
    Как минимум вынеси в отдельный модуль присваивание свойств. Настрой умолчания, чтобы каждый раз не присваивать. Замени строковые тэги строковыми константами.
    Ответ написан
  • Как сделать рандомные числа без повторений?

    @cicatrix
    было бы большой ошибкой думать
    Возможность повторов заложена в самой природе случайности. Ты ведь можешь монетку подбросить двумя решками кверху подряд.
    Придётся ручками проверять, было ли уже такое значение или нет.
    Вообще, лучше сделай так:
    1. Сгенери набор чисел A[0...N], из которых надо будет вытянуть случайным образом значения
    2. Получи случайное число R, такое чтобы 0 <= R <= A[N-1]
    3. Получи элемент набора A[R] и выброси этот элемент из него. В наборе останется N-1 элементов
    4. GOTO 2 пока набор не пустой
    Как с набором карт, из которой ты по одной тянешь карты. То есть, случайно ты определяешь не само число, а порядковый номер числа в некоем наборе.
    Ответ написан
  • Как включить шифрование между ODBC и MSSQL?

    @cicatrix
    было бы большой ошибкой думать
    VPN это на самом деле самое простое из возможных решений.
    Если клиент или сервер сами не умеют/не могут в защищённые соединения, то
    MSSQL <=> шифрующий прокси <=> небезопасная среда <=> дешифрующий прокси <=> клиент
    ^^
    По сути, это тот же VPN, только из говна и палок.
    Ответ написан
  • Эквалайзер без использования android.media.audiofx?

    @cicatrix
    было бы большой ошибкой думать
    Гугли обратное преобразование Фурье :)
    Ответ написан
    Комментировать