Как стать автором
Поиск
Написать публикацию
Обновить
24.7

Отладка *

Поиск и устранение ошибок в коде

Сначала показывать
Период
Уровень сложности

Инструмент для отслеживания DNS-запросов: dnspeep

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

Недавно я создала небольшой инструмент под названием dnspeep, который позволяет понять, какие DNS-запросы отправляет ваш компьютер и какие ответы он получает. Всего мой код занял 250 строк на Rust. В этой статье я расскажу о коде, объясню, для чего он нужен, почему в нём возникла необходимость, а также расскажу о некоторых проблемах, с которыми я столкнулась при его написании. И, конечно, вы сами сможете попробовать код в действии.

Читать далее

Неблокирующая отрисовка и обновление графиков с помощью bokeh

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

Есть у меня один Python-скрипт с расчётами. Там был цикл примерно на 2000 итераций, каждая из которых считалась несколько минут.

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

Проще всего проделать это с помощью bokeh. Точнее, с помощью bokeh-сервера для отрисовки графиков. Как — сейчас расскажу.

Читать дальше →

Синтетические символы и модули (WinDbg/DbgEng)

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

В этой публикации речь пойдет о синтетических модулях и символах отладочного движка Windows (debugger engine). То есть о сущностях, которые можно искусственно добавить в отладчик для раскраски адресов памяти.


Читать дальше →

10 тенденций тестирования программного обеспечения, на которые стоит обратить внимание в 2019 году

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

В преддверии запуска курса «QA-специалист», который стартует уже через 10 дней, хотим поделиться материалом, который расскажет о новых подходах в тестировании и будет полезен всем, кто следит за новыми тенденциями и остается в тонусе.

С появлением технологий Agile и DevOps индустрия разработки программного обеспечения претерпевает серьезные перебои в работе. Это привело к развитию новых подходов к тестированию. Специалисты по обеспечению качества должны быстро адаптироваться к изменениям в отрасли тестирования ПО, чтобы оставаться актуальными. Вот список 10 тенденций тестирования программного обеспечения, на которые следует обратить внимание в 2019 году:

Читать дальше →

Управление изменениями

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

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

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

Что такое Изменение? У нашего продукта есть Платформа: базовое устройство, на которое «навешивается» сверху все требования покупателя и его инфраструктуры. Когда мы приходим к покупателю с ценой – она за Продукт. Продукт = Платформа + Специфика. Продукт – это то, что будет описано в Спецификациях и ТЗ. Но потом начинается работа по детальному проектированию и подготовке к производству. И вот тут начинаются Изменения. Изменения – это Дельта к Продукту. То есть Проданный_Продукт + Дельта = Произведенный_Продукт.
Читать дальше →

Пакет Network Security Services и утилита Pretty-print

Время на прочтение3 мин
Количество просмотров6.7K
Пакет Network Security Services (NSS) представляет собой набор библиотек, используемых при кроссплатформенной разработке защищенных клиентских и серверных приложений.
Читать дальше →

Разворачиваем Emercoin testnet и получаем много бесплатных монет

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


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

Специально для таких случаев существует режим “test mode”, когда монеты можно добывать центральным процессором любого маломощного ПК, но при этом они обладают всеми немонетарными свойствами “больших” монет EMC. Тестовые монеты можно пересылать на тестовые же адреса, создавать сколько угодно блокчейн-записей NVS, а кошельки в этом режиме объединять в testnet.

Сделать это очень просто:

Для начала надо скачать и установить последний кошелек Emercoin. Затем открыть emercoin.conf* и прописать:

testnet=1

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



addnode 188.166.12.157 add

Читать дальше →

Ох уж мне эти базы данных: Sybase (ASE) и datetime

Время на прочтение2 мин
Количество просмотров12K
Привет, хабр!
На самом деле пост об одной строчке в документации, как оказалось. Но это было неожиданно, поэтому я решил поделиться с Вами найденным.
Читать дальше →

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

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

Выбор инструмента


image

Проблема профилировки рано или поздно встает перед любым проектом, претендующим на роль лучшего в своей области. Какой инструмент выбрать — всегда большой вопрос. Одни инструменты показывают одну часть картины, другие другую. И рано или поздно начинаешь писать свой тул (англ. tool — орудие\инструмент), который отвечает на насущные проблемы именно данного конкретного проекта. Однако время на написание своего «орудия» всегда приходится вычитать из времени отведенного на сам проект.
Поэтому серьезный профайлер написать не получается…

Но как получить все и сразу? (Тут мне почему то вспоминается песня Queen «I want it all»)
Читать дальше →

Отладка Groovy скриптов с Grape на основе maven aether

Время на прочтение2 мин
Количество просмотров4.3K
В IntelliJ Idea возникают cложности с отладкой таких скриптов, так как для отладки groovy IDE использует сборку груви по-умолчанию, с Ivy провайдером для Grape.



Решение проблемы с debug...

Переходим с STM32 на российский микроконтроллер К1986ВЕ92QI. Настройка тактовой частоты

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

Общее представление о системе тактирования


В прошлой статье мы научились создавать стабильные задержки с помощью простого таймера SysTick, а так же немного окунулись в механизм работы прерываний. Тогда мы принимали как постулат то, что тактируя таймер от источника HCLK – мы получаем 8 Мгц. Теперь настало время разобраться, откуда эти цифры.
Читать дальше →

Облегчаем поддержку iOS приложения. Часть 2 — локация и сеть

