Как стать автором
Обновить
14
0
Алексей Попов @valexv

Data Engineer, BigData, Spark

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

Пара тупых ответов про эволюцию

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


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

Проблема в том, что у него есть глаз. И другие сложные органы. А у тех же птиц есть крылья. И никакой жадный алгоритм не даёт понять, как можно тысячелетиями отращивать половинку крыла. Эта штука не просто не помогает, а откровенно мешает.

Крыло работает только тогда, когда целое. Половина крыла не даёт оторваться от земли.

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

Ну или вот хвост павлина. Как можно развить такую длинную бесполезную штуку, которая люто нравится хищникам? Разве не должны были выжившие павлины стать ловкими и короткохвостыми?

Свои ответы я получил уже довольно поздно, но помню, как был рад их услышать. И наблюдая за идущим сейчас холиваром про теорию Дарвина, вижу много людей, которые задают те же самые вопросы.
Читать дальше →
Всего голосов 271: ↑268 и ↓3+328
Комментарии596

«Голая Java» или разработка без всего

Уровень сложностиСложный
Время на прочтение33 мин
Количество просмотров21K

Рассказываю что можно сделать на одном только голом JDK. Это старое и ныне почти забытое искусство разработки без внешних библиотек и фреймворков. Работать будем «как в былинные времена» — киркой и лопатой голыми руками и немного мозгом.

Читать далее
Всего голосов 71: ↑65 и ↓6+76
Комментарии107

Что должен знать каждый разработчик о вычислениях на GPU

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

Большинство программистов отлично разбираются в работе процессоров и последовательном программировании, поскольку с самого начала пишут код для CPU. Однако многие из них меньше знают о том, как устроены графические процессоры (GPU) и в чем заключается их уникальность. За последнее десятилетие GPU стали чрезвычайно важны благодаря широкому применению в глубоком обучении, и сегодня каждому разработчику необходимо обладать базовыми знаниями о том, как они работают. Цель этой статьи — дать вам это понимание. 

Читать далее
Всего голосов 35: ↑33 и ↓2+41
Комментарии6

Секреты Тима Фоллина, бипер, Спектрум и QChan

Уровень сложностиСложный
Время на прочтение21 мин
Количество просмотров5.4K

Сегодня — экстремальный geek out: максимально узкоспециальная тема с запутанным кодом на ассемблере Z80. Раскроем секреты Тима Фоллина в «биперной» музыке на Sinclair ZX Spectrum 48K, попытаемся повторить, а может быть и превзойти его достижения. Некогда объяснять, разберёмся по ходу кода!
Читать дальше →
Всего голосов 64: ↑64 и ↓0+90
Комментарии54

Kerberos простыми словами

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

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

Данную статью я написал после того, как сделал собственную библиотеку, генерирующую сообщения протокола Kerberos, а также после того, как я протестировал «стандартный клиент» Kerberos в Windows — набор функций SSPI. Я научился тестировать произвольные конфигурации сервисов при всех возможных видах делегирования. Я нашёл способ, как выполнять пре‑аутентификацию в Windows как с применением имени пользователя и пароля, так и с помощью PKINIT. Я также сделал библиотеку, которая умещает «стандартный» код для запроса к SSPI в 3–5 строк вместо, скажем, 50-ти.

Хотя в названии статьи фигурирует «простыми словами» однако эта статья предполагает, что читатель уже имеет какое‑то представление о Kerberos.

Читать далее
Всего голосов 18: ↑18 и ↓0+19
Комментарии19

Что нового в Apache Spark 3.4.0 — Spark Connect — Доработки для Shuffle

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

Spark Connect — это, пожалуй, самая ожидаемая фича Apache Spark 3.4.0. Она была анонсирована на конференции Data+AI Summit 2022 и сейчас широко освещается в социальных сетях. Вот и я решил приобщиться и внести свой небольшой вклад в это дело, продемонстрировав вам несколько интересных деталей реализации.

Читать далее
Всего голосов 8: ↑6 и ↓2+5
Комментарии0

Знакомство с FastAPI

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

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


Исходные данные:

  • Гитхаб умеет сообщать обо всём, что происходит в репозитории с помощью вебхуков
  • Вся необходимая для формирования релиза информация содержится в теле запроса, который кидает вебхук
  • Авторизация идёт через подпись запроса секретом, который проставляется в настройках вебхука

