Как стать автором
Обновить
3
0
Сергей Садовиков @Sadovikow

Head of Web/App Dev. Simple Group.

Отправить сообщение

Шпаргалка по SQL (postgres), которая выручает меня на собесах

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров198K

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

Я решил посвятить свою первую статью SQL. Вопросы, рассмотренные ниже мне задавали на собеседованиях на позицию python-разработчика. Естественно отвечать правильно получалось не всегда, а если точнее то чаще не правильно, однако проведя N часов в рефлексии я составил перечень ответов, которыми пользуюсь до сих пор.

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

Читать далее
Всего голосов 156: ↑149 и ↓7+177
Комментарии178

OpenResty: превращаем NGINX в полноценный сервер приложений

Время на прочтение9 мин
Количество просмотров86K
Мы вновь публикуем расшифровку доклада с конференции HighLoad++ 2016, которая проходила в подмосковном Сколково 7—8 ноября прошлого года. Владимир Протасов рассказывает, как расширить функциональность NGINX с помощью OpenResty и Lua.

Всем привет, меня зовут Владимир Протасов, я работаю в Parallels. Расскажу чуть-чуть о себе. Три четверти своей жизни я занимаюсь тем, что пишу код. Стал программистом до мозга костей в прямом смысле: я иногда во сне вижу код. Четверть жизни — промышленная разработка, написание кода, который идёт прямо в продакшн. Код, которым некоторые из вас пользуются, но не догадываются об этом.

Чтобы вы понимали насколько всё было плохо. Когда я был маленьким джуниором, я пришёл, и мне выдали такие двухтерабайтные базы. Это сейчас тут у всех highload. Я ходил на конференции, спрашивал: «Ребят, расскажите, у вас big data, всё круто? Сколько у вас там базы?» Мне отвечали: «У нас 100 гигабайт!» Я говорил: «Круто, 100 гигабайт!» А про себя думал, как бы аккуратненько сохранить покерфейс. Думаешь, да, ребята крутые, а потом возвращаешься и ковыряешься с этими многотерабайтными базами. И это — будучи джуниором. Представляете себе, какой это удар?

Я знаю больше 20 языков программирования. Это то, в чём мне пришлось разобраться в процессе работы. Тебе выдают код на Erlang, на C, на С++, на Lua, на Python, на Ruby, на чем-то еще, и тебе надо это всё пилить. В общем пришлось. Точное количество посчитать так и не удалось, но где-то на 20 число потерялось.
Читать дальше →
Всего голосов 49: ↑44 и ↓5+39
Комментарии35

Ностальгические игры: Deus Ex (часть 1)

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров7.5K

