Pull to refresh
0
0
Daniil @Suffix0

Backend программист

Send message

Fluent Assertions — инструмент автоматизированного тестирования

Reading time4 min
Views7.4K

Проверки в автотестах являются обязательным компонентом, так как основная задача любого теста сравнить ожидаемый результат с фактическим. Меня зовут Вадим, я специалист по тестированию, и в этой статье я хочу уделить внимание одной из частей любого автотеста – Assert. Казалось бы, какие трудности могут возникнуть с этим, на первый взгляд, простым компонентом любого автотеста? На одном из своих проектов я столкнулся с большим количеством автотестов, проблемой которых как раз и были неверно написанные проверки. Хочу рассказать о причинах возникновения этих трудностей и поделиться путём решения проблемы, который мне удалось пройти вместе с командой. 

Читать далее
Total votes 7: ↑5 and ↓2+4
Comments5

Gopher, конкурент WWW из 90-х, который пока не стоит списывать со счетов

Reading time7 min
Views17K


В этом году мы отмечали 30-летие со дня создания всемирной паутины. Естественно, такая дата не могла обойтись безо всяких гиковских воспоминаний и нытья по тем временам, когда жизнь была проще. За три десятилетия Веб развился из многообещающего нишевого эксперимента в незаменимый компонент всемирного общения. Несмотря на все его недостатки, Веб стал необходимостью для миллиардов людей по всему миру, и в ближайшее время он никуда не денется.

А пока популярные СМИ пели хвалу невероятным успехам Веба, ещё одна технология передачи данных через интернет отмечала своё 30-летие – Gopher. Популярность этого забытого тяжеловеса эпохи раннего интернета была на пике в конце 90-х, а ныне почти полностью сошла на нет. К счастью, как и его отважный тёзка, Gopher продолжает прокладывать себе путь по интернету и в XXI веке при поддержке преданного сообщества, а количество серверов, поддерживающих этот протокол, постепенно растёт.
Читать дальше →
Total votes 23: ↑22 and ↓1+29
Comments6

Фрилансеры vs агентство: как не угробить SEO и сразу сделать все правильно?

Level of difficultyMedium
Reading time7 min
Views1.2K

Тренд последних лет ‒ обращение к SEO-специалистам, которые работают на фрилансе, а не в агентстве. Но так ли это безопасно, и не придется ли платить дважды? Ко мне в агентство обратился клиент, который бежал со всех ног от такого SEO-фрилансера. Давайте объясню подробнее…

Читать далее
Total votes 8: ↑1 and ↓7-5
Comments5

Как не наступать на грабли в Go

Reading time10 min
Views95K

Этот пост является версией моей же англоязычной статьи "How to avoid gotchas in Go", но слово gotcha не переводится на русский, поэтому я буду использовать это слово как без перевода, так и немного непрямой вариант — "наступать на грабли".


Gotcha — корректная конструкция системы, программы или языка программирования, которая работает, как описано, но, при этом, контринтуитивна и является причиной ошибок, поскольку её легко использовать неверно.

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


Но один вопрос меня мучал долгое время — почему я сам никогда не делал этих ошибок? Серьезно, самые популярные из них, вроде путаницы с nil-интерфейсом или непонятного результата при append()-е слайса — в моей практике никогда не были проблемой. Каким-то образом мне повезло обойти эти подводные камни с первых дней своей работы с Go. Что же мне помогло?


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

Читать дальше →
Total votes 46: ↑38 and ↓8+30
Comments9

Путь инженера: как эффективно пройти его от джуна до сеньора

Reading time10 min
Views7.4K

Мы все пришли в IT разными путями. Кто-то шёл по этому пути с самого детства, другие начали свой путь с выбора института и computer science в качестве основной дисциплины. Есть и те, кто свернул на эту дорогу, уже имея другую профессию и опыт работы совсем в другой сфере.

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

Читать далее
Total votes 9: ↑6 and ↓3+4
Comments5

Как я перестал тревожиться из-за читабельности и… все

Level of difficultyEasy
Reading time12 min
Views32K

Всем привет.

Давно читаю хабр, давно и регулярно читаю статьи про правильное программирование.

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

TLDR: забейте на читабельность и выразительность. Стремитесь сделать ваш код хорошо работающим..

Идем забивать
Total votes 113: ↑52 and ↓61+1
Comments364

Код в картинках: визуализация кода

Level of difficultyEasy
Reading time3 min
Views9.9K

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

На связи Федорова Валерия, участница профессионального сообщества NTA.

Каждый разработчик был, или может оказаться, в ситуации, когда не понимаешь, как работает код, который был написан пару дней (недель, месяцев, лет — нужное подчеркнуть) назад. Или в ещё более сложной ситуации — нужно «отдебажить» чужой код, без возможности привлечь автора. Здесь может пригодиться один из инструментов статистического анализа кода — Control Flow Graph или CFG.

В этой публикации рассмотрю понятие CFG, а также python библиотеку Staticfg, обеспечивающую простой интерфейс для создания CFG программ на языке Python.

