Прямой update в КОИБ до подведения итогов — палево, т.к.требует какого-то физического соединения КОИБа с жуликом. Прямой update после подведения итогов смысла не имеет, т.к. протоколы уже распечатаны, копии розданы наблюдателям, и потом можно проверить соответствие данных в базе ГАС Выборы и подписанных протоколов с УИК.
Если не было честных (или хотя бы оппозиционных) наблюдателей на участке, то легко можно подделать цифры в протоколе, и для этого никакой update вообще не нужен.
Я как раз и говорю, что строго надо сверять количество проголосовавших — на экране перед завершением голосования и в протоколе. И да, сомневаюсь, что будут именно так фальсифицировать — очень стрёмно.
Гораздо проще первым способом — перекинуть голоса с одного кандидата на другого.
Не-не, то, что там полноценная ОС, это как раз ожидаемо. Машина работает с кучей всякой периферии — принтер, сканер, всякие детекторы подлинности, упаковывает-распаковывает XML-структуры, работает с USB, с файловой системой и т.д. Делать всё это на низкоуровневом контроллере — зачем? Поставили одноплатный ARM-компьютер с линуксом на борту — и огонь, всё работает.
По поводу GSM и прочей беспроводной паранойи — это всё маловероятно. Представляете, сколько техников будет знать, что внутри есть сим-карта или wi-fi антенна? Этого же не замаскируешь. Тайну такому количеству людей доверять нельзя. Достаточно одного техника, чтобы фотки в интернете оказались.
Выполнение КОИБ каких-либо программ с флэш-карты не предусмотрено технически, и отсутствие такой возможности проверено путем анализа исходного кода. Внутрь программного обеспечения не может быть встроено ничего лишнего, КОИБ выполняет только подсчет голосов.
Во время инициализации КОИБ программа просит вставить флешку с исходными данными для голосования. Там содержится название выборов, список кандидатов для голосования, координаты квадратиков — и т.д. Всё как и должно быть.
Но самое интересное, что алгоритм заполнения протокола (формулы всякие, контрольные соотношения) зашиты прямо в том же файле. Включая расчёт строк протокола, в которых прописывается количество голосов за кандидата. Я думаю, что разработчики предполагали, что КОИБ может использоваться не только в России, и что правила заполнения протоколов могут поменяться. Но вот почему эти правила распространяются не в виде отдельного класса, который можно качественно обложить юнит-тестами, а в виде конфигурации, которая заливается на флешку и компилируется динамически, вот это вопрос.
В файле исходных данных все формулы пишутся прямо на C#. Некоторые метапеременные разворачиваются на этапе загрузки в соответствующие C#-выражения.
Имеющийся функционал позволяет запрограммировать перераспределение итоговых голосов в пользу какого-либо Сокандидата. Убедиться, что такая фальсификация не имела места, можно только если достоверно известно, что участки для ручного пересчёта выбирались справедливым равновероятным жребием. Как мы знаем из новостей, Венедиктов подтвердил, что ручной пересчёт совпал до единого голоса. Вопросы — насколько мы верим Венедиктову, и насколько честным было определение участков для пересчёта.
Также, учитывая, что протокол распечатывается после того, как в КОИБ введены данные о неиспользованных бюллетенях, председатель УИК мог втихаря залезть в сейф и хорошо спрятать некоторое количество бюллетеней. При обычных выборах без КОИБ такая фальсификация достаточно сложная, т.к. пришлось бы вбросить примерно то же самое количество бюллетеней, сколько спрятано (или чуть меньше). Иначе будет очень подозрительно, когда количество унесённых избирателями бюллетеней будет зашкаливать. Когда есть «заряженный» КОИБ, накидывание голосов желаемому кандидату может проводиться автоматически по формулам с флешки так, чтобы это не было подозрительно. Защищаться можно, как обычно — гарантируя справедливый жребий при определении участков для пересчёта.
Судя по коду, накрутить общее количество принятых бюллетеней во время голосования не представляется возможным. А значит, счётчику на панельке КОИБ можно доверять. Если в конце дня он показывает N, то будьте уверены, что внутри N бюллетеней. Если в протоколе окажется M > N, значит имело место жульничество. Одно но — КОИБ при этом не должен быть подключен к сети. В противном случае, эмулируя удалённый сканер (второй КОИБ, который стоит рядом с главным называется RemoteScanner), можно через процедуру AcceptNewState внедрить желаемые результаты по команде из центра. Прям натурально КОИБ примет хэш «кандидат => число_голосов». Чтобы защититься, наблюдатели должны внимательно проверять наличие лишних проводов, ведущих к КОИБам. А также не позволять их подключать после того, как голосование завершено, что бы там ни вешал на уши председатель.
В общем, резюме, как защищаться от фальсификаций на участках с КОИБами:
1. следить за ростом счётчика принятых бюллетеней. Какое значение было за 1 секунду до конца голосования, такое должно попасть в протокол.
2. следить, чтобы ничего не подключали к КОИБу ни во время, ни после голосования.
Ну и совсем мёртвая зона — это доверие к выбору участков для ручного пересчёта. Кстати, проверить это тоже довольно легко. Можно сравнить результаты на участках, где был пересчёт, и где были КОИБ без пересчёта. Есть у кого такие данные?
Что значит запланированное устаревание? В том, что технологии развиваются бешеными темпами, производитель не виноват. То, что краска потёрлась, это, простите, нормально. Называется естественный износ. Можно было купить телефон другого известного бренда, у которого металлический корпус и неубиваемое стекло. Но он и стоит в 2 раза дороже. Вы согласились купить телефон из пластика, но зато в 2 раза дешевле. Ну носите его аккуратно, в чехле, чтобы он не истирался. Вы ещё упомянули, что связь глючила — тут, пожалуй, единственное, за что правда можно претензии предъявлять. И то, если телефон при этом не роняли, что маловероятно.
Поймите меня правильно, я не говорю, что производители белые и пушистые. Просто какое-то лицемерие получается — мы одних людей называем жуликами, а сами себя ведём точно так же. Можно минусовать.
Ну вообще она позволяет искать ошибки и в случае автоматической обработки. На практике ведь часто баланс не сходится. И бухгалтер тогда сидит и ищет, где косяки. Или найдёт какую-то переплату, или недопоставку, или ещё что. Разве не так?
Мне научрук говорил, что можно поменять несколько строчек, и типа будет уже другая работа. Странно было это слышать, но этим пользуются, чтобы в нескольких журналах опубликоваться.
Мне кажется, вам хорошо должна подойти роль продюсера/руководителя веб-студии. Вы знаете специфику работы многих специалистов (от дизайнера до seo), а значит сотрудникам будет очень тяжело вешать вам лапшу на уши. Вы можете профессионально оценить качество работы любого из подчинённых.
Википедия даёт другое определение o-малого. Вы — третье. Перед тем, как использовать o-нотацию в своих публикациях или на собеседованиях, лучше всего сначала уточнить определение, которое будет использоваться.
Не про это немного я говорю. Ни хороший менеджер, ни хороший заказчик не могут знать достоверно, что будет через 5 лет с бизнесом. Они физически не смогут дать точный прогноз, каким образом он может видоизмениться за это время. Делать программное решение, закладываясь на все возможные варианты развития по всем фронтам, это лишняя трата денег.
Условно говоря, если вы не можете с высокой долей уверенности говорить о том, что, например, магазинчик разрастётся до сети супермаркетов, то и не нужно делать ему программу учёта с поддержкой огромного числа рабочих мест кассиров, реализацией сложной внутренней логистики для управления складами, планированием расписаний разгрузки фур на десяти дебаркадерах и т.д. Потенциально любой магазинчик может разрастись до таких масштабов, но это не значит, что надо сразу всё это закладывать в проект, пусть даже «на вырост».
Сделайте то решение, которое нужно клиенту сейчас. Уточните у него реалистичные прогнозы на ближайшее время, с чем он может столкнуться, и заложите в этих местах слои абстракции, чтобы потом проще было доработать. Но не надо закладывать будущие маловероятные расширения и усложнять программу без необходимости.
Сделай, как на картинке справа, учитывая то, что написано слева — нормальное задание. Точнее, я могу предложить ситуации, когда это было бы нормальным заданием. Было ли оно в реальности нормальным — не знаю.
Если не было честных (или хотя бы оппозиционных) наблюдателей на участке, то легко можно подделать цифры в протоколе, и для этого никакой update вообще не нужен.
Гораздо проще первым способом — перекинуть голоса с одного кандидата на другого.
По поводу GSM и прочей беспроводной паранойи — это всё маловероятно. Представляете, сколько техников будет знать, что внутри есть сим-карта или wi-fi антенна? Этого же не замаскируешь. Тайну такому количеству людей доверять нельзя. Достаточно одного техника, чтобы фотки в интернете оказались.
А вот где ложь, ###деж и провокация — так это вот тут: www.cikrf.ru/banners/smi_tech/12/011211.html
Теперь мы точно знаем, что это не так.
Во время инициализации КОИБ программа просит вставить флешку с исходными данными для голосования. Там содержится название выборов, список кандидатов для голосования, координаты квадратиков — и т.д. Всё как и должно быть.
Но самое интересное, что алгоритм заполнения протокола (формулы всякие, контрольные соотношения) зашиты прямо в том же файле. Включая расчёт строк протокола, в которых прописывается количество голосов за кандидата. Я думаю, что разработчики предполагали, что КОИБ может использоваться не только в России, и что правила заполнения протоколов могут поменяться. Но вот почему эти правила распространяются не в виде отдельного класса, который можно качественно обложить юнит-тестами, а в виде конфигурации, которая заливается на флешку и компилируется динамически, вот это вопрос.
В файле исходных данных все формулы пишутся прямо на C#. Некоторые метапеременные разворачиваются на этапе загрузки в соответствующие C#-выражения.
Имеющийся функционал позволяет запрограммировать перераспределение итоговых голосов в пользу какого-либо
Сокандидата. Убедиться, что такая фальсификация не имела места, можно только если достоверно известно, что участки для ручного пересчёта выбирались справедливым равновероятным жребием. Как мы знаем из новостей, Венедиктов подтвердил, что ручной пересчёт совпал до единого голоса. Вопросы — насколько мы верим Венедиктову, и насколько честным было определение участков для пересчёта.Также, учитывая, что протокол распечатывается после того, как в КОИБ введены данные о неиспользованных бюллетенях, председатель УИК мог втихаря залезть в сейф и хорошо спрятать некоторое количество бюллетеней. При обычных выборах без КОИБ такая фальсификация достаточно сложная, т.к. пришлось бы вбросить примерно то же самое количество бюллетеней, сколько спрятано (или чуть меньше). Иначе будет очень подозрительно, когда количество унесённых избирателями бюллетеней будет зашкаливать. Когда есть «заряженный» КОИБ, накидывание голосов желаемому кандидату может проводиться автоматически по формулам с флешки так, чтобы это не было подозрительно. Защищаться можно, как обычно — гарантируя справедливый жребий при определении участков для пересчёта.
Судя по коду, накрутить общее количество принятых бюллетеней во время голосования не представляется возможным. А значит, счётчику на панельке КОИБ можно доверять. Если в конце дня он показывает N, то будьте уверены, что внутри N бюллетеней. Если в протоколе окажется M > N, значит имело место жульничество. Одно но — КОИБ при этом не должен быть подключен к сети. В противном случае, эмулируя удалённый сканер (второй КОИБ, который стоит рядом с главным называется RemoteScanner), можно через процедуру AcceptNewState внедрить желаемые результаты по команде из центра. Прям натурально КОИБ примет хэш «кандидат => число_голосов». Чтобы защититься, наблюдатели должны внимательно проверять наличие лишних проводов, ведущих к КОИБам. А также не позволять их подключать после того, как голосование завершено, что бы там ни вешал на уши председатель.
В общем, резюме, как защищаться от фальсификаций на участках с КОИБами:
1. следить за ростом счётчика принятых бюллетеней. Какое значение было за 1 секунду до конца голосования, такое должно попасть в протокол.
2. следить, чтобы ничего не подключали к КОИБу ни во время, ни после голосования.
Ну и совсем мёртвая зона — это доверие к выбору участков для ручного пересчёта. Кстати, проверить это тоже довольно легко. Можно сравнить результаты на участках, где был пересчёт, и где были КОИБ без пересчёта. Есть у кого такие данные?
Поймите меня правильно, я не говорю, что производители белые и пушистые. Просто какое-то лицемерие получается — мы одних людей называем жуликами, а сами себя ведём точно так же. Можно минусовать.
2*n^2 = O(n^2)
2*n = O(n^2)
это две корректные O-оценки. Тогда как o-малое — это асимптотически верная оценка сверху. Т.е.:
2*n^2 = o(n^2) < — корректная
2*n = o(n^2) < — некорректная
Аналогично с омегами, но снизу.
Википедия даёт другое определение o-малого. Вы — третье. Перед тем, как использовать o-нотацию в своих публикациях или на собеседованиях, лучше всего сначала уточнить определение, которое будет использоваться.
Условно говоря, если вы не можете с высокой долей уверенности говорить о том, что, например, магазинчик разрастётся до сети супермаркетов, то и не нужно делать ему программу учёта с поддержкой огромного числа рабочих мест кассиров, реализацией сложной внутренней логистики для управления складами, планированием расписаний разгрузки фур на десяти дебаркадерах и т.д. Потенциально любой магазинчик может разрастись до таких масштабов, но это не значит, что надо сразу всё это закладывать в проект, пусть даже «на вырост».
Сделайте то решение, которое нужно клиенту сейчас. Уточните у него реалистичные прогнозы на ближайшее время, с чем он может столкнуться, и заложите в этих местах слои абстракции, чтобы потом проще было доработать. Но не надо закладывать будущие маловероятные расширения и усложнять программу без необходимости.
Сделай, как на картинке справа, учитывая то, что написано слева — нормальное задание. Точнее, я могу предложить ситуации, когда это было бы нормальным заданием. Было ли оно в реальности нормальным — не знаю.