Pull to refresh
14
0
Виктор @Vayngarten

User

Send message

Как я перестал беспокоиться и полюбил тестирование React-компонентов

Reading time 12 min
Views 32K

Как тестировать React-компоненты? Какую библиотеку использовать? Как тестировать компоненты, которые берут данные из Redux, а не из пропсов? Как тестировать компоненты, в которых используется роутинг с помощью React-router-dom? Что делать, если в компоненте есть асинхронный код?

...Мои вопросы, когда на работе впервые попросили покрыть тестами компонент. Я, разумеется, стал гуглить тестирование React-компонентов в связке с Redux и React-router-dom, и понял, что в сети есть много ответов на вопрос, зачем нужно тестирование, но мало кто объясняет, как написать тесты. А если и объясняет, то в  общих чертах на абстрактных примерах. Мне не хватало статьи, вооружившись которой, начинающий разработчик мог бы выполнить тест на реальном продукте. Поэтому я решил написать ее сам.

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

Читать далее
Total votes 13: ↑12 and ↓1 +11
Comments 12

Создал мир из Super Mario Bros. 3 в 3D, часть 2

Reading time 7 min
Views 3.6K

Всем привет!

Это Денис Вебер и как я и обещал, выкладываю вторую часть статьи о создании мира Super Mario Brothers 3 в 3D.

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

Поехали!

Читать далее
Total votes 4: ↑4 and ↓0 +4
Comments 4

Повторил рекламу Яндекс GO в Blender за 24 часа

Reading time 8 min
Views 15K


Всем привет!

Меня зовут Денис и я занимаюсь 3д и моушн графикой. Я давно читаю Хабр, но ещё ничего не писал сюда. Пару месяцев назад я выложил на ютюб видео с созданием рекламы Яндекс GO. Сразу оговорюсь, что этот ролик никем не проплачен, мне просто захотелось повторить то, что я когда-то не умел. Я решил написать текстовую версию для Хабра, а если вам больше нравится смотреть на видео, я оставлю ссылку в конце статьи.

Когда-то давно я открыл программу для 3д моделирования и... закрыл через 10 минут, а потом не возвращался к ней несколько лет. Она показалась мне тогда чем-то нереально сложным и непонятным.

Читать далее
Total votes 52: ↑50 and ↓2 +48
Comments 14

Аудит СКЗИ и криптоключей

Reading time 15 min
Views 76K
image

С точки зрения информационной безопасности криптографические ключи являются критически важными данными. Если раньше, чтобы обокрасть компанию, злоумышленникам приходилось проникать на ее территорию, вскрывать помещения и сейфы, то теперь достаточно похитить токен с криптографическим ключом и сделать перевод через систему Интернет Клиент-Банк. Фундаментом обеспечения безопасности с помощью систем криптографической защиты информации (СКЗИ) является поддержание конфиденциальности криптографических ключей.

А как обеспечить конфиденциальность того, о существования чего вы не догадываетесь? Чтобы убрать токен с ключом в сейф, надо знать о существовании токена и сейфа. Как это не парадоксально звучит, очень мало компаний обладают представлением о точном количестве ключевых документов, которыми они пользуются. Это может происходить по целому ряду причин, например, недооценка угроз информационной безопасности, отсутствие налаженных бизнес-процессов, недостаточная квалификация персонала в вопросах безопасности и т.д. Вспоминают про данную задачу обычно уже после инцидентов, таких как например этот.

В данной статье будет описан первый шаг на пути совершенствования защиты информации с помощью криптосредств, а если точнее, то рассмотрим один из подходов к проведению аудита СКЗИ и криптоключей. Повествование будет вестись от лица специалиста по информационной безопасности, при этом будем считать, что работы проводятся с нуля.
Читать дальше →
Total votes 11: ↑9 and ↓2 +7
Comments 2

Безопасный способ обмена JWT в ASP.NET Core + SPA

Reading time 8 min
Views 41K

Вступление


