• ООП, «святая троица» и SOLID: некоторый минимум знаний о них

      Необходимое вступление


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


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


      Столь малые гарантии поднимают вопросы о причинах, по которым статья пишется. Я считаю, что этим вещам должны учить везде, где учат программированию, вплоть до уроков информатики в школах с углублённым её изучением. Тем не менее, для меня стала пугающе нормальной ситуация, когда я узнаю, что собеседник мой коллега, причём работающий уже не первый год, но про инкапсуляцию «что-то там слышал». Необходимость собрать всё это в одном месте и давать ссылку при возникновении вопросов зрела давно. А тут ещё и мой «pet-project» дал мне изрядно пищи для размышлений.


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



      Читать дальше →
    • Upgrade компа серверным SATA SSD на 1.92TB с ресурсом записи от 2PB и выше



        Есть люди, которые любят использовать качественные комплектующие из корпоративного сегмента в быту. Они хотят быть уверенными в том, что их SSD не накроется внезапно из-за сбоя по питанию или write amplification при ежедневном скачивании огромных 4K-торрентов на фрагментированный NTFS-раздел с размером кластера 4K или при очередной компиляции Gentoo из исходников.

        Конечно, такие опасения редко сбываются на практике, однако очень приятно пользоваться SSD с Power Loss Protection (1, 2, 3), который имеет практически безграничный ресурс записи. И даже когда ёмкость его станет малой для текущих задач, он всё равно может быть использован как флэшка или как дополнительный диск, подарен или продан.

        В этой статье приведён список корпоративных SSD ёмкостью 1.92ТБ, которые сейчас подешевели до уровня потребительских SSD (< $300), но обладают ресурсом записи от 2 Петабайт и выше.
        Читать дальше →
      • Очень много YouTube-каналов для прокачки английского языка для программистов

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

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

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

        Поучить английский


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

        EngVid. Если бы можно было выбрать что-то одно для улучшения английского, то это оно. Разные преподы и тематики, постоянное обновление, бездонный ресурс. Ещё сайт одноимённый крутой, с удобной навигацией — можно найти очень узкую тему по интересам.
        Читать дальше →
      • Зарабатываем на солнечной энергии или пассивный доход в 25% годовых, практический опыт. Часть 1


        КДВП © Diana, made by Siuzanna

        Постараюсь поделиться полученным опытом (почти) самостоятельной постройки и эксплуатации ряда своих домашних солнечных станций (дСЭС) под Зеленый тариф (ЗТ) в Украине и что из этого вышло.

        Написание статьи планировалось весной 2019, но в связи с рядом законодательных инициатив, она неоднократно была отложена. Теперь все законы (очень надеюсь) окончательно приняты, и можно продолжать, ну или начинать. Для постройки и получения высокого тарифа в этом году у Вас почти не осталось времени. И Вы уже должны стоять с заявлением на поднятие мощности до 30кВт. Все остальное вы успеете. Конечно, если хотите на этом заработать, о чем далее.
        Читать дальше →
      • ООП в картинках

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


          Читать дальше →
        • Установка имплантата: как это делается?

          • Tutorial
          image

          Добрый день уважаемые друзья! Сегодня мне бы хотелось рассказать, а главное, показать вам — как проходит операция по установке имплантата — со всеми инструментами и прочим. Если про процесс удаления зуба, в частности зуба мудрости — я уже рассказывал, то настало время поговорить о чем-то более серьезном.
          ВНИМАНИЕ!-Uwaga!-Pažnju!-Attention!-Achtung!-Attenzione!-ВНИМАНИЕ!-Uwaga!-Pažnju!

          Ниже будут представлены фотографии сделанные во время операции! С видами зубов, дёсен, крови и расчлененки. Слабонервных прошу отказаться от прочтения данной статьи.
          Читать дальше →
        • Статическое распределение памяти в микроконтроллерах

            Холмс: Любезнейший, не подскажите где мы находимся?
            Пастух: Вы находитесь на воздушном шаре!!!
            Холмс: Вы должно быть программист.
            Пастух: Да, но как вы догадались?
            Холмс: Только программист мог дать столь точный и
            при этом столь бесполезный ответ.

            … отрывок из известного анекдота


            Если Вы когда нибудь программировали под микроконтроллер, неважно, с помощью Arduino IDE или напрямую работали с компилятором для AVR, ARM, или ESP, Вы наверняка видели отчеты о завершении сборки вроде

            Sketch uses 1,090 bytes (3%) of program storage space. Maximum is 30,720 bytes.
            Global variables use 21 bytes (1%) of dynamic memory, leaving 2,027 bytes for local variables. Maximum is 2,048 bytes.
            

            Или

             text data   bss   dec  hex filename
            52136 1148 12076 65360 ff50 MyProject

            Такие отчеты действительно являются абсолютно точными… Вот только неполными, а потому не такими уж полезными. Проблема в том, что тут учитываются только те данные, которые были распределены статически. А вот все что выделяется через new или malloc в статистику не попадает. Как результат гораздо сложнее отследить моменты когда вдруг перестает хватать памяти и прошивка начинает работать неверно. А ведь памяти в микроконтроллерах обычно не очень много, и за этим параметром стОит тщательно следить.

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

            Статья рассчитана на новичков (хотя совсем уж базовые вещи рассказывать не буду – ожидаю, что читатель проштудировал хоть какую нибудь книгу по C++). Поехали.
            Читать дальше →
          • Радиомодули для arduino JDY-40

              image

              Приветствую всех. На просторах aliexpress наткнулся на очередное китайское творение, из раздела "Беспроводные модули для arduino". Ранее подобные модули с аналогичными возможностями за столь малые деньги мне не попадались. Вот я и решил сделать обзор данного модуля. Возможно, кого-то он заинтересует. Речь пойдет о маломощном трансивере JDY-40, работающем на частоте 2,4 Гигагерца. Работать с модулем очень просто, для настройки модуля используются ат команды, которые передаются по USART.

              Читать дальше →
            • FreeCAD — новый метод рисования

                Disclamer: Я никогда в своей жизни не работал с CAD/CAM приложениями раньше, и, вдруг, пришлось. Принципы работы FreeCAD меня так восхитили, что это требует срочного поста на Хабр, чтобы рассказать другим.


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


                Вступление


                У меня возникла простая задача — сделать 3D модель своей квартиры. Не просто "стенки в размер", а все балки, выступы и загибы. Я попробовал одну, вторую, третью программу… Я отчаялся (началось с SweetHome3D, а закончилось blender и inkscape). Они все были чертовски неудобными. Среди программ, которые я попробовал, был и FreeCAD, который я пропустил по причине "нифига не сделать" и "не работает толком". После того, как я отчаялся, я пошёл по второму кругу. На этот раз, чуть больше читая документацию… И FreeCAD не только "взлетел", но и ещё и открыл для меня восхитительный новый мир точного векторного рисования, основывающегося на Constrains.

                Читать дальше →
              • «Ручной» манипулятор

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

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


                Читать дальше →
              • Щелкаем реле правильно: коммутация мощных нагрузок

                  Привет, Geektimes!

                  Управление мощными нагрузками — достаточно популярная тема среди людей, так или иначе касающихся автоматизации дома, причём в общем-то независимо от платформы: будь то Arduino, Rapsberry Pi, Unwired One или иная платформа, включать-выключать ей какой-нибудь обогреватель, котёл или канальный вентилятор рано или поздно приходится.

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

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



                  Я же хочу рассказать про простую и довольно очевидную, но при этом редко встречающуюся схему, умеющую вот такое:

                  • Гальваническая развязка входа и нагрузки
                  • Коммутация индуктивных нагрузок без выбросов тока и напряжения
                  • Отсутствие значимого тепловыделения даже на максимальной мощности


                  Но сначала — чуть-чуть иллюстраций. Во всех случаях использовались реле TTI серий TRJ и TRIL, а в качестве нагрузки — пылесос мощностью 650 Вт.

                  Читать дальше →
                • Полный цикл разработки IoT устройства управления подогревом бассейна на ESP8266 в среде Arduino

                  В данной публикации я поделюсь опытом о создании IoT устройства с ноля: от появления идеи и воплощении ее в «железе» до создания микропрограммы для контроллера и web-интерфейса для управления созданным устройством через сеть интернет.


                  До создания этого устройства я:


                  • Почти не разбирался схемотехнике. Только на уровне принципов работы
                    резистора/транзистора… Я не имел никакого опыта в создании сколь-нибудь сложных схем.
                  • Никогда не проектировал печатных плат.
                  • Никогда не паял SMD компонент. Уровень владения паяльником был на уровне припаивания проводов и какого-нибудь реле.
                  • Никогда не писал таких сложных программ для микроконтроллера. Весь опыт был на уровне «зажги светодиод в Arduino», а контроллер ESP8266 я встретил впервые.
                  • Совсем немного писал на C++ для «большого брата», но это было более десятка лет назад и все давно забылось.

                  Конечно, опыт работы программистом (главным образом это Microsoft .NET) и системное мышление помогли мне разобраться в теме. Думаю, сможет и читатель этой публикации. Полезных ссылок и статей в интернете море. Самые, на мой взгляд интересные, и помогающие разобраться в теме, я привожу по ходу статьи.

                  Читать дальше →
                • Как я осилил английский

                  Всем привет. Я – айтишник «за 30», и я люблю английский язык. Так получилось, что на протяжении многих лет английский никак не хотел полюбить меня. Перед вами живой пример человека с «плохой памятью», «неспособностью к языкам», богатейшим опытом неудачного изучения английского как на курсах, так и самостоятельно, упущенными из-за незнания языка шансами и возникшими на этой почве комплексами. Все, что можно было сделать в изучении иностранного языка плохо, я попытался сделать еще хуже. Не смотря на все это, перед вами история с хэппи эндом, которая, верю, поможет кому-то избежать глупых ошибок, сэкономить время, избавится от иллюзий и предрассудков по поводу изучения нового языка с около нулевого уровня.
                  Читать дальше →
                • Как подружить тепловизор FLIR One второго поколения с компьютером

                  Последнее время появилось довольно много обзоров тепловизионной приставки к смартфону Seek Thermal. Однако, Seek Thermal не единственный тепловизор доступный широким массам пользователей – всем известная компания FLIR также выпускает свою тепловизионную приставку FLIR One трёх разных поколений. В данной статье речь пойдёт о приставке второго поколения FLIR One Gen 2 для Android, имеющей разрешение болометрической матрицы 160x120 пикселей.
                  Читать дальше →
                  • +22
                  • 8,1k
                  • 7
                • Прекращаем ставить диод


                  Нет, это не очередной «вечняк»

                  После прочтения статьи о защите электрических схем от неправильной полярности питания при помощи полевого транзистора, я вспомнил о том, что давно имею не решенную проблему автоматического отключения аккумулятора от зарядного устройства при обесточивании последнего. И стало мне любопытно, нельзя ли применить подобный подход в другом случае, где тоже испокон века в качестве запорного элемента использовался диод.
                  Читать дальше →
                • Как подключить кучу старого RS232 оборудования по USB без регистрации и sms (STM32 + USB-HID)

                  • Tutorial

                  Вместо вступления


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


                  Читать дальше →
                • Год измеряем влажность почвы на ESP8266 и двух батарейках. Часть 2

                    Всем привет! В этой статье хочется рассказать, как заставить датчик влажности почвы проработать год на двух батарейках (ААА) и при этом сделать все более менее правильно. Первая статья — про выбор среды разработки (Arduino IDE) и платформу Blynk.


                    Картинка домашнего дуба для привлечения внимания

                    Садовод любитель


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

                    Спойлер
                    Светодиоды греются, земля сохнет, поливаю я кое как.
                    Читать дальше →
                  • Глупый метеокороб на E-Ink



                      Уже как полтора года назад я купил пару E-Ink экранов с eBay на базе драйвера SSD1606, как раз для метеостанции. И вот 4 месяца назад, перед новыми годом, появился он.
                      Внимание внизу есть Х изображений общей массой 3,2МБ
                    • Система сбора данных на ESP. Часть I. CO2

                        Доброго времени суток! В данной статье хочу рассказать о реализации устройств на модулях ESP. Тема похожих девайсов уже раскрыта в интернете, но не перестает быть актуальной.
                        Читать дальше →