Соответственно, задача заключается в том, чтобы поднять HTTP API, который сможет принять POST запрос, проверить подпись, извлечь нужную информацию из тела запроса и передать её дальше по инстанции. Как тут не попробовать FastAPI, на который я давно глаз положил?


Кто такой FastAPI?


FastAPI — это фреймворк для создания лаконичных и довольно быстрых HTTP API-серверов со встроенными валидацией, сериализацией и асинхронностью,
что называется, из коробки. Стоит он на плечах двух других фреймворков: работой с web в FastAPI занимается Starlette, а за валидацию отвечает Pydantic.


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

Читать дальше →
Всего голосов 14: ↑12 и ↓2+14
Комментарии58

Ударим революционным БИЧом по хвостатой классике

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

Облик самолёта с фюзеляжем и расположенными сзади килем и стабилизатором утвердился быстро и прочно – его называют даже не «классической», а «нормальной» аэродинамической схемой. Но всегда находились чудаки, создававшие разного рода «ненормальные» аэропланы. Самые «чудачные» из них размышляли так: чтобы подняться в небо, самолёту не нужно ничего, кроме крыла, остальное только мешает своим весом и сопротивлением. Так почему бы не избавиться от всего лишнего? Тогда моторы, топливо, экипаж, полезная нагрузка разместятся внутри несущей поверхности. Такая схема получила название «летающее крыло», а сто лет назад её познакомил с небом Борис Черановский – авиаконструктор и мечтатель.

Читать далее
Всего голосов 46: ↑42 и ↓4+54
Комментарии4

Простой советский геймдев: многокадровый, цветной

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

Около года назад, в одной из прошлых своих публикаций, я уже вскользь касался темы самой совершенной советской видеоигровой аркадной платформы, ТИА-МЦ1. Недавно поступило предложение рассказать про это поподробнее: какое я имею к ней отношение, как и когда удалось создать её эмулятор для современных ПК, как она устроена, в конце концов. Приступаем!
Читать дальше →
Всего голосов 108: ↑108 и ↓0+141
Комментарии38

История Роберта Нойса: создателя интегральных схем и основателя Intel

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

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

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

Читать далее
Всего голосов 21: ↑21 и ↓0+31
Комментарии3

Монады в Scala