Идентификация по JWT (JSON Web Token) — это довольно единообразный, согласованный механизм авторизации и аутентификации между сервером и клиентами. Преимущества JWT в том, что он позволяет нам меньше управлять состоянием и хорошо масштабируется. Неудивительно, что авторизация и аутентификация с его помощью все чаще используется в современных веб-приложениях.
Читать дальше →
Total votes 24: ↑23 and ↓1 +22
Comments 10

Как уменьшить размер приложения на C#, которое независимо от среды?

Reading time 2 min
Views 13K

В этой статье поделюсь опытом, как уменьшить размер приложения, написанное на C# и независящее от сборки, в 2 – 4 раза.

Читать далее
Total votes 20: ↑18 and ↓2 +16
Comments 26
Привет, Хабр! Я Руслан Новиков, лидер стрима «Интернет-банкинг» в ВТБ. Недавно мы запустили полностью обновлённый интернет-банк. Зачем мы начали его делать, с чем нам пришлось столкнуться, как удалось не стать похожими на всех, — об этом мы с коллегами расскажем под катом.
Читать далее
Total votes 21: ↑15 and ↓6 +9
Comments 37

Посмотрим на девочек? Или ml.net в работе

Reading time 9 min
Views 65K

К сожалению, мир машинного обучения принадлежит python.

Он давно закрепился, как рабочий язык для Data Silence, с чем Microsoft решила поспорить. Так появился ML.NET, кросс-платформенная и открытая система машинного обучения для разработчиков .NET.

В данной статье, я хочу показать, что использовать ml.net - не сложнее, чем остальные варианты, которые есть, на реально работающем примере, ссылку на который оставлю внизу. Это канал в телеграмме, который в автоматическом режиме забирает данные, классифицирует их(это и будем рассматривать) и постит. Кому интересно, добро пожаловать.

Ознакомиться
Total votes 39: ↑35 and ↓4 +31
Comments 62

UTF-8 vs UTF-16. Несколько советов программистам

Reading time 7 min
Views 45K

С появлением первых устройств цифровой передачи информации и электронно-вычислительных машин возникла задача кодирования текстовых символов с помощью последовательностей единиц и нулей. Минимальная единица представления информации – байт. Исходя их этого в 1963 году в США разработана, стандартизована, а впоследствии расширена кодовая таблица ASCII (American standard code for information interchange), использовавшая 8 битную кодировку. В первую очередь с помощью этой таблицы предполагалось кодирование цифр и букв английского языка. Первые 128 символов таблицы представлены на рис.1:

Читать далее
Total votes 8: ↑4 and ↓4 0
Comments 9

Изучаем ELK. Часть I — Установка Elasticsearch

Reading time 10 min
Views 115K

Эта статья является первой в серии статей по стеку Elasticsearch, Logstash, Kibana (ELK). Цикл статей ориентирован на тех, кто только начинает знакомится со стеком ELK, и содержит минимально необходимый набор знаний, чтобы успешно запустить свой первый кластер ELK.

В этой статье будет рассмотрена процедура установки Elasticsearch и конфигурирование кластера.

Читать далее
Total votes 12: ↑12 and ↓0 +12
Comments 20

Пересадочный узел для птиц: раскаты Волги посреди пустыни

Reading time 12 min
Views 18K
Привет! На нашей офигенной планете есть такое место — низовья Волги. Если бы не Волга, там была бы натуральная пустыня, как в Монголии. Но там есть река, и течёт она не просто так, а по дну бывшего древнего моря.

В России далеко не все знают про это место, а вот для орнитологов всего мира это натуральная Мекка. Почему? Потому что тут огромный трансферный узел для птиц, и это роль места в планетарном масштабе. Птица, она как и самолёт, требует дозаправки. Если вы думаете, что они просто летят в тёплые края, то нет — им нужно где-то останавливаться, отдыхать, есть несколько дней (или даже недель) и лететь дальше. И обычное дерево на даче не подходит: нужно, чтобы было много места и много корма, и при этом хищники не особенно злобствовали. Чтобы вы понимали масштабы узла — просто знайте, что тут за год «пересаживается» около 20 миллионов особей.

Нормальные реки разбиваются на 2-3 протока, а вот Волга разбивается сначала на сотни, а потом вообще превращается в огромную водную поверхность глубиной около метра. Представьте: взяли кусок пустыни размером в полтора Кипра (13 900 км2) и залили его водой. Получилось вот так:



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



