Search
Write a publication
Pull to refresh
3
0

Пирожочек

Send message

Дорогая, я уменьшил {fmt}: уменьшил размер до 14kB и избавился от рантайма C++

Level of difficultyMedium
Reading time11 min
Views14K

Библиотека форматирования {fmt} известна своим небольшим влиянием на размер бинарников. Чаще всего её код в несколько раз меньше по сравнению с такими библиотеками, как IOStreams, Boost Format или, что иронично, tinyformat.

Давайте разберем, как можно уменьшить размер бинарников еще больше!

Читать далее

Что нам даёт понимание спецификации языка ECMA Script? Разбираем стандарт ECMA262

Level of difficultyMedium
Reading time9 min
Views3.2K

Привет, Хабр! Меня зовут Александр, я frontend-разработчик SimbirSoft. Я 7 лет занимаюсь разработкой, и могу утверждать, что в процессе получения опыта работа специалиста становится все более творческой. Мы не просто стремимся заставить ПО работать нужным заказчику образом, а стараемся сделать все его части элегантными, производительными и легко поддерживаемыми. 

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

Я расскажу о сообществе, которое занято развитием нашего языка JavaScript. В первую очередь это организация ECMA International, которая разрабатывает стандарт языка ECMA Script, диалектом которого является JavaScript.

Мы разберем основные движки, реализующие стандарт ECMA Script, его ключевые разделы, опишем содержание на примере фичи. Рассмотрим, для чего изучать стандарт и как его дополнить, внеся свой вклад в сообщество разработчиков.

Читать далее

Systemd для начинающих: разбор юнитов и их функций

Reading time8 min
Views20K

На связи Егор из блока поддержки платформы F5, сегодня предлагаем вспомнить основы systemd. Поскольку утилит и возможностей в нем много, а новые функции добавляются регулярно, следить за всем этим может быть непросто, так что начнем с основ.

Systemd — это init процесс, который запускается при загрузке ядра операционной системы linux и его задачей является форкать другие процессы. Информацию о том, какие процессы необходимо исполнить он берет из, так называемых “юнитов” (systemd unit - https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html). Юниты бывают различных типов, каждый из которых выполняет определенную задачу.

Читать далее

Как сменить технологию и не закопаться в рефакторинге: опыт внедрения DDD в проект на FastAPI — Часть 2

Level of difficultyMedium
Reading time10 min
Views4.8K

Привет, хабравчане!

В первой части были рассмотрены паттерны проектирования Repository и Unit of Work.

Это вторая часть цикла о DDD. В ней расскажу, как добавить к проекту событийно-ориентированную архитектуру.

Код подопытного приложения ищите в репозитории по ссылке. Подробнее о DDD и паттернах Repository и Unit of Work читайте в первой части по ссылке...

Читать далее

Примеры использования state функций в ClickHouse

Level of difficultyEasy
Reading time3 min
Views2.7K

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

Из документации ClickHouse не всегда легко сразу понять ценность функций для имплементации бизнес-логики, в частности, ценность функции runningAccumulate. Например, несмотря на богатые возможности runningAccumulate, неотформатированный код и имена вида k и sum_k из документации могут немного ввести в заблуждение.

Если Вам интересно рассмотреть state функции ClickHouse на паре примеров с более понятной логикой, то добро пожаловать :)

Читать далее

Reflection в Go

Level of difficultyEasy
Reading time5 min
Views11K

Сегодня мы рассмотрим в одну из интересных особенносстей Golang — reflection. Мы рассмотрим, что такое reflection, как он работает, и когда его стоит использовать. Reflection позволяет программам инспектировать свои структуры и модифицировать поведение в runtime.

Читать далее

Object Pascal в 2024-м

Level of difficultyEasy
Reading time6 min
Views10K

Всем привет! Меня зовут Сергей!

В данной статье речь будет идти больше о FPC/Lazarus, но так же многое, вероятно, можно будет отнести и к Delphi. Это будет что-то вроде обзора возможностей Lazarus вперемешку с начальными уроками. Многого я тут не раскрою (по моему мнению) и надеюсь читатель не будет надеяться что я смогу полностью раскрыть все секреты программирования (не надо, не надо меня за эти слова бить) в одной статье. Я надеюсь что данная статья поможет новичкам, а так же даст некоторую информацию не совсем новичкам.

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

