Откуда берутся баги и кто в этом виноват? — arduino+

Откуда берутся баги

Баги в большинстве случаев появляются из-за невозможности уменьшить сложность системы, и реже из-за того, что разработчики не берут во внимание вещи, кажущиеся слишком простыми.

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

В случае черной коробки, проблему нельзя решить даже путем написания подробной документации.

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

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

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

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

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

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

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

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

По мотивам The Source of Bugs by Max Kanat-Alexander.

Источник: https://hitfounder.livejournal.com/15866.html

Что такое баги и откуда они берутся? — База ответов на любые вопросы

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

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

Что означает слово «баг»?
Что такое баг в игре?
Что такое баг репорт?
Что такое баг ВКонтакте?
Чем отличаются баг и фича?

Слово «баг», как и подавляющее большинство терминов программирования, заимствовано из английского языка, в котором «bug» означает насекомое – клопа, жука и т.д.

Считается, что впервые его использовали разработчики одного из первых компьютеров – американского Mark II во второй половине 40-х годов двадцатого столетия.

Однако слово «баг» в значении «ошибка, неполадка, сбой» встречается задолго до этого – например, в рабочих дневниках знаменитого изобретателя Т.Эдисона.

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

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

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

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

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

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

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

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

Разумеется, для обычных пользователей это вряд ли возможно – им достаточно будет просто описать баг своими словами.

Как и в любом другом программном обеспечении, в социальной сети ВКонтакте могут встречаться различные баги, т.е. ошибки программного кода. Они могут приводить к различным неудобствам и помехам – например, искажать изображение на экране, «рассыпать» тексты, превращая их в набор бессмысленных значков и т.д. Некоторые баги предоставляют дополнительные возможности пользователям.

Так, известно, что редактировать свои записи можно только в течение суток после их опубликования. Некий пользователь под ником «Мгновения Грядущего» опубликовал точные «предсказания» событий 2014 года, датированные первым декабря 2013 и снабженные картинками произошедших событий – Олимпиады в Сочи, Крымской Весны и т.д.

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

Английское слово «feature», означающее характерную черту, особенность явления или объекта, достаточно широко используется геймерами. Нередко фичами называют баги, полезные для игрока и обеспечивающие его преимущество.

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

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

Источник: http://www.mnogo-otvetov.ru/computery/chto-takoe-bagi-i-otkuda-oni-berutsya/

Какие типы тунеядцев встречаются в компаниях? Откуда берутся и кто в этом виноват

Эта статья о людях, которые имеют возможность отлынивать от работы в то время, когда весь коллектив интенсивно трудится. И как тунеядцам годами удается получать заработную плату за их ничегонеделанье? Откуда они появились? Нужно ли с ними бороться или проще закрыть глаза? А может, попытаться их перевоспитать? Или просто уволить, чтобы другим неповадно было?

Поговорим о том, как они влияют на бизнес.

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

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

Рассмотрим наиболее распространенные виды таких «трудолюбивых» сотрудников и способы их появления в организации.

  1. «Позвонок» — человек, которого трудоустроили в организацию по звонку очень важного человека. Деловые и профессиональные качества кандидата изначально не соответствовали должности.

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

  2. «Сынок» — близкий родственник руководителя или ключевого топ-менеджера.

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

  3. «Дед» — человек-легенда.

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

  4. «Парковщик».

    Такой сотрудник раньше работал на серьезной должности продолжительное время. Он был на виду, но по каким-то причинам стал неугоден руководству на своем посту, а его увольнение из компании нежелательно или затруднительно. И его переводят в неосновное подразделение, «паркуют», где о нем все напрочь забывают. Что есть человек, что его нет — неважно.

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

    Рабочие вопросы решает лишь урывками, справляется, но, что называется, по нижней планке.

  6. «Формалист» — человек-отписка. Он четко соблюдает регламенты и процедуры, всё делает ровно как нужно и настолько, насколько написано в регламентах. А чего не прописано, старается не делать.

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

  7. «Любимчик». Этого сотрудника руководитель любит всей душой.

    Прощает ему любые недостатки и просчеты. Любимчик нашел путь к сердцу руководителя, нужен ему на эмоционально-психологическом или ином уровне. Конечно, руководитель может и разлюбить «любимчика», но сроки неизвестны.

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

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

  9. «Перегретый».

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

  10. «Пассажир» — оказался на данном рабочем месте случайно для самого себя. И по известным только для него причинам, он точно понимает, что данное рабочее время для него временное. Он хочет просто пересидеть, дождаться предложения от компании своей мечты. Поэтому работает в ненапряженном для себя режиме, не особенно стремясь к результату.

К чему приведут расплодившиеся тунеядцы и что делать руководителю?

Даже если руководитель компании сам человек неординарный, талантливый, разработал уникальный продукт/услугу на радость рынку, имеет костяк надежных людей рядом и его бизнес идет в гору, тунеядцы в отдельных подразделениях — индикатор системы управления компании и работы с персоналом. И нужно срочно наводить порядок в головах и процессах. Создавать единые правила для всех сотрудников. Минимизировать исключения. Выстраивать «западающие» HR-процессы.

Тунеядцы встречаются в компаниях редко, если:

  • Руководитель бизнеса имеет долгосрочную стратегию развития бизнеса, инициирует развитие корпоративной культуры, разработку истинных, а не заявленных/написанных корпоративных и профессиональных ценностей.
  • Есть работающие КPI как в основных, так и в сервисных подразделениях.
  • Результаты подразделений/сотрудников привязаны к системе мотивации.
  • Существует регулярная оценка сотрудников по результатам их деятельности и адекватные управленческие решения по ее результатам.
  • Система мотивации регулярно пересматривается, замеряется рынок труда и заработных плат.

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

Источник: https://delovoymir.biz/kakie-tipy-tuneyadcev-vstrechayutsya-v-kompaniyah-otkuda-berutsya-i-kto-v-etom-vinovat.html

Откуда берутся ошибки в ПО?

Откуда берутся ошибки в ПО?

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

Ошибка (error) – это действие человека, которое порождает неправильный результат.

Однако программы разрабатываются и создаются людьми, которые также могут допускать (и допускают) ошибки. Это значит, что недостатки есть и в самом программном обеспечении. Они называются дефектами или багами (оба обозначения равносильны). Здесь важно помнить, что программное обеспечение – нечто большее, чем просто код.

Дефект, Баг (Defect, Bug) – недостаток компонента или системы, который может привести к отказу определенной функциональности. Дефект, обнаруженный во время исполнения программы, может вызвать отказ отдельного компонента или всей системы.

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

Сбой (failure) – несоответствие фактического результата (actualresult) работы компонента или системы ожидаемому результату (expectedresult).

Сбой в работе программы может являться индикатором наличия в ней дефекта.

Таким образом, баг существует при одновременном выполнении трех условий:

  • известен ожидаемый результат;
  • известен фактический результат;
  • фактический результат отличается от ожидаемого результата.

Важно понимать, что не все баги становятся причиной сбоев – некоторые из них могут никак себя не проявлять и оставаться незамеченными (или проявляться только при очень специфических обстоятельствах).

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

Всего существует несколько источников дефектов и, соответственно, сбоев:

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

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

Качество (Quality) – степень, в которой совокупность присущих характеристик соответствует требованиям.

Качество программного обеспечения (Software Quality) – это совокупность характеристик программного обеспечения, отражающих его способность удовлетворять установленные и предполагаемые потребности.

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

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

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

Третий вариант хуже – здесь ошибки были допущены на этапе проектирования системы. Заметить это можно лишь проведя тщательную сверку со спецификацией. Исправить такие дефекты тоже непросто – нужно заново перерабатывать дизайн продукта.

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

Условно, можно выделить пять причин появления дефектов в программном коде.

  1. Недостаток или отсутствие общения в команде. Зачастую, бизнес требования просто не доходят до команды разработки. У заказчика есть понимание того, каким он хочет видеть готовый продукт, но если должным образом не объяснить его идею разработчикам и тестировщикам, результат может оказаться не таким, как предполагалось. Требования должны быть доступны и понятны всем участникам процесса разработки ПО.
  2. Сложность программного обеспечения. Современное ПО состоит из множества компонентов, которые объединяются в сложные программные системы. Многопоточные приложения, клиент-серверная и распределенная архитектура, многоуровневые базы данных – программы становятся все сложнее в написании и поддержке, и тем труднее становится работа программистов. А чем труднее работа, тем больше ошибок может допустить исполняющий ее человек.
  3. Изменения требований. Даже незначительные изменения требований на поздних этапах разработки требуют большого объема работ по внесению изменений в систему. Меняется дизайн и архитектура приложения, что, в свою очередь, требует внесения изменений в исходный код и принципы взаимодействия программных модулей. Такие текущие изменения зачастую становятся источником трудноуловимых дефектов. Тем не менее, часто меняющиеся требования в современном бизнесе – скорее правило, чем исключение, поэтому непрерывное тестирование и контроль рисков в таких условиях – прямая обязанность специалистов отдела обеспечения качества.
  4. Плохо документированный код. Сложно поддерживать и изменять плохо написанный и слабо документированный программный код. Во многих компаниях существуют специальные правила по написанию и документированию кода программистами. Хотя на практике часто бывает так, что разработчики вынуждены писать программы в первую очередь быстро и это сказывается на качестве продукта.
  5. Средства разработки ПО. Средства визуализации, библиотеки, компиляторы, генераторы скриптов и другие вспомогательные инструменты разработки – это тоже зачастую плохо работающие и слабо документированные программы, которые могут стать источником дефектов в готовом продукте.

Источник: https://qalight.com.ua/baza-znaniy/otkuda-berutsya-oshibki-v-po/

Подключаем кучу устройств к Arduino по 5 проводам

Стандартная / имеет 20 цифровых пинов (6 из них — ещё и аналоговые входы), что бывает недостаточно для решения некоторых задач: тот же требует минимум 6 пинов. Для подключения нескольких устройств, не требующих двунаправленной передачи данных, вполне подойдут сдвиговые регистры.

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

