Search
Write a publication
Pull to refresh
1
0

User

Send message

Создание пакетов для Kubernetes с Helm: структура чарта и шаблонизация

Reading time14 min
Views85K


Про Helm и работу с ним «в общем» мы рассказали в прошлой статье. Теперь подойдём к практике с другой стороны — с точки зрения создателя чартов (т.е. пакетов для Helm). И хотя эта статья пришла из мира эксплуатации, она получилась больше похожей на материалы о языках программирования — такова уж участь авторов чартов. Итак, чарт — это набор файлов…
Читать дальше →

Не усложняйте свои приложения

Level of difficultyEasy
Reading time6 min
Views14K

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

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

Поэтому в текущей статье я предлагаю рассмотреть ряд популярных инструментов и подходов, используемых при создании приложений, попутно оценив, помогут ли они избежать чрезмерного усложнения?
Читать дальше →

Собеседование в руках маньяков

Level of difficultyEasy
Reading time7 min
Views64K

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

Что не так с собеседованиями

S3-FIFO: новый эффективный алгоритм вытеснения из кэша на основе очередей FIFO

Level of difficultyMedium
Reading time18 min
Views9.3K
В этой статье я расскажу о простом и масштабируемом (Simple, Scalable) алгоритме вытеснения данных из кэша на основе трёх статических (Static) очередей FIFO (S3-FIFO). После проверки на 6594 трассировках кэшей 14 компаний мы показали, что S3-FIFO имеет меньшую частоту промахов, чем 12 лучших алгоритмов, разработанных в прошлые десятилетия. Более того, эффективность S3-FIFO устойчива — он имеет наименьший средний показатель промахов для 10 из 14 датасетов. Использование очередей FIFO позволяет S3-FIFO достичь хорошей масштабируемости с пропускной способностью в шесть раз больше по сравнению с оптимизированным LRU в cachelib на 16 потоках.

Мы пришли к выводу, что доступ к большинству объектов в смещённых нагрузках кэша выполняется только за короткий промежуток времени, поэтому критически важно быстро вытеснять их из кэша. А главная особенность S3-FIFO — это небольшая очередь FIFO, отфильтровывающая большинство объектов, не давая им попасть в основной кэш.

Иллюстрация работы S3-FIFO (с использованием порогового значения перехода из маленького в основной кэш, равного 1)
Читать дальше →

СУБД Redis и её автор antirez, программист и фантаст

Level of difficultyEasy
Reading time10 min
Views16K


Сальваторе Санфилиппо aka antirez — итальянский программист, проживающий в Катании (на острове Сицилия). Провинциальное местонахождение не мешает звезде IT-индустрии: он известен на весь мир как автор СУБД Redis. 46-летний antirez входит в число самых авторитетных и талантливых программистов-одиночек с хакерским бэкграундом.

В 2020 году он завязал было с программированием, чтобы целыми днями писать научную фантастику. Но закончив книгу, в конце 2022-го снова вернулся к коду. Оказалось, что между литературным творчеством и программированием сложных систем много общего.
Читать дальше →

CodeLama в вашей клавиатуре | Локальный Copilot для любого поля ввода

Level of difficultyEasy
Reading time9 min
Views19K

Стою я значит утром (около 2 часов дня) возле кофеварки и листаю ленту хабра, а там CodeLama вышла. Copilot для бедных это или панацея в мире локальных текстовых моделей? Попытаюсь не отвечать на этот вопрос, ведь ваши соседи снизу утонут в воде, которая сейчас льётся из экрана.
Читать далее - на свой страх и риск. Статья писалась спинным мозгом и глубокой ночью, как следствие я получил натянутую на глобус сущность, которую можно инкапсулировать в технотекст, что бы она вызывала меньше подозрений у случайного читателя. Ну вы поняли уровень, верно?
Предлагаю обойтись кратким вступлением и перейти сразу к делу.

Сразу к делу

Чтение на выходные: «Психбольница в руках пациентов. Алан Купер об интерфейсах»

Level of difficultyEasy
Reading time4 min
Views4.9K