перейти к статье

Тестируем SSD. Чтобы выросли IOPS, нужно всего лишь… сменить версию PCIe?

Reading time6 min
Views6.9K

Привет, Хабр! Сегодня мы снова будем экспериментировать, но уже не с FFmpeg, как до этого, а с твердотельными накопителями. Относительно бенчмарков и их производительности принято считать, что показатель IOPS с разными версиями PCIe интерфейса почти не меняется. Так как в отличие от скорости шины данных этот показатель больше привязан к способности контроллера самого SSD осуществлять определенное количество операций в секунду. 

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

Читать далее

Rust. Borrow checker через итераторы

Reading time8 min
Views11K
Привет, Хабр!

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

Последнее время scala является моим основным языком, так что сравнения будут с ней, но их не много и все интуитивно понятные, без магии :)

Статья рассчитана на тех кто что-то слышал о rust'e, но в детали не вдавался.


фотографии взяты отсюда и отсюда
Читать дальше →

Создание атомарных коммитов в Git

Reading time7 min
Views17K

Мы все были там: Вы работали над множеством изменений одновременно, некоторые из которых не имели ничего общего. Для удобства вы решили объединить все эти изменения в один коммит и на этом закончить. Но хотя это может показаться заманчивым, на самом деле это может привести к большим проблемам в дальнейшем. Большие коммиты могут:

Читать далее

Фиксим 21-летнюю игру

Level of difficultyMedium
Reading time12 min
Views8K

Несколько недель назад я копался в своей коллекции старых CD, и нашёл диск с Salt Lake 2002. В последний раз я играл в неё много лет назад, поэтому решил попробовать снова.

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

Читать далее

В Ruby появилась поддержка WebAssemblу: что это значит?

Level of difficultyEasy
Reading time7 min
Views2.8K


С выпуском версии 3.2 Ruby пополнил список языков программирования, поддерживающих WebAssembly. Небольшое на первый взгляд обновление может стать самым значительным изменением языка со времён Rails, так как теперь разработчики смогут работать не только с бэкендом. После портирования кода на WebAssembly его можно будет запускать где и как угодно — на фронтенде, встроенных устройствах, как бессерверные функции, вместо контейнеров или в граничных вычислениях. WebAssembly может превратить Ruby в универсальный язык программирования. Подробности под катом, а практика в вебе — на нашем курсе по Fullstack-разработке на Python.

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

Что под капотом «ответов на вопросы» Маруси?

Reading time16 min
Views4.4K

Привет, это команда ответов на вопросы Маруси.

Этот материал состоит из двух частей. Это вторая часть (первая часть). В ней мы чуть глубже копнём технический аспект того, как устроены ответы на вопросы Маруси.

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

Материал может быть интересен тем, кто только начинает свой путь в NLP или разрабатывает аналогичные решения, но не обладает несколькими стойками c DGX.

Читать далее

Как мы использовали RabbitMQ для разбиения монолита крупнейшего ритейлера страны*

Reading time6 min
Views9.3K

Накопить за 7 лет терабайты данных в монолите и решить, что пора оптимизировать систему и разбивать её на микросервисы — страшный сон для айтишника. Добавим сюда ещё база на решениях от 1С и необходимость обеспечить непрерывность процесса. Стало страшно? А для нас — возможность показать экспертность и решить нетривиальную задачу. О том, как «кролик» помог сдвинуть гору рассказал архитектор 1С компании «Автомакон» Виталий Осиповский.

С 2013 года ВкусВилл проводил внутреннюю автоматизацию с использованием программ на базе 1С. За годы активного развития и эксплуатации база увеличилась до нескольких терабайт, кратно выросло количество операций, что спровоцировало большой объем работы для администраторов, оптимизаторов и команды разработчиков. Например, тяжелые алгоритмы планирования, закрытий, генерации документов могли негативно влиять на работу всей базы.

Любые сбои и простои были неадекватно затратны и влияли на все компоненты системы в целом. А сама система не годилась для быстрого масштабирования бизнеса. Поэтому уже в 2020 году приняли решение о поэтапном разделении монолита на отдельные программные компоненты.  

Читать далее

Использование шаблонов проектирования группы GoF в React