При наличии некоторого опыта в C++ это не покажется сложным (:

Начнём с того, что авторы библиотек Arduino старались сильно не заморачиваться насчёт расширяемости функционала, и не получится просто сказать объекту LCD «подключись через сдвиговый регистр». Так что придётся немножко поработать руками и мозгами за них: доработать библиотеки напильником. Заодно упростим себе работу со . Ну что ж, приступим.

С первого взгляда не очень-то понятно, а как, чёрт возьми, заставить работать тот же LCD через сдвиговый регистр? Что записывать в регистр, какие его выводы должны менять состояние и как? Очевидно, что для начала нужно как-то предоставить возможность управлять отдельными выводами регистра так же, как и обычными пинами Arduino.

Вспомним, как LCD, а затем заглянем в исходный код библиотеки LiquidCrystal и увидим, что там чуть ли не в каждой функции дёргаются пины, к которым подключен LCD, вызовами функции digitalWrite(), а режимы этих пинов устанавливаются через pinMode(). Логично будет написать такие же функции и для сдвиговых регистров.

Немного забегая вперёд, скажу, что я уже написал класс SPI_Bus для удобной работы с устройствами по SPI (его я опишу позже), и в него нужно только добавить поддержку управления выводами.

В целях унификации определим интерфейс «контроллера линии»: class LineDriver { public: virtual void lineConfig(uint8_t pin, uint8_t mode) = 0; virtual void lineWrite(uint8_t pin, uint8_t value) = 0; virtual uint8_t lineRead(uint8_t pin) = 0; };
Этот интерфейс содержит объявления функций lineConfig(), lineWrite() и lineRead() — это аналоги pinMode(), digitalWrite() и digitalRead(). Всю работу с нужными пинами библиотека LCD должна будет делать через интерфейс LineDriver. Для начала создадим драйвер по умолчанию, который будет просто вызывать стандартные функции:
class DefaultLineDriver: public LineDriver { public: virtual void lineConfig(uint8_t pin, uint8_t mode) { pinMode(pin, mode); } virtual void lineWrite(uint8_t pin, uint8_t value) { digitalWrite(pin, value); } virtual uint8_t lineRead(uint8_t pin) { return digitalRead(pin); } static DefaultLineDriver* getInstance() { return &g_instance; } private: static DefaultLineDriver g_instance; // один глобальный экземпляр драйвера };
Теперь добавим в класс LiquidCrystal указатель на экземпляр LineDriver и изменим конструкторы класса и функцию init() так, чтобы они принимали соответствующий аргумент:
// LiquidCrystalExt.h class LiquidCrystal: public Print { … public: LiquidCrystal(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, LineDriver *line_driver = 0, uint8_t backlight = 0xFF); … protected: void init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, LineDriver *line_driver = 0, uint8_t backlight = 0xFF); … LineDriver *_pins; … }; // LiquidCrystalExt.cpp LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, LineDriver *line_driver, uint8_t backlight) { init(1, rs, 0xFF, enable, d0, d1, d2, d3, 0, 0, 0, 0, backlight, line_driver); } void LiquidCrystal::init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t backlight, LineDriver *line_driver) { _pins = line_driver; if (!_pins) _pins = DefaultLineDriver::getInstance(); … } По умолчанию аргумент line_driver будет равным нулю и его можно не указывать при объявлении объекта LCD-дисплея — тогда будет использоваться драйвер по умолчанию (DefaultLineDriver) и дисплей будет работать, как обычно, через пины Arduino. Теперь добавим поддержку интерфейса LineDriver в класс для работы с SPI: class SPI_Bus: public LineDriver { public: … virtual void lineConfig(uint8_t pin, uint8_t mode) { /* Оставляем метод пустым, т.к. возможность управления состоянием выводов * зависит от конкретного устройства. */ } virtual void lineWrite(uint8_t line_num, uint8_t value) { /* Каждому байту соответствует 8 «линий данных» (виртуальных пинов). * Проверяем, не превышает ли номер линии максимальный. */ if (line_num < m_bandwidth * 8) { /* Рассчитываем номер байта в буфере и номер бита в байте */ const uint8_t byte_index = line_num / 8, bit_index = line_num % 8; /* Сначала стираем нужный бит в буфере */ m_buffer[byte_index] &= ~(1 > bit_index) & 1 ? HIGH : LOW; } … }; Как можно заметить из приведённого кода, в классе SPI_Bus данные буферизуются: если из регистра ничего не считывать, а только управлять отдельными его выводами через функционал LineDriver, то регистр будет поддерживать уровни напряжений на выводах до тех пор, пока вы не установите новые. Это как раз то, что нужно для управления устройствами — менять состояния отдельных выводов, не трогая при этом другие. Всё, теперь можно работать со сдвиговыми регистрами, как с наборами пинов: /* Допустим, у нас есть один сдвиговый регистр с 8 выходами, * защёлка которого (SS) подключена к 10му пину Arduino. */ SPI_Bus shift_register(_8bit, 10); /* Аналог digitalWrite(3), только вместо 3-го пина Arduino * мы управляем 3-м выходом сдвигового регистра. */ shift_register.lineWrite(3, LOW); Так как сделано это через реализацию интерфейса LineDriver, мы можем передавать указатель на объект сдвигового регистра в конструктор объекта LCD: SPI_Bus shift_register(_8bit, 10); /* А LCD-дисплей подключен к сдвиговому регистру: * RS ⇨ выход QA (0) * E ⇨ QB (1) * DB4-DB7 ⇨ QC-QF (2-5) */ LiquidCrystal lcd(0, 1, 2, 3, 4, 5, &shift_register); Теперь при работе с LCD будут меняться уровни не на пинах Arduino, а на выходах сдвигового регистра. Одна строка кода для подключения регистра, и один дополнительный аргумент для объекта LiquidCrystal — и можно управлять дисплеем по 3м проводам SPI. При этом ещё два выхода регистра остались свободными, и мы можем их использовать, как обычные пины.

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

SPI_Bus shift_register(_8bit, 10); Servo servo(&shift_register); /* А дальше всё делается, как обычно */ void setup() { servo.attach(6); // вывод QG регистра }
А что насчёт ввода? Ранее я о чтении состояний кнопок через сдвиговый регистр. Теперь, с библиотекой SPI_Bus, это можно сделать так:
SPI_Bus shift_register(_8bit, 10); void setup() { /* Говорим регистру, чтобы дёргал защёлку до чтения по SPI */ shift_register.setSelectionPolicy(SPI_Bus::SELECT_BEFORE); } void loop() { uint8_t states = shift_register.read8bits(); // считываем состояния } А теперь пора использовать наши сдвиговые регистры на полную катушку — подключим к Arduino сразу несколько устройств всего по 5 проводам: LCD-дисплей, 4 сервопривода, RGB-светодиод, несколько кнопок и dip-переключатель на 3 позиции. Схема подключения:

Вся логика запитана от +5 В Craftduino, а сервы — напрямую от +5 В . Сама Craftduino запитана от +12 В провода БП. Тут нужно быть поосторожнее с нагрузкой: если она будет слишком велика, то стабилизатор на Craftduino будет перегреваться из-за слишком высокого входного напряжения. В этой схеме подавать +12 В вполне допустимо, т.к. компоненты, запитанные от крафтины, не особо жадные.

Общий вид:Здесь я сделал пару хитростей для уменьшения количества проводов. Во-первых, сделал breakout-платы для 74HC595 (в корпусах SSOP), которые легко соединяются каскадно, используя общие линии SPI и питание:Во-вторых, сделал для сигнальных линий сервоприводов 4-жильный шлейф:Просто взял 4 жилы от старого шлейфа для привода гибких дисков (флопарей), припаял к ним 4 пина гребёнки PLS и залепил всё это поликапролактоном (ПКЛ) — последний для этих целей рулит не по-детски (: Ну, и в-третьих, припаял к LCD-дисплею легендарный транзистор КТ315 с килоомным резистором на базе — для управления подсветкой, подстроечный резистор на 10 кОм — для настройки контрастности, а также 9-жильный шлейф (4 линии данных DB7-DB4, Enable, RS, подсветка, +5V, GND):Можете рассмотреть некоторые части системы отдельно. Вот сдвиговые регистры 74HC595, к которым подключены LCD, сервы и RGB-светодиод:Регистр 74HC165 c подключенными кнопками и dip-переключателем:Заметьте, кнопки и dip-переключатель подключены к «земле» резисторами на 1 кОм — я это сделал лишь потому, что провода ещё больше загромоздили бы плату. Так как к питанию они подключены через резисторы на 10 кОм, получается, что входы 74HC165 подключены к резистивным делителям напряжения с коэффициентом 10:1, но так как при нажатии кнопки делитель выдаёт напряжение около 0.5 В, это не вызывает никаких проблем — такое напряжение является логическим нулём, так как меньше необходимого порога. Можете убедиться, к Craftduino идёт всего 5 сигнальных проводов:Ну и повторюсь — питается это всё от обычного компьютерного блока питания — оттуда берётся +12 В на вход Craftduino, +5 В для питания серв и «земля»:Суть эксперимента такова: пусть при щёлкании dip-переключателем включается/выключается подсветка LCD и загораются/гаснут два значка на нём, при нажатии и удержании кнопок вращаются сервоприводы, и параллельно ещё меняются цвета RGB-светодиода. Для этого примера потребуются библиотеки LineDriver, SPI_Bus, ServoExt и LiquidCrystalExt, ссылки на которые приведены в конце статьи. /* Включаем все необходимые библиотеки */ #include #include #include #include #include enum { SERVOS_AMOUNT = 4, // количество серв SERVOS_FIRST_PIN = 9, // вывод сдвигового регистра для первой сервы SERVO_ROTATE_STEP = 2, // насколько поворачивать серву, когда нажата кнопка SYMBOL_HEIGHT = 8, // высота символа LCD SYM_DANGER = 0, // код символа «череп и кости» SYM_LIGHTNING = 1, // код символа «молния» RED_LINE = 2, // номер вывода регистра для красного канала светодиода GREEN_LINE = 0, // и зелёного BLUE_LINE = 1, // и синего SWITCH1 = 1

Источник: http://robocraft.ru/blog/arduino/541.HTML

Watchdog timer или «Сторожевая собака» для микропроцессорной техники

Ни для кого не секрет, что любая цифровая техника, рано или поздно, «зависает». Это всегда неожиданность для разработчика и это всегда неприятность для пользователя. Это всегда невовремя и это, увы, никак не прогнозируется.

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

Устройство, называемое «Watchdog» («Сторожевая собака»), призвано отслеживать факт зависания контролируемой им системы и, в случае обнаружения зависания, принудительно эту систему перезагружать. Сначала я напишу коротенький абзац для «новичков», чтобы было понятно, о чём я вообще тут говорю.

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

До тех пор, пока ей на вход периодически приходят сигналы от контролируемого девайса («да-да», «всё нормально», «я тут», «я работаю») — собака ведёт себя спокойно и никак не вмешивается.

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

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

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

Ей лишь бы приходили сигналы об активности системы, да чтоб система, соответственно, реагировала на её импульс «Reset». Конец абзаца. Почему внешний watchdog, если в любом современном микроконтроллере есть встроенный? По двум основным причинам.

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

Во-вторых, ардуино… Нельзя не признать, что доля DIY-микроконтроллерных проектов, реализуемых публикой на arduino, занимает значительную нишу. И приверженцы ардуино, увы, прелестями встроенного в атмегу сторожевого таймера воспользоваться не могут. Проблема описана. Вкратце: watchdog правильно работает только на некоторых Uno, остальные ардуины намертво «кладутся» при попытке использовать сторожевой таймер. Спасает только перешивка загрузчика внешним программатором. А новичков такая «хирургия», безусловно, пугает. Да и не у всех есть под рукой вторая ардуина, чтобы сделать из неё программатор для оживления первой, ушедшей в мёртвый цикл из-за использования встроенного watchdog. Все эти манипуляции новичка, вероятнее всего, попросту отпугнут.

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

Размерами он сопоставим с Arduino Pro Mini:С обратной стороны ничего интересного: только дорожки, соединяющие три переходных отверстия с пинами модуля. Да не очень качественно отмытый флюс:Модуль построен на базе далласовского чипа DS1232.

Для тех, кто привык читать официальную литературу, вот даташит.

Чип обеспечивает сразу три функции: мониторинг питания, сторожевой таймер и формирование правильного импульса Reset (нужных фронтов, амплитуды и длительности), даже при дребезге контактов ручной кнопки перезагрузки.

Коротко и сжато о назначении выводов чипа

На вывод ST должны приходить стробирующие импульсы от контролируемого устройства, говоряжие о его здоровом функционировании. На выводах RST и /RST формируется перезагружающий импульс. Разница между выводами RST и /RST заключается исключительно в полярности перезагружающего импульса.

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

е. для них подходящим является сигнал /RST. Вывод TOL выбирает приемлемость условий питающего напряжения. — когда TOL прижат к земле, приемлемым считается пятипроцентный коридор отклонения напряжения. Т.е. сигнал перезагрузки придёт при снижении напряжения до 4,75V. — когда TOL подключён к питающей линии, коридор питающего напряжения расширяется до 10%. Т.е.

устройство будет перезагружено при снижении напряжения питания до 4,5V.

Выводом TD выбирается максимальное контрольное время, после которого сработает сторожевой таймер: — когда TD прижат к земле, таймаут составляет 150ms (от экземпляра к экземпляру нормой будут значения 62,5ms — 250ms); — когда TD висит в воздухе, таймаут составляет 600ms (от экземпляра к экземпляру 250ms — 1000ms); — когда TD соединён с питанием, таймаут составляет 1200ms (от экземпляра к экземпляру 500ms — 2000ms). Выдержек свыше двух секунд данная микросхема не даст даже теоретически.Продавец услужливо опубликовал схему модуля и его разводку:Как видим из схемы, линии чипа ST, RST и /RST выведены, как одноимённые, и на пины модуля. Производитель предоставил нам самое лояльное и комфортное включение чипа: максимально широкий коридор питающих напряжений (от 4,5 до 5V) и максимально возможный таймаут сторожевого таймера (1,2 секунды). Теперь становится понятной схема подключения модуля к нашей условной ардуине: — линии Vcc и Gnd на модуле подключаются к двум одноимённым линиям на arduino; — линия /RST на модуле подключается к пину RST на ардуине — линия ST подключается к любому свободному пину, желательно без аппаратного ШИМ, — допустим, у меня это пин 2. Набросаем простенький скетч для проверки модуля. Я (исключительно для наглядности) при инициализации программно мигаю встроенным светодиодом. Этого можно было не делать, светодиод мигнёт и без нас. Но так — нагляднее и понятнее новичкам. void setup() { pinMode(13, OUTPUT); // Используем внутренний светодиод pinMode(2, OUTPUT); // С этого пина Watchdog будет получать сигналы digitalWrite(13, HIGH); delay(50); // Коротко мигнём светодиодом при каждой перезагрузке digitalWrite(13, LOW); } void loop() { digitalWrite(2, HIGH); delay(2); // Формируем короткий перепад digitalWrite(2, LOW); delay(1150); // Максимально длинный таймаут } При значении задержки 1150 миллисекунд (в моём конкретном случае) или меньших, наша ардуина спокойно крутится в рабочем цикле, ей ничто не мешает. Светодиод, мигнув вначале, не светится — перезагрузок нет. Как только мы увеличим эту задержку хотя бы до 1200 миллисекунд (или внесём значительную задержку в процедуру Setup), мы увидим, что светодиод начнёт циклически вспыхивать: время для собаки становится критическим и она перезагружает ардуину.
В реальных же условиях рабочего скетча, достаточно внести строчкуdigitalWrite(2,HIGH); delay(1); digitalWrite(2,LOW);в самый конец основного цикла, чтобы сторожевой модуль, подключённый к пину 2, чувствовал себя спокойно. При инициализации ардуины все пины передёргиваются, поэтому собаке абсолютно всё равно, на каком логическом уровне зависло устройство: таймер был запущен и, значит, перезагружающий импульс неминуемо придёт.

Выводы.

1. Нужен ли сторожевой таймер в принципе? Если в проектируемом вами устройстве зависания могут привести к негативным последствиям, то да. С ним система будет, очевидно, более устойчивой, чем без него. 2. Является ли внешний сторожевой таймер панацеей? Конечно, нет. Он более эффективен, чем внутренний, имеющийся во многих микроконтроллерах, но и он не панацея. Для достижения максимальной эффективности его работы, важно его подключить в правильное место вашей системы. Лучше не подключать его к линиям, на которых сигналы формируются аппаратно (ШИМ, различные аппаратные порты со стробами), а также к сигналам внешнего или внутреннего тактового генератора. Ну и абсолютно бессмысленно подключать его к линиям, работающим на вход — так мы будем контролировать не свой микроконтроллер, а что-то другое. 3. Есть ли минусы у этого сторожа? Главным минусом внешнего сторожевого таймера, в общем случае, является потребность в выделении для его работы одного пина на вашем устройстве. Хотя на практике, этого очень часто удаётся избежать: если ваш микроконтроллер что-то постоянно пишет или рисует на дисплее, что-то постоянно посылает в порты, формирует какие-то управляющие импульсы для внешних устройств — подключайте сторожевую собаку к этим линиям, — ей абсолютно безразличны частота и скважность импульсов, ей лишь бы была постоянная движуха. Главным минусом конкретно этой реализации таймера я назову, пожалуй, довольно короткий контрольный таймаут. Бывают случаи, когда хотелось бы иметь запас хотя бы в 3-5 секунд.

4. Надо ли покупать именно этот watchdog? Ну, каждый решит для себя. Сторожевую собаку, совершенно точно, можно получить дешевле $3. Кому-то проще купить один лишь только обозреваемый выше чип и с помощью ЛУТ сделать такой модуль самому.

Кому-то проще взять легендарный 555 и сделать сторожевой таймер на рассыпухе: плюсы — дёшево и доступно, минусы — больше возни и времязадающие электролитические конденсаторы, а, значит, с годами гарантированно поплывут все параметры.

Кому-то проще сделать одновибратор с таймером вообще на полупроводниках. Тут каждый решает сам.

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

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

UPD: Пока писал обзор, продавец неожиданно поднял цену. Упс.

Будем считать это временным приступом жадности. На этот товар у него периодически бывает скидка. Ну и ничто не мешает искать этот товар у какого-то другого продавца.

Источник: https://mysku.ru/blog/aliexpress/52212.html

Откуда берутся пробки или кто виноват?! — DRIVE2

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

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

1 — Это плохая организация движения в городе, по моему мнению можно сделать на некоторых перекрестках проезд по одной стороне (ну я имею ввиду что 3 стоят а одна едет по всем направлениям), ведь пока едет одна улица тем кому надо свернуть налево практически стоит одна полоса, ну это в лучшем случае.

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

Я слышал что в нашем городе была подобная работа проведена, и одну улицу сделали так хорошо что пробок практически не было, но как обычно кто-то что-то наделал и все стало как и раньше.
2 — Это водители… Вот тут хочется материться и кричать на всю улицу… Ну вот сами подумайте, стоит пробка на поворот, а прямо все спокойно едут.

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

А пока вы там лезете все стоят и ждут вас тем самым пробка растет и растет, а вас же как всегда много таких у которых «жена рожает», «на работу опаздываю» и все в том духе… Скажу так, я тоже всегда спешу и чет не рвусь нарушить, хоть нас на работе за опоздание очень сильно наказывают, но это не повод нарушать ПДД.

Ну в общем пока 10 машин стоят в пробке 20 пробуют ее подрезать, это не нормально… И очень раздражает.

3 — Маршрутки…У этих транспортных средств вообще нет понятия ПДД у них есть график и все…Как они ездят и что они сделают через секунду не понятно, указатели поворота вообще не включают стоп-сигналы работают не у всех… поворачиваю там где захотел и остановки там же где стаю.
4 — Ну сюда бы я отнес сезонные причины и час пики.

В час пик всем понятно что едут все с работы домой и утром когда из дома на работу. Сезонная это у нас дачные пятничные вечера до воскресенья, выехать из города надо постараться. Еще к сезонным я отнесу это переход с осени к зиме, когда выпал снег все стали культурными и не превышают и держат дистанцию. За подобных явления приходится выезжать на 20-30 минут раньше обычного. Если ночью шел снег то гарантия что можно опоздать 100%.
5 — Ну тут всякие мелочи типа ДТП, ремонтные работы и все такое…

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

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

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

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

А закончу я такой фразой «Уважаемые водители соблюдайте ПДД, помните что вы не одни на дороге!»

Источник: https://www.drive2.ru/b/1393721/

8- Откуда берутся психопаты? Кто виноват и что делать?

Предыдущая часть: Про сексуальные особенности психопатов

Человек, ознакомившийся с предыдущими постами про психопатов, скорее всего, уже вспомнил кого-то из знакомых и родственников, подходящих под эти описания. Или, что еще вероятнее, узнал в этих описаниях себя – и находится в подвешенном состоянии от этой новой информации. С одной стороны, все так логично и правильно, а с другой, что теперь с этим делать?

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

Может быть и наоборот: со всех сторон, от родных, знакомых и малознакомых психопат только и слышит: ты должен поменяться, жить по-другому. Это вводит психопата в состояние бешенства, а то и злорадства. «Ишь, чего захотели, суки! – примерно так думает он. — Измениться, чтобы мною пользовались все вокруг — щаззз! Идите вы все к черту с вашими нравоучениями, не мешайте жить».

Это происходит оттого, что окружающие люди, сами того и не зная и не желая, бьют по больному месту психопата, задевая его достоинство (да-да, хоть чести и совести у психопата нет, достоинство тем не менее имеется).

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

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

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

А восприятие жизни у психопатов, как уже было не раз сказано, в лучшем случае ровного серого цвета, в худшем – кроваво-пурпурного, с оттенком разложения.

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

«Но откуда они берутся, с таким-то набором качеств? — недоуменно воскликнут люди. — Что это, шутка природы?!»

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

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

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

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

– Не может быть, чтобы все были психопатами. Тогда что же — и мои родители, и ребенок, и я сам психопат, получается? У нас крепкая дружная семья, сплошное уважение и взаимопомощь.

Нет-нет, вы что-то путаете».

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

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

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

Человек-психопат, будь то мужчина и женщина, по сути сам жертва своей натуры (даже развитый).

«Но почему они такие? – воскликнет кто-то. — Разве не все люди одинаковые?»

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

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

Даже если психопат пришел со временем к богу, он может обнаружить, что не испытывает ни малейшего раскаяния за прошлое, даже если оно было откровенно недостойным или преступным. Его это может удивлять и даже злить, особенно если на проповедях он опять слышит про то, что надо ЛЮБИТЬ людей, любить ближнего своего. И тут тоже самое, думает такой психопат.

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

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

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

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

Однако душу спасти никогда не поздно, даже если человек находится на закате жизни, и у него уже нет времени сделать что-то значительное.

В молитве ко святому причастию, а также во множестве других молитв, которыми владеет церковь, есть такие (и похожие) слова: «…Приими убо и мене, Человеколюбче Господи, якоже блудницу, яко разбойника, (…)». Почему – «яко блудницу, яко разбойника?»

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

И тут им сделано послабление, учитывая, что их склад характера – проделки нечистого. Это значит, что там, где с другого человека будет спрос, человека-психопата Бог примет и так, со всеми его нераскаянными грехами.

Но при одном условии — что тот остановится и впредь не будет совершать ничего подобного.

«Это что же значит, — спросит кто-то, — что можно убить десятки человек, да еще с особой жестокостью, и Господь простит? Где же справедливость?»

К сожалению, нет. Существует так называемая «точка невозврата», пройдя которую, человек уже не способен вернуться к нормальной жизни. У каждого она своя и ей предшествуют многочисленные предупреждения «сверху». Если человек игнорирует эти знаки, неизбежно настанет момент, когда ему уже не будет милости ни от Господа, ни от людей.

(ПРОДОЛЖЕНИЕ следует…)

Источник: https://irina-chaykina.livejournal.com/100003.html

Ссылка на основную публикацию