Pull to refresh
45
0

Инженер-электронщик

Send message
Может кто не разделяет моего мнения, но

habr.com/info/help/posts
Написана максимально грамотным для индивида русским языком;


Я ничего не имею против аглицкого, но когда Федосеев Кирилл и Юлосков Артем пишут на русскоязычном ресурсе по не-русски, это перебор.

Несложно сообразить, что
  • при неприводимом полиноме (а популярные CRC полиномы не являются неприводимыми)
  • при случайных данных

вероятность ложного приема c CRC16 будет
1/(2^16)= 0,0000152587890625 или
при скорости 9600 интервал ложного приема
(2^16)/9600=6,82 секунды

Большее значение интервала ложного приема говорит о том, что данные коррелированны. Меньшее значение говорит о короткой последовательности образуемой полиномом CRC, короче дерьмовый полином.
Ожидал увидеть «дискретный регулятор по противоЭДС»…
Ничего он не теряет. А чтобы не оптимизировал условия использовать модификатор volatile.

Я всего один раз столкнулся с «небезопасностью», и то по собственному незнанию архитектуры процессора. Иар на Кортекс-М0 на высокий скоростных оптимизациях выравнивает переменные, в даже в структурах, на 4 байта. Решается через прагму.
Не надо цепляться к словам! Он сделает именно это, в той или иной форме. Может вместо индексного регистра будет использован супериндексный суперрегистр с суперинкрементом итп.
Оптимизирующий компилятор должен делать то, что я ему приказал. Иначе он не компилятор. Не умеешь приказывать, пиши на питоне.
Си это кросплатформенный ассемблер!
Проблемы «небезопасности» Си связаны с набежавшей в эту область школотой, которая не писала ни на одном ассемблере.
Отсюда основное правило написания кода на Си: «Пиши так, чтобы не сомневаться как конструкция будет преобразована машинный код. Если за строкой Си-кода не видишь машинных инструкций — не пиши такую строку!»

В нашем современном мире мы стали забывать что a=b[i]; означает — адрес «b» загрузить в индексный регистр, прибавить к содержимому регистра значение по адресу «i» умноженное (бинарно сдвинутое влево) на размер типа «b». Значение по адресу содержимого индексного регистра записать по адресу «a». Если вы будите видеть этот текст за «a=b[i];» проблем с безопасностью языка Си у вас не будет!

такого добра я богато читал…
Если PVS-Studio действительно хочет прославится могли бы перевести С11 на русский. Все бы сишные программисты рассказывали какая PVS-Studio крутая компания и какие у нее крутые продукты.
Был у меня перевод С89 выполненный советской властью, отпечатанный на ЦПУ на бумаге с дырочками по бокам…
C11 § 6.5.9 пункт 6

Два указателя равны тогда и только тогда…


сакральные тексты перевели на русский?! Где смотреть?
Спасибо! В принципе, все я так себе и представлял…
Но вот действительно ценный совет
перемежаю технические аргументы с высказыванием чувств и эмоций
Уважаемый SergeAx! Принимая во внимание убедительность Ваших комментариев в беседе с Suvitruf, позвольте спросить у Вас совета.
Как с позиции «доброжелательности в команде» решить следующую реальную ситуацию. Член коллектива проваливает свою часть работы. Выбрал неправильные абстракции и инструменты для решения задачи. Как выяснилось в процессе, он не владел потребными абстракциями-инструментами. Желания, а самое главное, базовой подготовки на освоение новых абстракций у него нет. А коллектива не времени. Передать задачу другому человеку — признать его некомпетентность в грубой форме. Как быть?
С иранской ядерной программой не знаком, но думаю, что в Иране живут такие же инженеры как и везде.
Насчет того «как надо» все прописано в огромном количестве нормативных актов. И существует множество государственных служб контролирующих исполнение этих нормативных актов. От ГосТехНадзора до пожарных.

Но это означат, что кто-то уставку на манометре неправильно поставил. Кстати эти уставки делаются тоже под подпись-протокол-отпечатки пальцев.
Перескочил на частотники, забыл написать про HMI, человеко машинный интерфейс, в роли которого, чаще всего, выступает десктоп. Вот там вирусам есть где разгулятся.
Но в том числе и в целях безопасности, управляющая программа сидит на контроллере (Бекэнд — контроллер, фронтэнд — HMI) и просто не воспринимает преступные указания от HMI, какие бы вирусы в нем не жили.
Там есть две планки, которые, что характерно, выставляются отверткой. Как только давление выходит за выставленные отверткой пределы, замыкаются/размыкаются контакты, и соответственно рубится питание и выбрасывается блинкер (флажок).
Именно блинкер, для того чтобы обеспечить, квитирование (взвод блинкера) человеком.
Только после взвода блинкера допускается повторный пуск установки. В некоторых случаях квитирование производится под подпись-протокол-отпечатки пальцев.
Бред…
Автор не имеет понятия как строятся программно-аппаратные комплексы соответствующие промышленной безопасности.
Первый уровень защит, самый надежный, механический (самый простой пример — реверсивный пускатель), мне улучалось видеть установку в которой открыть дверь в опасную зону можно только застопорив приводной вал.
Второй уровень защит электромеханический (пример «реле обрыва поля»), в последнее время стало модно использовать электронику, так называемые желтые реле безопасности. Червям там негде разместится, там даже процессора нет. Как правило эти устройства рубят всю установку при выходе параметра за уставки.
И только потом контроллеры, которые должны быть безопасны, с этим сложнее. Производители напихивают в них столько фишек, что уже сами не в состоянии отследить баги и дыры. Поэтому, я сторонник самописаных контроллеров, с потребным в данной задаче функционалом.

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

Бред! причем бред рассчитанный на офисных програмеров.
Засомневался, когда дочитал до фразы «Моторы, которые он ищет, называются «частотно-регулируемые приводы»» и убедился в этом окончательно, когда прочитал про увеличение давления газа и «И у вас даже не было возможности узнать почему.»

Уж очень этот креатив похож на рекламу «обеспечения информационной безопасности»

вот если бы червь заражал сей девайс вот это была бы действительно сложная программа
В топ!
Тиньков лучший!
Слишком много букв для доказательства того, что «вечный двигатель не работает». Хотя искать ошибки в логике изобретателей вечного двигателя гораздо интересней и полезней, чем отвечать на «актуальные вопросы и задачи от ведущих компаний». Респект и уважуха!
Сложности с определением «программист», возникают из-за того что не бывает (за редким исключением) сферических программистов в вакууме!
Программирование всегда есть приложение к чему-то. Например, программист металообрабатывающих станков. А что, такой же программист, только оперирует допусками-посадками, системами СПИД (станок приспособление инструмент деталь). Оптимизирует программу по точности/по быстродействию, борется за кроссплатформеность итд. итп. Но мало кто называет его программистом, чаще станочник, чпушник специалист по метало обработке.
Зато если вы пишите под 1С, вас называют программист, хотя по сути — специалист по бухучету.

БАЯН! задачу 2 еще в институте разбирали в рамках темы «АЦП половинного деления-последовательного приближения».
Решение в лоб — последовательное приближение, но тут надо использовать комбинированный метод.
Сначала нужно идти половинным приближением (1,2,4,8,16,32,64, бац!), когда первое яйцо разобьется, откатить на предыдущий цикл и продолжить последовательным приближением (33,34,35...)
итого при разбитии яйца на N этаже
методом последовательного приближения = N попыток
методом половинного последовательного приближения = floor(log2(N))+(N-2^(floor(log2(N))))

Вопрос в задаче, как и в большинстве подобных задач, поставлен некорректно. Отвечая формально на вопрос «За какое минимальное количество попыток Вы сможете это определить?» можно смело отвечать «За одну попытку! Кинули со первого этажа оно и разбилось.» Может это трудности перевода?

Information

Rating
8,216-th
Location
Россия
Registered
Activity