Search
Write a publication
Pull to refresh
-2
0

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

Send message

Дизассемблируем циклы, написанные на Си

Reading time4 min
Views14K

Доброго времени суток.

Сегодня мы будем смотреть дизассемблированный код инструкций if, for, while, swich, которые написаны на языке Си. Воспользуемся radare2.

Дизассемблировать код

Мелкая питонячая радость #13: стойкие пароли, гибкие уведомления и вменяемые тесты API

Reading time4 min
Views7.8K

Создатель Python и пенсионер Гвидо Ван Россум был вынужден снова выйти на работу, на этот раз в Майкрософт. Нет, Гвидо сделал это не  потому, что на 15 000 рублей (200 долларов) пенсии  ему  тяжело жить — в MS он устроился от скуки: талантливому инженеру не сидится без дела. Желаю всем нам в старости быть как Гвидо и плавно перехожу к разбору трех весьма полезных штуковин из питонячего мира. 

Читать далее

Управление разработкой в «горизонтальных» компаниях: расшифровка онлайн-встречи. Часть 2

Reading time23 min
Views2.4K

На прошлой неделе мы выпустили расшифровку первой части онлайн-встречи «Управление разработкой в «горизонтальных» компаниях», где приняли участие СТО Райффайзенбанка, Mindbox и руководитель разработки в Циан. 

Сегодня публикуем вторую и последнюю часть митапа: это вопросы «из зала», которые задали слушатели гостям. Пост получился объемным, поэтому, если не хотите читать, то посмотреть видео можно ниже (запустится сразу с нужного момента — там, где закончилась первая часть). 

Читать далее

Каверзные вопросы по Python

Reading time4 min
Views40K

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


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

53 совета как поднять нерабочую сеть

Reading time9 min
Views11K


Ноябрь — месяц особенный. Целых два профессиональных праздника для российских безопасников: День специалиста по безопасности в России — 12 ноября и Международный день защиты информации — 30 ноября.


Находясь между этими датами, невольно задумываешься на тему: а что есть безопасность в принципе? И что приносит больший вред: внешние атаки или сумасшедшие ошибки, странные предрассудки и просто нежелание что-либо сделать хорошо?


Предлагаем вашему вниманию перечень "вредных советов", надеюсь, они вам понравятся.

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

Что такое красивый код и как научиться его писать

Reading time9 min
Views24K
Меня зовут Маша, я автор курса по С++ в Яндекс Практикуме. Все вопросы, задачи курса, его тексты и описания решений — это всё наша команда. И сегодня я хочу поговорить про красоту кода. Обсуждать её я буду по большей части на примере С++, так как я на нем и пишу, чаще всего программируя довольно низкоуровневые проекты для устройств интернета вещей, умного дома и медицинских аппаратов. Но сами правила и подход к пониманию красоты кода актуальны для любого языка.

Если совсем базово, то можно выделить три уровня красоты кода:

  1. Визуальный. Это как раз все про coding conventions, правильные переменные, оформление и прочее.
  2. Восприятие кода. Про ощущения, которые возникают у людей, работающих с вашим кодом.
  3. Продуманность архитектуры. Это тоже критично и тоже относится именно к красоте кода.

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

А теперь давайте по каждому пункту отдельно.


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

Честные отношения с сотрудниками в малом бизнесе: доверяй, проверяй, измеряй. Без «но»

Reading time14 min
Views13K

Как в вашей компании реагируют на отпуск руководителя? Все немедленно перестают работать и утыкаются в YouTube или работают, как и работали до этого? Компании бывают разные и отношения «сотрудник — руководитель» лежат на интервале от состояния войны до глубокого и доверительного партнёрства. И, кажется, что в самых демократичных компаниях всё зиждется на дружбе, весёлых пятницах и взаимном уважении. Отчасти это так, но на самом деле за любой компанией с хорошим рабочим климатом стоит целая наука об управлении: по целям, с мониторингом, KPI и прочими методами работы с персоналом. Именно комплекс этих мер зачастую позволяет всем сотрудникам выдохнуть и работать в кайф — просто потому что руководитель всегда в курсе дел и может смело доверять и делегировать. Работают три принципа: доверяй, проверяй, измеряй. И не все они столь прозрачны и однозначны, как кажется. Погрузимся в детали?

