• Как запретить chrome делать screenshot рабочих столов?

    NeiroNx
    @NeiroNx
    Программист
    Запускайте браузер в виртуальной машине - они получат скриншот стола виртуальной машины.
    Ответ написан
    Комментировать
  • Как хранить в файле огромный массив объектов?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Каждому классу присвоить id (целое число), и написать для этого класса функции записи в бинарный поток и чтения из него. Записывать непосредственно значения полей.
    Если потребуется прямой доступ к объектам, то при создании файла отвести в начале место для ссылок на положение каждого элемента массива в файле, потом, по мере создания файла накапливать эти ссылки. В конце записать. Если прямого доступа не нужно - писать и потом читать все объекты подряд.
    Если структура классов будет меняться, и иногда потребуется читать старые файлы, надо предусмотреть номер версии, чтобы десериализатор класса мог его учитывать. Читать новый файл старой программой при этом не получится.
    Если есть информация о диапазонах значений полей, можно записывать меньше байтов, чем размер типа (например, для целых - два или три байта). Для массивов можно предусмотреть упаковки какими-нибудь разностными схемами.
    Ответ написан
    Комментировать
  • Как хранить в файле огромный массив объектов?

    lorka
    @lorka
    Game-develop
    Хранить структурированные объекты в файле - не лучшая идея, тем более, таких размеров. Если нет возможности использовать MySQL или другие сервисные БД - возможно, стоит взглянуть в сторону sqlite? Если же нужно именно в файле - тогда стоит обратиться уже к возможностям файловой системы - это SSD диски, RAID1(RAID2, если есть минимум 4 харда) либо RAM-диск(в последнем случае озаботится резервным копированием, а еще лучше - зеркалированием на реальный хард).
    Ответ написан
    Комментировать
  • Как отследить отправку смс?

    @follow39
    Никак.
    Ответ написан
    Комментировать
  • Почему метод GetEnumerator() интерфейса IEnumerable реализовывается дважды?

    FirstX
    @FirstX
    .net developer
    Для ответа на этот вопрос надо окунуться в историю. А именно был момент, когда не было Generic-типизации и был только нетипизированный интерфейс перечисления IEnumerable. А потом с приходом новой версии .Net появились обобщения (это когда явно указывается тип <T>, в твоем случае тип данных <Product>).

    Сигнатура этого интерфейса выглядит следующим образом:
    public interface IEnumerable<out T> : IEnumerable

    То есть для обратной совместимости, новый интерфейс наследует старый, а значит и метода нужно реализовать два: один, который возвращает старый нетипизированный вариант, и новый, более удобный типизированный вариант.

    Для понимания: в старом варианте, когда ты обходил в цикле каждый элемент через foreach - тип элемента был object (все другие типы от него унаследованы). И на каждой итерации, чтобы получить свой тип Product и работать с ним - приходилось делать приведение типов.
    В новом варианте, благодаря тому, что явно указан тип <Product> при обходе в цикле - ты сразу получаешь объект типа Product.

    Рекомендую по этой теме почитать вообще изменения в .Net при переходах с версии на версию + почитать про Generic в дотнете.
    Ответ написан
    Комментировать
  • WPF "проглатывает" исключения. Куда копать?

    @Sumor
    Ошибки Binding проглатываются — это действительно фишка WPF. Они пишутся в выход отладчика с описанием ошибки.
    Для отлова ошибок можно использовать событие BindingComplete, примерно, как это описано у Microsoft.
    Пример отлова ошибок Binding.

    Помимо этого есть интересный механизм проверки значений ValidationRule.
    Пример использования ValidationRule
    Ответ написан
    1 комментарий