Вокруг птиц построили астраханский биосферный заповедник. На его примере я хочу показать, как офигенно работает наука с местными жителями. А то я прошлый раз прямо восхищался, как в Намибии дружат со слонами и леопардами, а у нас под носом происходят не менее интересные вещи.
Total votes 115: ↑114 and ↓1 +113
Comments 53

Server side rendering на Vue.js

Reading time 9 min
Views 41K

Сравнительно недавно Vue.js обзавёлся полноценной поддержкой серверного рендеринга. В интернете довольно мало информации о том, как его правильно готовить, так что я решил подробно описать процесс создания необходимой среды для разработки приложения с SSR на Vue.js.


Всё, о чём пойдёт речь, реализовано в репозитории на github. Я буду часто ссылаться на его исходники и, собственно, попытаюсь объяснить, что происходит и зачем это нужно :)


В статье будут описаны достаточно общие для SSR подходы (если вам просто нужно что-то готовое для использования, то вы можете посмотреть в сторону Nuxt.js), так что вполне вероятно, что сказанное ниже можно будет частично или полностью применить и к другим фреймворкам/библиотекам типа Angular и React.

Читать дальше →
Total votes 7: ↑6 and ↓1 +5
Comments 37

История Open Source кратко: от калькулятора до миллиардных сделок

Reading time 17 min
Views 19K

Когда говорят «Open Source», обычно первые ассоциации — это Ричард Столлман и Линус Торвальдс. Но Open Source начался не с них, а зародился в 50-х, когда учёные и инженеры писали ПО и безвозмездно обменивались результатами своего труда. Мы попробовали разобраться в истории Open Source, какие события способствовали его развитию и почему без Open Source IT не был бы таким, какой он есть: программы для «Оборонного калькулятора», коммерциализация UNIX, письмо Билла Гейтса, манифест GNU, Linux и миллиардные сделки покупок Open Source компаний.

Читать далее
Total votes 23: ↑22 and ↓1 +21
Comments 13

Ленивая инициализация в C#

Reading time 4 min
Views 31K
Отложенная инициализация или «ленивая» инициализация — это способ доступа к объекту, скрывающий за собой механизм, позволяющий отложить создание этого объекта до момента первого обращения. Необходимость ленивой инициализации может возникнуть по разным причинам: начиная от желания снизить нагрузку при старте приложения и заканчивая оптимизацией редко используемого функционала. И действительно, не все функции приложения используются всегда и, тем более, сразу, потому создание объектов, реализующих их, вполне рационально отложить до лучших времён. Я хотел бы рассмотреть варианты ленивой инициализации, доступные в языке C#.
Читать дальше →
Total votes 56: ↑51 and ↓5 +46
Comments 17

Переход от монолита к микросервисам: история и практика

Reading time 17 min
Views 22K
В этой статье я расскажу о том, как проект, в котором я работаю, превращался из большого монолита в набор микросервисов.

Проект начал свою историю довольно давно, в начале 2000. Первые версии были написаны на Visual Basic 6. С течением времени стало понятно, что разработку на этом языке в будущем будет сложно поддерживать, так как IDE и сам язык развиваются слабо. В конце 2000-х было решено переходить на более перспективный C#. Новая версия писалась параллельно с доработкой старой, постепенно все больше кода было на .NET. Backend на C# изначально ориентировался на сервисную архитектуру, однако при разработке использовались общие библиотеки с логикой, да и запускались сервисы в едином процессе. Получилось приложение, которое мы называли «сервисный монолит».

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

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


Читать дальше →
Total votes 26: ↑24 and ↓2 +22
Comments 3

Микросервисы (Microservices)

Reading time 22 min
Views 677K
От переводчика: некоторые скорее всего уже читали этот титанический труд от Мартина Фаулера и его коллеги Джеймса Льюиса, но я все же решил сделать перевод этой статьи. Тренд микросервисов набирает обороты в мире enterprise разработки, и эта статья является ценнейшим источником знаний, по сути выжимкой существующего опыта работы с ними.

Термин «Microservice Architecture» получил распространение в последние несколько лет как описание способа дизайна приложений в виде набора независимо развертываемых сервисов. В то время как нет точного описания этого архитектурного стиля, существует некий общий набор характеристик: организация сервисов вокруг бизнес-потребностей, автоматическое развертывание, перенос логики от шины сообщений к приемникам (endpoints) и децентрализованный контроль над языками и данными.
Читать дальше →
Total votes 29: ↑29 and ↓0 +29
Comments 45

6 отечественных платформ для проведения онлайн-трансляций и видеоконференций

Reading time 4 min
Views 49K


Привет, Хабр! Как и раньше, я продолжаю искать специализированные сервисы для совместной работы. В прошлый раз я публиковал обзор о сервисах почты для домена, сейчас же мне понадобились отечественные площадки для проведения онлайн-трансляций.

Как оказалось, их не так и мало, причем сервисы вполне достойные. Большинство из них сразу готовы к использованию — нужно только зарегистрироваться. Давайте посмотрим, что нам предлагает рынок.
Total votes 3: ↑3 and ↓0 +3
Comments 3

Асинхронный код в Startup ASP.NET Core: 4 способа обхода GetAwaiter().GetResult()

Reading time 8 min
Views 21K
С тех пор, как в C# 5.0 завезли механизм async/await, нас постоянно во всех статьях и доках учат, что использовать асинхронный код в синхронном очень плохо. И призывают бояться как огня конструкции GetAwaiter().GetResult(). Однако есть один случай, когда сами программисты Microsoft не гнушаются этой конструкцией.


Читать дальше →
Total votes 43: ↑41 and ↓2 +39
Comments 29

Отказ от create-react-app и создание собственного шаблона для React-приложений

Reading time 9 min
Views 44K
Автор статьи, перевод которой мы сегодня публикуем, предлагает React-разработчикам отойти от использования create-react-app (CRA) и создать собственный шаблон для React-приложений. Здесь речь пойдёт о преимуществах и недостатках CRA, а так же будет предложено решение, которое способно заменить create-react-app.


Читать дальше →
Total votes 26: ↑24 and ↓2 +22
Comments 12

Структуры данных и алгоритмы, которыми я пользовался, работая в технологических компаниях

Reading time 15 min
Views 106K
Пользуетесь ли вы структурами данных и алгоритмами в повседневной работе? Я обратил внимание на то, что всё больше и больше людей считает алгоритмы чем-то таким, чем, без особой связи с реальностью, технические компании, лишь по собственной прихоти, интересуются на собеседованиях. Многие жалуются на то, что задачи на алгоритмы — это нечто из области теории, имеющей слабое отношение к настоящей работе. Такой взгляд на вещи, определённо, распространился после того, как Макс Хауэлл, автор Homebrew, опубликовал твит о том, что произошло с ним на собеседовании в Google:

Google: 90% наших инженеров пользуются программой, которую вы написали (Homebrew), но вы не можете инвертировать бинарное дерево на доске, поэтому — прощайте.

Хотя и у меня никогда не возникало нужды в инверсии бинарного дерева, я сталкивался с примерами реального использования структур данных и алгоритмов в повседневной работе, когда трудился в Skype/Microsoft, Skyscanner и Uber. Сюда входило написание кода и принятие решений, основанное на особенностях структур данных и алгоритмов. Но соответствующие знания я, по большей части, использовал для того чтобы понять то, как созданы некие системы, и то, почему они созданы именно так. Знание соответствующих концепций упрощает понимание архитектуры и реализации систем, в которых эти концепции используются.



В эту статью я включил рассказы о ситуациях, в которых структуры данных, вроде деревьев и графов, а так же различные алгоритмы, были использованы в реальных проектах. Здесь я надеюсь показать читателю то, что базовые знания структур данных и алгоритмов — это не бесполезная теория, нужная только для собеседований, а что-то такое, что, весьма вероятно, по-настоящему понадобится тому, кто работает в быстрорастущих инновационных технологических компаниях.
Читать дальше →
Total votes 71: ↑69 and ↓2 +67
Comments 53

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity