В период с 199x по 201x развелось очень много программистов-микроконтроллеров, которые никогда не представляли свою работу без IDE (IAR, KEIL, Code Composer Studio, AtilocTrueStudio).
В этом тексте я написал про недостатки работы в IDE и альтернативный способ сборки и масштабирования кодовой базы. Про MakeFile(ы).
Все потоки
Новости
Go. О покрытии кода интеграционными тестами и флаге -cover
Инструменты покрытия кода помогают понять, какая часть кодовой базы выполняется (или, как еще говорят, покрывается) при выполнении данного набора тестов. Какое-то время Go поддерживал измерение покрытия кода на уровне пакета, введенное в Go 1.2, она включалась флагом команды go test -cover
.
Это хорошо работает в большинстве случаев, но при разработке больших приложений обнаруживаются недостатки. Для больших приложений разработчики часто пишут интеграционные тесты, которые проверяют поведение всей программы (в дополнение к модульным тестам на уровне пакета).
В отличие от тестирования пакетов по отдельности, этот тип тестирования обычно включает создание полноценного двоичного файла приложения, его запуск на наборе репрезентативных входных данных (или под рабочей нагрузкой, если это сервер), чтобы убедиться, что все пакеты компонентов корректно работают вместе.
Двоичные файлы интеграционных тестов создаются командой go build
, а не go test
, поэтому инструментарий Go до сих пор не предоставлял простого способа сбора профиля покрытия этих тестов.
С версии Go 1.20 программы с инструментированием покрытия можно создавать командой go build -cover
, а затем, чтобы расширить область покрытия, передавать эти инструментированные двоичные файлы в интеграционный тест.
Ниже приводим пример того, как работают эти новые функции, расскажем о вариантах применения и рабочем процессе сбора профилей покрытия из интеграционных тестов.
Дайджест научпоп-новостей за неделю, о которых мы ничего не писали
А сегодня я снова пройдусь по новостям уходящей недели, которые нашей редакции стоило бы осветить подробнее, но не получилось, потому что не судьба.
Разработан космический цемент, который в два раза прочнее обычного
![](https://webcf.waybackmachine.org/web/20230317232538im_/https://habrastorage.org/getpro/habr/post_images/4c6/923/c48/4c6923c48a862fdabced6a1d945fcd02.jpg)
Учёные из Манчестера создали новый материал, получивший название StarCrete. Он изготавливается из космической пыли, картофельного крахмала и соли, и может быть использован для строительства домов на Марсе.
Истории
Как мы продавали хостинг в Европе
![](https://webcf.waybackmachine.org/web/20230317232538im_/https://habrastorage.org/getpro/habr/upload_files/50a/3de/b5e/50a3deb5ec746093b3ff082f41de902a.jpeg)
Довелось мне работать маркетологом в хостинговой компании на западном рынке. Все нюансы не поведаю, да и не все знаю, наверняка были моменты, скрытые от сотрудников, а вот как был построен бизнес и об особенностях менталитета некоторых европейских стран – расскажу.
В Европе принятие решения происходит несколько по-другому, нежели в России. Это во многом связано, во-первых, с особенностью мышления, с тем, что ценности у нас отличаются или имеют разную степень влияния на принятие решения, во-вторых, с уровнем развития экономики в целом.
Можно написать миллион статей о разнице мировосприятия европейца и русского, что они дескать открытые на людях, улыбаются, мы же внешне хмурные, зато душа у нас широкая, что они ценят не напыщенную красоту, которой можно только кичиться, а их интересует функциональность прежде всего, а уж если говорить о людях, то для них ценнее внутренняя красота. Поэтому если продавать хостинг, то уж точно не нашими методами.
Рынок хостинга в этом проклятом забугорье, как говорил мой преподаватель по программированию, давно распределен, а потом еще раз перераспределен. Как уже много раз писали, и здесь в том числе, соваться туда – дело пропащее, 90%, что прогорите, некоторые пробовали и подробно описали свой опыт. Но мы не искали простых путей и не боялись. Вооружившись знаниями и отвагой, присущими лишь глупцам, открыли в некоторых странах офисы, посадили туда местных продавцов, со знанием языка. Это было очень важно.
Гибридная методология ведения проектов WaterScrum как мы это настроили
![](https://webcf.waybackmachine.org/web/20230317232538im_/https://habrastorage.org/getpro/habr/upload_files/a6c/3f3/a6f/a6c3f3a6f4b8aeaac15f982ed173438c.png)
Всем привет. Меня зовут Геннадий Гребеник и мы с командой трансформации Фора-Банка столкнулись с задачей сочетания в своей работе классических и гибких методологий управления проектами. В ходе решения данной задачи командой были разработаны подходы к гибридной модели ведения проектов, когда управление сверху остается в классическом, каскадном планировании, а команды снизу реализуют данные проекты с применением гибких подходов управления. В виду того, что многие организации в своей работе сталкиваются с необходимостью сочетать в своей работе классические и гибкие методологии управления проектами, хотим поделиться своим опытом.
Модель обнаружения смс-спама: создаем и тестируем
![](https://webcf.waybackmachine.org/web/20230317232538im_/https://habrastorage.org/getpro/habr/upload_files/08c/ec2/917/08cec29176b45b8c9995fc30e5e617c1.png)
Привет Хабр! В прошлой статье мы векторизировали данные, теперь нам осталось написать модель и протестировать её
Мы построим модель для обнаружения спам-сообщений с использованием алгоритма случайного леса. Случайный лес — это очень мощный алгоритм, который очень широко используется. Мы не будем углубляться в математику алгоритма случайного леса, а воспользуемся его реализацией в библиотеке Scikit-Learn.
Strawberry GraphQL и FastAPI. Так что получается, Pydantic всё-таки не нужен?
Основы python в бизнесе
Господа, приветствую! Решил описать результаты изучения абсолютно бесплатных курсов и статей по языку программирования python, любые комментарии с одобрениями/осуждениями/пожеланиями приветствуются.
И так, дело было вечером - делать было нечего.... Бесплатный(пробный) курс на Я.Практикуме подтолкнул зафиксировать полученные знания хоть как-нибудь, так родилась идея создания Калькулятора Лазерной Резки(далее КЛР), аплодисменты в студию!! Видео на ютубе "Учим python за 7 часов! Уроки Python Полный курс обучения программированию на python с нуля" канала Python Hub Studio придало уверенность.
Как запросто потерять данные в таблице Teradata
![](https://webcf.waybackmachine.org/web/20230317232538im_/https://habrastorage.org/getpro/habr/upload_files/ec5/c6a/dcb/ec5c6adcb9920f519aba3bea201d5ce3.png)
Доброго дня всем заинтересованным в теме. Пару дней назад столкнулся я с одной настолько неочевидной и вместе с тем опасной особенностью выполнения SQL в Teradata, что не мог не поделиться. Хотя допускаю, что post mortem поведение ее (Терадаты) выглядит по-своему логичным, но все же для тех, кто не специализируется конкретно на Teradata и при этом много работает с данными в разных типах хранилищ, подобное поведение является первоклассной расческой ловушкой, и мне пока не удалось найти другую БД, в которой она есть.
Постараюсь кратко.
Представим, что у нас есть огромная таблица с критичными данными:
Безопасность ASP.NET
![](https://webcf.waybackmachine.org/web/20230317232538im_/https://habrastorage.org/getpro/habr/upload_files/784/cee/3e9/784cee3e9c2c905f9467580c31da3a99.png)
Веб платформа ASP.NET за последние десятилетия получила достаточно широкое распространение. С ее помощью разрабатывают веб-сайты и веб-приложения с помощью таких средств как HTML, CSS и JavaScript. Также с помощью ASP.NET можно создавать веб-API и веб сокеты.
Одной из основных проблем при разработке в контексте безопасности является невозможность функциональной проверки у того, или иного приложения. То есть, при разработке приложения мы не можем просто подключить какие-то библиотеки, сделать какие-то настройки при сборке проекта, и затем сказать, что все, наше приложение защищено и можно передавать его в продакшен. Так не бывает. На практике возможны два основных сценария: худший когда мы узнаем о проблемах с безопасностью нашего приложения из СМИ и интернета, например, когда приложение взломали или, когда в сеть утекли данные, обрабатываемые нашим приложением (да, обычно эти утечки организуют бывшие или действующие сотрудники, и это не совсем вина приложения, но, как говориться осадочек все-равно остается). Более мягким является сценарий, когда мы узнаем об уязвимостях в нашем приложении в результате пентеста или когда сознательные исследователи сами сообщают разработчикам о найденных уязвимостях, например в рамках баг баунти. В таком случае нас скорее всего еще не скомпрометировали и репутационного ущерба для компании разработчика не будет. Ну а срочные баг фиксы выпускают все.
И к чему было все это вступление? ASP.NET является достаточно сложным решением, а сложность это всегда враг безопасности. С одной стороны вроде-бы злоумышленнику трудно разобраться в сложном решении, но с другой и защищать сложное решение тоже весьма непросто. И практика показывает, что очень часто именно злоумышленники быстрее разбираются в сложных системах и оперативно находят уязвимые места.
Как кражи и вымогательство западных технологий обеспечили японское экономическое чудо
![](https://webcf.waybackmachine.org/web/20230317232538im_/https://habrastorage.org/getpro/habr/upload_files/35b/160/e79/35b160e79e78bfffa08b60191c3ddfbf.png)
Молниеносное развитие Японии после Второй Мировой войны — одно из главных чудес мировой экономики. Всего за пару десятилетий страна, которая потеряла почти все и лежала в руинах, смогла построить мощнейшую точную промышленность и превратиться в главного мирового производителя электроники. Но у этого успеха есть и темная сторона.
Японским компаниям нередко было некогда с нуля разрабатывать новые технологии. Поэтому приходилось добывать их всеми правдами и неправдами — покупать, вымогать, шантажировать и воровать. И в этом им активно помогало правительство, которое порой курировало однозначно незаконные действия. Рассказываем, как нарушения прав интеллектуальной собственности помогли воплотить в жизнь величайшее экономическое чудо нашей эпохи.
3 правила в веб-дизайне, которые упрощают жизнь разработчикам
Браузерные инструменты: как и зачем их приручать
Сложно найти тестировщика, который не знал бы о DevTools, но еще сложнее найти человека, который знает о них всё. Помимо знакомой всем базовой функциональности, есть много полезных и удобных фич. А если не ограничиваться Хромом, то их количество запросто можно удвоить.
Осенью на нашей конференции по тестированию Heisenbug Татьяна Дроздова рассказала о возможностях DevTools в Chrome, Firefox и Safari, и доклад очень понравился участникам. Сейчас мы готовим следующий Heisenbug, где Татьяна выступит с новым докладом о браузерных расширениях — а в ожидании этой конференции сделали для Хабра текстовую версию доклада с предыдущей. Далее текст идёт от лица Татьяны.
Кросс-компилируем Rust приложения при помощи Nix
На текущем месте работы столкнулся с необходимости собирать Docker образы для сервисов написанных на Rust. Обычно в таком случае пишется Dockerfile, который внутри докера просто собирает контейнер и все. Но все оказалось не так однозначно: такая схема довольно неплохо работает, когда у тебя есть x86_64 Linux машина, но любой шаг в сторону и начинаются большие проблемы.
Все довольно неприятно уже на Intel MacBook машинах, докер поедает довольно много ресурсов с хоста, а еще возникают всякие странные приколы с монтированием файловой системы и правами доступа. Но настоящий ужас начинается на Макбуках с Apple Silicon процессорами, где обычной виртуализацией уже не обойдешься и можно часами ждать сборки простого сервиса через qemu. Можно решать эту проблему через сборку контейнеров в CI, но когда разработчиков много, а им надо часто что-то пересобирать, то там образовывалась очередь.
Поэтому я начал искать пути, а каким же образом можно избежать в общем-то не нужной виртуализации и в результате нашел довольно успешный и универсальный подход, которым и хочу теперь поделиться.
[Личный опыт] Плохая колбаса и бассейн на крыше: как системный инженер живёт и работает в ОАЭ
![](https://webcf.waybackmachine.org/web/20230317232538im_/https://habrastorage.org/getpro/habr/upload_files/e1b/9df/221/e1b9df221da717b7ae8d1b930afdc7ec.jpeg)
Наш спикер и экс-CTO Слёрма Марсель Ибраев почти год живёт и работает системным инженером в Абу-Даби. Мы поговорили с Марселем, и он поделился, как прошёл собеседование на иностранном языке, хотя его английский и сейчас далёк от идеала, а до переезда в ОАЭ был ещё хуже.
А ещё рассказал про квартиру в ЖК с бассейном на крыше и назвал зарплату, на которую не стоит соглашаться айтишнику, планирующему жить в Эмиратах.
Понять комбинаторные селекторы и селекторы потомков в CSS
![](https://webcf.waybackmachine.org/web/20230317232538im_/https://habrastorage.org/getpro/habr/upload_files/231/399/dce/231399dce9a8e8552e40b43ad6a0d1e2.jpg)
Периодически я сталкиваюсь с проблемой - не хочу ставить лишний класс элементу внутри различных кнопок, ссылок и label-ов. Зачастую это текст, который нужно подсветить или галочка чекбокса или маленькая иконка.
В решении этой проблемы мне обычно помогают необычные операторы CSS >
+
и ~
Тестируйте API, как професионал. Часть 2: Как автоматизировать API с помощью 'cypress-plugin-api'
![](https://webcf.waybackmachine.org/web/20230317232538im_/https://habrastorage.org/getpro/habr/upload_files/d7d/fe5/084/d7dfe508432ddbadd565b10fb386545e.png)
cypress-plugin-api, написанный амбассадором Cypress Филипом Хриком (Filip Hric), представляет собой плагин для эффективного тестирования API. Представьте себе Postman, но в Cypress; этот плагин выводит на печать всю информацию о вызове API в пользовательском интерфейсе приложения Cypress, обеспечивая несколько преимуществ:
1) В cypress-plugin-api команда cy.api() работает также как cy.request(). Основное отличие заключается в том, что помимо вызова вашего API, cy.api() также печатает информацию о вызове API в вашем Cypress Test Runner.
2) Всю эту информацию можно просмотреть в виде time-travel (реверсивная отладка) snapshots.
3) Также формируется простая таблица для просмотра файлов cookie, сворачивания объектов данных JSON и массива, а также цветового кодирования методов в представлении пользовательского интерфейса и на таймлайне (временной шкале)
Как компании подготовиться к модуляризации iOS приложений
![](https://webcf.waybackmachine.org/web/20230317232538im_/https://habrastorage.org/getpro/habr/upload_files/189/a65/fb1/189a65fb11b790b3326dfc57f10fde7b.jpg)
В активно развивающихся приложениях порой сложно обеспечивать масштабируемость, удобочитаемость и качество кода. Это частая ситуация, которая со временем может усложнить поддержку, выявление проблем и их устранение. Избежать подобных проблем помогает модуляризация приложений — подход, при котором кодовая база делится на небольшие специализированные, готовые к повторному использованию модули.
Меня зовут Кирилл Смирнов. Я технический лидер iOS команды в СберЗдоровье. Последний год наша команда плотно занималась улучшением инструментов разработки, в том числе модуляризацией. В этом материале я поделюсь опытом и рекомендациями по подготовке бизнеса (заказчиков, исполнителей, смежников и др.) к модуляризации iOS приложений.
Тюрьма, состоящая из одиноких мужчин
![](https://webcf.waybackmachine.org/web/20230317232538im_/https://habrastorage.org/getpro/habr/upload_files/7fe/bbc/787/7febbc78748466345961fa2a9c56d597.jpg)
Давайте поговорим об одиноких мужчинах, оставшихся, по тем или иным причинам, без женского внимания – об одиночках. На мой взгляд, это более подходящее слово чем инцел – в первую очередь потому, что не связанно с негативными коннотациями, сопутствующими последнему термину.
Сразу предупреждаю – это очень взрывоопасная тема. Несмотря на взрывное развитие социума, связанные с сексом вопросы до сих пор считаются табуированным, что приводит к появлению множества нелепых стереотипов. Этой статьёй я постараюсь развенчать некоторые из них. Так же я постараюсь дать некоторые практические советы – основанные на личном опыте. Всю свою молодость я был классическим, эталонным одиночкой. И только к тридцати годам сумел измениться, вырвавшись из замкнутого круга.
Для обсуждения мужского одиночества, я пригласил в себе в студию Никсель – яркую представительницу феминистического движения. Но не ту, настоящую Никсель, известную своей защитой прав женщин и сексуальных меньшинств, а Никсель вымышленную, персонажа собственного фантастического романа «Записки I-тетрамино»