Время на прочтение4 мин
Количество просмотров50K
На Хабре много статей по монады с примерами для Haskell (http://habrahabr.ru/post/183150, http://habrahabr.ru/post/127556), но не так много статей, которые описывают, что такое монады с примерами на Scala. По сколько большинство разработчиков на Scala пришли из мира объектно ориентированного программирования, то для них, по началу, сложно понять что такое монады и для чего они нужны, эта статья как раз для таких разработчиков. В этой статье я хочу показать, что это такое и навести примеры использования монады Option, в следующих статьях будут описаны монады Try и Future.
Читать дальше →
Всего голосов 23: ↑20 и ↓3+17
Комментарии15

Эбен-Эмаль: или как я перестал волноваться и полюбил кумулятивный заряд

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

Военная история изобилует примерами удивительных событий, на первый взгляд, не поддающихся логике и здравому смыслу. Один из них будет описан в этой статье. Сегодня мы рассмотрим события утра 10 мая 1940 года, когда в ходе плана «Гельб» небольшая группа немецких десантников высадилась на крышу бельгийского форта Эбен-Эмаль — крепости, спроектированной по последнему слову тогдашней фортификации, с гарнизоном численностью более 1200 человек, расположенную в идеальной для обороны местности и считавшуюся неприступной.

Читать далее
Всего голосов 107: ↑101 и ↓6+119
Комментарии21

Сам написал, сам полетал: как и зачем я разработал 3D-игру с нуля под компьютеры из 90-х в 2024 году?

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


Осторожно: Несмотря на кажущуюся сложность статьи о разработке целой 3D-игры с нуля, я постарался систематизировать и упростить материал так, чтобы понятно было любому заинтересованному читателю, даже если вы далеки от программирования в целом!

Статьи о разработке инди-игр — это всегда интересно. Но разработка чего-то абсолютно с нуля, без каких-либо движков или фреймворков — ещё интереснее! Почти всю свою жизнь, буквально с 13-14 лет меня тянет пилить какие-нибудь прикольные 3D-демки и игрушки. Ещё на первом курсе ПТУ я написал небольшую демку с 3D-вертолетиками по сети и идея запилить какие-нибудь прикольные леталки не покидала меня по сей день! Спустя 6 лет, в 22 года я собрался с силами и решил написать небольшую аркадную демку про баталии на самолетиках, да так, чтобы работало аж на видеокартах из 90-х — NVidia Riva 128 и 3DFX Voodoo 3! Интересно, как происходит процесс разработки игры с нуля — от первого «тридэ» треугольника, до работающей на реальном железе демки? Тогда добро пожаловать под кат!
Читать дальше →
Всего голосов 81: ↑79 и ↓2+103
Комментарии30

Гончар Джозайя Уэджвуд, который на практике научился декомпозиции производственного процесса

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

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

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

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

В конце концов, сама королева покупает их и пьёт из них чай.
Читать дальше →
Всего голосов 45: ↑42 и ↓3+55
Комментарии7

Times New Roman, Arial и другие: как возникли самые распространённые компьютерные шрифты?

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров16K

При всей современной «клиповой культуре», стриминговых видео и графических мемах интернет — прежде всего текстовая среда. А где есть текст, там всегда есть шрифт. Какие-то, как Times New Roman, знают и используют практически все. Какие-то, как используемый для интерфейсов Windows Segoe, мы видим очень часто, но обычно не знаем их названий. Некоторые даже вызывают массу эмоций, как мемно ненавидимый Comic Sans. Но в сети и за монитором мы видим тексты, набранные теми или иными шрифтами, почти всегда. Как возникли самые популярные и мемные гарнитуры шрифтов, и почему именно они вошли в топ самых используемых в электронных текстах?
Читать дальше →
Всего голосов 108: ↑106 и ↓2+140
Комментарии47

Микросервисы в представлении среднего разработчика, и как всё на самом деле

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

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

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

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

погрузиться в микросервисы
Всего голосов 236: ↑232 и ↓4+260
Комментарии207

Kubernetes: почему так важно настроить управление ресурсами системы?

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

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


Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии0

[Пятничное] Теория Жоп

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

Эту полу-шуточную теорию о проектном управлении я излагал коллегам по ИТ цеху лет 15 назад, и тогда же неоднократно слышал советы загрузить этот текст на Хабр, но руки не дошли. На днях, разгребая старые файлы наткнулся на свои записи и решил все таки поделиться ими с Вами. Частое употребление ключевого слова к сожалению, неизбежно и не отделимо для целостности этого текста, прошу принимать или нет 'as is'. Итак...

Каждая карьера развивается от Жопы к Жопе, и никак иначе. Хочешь повышения - ищи Жопу и принимай, как говорят в Америке, "challenge". Если Вам предлагают возглавить новый проект, либо занять какую то должность, да что угодно - знайте, там Вас ждет Жопа. Иначе не предложили бы, а сами бы справились. Равно как и если Вы ожидаете избавиться от надоевшей Вам сейчас деятельности, надеясь вырваться из "этого ада" и заняться "чем то новеньким" - будьте готовы встретиться с Большой Жопой.

Читать далее
Всего голосов 399: ↑388 и ↓11+473
Комментарии107

«Я стал тимлидом и боюсь». Что почитать и зачем

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров31K
Стресс, связанный с переходом на менеджерскую роль, способен пошатнуть любые, даже самые крепкие нервы. А если ваше решение стать руководителем желанное и осознанное, то вы легко можете загнать себя в ловушку из двух стен: тревожности и перфекционизма.

Меня зовут Александр Шиндин, я — технический менеджер мобильных продуктов Kaspersky Password Manager и Kaspersky Who Calls. Я так сильно хотел проявить себя в роли руководителя, что внутренних обучающих курсов, которые дает в таких случаях компания, мне не хватало, — и лучшим дополнением к теории стали книги. Они ускорили мое погружение в мир менеджмента, помогли быть готовым к еще большему числу нестандартных ситуаций и придали уверенности в принимаемых решениях.

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


Читать дальше →
Всего голосов 44: ↑43 и ↓1+52
Комментарии17

Самолёт принял решение приземлиться

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

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

Читать далее
Всего голосов 110: ↑101 и ↓9+121
Комментарии75
1
23 ...

Информация

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