company_banner
  • Когда код это данные

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

    © Платон «Государство», книга 7: Миф О Пещере
    Время от времени мне пишут с просьбой помочь в написании кода, который меняет код (далее кодмод, от слов код и модификация - изменение) и сегодня я расскажу об этом нехитром процессе в новом формате, вдохновлённом диалогами Платона, он будет содержать вопросы обратившегося ко мне человека по поводу линтера нового поколения, и мои развёрнутые ответы.

    Забегая вперед скажу, что результатом общения стал loader ESTrace, который при запуске может показать что-то вроде:


    Но об этом позже, а сейчас:
    Следим за функциями
  • Управление хостингом: вид из головы тактика

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

      Есть три уровня управления VDS-хостингом: стратегический, когда вы выбираете, что за продукт вы делаете, какое железо и у кого покупаете и в какие ЦОДы и на каких условиях встаёте, — по сути, это формирование ДНК хостинга. Есть операционный — это рутина вроде «отбить диапазон IP-адресов, который попыталась заблокировать Сони», «опять железо застряло на границе» или «админ заболел, кого поставить в смену», «сложный тикет третьей линии». Например, на уровне ДНК мы решаем, что нужно заменить поддержку на разработку (чтобы клиент мог сам всё решать из личного кабинета), а на уровне тактики уже определяем, как именно это сделать.

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

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

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

      Так что добро пожаловать в рубрику «Хостер наконец-то пишет про хостинг в своём корпоративном блоге»…
      Узнать подробности
    • Новые JavaScript-API для работы с аппаратным обеспечением

      • Перевод
      Сталкивались ли вы когда-нибудь с необходимостью работы с аппаратным обеспечением устройств из веб-приложения, а, когда оказывалось, что это невозможно, создавали ли нативное приложение для некоей платформы только ради того, чтобы обойти это ограничение? Если вы бывали в подобной ситуации, то знайте, что вы не одиноки. До недавнего времени работа с аппаратным обеспечением из веб-приложений представляла собой весьма запутанную и сложную задачу. Но сейчас, благодаря тому, что в современных браузерах появилась поддержка некоторых новых JavaScript-API, рассчитанных на работу с аппаратным обеспечением, решить эту задачу гораздо проще, чем раньше.



      В этом материале речь пойдёт о трёх новых JavaScript-API, направленных на работу с аппаратным обеспечением. В частности — о WebHID, о WebNFC и о WebUSB.
      Читать дальше →
      • +29
      • 4,2k
      • 1
    • Retrofit: удобные разработка и тестирование API

      • Перевод
      Если разработчик веб-сервиса хочет дать максимум удобств и пользы клиентам, ему нужно создать общедоступный API для программной работы с этим сервисом. В экосистеме Java есть один подход к разработке API, весьма удобный для программистов. Он заключается в размещении DTO и интерфейсов конечной точки в .jar-файле API и в создании, с использованием фреймворка Retrofit, типобезопасных клиентов для интеграционного тестирования. В этом материале приведён подробный разбор проекта, созданного с применением такого подхода к работе.



      Если вы занимались крупными Java-проектами, то вы, наверное, помните старый добрый WSDL (Web Services Description Language, язык описания веб-сервисов), за которым стоят IBM и Microsoft. WSDL — это язык описания веб-сервисов, основанный на XML. А, может, вы всё ещё пользуетесь этим языком? WSDL и его брат-близнец — язык XML Schema, относятся к тем стандартам W3C, которые являются излюбленным объектом ненависти бывалых программистов. Файлы спецификаций WSDL не особенно легко читать людям, а об удобстве их ручного составления лучше и не говорить. Но, к счастью, работать с подобными файлами вручную и не нужно. Они могут быть сгенерированы конечной точкой сервера и переданы прямо в кодогенератор для создания объектов переноса данных (DTO, Data Transfer Object) и стабов сервиса.
      Читать дальше →
      • +29
      • 2,1k
      • 2
    • Чем кальциевые аккумуляторы отличаются от гибридных?

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

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


        Обманывают ли нас производители, или мы не всегда учитываем влияния конструкции на электрохимические процессы? Проведём серию испытаний пары аккумуляторных батарей (АКБ), изображённых на фото.
        Узнать подробности
      • Миниатюрный датчик качества воздуха на батарейке с e-ink экраном

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

          Узнать подробности
        • Оптимизация веб-графики в 2021 году

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



          Изображения обычно имеют большие размеры. Даже очень большие. В большинстве случаев CSS- и JavaScript-ресурсы, необходимые для обеспечения работоспособности страниц — это мелочь в сравнении с тем объёмом данных, который нужно передать по сети для загрузки изображений, используемых на страницах. «Медленные» изображения могут повредить показателям Core Web Vitals сайта, могут оказать воздействие на SEO и потребовать дополнительных затрат на трафик. Изображения — это обычно тот самый ресурс сайта, который оказывает решающее воздействие на показатель Largest Contentful Paint (LCP) и на задержки загрузки сайта. Они способны увеличить показатель Cumulative Layout Shift (CLS). Если вы не знакомы с этими показателями производительности сайтов — почитайте о них в Definitive Guide to Measuring Web Performance.

          Здесь мы поговорим о подборе наиболее подходящего формата изображений, об оптимизации их размеров в пикселях и качества, а так же о встраивании изображений в веб-страницы и о ленивой загрузке изображений.
          Читать дальше →
        • Мы стоим на пороге кризиса «Фальшивой науки»

          • Перевод


          Журналы все чаще отзывают научные статьи, потому что оказывается, что написаны они не теми, кем заявлено. Необходимо выработать более эффективные способы решения проблемы, в противном случае мы рискуем полностью утерять общественное доверие к науке.
          Читать дальше →
        • Почему я всё ещё люблю C, но при этом терпеть не могу C++?

          • Перевод
          Мне на удивление часто приходится говорить о том, почему мне всё ещё нравится язык C, и о том, почему я плохо отношусь к C++. Поэтому я решил, что мне стоит об этом написать, а не снова и снова повторять одно и то же.



          Как это обычно бывает у C-программистов, язык C не был ни моим первым языком, ни языком, после которого я уже не изучал ничего другого. Но мне всё ещё нравится этот язык, и когда мне нужно писать программы — я выбираю именно его. Правда, в то же время, я стараюсь быть в курсе того, что происходит в мире современных (и не очень) языков программирования. Я слежу за тенденциями в этой сфере и пишу собственный хобби-проект, связанный с мультимедийными технологиями, на Rust. Почему же я до сих пор не поменял C на что-то более современное? И при чём тут C++?
          Читать дальше →
        • Практический взгляд на Raspberry Pi Pico с точки зрения STM32

          • Перевод
          Сравнительно недавно Raspberry Pi Foundation выпустила плату Raspberry Pi Pico, основанную на микроконтроллере (Micro Controller Unit, MCU) RP2040. Эта плата привлекла большое внимание членов сообщества разработчиков различных электронных устройств. Появилось довольно много проектов, в которых используются программируемые модули ввода-вывода (Programmable I/O, PIO) Raspberry Pi Pico. Например, это проект PicoDVI, в котором конечные автоматы PIO используются для вывода DVI-сигнала.



          Но с появлением Raspberry Pi Pico связано не только радостное возбуждение разработчиков электроники. Это событие заставило сообщество задаться важным вопросом о том, окажет ли появление платы какое-то ощутимое влияние на тех, кто пользуется STM32, SAM и другими микроконтроллерами, основанными на Cortex-M. Станет ли микроконтроллер RP2040 жизнеспособным выбором для некоторых из проектов, в которых используются похожие MCU? Учитывая то, что в состав RP2040 входит двухъядерный процессор ARM Cortex-M0+, кажется справедливой идея использования этого микроконтроллера там же, где применяются 32-битные MCU от ведущих производителей компонентов такого рода, в частности, от STMicroelectronics.

          Сможет ли небольшой проект Raspberry Pi Foundation показать инженерам STM как надо делать микроконтроллеры, или создателям платы на RP2040 стоит пересмотреть некоторые из своих гипотез? Сложно ли будет портировать на RP2040 низкоуровневый код, рассчитанный на STM32?
          Читать дальше →
          • +49
          • 9,1k
          • 5
        • Как попасть в состояние потока?

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

          По полочкам:
        • Радуга «Роскосмоса»

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

            Два года назад в космосе завершилась работа российского спутника «Спектр-Р» — основы астрофизического проекта «РадиоАстрон». Сейчас ему на смену пришел космический телескоп «Спектр-РГ», а в разработке находятся еще две обсерватории «Спектр-УФ» и «Миллиметрон». Давайте посмотрим зачем «Роскосмос» и Российская академия наук создают эти телескопы, и как движется их реализация.

            Начнем издалека, чтобы разобраться почему астрономам недостаточно обычных телескопов на Земле.
            Узнать подробности
          • Из хлама в NAS и немного темы майнинга

            • Tutorial

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

            Итак мы имеем: ПК 11 летней давности в состоянии «трэш».
            Если подробнее: у блока питания вздуты все конденсаторы на выходе, у жёсткого диска взорванный полимерный конденсатор на входе питания, видеокарта тоже не стартует. По моим догадкам, по 12в линии явно пошло сильно больше 12в. При этом материнка с процессором остались живы. Чудо!
            И что можно из этого получить?
          • OpenRPNCalc: делаем бескомпромиссный калькулятор

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

              Но зачем?
            • Разработка REST-серверов на Go. Часть 3: использование веб-фреймворка Gin

              • Перевод
              Сегодня, в третьей части серии материалов, посвящённых разработке серверов на Go, мы займёмся реализацией нашего REST-сервера с использованием Gin — одного из самых популярных веб-фреймворков для Go. Вот код, который мы будем тут обсуждать.

              Перевод предыдущих частей:
              Разработка REST-серверов на Go. Часть 1: стандартная библиотека.
              Разработка REST-серверов на Go. Часть 2: применение маршрутизатора gorilla/mux


              Читать дальше →
              • +40
              • 3,9k
              • 2
            • Перемешивается ли электролит в аккумуляторе при движении автомобиля?


                Привет, Хабр! Серная кислота почти вдвое тяжелее воды, и её водные растворы, в том числе аккумуляторный электролит, склонны к расслоению: тяжёлая кислота вытесняет лёгкую воду вверх и опускается вниз. Как это влияет на работу аккумуляторной батареи, и насколько эффективно перемешивает электролит тряска при движении транспортного средства? Проведём эксперимент с видео и показаниями приборов.
                Перемешивается или нет? Узнай под катом
              • Юмористичный обзор Rust с перспективы JavaScript

                • Перевод

                В этой статье я в несколько забавном ключе документирую кое-какие размышления о своем знакомстве с Rust с позиции прожженного энтузиаста JavaScript. Здесь вас ждет импровизированная прогулка по феодам Вестероса, встреча с Ланнистерами и даже замаскированный под остров корабль — занятные аналогии, которые можно провести с работой в этом языке.
                Читать дальше →
              • Неочевидные уязвимости онлайн сервисов. Часть первая


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

                  А может быть, вы популярный хостинг? Хотите привлечь пользователей, используя около-тематический трафик — создаете онлайн сервис который смог бы заменить целые серверные утилиты — nslookup, dig, curl?! Звучит неплохо, но всё ли так хорошо с безопасностью пользователей?

                  Об интересных и неочевидных уязвимостях онлайн-сервисов поговорим под катом.
                  Узнать подробности
                  • +66
                  • 10,9k
                  • 4
                • Рояль, азот и котик: как это было

                    Если кто-то пропустил, то с 24 по 28 мая мы реализовали проект под кодовым названием «Рояль, азот и котик». И настало время рассказать о том, как мы всё организовали, с грязными подробностями, скандалами, интригами и расследованиями.

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

                    Итак, наливайте в кружку кофе, смузи или ягер, и устраивайтесь поудобнее: впереди много гик-порно, мужиков с перфораторами и сварочными аппаратами, красивых девушек и, собственно, самого рояля «Красный октябрь», который, как и полагается музыкальному инструменту Made in USSR, пережил падение и даже не расстроился (в прямом и переносном смысле). Чего не скажешь о капиталистическом ноутбуке… 

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


                    Но, обо всем по порядку
                    • +36
                    • 4,1k
                    • 7
                  • Запросить 100 серверов нельзя оптимизировать код. Ставим запятую

                      Можно выделить ряд алгоритмов, которые являются базовыми и лежат в основе практически каждой строчки программ, написанных на языках высокого уровня. Хорошо иметь под руками классический многотомный труд Дональда Кнута "The Art of Computer Programming", там детально разобраны многие базовые алгоритмы. Но прочесть и усвоить все — задача, требующая много усилий и времени, которая должна как-то быть мотивирована.


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


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


                      Является продолжением серии предыдущих публикаций.

                      Читать дальше →
                      • +46
                      • 4,2k
                      • 2

                    Самое читаемое