Reading time9 min
Views12K

В этой статье поговорим о том, как написать в React многократно используемый код, используя три шаблона проектирования группы Gang-of-Four.

Читать далее

Получил доступ к Dalle-2. Вы не поверите, что может нарисовать машина… Дизайнеры больше не нужны

Reading time4 min
Views150K
Текст генерации: furry monster with green eyes looking at us, the word «habrahabr» in the background, digital art, blue background, 3d

Привет, чемпион!

Недавно мне посчастливилось стать обладателем доступа к API Dalle-2. Если ты ещё не слышал про Dalle, то это такая CLIP-архитектура, обученная на огромном корпусе пар текст-изображение. Иначе говоря — она умеет генерировать очень качественные изображения из текста. Отличить результаты генерации от рисунков человека иногда просто невозможно! Это одновременно впечатляет и в то же время — немного шокирует.

По сравнению с предыдущей версией — DALL-E 2 умеет генерировать изображения в более высоком разрешении (1024×1024 пикселей, что в 16 раз превышает разрешение в предыдущей версии модели) да ещё и намного быстрее. Более того, DALL-E 2 позволяет редактировать уже существующие изображения.

Нет больше терпения ждать, давайте же опробуем её!
Читать дальше →

Вашей компании не нужен HR

Reading time2 min
Views4.1K

Небольшие компании, особенно в IT, активно нанимают HR’ов, поручая им различные задачи - от кадрового делопроизводства до обучения и развития. Проблема в том, что компании как минимум до 50 человек вообще не нужен эйчар, но признать это иногда очень болезненно для фаундеров или директоров. HR стал гигиеническим минимумом со слабо выраженной добавленной стоимостью, откуда и растут ноги предрассудков, что эйчары только и умеют, что резюме перебирать да чаи гонять. 

Следующий уровень - это гигантские размеры HR отдела, когда на 200 сотрудников компании приходится 30 эйчаров разных цветов и размеров, с настолько узким функционалом, что любой кардиоторакальный хирург позавидует: этот закупает в офис только еду и напитки, а этот - канцелярию, этот нанимает только инженеров, а этот - бэк-офис. Но это уже терминальная стадия, о которой мы сегодня говорить не будем, потому что это заслуживает отдельного поста.

Итак, почему появились эйчары? Если говорить очень простым языком, то однажды кто-то решил, что было бы здорово переложить people management и прочие задачи, отвлекающие, например, от программирования, кому-то отдельному, и высвободить время, например, инженеров для действительно важных вещей. Удобно, если адаптацией, наймом, развитием и утешением страждущих будет заниматься отдельно нанятый человек, который будет профессионально подкован и достаточно терпелив, чтобы общаться в таком количестве с человеками.

Сейчас компании берут эйчаров по той же причине - нанимать надо больше, новичков нужно адаптировать, организовывать курсы и приглашать тренеров (или быть им самому) для сотрудников, и прочая, и прочая. 

Читать далее

YouTubeDrive: хранение файлов на YouTube

Reading time9 min
Views41K


Хостинг неограниченного размера? Звучит как нечто фантастическое и невозможное по законам природы. Примерно как вечный двигатель. Но что, если такое возможно? (не вечный двигатель, конечно, а неограниченный хостинг).

Если подумать, ведь бесплатное хранилище неограниченного размера предоставляют десятки интернет-сервисов, от соцсетей до фотохостингов. Например, ограничение YouTube на размер одного видеоролика — 12 часов или 256 ГБ, но на количество видеороликов ограничений нет.
Читать дальше →

Создаём свою БД на PostgreSQL из CSV

Reading time4 min
Views22K

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

Читать далее

Проксируйте всё

Reading time6 min
Views14K

Читатель, привет!

Если ты опытный разработчик, то ты это уже давно знаешь и используешь. Если же нет… то самое время узнать, чтобы иметь основания считать себя хорошим разработчиком ) .

Сама идея проста, как колумбово яйцо (или «проста как валенок», с учётом работающего у нас сейчас импортозамещения).

А именно: все вызовы из системы вовне и все вызовы системы извне должны быть обёрнуты минимум одним слоем прокси методов.

Как видите, очень просто.

Но разберём чуть подробнее.

Читать далее

Information

Rating
Does not participate
Registered
Activity