Pull to refresh
0
0
Send message
Вы приходите «в паспортный стол», проходите фейс-контроль с паспортом, расписываетесь в журнале голосовавших, тянете из стопки чистый бюллетень какой понравился (они все одинаковые), а из соседней стопки — конверт

Где тут защита от ситуации, когда в паспортный стол приходит начальник паспортного стола и ему выдают миллион бюллетеней и конвертов без всякой проверки? Мы должны поверить джентльменам из паспортного стола на слово, что они так не поступят?


Где защита от ситуации, когда типография печатает лишние бюллетени и выдает их чиновнику?


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

Объясните пожалуйста, где я могу увидеть эту трансляцию и убедиться, что бюллетени приносят разные люди по одному, а не приходит начальник паспортного стола и вкидывает миллион бюллетеней?


Мне кажется, вы увлеклись криптографией и совершенно забыли про более простые способы обхода этой системы.

Список проголосовавших не секретный. На бумажных выборах наблюдатель имеет право с ним знакомиться (хотя по факту, после закрытия участков списки пересчитывают и вам никто их не даст. Можно знакомиться со списком до голосования).


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


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

Вы привели слайды с моделью угроз и нарушителей. Но они не покрывают весь перечень угроз. Давайте рассмотрим такие две угрозы:


1) По приказу руководства страны в Госуслуги добавляется 5 миллионов записей несуществующих людей. Далее они добавляются в списки для электронного голосования. Далее чиновник голосует от имени этих 5 миллионов людей.


2) По просьбе руководства страны ("а дайте пожалуйста моему человечку доступ, чтобы я мог проконтролировать голосование") ЦИК выдает сотруднику ФСБ доступ с правами администратора ко всем серверам голосования. Сотрудник ФСБ производит произвольные манипуляции на этих серверах.


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




Далее, вы расписали систему, которая должна обеспечить тайну голосования. Каким образом мы можем убедиться, что сервера системы работают именно так, как описано в статье? Или вы опять предлагаете поверить джентльменам на слово?




Далее, вы написали, что за бумажным голосованием трудно наблюдать. И пытаетесь этим показать, что оно хуже электронного. Да, трудно, но это возможно. Нужно найти 180 000 небезразличных людей в стране и все участки будут покрыты наблюдателями.


За электронным голосованием наблюдать невозможно. Вы можете найти миллион небезразличных людей, но они ничего не могут проверить.


Например, в Москве покрытие участков наблюдением очень хорошее. А при добавлении электронного голосования появляются миллионы голосов, которые нельзя проверить. Таким образом, в Москве уровень покрытия наблюдением из-за электронного голосования снизится. Зачем в Москве, где хорошо развит транспорт, где хорошее наблюдение, нужно внедрять электронное голосование?


Вот, что мы не можем проверить:


  • ни наблюдатель, ни член комиссии с ПСГ не может просмотреть списки записавшихся на электронное голосование: паспортные данные, адрес прописки, IP-адрес, номер телефона. То есть, мы не можем проверить, что в списках реальные люди, а не мертвые души. Мы не можем проверить, они сами регистрировались или там тысячи человек с одинаковым IP-адресом и номером телефона. Для сравнения, в бумажном голосовании списки по закону можно просматривать. А тут предлагается верить джентльменам на слово.


  • ни наблюдатель, ни член комиссии с ПСГ не могут проверить, что бюллетени выдаются только присутствующим в спискам людям. На бумажных выборах это возможно.


  • ни наблюдатель, ни член с ПСГ не могут проверить, что голосует реальный человек. Например, они не могут получить и проверить данные о верификации номеров телефонов. В бумажном голосовании мы видим, кто приходит на участок.


  • ни наблюдатель, ни член с ПСГ не могут проверить, что система функционирует как заявлено.



Например, вы пишете:


Система ДЭГ, получив из ЕСИА данные учётной записи избирателя, проверяет, есть ли он в книге избирателей, и выдаёт бюллетени, соответствующие выборам, проходящим по его месту жительства

Как мне можно убедиться, что система работает именно таким образом? Что в ней нет бекдора, который по определенному паролю выдает бюллетень без проверки наличия избирателя в списке?


Далее, вы пишете:


Естественно, на оба вопроса ответ может быть только вероятностный — но с другой стороны, и ответ на вопрос «нет ли на избирательных участках над кабинкой скрытой камеры, подключённой к системе распознавания лиц» — тоже вероятностный, обследовать помещение вас в общем случае не пустят.