Читать далее

Разработка продукта: в какой парадигме работать?

Reading time13 min
Views6.8K

Бывает, что люди, близкие к теме разработки софта спрашивают: чем проектная работа отличается от создания MVP (Minimal Viable Product)? Понятно, что при этом у каждого спрашивающего свой контекст вопроса — соответственно, отвечать на него надо по-разному. Однако, если обобщить, то проект и разработка продукта сильно отличаются друг от друга. Вообще всем. Это не так-то легко объять, поэтому давайте попробуем разобраться в проблематике.


Проблематизация: проект или разработка продукта


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

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

Автоматизация миграций баз данных с помощью контейнеров и Git

Reading time4 min
Views4.5K

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

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

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

Эта статья берет за основу SQL Server, но эти методы также поддерживаются Postgres и MySQL.

Читать далее

Динамическое создание Spring Bean в рантайме

Reading time3 min
Views7.2K

Перевод подготовлен специально для будущих студентов курса "Разработчик на Spring Framework".

Эта статья о динамическом создании бинов за пять лет стала самой популярной в моем блоге (более 9300 просмотров). Пришло время ее обновить. Также я добавил пример на Github.

Читать далее

Разбираемся с доступом к атрибутам в Python

Reading time8 min
Views21K

Интересно, сколько людей понимают, что в Python много синтаксического сахара? Я не говорю, что он похож на Lisp-подобные языки, где синтаксис настолько голый, насколько это возможно (хотя и сравнение с Lisp не совсем обосновано), но большая часть синтаксиса Python технически не нужна, поскольку под капотом в основном вызовы функций.

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

Именно поэтому, чтобы заняться самообразованием и заодно подумать, что может понадобиться для реализации Python под WebAssembly или API bare bones на C, я решил написать эту статью о том, как выглядит доступ к атрибутам и что скрывается за синтаксисом.

Теперь мы можете попытаться собрать воедино все, что относится к доступу к атрибутам, прочитав справочник по Python. Так вы можете прийти к выражениям ссылок на атрибуты и модели данных для настройки доступа к атрибутам, однако, все равно важно связать все вместе, чтобы понять, как работает доступ. Поэтому я предпочитаю идти от исходного кода на CPython и выяснять, что происходит в интерпретаторе (я специально использую тег репозитория CPython 3.8.3, поскольку у меня есть стабильные ссылки и я использую последнюю версию на момент написания статьи).

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

Читать далее

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

Reading time4 min
Views1.3K

Если вы задавались вопросами производительности труда операторов и управления средним временем обработки контакта (Average Handling Time, AHT), то материал, который вы сейчас читаете, точно для вас.

 Сразу оговоримся, что эта статья не является полноценным исследованием и не охватывает все причины, которые могут повлиять на скорость обработки звонков (например, за рамками остался любимый вопрос автора о Speech Transmission Index (STI), индексе отвлекающих факторов в операторском зале). Она фиксирует зависимости, знание которых поможет вам выжать еще несколько килограммов эффективности при планировании ресурсов КЦ.

 Мы выдвинули 2 гипотезы относительно среднего времени AHT:

Читать далее

Раскладываем по полочкам параметры АЦП

Reading time10 min
Views106K
Привет, Хабр! Многие разработчики систем довольно часто сталкиваются с обработкой аналоговых сигналов. Не все манипуляции с сигналами можно осуществить в аналоговой форме, поэтому требуется переводить аналог в цифровой мир для дальнейшей постобработки. Возникает вопрос: на какие параметры стоит обратить внимание при выборе микроконтроллера или дискретного АЦП? Что все эти параметры означают? В этой статье постараемся детально рассмотреть основные характеристики АЦП и разобраться на что стоит обратить внимание при выборе преобразователя.

image

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

О C++ и объектно-ориентированном программировании

Reading time7 min
Views17K
Привет, Хабр!

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

Укрощаем динамику в задаче о палиндромах

Reading time7 min
Views5K

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


Найти самую длинную палиндромную подпоследовательность в слове w длиной n.


Кому интересно, прошу под кат.

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

Лёгкие приложения Linux для старого железа

Reading time7 min
Views40K

Окружение Xfce

Любую систему можно разогнать, есть стандартные способы оптимизации десктопа: минимум софта в автозагрузке, preload, оптимальное зеркало для пакетов, apt-fast вместо apt-get, настройки для оптимизации отдельных приложений и так далее.

Но всё это мелкие оптимизации по сравнению с фундаментальными столпами:

  1. Лёгкий дистрибутив
  2. Легковесное окружение рабочего стола
  3. Быстрый софт

Это в первую очередь актуально для старого железа, хотя в принципе на каждом ПК мы хотим, чтобы система работала максимально эффективно, разве нет? Даже на современном многоядерном CPU больно видеть запуск программы в несколько секунд или задержку интерфейса 100-200 миллисекунд после нажатия по клавиатуре. Всё должно реагировать мгновенно, со скоростью человеческого восприятия. В нативных приложениях нет места лагам, как у веб-интерфейсов.

Поэтому — легковесное окружение и быстрый софт.
Читать дальше →

Windows: достучаться до железа

Reading time11 min
Views57K

Меня всегда интересовало низкоуровневое программирование – общаться напрямую с оборудованием, жонглировать регистрами, детально разбираться как что устроено... Увы, современные операционные системы максимально изолируют железо от пользователя, и просто так в физическую память или регистры устройств что-то записать нельзя. Точнее я так думал, а на самом деле оказалось, что чуть ли не каждый производитель железа так делает!

Читать далее

Книга «Android. Программирование для профессионалов. 4-е издание»

Reading time13 min
Views13K
image Привет, Хаброжители! Познакомьтесь с возможностями программирования Android на языке Kotlin! Множество примеров приложений с четкими объяснениями ключевых концепций и API позволят легко разобраться в самых трудных задачах.

Эта книга посвящена прикладным методам разработки приложений на Kotlin, и подойдет для всех версий Android от 5.0 (Lollipop) до 8.1 (Oreo) и выше. Используйте Android Studio для создания приложений, чтобы проверять код на каждом этапе, интегрировать его с другими приложениями, работать с изображениями, воспроизводить аудио и делать многое другое. Каждая глава продумана (и протестирована) так, чтобы вы смогли получить максимум опыта и знания, необходимые для разработки под Android.
Читать дальше →

Почему множество Мандельброта устроено так, как оно устроено

Reading time5 min
Views35K
Оболочка Мандельброта


Созерцание фракталов завораживает, особенно это относится к предмету данной статьи, который демонстрирует вдобавок ко всему еще и изрядное разнообразие. Впрочем, не менее интересно попытаться разобраться, откуда что берётся, как из одного, в сущности, (пусть и комплексного) числа рождается всё это великолепие.
Если любопытно, добро пожаловать под кат.
Читать дальше →

У вас автоматизация… Отклеилась

Reading time3 min
Views11K
Твои менеджеры — вялые, ленивые и безынициативные? С ними не о чем поговорить? Не генерируют новых идей, направлений и тем? Не хотят ничего менять, думать, перестраиваться? Фантазии — кот наплакал?

Ты просто не умеешь их готовить. Нет, не надо бежать в аптеку за магнием B6. Просто поставь им правильную цель и скажи, что уволишь, если не достигнут. Результат тебя удивит. А метод его достижения приведёт в восторг.
Читать дальше →

Information

Rating
Does not participate
Location
Томская обл., Россия
Registered
Activity