Python. Подбор всех возможных вариантов

Занимаюсь, по мере сил, дальнейшим изучением  языка Python для целей, понятно, порабощения мира.

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

В итоге скрипт получился, но кажется мне он несколько тяжеловесным.
Может, кто натолкнет на мысль, как сделать прощще?

Читать далее

Приложениеписателям на заметку или коротко о неглавном

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

Хозяйке на заметку:

Температурные датчики (DS18B20, которые по технологии 1-wire) я проложил двумя типами проводов:

  • от щедрости – витой парой (2 датчика, в совокупности около 20 метров),
  • от жадности — 4х-жильным телефонным проводом (3 датчика, в совокупности около 40 метров).

Датчики, которые висят на витой паре (используя три провода из 8) – глючат – т.е. с некоторой регулярностью выдают ошибку (тот провод, который подлинее, выдает глючный результат в в ~20% замеров, тот который покороче – редко, но тоже бывает). Те датчики, которые висят на в разы более длинном телефонном проводе, работают, т-т-т, корректно и аккуратно.

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

Попробую заменить все провода на телефонный провод, благо это недорохо (300 руб за 100 метров против 1000 руб. за 100 метров витой пары), да и осталось его вроде бы еще.

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

Маленькие Муки самообразования или как вывести демона на свет

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

Однако жеж, не все так феерично получается на практике.

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

Так вот, нашел в интернетах кучу примеров, как прописать эту программку в автозагрузку Линукса. Не с первого раза, но вроде получилось – прописал   ее в rc.local, перезагрузился, скомандовал «ps –eF» – и вот она, работает среди других процессов. И даже мейлы отправляет согласно заложенному алгоритму.

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

Ок, пошел с другого боку. Прописал автозагрузку в etc/xdg/autostart. В «ярлыке» указал, что запускать в Lxterminal. Не с первого раза, но опять таки все заработало. Но образовалась другая засада — во первых, в этом случае программа запускается, только если запущен vncserver, чего на самом деле не хочется, а во вторых – этот самый vnserver не получается вкорячить в автозагрузку, хучь то, как это делается, прописано в сети аж в нескольких вариантах. Но вот не работает и все.

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

В общем, чувствую, еще придется помучаться.

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

Не программисты мы, но кое-что мОгем…

… или о блок-схеме рефлекторных механизмов полоумного дома:

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

Чтобы привести   мысли в порядок — таки нарисовал схему программы (я понимаю, что с этого, по-хорошему, надо было начать, но я же не настоящий сварщик J)

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

Позже выложу код к кажной функции.

Запуск программы:

  • Определение времени старта
  • Чтение конфигурации из ini файла (целевые значения температуры, критические значения температуры, периодичность проверки, часы формирования email-отчета, список рассылки, etc)
  • Чтение температуры с датчиков
  • Чтение датчика наличия тока (датчика тока пока в наличии нет, планирую найти UPS, который может делится этой инфой с Raspberry)
  • Расчет времени следующего отчета
  • Отчет о запуске системы в консоль
  • Отчет о запуске системы на email
  • Запись показателей температуры в лог

Основной цикл (раз в минуту):

  • Чтение конфигурации из ini файла (чтобы можно было скармливать программе новые установки температуры без перезапуска программы)
  • Чтение температуры с датчиков
  • Чтение датчика наличия тока в сети
    • Если ток отсутствует => отправка email
  • Сравнение температур с критическими показателями
    • Если t < tcrit => отправка сообщения на email, отчет в консоль
  • Сравнение температур с показателями прошлой проверки
    • Если t > tlast +0.2, отчет в консоль, запись температуры в лог
    • Если t< tlast -0.2, отчет в консоль, запись температуры в лог
  • Сравнение температур с целевыми показателями
    • Если t < tnorm -1 and насос выключен => запуск соответствующего насоса, отчет в консоль, смена статуса насоса, определение времени старта насоса
    • Если t > tnorm +1 and насос включен => выключение соответствующего насоса, отчет в консоль, расчет времени работы насоса, запись времени работы насоса в лог
  • Сравнение текущего времени с временем следующего отчета
    • Если текущее время >времени отчета:
      • Отправка email
      • Отчет в консоль
      • Запись температуры в лог
      • Расчет времени следующего отчета

Новости с полей:

1. Прокатил детей на байдарке. Ответственно заявляю – сплавляться по Малой Истре в июле – глупое и бесперспективное занятие. Воды мало, много завалов. Попозже составлю отчетЪ

2. Проложил   часть сети по дому. С розетками для интернету вопросов вроде не возникло, все обжалось и коннектится. А вот с проводами для термодатчиков не все гладко.

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

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

Параллельно возникли сомнения в работоспособности управляющего контура. Предполагается, что 3.3 В сигнал с распберри будет переключать реле, которое, в свою очередь будет подавать 220 на насосы. На стенде все работало (я к настоящий пацан уже мигал не светодиодами, а нормальными 60-Ваттными лампочками, имитирующими насосы), но вот откроется ли реле от 3,3В сигнала с учетами потерь в 15 метрах витой пары – баальшой вопрос. Пока изучаю что такое транзистор и как с его помощью увеличить напряжение сигнала. Идет туго.

З.Ы. С работы пока не могу ответить всем поздравившим меня с ДР, но очень благодарен за поздравления всем к то поздравил и всем, кто хотел поздравить, но постеснялся.

А вот еще электронубства вопрос:

Извините, что к вама обращаюсь, сами мы не местные физику подзабыли 🙁

Максимальный ток, который может перенести порт GPIO на Raspberry – 16mA/

Реле для управления насосами, которое я купил в количестве аж четырех штук имеет номинальную мощность катушки 0,2Вт. Получается, что сила тока, которая пойдет на ейное питание от Raspberry = 0.2Вт/5V = 40mA (питание осуществляется от пятивольтного пина). Незадача-с. Несмотря на то, что тестовое подключение и управление реле прошло успешно, поселилось в моей душе боязнь, что в процессе долгой эксплуатации Малинка прикажет долго жить.

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

Реле вот такое вот (которое на 5 V):

 

Информационной экологии и нубства вопрос

А вот вопрос у меня созрел к тем, кто поднаторел в делах компутерных и программировании:

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

Имеет ли практический смысл периодически производить принудительную профилактическую перезагрузку компа? Ну, допустим раз в неделю? После перезагрузки  скрипт, конечно, автоматически запускается заново.

 

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

О мирном искусственном разуме или (поло)умный дом

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

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

Для начала присобачил к нему датчик температуры (какая замечательная, хочу сказть, штука, эта ваша технология 1-wire, позволяющая легко подрубать на один пин GPIO сразу несколько датчиков). Нужно это для того, чтобы не нервничать зимой по поводу того, работает ли котел на даче или нет. Соотвественно, первая задача – создание оповещателя о температуре. Читать далее

Организьм опять затребовал зрелищ

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

Но вчерась таки размочил счет первой книжкой из серии про попандца в каменный век (ни много, ни мало). Книжка подкупила тем, что ГГ – земеля, провалился на тыщщи лет не откуда нибудь, а с Камчатскаго полуострова.

Автор – Сергей Щепетов, Книжка – «Род Волка».

А вот Викинги, третий сезон которых мы с женой с опозданием просматриваем (с опозданием, потому что жена в одно лицо смотрела Once upon a time), уже не те:

Утопили, видать за ненадобностью, Зигги, введя при этом мимоходом в сюжет Одина (насколько я могу судить). Сцена с народным лечением резаной раны Лодброка тоже как то оказалась весьма неожиданной.

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

 

Надо побыстрее досматривать, да переходить к «Игре Престолов»