Алан Купер — дизайнер и разработчик из США. Отец Visual Basic — языка программирования, на котором до сих пор работают макросы Office. Как личность  сильно неравнодушен ко всему удобному. По крайней мере такое впечатление создается уже после чтения первых глав. Вероятно, мятежный дух и питал его новаторские устремления в попытках сделать интерфейсы лучше, практичнее и подчинить их человеку (а не наоборот).

Читать далее

Нулевая энергия квантовой системы не равна нулю — и это проблема современной космологии

Level of difficultyMedium
Reading time10 min
Views13K


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

Понятие энергии нулевой точки важно и для космологии, и в настоящее время в физике отсутствует полная теоретическая модель для понимания энергии нулевой точки в этом контексте. В частности, источником серьёзных разногласий служит расхождение между теоретической и наблюдаемой энергией вакуума. Физики Ричард Фейнман и Джон Уилер рассчитали, что излучение нулевой точки вакуума на порядок превышает ядерную энергию, а энергии одной лампочки будет достаточно для того, чтобы вскипятить весь Мировой океан. Однако, согласно общей теории относительности Эйнштейна, любая подобная энергия должна оказывать гравитационный эффект, а экспериментальные данные о расширении Вселенной, тёмной энергии и эффекте Казимира показывают, что эта энергия исключительно слабая.
Читать дальше →

Коллеги, вы меня огорчаете

Reading time12 min
Views201K
В июле и августе 2020 года я, с подачи Григория Петрова, проводил для компании Evrone технические интервью на позицию Senior Golang Backend developer. И, видимо, буду вынужден продолжать проводить, о чём ниже.

Задача формулировалась как «найти человека, который сможет задать и поддерживать высокий уровень профессионализма в применении языка Go». То есть, сформулирована она была по-человечески, перевод на канцелярит — мой. Под эту задачу я сформировал новый опросник вместо того, которым пользовался несколько лет — старый был с жестким закосом под DevOps. Методику, которой я пользуюсь для создания опросников и количественной оценки соответствия кандидатов, я излагал в своем докладе «Техническое интервью как инженерная задача» на конференции Saint TeamLead 2019.

И вот что я хочу сказать вам, коллеги: вы меня огорчаете.


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

Почему тип поля enum на уровне базы — зло

Level of difficultyEasy
Reading time4 min
Views41K

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

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

Но это в теории. А что на практике? Рассмотрим под катом.

Читать далее

Архетипы программных архитекторов. Часть 2

Level of difficultyEasy
Reading time9 min
Views5K

Привет Хабр! Сегодня публикуем вторую часть материала об архетипах программных архитекторов. Если пропустили, то вот первая часть.

Читать далее

Профилирование Python — почему и где тормозит ваш код

Level of difficultyMedium
Reading time10 min
Views27K

Представьте ситуацию: вы написали скрипт для обработки каких-то данных на ноутбуке, ушли попить кофе, а когда пятнадцать минут спустя вернулись, завершилось едва ли 10%.

Почему скрипт работает так медленно? Какая его часть тормозит? Дело в чтении данных, их обработке или сохранении? Как ускорить исполнение? Действительно ли скрипт вообще медленный?

Ответить на все эти вопросы поможет инструмент под названием «профилировщик» (profiler).
Читать дальше →

Как повысить эффективность коммуникаций в команде: учимся решать конфликты

Reading time7 min
Views9.5K

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

На одном из таких мероприятий мы подробно рассмотрели тему разрешения конфликтов — под катом делимся полезными рекомендациями.

Читать далее

Наполняем до краев: влияние порядка столбцов в таблицах на размеры баз данных PostgresQL

Level of difficultyMedium
Reading time8 min
Views24K

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

И что же там прячется?

Взлом доступа к ядру Windows при помощи драйвера принтера

Level of difficultyHard
Reading time14 min
Views13K

В этой статье приводятся подробности CVE-2023-21822 — уязвимости Use-After-Free (UAF) в win32kfull, которая может привести к повышению привилегий. Отчёт о баге отправлен в рамках программы ZDI, а позже она была пропатчена компанией Microsoft.