Избирателя не пустят, а наблюдатель и член с ПСГ имеет право осмотреть помещение для голосования перед выборами. То есть, на бумажных выборах проверить отсутствие скрытой камеры возможно. В отличие от электронных.


Я считаю, что электронное голосование непроверяемо и, следовательно, является жульничеством. Бумажное голосование это вершина прогресса и образец открытости. Переубедите меня. Объясните мне, что электронное голосование прозрачнее бумажного. Докажите, что даже по приказу Путина его невозможно будет фальсифицировать.

Ошибки — это плохо. Но надо ли публиковать их сразу вместо ответственного раскрытия?


Вот допустим, завтра я найду уязвимость в Windows или Linux. И не сообщая в Microsoft, выложу ее на Хабр. И у вас, автор, с ее помощью взломают компьютер, украдут ваши биткойны, выложат в паблик все ваши рабочие проекты и код, пароли/доступы, украдут вашу почту и что еще там можно украсть. Вы обрадуетесь?

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


Электронное голосование во всем мире, насколько я знаю, опирается на доверие к властям и их честность. Наверно, потому его так активно и внедряют. Потому что потом получается, как в анекдоте, где джентльменам верят на слово.


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


Не могу поверить, что эта уязвимость (возможность добавить любое число голосов и невозможность наблюдать за голосованием) оставлена случайно. Если бы правительство стремилось сделать честную систему голосования, они бы предусмотрели возможность контроля и наблюдения. Люди, которые в ЦИК годами сидят и собаку съели на юридических тонкостях, не могут "забыть" про такие вещи. Это можно сделать только намеренно.


Электронное голосование — это электронное жульничество.

Насколько я понимаю, при заключении договора с платежной системой продавец обязуется не завышать цену при оплате картой. Не нравится условие — не подключайся к платежной системе.


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


Не понимаю, что тут можно обсуждать. Вот логика нормального человека: если условия устраивают, заключаем договор, если нет — не заключаем. А в комментариях я вижу логику русского человека: заключаем договор, а потом просто перестаем его соблюдать, потому что видите ли комиссия большая и он несправедливый.

У вас куча ошибок в рассуждениях.


Во-первых, делать что-то лучше, чем не делать. Лучше проголосовать, чем сидеть дома. Голосуя, вы вредите власти, а не голосуя — облегчаете им победу. Еще лучше, конечно, не просто проголосовать, а еще и наблюдать, чтобы затруднить фальсификации.


Во-вторых, ваши объяснения про "аполитичное общество" не согласуются с тем, что в Приморье единоросс не смог с первого раза набрать 50%, и в Мосгордуме ЕР набрала около 50%. Как видно, оппозиционно настроенных избирателей достаточно много, чтобы это было заметно.


В-третьих, а откуда информация про якобы 500 000 зарегистрировавшихся в Умном Голосовании? Вы эту цифру выдумали. Вы не знаете точной цифры. Плюс, кроме зарегистрировавшихся, есть еще незарегистрированные, которые просто зайдут на сайт и посмотрят рекомендацию перед выборами.


Но т.к. там и так все заранее расписано по квоте, то влиять мы на это не можем.

Ваше объяснение не стыкуется с реальностью. Вот единороссы расписали себе квоту в 90% в Мосгордуме, а обеспечить ее не смогли. А если бы люди, как вы советуете, сидели бы дома, то они спокойно бы набрали сколько захотели.


Потому что на последний митинг Навального вышло бы не 50 тысяч на всю страну, а примерно 10 миллионов

Еще одна ошибка. Число вышедших на митинг не равно числу сторонников Навального, так как многие боятся выходить на митинги и выходит лишь малая доля сторонников. А вот на выборы сходить они не боятся.

Голосовать надо за что — то, что для вас является важным

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


А что мы увидим в бюллетене? В бюллетене мы увидим кандидата от ЕР, который ЗА беззаконие, и несколько кандидатов от "системной" "оппозиции", которые в общем тоже ничего не имеют против диктатуры и беззакония — лишь бы у них были теплые местечки. Они поддерживают репрессивные законы. Им наплевать на будущее и настоящее нашей страны.


Вы предлагаете выбирать "планы" и "перспективу". Какую перспективу могут вам предложить эти люди? Все, что они могут предложить — это место в лагере, в который превращается страна. Ну, еще скамейку за бюджетный счет могут во дворе поставить.