Больше о CFG и Staticfg
Total votes 2: ↑1 and ↓10
Comments17

Какого черта мы нанимаем, или осмысленность собеседований в IT

Level of difficultyEasy
Reading time5 min
Views29K

Привет, Хабр, меня зовут Герман, и я лид разработки, вышедший из фронтов. Сегодня я хочу обсудить тему культуры собеседований, а точнее, тот хаос что творится на этом поприще. А заодно — узнать, что об этом думает комьюнити in situ.

Читать далее
Total votes 40: ↑37 and ↓3+41
Comments96

Принципы для разработки: KISS, DRY, YAGNI, BDUF, SOLID, APO и бритва Оккама

Reading time8 min
Views287K
image

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

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

Последовательное применение этих принципов упростит ваш переход от миддла к сеньору. Вы можете обнаружить, что некоторые (вероятно) вы применяете интуитивно.

Принципов много. Мы остановимся на семи самых важных. Их использование поможет вам в развитии и позволит стать лучшим программистом.

1. YAGNI

You Aren’t Gonna Need It / Вам это не понадобится

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

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

Может наступить день, когда они снова понадобятся – тогда вы сможете воспользоваться git-репозиторием, чтобы воскресить их из мертвых.
Читать дальше →
Total votes 15: ↑12 and ↓3+16
Comments10

Корректный ASP.NET Core

Reading time14 min
Views77K

Корректный ASP.NET Core


Специально для любителей книг из серии "С++ за 24 часа" решил написать статью про ASP.NET Core.


Если вы раньше не разрабатывали под .NET или под какую-то аналогичную платформу, то смысла заходить под кат для вас нет. А вот если вам интересно узнать что такое IoC, DI, DIP, Interseptors, Middleware, Filters (то есть все то, чем отличается Core от классического .NET), то вам определенно есть смысл нажать на "Читать дальше", так как заниматься разработкой без понимания всего этого явно не корректно.

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

RSync на стероидах с поддержкой Windows

Level of difficultyMedium
Reading time5 min
Views37K


На Хабре периодически рассказывают о новых инструментах для синхронизации данных. Это интересная тема. Такие программы используются:

  • для синхронизации файлов на разных устройствах,
  • дедупликации,
  • резервного копирования,
  • сжатия.

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

Кроме того, инструменты синхронизации интересны с алгоритмической точки зрения. Любопытно, как люди умудряются оптимизировать базовые алгоритмы типа rsync, которые вроде бы работают идеально. Но нет, всегда можно придумать что-то получше.
Читать дальше →
Total votes 62: ↑62 and ↓0+62
Comments30

IoC, DI, IoC-контейнер — Просто о простом

Reading time4 min
Views462K
Думаю сейчас слова IoC, DI, IoC-контейнер, как минимум у многих на слуху. Одни этим активно пользуются, другие пытаются понять, что же это за модные веяния.

На данный момент, на эту тему уже довольно сказано, написано, в том числе и на хабре, но как раз из-за обилия информации сложно найти действительно полезный контент. Кроме того, данные понятия часто смешивают и/или путают. Проанализировав множества материалов я решил изложить вам свое видение предмета.
Читать дальше →
Total votes 41: ↑31 and ↓10+21
Comments28

5 млн долларов за строчку кода: подробный разбор сбоя сервисов Datadog

Level of difficultyMedium
Reading time24 min
Views13K

В марте сервисы Datadog не работали более суток. Что пошло не так, как отреагировала команда инженеров, и что можно извлечь из этого инцидента? Это перевод эксклюзивного исследования, которое провел Гергели Орош (Gergely Orosz), консультант mobile.dev, автор нескольких книг по работе с инфраструктурой, в прошлом — инженер в Uber, Skype, Microsoft. 

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

Сгорела на работе. Как 29-летнюю девушку похоронил стресс

Reading time3 min
Views74K

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

Суть: девушка, 29 лет, инженер-тестировщик умерла, от того, что организм не выдержал той ситуации, в которой он оказался.

Читать далее
Total votes 144: ↑119 and ↓25+126
Comments458

Книга: проектирование API

Reading time1 min
Views23K

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

Пока что написал первую часть — о принципах проектирования API «сверху вниз»

PDF-версию можно скачать отсюда

Вопросы, пожелания и предложения принимаются. Книга распространяется бесплатно на условиях CC-BY-NC. You're welcome!

Читать далее
Total votes 39: ↑38 and ↓1+47
Comments27

Как мы 40% RAM освободили

Reading time7 min
Views30K

О том, как мы столкнулись с огромными проблемами легаси сервиса фильтрации каталога и срочно начали думать, как это исправить переписать. О том, что у нас вышло с помощью redis, rabbit, bitrix -  в статье.

Читать далее
Total votes 19: ↑13 and ↓6+14
Comments40

Information

Rating
Does not participate
Location
Новокузнецк, Кемеровская обл., Россия
Date of birth
Registered
Activity

Specialization

Backend Developer
From 80,000 ₽
C#
.NET Core
Entity Framework
ASP.Net
OOP
Database
SQL
Oracle PL/SQL
Git
Linux