Pull to refresh
508.3
Karma
62.4
Rating
Andrey Karpov @Andrey2008

DevRel

  • Followers 252
  • Following 87
  • Posts
  • Comments

Чем быстрее вы забудете ООП, тем лучше для вас и ваших программ

Programming *Perfect code *ООP *
Translation

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

— Эдсгер Вибе Дейкстра

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

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

Многие люди и раньше обсуждали проблемы ООП, и в конце этого поста я приведу список своих любимых статей и видео. Но прежде я хочу поделиться собственным взглядом.
Читать дальше →
Total votes 194: ↑131 and ↓63 +68
Views 190K
Comments 1272

C++20. Coroutines

Programming *C++ *
🔥 Technotext 2020
Tutorial

В этой статье мы подробно разберем понятие сопрограмм (coroutines), их классификацию, детально рассмотрим реализацию, допущения и компромиссы, предлагаемые новым стандартом C++20.


image

Читать дальше →
Total votes 48: ↑45 and ↓3 +42
Views 28K
Comments 26

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

Parallels corporate blog IT career Reading room


Даже выбирая заголовок для этой статьи пришлось столкнуться с дилеммой относительно правильности использованной терминологии. «Инвалид», «Человек с ограниченными возможностями», «Человек с инвалидностью», «Человек с ограничениями по здоровью» или «Человек с особыми потребностями», как правильно?

Например, Комитет ООН по правам инвалидов рекомендует использовать определение «человек с инвалидностью». Сами же люди с инвалидностью термин «инвалид» недолюбливают.

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

За мировой стандарт принято правило «people-first language» ─ когда говорят о ком-то, первым делом называют его человеком, а уже затем говорят про его болезни или особенности. Таким образом, сегодня в ходу нейтральное выражение – «people with special needs» (люди с особыми потребностями) или люди с инвалидностью.

При этом, пару лет назад Минтруду РФ пришлось даже опровергать в прессе новости о том, что они планируют исключить употребление термина «инвалид».

Под катом краткий рассказ о том, как мы искали в нашу компанию людей с этими самыми особыми потребностями.
Читать дальше →
Total votes 52: ↑51 and ↓1 +50
Views 12K
Comments 140

Эксперты обнаружили критическую уязвимость в подсистеме iSCSI ядра Linux, баг в коде был с 2006 года

Information Security *Open source *System administration *GitHub Development for Linux *
Из примера по разбору кода с пятнадцатилетним багом, который позволяет использовать уязвимость. Переполнения, переполнения везде.

12 марта 2021 года специалист по кибербезопасности из компании GRIMM Адам Николс (Adam Nichols) рассказал об обнаруженной недавно критической уязвимости CVE-2021-27365 (переполнение буфера кучи, повышение локальных привилегий) в подсистеме iSCSI ядра Linux. Баг в коде был с 2006 года. В настоящее время затронутыми оказались все дистрибутивы Linux, но, к счастью, уязвимый модуль ядра scsi_transport_iscsi не загружается по умолчанию.

Также в коде подсистемы iSCSI ядра Linux были обнаружены еще две менее серьезные уязвимости — CVE-2021-27363 (утечка указателя ядра) и CVE-2021-27364 (чтение за пределами допустимого диапазона).
Читать дальше →
Total votes 17: ↑16 and ↓1 +15
Views 13K
Comments 7

Основываясь на статистике: неофициальное предложение Топ-10 OWASP 2021

Валарм corporate blog Information Security *Website development *Research and forecasts in IT IT-companies

image


Многим из нас встречался список угроз Топ-10 OWASP. А некоторые даже знают, что он обновляется каждые 3-4 года. И срок следующего обновления уже подошел. Но процесс создания списка угроз OWASP плохо документирован, поэтому нам захотелось предложить прозрачный, основанный на статистике рейтинг для тех же категорий угроз.
Мы проанализировали 2 миллиона различных отчетов о безопасности из 144 открытых источников. Под катом вы найдете наш вклад в анализ Топ-10 угроз OWASP на 2021 год. При этом каждый из читающих сможет воспроизвести результаты на основе понятных метрик.

Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Views 2.9K
Comments 0

Гугл-программисты. Как идиот набрал на работу идиотов

Programming *Development Management *Personnel Management *IT career
В стародавние времена я, на постоянной основе, занимался техническими собеседованиями – отбирал кандидатов на должность программиста в компанию. У меня была простая, понятная, шикарная методика (не мной придуманная). Чувак сначала проходил длинное собеседование по куче разнообразных вопросов, потом решал несколько задач. На бумаге, как мы делали в ВУЗе.

Оглядываясь назад, понимаю – отбор действительно работал шикарно. Все, кого я тогда отобрал, стали уважаемыми в нашей деревне специалистами. Больше половины из них давно открыли собственный it-бизнес, в самых разных сферах – от 1С до разработки CRM-систем.

Вот этот опыт и замутил моё сознание. Настолько, что я решил поменять методику – подумал, что дело не в ней, а во мне. Я есть великий специалист по техническим собеседованиям.
Читать дальше →
Total votes 386: ↑297 and ↓89 +208
Views 162K
Comments 647

Линукс-порт Far Manager: прогресс за 4 года

Development for Linux *
Первая публикация исходников far2l, порта Far Manager под Линукс — штуки, которая когда-то считалась принципиально невозможной — состоялась 10 августа 2016го. Поскольку главный разработчик поговаривает о переходе проекта в статус беты, решил написать обзорный пост, как там идут дела и чего удалось добиться за прошедшие четыре года.

Консольная версия


Первый же вопрос, который все задавали и здесь, и на опеннете, и на лоре — а чего не в консоли? Изначально far2l действительно работал только в графическом режиме, через wxWidgets. Это оказалось самым простым способом быстро получить работающий порт со всеми пользовательскими удобствами: иксовым буфером обмена и всеми сочетаниями клавиш, причем с поддержкой событий не только KeyDown, но и KeyUp.

Сейчас это ограничение в прошлом: far2l прекрасно себя чувствует в консоли. Более того, там появились так называемые расширения терминала far2l, поэтому если запускать консольный far2l внутри графического (например, зайдя куда-нибудь по ssh), они «сконнектятся» между собой, и внутренний far2l тоже будет видеть и буфер обмена (с разрешения пользователя, конечно), и все возможные горячие клавиши. Более того, сделана даже специальная сборка putty, позволяющая наслаждаться всеми этими фишками из Windows.

Вот, смотрите, это far2l в GNOME Terminal


Читать дальше →
Total votes 236: ↑235 and ↓1 +234
Views 54K
Comments 547

От Threat Modeling до безопасности AWS: 50+ open-source инструментов для выстраивания безопасности DevOps

Swordfish Security corporate blog Information Security *System administration *DevOps *Kubernetes *

Привет, Хабр! Я консультант по информационной безопасности в Swordfish Security по части выстраивания безопасного DevOps для наших заказчиков. Я слежу за тем, как развивается тенденция развития компаний в сторону DevSecOps в мире, пытаюсь транслировать самые интересные практики в русскоговорящее сообщество и помогаю выстраивать этот процесс с нашей командой у заказчиков. За последние 2 года тема DevSecOps стала привлекать все больше внимания. Новые инструменты не успевают стать частью быстро растущего набора практик, из-за чего у меня появилось желание поставить некоторую контрольную точку в виде списка инструментов. Отправной точкой стал выход статьи коллег из Mail.ru, где отдельно был выделен раздел по безопасности Kubernetes. Я решил расширить этот список, охватив другие этапы жизненного цикла SDLC и приведя пару новых инструментов.

Читать далее
Total votes 19: ↑19 and ↓0 +19
Views 8.6K
Comments 10

Коронавирус COVID-19: только факты, без паники

Habr corporate blog Health
Паника — худшее, что может случиться во время пандемии. Хабр всегда был и остается местом, где людям важны факты, а не домыслы. Факты такие: коронавирус оказался заразным и в некоторых случаях — смертельным. Государства избирательно закрывают границы, авиакомпании отменяют рейсы, массовые мероприятия переносятся. Лучшее, что можно сделать — как следует подготовиться. Ниже мы собираем самые внятные и полезные статьи, которые выходили на площадке в последнее время. Материал будет дополняться.
Читать дальше →
Total votes 118: ↑105 and ↓13 +92
Views 296K
Comments 220

Burn Out IT-специалистов: 4 истории от управленца, разработчика, продакта и админа. И рецепт от Southbridge

Southbridge corporate blog Project management *Personnel Management *IT career Health

