• Автоматический кошачий туалет

    image
    Может ли «умный дом» дом считаться «умным» если любимые кошки ходят в лоток с наполнителем?

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

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

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

    Поиски решений в интернете привели к покупке автоматического туалета австрийской фирмы, реклама которого убедила меня в правильности выбранного направления. Туалет подключался к водопроводу и канализации, смыв был автоматическим, после того, как кошка покидала туалет.
    Заплатил я за туалет, блок питания и брелок настройки функций туалета — больше 17 тысяч рублей. Деньги были большие, но цель оправдывала средства.
    Читать дальше →
  • Не только обработка: Как мы сделали из Kafka Streams распределенную базу данных, и что из этого вышло

    • Translation
    Привет, Хабр!

    Напоминаем, что вслед за книгой о Kafka мы выпустили не менее интересный труд о библиотеке Kafka Streams API.



    Пока сообщество только постигает границы возможностей этого мощного инструмента. Так, недавно вышла статья, с переводом которой мы хотим вас познакомить. На собственном опыте автор рассказывает, как сделать из Kafka Streams распределенное хранилище данных. Приятного чтения!
    Читать дальше →
  • Про архитектуру, библиотеки и папочки

    • Tutorial


    Привет, Хабр! Таки да, недавно посчастливилось мне работать в одной фирме в качестве ведущего программиста и после того, что я там видел, я хочу поговорить о том, как желательно организовывать код и файлы и зачем. Ну таки да, прописная истина про то что не желательно папку для одного файла создавать и библиотеку, которую будет использовать только одно приложение и так всем известна. Ну почти всем. В общем, в той фирме, куда я недавно попал, было все — и папки с одним файлом и куча библиотек, которые использует одна единственная программа и код кое-где прямо в контроллерах в огромных методах на кучу строк. На самом деле мне больше всего там не понравилось то, что курили IQOS прямо в офисе. У меня на эту хрень аллергия. Я поговорил с руководством. Мне сказали, что эту проблему решат. Ничего за две недели не поменялось. Фиг с ним с кодом, код бы я бы со временем отрефакторил бы, а вот культуру такую как-то терпеть не хотелось и я свалил.
    Читать дальше →
  • Веб-компоненты: 9 проектов, о которых стоит знать в 2019 году

    • Translation
    Автор материала, перевод которого мы сегодня публикуем, полагает, что если вы собираетесь использовать при проектировании интерфейсов своих приложений веб-компоненты и подыскиваете подходящую библиотеку, независимую от UI-фреймворков, вам стоит взглянуть на те проекты, о которых пойдёт здесь речь.


    Читать дальше →
    • +44
    • 27.5k
    • 9
  • «Умный дом» — переосмысление

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

      Хочу поделиться своим опытом («тестовый проект»).

      Постройка собственного дома (особенно, если еще и своими силами) — крайне объемный кусок информации, поэтому я свое повествование буду вести больше про ИТ-системы (мы же все-таки сейчас на Хабре, а не на ФХ, хотя там тема тоже есть).
      Читать дальше →
    • Соцсеть в 2019: Яндекс запустил «Ауру»

        Очень важный UPD - Аура временно прекратила выдавать инвайты



        Новость с оттенком субъективности

        Сколько раз вы в жизни думали что-то вроде: а вот бы мне колёса от Тойоты, привод и проходимость от Хантера, внешность от Х3, а размеры от Тундры — была бы идеальная тачка? А Яндекс подумал — и у него получилось. Во всяком случае, первые впечатления от его социального сервиса «Аура» — ух ты, wow, взлетит, зайдёт, удобно, просто. Но дьявол, как известно, в мелочах. Пока это бета и, надеюсь, меня не расстреляют за скриншоты. Итак, Хабр — встречай — «Аура» засветилась.


        У котиков появилась ещё одна площадка для захвата мира :-)
        Читать дальше →
      • Создаём систему электронного хронометража гонок

          185282-11516937085b2ed4ea7e36b


          По будням, я уже 17 лет занимаюсь разработкой корпоративного софта, у меня было много разных хобби, но в итоге нашёл то, что держит уже 5 лет и не собирается отпускать. С 2013 года большую часть свободного времени я посвящаю мотокроссу и эндуро на внедорожных мотоциклах, в том числе регулярно участвовал в любительских соревнованиях. После неудачного дропа в июне 2017 года я оказался в больнице с полным переломом правой плечевой кости. Вышел из больницы, пришёл в себя и стало ясно, что ездить не получится ещё месяца два — три, а привычка к активной деятельности осталась. Тогда и решил, что надо попробовать самому организовать гонку для своих друзей. С технической точки зрения меня интересовал хронометраж, о том как я делаю собственную систему и провожу гонки читайте под катом.

          Читать дальше →
        • Swagger – умная документация вашего RESTful web-API — обзор Junior back-end developer-а для новичков



          Предисловие


          Команда, в которой я сделала свои первые шаги на поприще написания промышленного кода, занималась разработкой удобного API к функциональности программного продукта на C# (для удобства назовем его, скажем, буквой E), существовавшего уже много лет и зарекомендовавшего себя на рынке с весьма положительной стороны. И здесь вроде бы у юного падавана пока не должно возникать вопросов, однако же представим себе, что ранее вы, скорей всего, конечно, писали собственные web-API, но вряд ли для широкой аудитории, а значит жили по принципу «Сам создал – сам пользуюсь», и если вдруг кого-то бы заинтересовала функциональность вашего API, то вы, наверное, кинули бы ему pdf-файл с подробной инструкцией (по крайней мере я бы сделала именно так). «Где посмотреть функционал апи» — спросила я тимлида ожидая получить ссылку на текстовый документ. «Загляни в Swagger» — ответил он.

          Читать дальше →
          • +8
          • 24.4k
          • 7
        • Неканоничный ламповый усилитель

          Всем доброго времени суток!

          Как-то, холодным тоскливым вечером, почитывал я статью про высококачественный усилитель класса D c Aliexpress. И пришла мне в голову мысль рассказать про свою DIY-поделку. А вот теперь дошли и руки. Ниже приведен ворклог об изготовлении очередного-сколько-уже-можно лампового (и не только) усилителя. Статья изобилует несерьезностью и петросянством, но все же пару, возможно, полезных схем вы здесь сможете найти.

          Предупреждения:


          1. ОСТОРОЖНО, трафик! Много картинок.
          2. ОСТОРОЖНО! В представленых схемах используются опасные для жизни напряжения. Воспроизводя приведённые схемы, вы делаете это на свой страх и риск. Автор не несёт ответственности за последствия, наступившие в результате дублирования как всего устройства, так и отдельных его частей.
          Читать дальше →
        • Ардуина и светодиод, или как прокачать детский конструктор



            Мой сын крепко “подсел” на магнитный конструктор Magformers. Однажды просматривая серию Фиксиков где фигурировал такой же конструктор ребенок спросил: “Папа, а почему у фиксиков детальки светятся, а у нас нет?”.

            Оказалось, что действительно существует набор “Magformers Neon LED Set”, где помимо обычных строительных блоков есть еще и элемент со светодиодом. Поскольку к этому времени у нас уже собрался целый ящик магнитиков всех возможных форм и размеров (как по мне, китайский магформерс ничуть не уступает оригиналу), покупать еще один набор только ради лампочки как-то не хотелось. Тем более, что этот набор стоил ощутимо дороже аналогичного без подсветки.

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

            Под катом Вы найдете вариант моргалки на ATTiny85 и светодиодной панели на светодиодах WS8212. Я расскажу о схемотехнике, как эту всю штуковину я запитывал от батареи, а также неочевидных проблем, которые я выгреб по пути. Я также в деталях расскажу о программной составляющей проекта.
            Читать дальше →
          • Деревянная Лампа Эдисона с голосовым управлением. Цена вопроса 5$

              image

              Именно столько стоит WiFi реле SONOFF (от компании ITEAD) которое являеться сердцем данного устройства.

              «У меня не было неудач. Я всего лишь нашёл 10 тысяч способов, которые не работают» — Томас Альва Эдисон.

              Это невероятно, еще не в таком далеком прошлом люди в школах перьями писали. А сегодня у каждого в кармане есть волшебный кирпич с картинками, который позволяет получить доступ к информации со всего мира. Отправлять мгновенные сообщения любому человеку на планете. У нас есть голосовое управление, распознавание лиц и, как люди говорят, угроза всему человечеству со стороны искусственного интеллекта. Совсем недавно эти технологии казались невообразимой фантастикой. Однако сегдня я вам покажу как, имея базовые навыки программирования, абсолютно каждый может использовать голосовое управление. Итак, давайте начнем!
              Читать дальше →
            • Новый законопроект о защите больших пользовательских данных (БПДн)



                Раньше серьезную инфраструктуру для хранения и анализа Больших данных (Big Data) могли позволить себе только масштабные организации. Сегодня же, большие данные находят все более разнообразное применение в самых различных областях. При этом, развитие Big Data не только открывает возможности, но и сопряжено с многочисленными сложностями. Современные организации все чаще используют технологии машинного обучения и когнитивные технологии, которые часто позволяют более эффективно использовать большие данные. Так же, в этой области присутствуют и свои, присущие относительно новым технологиям угрозы безопасности информации.
                Читать дальше →
                • +10
                • 4.9k
                • 2
              • ФНС потратит 3,3 млрд руб, чтобы приспособить свою систему к отечественному «Линуксу» и «Офису»

                  Как известно, в рамках программы импортозамещения государственные ведомства обязаны заменять дорогие американские Windows и MS Office дешёвыми российскими аналогами. В качестве альтернативы предлагаются операционная система «Альт Линукс» компании «Базальт СПО» и офисное ПО «МойОфис» компании «Новые облачные технологии» (НОТ). Но здесь возникают неожиданные сложности и непредвиденные расходы.

                  Федеральная налоговая служба (ФНС) провела тестирование автоматизированной информационной системы (АИС) «Налог-3» и обнаружила, что она плохо совместима с вышеупомянутым российским софтом. Результаты тестирования опубликованы в отчёте (копия есть в редакции «Коммерсанта»).

                  Для доработки своей системы ФНС запросила 3,3 млрд руб. из государственного бюджета. Система «Налог-3» написана на .NET.
                  Читать дальше →
                • System.IO.Pipelines: высокоэффективный IO в .NET

                  • Translation
                  System.IO.Pipelines — это новая библиотека, упрощающая организацию кода в .NET. Трудно обеспечить высокую производительность и точность, если приходится иметь дело со сложным кодом. Задача System.IO.Pipelines — упростить код. Подробнее под катом!

                  Читать дальше →
                • [DotNetBook] События об исключительных ситуациях и как на пустом месте получить StackOverflow и ExecutionEngineException

                  • Tutorial

                  События об исключительных ситуациях


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


                  try {
                      // ...
                  } catch {
                      // do nothing, just to make code call more safe
                  }

                  В такой ситуации может оказаться что выполнение кода уже не так безопасно как выглядит, но сообщений о том что произошли какие-то проблемы мы не имеем. Второй вариант — когда приложение глушит некоторое, пусть даже легальное, исключение. А результат — следующее исключение в случайном месте вызовет падение приложения в некотором будущем от случайной казалось бы ошибки. Тут хотелось бы иметь представление, какая была предыстория этой ошибки. Каков ход событий привел к такой ситуации. И один из способов сделать это возможным — использовать дополнительные события, которые относятся к исключительным ситуациям: AppDomain.FirstChanceException и AppDomain.UnhandledException.


                  Примечание


                  Глава, опубликованная на Хабре не обновляется и возможно, уже несколько устарела. А потому, прошу обратиться за более свежим текстом к оригиналу:


                  Читать дальше →
                • Парсим с помощью ANTLR 4 хранимки T-SQL для получения связей между таблицами

                  • Tutorial
                  Доброго дня, друзья.

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

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

                  К делу. Далее использование Antlr и примеры кода.
                  Читать дальше →
                • [DotNetBook] Структура экземпляров типов и VMT

                  • Tutorial
                  С этой статьей я продолжаю публиковать целую серию статей, результатом которой будет книга по работе .NET CLR, и .NET в целом.

                  Вся книга будет доступна на GitHub: CLR Book. Так что Issues и Pull Requests приветствуются :)

                  Это — выжимка из главы про структуру типов и их VMT.

                  Структура объектов в памяти


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

                  Примечание


                  Глава, опубликованная на Хабре не обновляется и возможно, уже несколько устарела. А потому, прошу обратиться за более свежим текстом к оригиналу:




                  Читать дальше →
                  • +33
                  • 9.7k
                  • 3
                • Сборка мусора и время жизни объектов

                  • Translation
                  Казалось бы, простой вопрос: может ли среда CLR вызвать финализатор объекта, когда экземплярный метод не завершил свое исполнение?

                  Другими словами, возможно ли в следующем случае увидеть «Finalizing instance.» до «Finished doing something.»?

                  internal class GcIsWeird
                  {
                      ~GcIsWeird()
                      {
                          Console.WriteLine("Finalizing instance.");
                      }
                  
                      public int data = 42;
                  
                      public void DoSomething()
                      {
                          Console.WriteLine("Doing something. The answer is ... " + data);
                          // Some other code...
                          Console.WriteLine("Finished doing something.");
                      }
                  }
                  

                  Читать дальше →
                • Сколько стоит CRM-система?

                    Если вы хоть раз покупали новый автомобиль, то для вас не будет откровением то, что вещи в конечном итоге обходятся гораздо дороже той суммы, которая была на ценнике и даже кассовом чеке. Но такой опыт почему-то напрочь забывается, когда бизнес решает внедрить CRM-систему или любое другое корпоративное ПО. И начинается череда сюрпризов, разбирательств и споров — почему столько, когда в калькуляторе на сайте было вот столько?! «Вы меня обманываете! Вы накручиваете! У меня нет денег! Да меня финансовый директор убьёт! Да это бюджет Лихтенштейна! Вы что, с ума сошли?!» Нет, не сошли. Наоборот, сели и здраво написали для вас, что к чему.


                    Читать дальше →
                  • РусГИС — платформа для сложных задачек с аналитикой и геоданными

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


                      Читать дальше →
                      • +13
                      • 7.1k
                      • 3