Search
Write a publication
Pull to refresh
22
0
Aleks Lozovyuk @aleks_raiden

Криптовалюты, финансы, распределенные системы

Send message

Улучшаем тексты в вебе при помощи text-wrap: pretty

Level of difficultyEasy
Reading time12 min
Views2.2K

В новом Safari Technology Preview реализовано значение text-wrap: pretty, обеспечивающее беспрецедентный уровень чёткости типографики в вебе. Давайте рассмотрим возможности WebKit-версии pretty, а затем сравним её с balance и другими значениями text-wrap, чтобы лучше понять, когда какие следует выбирать.

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

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

Одним из решений может стать text-wrap:pretty. Оно предназначено для обеспечения нового уровня качества типографики в вебе благодаря использованию учитывающих абзацы алгоритмов.

Читать далее

Go 1.24: принципы работы и преимущества обновленной map

Level of difficultyMedium
Reading time11 min
Views12K

В феврале 2025 года разработчики Go выпустили версию 1.24, в которой значительно улучшили производительность языка. Одно из ключевых изменений коснулось структуры map — встроенного типа данных, предназначенного для хранения и быстрого поиска значений по уникальному ключу. Новая реализация повысила эффективность работы map, оптимизировала использование памяти и ускорила операции поиска, вставки и удаления элементов. 

Привет, Хабр. Мы backend-разработчики SimbirSoft Павел и Алексей. В этой статье подробно разберём, как именно изменился механизм работы map и какие преимущества это даёт.

Go🚀

Записки ездового кота: северные

Reading time14 min
Views6K

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

Ездовые коты офигенно мурчат

Как мы делали Go-VShard-router

Level of difficultyMedium
Reading time9 min
Views2.4K

Привет, меня зовут Нуржан Сактаганов, я ведущий разработчик в Почте и Облаке Mail. Хочу рассказать о нашей библиотеке Go-VShard-router и поделиться трюками и выводами, которые мы сделали при разработке.

Читать далее

Зачем Трамп начал торговую войну: разбираем все объяснения причин ввода тарифов

Level of difficultyEasy
Reading time11 min
Views60K

В прошлую среду Трамп объявил о новых торговых пошлинах против всего мира, и мир этот несколько закачался: всего за 2 дня и рынки акций, и нефть обвалились более чем на 10%. Мнения о том, что происходит и почему, разделились. В этом материале я разобрал все основные версии по поводу того, чего конкретно пытается добиться Трамп.

Читать далее

Выбор индексов в базах данных для highload-систем

Level of difficultyHard
Reading time27 min
Views14K

Индексы – это «ускорители» доступа к данным в базах данных. Правильно выбранные индексы могут многократно ускорить запросы, что особенно критично в highload-системах с большими объёмами данных и большим числом запросов. Однако за ускорение чтения приходится платить усложнением записи и дополнительным расходом памяти. В этой статье мы подробно рассмотрим, как работают разные типы индексов в реляционных СУБД, как выбирать индекс под конкретный запрос, обсудим подводные камни (например, блоат, переиндексация, избыточные индексы) и затронем индексацию в NoSQL (MongoDB, Cassandra). Завершим чеклистом, который поможет выбрать оптимальный индекс под вашу задачу.

Читать далее

Как мы пишем код для curl на C

Level of difficultyEasy
Reading time6 min
Views5.7K

Мне часто задают такой вопрос: как мы пишем на C код для curl, чтобы он был безопасным и надёжным в миллиардах установок? Мы предпринимаем определённые меры и принимаем решения. «Серебряной пули» нет, есть только рекомендации. Как вы убедитесь сами из этой статьи, в них тоже нет ничего странного или неожиданного.

«c» в слове «curl» не обозначает и никогда не обозначало язык программирования C, это расшифровывается как client.

Предупреждение

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

Читать далее

Что такое Lua: почему стоит его попробовать и как встроить в программу на Go

Level of difficultyEasy
Reading time3 min
Views8.5K