Работа не приносит удовольствия. Рваный сон не приносит облегчения. Цвета поблекли — всё кажется серым и надоевшим. Ничего не получается, как будто тело стало чужой, незнакомой оболочкой. Код не пишется. Новые задачи воспринимаются со страхом и неуверенностью. С коллегами общаешься через силу — хочется закрыться, спрятаться, чтобы никто не трогал. Даже в почте и мессенджерах отвечать тяжело. Кажется, тебе уже никогда не стать прежним. Видишь успехи других — и понимаешь, насколько глупым и неумелым выглядишь со стороны. Срываешься на родных и друзьях — а потом ненавидишь себя за это. Крутишься белкой в мясорубке день за днём — и не видишь ни результата, ни выхода.


Знакомьтесь, если ещё не встречались. Это синдром профессионального выгорания.


В IT-сфере около 50% специалистов испытали на себе профессиональное выгорание. Этот синдром опасен самому сотруднику, и проекту, над которым он работает, и всей компании. Более 60% выгоревших сотрудников увольняются. А затраты на найм новых, обучение и онбординг чугунной гирей ложатся на бюджет. И время — оно вообще бесценно.


Раньше burn out не воспринимали всерьёз — считалось, что это способ особо хитроумных сотрудников поменьше делать и побольше отдыхать. Постепенно в наших пампасах культура психологический гигиены в бизнесе доросла хотя бы до признания, что профессиональное выгорание и депрессия — это реальные проблемы.



На митапе «День Техдира» Даниил Подольский, руководитель разработки MTGroup, сделал доклад по профессиональному выгоранию. Мне его выступление было интересно тем, что это взгляд управленца на проблему, а не просто рассказ рядового сотрудника о своём личном примере выгорания.


Читать дальше →
Total votes 43: ↑40 and ↓3 +37
Views 24K
Comments 35

Шпаргалка по аббревиатурам C++ и не только. Часть 1: C++

Programming *C++ *
Tutorial
Когда-то я собеседовался на должность C++ разработчика в одну приличную и даже известную контору. Опыт у меня тогда уже кое-какой был, я даже назывался ведущим разработчиком у тогдашнего своего работодателя. Но на вопросы о том, знаком ли я такими вещами, как DRY, KISS, YAGNI, NIH, раз за разом мне приходилось отвечать «Нет».

Собеседование я с треском провалил, конечно. Но упомянутые аббревиатуры потом загуглил и запомнил. По мере чтения тематических статей и книг, подготовок к собеседованиям и просто общения с коллегами я узнавал больше новых вещей, забывал их, снова гуглил и разбирался. Пару месяцев назад кто-то из коллег небрежно упомянул в рабочем чате IIFE в контексте C++. Я, как тот дед в анекдоте, чуть с печки не свалился и опять полез в гугл.


Читать дальше →
Total votes 52: ↑52 and ↓0 +52
Views 38K
Comments 27

Не работайте в плохих проектах

IT career

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


Читать дальше →
Total votes 220: ↑197 and ↓23 +174
Views 90K
Comments 573

Open source не приносит денег, потому что не создан для этого

Open source *Finance in IT
Translation
Лучший способ что-то сделать — хотя бы попробовать

Все знают, что на open source невозможно заработать, верно?

Я сейчас размышляю на эту тему, потому что Mozilla хочет в ближайшие несколько лет диверсифицировать доходы, но у нас одно ограничение — все разработки обязательно публикуются в open source. Это десятки (сотни?) успешных проектов с открытым исходным кодом. Многие пытались хоть что-то заработать, некоторые очень пытались. Результаты так себе.

Я и сам прямо сейчас пытаюсь запустить в Mozilla коммерческую инициативу (если написание планов и отправку их в эфир можно считать «запуском»), и мне часто задают вопрос: можно ли продать что-то с открытым исходным кодом?
Читать дальше →
Total votes 45: ↑39 and ↓6 +33
Views 15K
Comments 116

Пробуем контрактное программирование С++20 уже сейчас

Programming *C++ *
Tutorial


В С++20 появилось контрактное программирование. На текущий момент ни один компилятор ещё не реализовал поддержку этой возможности.


Но есть способ уже сейчас попробовать использовать контракты из C++20, так как это описано в стандарте.

Заинтересовавшихся прошу под кат
Total votes 61: ↑60 and ↓1 +59
Views 27K
Comments 53

Внедряйте статический анализ в процесс, а не ищите с его помощью баги

IT systems testing *Java *DevOps *
Написать эту статью меня сподвигло большое количество материалов о статическом анализе, всё чаще попадающихся на глаза. Во-первых, это блог PVS-studio, который активно продвигает себя на Хабре при помощи обзоров ошибок, найденных их инструментом в проектах с открытым кодом. Недавно PVS-studio реализовали поддержку Java, и, конечно, разработчики IntelliJ IDEA, чей встроенный анализатор является на сегодня, наверное, самым продвинутым для Java, не могли остаться в стороне.

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

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


Храповик (источник: википедия).
Читать дальше →
Total votes 76: ↑75 and ↓1 +74
Views 18K
Comments 32

Машинное обучение для поиска ошибок в коде: как я стажировался в JetBrains Research

Питерская Вышка corporate blog Machine learning *Studying in IT
Недавно мы рассказывали о том, как попасть на стажировку в Google. Помимо Google наши студенты пробуют свои силы в JetBrains, Яндекс, Acronis и других компаниях.

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


Читать дальше →
Total votes 17: ↑17 and ↓0 +17
Views 5.4K
Comments 8

Заметки фитохимика. Зеленый банан, или Не забудь покормить микробиоту

Popular science Biotechnologies Lifehacks for geeks Health Chemistry
Tutorial

Как то уж так повелось со времен голодной студенческой юности, что я чаще на остатки денег покупал себе бананы, а не чипсы или гречку. Причин этому наверное может быть много, от "в Беларуси бананы дешевле картошки", до "банан как и шоколад способствует мозговой активности". Но факт остается фактом. Если хурма фрукт сезонный, то банан — это такая штука которая сопровождает нас по жизни постоянно. Как не отдать долг и не черкнуть заметку. Кроме того, про проведенному мной среди знакомых мини-опросу, одним из основных фруктов, которые с вероятностью 99% будут практически на каждом Новогоднем столе, также является банан. А ведь правильный банан еще нужно найти...


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



Ну а за ответом — традиционно, под кат.

Читать дальше →
Total votes 118: ↑117 and ↓1 +116
Views 84K
Comments 102

Силовой модуль разработчика. Работа над ошибками

Programming microcontrollers *Circuit design *Manufacture and development of electronics *DIY Electronics for beginners
Приветствую! В моих предыдущих статьях (раз и два) вы ознакомились с силовым модулем полумоста, который позволяет построить преобразователь практически любой топологии. Я показал как можно быстро и без особых усилий получить макет силового преобразователя и обкатать идею, а в процессе их реализации были выявлены определенные недостатки.

Увы, но даже в достаточно простых устройствах требуется 2-я ревизия железа, чтобы «подчистить» плохие реализации того или иного функционала, улучшить компоновку и конструктив. В итоге была проведена работа по оптимизации технических параметров и по улучшению удобства работы с модулем. Сегодня в статье я как раз расскажу подробнее о данных изменениях, объясню почему именно так, а в конце статьи вы увидите обновленные исходники. Поехали!



Читать дальше →
Total votes 61: ↑58 and ↓3 +55
Views 28K
Comments 76

Реализация оператора in в С++

Abnormal programming *C++ *
Привет! Сегодня я надеюсь показать вам немного магии. Моим хобби является придумывание всяких казалось бы невозможных штук на С++, что помогает мне в изучении всевозможных тонкостей языка ну или просто развлечься. Оператор in есть в нескольких языках, например Python, JS. Но в С++ его не завезли, но иногда хочется чтобы он был, так почему бы его не реализовать.

	std::unordered_map<std::string, std::string> some_map = 
	{
		{ "black", "white" },
		{ "cat", "dog" },
		{ "day", "night" }
	};

	if (auto res = "cat" in some_map)
	{
		res->second = "fish";
	}

Читать дальше →
Total votes 77: ↑75 and ↓2 +73
Views 22K
Comments 35

Доклады с весенней конференции С++ Russia 2018

PVS-Studio corporate blog C++ *Conferences

С 19 по 21 апреля в Санкт-Петербурге прошла конференция С++ Russia 2018. Из года в год организация и проведение становится на уровень выше, что не может не радовать. Спасибо бессменному организатору С++ Russia Сергею Платонову за его вклад в развитие этого направления.
Читать дальше →
Total votes 49: ↑47 and ↓2 +45
Views 14K
Comments 3

Information

Rating
78-th
Location
Тула, Тульская обл., Россия
Works in
Date of birth
Registered
Activity