В наше время, когда у всех на слуху франшизы‑гиганты вроде Call of Duty, Assassin`s Creed и Fortnite, очень мало кто помнит такие культовые и жанрообразующие франшизы, как System Shock, Thief и Deus Ex, созданные гениальным геймдизайнером Уорреном Спектором.

Да, многие современные геймеры слышали, а может даже играли в последние две игры квадрологии — Deus Ex Human Revolution и Mankind Divided, но знакомство с первой частью обошло их стороной, и очень зря! Именно первая часть даёт понять, что киберпанк — не просто набор неоновых вывесок и киберинплантов, а давящая, гнетущая атмосфера антиутопичного будущего, где вы буквально кожей ощущаете безысходность. Игра позволяет окунуться в происходящие события и сопереживать персонажам, потому что они не выглядят картонными болванчиками. Мир не кажется искусственным. Каждый услышанный разговор прохожих, каждая прочитанная газета, переписка людей заставляют верить в него, восхищаясь проработанностью.

Читать далее
Всего голосов 31: ↑29 и ↓2+39
Комментарии11

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

Время на прочтение8 мин
Количество просмотров273K
image

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

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

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

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

1. YAGNI

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

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

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

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

Недушные интервью разработчиков

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров17K

По примерным прикидкам за 10 лет работы в Miro провел порядка 500 интервью. Настало время поделиться сакральным опытом «как за час проверить, что чел шарит, и при этом не превратить интервью в душный допрос».

Читать далее
Всего голосов 49: ↑39 и ↓10+37
Комментарии36

Паттерн: Сага

Время на прочтение2 мин
Количество просмотров145K

Привет, Хабр! Представляю вашему вниманию перевод статьи "Pattern: Saga" автора Chris Richardson.


Ситуация


Есть приложение, к которому применялся паттерн Database per Service. Теперь у каждого сервиса приложения есть своя собственная база данных. Некоторые бизнес транзакции охватывают сразу несколько сервисов, так что нужен механизм, обеспечивающий согласованность данных между этими сервисами.


Например: давайте представим, что мы разрабатываем интернет магазин, где у клиента есть кредитный лимит. Приложение должно гарантировать, что новый заказ не превышает кредитный лимит клиента. Так как Заказы и Клиенты — различные базы данных, то приложение не может использовать локальные ACID транзакции.


Проблема


Как обеспечить согласованность данных между сервисами?


Решение


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


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


Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии10

Делаете ИТ-стартап? — Сначала продай, а потом делайте! Можно иначе? Да, но продай сначала

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров3.5K

Привет, меня зовут Максим Кульгин и мы потеряли много денег (думаю пару десятков кровных миллионов рублей), пытаясь запустить ИТ-бизнесы вопреки тезису в заголовке статьи. Хочу поделиться своим опытом, который сформировался благодаря этим потерям. Для кого-то цифры убытков прозвучат небольшими, но для нас это ощутимо :)

Читать далее
Всего голосов 16: ↑14 и ↓2+17
Комментарии14

Как девять женщин могут родить ребёнка за месяц

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров14K

2022 год научил нас быстро менять приоритеты для оперативного реагирования на внешние факторы. В наших целях была зафиксирована ключевая задача по отказу от софта вендора в пользу собственных решений, разработанных на основе микросервисной архитектуры. Стоял вполне комфортный срок: полностью завершить переход до конца года, и команды планомерно шли к этой цели, наряду с разработкой менее масштабных, но тоже важных фич. Но в связи со вполне реальными рисками преждевременного ухода вендора из РФ сроки доработок сократились с полугода до одного месяца (почти как в известной шутке про невозможность родить ребёнка ранее, чем через 9 месяцев, сколько людей для этого процесса не привлекай). Ниже я опишу наш опыт мобилизации и решения поставленных задач в нереалистичные сроки.

Читать далее
Всего голосов 28: ↑26 и ↓2+29
Комментарии34

Строим эффективный сетевой обмен в PHP-микросервисах

Время на прочтение13 мин
Количество просмотров21K

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

Я техлид в команде Авито в проекте SLA. Сегодня расскажу, как мы оптимизировали сетевые вызовы, чтобы избежать проблем с сетью при переходе в микросервисный мир. Разговор будет про оптимизацию CURL-запросов, деградацию сервисов и FAIL-FAST-подходы.

Читать далее
Всего голосов 34: ↑33 и ↓1+41
Комментарии38

Зачем идти в full-stack в 2023-м году?

Время на прочтение7 мин
Количество просмотров18K

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

Читать далее
Всего голосов 10: ↑9 и ↓1+10
Комментарии18

Типовое использование RabbitMQ

Время на прочтение4 мин
Количество просмотров35K

Алексей Барабанов, IT-директор «Хлебница» и спикер курса «RabbitMQ для админов и разработчиков», подготовил конспект о типовых архитектурных паттернах RabbitMQ. Из него вы узнаете, как настроить пайплайны обработки и реализовать очереди повторных попыток (в том числе, через механизм dead letter exchange). 

Читать далее
Всего голосов 35: ↑33 и ↓2+37
Комментарии4

CLI инструменты, которые облегчат времяпровождение в терминале и сделают его приятнее

Время на прочтение6 мин
Количество просмотров52K

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

В этом посте описан мой топ-25 обязательных инструментов CLI, на которые я привык полагаться. Если тут нет вашего любимого - дайте мне знать в комментариях :)

Читать далее
Всего голосов 100: ↑93 и ↓7+100
Комментарии83

Замена Google Tag Manager на on-premise-решение без лишних сложностей

Время на прочтение3 мин
Количество просмотров3.3K

Приветствую, дорогие хабровчане. Меня зовут Фёдор Куликов, я руководитель digital-аналитики в компании Tele2.

Хочу поделиться с вами тем, какую альтернативу мы нашли для Google Tag Manager.

Читать далее
Всего голосов 6: ↑4 и ↓2+2
Комментарии1

Топ-15 шпаргалок для программистов и WEB-разработчиков

Время на прочтение4 мин
Количество просмотров36K

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

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

Хватит разговоров, давайте перейдем к делу.

Читать далее
Всего голосов 12: ↑11 и ↓1+12
Комментарии15

Как быстро растут сети: прогресс Midjourney спустя полгода

Время на прочтение11 мин
Количество просмотров61K
Запрос stars world time 27 июня и спустя полгода.

«100500-ый текст про Midjourney», — подумал сейчас кто-то. Справедливости ради, шумиха вокруг нейросети немного поутихла, а работа над Midjourney — нет. Сейчас доступна четвертая версия генератора картинок, и если вы еще его не тестировали — самое время.

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

Если и это вам бесполезно, то под катом много красивых и смешных картинок — котов и «горячих собак».
Читать дальше →
Всего голосов 117: ↑115 и ↓2+144
Комментарии68

Умная дача: что нужно знать до того, как ее строить

Время на прочтение8 мин
Количество просмотров13K

Всем привет! Мы, команда HIPER,  давно хотели завести блог на Хабре. И наконец решились. Тянули, потому что хотели понять: о чем будем рассказывать. Выбор темы подсказала жизнь. На устройства умного дома – всегда стабильно высокий спрос, а использовать их непросто. А еще сложнее сформировать из таких устройств полноценную систему умного дома. Так и родилась тема блога – умный дом HIPER.

Читать далее
Всего голосов 10: ↑5 и ↓5+2
Комментарии27

SQL или NoSQL — вот в чём вопрос

Время на прочтение8 мин
Количество просмотров229K
Все мы знаем, что в мире технологий баз данных существует два основных направления: SQL и NoSQL, реляционные и нереляционные базы данных. Различия между ними заключаются в том, как они спроектированы, какие типы данных поддерживают, как хранят информацию.

Реляционные БД хранят структурированные данные, которые обычно представляют объекты реального мира. Скажем, это могут быть сведения о человеке, или о содержимом корзины для товаров в магазине, сгруппированные в таблицах, формат которых задан на этапе проектирования хранилища.

Нереляционные БД устроены иначе. Например, документо-ориентированные базы хранят информацию в виде иерархических структур данных. Речь может идти об объектах с произвольным набором атрибутов. То, что в реляционной БД будет разбито на несколько взаимосвязанных таблиц, в нереляционной может храниться в виде целостной сущности.

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



Какую технологию выбрать? Ответ на этот вопрос зависит от особенностей проекта, о котором идёт речь.
Читать дальше →
Всего голосов 34: ↑21 и ↓13+8
Комментарии23

«Быть руководителем — скучно»: 0b100 ошибок, породивших популярный IT-миф

Время на прочтение9 мин
Количество просмотров6.2K
Привет, меня зовут Вадим Карасев, я — руководитель группы разработки в команде KasperskyOS. Мои коллеги по «Лаборатории Касперского» недавно провели митап про карьерные ловушки тимлидов. Там в очередной раз подняли, на мой взгляд, достаточно острую проблему. Многие разработчики не хотят быть руководителями, потому что считают, что кодить будешь меньше, работа будет наполнена скучными управленческими обязанностями и все в таком духе. В итоге многие из тех, кто мог бы быть хорошим руководителем, не решаются даже попробовать.

image

На своем примере могу сказать, что это не так. Идти в руководство — логичный и захватывающий шаг.

В этой статье поговорим о стереотипе, будто переход из разработчика в руководители лишает человека интересных задач и карьерного развития. Разберу некоторые типовые ошибки начинающего (и не только) руководителя, приводящие к формированию этого впечатления. Постараюсь дать советы, на что смотреть, чтобы оценить ситуацию, и какие меры предпринять, чтобы жить стало «бодрее и веселее».
Читать дальше →
Всего голосов 10: ↑8 и ↓2+10
Комментарии10

Распространенные примеры использования продвинутых JQL-запросов

Время на прочтение2 мин
Количество просмотров43K
В данной статье приведены наиболее часто используемые JQL-запросы с использованием различных функций. Данный материал удобно иметь под рукой при необходимости создания сложных JQL-запросов для проектов в JIRA. В первую очередь информация будет полезна менеджерам и тим-лидам. В данной статье собраны примеры запросов, которые наиболее часто используются мною в ежедневной проектной деятельности.
Читать дальше →
Всего голосов 7: ↑6 и ↓1+5
Комментарии2

Приоритизация бэклога. Зачем нужны фреймворки и как работать по ICE — опыт менеджера с 5-летним стажем

Время на прочтение11 мин
Количество просмотров10K

На собеседованиях продакт-менеджеров, продакт-оунеров и скрам-мастеров любят спрашивать про фреймворки приоритизации и опыт работы с ними. Но реальной практики в этой области в статьях на Хабре изложено не так много — в тех текстах, которые попадались мне в последнее время, не хватает глубины именно для ICE.

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

Читать далее
Всего голосов 18: ↑18 и ↓0+18
Комментарии2

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность

Специализация

Fullstack Developer, Teamlead
Lead