Pull to refresh
1
0
Павел @lifestyle

User

Send message

Моя любимая задача для собеседований по программированию

Level of difficultyMedium
Reading time9 min
Views100K

В сети есть уйма постов и видео, где разбираются ответы на вопросы LeetCode. Но обычно рассмотрение в них происходит с позиции соискателя, а не работодателя. В этой же статье я приведу разбор собственной задачи по программированию, которую использовал при приёме людей на работу в Amazon, Google и Microsoft.
Читать дальше →
Total votes 100: ↑95 and ↓5+121
Comments170

Корутины для Go

Level of difficultyMedium
Reading time21 min
Views9.1K

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

Сегодня каждый программист знаком с вызовами функций (подпрограмм): F вызывает G, которая останавливает F и запускает G. G выполняет свою работу, потенциально вызывая и ожидая другие функции, и в конце концов возвращается. Когда G возвращается, G уже нет, а F продолжает работать. В этой схеме одновременно выполняется только одна функция, а ее вызывающие ожидают, поднимаясь вверх по стеку вызовов.

В отличие от подпрограмм, корутины выполняются конкурентно на разных стеках, но все равно верно, что одновременно выполняется только одна функция, а ее вызывающая сторона ждет. F запускает G, но G не выполняется немедленно. Вместо этого F должен явно возобновить (resume) выполнение G, который затем начинает выполняться. В любой момент G может развернуться и вернуться (yield) назад к F. Это приостановит G и продолжит F операцию возобновления. В конце концов F снова вызывает resume, который приостанавливает F и продолжает G после выхода. И так далее, туда-сюда, пока G не вернется, что приведет к очистке G и продолжению F с последней операции возобновления, с некоторым сигналом для F, что G закончена и F больше не должна пытаться возобновить G. В этом паттерне одновременно выполняется только одна корутина, а ее вызывающая сторона ждет на другом стеке. Они выполняются по очереди в четко определенном, скоординированном порядке.

Это несколько абстрактно. Давайте посмотрим на реальные программы.

Читать далее
Total votes 13: ↑11 and ↓2+9
Comments5

Типичный Swagger без гмо

Level of difficultyMedium
Reading time6 min
Views11K

Кто из нас не был одурманен сказками про свагер? Мол, добавь эту волшебную штуку — да заживешь! Но плата за магию — зеленое болото нотаций. А нельзя ли обойтись только типизацией самого php? (Спойлер: онжом)

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

Вас забанила нейросеть: как новый алгоритм Яндекса постепенно выкидывает из поиска региональные СМИ

Level of difficultyEasy
Reading time9 min
Views46K

Пару недель назад я совершенно случайно обнаружил в Яндекс Вебмастере плашку о фатальной ошибке. Там было написано, что мой сайт может угрожать безопасности пользователя, или на нём были обнаружены нарушения правил поисковой системы. Других ошибок не было: индекс качества даже немного подрос.

Удивительно было, что этот сайт — известное в регионе СМИ, и вопросов к нему со стороны Яндекса не было все восемь лет его существования. Потому что мы и на самом деле нарушениями правил поисковиков не занимаемся. Но сначала я, конечно, подумал, что проблема в нас самих — где‑то спрятался баг или, того хуже, взломали. Однако всё оказалось куда интереснее.

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

На КПДВ: «Региональный журналист пишет новость» глазами другой нейросети Яндекса — «Шедеврум».

Читать далее
Total votes 224: ↑218 and ↓6+252
Comments304

Это база: нюансы работы с Redis. Часть 1

Level of difficultyMedium
Reading time15 min
Views40K

Привет! Меня зовут Петр и мы в компании Nixys очень любим Redis. Эта база используется, если не на каждом нашем проекте, то на подавляющем большинстве. Мы работали как с разными инсталляциями Redis, так и с разными версиями, вплоть до самых дремучих, вроде 2.2. Несмотря на то, что в Интернете очень много статей и докладов по этой БД, мы в своей практике достаточно часто встречаемся с непониманием некоторых основных концепций Redis и со стороны разработчиков, и со стороны системных администраторов.

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

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

Design Patterns: прототип, прокси и обозреватель для фронтенд-разработчика

Level of difficultyMedium
Reading time9 min
Views5.5K

