Pull to refresh
22
0
Дмитрий Головин @GolovinDS

User

Send message

Как искать точки роста продукта?

Reading time5 min
Views7.1K

Новый квартал, новые цели компаний и новые задачи у менеджера по продукту. 

Чтобы достичь цели бизнеса, продакт генерит решения — что можно изменить в продукте, добавить или разработать нового, чтобы повлиять на метрики бизнеса? 

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

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

Static Reverse engineering для web

Reading time5 min
Views3.5K

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

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

Инженерный подход к тестированию алгоритмов: исследовательский анализ рабочего процесса. Часть 2

Reading time12 min
Views1.3K

Как мы уже говорили в первой части, для демонстрации анализа алгоритма в более широком контексте примером послужит расстояние редактирования Левенштейна. Расстояние редактирования также иногда называют поиском похожих строк (или нечетким поиском). Это метрика редактирований (изменений символов), необходимых для преобразования одной строки в другую (целевую) строку. Из самых известных применений алгоритма можно выделить предоставление предложений по правильному написанию, нечеткий поиск по строке поискового запроса и сравнение последовательностей ДНК/РНК.

По сравнению с бинарным поиском, который построен вокруг одной операции поиска, классический алгоритм Левенштейна поддерживает три операции: вставить/insert, удалить/delete и заменить/substitute (символ в строке). Расстояние редактирования, которое он выдает, является минимальным количеством необходимых операций.

Читать далее
Total votes 5: ↑4 and ↓1+3
Comments0

Почему параметр FAST_FORWARD радикально улучшает производительность курсоров

Reading time7 min
Views7.5K

Начинающие разработчики часто используют курсоры с параметрами по умолчанию. Это продолжается до тех пор, пока кто-нибудь из старших разработчиков или администраторов баз данных не подскажет, что с параметром FAST_FORWARD все будет работать гораздо быстрее. Возможно, вы и сами исследовали этот вопрос и читали пост Аарона Бертрана (Aaron Bertrand) о бенчмарке производительности курсоров с различными параметрами. Признаюсь, в течение многих лет мне было все равно, почему FAST_FORWARD иногда ускорял мои запросы. В названии было слово "FAST", и мне было этого достаточно.

Читать далее
Total votes 17: ↑13 and ↓4+10
Comments12

Инструкция по Selenium Docker

Reading time4 min
Views28K

В этой статье мы расскажем о том, как запускать Selenium-тесты в Docker и выполнять их в браузерах Chrome и Firefox. И мы, вероятно, также поймем, зачем запускать Selenium-тесты в Docker.

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

Портируем код C/C++ на Python

Reading time4 min
Views28K

В первой части нашего небольшого цикла статей мы исследовали возможность использования структур данных в Python, которые были созданы с помощью языков программирования C/C++. Для этого мы рассмотрели библиотеку Ctypes.

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

Читать далее
Total votes 15: ↑10 and ↓5+6
Comments3

5 лаконичных синтаксисов Java, которых мне не хватает в Kotlin

Reading time3 min
Views16K

С 2016 года, после того, как я начал использовать Kotlin в Android-разработке, то ни разу не скучал по Java. В целом, Kotlin дал мне большее удовлетворение от разработки, чем Java для Android.

Тем не менее, время от времени я натыкаюсь на такие вещи, которых мне очень не хватает; того, как они были реализованы в Java. Ниже представлены 5 из них.

Читать далее
Total votes 23: ↑12 and ↓11+2
Comments21

Proof Of Concept на Python или как портировать С/С++

Reading time6 min
Views7.8K

Язык программирования Python существует уже 31 год. Это полностью объектно-ориентированный язык. За все время существования на нем стало возможно применять разные парадигмы. Сейчас этот язык может поддерживать:

- объектно ориентированную парадигму
- структурное программрование
- обобщенное программирование
- функциональное программирование
- метапрограммирование
- контрактное и логическое программирование

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

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

Статья будет содержать 3 части, в ходе которых мы будем иссследовать возможность портирования C/C++ кода для различных ОС. В этой статье посмотрим, насколько эффективно можно реализовать возможность работы с оперативной памятью и получением данных от системы.

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

Как получить высокоэффективную команду?

Reading time5 min
Views4.6K

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

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

Изучаем протоколы со Scapy

Reading time4 min
Views9.3K

Статья расскажет, как можно использовать Scapy для создания пакетов UDP и TCP протокола, так же попробуем реализовать взаимодействие по сети, отправив короткое сообщение с использованием каждого из протоколов.

Читать далее
Total votes 8: ↑7 and ↓1+7
Comments0

Делиться — это…

Reading time4 min
Views2.8K

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

Читать далее
Total votes 15: ↑11 and ↓4+7
Comments10

Работа из дома

Reading time3 min
Views8.7K

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

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

Создаем Discord-бота с помощью Node.js

Reading time12 min
Views29K

Discord - это чат-приложение, которое позволяет миллионам пользователей по всему миру обмениваться сообщениями и общаться голосом вживую в сообществах, называемых гильдиями (guilds) или серверами. Discord также предоставляет обширный API, который разработчики могут использовать для создания весьма функциональных Discord-ботов. Боты могут выполнять различные действия, такие как отправка сообщений на серверы и личных сообщений пользователям, модерация серверов и воспроизведение звука в голосовых чатах. Это позволяет разработчикам создавать продвинутых ботов, которые реализуют сложные функции, такие как инструменты модерации или даже игры. Например, служебный бот Dyno обслуживает миллионы гильдий и содержит такие полезные функции, как защита от спама, музыкальный проигрыватель и много других вспомогательных служб. Знание того, как создавать Discord-ботов, позволит вам реализовать возможности, с которыми смогут взаимодействовать каждый день тысячи людей.

В этом туториале мы с вами создадим Discord-бота с нуля, используя Node.js и библиотеку Discord.js, которая позволяет пользователям напрямую взаимодействовать с Discord API. Мы настроим профиль для Discord-бота, получим для него токены аутентификации и реализуем в боте возможность обработки команд с аргументами от пользователей.

Читать далее
Total votes 8: ↑5 and ↓3+3
Comments3

Стриминговые микросервисы с ZIO и Kafka

Reading time8 min
Views5.9K

В Scalac мы ежедневно разрабатываем и внедряем распределенные приложения с высокой степенью параллелизма. Распределенные системы в настоящее время активно развиваются и не собираются в этом останавливаться. В архитектуре подобных систем, помимо Kubernetes, важное место занимает Apache Kafka.

Мы используем Apache Kafka как основу для асинхронного взаимодействия микросервисов. Простота масштабирования, устойчивость к потере и повреждению данных, репликация и легко достижимый параллелизм через консьюмер-группы (consumer groups) — вот только некоторые из причин, почему Kafka является одним из основных инструментов построения распределенных систем.

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

Запуск команд в ОС Windows

Reading time4 min
Views12K

Тестирование систем на проникновение требует от пентестера знания большого количества различного инструментария: от банальных текстовых редакторов до штатных систем обнаружения вторжений. Одним из важных этапов пентеста является запуск команд на стороне тестируемого хоста для выполнения собственных нужд. Так как способов это сделать существует довольно большое количество, статья расскажет о нескольких методах запуска команд в инфраструктуре, где работает операционная система Windows. Будут приведены несколько инструментов и методы их использования. Также будут рассмотрены несколько особенностей, которые должны быть учтены при использовании каждого способа запуска команд.

Читать далее
Total votes 22: ↑14 and ↓8+9
Comments3

Хороший инженер, плохой инженер

Reading time3 min
Views5.3K

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

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

Читать далее
Total votes 24: ↑19 and ↓5+17
Comments14

Чем занимается тимлид?

Reading time5 min
Views8.9K

Всем привет! Несколько дней назад мы поговорили с Олегом Мельником о том, кто такой техлид. Прочитать интервью можно тут.

Мы решили продолжить тему и в этот раз поговорили с Олегом про такую роль у разработчиков как тимлид. То, что из этого вышло, читайте под катом.

Читать далее
Total votes 14: ↑12 and ↓2+12
Comments0

История о CSS-сбросах и все, что о них нужно знать. Еще раз об этом

Reading time40 min
Views26K

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

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

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

Измеряем производительность String.format() в Java

Reading time6 min
Views6.3K

Я раньше считал, что JDK в целом хорошо оптимизирована, и если в JDK есть простой способ решения какой-то задачи, то он вполне подойдет для большинства ситуаций и будет работать хорошо.

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

В этом посте рассмотрим один из подобных кейсов: поразительно низкая производительность String.format() при простой конкатенации строк.

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

С помощью скотча и жвачки

Reading time4 min
Views3.4K

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

Читать далее
Total votes 8: ↑6 and ↓2+7
Comments1

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity