Pull to refresh
27
0
hopheilalalei @m0sk1t

hahacker

Send message

Поговорим об оптимизирующих компиляторах. Сказ второй: Доминирование

Level of difficultyMedium
Reading time10 min
Views10K

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

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

Причаститься

Норберт Винер: рассеянный отец кибернетики

Reading time24 min
Views39K
Когда мы встретились, я шел в студенческий клуб или из него? Спрашиваю, потому что во втором случае я уже пообедал.

Американский математик Норберт Винер был во всех отношениях своеобразным человеком. Закончив среднюю школу в 11 лет, он поступил в Колледж Тафтса и всего через три года стал бакалавром математики. Еще до наступления совершеннолетия Гарвард удостоил Винера докторской степени за его диссертацию по математической логике. Вот какую характеристику ему дает Сильвия Назар:
Американский Джон фон Нейман, выдающийся эрудит, который сделал потрясающий вклад в чистую математику, а затем начал вторую и столь же поразительную карьеру в прикладной математике.

Винер был тем самым человеком, который ввел современное значение слова «feedback» («обратная связь»), изобретая кибернетику, а кибернетика, в свою очередь, дала жизнь таким революционным понятиям как искусственный интеллект, компьютерное зрение, робототехника, нейрология (в ключе нейросетей) и многим другим.


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

Как я перестал беспокоиться и полюбил абсолютную активацию

Level of difficultyMedium
Reading time11 min
Views25K

Началось все на лекциях. Для иллюстрации работы нейронной сети нужны простые примеры. Достаточно хорошо известно, что одиночный нейрон формирует разделяющую гиперплоскость, и поэтому задачки типа "а найди мне, какой прямой разделяются два цвета на флаге Монако (который состоит из двух горизонтальных полос)" один нейрон решает на раз. Проблемы начинаются позже, например с флагом Японии (который состоит из красного круга на белом фоне) - один нейрон эту задачу хорошо не решает. Обычно, стандартным методом решения является 'в лоб': а давайте увеличим число нейронов, поставим решаюший слой, и задача решится. И тут возникает проблема номер 1: сколько нейронов в скрытом слое ставить. Традиционный ответ из всей обучающей литературы - подбирайте опытным путем. С одной стороны, их не должно быть сильно много, потому-что будет много неизвестных параметров, а с другой стороны - и сильно мало тоже не очень хорошо, ведь с одним нейроном мы уже обожглись. Итак, стандартный вопрос: сколько-же нейронов все-таки надо?

Оказывается, ответ на этот вопрос давно уже есть: в этой задаче - ровно пять. Есть такая теорема Колмогорова-Арнольда, где доказано, что если взять пять нейронов, то для них существуют какие-то гладкие функции активации, при которых двухслойная нейронка будет решать почти любую простую задачу для двумерных входных данных. И это было доказано аж в конце 50х годов 20 века и решало одну из важнейших математических задач 20го века - 13ю проблему Гильберта. Ключевая проблема здесь - "какие-то гладкие функции активации". Ведь, какие они конкретно - никто не сказал, и поэтому нужно их искать.

Читать далее

Миллиарды сообщений в минуту по протоколу TCP/IP

Level of difficultyEasy
Reading time16 min
Views15K

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

Это может показаться простым, но помните, что взаимодействующие компоненты могут быть написаны на совершенно разных языках. Ситуация усложняется еще больше, если учесть, что разные аппаратные/системные архитектуры, скорее всего, имеют различные способы представления «одинаковых» значений. Простого копирования байтов из одного компонента в другой недостаточно. Даже в Java, где мы можем считать себя «защищенными» от такого рода ситуаций, нет требования, чтобы две разные реализации JVM или разные версии от одного производителя использовали одно и то же внутреннее представление для объектов.

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

Существует несколько таких «форматов передачи», начиная от текстовых стандартов, таких как YAML, JSON или XML, до бинарных вариантов, таких как Protobuf, которые включают метаданные или являются полностью неструктурированными.

В компании Chronicle Software разработан ряд библиотек для поддержки создания приложений, оптимизированных для обмена сообщениями с низкой задержкой, в основном в сфере финансовых услуг. 

Читать далее

Принципы SOLID в Clojure

Reading time7 min
Views1.7K

Роберт К. Мартин (Robert C. Martin) (дядя Боб) назвал пять основных принципов проектирования программного обеспечения SOLID. Такой акроним помогает людям легче запомнить их. Мне очень нравятся подобные мнемоники, потому что всем нам нужна помощь для фиксации в памяти необходимой информации. Чем проще закрепить знания, тем большему мы способны научиться.

Благодаря большому опыту проектирования программного обеспечения, эти принципы были разработаны для того, чтобы помочь создать ПО, которое можно поддерживать в работоспособном состоянии на протяжении длительного времени. Это благо для мира ОО (object-oriented — объектно-ориентированный), что об этих и подобных принципах так много говорят. Они были идентифицированы, переработаны, названы и кодифицированы. И теперь можно открыто говорить о них, при этом люди понимают, что вы имеете в виду. Такого рода вещей, как ни странно, совершенно не хватает в мире функционального программирования.

Читать далее

13 распространенных задач в Kubernetes и способы их решения

Reading time13 min
Views28K


Команда VK Cloud перевела статью о проблемах в Kubernetes, с которыми часто сталкиваются инженеры-разработчики при запуске новых масштабируемых отказоустойчивых веб-сервисов. 
Читать дальше →

Проектируем фильтры в листинге товаров интернет-магазина: 155 гайдлайнов

Reading time17 min
Views13K

Почти всегда фильтры – неотъемлемая часть листинга товаров. Без них мы просто заблудились бы в большинстве интернет-магазинов. И от того, насколько хорошо они спроектированы, сильно зависят конверсия и удовлетворенность клиентов.

Сегодня поговорим о проектировании функционала фильтрации – как всегда, детально и со множеством примеров.

Читать далее

Проектируем характеристики и описание на странице товара в интернет-магазине: 101 гайдлайн

Reading time12 min
Views3.1K

Характеристики и описание на странице товара в интернет-магазине помогают клиенту погрузиться в детали и узнать о нем больше. Казалось бы, простые элементы – что тут выдумывать?

Но на практике есть очень много граблей, на которые не стоит наступать, а также интересных идей, применив которые, вы улучшите Customer Experience.

В этой статье разберем 101 гайдлайн с примерами.

Читать далее

Фото на странице товара в интернет-магазине: 136 гайдлайнов

Reading time15 min
Views5.7K

Привет, меня зовут Станислав Хрусталёв, я автор блога hardclient.com. Работаю в управлении клиентским опытом с 2009 года. Пишу на эту тему, собираю лучшие практики из мира Customer Experience, оцениваю сервисные модели компаний.

В этой статье мы разберем UX/UI фотографий на странице товара в интернет-магазине: внешний вид, типы контента, расположение, функциональность и интересные нестандартные кейсы. Как всегда, детально (чек-лист на 130+ пунктов) и с примерами.

Читать далее

Релизы (юмор)

Reading time2 min
Views11K

Дорогие любители литературы! Рады сообщить, что наш литературный сайт приступает к работе. Приглашаем писателей – и читателей, само собой разумеется.

***

С сегодняшнего дня на сайте функционирует сервис обложек. Вы можете нарисовать для своей книги яркую и красивую обложку.

***

Нас часто спрашиваю, как быть тем, кто не умеет рисовать. Мы нашли выход и приделали к сайту сервис, позволяющий рисовать обложки с помощью нейросети. Вы задаете тему – нейросеть рисует. Получается замечательно!

***

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

***

Самый важный релиз из состоявшихся. Если раньше мы шли навстречу тем, кто не умеет рисовать и не умеет писать грамотно, то теперь – тем, что просто не умеет писать. ИИ вам в помощь! С сегодняшнего дня вы задаете тему и очерчиваете характеры главных персонажей – остальное берет на себя ИИ.

***

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

***

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

***

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

Читать далее

Как мы создали Pingora, прокси-сервер, связывающий Cloudflare с Интернетом

Reading time9 min
Views10K

Сегодня мы хотим рассказать о Pingora, новом HTTP-прокси, который мы создали своими силами с использованием Rust и который обслуживает более 1 триллиона запросов в день, повышает нашу производительность и предоставляет множество новых возможностей для клиентов Cloudflare, требуя при этом лишь треть ресурсов процессора и памяти от объема ресурсов нашей предыдущей инфраструктуры прокси.

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

Читаем дальше!

Топ ошибок со стороны разработки при работе с PostgreSQL

Reading time21 min
Views53K
HighLoad++ существует давно, и про работу с PostgreSQL мы говорим регулярно. Но у разработчиков все равно из месяца в месяц, из года в год возникают одни и те же проблемы. Когда в маленьких компаниях без DBA в штате случаются ошибки в работе с базами данных, в этом нет ничего удивительного. В крупных компаниях тоже нужны БД, и даже при отлаженных процессах все равно случаются ошибки, и базы падают. Неважно, какого размера компания — ошибки все равно бывают, БД периодически обваливаются, рушатся.



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


О спикере: Алексей Лесовский (lesovsky) начинал системным администратором Linux. От задач виртуализации и систем мониторинга постепенно пришел к PostgreSQL. Сейчас PostgreSQL DBA в Data Egret — консалтинговой компании, которая работает с большим количеством разных проектов и видит много примеров повторяющихся проблем. Это ссылка на презентацию доклада на HighLoad++ 2018.
Читать дальше →

Как достичь производительного рендеринга в браузере

Reading time10 min
Views6.3K

Один великий китайский философ сказал: «каждый разработчик должен понимать, как исполняется его программа». Что ж, давайте разбираться. Говорить будем про рендеринг и его производительность.

Меня зовут Глеб Михеев, я CTO Skillbox Holding, а также руководитель программного комитета FrontendConf. Уже как 19 лет работаю в коммерческой разработке. Сегодня я расскажу, как устроен браузерный конвейер поставки кадров на экран и что нужно знать каждому разработчику, чтобы его интерфейсы были отзывчивыми, не лагали, а анимации были плавными и выдавали 60fps даже при высокой вычислительной нагрузке на main thread.

Читать далее

Пишем на Rust игры для Unreal Engine

Reading time7 min
Views15K
image

Ссылки



Введение


Несколько месяцев назад я задался вопросом: что, если написать игру на Rust, но в качестве рендерера использовать Unreal? Поразмыслив, я пришёл к выводу, что раскрытие рендерера Unreal языку Rust при помощи FFI (Foreign function interface) языка C потребовало бы гораздо больше усилий, чем мне хотелось. Но что, если просто надстроить систему на Unreal? Я смогу просто перемещать акторов (gameobject из Unreal) при помощи Rust. Эта задача показалась гораздо более приемлемой, поэтому я приступил к работе.

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

Отличия экземпляров батареек

Reading time2 min
Views33K
Я загубил 24 батарейки для того, чтобы посмотреть, как отличаются экземпляры батареек из одной упаковки. Результаты получились довольно неожиданные и они меня расстроили.


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

Мессенджер в «почтовой корове»? Дайте — два

Reading time4 min
Views14K

Рано или поздно очередной «исследователь» бюджетных альтернатив MS Exchange сталкивается с почтовым сервером из Германии – mailcow. Кто-то, не замечая, «проносится» мимо, кто-то, «притормаживая», знакомится ближе. Находятся и те, кто идёт дальше и разворачивает данное почтовое решение в своей ИТ-инфраструктуре. Например – я, который в середине 2020 года мигрируя с сервисов Google, внедрил «почтовую корову» у себя, разместив основную и резервную площадки на виртуальных вычислительных ресурсах географически разнесённых дата-центров RUVDS.
Читать дальше →

Grid или Flexbox?

Reading time8 min
Views51K
Мишель Баркер, автор материала, перевод которого мы сегодня публикуем, говорит, что недавнее обсуждение в Twitter, начатое Крисом Койером, заставило её задуматься о том, как веб-разработчики делают выбор между технологиями CSS Grid Layout и CSS Flexbox Layout при разработке макетов.



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

Среди ответов на этот вопрос, что, по словам Мишель, вполне ожидаемо, можно было отметить ценные идеи Рэйчел Эндрю и Джен Симмонс.
Читать дальше →

Фотоотчет: Всероссийский ракетостроительный чемпионат 2021

Reading time3 min
Views6.7K
"Для повышения устойчивости мы закинули в ракету 300 грамм местного асфальта"

image

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

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

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

Практическое руководство по анонимности в онлайне

Reading time9 min
Views215K

Направленная антенна для удалённого доступа к публичному Wi-Fi

Обеспечить собственную безопасность (анонимность) в онлайне — тяжкий труд, требующий массивного объёма знаний. Даже лучшие профессионалы не всегда справляются.

Но это возможно.

Предупреждение. Для усвоения информации в полном объёме требуется несколько недель.
Читать дальше →

Cypress и его место в нашей тестовой пирамиде

Reading time13 min
Views45K

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

Читать далее

Information

Rating
Does not participate
Registered
Activity