История возникновения паттернов

Перед тем как ответить на вопрос - зачем нужны паттерны проектирование - сделаем немольшой исторический экскурс.

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

Эти самостоятельные сущности в итоге назвали паттернами проектирования, и фундаментальной работе по их стандартизации можно считать широко известную книгу - Паттерны Проектирования “Банды Четырех” (Гамма, Хелм, Джонсон, Влиссидес).

Оригинальная книга была написана в 1994 году и нацелена на объектно-ориентированные языки программирования - все паттерны в ней описаны на объектно-ориентированном языке C++ и определены для решения задач ООП - то есть нацелены на написание десктопного ПО.

Но паттерны - вещь универсальная и не привязана к какому-то конкретному языку программирования. Но перед тем как перенести, описанные в книги паттерны, давайте сначала, все-таки, оговорим разницу между этими двумя языками.

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

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

Читать далее
Total votes 2: ↑1 and ↓10
Comments2

[Паттерны API] Слабая консистентность

Level of difficultyHard
Reading time7 min
Views4.3K

Это глава 18 моей книги «API». Описанный в предыдущей главе подход фактически представляет собой размен производительности API на «нормальный» (т. е. ожидаемый) фон ошибок при работе с ним путём изоляции компонента, отвечающего за строгую консистентность и управление параллелизмом внутри системы. Тем не менее, его пропускная способность всё равно ограничена, и снизить её мы можем единственным образом — убрав строгую консистентность из внешнего API, что даст возможность осуществлять чтение состояния системы из реплик:

Читать далее
Rating0
Comments8

Почему в вашем коде так сложно разобраться

Level of difficultyEasy
Reading time7 min
Views14K

Сейчас 1:30 ночи, и я смотрю на фрагмент кода, который написал около месяца назад. В то время он казался мне произведением искусства. Все здесь имело смысл. Он был элегантен, прост и замечателен. Но больше нет. У меня завтра дедлайн, а я обнаружил баг всего несколько часов назад. То, что казалось простым и логичным в то время, сейчас просто не поддается моему пониманию. Конечно, если я написал этот код, мне ведь должно хватить мозгов, чтобы понять его?

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

Читать далее
Total votes 20: ↑18 and ↓2+21
Comments7

Будни техпода. Разворачиваем сайт из конструктора на vds за 130 рублей

Level of difficultyMedium
Reading time8 min
Views10K

Думаю, ни для кого не секрет, что одной из наиболее популярных задач, которую выполняют VDS серверы, является хостинг веб-сайтов. Очевидно, и вопросов на эту тему нам в поддержку приходит немало. Интересуются как возможностью заказать готовый сайт, так и параметрами сервера, которых будет достаточно для работы сайта. Кто-то и вовсе думает, что само понятие хостинга уже подразумевает под собой наличие готового сайта на нём, и сильно удивляются, когда обнаруживают чистую операционную систему на сервере. Сразу оговорюсь, данную статью я задумал в первую очередь для не совсем опытных пользователей, кто не знаком или не хочет разбираться в вёрстке и cms-системах, но при этом хотел бы иметь собственный небольшой сайт. Мы пошагово, но не сильно углубляясь, рассмотрим этапы начиная с создания сайта и заканчивая его размещением на VDS сервере.
Читать дальше →
Total votes 28: ↑26 and ↓2+36
Comments9

Мой путь в профессию: из аналитиков в Go-разработчики

Level of difficultyEasy
Reading time6 min
Views6.4K
image

Привет! Меня зовут Герман, я backend-разработчик в команде Managed Service for Redis в компании #CloudMTS. В этой статье расскажу про свой приход в разработку на Go и поделюсь полезными ресурсами, которые мне помогли на этом пути.

Читать дальше →
Total votes 12: ↑9 and ↓3+9
Comments5

Делаем векторный логотип с использованием Midjourney

Level of difficultyEasy
Reading time3 min
Views39K

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

Читать далее
Total votes 17: ↑14 and ↓3+17
Comments14

Как учат детей в средней школе

Level of difficultyEasy
Reading time7 min
Views3.5K

В эмиграции перед родителями часто стоят две серьезные проблемы: сохранение русского языка и самоидентификация ребенка. Но существует еще и третья проблема в целом по миру — сохранение учебной мотивации в средней школе. Эта проблема есть во всех странах.

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

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