В ядре Windows есть три API, предназначенные для общего использования драйверами устройств с целью создания растровых изображений (bitmap): EngCreateBitmap, EngCreateDeviceBitmap и EngCreateDeviceSurface. Каждый из этих API возвращает дескриптор растрового изображения. Если вызывающая сторона хочет выполнить какие-то операции рисования на растровом изображении, то она должна сначала заблокировать это изображение, передав его дескриптор функции EngLockSurface. EngLockSurface увеличивает значение эталонного счётчика растрового изображения и возвращает указатель на соответствующую запись SURFOBJ. SURFOBJ — это расположенная в памяти ядра структура, содержащая всю информацию, связанную с растровым изображением, например, его размер, формат пикселей, указатель на пиксельный буфер и так далее. Подробнее структуру SURFOBJ мы рассмотрим позже.

После вызова EngLockSurface полученный указатель на SURFOBJ может передаваться различным API рисования, например, EngLineTo и EngBitBlt. Полный список этих API рисования можно найти в winddi.h. После того, как вызывающая сторона завершит операции рисования, она должна вызывать EngUnlockSurface. На этом этапе эталонный счётчик растрового изображения снова сбрасывается до нуля, и вызывающей стороне больше не разрешается использовать указатель на SURFOBJ. В конце вызывающая сторона может удалить растровое изображение, вызвав для его дескриптора EngDeleteSurface. Типичное использование этих API показано ниже:
Читать дальше →

Книга «Алгоритмы. С примерами на Python»

Reading time11 min
Views33K
image Привет, Хаброжители!

Когда нужно, чтобы программа работала быстро и занимала поменьше памяти, профессионального программиста выручают знание алгоритмов и практика их применения. Эта книга — как раз про практику. Ее автор, Джордж Хайнеман, предлагает краткое, но четкое и последовательное описание основных алгоритмов, которые можно эффективно использовать в большинстве языков программирования. О том, какими методами решаются различные вычислительные задачи, стоит знать и разработчикам, и тестировщикам, и интеграторам.
Читать дальше →

Найти себя в IT: как я бросил карьеру продакта и переучился на разработчика

Level of difficultyEasy
Reading time11 min
Views5.9K

Привет, я — Алексей Солохин, Python-разработчик. Мне удалось войти в IT до того, как это стало мейнстримом. Но даже попав в этот огромный, прекрасный и многогранный мир, не так просто найти в нём своё место под солнцем. Поделюсь своей историей перехода из продакт-менеджера в разработчики. Дам советы тем, кто хочет сменить профессию, но никак не может решиться. Устраивайтесь поудобнее!

Читать далее

15+ небанальных ресурсов для начинающего/продолжающего Python-разработчика

Level of difficultyEasy
Reading time4 min
Views66K

Привет Хабрчанам! Меня зовут Дима Туркин, я — код-ревьюер на курсе «Python-разработчик» Яндекс Практикума и Python-тимлид.

Тема материалов по Python для начинающих и продолжающих свой путь разработчиков уже заезженная, поэтому в этой статье я постарался собрать ссылки на менее известные бесплатные ресурсы, но не менее полезные. Есть чем дополнить — пишите в комментариях!

Читать далее

Исследуем внутренности Linux версии 0.01

Level of difficultyMedium
Reading time7 min
Views37K

Ядро Linux часто упоминают как ужасно масштабное опенсорсное ПО. На момент написания этой статьи последняя версия 6.5-rc5 состоит из 36 миллионов строк кода. Не нужно говорить, что Linux — это плод упорного многолетнего труда множества участников проекта.

Однако первая версия Linux, v0.01, была довольно маленькой. Она состояла всего из 10239 строк кода. Если исключить комментарии и пустые строки, то остаётся всего 8670 строк. Это достаточно малый объём для анализа и хорошее начало для изучения внутренностей ядер UNIX-подобных операционных систем.

Я получил удовольствие от чтения кода v0.01. Это походило на посещение Музея компьютерной истории в Маунтин-Вью — я наконец-то убедился, что легенды верны! Я написал эту статью, чтобы поделиться с вами этим восхитительным опытом.

Читать далее

Information

Rating
Does not participate
Registered
Activity