Потому "Умное голосование" является адекватным ответом. Не пытаться искать "перспективу" среди трусливых и непорядочных людей, а активно противодействовать власти.


А что касается Яндекс-метрики, то конечно ее надо убрать. Нет сомнений, что Яндекс сам соберет всю информацию и сдаст диктатору.


Впереди застой и деградация.

Они уже давно наступили.

Переключение по номеру приложения win+1(2,3,4...) существует.

Это не то, что я описал. Номера меняются при запуске/закрытии приложений и потому не запоминаются. А моя идея в том, чтобы у каждого приложения была закрепленная за ним буква, которая не меняется при перезагрузке системы. И вы это запоминаете, на автомате жмете Task + G если хотите переключиться в Гимп, и всегда в него попадаете.


Переключение на конкретный язык конкретным сочетанием в винде существует, это спрятано в «дополнительные параметры клавиатуры» в настройках, которые не панель управления.

Сочетания там плохие и неудобные, надо нажать кучу кнопок одновременно. И эти сочетания плохо понятны начинающим пользователям. Кнопка, на которой написано "Рус" и удобнее, и понятнее.


Можно сделать хоть раскладку, которая будет эмодзи вместо букв и спецзнаков печатать

Это не решает описанные мной проблемы, так как на западной клавиатуре недостаточно клавиш для размещения русских букв. Невозможно разместить русские буквы так, чтобы знаки препинания остались на своих местах. Необходима клавиатура с большим количеством клавиш, а не костыли в виде наклейки русских ярлычков на неудобную западную клавиатуру.


Следовательно, западная клавиатура плохая и не подходит для русских пользователей.

У вас претензии сводятся к "почему не как в винде". Но что хорошего в винде? Почему вы взяли ее за образец? Вот вы приводите в пример переключение окон через панель задач. Это разве хороший способ? Надо глазами найти нужную иконку, медленно и точно подвести к ней курсор мыши, кликнуть. Это плохой и медленный, убогий интерфейс для 80-летних тетушек, которые никуда не спешат.


У мыши такие недостатки: ей медленно попадать, попадание требует значительных умственных усилий, и вы должны постоянно смотреть на экран. Клавиатура лишена этих недостатков. За единицу времени я нажму больше клавиш, чем вы сможете кликнуть иконок на экране.


У меня в Линуксе, например, вообще нет панели задач, и мыши тоже нет (есть тачпад), и я переключаюсь с помощью Alt-Tab, не отрывая руки от клавиатуры и не тратя время. Гораздо быстрее.


Вы можете возразить, что когда окон много, переключаться через Alt-Tab неудобно. А также, тратится время на принятие решения, сколько раз надо нажать эти клавиши. Соглашусь. В такой ситуации нужно переключение через горячую клавишу. Например, жмете "Task Switch + I" и переключаетесь в IDE, жмете "Task Switch + T" и попадаете в Терминал (или в Телеграм). Также можно использовать двухклавишные сочетания: "Task Switch + G2" открывает второе окно Гимпа. Это, мне кажется, удобный способ и если к нему привыкнуть, то начнете переключаться на автомате. Если на вашей клавиатуре нет такой клавиши, или в ОС нет такой возможности — что ж, мучайтесь тогда с мышью.


Странно, что Эппл, делающая свое железо, не смогла сделать такую клавишу.


Или вы приводите в пример всплывающие превьюшки окон в Windows. Опять же, это фича для старых тетушек. Вы должны потратить время на наведение мыши, потом еще подождать и потом вглядываться в крошечные картинки. Это просто не нужно. У меня в Линуксе можно нажать Win и получить список всех открытых окон, если он зачем-то вам понадобился.


Что касается запуска программ, я в Линуксе это делаю так: я жму Win, попадаю на Launchpad-подобный экран и начинаю набирать название программы, например ter — показывает Терминал, calc — Libreoffice Calc. По моим ощущениям, такой способ запуска самый удобный. Опять же, не нужна мышь и не надо даже смотреть на экран, чтобы запустить программу. Единственный баг — у Линукса не хватает ума включать английскую раскладку при нажатии Win и иногда вместо "Term" получается "еукь". На мой взгляд, поиск должен вестись одновременно в двух раскладках: в русской и английской сразу.


Наконец, давайте поговорим про клавиатуру. Клавиатура одинакова плохая, убогая и в маках, и в PC. Вот почему:


  • на клавиатурах нет кнопки Task Switch для быстрого переключения между программами или окнами
  • на клавиатурах нет двух выделенных кнопок для включения русской и английской раскладки. Вместо этого и Мак, и Windows предлагают неудобный подход: 1) найти глазами индикатор клавиатуры, 2) считать его показания, 3) принять решение о том, нужно ли переключение, 4) нажать неудобное сочетание (Alt + Shift или Win + Space). Сравните, насколько быстрее было бы просто не глядя на экран нажать "Рус" и набирать текст. Это один шаг против четырех.
  • на клавиатурах некоторые символы в разных раскладках находятся на разных клавишах, например: точка, двоеточние, запятая, слеш. Это приводит к постоянным ошибкам, по крайней мере я их делаю, может вы обладаете суперспособностями и не ошибаетесь, но я так не умею.
  • в русской раскладке невозможно набрать такие символы, как [ или {, что доставляет неудобства при программировании на русскоязычных языках программирования. Это несправедливо, что русский язык является менее удобным в использовании, чем английский, хотя мы живем в России.

Хорошая клавиатура должна быть лишена этих недостатков. Все знаки должны быть доступны одинаковым способом в любой раскладке и необходимы выделенные клавиши "Task Switch", "Рус" и "Лат".

А я не понимаю, зачем в машинах столько электроники. Зачем нужна дорогая машина с кучей электроники? Мне кажется, индустрия движется не туда.


Цена на новые автомобили начинается с 70-80 МРОТ.


Но мне кажется, многим людям нужна не дорогая, а максимально дешевая машина:


  • не нужен разгон до скоростей более 120 км/ч, ведь я не гонщик. В городе типичная скорость передвижения вообще 40 км/ч, а максимально разрешенная — 60. На трассе — 110. Быстрее не нужно.
  • не нужен быстрый разгон до 100 км/ч, ведь я не гонщик и никуда не спешу
  • не нужны дорогие сложные системы вроде ABS, ведь я не гонщик
  • не нужен дорогой корпус сложной формы, можно простое колхозное, прямоугольное, но зато дешевое решение
  • не нужна дорогая сложная электронная система, чтобы снизить потребление топлива с 5,3 л до 5,2 л, ведь я живу в стране с дешевой нефтью. Не нужна система очистки выхлопов, ведь у нас менее строгие требования, чем на Западе.
  • не нужен кондиционер

Уверен, что для многих людей важнее всего: 1) низкая цена 2) чтобы машина редко ломалась. При этом не принципиально, чтобы там стояли электронные современные блоки — компоненты по технологиям 80х-90х вполне хороши.


Объясните, почему производители не идут людям навстречу и не делают такие машины, а делают вместо этого навороченные и сложные? Это заговор производителей и банков, чтобы люди брали неподъемные кредиты с огромными процентами? Или по какой-то причине невозможно производить хорошие дешевые машины на технологиях 90-х годов?

Заметил в комментариях мнение, что построенные в СССР "сообща" заводы и снятые мультфильмы являлись в СССР "общественным достоянием" и "принадлежали" гражданам. Я не могу с этим согласиться, и считаю что это обман, который советское правительство вкладывало в головы граждан.


Что значит "принадлежит"? Это значит, что у кого-то есть право распоряжаться данной собственностью. К примеру, если мне принадлежит автомобиль, то я могу продать его или разобрать на запчасти. А если завод кому-то принадлежит — то этот кто-то может влиять на работу завода: например, сменить директора.


Было ли у советских граждан право сообща распоряжаться заводами? Очевидно, нет. Правом распоряжаться владел только один человек — Генеральный Секретарь Коммунистической Партии. Граждане не имели возможности избирать его или как-то влиять на его решения. Потому мы можем сделать единственный вывод: в СССР предприятия, дороги, поезда, многоквартирные дома принадлежали Генеральному Секретарю. А не народу.


Правда, это право распоряжения не было правом собственности — Секретарь не мог оставить завод по наследству своим детям, например. Но очевидно, что у обычных граждан прав распоряжения никаких не было. И следовательно, обычным гражданам в СССР ничего, кроме личного имущества, не принадлежало.


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


Если я не прав, пожалуйста, аргументируйте. Если не можете — то согласитесь, что ни заводы, построенные в СССР, ни советские мультфильмы до 1991 года вам не принадлежали и не принадлежат.

Это судебное решение хорошо показывает феодальную структуру нашего общества.


Смотрите: если, допустим, обычного человека незаконно уволят, или допустим, его кто-нибудь оскорбит и изобьет, какую компенсацию присудит суд? Ну тысяч 10-20. А когда какого-то провластного клоуна заблокировали в Ютубе, суд присуждает штраф в миллиарды рублей.


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

Ваша роборука имеет завышенную цену. С какой стати несколько моторов и кучка пластмассы могут стоит 150 000 долларов?

Статья довольно сумбурная. Просто список заметок без вступления и разъяснений. Например:


Сначала подрубаем все нужные нам библиотеки и дефайним нужные нам дефайны…

Это текст, который может написать какой-нибудь стажер. Инженеры такие фразы не используют.


Смысл этого действия состоит в том по сколько байт мы выравниваем информацию при размещении в памяти.
В примере от производителя вообще представлена какая-то такая конструкция

Это не похоже на нормальное объяснение. Стоило детально изучить синтаксис каждой конструкции, а не писать "я не понимаю, что это такое, но просто скопируйте и все заработает".


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


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


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


Расскажу еще немного полезных улучшений, которые могут упростить жизнь разработчику на ассемблере. Можно реализовать защиту памяти. При написании программы вы размечаете память на массивы и переменные. Ко всем обращениям в память вы добавляете аннотацию, в какой массив вы обращаетесь. Эмулятор при выполнении кода сверяет адрес обращения с аннотацией и выдает ошибку при несоответствии. Это позволяет отлавливать выход за границы массивов, обращения по неправильным адресам, что должно экономить время на отладку программы. Также для косвенных переходов (switch) тоже можно указать список возможных целей и проверять корректность адреса перехода. Опять же, таких возможностей обычно нет в стандартных инструментах (почему, интересно?), но это должно быть несложно реализовать в эмуляторе.


То есть, эмулятор не обязан в точности соответствовать реальному железу. Он может давать дополнительные фичи (защита памяти, контроль границ массивов и переходов, контроль переполнения стека), полезные при отладке.


Еще я заметил, что все ваши примеры не используют VLIW и вы выполняете по одной команде за раз. По моему, это плохо, зачем платить за более дорогой чип с поддержкой VLIW и не использовать его возможности? Можно взять более дешевый и медленный чип без VLIW.


Этот способ мягко говоря не серьёзный и вообще делать так неприлично, ибо если мы внутри одной из вызываемых программ будем эксплуатировать данный регистр то все пропадет и дорогу назад мы забудем. Следовательно надо делать какую то структурку похожую на стек.

А по моему, надо делать умный транслятор, который умно разложит переменные по регистрам и позволит нам не тратить циклы на обращения в память.

Вы рассуждаете несознательно и безответственно.


Нельзя строить "надлежащее количество парковочных мест". Дворы превратятся в большие уродливые парковки, если мы выделим в них место для каждого. Можно строить подземные или многоэтажные парковки, но тогда за них должны платить только автовладельцы, а не все жильцы. А автовладельцы хотят парковки бесплатно (читай: за счет других).


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


В общем, число парковочных мест ограничено и расширено быть не может.


Демократическим решением было бы дать возможность автомобилистам двора или района проголосовать, что они хотят: бесплатные, но вечно занятые места, или платные, с возможностью "выкупить" место лично для себя на аукционе. Но в нашем отсталом обществе люди не хотят решать проблемы справедливым путем. Одни хотят издавать приказы, не считаясь ни с законом, ни с чужим мнением, а другие хотят парковаться на газоне или поперек подъезда. Да и закон, думаю, не разрешает местным депутатам провести такое голосование.

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


Потому я считаю, что Си безнадежно плох, если он не позволяет раз и навсегда закрыть такой класс уязвимостей. К примеру, в PHP или JS при работе со строками не возникает переполнения буфера, так как вся работа идет через абстракции, а не через прямую работу с указателями.


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


Понятно, что ошибку может сделать любой. Но один после этого примет меры, чтобы такой класс ошибок больше не возникал никогда, а другой просто "залатает" ошибку и продолжит писать в том же стиле.


Чтобы далеко не ходить, давайте возьмем пример недавней уязвимости в ядре линукса: преобразование size_t в int привело к возможности переполнения буфера и перезаписи памяти ядра.


В коде переменная типа size_t (беззнаковый тип) передавалась в функцию с аргументом типа int. И если size_t имел значение более 2 млрд, то переменная int становилась отрицательной. Что позволяло обойти проверку размера буфера.


Такая ошибка могла быть отловлена компилятором (но не была), и не была отловлена статическим анализатором. В качестве причин указывают то, что код ядра написан таким образом, что анализаторы выдают много ложных предупреждений и потому их не используют. Это уже, согласитесь, говорит о качестве кода не лучшим образом. Возможно, "опасный" код дает чуть большую производительность. Но нужен ли вам прирост производительности на несколько процентов, если с ним идет куча уязвимостей?


Замечу также, что в коде нет абстракций для работы с буферами: код вручную складывает указатели и копирует память через memcpy, вместо того, чтобы вызвать абстракцию вроде extend_buffer(buf).


Наконец, на аппаратном уровне уровень безопасности на PC ниже, чем на других платформах.


Сравним ядро Линукса на PC и ядро iOS на iPhone. В iPhone после загрузки ядра в память область кода ядра аппаратно необратимо блокируется на запись, и защиту можно снять только перезагрузкой. Код, управляющий таблицами страниц, также защищен от записи, и специальные аппаратные меры приняты, чтобы таблицами страниц нельзя было управлять из другого места. А что Линукс на PC? Память ядра не защищена аппаратно, доступ к таблицам страниц не защищен. Таким образом, взлом системы с Линукс на PC проще, чем системы с iOS.

А наличие в коде es6-модулей импортов конкретных имплементаций "убивают" принцип инверсии зависимостей.

Как мне кажется, DI не обязательно должен использовать интерфейсы и абстракции. Ключевой принцип — что зависимости передаются снаружи:


let a = new A(x, y, z);
let b = new B(a);

В этом примере мы не используем интерфейсы (и не можем передать в new B() что-то, кроме A), но DI все равно нужно, так как позволяет нам произвольно сконфигурировать объект a перед передачей в new B(). Мы сами выбираем, что указать в x, y, z. Мы можем даже создать несколько объектов B с разной конфигурацией A.


В случае же с импортом объект сам находит и создает свои зависимости. И повлиять на их конфигурацию мы не можем. Без DI пример выше выглядит как:


let b = new B(); // B сам создает A и непонятно откуда берет x, y, z

Я вообще не очень понимаю, как можно обойтись без DI и как тут помогут импорты. Вот у вас объект B импортирует и создает объект A. А откуда возьмутся настройки для объекта A (то есть x, y, z)?




Это не значит, что импорты вообще не нужны. Они могут пригодиться для импорта функций-утилит.

А мне не нравится приведенный дизайн страницы, и вот почему.


Во-первых, все очень крупное. Например, шапка занимает большую часть экрана на дисплее высотой 800 пикс. Зачем такая огромная шапка? Или вы думаете, что все пользуются 4К мониторами? У вас наверно есть статистика по разрешениям экранов, посмотрите, много ли там таких.


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


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


На мой взгляд, мобильное приложение имеет смысл только в таких ситуациях:


  • для людей, у которых нет компьютера. Им, конечно, было бы удобнее не тыкать в кнопки, а иметь возможность позвонить оператору, объяснить ситуацию и оформить заявление устно.
  • для получения уведомлений. Если у человека есть компьютер, заполнять заявления с телефона он конечно не будет, но может использовать приложение, чтобы оперативно узнать о новом штрафе за оскорбление королевского величества

Наконец, роботы и виртуальные помощники не нужны. На нынешнем этапе они лишь вводят пользователя в заблуждение: притворяются, что способны вести диалог, но по факту многое не понимают и пользователь вынужден подбирать фразы. Вот когда ваш робот начнет понимать хотя бы 99% фраз, которые понимает человек, тогда и подключите.

Фактическую цифру написать никак нельзя, потому что тогда станет ясно, что услуга, выдаваемая за VDS, на самом деле шаред-хостинг с диким оверселлом

Но тогда вообще непонятно, как пользоваться этим VPS. Как понять, какая нагрузка допустима, а какая нет. То есть вы берете машину в прокат, но сколько километров разрешено проехать, вам никто не говорит, просто в определенный момент где-то посередине бескрайней дороги глушится мотор.


Хорошо, если не то же самое с оперативной памятью

Насколько я знаю, это зависит от типа VPS. При использовании технологии OpenVZ используются хитрые трюки с памятью, которые позволяют давать меньше физической памяти, чем обещано. И потребление считается так, что любая программа потребляет раза в 2-3 больше, чем на реальном железе. Один раз обжегся, после этого никому не советую использовать OpenVZ (только осознанно взвесив все за и против). А на KVM все считается как на обычной машине и доступен swap.

Information

Rating
Does not participate
Registered
Activity