12 неочевидных правил проектирования REST API

Level of difficultyMedium
Reading time10 min
Views24K

Раскрываем 12 кейсов проектирования спецификации REST API из практики red_mad_robot, которые помогут сэкономить время для разработки. А также объясняем, почему стоит следовать подходу contract first — писать спецификацию прежде кода.

Читать далее
Total votes 12: ↑9 and ↓3+10
Comments16

Clean Architecture, DDD, гексагональная архитектура. Разбираем на практике blog на Symfony

Level of difficultyMedium
Reading time91 min
Views74K

Всем привет! Давайте знакомиться ;) Я Аня, и я php разработчик. Основной стек - Magento. С недавних пор начала посматривать налево на Symfony и писать свои Pet Projects на этом фреймворке.

Мне всегда нравилось писать решения которые легко бы расширялись / адаптировались под требования бизнеса (заказчика). И мне всегда хотелось сделать это более 'правильно' и красиво. Так я и познакомилась с понятиями чистой архитектурой.

Мой пост ни в коем случае не претендует на самый правильный. Но позвольте мне здесь донести свои идеи. В комментариях буду рада услышать конструктивную критику к данному посту.

Для нетерпеливых, вот прямая ссылка на гитхаб

Читать далее
Total votes 23: ↑20 and ↓3+23
Comments34

Книга «Грокаем алгоритмы искусcтвенного интеллекта»

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

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

«Грокаем алгоритмы искусственного интеллекта» объясняет фундаментальные концепции ИИ с помощью иллюстраций и примеров из жизни. Все, что вам понадобится, — это знание алгебры на уровне старших классов школы, и вы с легкостью будете решать задачи, позволяющие обнаружить банковских мошенников, создавать шедевры живописи и управлять движением беспилотных автомобилей.
Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments2

Топ вопросов на Junior собеседованиях

Level of difficultyEasy
Reading time5 min
Views15K

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

Так что, если вам интересно, какие вопросы задают на собеседовании, то эта статья для вас. А если хотите узнать ответы на них, то переходите по ссылкам на наш YouTube канал и смотрите записи трансляций моковых собеседований с менторами Solvery. Там можно было узнать, как проходят реальные интервью и задать вопросы менторам Solvery.

Читать далее
Total votes 18: ↑2 and ↓16-14
Comments29

Лучшая задача по программированию для собеседования

Reading time7 min
Views65K

Готовиться к собеседованию можно по-разному: смотреть ролики на YouTube, читать документацию, положиться на судьбу и тд. В большинстве случаев кандидатам предложат решить одну или несколько задач. В этой статье вас ждет подробный разбор реальной задачки, рекомендации к ее решению и объяснение ожиданий интервьюера от кандидатов.

Читать далее
Total votes 61: ↑38 and ↓23+22
Comments271

Работаем с PostgreSQL в Go. Опыт Авито

Reading time8 min
Views23K

Привет! Меня зовут Дима Вагин, я бэкенд-инженер в Авито. Сегодня расскажу, как мы работаем с БД PostgreSQL из Go. Покажу, какие библиотеки и пулеры соединений мы используем для доставки в код параметров подключения и как мы их настраиваем. А ещё расскажу про проблемы, к которым приводит отмена контекста, и о том, как мы с ними справляемся.

Читать далее
Total votes 24: ↑22 and ↓2+25
Comments19

Как мы используем модель Хаффа для открытия новых магазинов

Reading time9 min
Views8.9K

Привет! На связи команда геоинформационных систем «Магнита». Мы начинаем серию очерков о модели прогнозирования продаж в новых магазинах. В первой статье расскажем про один из наиболее значимых признаков модели — балле Хаффа. Мы постараемся описать теоретическую сторону и покажем реальные примеры решения возникающих сложностей. Надеемся, эта статья предоставит ценные идеи и информацию для ваших задач, будь вы опытный специалист или новичок. Итак, приступим!  

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

Как мы решали проблему с дублями контента на сайте с 500k страниц

Reading time5 min
Views1.4K

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

Читать далее
Total votes 2: ↑0 and ↓2-2
Comments0

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity