Дочитав эту статью до конца, вы сможете решать точно задачу коммивояжёра на сотню элементов за считанные секунды!
Заинтригованы? Тогда, добро пожаловать под кат.
Backend-разработчик
Дочитав эту статью до конца, вы сможете решать точно задачу коммивояжёра на сотню элементов за считанные секунды!
Заинтригованы? Тогда, добро пожаловать под кат.
Защита от изменений API, которые могут повлиять на ваших клиентов, — одна из самых больших проблем при разработке HTTP API. Если вы вносите критические изменения, то создаете клиентам серьёзные проблемы. Стабильный API — ключ к удовлетворенности клиентов и, в конечном счете, к успеху в бизнесе.
Но есть одна загвоздка: потребности клиентов меняются, что часто требует развития самого API. Например, добавления параметров для работы с данным ресурсом или удаления других параметров для упрощения всего API.
Готовиться к собеседованию можно по-разному: смотреть ролики на YouTube, читать документацию, положиться на судьбу и тд. В большинстве случаев кандидатам предложат решить одну или несколько задач. В этой статье вас ждет подробный разбор реальной задачки, рекомендации к ее решению и объяснение ожиданий интервьюера от кандидатов.
От запуска ознакомительной версии нового улучшенного поиска кода год назад до публичной беты, которую мы выпустили на GitHub Universe в прошлом ноябре, появилась масса инноваций и резких изменений в некоторых основных продуктах GitHub, затрагивающих то, как мы, разработчики, осознаём, читаем код и ориентируемся в нем.
Нам часто задают вопрос о новом поиске по коду: «Как он работает?». В дополнение к моей лекции на GitHub Universe, я в общих чертах отвечу на этот вопрос, а также немного расскажу о системной архитектуре и технических основах данного продукта.
Так как же он работает? Мы создали собственный поисковый движок с нуля на Rust специально для поиска по коду. Наш поисковый движок называется «Blackbird», но прежде чем я стану описывать как он работает, думаю, что нужно понять наши предпосылки. На первый взгляд, создание поискового движка с нуля выглядит спорно. Зачем это делать? Разве уже нет большого количества существующих решений с открытым исходным кодом?
Предыстория этого гайда: для тестирования версии нашего с партнерами ПО под Линукс необходимо было организовать много стендов с разнообразными дистрибутивами (преимущественно отечественными).
Самым простым способом, как мне показалось, являлась аренда виртуалок на облачном сервисе Яндекс Облако, так как там большое количество отечественных образов и все запускается «в пару кликов». За кажущейся простотой скрывалась проблема, с которой ко мне пришли партнеры: «Мы создали виртуалки в облаке, а как туда теперь войти в графическом режиме, как мы это делаем в VMWare/VirtualBox?».
Казалось бы, решение проблемы не так сложно гуглится, но единой консолидированной информации про все интересующие дистрибутивы я не нашел, поэтому собрал этот гайд для себя, партнеров, и... решил поделиться с сообществом, вдруг кому-то еще пригодится.
Привет! На связи Олег Казаков из Spectr. Мы занимаемся разработкой цифровых сервисов, в том числе высоконагруженных систем с микросервисной архитектурой и большим количеством различных интеграций.
В статье расскажу об одном из кейсов при работе над проектом с микросервисной архитектурой — реализации единой системы авторизации и аутентификации. Поговорим про теорию, рассмотрим различные стратегии реализации и особое внимание уделим паттерну API Gateway.
Это не очередной холивар о том, что лучше: узкая специализация или широкий профиль. Поговорим только об одной конкретной области – веб-разработке. Не о мобильных приложениях, машинном обучении, разработке игр или чем-то еще, а исключительно о веб-разработке.
В одной конторе соискателю на позицию Senior C# developer выдали тестовое задание: отсортировать файл со строками определенного формата.
Требования такие:
* Формат строки: число, точка, пробел, далее любые символы до конца строки.
* Порядок сортировки — сначала сортируем текстовой части строки, потом по числу если текстовые части совпадают.
* Кодировка — UTF-8.
* Размер файла — 100гб - гарантированно больше объема ОП.
Должно отработать за 1 час на машине проверяющего, вряд ли там будет супер-быстрый SSD и огромное количество оперативной памяти.
Как и многие другие программисты, узнав о таком тестовом задании, я возмутился. Внешнюю сортировку слиянием практически всех проходили в ВУЗе, но практически никто никогда не писал её. Задача очень непрактическая и непонятно какие навыки проверяет. Так мне казалось.
Эта задача вызвала бурные обсуждения о способах её решения. Многие программисты, причисляющие себя к рангу senior, предложили использовать базы данных, ибо не барское это дело - вручную писать алгоритмы сортировки. Некоторые даже попытались сделать решение на Apache Spark. Однако никто до конца задачу не решил, ибо мало кому удалось отсортировать в нужном порядке даже 10ГБ файл менее чем за 15 минут без SSD.
Я подумал, что стоит решить задачу до конца с помощью программирования, и тоже причислить себя к рангу senior developer.
Прошлый год, помимо того что принёс уйму проблем и заставил пересмотреть планы и ценности, преподал ещё один урок — нужно собирать свои достижения. Причём мне сигнал поступил сразу с двух сторон.
Во-первых, в сложные годы особенно остро встаёт вопрос «а кто я?». Спрашиваешь себя: «Я вообще профессионал? Я что-то могу?» Многие начали искать работу на новых для себя рынках и, соответственно, задаваться вопросом — а нужны ли мы там?
Во-вторых, когда я решил попробовать податься на визу талантов, пришлось лихорадочно собирать подтверждения своих заслуг, что оказалось больно и сложно.
В этой статье я расскажу, зачем надо собирать свои достижения, как именно это делать и какие бенефиты вы можете получить от этого неожиданно важного навыка.