Pull to refresh
59
0.1
Alexander @speshuric

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

Send message

Как мы работаем со Stateful в Kubernetes: особенности и подводные камни

Level of difficultyMedium
Reading time15 min
Views5.7K

Всем привет! На связи Олег Сапрыкин, технический директор по инфраструктуре и тимлид DevOps-команд во «Фланте». В марте 2024 года мы с Андреем Радыгиным (ex-главный архитектор по внедрению Deckhouse) выступили на конференции DevOpsConf. Эта статья — текстовый вариант нашего доклада о развитии и нашем опыте использования Stateful в Kubernetes.

Мы рассказали, как оценивать Stateful-компонент, прежде чем запускать его в Kubernetes, показали нюансы работы с такими приложениями, а также поделились особенностями конфигурирования и опытом использования некоторых Stateful-операторов — ClickHouse, Redis, Kafka, PostgreSQL и MySQL.

Читать далее
Total votes 37: ↑36 and ↓1+51
Comments4

Реверс-инжиниринг нативно скомпилированных .NET-приложений

Level of difficultyHard
Reading time9 min
Views4.4K


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


На платформе .NET 7 впервые была представлена новая модель развертывания: опережающая нативная компиляция. Когда приложение .NET компилируется нативно по методу AOT, оно превращается в автономный нативный исполняемый файл, оснащённый собственной минимальной средой исполнения для управления выполнением кода.
Читать дальше →
Total votes 29: ↑26 and ↓3+37
Comments4

Практическое руководство по Rust. Бонус

Level of difficultyMedium
Reading time34 min
Views7.9K



Hello world!


Представляю вашему вниманию бонусную часть практического руководства по Rust.



Другой формат, который может показаться вам более удобным.


Руководство основано на Comprehensive Rust — руководстве по Rust от команды Android в Google и рассчитано на людей, которые уверенно владеют любым современным языком программирования. Еще раз: это руководство не рассчитано на тех, кто только начинает кодить 😉

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

А в чем проблема работать с файлами?

Level of difficultyMedium
Reading time53 min
Views31K

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

Меня увлекла тема отказоустойчивости, а конкретно - отказоустойчивой работы с файлами. В этой статье я попытался соединить все полученные знания:

Кто участвует в процессе записи

Ошибки, которые могут произойти

Что от нас зависит, а что нет

И самое главное - как это этого защититься

Читать далее
Total votes 141: ↑140 and ↓1+169
Comments23

Большой код. Учимся генерировать F#-исходники с помощью Fantomas. Часть 3. Модули и типы

Level of difficultyHard
Reading time20 min
Views1.2K

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

Мы возьмём сугубо игровую задачу с понятным результатом и на её примере узнаем:

• на какие ноды AST стоит обратить внимание в первую очередь;
• где Fantomas-у нельзя доверять;
• где можно хакать;
• где лучше придерживаться пуризма;
• и как на F# можно строить Fluent API.

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

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments2

Практическое руководство по Rust. 1/4

Level of difficultyMedium
Reading time21 min
Views21K



Hello world!


Представляю вашему вниманию первую часть практического руководства по Rust.



Другой формат, который может показаться вам более удобным.


Руководство основано на Comprehensive Rust — руководстве по Rust от команды Android в Google и рассчитано на людей, которые уверенно владеют любым современным языком программирования. Еще раз: это руководство не рассчитано на тех, кто только начинает кодить 😉

Читать дальше →
Total votes 24: ↑19 and ↓5+22
Comments12

Программисты всё вымирают и вымирают

Level of difficultyEasy
Reading time18 min
Views127K

Да вымереть не могут.

Откуда это всё пошло? Чем так условные «программисты» не угодили? И почему именно программисты?

Читать далее
Total votes 335: ↑323 and ↓12+373
Comments583

Самый старый код в MSSQL

Level of difficultyEasy
Reading time2 min
Views8.8K

Ваш покорный слуга работал с MSSQL с версии 6.5, но в качестве экзотики застал версии 6.0 и 4.2. Да, я супер стар!

Но осталось ли в MS SQL что-либо с тех времен?

Читать далее
Total votes 28: ↑28 and ↓0+28
Comments18

Ещё раз про алгоритм сжатия Хаффмана

Level of difficultyHard
Reading time21 min
Views16K

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

Читать далее
Total votes 33: ↑32 and ↓1+37
Comments13

CP/M-80 на клоне Спектрума «Кворум»

Reading time16 min
Views19K
У меня на окне на память лежит большая стопка пятидюймовых дискет от компьютера, который мне подарили родители в три года, и с которого я смог перелезть на PC только в 14. Это «Кворум-128», наш, уральский клон Спектрума. Клон довольно интересный и существенно отличавшийся от, например, уральского же «Магика». С магнитофоном он работал, как любой другой Спектрум, но при подключении Кворумовского же контроллера дисковода — не так-то просто его было достать! — он умел работать в ОС CP/M-80. Вот об этой ОС и ее реализации на «Кворуме» я и хочу сегодня рассказать.



Читать дальше →
Total votes 83: ↑80 and ↓3+77
Comments33

