• Как фиксировать показания водомеров и отправлять на емейл?

    @pfg21
    ex-турист
    все остальные уже пошли этот путь. так что стоит почитать что уже есь по системам электронного учета расхода.

    если упираться в минимум, то водосчетчик-крутилка с импульсных выходом.
    к нему электронный счетчик импульсов и вывод в любую систему данных.
    это реально минималка по цене и ковыряниям.
    Ответ написан
    3 комментария
  • Как фиксировать показания водомеров и отправлять на емейл?

    NeiroNx
    @NeiroNx
    Программист
    С камерами это точно изврат, проще купить подходящие счетчики и считывать их какой нибудь ESP8266
    Ответ написан
    Комментировать
  • Как фиксировать показания водомеров и отправлять на емейл?

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

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

    @AlexSku
    не буду отвечать из-за модератора
    Насколько я знаю, многие счётчики используют протокол MBus. Сертифицированы ли они для России, не в курсе. Есть ещё наши счётчики, у которых при каждом обороте крыльчатки выдается импульс (замыкается сухой контакт на короткое время). Тогда просто ставите счётчик импульсов (опять же, есть такие, которые сумму импульсов передают по MBus) (на водосчётчике написан расход воды для одного импульса).
    Ответ написан
    Комментировать
  • Как фиксировать показания водомеров и отправлять на емейл?

    @rPman
    Любые готовые решения потребуют сертификации, т.е. те самые 100 евро и обслуживание

    Да, водосчетчик с RS485 купить не проблема (готовьте два раза по 2500р-3000р) а любой сантехник их установит и контора при наличии документов все примет, но необходимость в наличии железки (если сами то на основе малинки или arduino), собирающих эти показания и софта, с помощью которого это все будет работать НИКУДА НЕ ДЕНЕТСЯ, готовый тоже не бесплатный!

    Поэтому останьтесь на варианте Б - купите смартфон за 2т.р. (очень тщательно подойдите к вопросу энергопотребления) настройте автовключение его раз в месяц и пусть оно делает фото ваших счетчиков, анализирует и отправляет куда хотите. Это САМОЕ дешевое решение в вашем случае.

    p.s. про энергопотребление, в выключенном состоянии телефон пролежит 2-3 месяца и разрядится саморазрядом заметно, есть модели, с хорошим режимом сна, которые у меня пару месяцев с включенным режимом 'в самолете' (использовал как плеер) лежали и в ус не дули, а есть модель, которая помрет даже выключенная за неделю, потому что выключение у нее виртуальное.

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

    @Elizavetta
    Matroid: gamedev/js-разработка
    выучил PHP, SQL и JS и ушел во фриланс

    Мне программирование, как основной вид деятельности, в принципе неинтересен.

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

    По поводу PM, не все так однозначно
    ПМ это просто менеджер, ему технических знаний не требуется, трубуются менеджерские.

    Ценность ПМа совсем без технических навыков сильно под вопросом, во многих компаниях нет таких ПМов. Но у автора есть кое-какие навыки, ключ в том, как он будет управлять проектом независимо от своих навыков (фронтенд-php), на других стеках.
    Ответ написан
    Комментировать
  • Возможно ли сейчас жить за счет багхантинга?

    Sanes
    @Sanes
    Устраивайтесь на работу тестировщиком и живите за счет багхантинга.
    Ответ написан
    6 комментариев
  • Почему Chrome не подключает Jquery + Font Awesome?

    vasilyev
    @vasilyev
    php, 1c-bitrix
    Вы подключаете вот так
    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
    ...
    <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>

    при этом браузер заменяет // на тот протокол, по которому вы сайт открыли. Обычно так делают, чтобы работало и по http:// и по https://. Если вы открываете этот файл "мимо сервера", то путь к нему в адресной строке file://путь к файлу/index.html. Бразуер заменяет // на протокол и пытается загрузить file://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css и file://code.jquery.com/jquery-1.11.3.min.js, которых по этому адресу, естественно, нет.
    Ответ написан
    Комментировать
  • Какую роль играют 2 амперсанда стоящие вне условной конструкции в JS?

    Denormalization
    @Denormalization
    Это можно переписать так:

    if ($(window).width() >= tablet)
    {
      size_media_container();
      isotope_projects();
      init_project_info_control();
    }


    Оператор && имеет особенность:
    Если левая часть false, то правая часть не будет выполнена.
    Просто введите в консоли:
    test = true;
    test && (alert(1), alert(2), alert(3));
    test = false;
    test && (alert(1), alert(2), alert(3));


    И увидите разницу.

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

    Sanasol
    @Sanasol Куратор тега JavaScript
    нельзя просто так взять и загуглить ошибку
    var scrolled = false;

    scrolled = true;

    if(!scrolled)
    Ответ написан
    1 комментарий
  • $$$ что значит в php?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Это называется переменная с переменным именем (variable variable).

    class Foo {
      public $deepest = 'Limbo';
      
      public function __toString()
      {
        return 'deep';
      }
    }
    
    $deeper = 'deepest';
    $deep = 'deeper';
    $b = new Foo();
    
    echo $b->$$$b;


    Выражение выполняется справа налево:
    1. $b->$$($b) превращается в $b->$$($b->__toString()), поскольку именно так ведут себя объекты, когда на них пытаются натравить echo;
    2. $b->$$($b->__toString()) превращается в $b->$(${'deep'}), именно это значение возвращает метод __toString класса Foo, инстансом которого является $b;
    3. $b->$(${'deep'}) превращается в $b->$($deep), это как раз вызов переменной при помощи значения из другой переменной;
    4. $b->$($deep) превращается в $b->${'deeper'}, поскольку именно такое значение находится в переменной $deep;
    5. $b->${'deeper'} превращается в $b->($deeper);
    6. $b->($deeper) превращается в $b->deepest;
    7. наконец, получается значение свойства 'deepest' из $b, а там как раз хранится 'Limbo', оно и выводится в echo.

    dd178a12658f41679b71884846669132.jpg
    Ответ написан
    8 комментариев
  • Как сделать border на половину картинки?

    seoperin
    @seoperin
    Full stack web developer. Laravel / Vue
    Накидал такой вариант codepen.io/anon/pen/KpQYjL =) Не знаю насколько он нормальный, просто ради интереса сделал
    Ответ написан
    1 комментарий
  • Возможно ли в node.js зашифровать исходный код?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    Для того, чтобы приложение могли поддерживать только Вы есть гораздо более надежный способ, придумывайте как можно больше абстракций и используйте больше паттернов, а еще лучше - сделайте свой фреймворк, это самое надежное, и пусть кто-то разберется.
    Ответ написан
    Комментировать
  • Можно ли использовать сторонний шрифт в html письмах?

    dudeonthehorse
    @dudeonthehorse
    Email Developer
    Не надо использовать подключаемые шрифты. Мало где работает. Я делаю следующее. Мне нравится шрифт Helvetica Neue. Он есть на маке, но его нет на винде. Я указываю font-family:'Helvetica Neue', arial; и пользователи мака видят гельветику, виндузятники видят arial.
    Ответ написан
    Комментировать
  • Сильные стороны PHP-вских фреймворков по сравнению с фреймворками Python и наоборот? Бывают ли случаи, в которых без фреймворков нереально обойтись?

    @matperez
    Фреймворки нужны, если над проектом работает более одного человека. Не надо их считать чем-то выдающимся из языка. Это просто набор правил и готовых компонентов для написания приложений. Они помогают другим членам команды быстро разобраться что к чему. Хорошие фреймворки еще и учат хорошим практикам. Если работаете в одиночку и не собираетесь публиковать своих наработок, можете вообще забить на все и писать как вам удобно.
    Ответ написан
    7 комментариев
  • Какова роль интерфейсов в ООП?

    Приведу пример на коленке. Хотим, например, написать абстрактную файловую систему. Для начала, определим интерфейс, для ФС:

    interface FileSystemInterface {
      public function write($file, $data);
      public function read($file);
    }


    Затем, хочу реализацию интерфейса ФС для работы с файликами:

    class OSFileSystem implements FileSystemInterface {
      public function write($file, $data) {
         // открываем файлик, пишем данные
      }
    
      public function read($file) {
        // открываем файлик, возвращаем данные
      }
    }


    Вдруг, кому-то захотелось файловую систему в облаке. Окей, не проблема, реализуем это:
    class CloudFileSystem implements FileSystemInterface {
      public function write($file, $data) {
         // открываем соединение с облаком, пишем данные
      }
    
      public function read($file) {
        // открываем соединение с облаком, возвращаем данные
      }
    }

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

    class FileStorage {
      protected $Fs;
      
      public function __construct(FileSystemInterface $Fs) {
        $this->Fs = $Fs;
      }  
    
      public function saveFile() {
        $this->Fs->write('file.txt', 'file data');
      }
    
      public function getFile() {
        return $this->Fs->read('file.txt', 'file data');
      }
    }


    Отлично! Теперь мы можем хранилищу файлов отдать любой объект с реализованным интерфейсом FileSystemInterface. Пример:

    // Хранилище файлов работает с файловой системой ОС:
    $FS = new OSFileSystem();
    $FileStorage = new FileStorage($Fs);
    $FileStorage->getFile();
    
    // Хранилище файлов работает с файловой системой в облаке:
    $FS = new CloudFileSystem();
    $FileStorage = new FileStorage($Fs);
    $FileStorage->getFile();


    Использование интерфейса, в данном случае. позволяет нам писать только реализацию работы файловой системы, а бизнес-логика, работающая с файловой системой никак не меняется, она знает, что в любом случае файловая система реализует интерфейс FileSystemInterface и может без опаски использовать методы этого интерфейса.
    Ответ написан
    14 комментариев
  • Автоматизация на bat?

    Jump
    @Jump
    Системный администратор со стажем.
    Можно.
    Можно и на лыжах по асфальту кататься.
    Ответ написан
    1 комментарий
  • ЧТо обозначают эти знаки?

    @krypt3r
    Ответ написан
    Комментировать
  • Как сделать cинхронный вызов?

    Staltec
    @Staltec
    Node.js разработчик
    дайте пожалуйста элегантный пример как дождаться выполнения одного запроса и нескольких, а из него передать данные

    async.js (https://github.com/caolan/async) - облегчает работу с колбеками. Но у него фатальный недостаток, он для асинхронной работы. Этот модуль представляет шикарные возможности обработки последовательных задач (методы вида *Series, waterfall), но `последовательное` не значит `синхронное`.

    В целом по вашему вопросу. Express работает с запросами как с потоками. Нельзя работать в Node с потоком синхронно. Синхронным кодом вы тупо блокируете цикл событий.

    Вы сами себе придумали велосипед с квадратными колёсами и теперь спрашиваете как сделать так чтобы на нём можно было ездить.

    Где место синхронному коду в Node.js приложении работающему с потоками ввода/вывода? Ответ: в области инициализации.
    Ответ написан
    5 комментариев
  • Какой ноутбук выбрать для веб-разработки?

    В конце концов тоже пришёл к Макбуку, хотя на самом деле это вопрос вкуса, так как нормально заниматься разработкой можно, по сути, на любой современной машине. В Макбуке подкупил нереально удобный тачпад, долгоживущий аккумулятор, ну и ретина глаз дико радует. Могу только посоветовать брать не менее, чем с 8 ГБ оперативки — для комфортной работы это самый разумный минимум.
    Ответ написан
    5 комментариев