Обновить
41
0.8
Дмитрий Головин @GolovinDS

Пользователь

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

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

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

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

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

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

Читать далее

Static Reverse engineering для web

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

Читать далее

Информация

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