Как запускать старые игры в 2023 — VmWare/Wrapper/GoG… Или PCeMv17

Level of difficultyEasy
Reading time6 min
Views18K

Ещё один способ играть в старые игры на современном железе. Шок от первого использования PCeM v17. И то, как он вернул радостные ощущения от игры с настоящим «Voodoo» без NGlide Wrapper.

Как и всегда, полно дилетантства, непрофессионализма и прочей ереси.

? Устанавливать все игры! ?
Total votes 36: ↑35 and ↓1+47
Comments48

Критерий Келли

Reading time9 min
Views13K

От умного риска до победы близко. Кто не рискует, тот не пьет шампанского. Без риска и жизнь пресна.

Эти и многие другие пословицы и поговорки про риск, знакомые нам с раннего детства, закрепляются на подсознательном уровне и, как правило, создают положительный образ риска. Однако на практике риск приносит далеко не только выигрыши. Например, портфель инвестора, который слишком часто рискует и вкладывает весь свой капитал сразу, в краткосрочной перспективе может взлететь до небес, но в долгосрочной непременно приведет к огромным финансовым потерям. Но можно ли каким‑нибудь образом найти золотую середину? Безусловно, и в этом нам поможет критерий Келли.

Читать далее
Total votes 31: ↑29 and ↓2+37
Comments11

Умные рисовалки. Бесплатные аналоги MidJourney

Reading time15 min
Views30K


▎Добрый день, дорогие хабражители!


Сегодня должно было выйти продолжение серии Анатомия игры, но у Вселенной оказались свои планы на мой компьютер. С другой стороны, где-то что-то убыло, где-то что-то прибыло. Так же можно сказать и о сегодняшнем объекте нашего внимания.
Читать дальше →
Total votes 28: ↑26 and ↓2+38
Comments15

Численно решаем волновое уравнение разностной схемой

Level of difficultyMedium
Reading time10 min
Views7.2K

Для меня уравнения в частных производных -- это очень красивая история из студенчества. Почему? Это невероятно красиво. Но что особенно стало для меня захватывающим, так это то, что дифуры в широком смысле прикладной математики -- это тот самый пример, когда математика и компьютер используются вместе, чтобы представить некоторую компьютерную модель вполне реальных процессов. Как вы уже, наверное, догадались, речь пойдёт про то, как вообще можно попробовать решать дифференциальные уравнения в частных производных на компьютере. Мы попробуем это сделать на примере волнового уравнения и с использованием уже ставших привычными python, scipy и numpy. Если вы примерно помните математику, но панически боялись дифуров или они просто как-то обошли вас стороной, то добро пожаловать.

Читать далее
Total votes 20: ↑19 and ↓1+27
Comments15

Assembler в Go: техники ускорения и оптимизации

Level of difficultyHard
Reading time8 min
Views5.8K

Привет, Хабр!

В прошлой статье я рассказывал об ускорении копирования элементов одного слайса в другой с помощью средств Go. В этот раз я решил пойти дальше и посмотреть, что можно достичь, начав разговаривать с процессором на его языке. Я выбрал одну из оптимизированных версий функции Copy в качестве объекта исследования из решения задачи VK Cup'22/23, которая копирует только синий компонент RGBA в Paletted картинку. Если интересно узнать как её ускорить почти в 10 раз, прошу под кат.

Читать далее
Total votes 22: ↑21 and ↓1+28
Comments1

Алгоритмы быстрого умножения чисел: от столбика до Шенхаге-Штрассена

Level of difficultyMedium
Reading time26 min
Views39K

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

И уж конечно, никогда при написании a * b мы не задумываемся о том, как реализовано умножение чисел a и b в нашем языке. Какие вообще есть алгоритмы умножения? Это какая-то нетривиальная задача?

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

Скорее к формулам!
Total votes 173: ↑173 and ↓0+173
Comments28

Хватит использовать [a-zа-яё]: правильная работа с символами и категориями Unicode в регулярных выражениях

Level of difficultyMedium
Reading time14 min
Views7.9K

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

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

?
Total votes 20: ↑20 and ↓0+20
Comments8

«Хакер»: Учимся анализировать программы для x86 с нуля

Reading time15 min
Views24K

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

Читать далее
Total votes 27: ↑24 and ↓3+31
Comments17

Загрузка ядра Linux. Часть 1

Reading time12 min
Views62K
От загрузчика к ядру

Если вы читали предыдущие статьи, то знаете о моём новом увлечении низкоуровневым программированием. Я написал несколько статей о программировании на ассемблере для x86_64 Linux и в то же время начал погружаться в исходный код ядра Linux.

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

Обратите внимание, что я не профессиональный разработчик ядра и не пишу код ядра на работе. Это всего лишь хобби. Мне просто нравятся низкоуровневые вещи и интересно в них копаться. Поэтому если заметите какую-то путаницу или появилятся вопросы/замечания, свяжитесь со мной в твиттере, по почте или просто создайте тикет. Буду благодарен.
Читать дальше →
Total votes 69: ↑67 and ↓2+65
Comments40
1
23 ...

Information

Rating
2,625-th
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity