Pull to refresh
3
0
Михаил Богатырев @ksupipr

Марковевед

Send message

Node.JS: заменили модуль SSH2 на OpenSSH и снизили задержки eventloop в 15 раз

Level of difficultyMedium
Reading time5 min
Views4.7K

В нашем сервисе мониторинга и анализа PostgreSQL доступ к серверам осуществляется по протоколу SSH. В качестве ssh-клиента мы используем популярный модуль SSH2 , однако при передаче данных большого объема этот модуль вносит существенные задержки в event loop. Как их можно снизить - расскажем в этой статье.

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

Любимая задачка на знание React

Level of difficultyEasy
Reading time3 min
Views20K

Всем привет! Меня зовут Олег и я fullstack-программист в компании Тензор. Опыт в разработке, без малого, 20 лет (как-то раз батя спаял на кухне ZX Spectrum и все заверте..., сам не понял как так вышло). В данный момент являюсь тимлидом собственной команды разработчиков, которая периодически нуждается в пополнении толковыми программистами.

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

Наша команда занимается разработкой веб-приложения на React. Соответственно, мне важно найти программистов уверенно владеющих основами (!) этого фреймворка. Есть много способов проверки компетенций на собеседовании, один из любимых - задача по написанию hook для загрузки данных.

Если вы тоже в вечном поиске классных фронтендеров или сами часто проходите собесы - велком в эту статью :)

Итак, задачка...
Total votes 23: ↑23 and ↓0+23
Comments56

Простой саботаж в мире ПО

Reading time6 min
Views33K

В кульминационный момент Второй мировой войны ЦРУ выпустило потрясающую книгу Simple Sabotage. В ней изложены различные способы, которыми диверсанты могут снижать продуктивность компании. Некоторые из этих советов не стареют, например, раздел «Общие помехи организациям и производству»:

1. Настаивайте на том, чтобы всё выполнялось через «каналы». Не допускайте того, чтобы для ускорения реализации решений выбирались кратчайшие пути.

2. Делайте «доклады». Говорите как можно чаще и пространнее. Иллюстрируйте свои «идеи» долгими историями из жизни и ссылайтесь на личный опыт. С готовностью делайте «патриотические» комментарии.

3. По возможности отправляйте все вопросы в комитеты для «более глубокого изучения и рассмотрения». Стремитесь делать комитеты как можно больше, не менее чем из пяти членов.

4. Как можно чаще поднимайте вопросы о несущественных проблемах.

5. Спорьте о чётких формулировках в общении, протоколах, резолюциях.

6. Возвращайтесь к темам, по которым было принято решение на последнем совещании, и пытайтесь повторно открыть вопрос о целесообразности этого решения.

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

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

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

Читать далее
Total votes 90: ↑88 and ↓2+86
Comments35

Управление требованиями

Reading time10 min
Views23K
image

Что такое управление требованиями, как оно устроено, и почему приходится им заниматься? Уже давно стало ясно, что для преуспевания компании недостаточно просто иметь товар и продавать его. Продукт должен быть востребованным и удобным для потребителя. А позже появилось понимание, что продукт требует каких-то сервисов, что необходим переход к сервисной модели. Более того, потребитель хочет не владеть товаром, а пользоваться им. Отсюда — арендные или подписочные модели.
Читать дальше →
Total votes 5: ↑4 and ↓1+3
Comments0

Как ответить на вопрос «Когда будет готово?» на основе статистики

Level of difficultyMedium
Reading time6 min
Views7.8K

Всем привет! Я Анастасия Жадринская, деливери-менеджер в Тинькофф. Да, эта статья опять про оценки и сроки выполнения задач. Сроки без вуду, астрологии, гаданий и привлечения экспертов. В статье рассмотрю метод Монте-Карло — элегантный и простой в применении математический подход для прогнозирования сроков завершения проектов или объема выпуска задач.

Читать далее
Total votes 21: ↑19 and ↓2+17
Comments38

Ethers js — основы

Level of difficultyMedium
Reading time9 min
Views13K

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

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

Event Loop в деталях

Level of difficultyMedium
Reading time7 min
Views45K

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

JS был спроектирован как однопоточный язык программирования. Это значит, что он может выполнять только одну операцию одновременно. Тем не менее у JavaScript есть такой механизм как Event Loop, который как раз и позволяет выполнять "асинхронные" операции. Почему "асинхронные" в кавычках? Да просто потому что JavaScript тоже выполняет их синхронно, асинхронности в самом JavaScript как таковой нет. Вперед под кат, будем разбираться)

Promise.then()
Total votes 25: ↑22 and ↓3+19
Comments13

Полный релиз бесплатного интерактивного 700-страничного учебника по тестированию

Level of difficultyEasy
Reading time12 min
Views100K

Гуд ньюз эвриван! Спустя полтора года работы восьми айтишников с суммарным опытом в IT 130 лет достигнут результат в виде учебника по тестированию, которого еще никто и никогда не делал.

Читать далее
Total votes 160: ↑159 and ↓1+158
Comments162

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

Level of difficultyMedium
Reading time22 min
Views29K

Всем привет, меня зовут Максим Гусев!

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

Я руководитель международных проектов (PMP) и портфелей (PfMP) с реализованными проектами в Турции, Арабских Эмиратах, Германии, Франции, России и Беларуси. С более чем 10-летним опытом управления проектами и 4-летним опытом разработки автономных транспортных средств/робототехники и сегодня я хочу Вам рассказать об определении стоимости технически сложных продуктов и проектов.

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

Пишем на Питоне сразу хорошо

Reading time8 min
Views45K

Привет Хабр!

Сегодня я сниму костюм аниматора и вместо развлечений расскажу вам немного за питон.

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

Читать далее
Total votes 42: ↑41 and ↓1+40
Comments46

Python декораторы на максималках. Универсальный рецепт по написанию и аннотированию от мала до велика

Level of difficultyMedium
Reading time13 min
Views28K

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

Так давайте разбираться!

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

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

Давайте разбираться
Total votes 43: ↑43 and ↓0+43
Comments9

Я люблю питон, и вот почему он меня бесит

Level of difficultyEasy
Reading time18 min
Views56K

Вас приветствует ваш зануда!

Если вы следите за моей ленивой активностью, то заметили бы, что у меня много от чего пригорает. Вот, например:
- У меня пригорает от низкосортных статей на потоке: Питон против Безумного Макса, или как я посты на Хабре замораживал
- У меня пригорает от Django: Окей, Джанго, у меня к тебе несколько вопросов
- И от Яндекса тоже: Собеседование в Яндекс: театр абсурда :/
- И от рекрутеров: Я единственный из 1400, или самый крутой рекрутинг, что я проходил

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

Это что же получается, kesn опять открыл postman и сломал вёрстку на сайте? Поразительно, никогда такого не было, и вот опять! В принципе, тут можно писать текст любой длины (похоже, у них на бэкенде не Char(255), а Text). Они проверяют длину только на фронтенде, а бэкенд принимает строку любой длины. И это, блин, забавно) Вообще мой девиз - 'кто ищет, тот всегда найдёт', поэтому я ищу постоянно. Кстати, на Хабре скоро выйдет статья про программирование глазами Погромиста, там в том числе про уязвимости на сайтах будет - поэтому если не хотите пропустить, то подписывайтесь на меня в телеге: @blog_pogromista
Total votes 248: ↑238 and ↓10+228
Comments143

Обработка больших и очень больших графов

Level of difficultyMedium
Reading time18 min
Views3.8K

Однажды ко мне обратилась одна крупная фруктовая телефонная компания с просьбой подготовить для них курс по Apache Spark продвинутого уровня, и в нем обязательно должен быть раздел про обработку графов (Neo4j не предлагать). На тот момент я знал про классические алгоритмы обработки графов на базе DFS (поиск в глубину) и BFS (поиск в ширину). При этом неотъемлемым условием применения того или иного подхода является локальная поддержка стека (DFS) или очереди (BFS). Следовательно, классические алгоритмы можно применять для обработки графов, которые умещаются в память одной машины.

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

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

Рутина продакта: путешествие из ХЗ в ТЗ

Reading time14 min
Views8K

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

Статья будет наиболее интересна тем, кто только начинает свой путь в продакт-менеджменте или работает в продуктовой команде разработки и хочет узнать, чем занимаются вечно пропадающие на встречах продакты. Однако, даже если вы уже зрелый продакт, вы с большой вероятностью найдете для себя что-то полезное и применимое в работе.
Читать дальше →
Total votes 31: ↑31 and ↓0+31
Comments7

Feature-Sliced Design – альтернативный подход к организации кода приложений

Reading time7 min
Views15K

Feature-Sliced Design — это архитектурная методология, активно набирающая популярность в последнее время. И не зря: организация разработки по её правилам позволяет упростить процессы, сделать их быстрее и гибче. Больше не нужно будет переживать из-за совместной работы в одном домене и конфликтов кода, долго искать ответ на вопрос «А куда же впилить новую фичу, тут и так намешано…» 

О том, как устроена Feature-sliced Design, чем она отличается от «классической» организации кода, плюсах и минусах от её внедрения — в этой статье.

Читать далее
Total votes 15: ↑14 and ↓1+13
Comments20

«Возьмите инициативу на себя»: готовимся к System Design Interview

Reading time5 min
Views15K

Рассказываем, для чего в Авито проводят интервью по System Design, чего от него ожидать и что нужно знать, чтобы его успешно пройти.

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

Определение области коллизии

Level of difficultyMedium
Reading time15 min
Views6.7K

Поиск контактных точек коллизии

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

Давайте же посмотрим как это сделать!

Поехали
Total votes 48: ↑48 and ↓0+48
Comments13

Разработка мультиплеерной игры на Dart+Flutter. Часть 2

Level of difficultyEasy
Reading time12 min
Views1.9K

Разработка простой мультиплеерной игры с использованием языка программирования dart на сервере и flutter+flame на клиенте. Небольшой гайд от любителя игростроя. Часть 2

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

Begin /* Техническое интервью

Level of difficultyEasy
Reading time4 min
Views4.4K

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

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

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

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

Читать далее
Total votes 27: ↑24 and ↓3+21
Comments45

Принципы по улучшению QA процессов в Agile команде

Level of difficultyEasy
Reading time11 min
Views6.5K

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

Читать далее
Total votes 2: ↑2 and ↓0+2
Comments2
1
23 ...

Information

Rating
Does not participate
Location
Уфа, Башкортостан(Башкирия), Россия
Works in
Date of birth
Registered
Activity