Pull to refresh
9
0
Send message

Автоматизация микрофронтендов, или как в Тинькофф тестируют библиотеки компонентов

Reading time12 min
Views6.4K

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


Но с чего стоит начать и что ждет каждого, кто вступит на путь автоматизации микрофронтенда, когда многие привыкли тестировать уже собранные из кусочков приложения?

Читать дальше →
Total votes 16: ↑15 and ↓1+16
Comments4

System Design. Общие принцип прохождения интервью по проектированию ИТ-систем

Reading time9 min
Views45K
image Привет, Хаброжители! Мы весьма рады, что вы решили изучить особенности интервью по проектированию ИТ-систем вместе с нами. Из всех технических интервью именно на этом задают самые сложные вопросы. Претенденту предлагается спроектировать архитектуру программной системы: новостной ленты, поиска Google, системы мгновенных сообщений и т. д. Задачи такого рода наводят ужас, ведь у них нет единственно верных решений. Они обычно отличаются масштабностью и расплывчатостью. Допускаются свободные и неясные формулировки без стандартного или правильного ответа.

Интервью по проектированию ИТ-систем широко практикуются в компаниях, так как навыки общения и решения задач, которые можно проверить на этом этапе, необходимы в повседневной работе программиста. Ответы претендента оцениваются с учетом того, как он анализирует расплывчатую задачу и какие шаги он предпринимает для ее решения. При этом во внимание принимается то, как он объясняет свои идеи, обсуждает их с другими, оценивает и оптимизирует систему.
Читать дальше →
Total votes 12: ↑11 and ↓1+12
Comments16

Тестирование Node.js-проектов. Часть 1. Анатомия тестов и типы тестов

Reading time27 min
Views39K
Автор материала, первую часть перевода которого мы сегодня публикуем, говорит, что он, как независимый консультант по Node.js, каждый год анализирует более 10 проектов. Его клиенты, что вполне оправданно, просят его обратить особое внимание на тестирование. Несколько месяцев назад он начал делать заметки, касающиеся ценных приёмов тестирования и встречающихся ему ошибок. В результате получился материал, содержащий три десятка рекомендаций по тестированию.

image

В частности, речь здесь пойдёт о выборе подходящих в конкретной ситуации типов тестов, об их правильном оформлении, об оценке их эффективности, и о том, где именно в CI/CD-цепочках нужно их размещать. Некоторые из приведённых здесь примеров проиллюстрированы с использованием Jest, некоторые — с использованием Mocha. Этот материал, в основном ориентирован не на инструменты, а на методологии тестирования.

Тестирование Node.js-проектов. Часть 2. Оценка эффективности тестов, непрерывная интеграция и анализ качества кода
Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments0

Частые ошибки программирования на Bash

Reading time9 min
Views96K
Качество скриптов, используемых для автоматизации и оптимизации работы системы, является залогом ее стабильности и долголетия, а также сохраняет время и нервы администратора этой системы. Несмотря на кажущуюся примитивность bash как языка программирования, он полон подводных камней и хитрых течений, способных значительно подпортить настроение как разработчику, так и администратору.

Большинство имеющихся руководств посвящено тому, как надо писать. Я же расскажу о том, как писать НЕ надо :-)

Данный текст является вольным переводом вики-страницы «Bash pitfalls» по состоянию на 13 декабря 2008 года. В силу викиобразности исходника, этот перевод может отличаться от оригинала. Поскольку объем текста слишком велик для публикации целиком, он будет публиковаться частями.

Поехали!
Total votes 79: ↑76 and ↓3+73
Comments25

Локальный сервер для разработки (dns, nginx & git)

Reading time5 min
Views25K

В итоге мы получим домашний сервер с фейковым доменом, на поддомене которого мы развернём GitLab и настроим работу gitlab-runner'а для деплоя наших веб-проектов.

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

Читать далее
Total votes 15: ↑14 and ↓1+13
Comments14

Составляем DNS-запрос вручную

Reading time7 min
Views53K
Об авторе. Джеймс Рутли — бэкенд-разработчик в компании Monzo.

В этой статье мы изучим двочиный формат сообщений Domain Name Service (DNS) и напишем вручную одно сообщение. Это больше, чем вам нужно для использования DNS, но я подумал, что для развлечения и в образовательных целях интересно посмотреть, что находится под капотом.

Мы узнаем, как:

  • Написать запросы DNS в двоичном формате
  • Отправить сообщение в теле датаграммы UDP с помощью Python
  • Прочитать ответ от DNS-сервера

Писать в двоичном формате кажется сложным, но в реальности я обнаружил, что это вполне доступно. Документация DNS хорошо написана и понятна, а писать мы будем маленькое сообщение — всего 29 байт.
Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments8