Lua — это лёгкий, быстрый и гибкий скриптовый язык, который появился в 1993 году. Он написан на C и чаще всего используется не как самостоятельный язык, а как встраиваемый инструмент для других приложений.

Если вы играли в World of Warcraft и устанавливали аддоны, вы уже сталкивались с Lua. Redis исполняет Lua-скрипты внутри себя. Lua используется в Nginx через модуль ngx_http_lua_module, который позволяет писать обработчики HTTP-запросов. В NeoVim плагины тоже можно писать на Lua. Короче говоря — язык не из популярных топов, но крайне полезен и встраиваем во многие инфраструктурные решения.

Я опишу главные особенности языка и приведу небольшой пример использования из Go.

Читать далее

Как сделать свое первое омничейн приложение на базе LayerZero v2? Часть 1. Простой OApp в Remix

Level of difficultyMedium
Reading time6 min
Views701

Если вы уже читали мою статью про архитектуру LayerZero v2, то следующий логичный шаг — попробовать протокол в деле. В этой статье расскажу, как развернуть простой OApp в Remix IDE: настроим контракты, отправим сообщение между двумя сетями и разберёмся, как это работает на практике.

Читать далее

Проектируем веб-страницу, отображающую миллион элементов

Level of difficultyEasy
Reading time7 min
Views5.8K

Может ли браузер справиться с миллионом элементов? Если вы когда-нибудь пробовали рендерить в браузере миллион элементов <div>, то знаете, что происходит — он вылетает, зависает и перестаёт реагировать.

Недавно мы выпустили фичу, привлёкшую большое внимание — загрузку и визуализацию до миллиона спанов на нашей странице детализации трассировок. Это вызвало любопытство у пользователей и разработчиков, поэтому многие начали задавать вопрос: как нам это удалось?

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

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

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

Читать далее

Как HTTP(S) используется для DNS: DNS-over-HTTPS на практике

Level of difficultyHard
Reading time14 min
Views9K

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

Читать далее

Анатомия падения: что произошло с первым IPO BATS Global Markets и какие вопросы это ставит перед алготрейдингом

Level of difficultyEasy
Reading time7 min
Views773

Катастрофы на фондовом рынке из-за ошибок алгоритмов – не такая уж редкость, и в недавней публикации мы разбирали несколько громких кейсов, когда за считанные секунды в трубу вылетали миллиарды долларов. Однако история с первым IPO BATS Global Markets заслуживает отдельной статьи: шутка ли, когда компания с амбициями свергнуть монополию Нью-Йоркской фондовой биржи и NASDAQ, демонстративно проводящая первичное размещение акций на собственной платформе, за несколько секунд терпит крах?

23 марта 2012 года BATS, будучи на тот момент третьим по величине биржевым оператором в США с долей 11% рынка, была вынуждена остановить собственное IPO. Причина? Компьютерный сбой в первые секунды торгов, спровоцировавший миниатюрный flash crash, и, как вскоре сообщило агентство Reuters, обрушил котировки акций BATS с $15,25 до долей цента за акцию. А механизм автоматической приостановки торгов вдобавок заблокировал сделки с акциями Apple, чьи котировки рухнули на 9%.

Под катом – анатомия этого падения от хроники событий до конспирологий и уроков, которые фондовый рынок извлек из кошмара, произошедшим с BATS.

Читать далее

Взлеты и падения «безумного» Эрла Мюнца

Level of difficultyEasy
Reading time10 min
Views7.2K

В жаргоне англоязычных инженеров есть такое слово – мюнцинг (muntzing). Его применяют для описания процесса удешевления продукта путем изъятия из него «лишних» компонентов. Как вы могли догадаться, происходит это слово из фамилии героя сегодняшней статьи, Эрла Мюнца.

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

Читать далее

Клонируем правильно: structuredClone() в JS

Level of difficultyEasy
Reading time4 min
Views3K

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

Глубокое копирование в JavaScript всегда было немного проблемой. До тех пор, пока в языке не появился structuredClone() — метод, который решил многие наши проблемы.

Читать далее

Разрыв шаблона: почему мозг не умеет в большие числа

Level of difficultyEasy
Reading time9 min
Views7.1K

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

Читать далее

Более быстрые хеш-таблицы: претенденты на место SwissTable

Level of difficultyMedium
Reading time11 min
Views15K

24 ноября 2021 года на сайте ArXiv.org была опубликована научная статья «Крошечные указатели» (Tiny Pointers) с описанием новой структуры данных — «крошечных» указателей, которые указывают путь к фрагменту хранимых данных и занимают меньше памяти, чем традиционные указатели.

Осенью 2021 года эту статью заметил Андрей Крапивин (Andrew Krapivin), студент Ратгерского университета в Нью-Джерси, и не придал ей особого значения, пишет Quanta Magazine, журнал о последних достижениях в математике (перевод статьи на Хабре). Только через два года он нашёл время, чтобы внимательно ознакомиться с материалом. И понял, насколько это прорывное изобретение, если применить его для оптимизации хеш-таблиц.

Данная тема уже упоминалась на Хабре, но заслуживает более подробного обсуждения.
Читать дальше →

Дикое прошлое и возможное будущее игр в мессенджерах

Level of difficultyEasy
Reading time8 min
Views1.3K

Путь от MSN Messenger до Hamster Kombat в Telegram .

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

Простая игра в WeChat достигла 100 миллионов ежедневных пользователей всего за несколько недель.

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

Читать далее

Лучшие практики создания отказоустойчивых систем

Level of difficultyMedium
Reading time23 min
Views12K

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

Особое внимание уделяется методам повышения надёжности при временных сбоях, включая: повторные попытки выполнения операций с экспоненциальной задержкой (exponential backoff), использование шаблона circuit breaker, механизмы плавной деградации функциональности (graceful degradation), задание таймаутов, реализация идемпотентности, ограничение одновременных вызовов (bulkhead isolation), а также внедрение систем мониторинга и алертинга. Приводимые примеры охватывают типовые сценарии — обращение к внешним API, взаимодействие с базами данных и выполнение фоновых задач.

Читать далее

ASML: Создание самых сложных машин на Земле

Reading time17 min
Views23K

ASML возникла в 1984 году как совместное предприятие Philips и ASM, и которое с самого начала рассматривалась как провальный проект. Но сегодня ASML имеет рыночную капитализацию более 300 млрд евро и является одной из самых важных компаний для технологического развития мира. Компании удалось создать, по сути, технологическую монополию в самом передовом оборудовании для производства чипов —литографии в экстремальном ультрафиолетовом диапазоне (EUV) - технологии, необходимой для создания самых современных чипов, с которой не смогла справиться ни одна другая компания в мире...

От аутсайдера-задиры до лидера литографии

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

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

Несмотря на внутренний скептицизм, Philips увидела спасение в партнерстве с ASM International , другой голландской компанией по производству оборудования для полупроводников, которая сегодня занимает лидирующие позиции на рынке оборудования для так называемого атомно-слоевого осаждения (ALD) и эпитаксии, используемых в передовом производстве микросхем. В 1984 году ASML была создана как совместное предприятие Philips и ASM со штаб-квартирой в Вельдховене. Поначалу компанию в значительной степени считали неудачной, не имея ни коммерческой жизнеспособности, ни даже надлежащего офиса. Ее первым рабочим пространством был набор деревянных бараков в кампусе Philips в Эйндховене. Моральный дух был низким, многие сотрудники скептически относились к шансам предприятия на успех, рассматривая его скорее как проект, обреченный на провал с самого начала.

Читать далее

Docker теперь конкурент Ollama?

Level of difficultyEasy
Reading time2 min
Views13K

Ребята зарелизили новую крупную фичу, и, как по мне, это самая крупная механика с момента выхода dev containers, так как это показывает, насколько всё-таки AI всё глубже интегрируется в разработку.

Docker Model Runner - фактически инструментарий для запуска моделей локально, и это буквально полный конкурент для Ollama, но, будем объективны, пока что ещё очень сырой.

Читать далее

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity