Pull to refresh
14
0
Алексей Попов @valexv

Data Engineer, BigData, Spark

Send message

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

Reading time9 min
Views50K


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

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

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

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

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

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

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

Level of difficultyHard
Reading time33 min
Views21K

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

Читать далее
Total votes 71: ↑65 and ↓6+76
Comments107

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

Level of difficultyMedium
Reading time13 min
Views13K

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

Читать далее
Total votes 35: ↑33 and ↓2+41
Comments6

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

Level of difficultyHard
Reading time21 min
Views5.4K

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

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

Level of difficultyMedium
Reading time46 min
Views37K

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

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

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

Читать далее
Total votes 18: ↑18 and ↓0+19
Comments19

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

Reading time8 min
Views2.5K

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

Читать далее
Total votes 8: ↑6 and ↓2+5
Comments0

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

Reading time5 min
Views198K
Вместо предисловия

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


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

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

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


Кто такой FastAPI?


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


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

Читать дальше →
Total votes 14: ↑12 and ↓2+14
Comments58

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

Reading time26 min
Views6.7K

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

Читать далее
Total votes 46: ↑42 and ↓4+54
Comments4

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

Level of difficultyMedium
Reading time27 min
Views16K

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

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

Reading time14 min
Views7.3K

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

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

Читать далее
Total votes 21: ↑21 and ↓0+31
Comments3

Монады в Scala

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

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

Reading time29 min
Views21K

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

Читать далее
Total votes 107: ↑101 and ↓6+119
Comments21

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

Level of difficultyMedium
Reading time21 min
Views14K


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

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

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

Reading time7 min
Views4.6K
image

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

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

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

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

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

Level of difficultyEasy
Reading time11 min
Views16K

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

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

Level of difficultyMedium
Reading time11 min
Views60K

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

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

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

погрузиться в микросервисы
Total votes 236: ↑232 and ↓4+260
Comments207

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

Reading time13 min
Views42K

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


Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments0

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

Reading time5 min
Views229K

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

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

Читать далее
Total votes 399: ↑388 and ↓11+473
Comments107

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

Level of difficultyEasy
Reading time8 min
Views31K
Стресс, связанный с переходом на менеджерскую роль, способен пошатнуть любые, даже самые крепкие нервы. А если ваше решение стать руководителем желанное и осознанное, то вы легко можете загнать себя в ловушку из двух стен: тревожности и перфекционизма.

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

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


Читать дальше →
Total votes 44: ↑43 and ↓1+52
Comments17

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

Reading time5 min
Views44K

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

Читать далее
Total votes 110: ↑101 and ↓9+121
Comments75
1
23 ...

Information

Rating
Does not participate
Location
Воронеж, Воронежская обл., Россия
Date of birth
Registered
Activity