Темные Паттерны — это сложно. Эффект «Большой колы»

Level of difficultyEasy
Reading time3 min
Views33K

Теперь, заходя в одну из сетей общественного питания, я беру кофе 200 миллилитров, а не 300. И каждый раз улыбаюсь себе с упреком, что «гуру» интерфейсных манипуляций понадобилось полгода, чтобы увидеть этот паттерн. Теперь этот пример украшает мои лекции, в основе которых два постулата: дизайн — это про деньги и хороший дизайн возможен только с фундаментальной научной базой. 

Читать далее
Total votes 56: ↑48 and ↓8+53
Comments93

Все web-дизайнеры привирают о свои размерах. Или проблема height'ов

Level of difficultyEasy
Reading time4 min
Views3.7K

Третьего дня, сдавай дизайны мобильного приложения. «А вы помните, что есть статус бар и чёлка?» — осведомилась менеджер подрядчика. «Юная леди, я с 2006 и разрешения 1024x768 помню, что есть бары операционных систем, окно браузера и бары ввода адреса и управления в нем» — вежливо проинформировал я.

Читать далее
Total votes 4: ↑3 and ↓1+3
Comments2

Базовые принципы UX для frontend-разработчика

Level of difficultyEasy
Reading time9 min
Views16K

Знаете, однажды в какой-то статье я наткнулся на интересное высказывание, которое гласило, что фронтенд-разработчик может стать последним рубежом, который может предотвратить создание «неюзабельного» UI. И это чертовски меткое и выразительное высказывание, которое отчасти и привело меня к созданию этой статьи про базовые принципы UX, которые не помешало бы иметь на вооружении каждому фронтенд-разработчику.

Дизайн превью: Марина Четвертакова

Читать далее
Total votes 7: ↑6 and ↓1+6
Comments6

Иван Тулуп: асинхронщина в JS под капотом

Reading time24 min
Views54K
А вы знакомы с Иваном Тулупом? Скорее всего да, просто вы еще не знаете, что это за человек, и что о состоянии его сердечно-сосудистой системы нужно очень заботиться.

Об этом и о том, как работает асинхронщина в JS под капотом, как Event Loop работает в браузерах и в Node.js, есть ли какие-то различия и, может быть, похожие вещи рассказал Михаил Башуров (SaitoNakamura) в своем докладе на РИТ++. С удовольствием делимся с вами расшифровкой этого познавательного выступления.



О спикере: Михаил Башуров — fullstack веб-разработчик на JS и .NET из Luxoft. Любит красивый UI, зеленые тесты, транспиляцию, компиляцию, технику compiler allowing и улучшать dev experience.

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

Total votes 40: ↑33 and ↓7+26
Comments4

Цвет в дизайне

Reading time4 min
Views73K
Нет надобности расписывать, как важен цвет в дизайне. Удачное цветовое решение — это уже половина успеха проекта. В помощь развивающимся дизайнерам — немного теории цветового круга и подборка ссылок на полезные ресурсы.



Базовый цветовой круг пригодится в выборе наиболее подходящего сочетания цвета (или поможет гармонично совместить между собой определенные оттенки). Он изображает базовые и известные еще со школы правила смешивания основных цветов: красного, синего и желтого. Если смешать красный и желтый — получится оранжевый, синий и желтый дадут зеленый, а красный с синим — фиолетовый. Оранжевый, зеленый и фиолетовый — это вторичные цвета. Третичные цвета, как красно-фиолетовый и фиолетово-синий, получены от смешивания основных с вторичными.

Читать дальше →
Total votes 31: ↑25 and ↓6+19
Comments10

Работа с «Ягодой» для новичков: подключение пяти микроконтроллеров ESP32 к микрокомпьютеру Raspberry Pi 4 Model B по SPI

Level of difficultyMedium
Reading time7 min
Views5.8K

Данная статья создана с ознакомительной целью и служит рекомендацией по работе с Raspberry Pi 4 Model B ("Ягода"), WEMOS WiFi & Bluetooth ESP32 ("ESP32") при настройки Serial Peripheral Interface (SPI).

Читать далее
Total votes 6: ↑4 and ↓2+2
Comments4

Собеседование в руках маньяков

Level of difficultyEasy
Reading time7 min
Views63K

Добрый день меня зовут Александр и я токсичный душнила с двадцатилетним стажем в айти, готовый откусить вам кадык, как только вы расслабьтесь. Мои характеристики делают меня хорошим техническим собеседующим, поэтому добро пожаловать на моё провальное собеседование. Запомните, вы его никогда не пройдете. А знаете почему?

Что не так с собеседованиями
Total votes 69: ↑57 and ↓12+60
Comments117

Bash-скрипты: начало

Reading time11 min
Views1.8M
Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

Сегодня поговорим о bash-скриптах. Это — сценарии командной строки, написанные для оболочки bash. Существуют и другие оболочки, например — zsh, tcsh, ksh, но мы сосредоточимся на bash. Этот материал предназначен для всех желающих, единственное условие — умение работать в командной строке Linux.


Читать дальше →
Total votes 69: ↑61 and ↓8+53
Comments123

Книга «Прикладные структуры данных и алгоритмы. Прокачиваем навыки»

Reading time12 min
Views12K
image Привет, Хаброжители!

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

Книга полна реальных прикладных примеров на популярных языках программирования (Python, JavaScript и Ruby), которые помогут освоить структуры данных и алгоритмы и начать применять их в повседневной работе. Вы даже найдете слово, которое может существенно ускорить ваш код. Практикуйте новые навыки, выполняя упражнения и изучая подробные решения, которые приводятся в книге.

Начните использовать эти методы уже сейчас, чтобы сделать свой код более производительным и масштабируемым.
Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments6

Структура и интерпретация компьютерных программ

Reading time1 min
Views12K
image
Перевод второй лекции Джеральда Сассмана
«Процедуры и процессы: подстановочная модель.»

Эти лекции были прочитаны 25 лет назад сотрудникам HP, но на самом деле это тот легендарный вводный курс 6.001, который читался в MIT в 1980 году. С тех пор эти лекции sine qua none во всем мире программирования. Хотелось бы чтобы каждый программист посмотрел этот курс, ничего не учит абстрактному мышлению лучше, чем SICP.
Приятного просмотра на ночь глядя.
Читать дальше →
Total votes 75: ↑75 and ↓0+75
Comments37

Как запретить разработчику делать не то что нужно?

Level of difficultyMedium
Reading time8 min
Views9.5K

React основан на компонентом подходе. Когда создается компонент, предполагается, что его будут использовать по назначению. Если в проекте есть таблицы значит надо использовать <Table /> (к примеру), формы - значит <Form />. Естественно названия носят абстрактный характер, в каждом проекте они могут иметь разные названия, но суть их одна.

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

Меня зовут Дмитрий Чернов - старший инженер-программист в компании Nord Clan. И мы начинаем.

Читать далее
Total votes 13: ↑8 and ↓5+6
Comments32

Управление версиями Node.js и NPM с помощью NVM

Reading time5 min
Views269K
Наш прошлый перевод про новые функции 15-й версии Node.js был очень хорошо принят читателями «Хабра», поэтому сегодня мы решили продолжить тему и рассказать, как настроить NVM с версией Node.js 15 и NPM 7.

Версия Node.js 15 была выпущена 20 октября 2020 года. Она поставляется с npm 7 и множеством новых функций. Вы уже успели опробовать новую версию?

Но подождите минутку! Node.js 15 и npm 7 содержат критические изменения. Не повредит ли тогда обновление существующим проектам?

Теоретически может повредить!
Читать дальше →
Total votes 6: ↑3 and ↓3+2
Comments3

Проектирование процессора Logisim

Reading time4 min
Views67K
Часть I
Часть II
Часть III
Часть IV
Часть V

Одна из глав книги «Код» Чарльза Петцольда посвящена проектированию блоков CPU и в начале главы описывается устройство, позволяющие суммировать наборы чисел, хранящихся в памяти. Спроектируем похожую схему в Logisim. Возьмем набор восьмиразрядных чисел и подключим его к мультиплексору, переход от одного числа к другому будем осуществлять с помощью счетчика, подключенного к выбирающему входу мультиплексора, а к выходу мультиплексора подключим сумматор и аккумулятор. В качестве тактового генератора будем использовать кнопку. Данные будут загружаться в аккумулятор при отпускании кнопки. Это осуществляется с помощью элемента НЕ, подключенного к кнопке. Про реализацию этих функциональных блоков в виде отдельных микросхем далее в статье.

Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments7

Создаем свой Managed K8S за 5 минут на старом железе

Level of difficultyEasy
Reading time6 min
Views12K
image

Привет! Все больше облачных провайдеров по всему миру предлагают свои услуги по управляемому Kubernetes кластеру в их облаках. Стоимость таких сервисов практически всегда является ключевым фактором при выборе вендора, а молодые компании с отрицательной прибылью но очень большими амбициями вовсе вынуждены отдавать последние деньги за кластер, который мог бы заменить обычный Shared-хостинг за 150 рублей в месяц. Давайте разберемся.
Читать дальше →
Total votes 24: ↑22 and ↓2+26
Comments8
1

Information

Rating
Does not participate
Registered
Activity

Specialization

Frontend Developer
Middle
Git
React
Vue.js
TypeScript
Node.js
MobX
Redux
Jest
Cypress