Время на прочтение6 мин
Количество просмотров8.8K
Добрый день, хаброжители,

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

  1. Облегчаем поддержку iOS приложения. Часть 1 — не отрываясь от Xcode
  2. Облегчаем поддержку iOS приложения. Часть 2 — локация и сеть
  3. Облегчаем поддержку iOS приложения. Часть 3 — падение и логи

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

Как создавать патчи, основанные на доверчивой политике безопасности Android

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

Приветствую тебя, уважаемый читатель!


Offtop

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

Intro

Думаю, начать стоит с самого начала. Все началось с моего обнаружения пользовательской зависимости окружающих к небезызвестной игре 2048. Мне, конечно же, стало интересно, чем эта игра так захватывает людей, поэтому я решил сам ее попробовать. Через несколько минут я понял ее суть и мне эта игра тоже стала интересна.
Должен признаться, более 5000 очков мне набирать не удавалось никак, а до 2048 было еще слишком долго…
Тем временем окружающие «игроки» с легкостью набивали по 10-16тыс очков, а некоторым удавалось даже достигать 2048 в клетке.
Что ж, спустя некоторое время у меня возникла идея тупо взломать эту игру, чтобы не «убивать» время на ее прохождение( она слишком долгая в прохождении, но от этого не менее затягивающая ). А еще спустя пару дней, об этом же меня попросили и мои знакомые.
Это означало одно: пора браться за дело…



Читать дальше →

Ближайшие события

Таинственные знаки на полях

Время на прочтение1 мин
Количество просмотров12K
Многие из вас, возможно, видели всякие загадочные знаки на полях. Нет, не те что на картинке слева :). Я имею в виду значки на полях редактора кода в Visual Studio. Наиболее известными являются иконки точки останова (Breakpoint) и закладки (Bookmark) . Но есть и другие. Я предлагаю небольшой конкурс: вот 8 значков, которые могут появиться на полях редактора кода в Visual Studio 2010 (без всяких плагинов). Первый, кто верно объяснит их все, получит от меня инвайт на Хабр.

Пишите ответы комментариями к этому топику, а у кого нету аккаунта на Хабре — пишите куда угодно и бросайте ссылку в твиттер с хештегом #VsMisterySigns — обещаю всё прочитать. Ответы удобно нумеровать в соответствии именам интовских переменных в коде. Срок приёма ответов — сутки с момента публикации. Объявление победителя — в течение суток по окончанию приёма ответов, развёрнутой статьей в этих же хабах.

P.S. Обратите внимание, №4 и №6 — это не глюк в задании, это разные значки, обозначающие разные вещи. Смотрите внимательно. Все претензии — к дизайнерам Visual Studio.

Upd. Дискуссия в твиттере поактивнее комментов. Дерзайте, друзья, у всех есть шансы.
Upd2. Ставки сделаны, ставок больше нет. Результаты.
Читать дальше →

Можно ли навсегда избавиться от утечек памяти из-за циклических ссылок?

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


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


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


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


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

Читать дальше →

Руководство по использованию unsafe в Swift

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

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

Читать далее

Как найти поверхность атаки незнакомых приложений с помощью Natch

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

Поиск ошибок в программах дело творческое и интересное. Чаще всего мы ищем ошибки в своём коде, чтобы его починить. Кто-то может искать ошибки в чужом коде, чтобы его сломать или поучастовать в баунти-программе.

А вот где именно искать ошибки? Какие функции тестировать? Хорошо, если программа полностью ваша. Но что если вы занимаетесь тестированием, а эти программисты постоянно придумывают что-то новое? Никаких рук не напасёшься.

Как хоть немного автоматизировать процесс?

Приглашаем на онлайновый митап про системы сборки С++ кодовой базы

Время на прочтение1 мин
Количество просмотров1.7K
В четверг, 28 апреля, в 16 часов (МСК) мы проведем онлайновый митап под названием «Kaspersky Tech: Из CMake в Bazel. Переход для большой кодовой базы С++». Наши C++-разработчики из команд Engineering Productivity, которые используют системы сборки плюсового кода CMake и Bazel и переводят большие проекты с одной на другую, расскажут о своем опыте и проблемах, с которыми им довелось столкнуться.



Читать дальше →

Отладка Java-приложений из командной строки

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

Некоторые ошибки трудно воспроизвести на вашем персональном компьютере, но их легко воспроизвести на производственных или тестовых машинах. Это обычная ситуация, с которой часто сталкиваются профессиональные Java-разработчики. Для отладки таких проблем OpenJDK предоставляет два инструмента: remote debugging и jdb. Эта статья посвящена jdb.

Для приложений Java типичными производственными и тестовыми машинами являются серверы Linux без графического интерфейса, поэтому доступны только инструменты командной строки. И мы не можем использовать профессиональные IDE, такие как IntelliJ IDEA, Eclipse или Apache NetBeans IDE.

В таких сценариях мы можем использовать jdbjdb - это отладчик командной строки, входящий в состав OpenJDK.

Это перевод руководства для начинающих. Очевидно эксперты все это знают и им не стоит тратит время на его чтение...

Читать далее

Почему в Visual Studio стек вызовов асинхронного кода иногда перевёрнут?

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

Вместе с моим коллегой Евгением мы потратили много времени. Приложение обрабатывает тысячи запросов в асинхронном конвейере, полном async/await. Во время нашего исследования мы получили странные вызовы, они выглядели как бы “перевернутыми”. Специально к старту нового потока курса по разработке на C#, рассказываем, почему вызовы могут оказаться перевёрнутыми даже в Visual Studio.

Читать далее