Как стать автором
Обновить
142
0
Ярослав Сергиенко @pallada92

Визуализация данных и frontend в ИСИЭЗ НИУ ВШЭ

Отправить сообщение

Создание карандашного эффекта в SVG

Время на прочтение7 мин
Количество просмотров11K
Моя игра Dragons Abound создаёт карты в векторном графическом формате SVG. Векторная графика имеет множество особенностей (например, зум без потерь), что удобно для карт. Также векторная графика хороша для создания чётких линий, например, чернильных контуров:


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


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

Это достаточно серьёзное ограничение векторной графики, поэтому в SVG добавлены хитрости, позволяющие более эффективно воспроизводить некоторые из подобных эффектов текстур. Я исследую некоторые из этих функций SVG для создания эффекта, напоминающего карандашную линию. Разумеется, существует множество более сложных решений для воссоздания карандашных линий. Об этой теме написаны целые научные статьи. Но я просто надеюсь создать довольно простой фильтр, обеспечивающий приемлемый результат.
Читать дальше →
Всего голосов 66: ↑66 и ↓0+66
Комментарии9

Средства консоли Chrome, которыми вы, возможно, никогда не пользовались

Время на прочтение7 мин
Количество просмотров53K
Консоль инструментов разработчика Chrome — это, вероятно, одно из самых широко используемых и самых полезных специализированных средств браузера. Консоль даёт программисту множество интересных возможностей. Она помогает в отладке, профилировании и мониторинге кода страниц.



Материал, перевод которого мы сегодня публикуем, посвящён рассказу о некоторых возможностях консоли Chrome, которые известны не так широко, как они того заслуживают.
Читать дальше →
Всего голосов 94: ↑94 и ↓0+94
Комментарии27

Если бы все рассказы писали в стиле научной фантастики

Время на прочтение3 мин
Количество просмотров14K


Роджеру и Энн нужно было встретиться с Сергеем в Сан-Франциско. «Поедем на поезде, пароходе или самолёте?» – спросила Энн.

«На поезде слишком медленно, а путешествие на пароходе вокруг Южной Америки займёт несколько месяцев, — ответил Роджер. – Полетим на самолёте».

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

Самолёты улетали из городского аэропорта, до которого они добрались на городской электричке. Энн переоделась в одежду для путешествий, состоявшую из лёгкой блузки, сшитой из искусственной ткани на базе поликарбонатов и подчёркивавшей её живую фигуру, не знающую генетических улучшений, и тёмно-синие текстильные штаны. Её симпатичные коричневые волосы остались непокрытыми.
Читать дальше →
Всего голосов 41: ↑31 и ↓10+36
Комментарии34

Y-метод — действительно простой способ собрать кубик Рубика

Время на прочтение7 мин
Количество просмотров325K

Введение


В статье рассматривается «Y-метод» сборки кубика Рубика — его легко понять и запомнить. Он основан всего на одной последовательности, которая называется «Y-движение». Поняв этот алгоритм, вы навряд ли забудете как собрать кубик самостоятельно.
Читать дальше →
Всего голосов 86: ↑85 и ↓1+116
Комментарии78

CAGR как проклятие специалистов, или ошибки прогнозирования экспоненциальных процессов

Время на прочтение20 мин
Количество просмотров40K

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

  • «У телефона слишком много недостатков, чтобы его можно было серьезно рассматривать, как средство коммуникации. Устройство не представляет для нас никакой ценности», — писали специалисты Western Union, тогда крупнейшей телеграфной компании в 1876 году. 
  • «У радио нет будущего. Летательные аппараты тяжелее воздуха невозможны. Рентгенография окажется обманом», — зажигал Уильям Томсон лорд Кельвин в 1899, и можно, конечно, шутить, что британские ученые зажигали еще в XIX веке, но мы еще долго будем измерять температуру в Кельвинах, и сомневаться в том, что многоуважаемый лорд был хорошим физиком, причин нет. 
  • «Кто, черт возьми, захочет слышать, как актеры говорят?», — говорил про звуковое кино Гарри Ворнер, основавший Warner Brothers в 1927, один из лучших экспертов по кино того времени. 
  • «Нет причин, по которым кому-то нужен домашний компьютер», — Кен Олсон, основатель корпорации Digital Equipment в 1977, незадолго до взлета домашних компьютеров…
  • В наше время ничего не поменялось: «Нет никаких шансов, что iPhone получит значительную долю рынка», — писал в USA Today гендиректор Microsoft Стив Балмер в апреле 2007 перед триумфальным взлетом смартфонов.

Можно было бы радостно потешаться над этими прогнозами, если бы ваш покорный слуга сам, например, не ошибался довольно серьезно в своей области. И если бы не видел, как массово ошибаются многие и многие эксперты. В общем, наблюдается классическое «никогда такого не было, и вот опять». И опять. И опять. Более того, эксперты и специалисты обречены на ошибки во многих случаях. Особенно когда дело касается проклятых экспоненциальных процессов. 
Кому интересно, добро пожаловать под кат!
Всего голосов 92: ↑92 и ↓0+92
Комментарии210

Байки из склепа (из 40 лет работы программиста)

Время на прочтение11 мин
Количество просмотров75K
С ЭВМ (слово компьютер тогда не было в ходу) я столкнулся в году 1977, просто курс такой был на мехмате. Fortran IV, коды М-20, Algol-60, PL/1, сразу после универа попал в программисты (системные программисты!), и пошло-поехало…

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

Как бы то ни было, за это время было некоторое количество забавных и/или интересных (ну, по крайней мере запомнившихся) историй, почитать которые и приглашаю под кат. Истории не обязательно строго про программирование, больше про жизнь программиста.
Читать дальше →
Всего голосов 177: ↑170 и ↓7+163
Комментарии384

Простые числа — насколько велико наше бессилие?

Время на прочтение9 мин
Количество просмотров44K
Представьте, что вас окружает бесконечно высокая стена, а о том, что находится за стеной абсолютно ничего неизвестно. Теперь представьте, что олицетворением данной стены является вот это уравнение:

image

Эту метафору будет проще понять, если провести аналогию с черной дырой: мы не знаем, что находится под ее горизонтом событий, и чтобы это узнать нам нужно придумать способ, как туда добраться. Нечто подобное существует в мире математики. Данное уравнение — это настоящая «формула» простого числа, но чтобы ею пользоваться, нам нужно придумать, как искать подходящие {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, w, v, x, y, z}.

Черная дыра и данное уравнение — это предельные состояния чего-то реального и абстрактного. И, если о первом существует достаточно догадок и представлений, то о втором, практически ничего не известно. Но, что если это действительно «математическая» черная дыра? Разве вам не интересно что может произойти, если мы попадем под горизонт?
Под горизонт.
Всего голосов 154: ↑154 и ↓0+154
Комментарии82

Истории Геннадия Зеленко и Сергея Попова — популяризаторов технологий в СССР

Время на прочтение13 мин
Количество просмотров15K
В восьмидесятых журнал «Радио» опубликовал цикл статей, посвящённых тому, как продвинутый радиолюбитель мог бы собрать микрокомпьютер в домашних условиях. Так в тысячах семей впервые появились компьютеры. Это стало важной вехой в истории компьютеризации СССР и в формировании сообщества людей, интересующихся технологиями.



Недавно в гостях у Музея Яндекса побывали соавторы этого цикла статей и создатели компьютеров «Микро-80», «Радио-86РК» и «Микроша» — Геннадий Вадимович Зеленко и Сергей Николаевич Попов SNPopov. Мы записали для Хабра истории, которые они рассказали. В конце поста можно посмотреть видео встречи.
Всего голосов 60: ↑60 и ↓0+60
Комментарии53

Бег — идеальный спорт для удаленщика. Часть 1: путь до первого забега на сотню километров

Время на прочтение11 мин
Количество просмотров34K


Меня зовут Олег, я работающий удалённо DevOps-инженер в компании «Флант», и в этой статье я постараюсь убедить вас в том, что занятия бегом — лучший выбор для удалёнщика.

Недавно сумма преодоленных мной километров перевалила за цифру 3000. Но так было не всегда. С детства я был категорически неспортивен. Уроки физкультуры и в школе, и в университете вызывали у меня стойкое отвращение.
Всего голосов 77: ↑72 и ↓5+67
Комментарии222

Никогда больше не игнорируйте обучение с подкреплением

Время на прочтение6 мин
Количество просмотров11K
Привет, Хабр! Представляю вашему вниманию перевод статьи «Don’t Ever Ignore Reinforcement Learning Again» автора Michel Kana, Ph.D.

Обучение с учителем и обучение без учителя — это ещё не все. Все это знают. Начните с OpenAI Gym.

image

Собираетесь победить чемпиона мира по шахматам, нардам или го?

Есть способ, который позволит вам это сделать — обучение с подкреплением.
Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии5

Описание архитектур процессоров в LLVM с помощью TableGen

Время на прочтение15 мин
Количество просмотров5.1K
На данный момент LLVM стала уже очень популярной системой, которую многие активно используют для создания различных компиляторов, анализаторов и т.п. Уже написано большое количество полезных материалов по данной тематике, в том числе и на русском языке, что не может не радовать. Однако в большинстве случаев основной уклон в статьях сделан на frontend и middleend LLVM. Конечно, при описании полной схемы работы LLVM генерация машинного кода не обходится стороной, но в основном данной темы касаются вскользь, особенно в публикациях на русском языке. А при этом у LLVM достаточно гибкий и интересный механизм описания архитектур процессоров. Поэтому данный материал будет посвящен несколько обделенной вниманием утилите TableGen, входящей в состав LLVM.

Причина, по которой компилятору необходимо иметь информацию об архитектуре каждой из целевых платформ вполне очевидна. Естественно, у каждой модели процессора свой набор регистров, свои машинные инструкции и т.д. И компилятору нужно иметь всю необходимую информацию о них, чтобы быть в состоянии генерировать валидный и эффективный машинный код. Компилятор решает различные платформенно-зависимые задачи: производит распределение регистров и т.д. К тому же в бэкендах LLVM также проводятся оптимизации уже на машинном IR, который больше приближен к реальным инструкциям, или же на самих ассемблерных командах. В подобных оптимизациях нужно заменять и преобразовывать инструкции, соответственно вся информация о них должна быть доступна.
Читать дальше →
Всего голосов 38: ↑38 и ↓0+38
Комментарии0

Нетривиальная расстановка элементов на flexbox без media-запросов

Время на прочтение7 мин
Количество просмотров27K
Казалось бы, какой пост может быть о CSS Flexbox в 2019 году? Верстальщики уже несколько лет активно используют данную технологию, и все тайны должны быть разгаданы.

Однако, недавно у меня возникло стойкое ощущение, что нужно поделиться одним нетривиальным и, на мой взгляд, полезным приёмом, связанным с flexbox. Написать пост побудил тот факт, что ни один знакомый (из учеников, верстальщиков и просто людей, близких к web), не смог решить задачку, связанную с flexbox, хотя на это нужно всего 4-6 строк.
Читать дальше →
Всего голосов 52: ↑51 и ↓1+50
Комментарии18

Так зачем же все таки нужны Refresh токены в OAuth?

Время на прочтение3 мин
Количество просмотров17K
Наверняка каждый программист, работающий с OAuth 2.0, задумывался – зачем же нужны Refresh токены, неужели Access токенов недостаточно? 64 KB — Их должно хватать каждому!

Эта тема довольно активно дискутируется – вот и на Stackoverflow вопрос есть и на Хабре тоже обсуждается. Собственно, именно обсуждение на Хабре и заставило меня высказаться.

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

«Refresh токен можно хранить более защищенно!» — можно и нужно, хотя почти никто так не делает.
«Access token передается по сети чаще – и вероятность его утечки больше» — полноте, мы ведь всегда используем TLS, правда?
«Утечка Ассеss токена на так страшна как утечка Refresh токена» — да, и это тоже правда, именно поэтому в браузер Refresh токен и не выдается…

Есть много нюансов, есть много сценариев использования, при которых использование разных токенов становится полезным, просто видно их не сразу!

Но есть и еще один аргумент, который я почему-то ни разу не встречал – хотя он, на мой взгляд, полностью объясняет, зачем же нужен Refresh токен и почему нельзя, абсолютно, категорически нельзя обойтись только Access токеном.

Производительность.
Читать дальше →
Всего голосов 41: ↑34 и ↓7+27
Комментарии42

О том, как найти ошибку в микропроцессоре, выпущенном тридцать пять лет назад

Время на прочтение7 мин
Количество просмотров45K

К1801ВМ1А


В это трудно поверить, но иногда ошибки в процессорах по сути живут дольше, чем сами процессоры. Недавно мне довелось в этом убедиться на примере 16-разрядного микропроцессора 1801ВМ1А, на основе которого в свое время в СССР было создано семейство бытовых компьютеров БК-0010/11М. Об этом семействе на Хабре неоднократно писали.

Читать дальше →
Всего голосов 219: ↑218 и ↓1+217
Комментарии79

Рендеринг текста вас ненавидит

Время на прочтение14 мин
Количество просмотров29K

Рендеринг текста: насколько сложным он может быть? Оказывается, невероятно сложным! Насколько мне известно, буквально ни одна система не выводит текст «идеально». Где-то лучше, где-то хуже.

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

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

Мы обсудим темы, которые не объединяются в рамках какой-то единой концепции, это просто вопросы, с которыми мне пришлось столкнуться за несколько лет работы над рендерингом текста в Firefox. Например, не будем слишком подробно обсуждать проблемы сегментации текста или управления различными текстовыми библиотеками для конкретной платформы, поскольку этим я не слишком интересуюсь.
Читать дальше →
Всего голосов 113: ↑112 и ↓1+111
Комментарии19

Sampler. Консольная утилита для визуализации результата любых shell команд

Время на прочтение5 мин
Количество просмотров85K

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


Sampler


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


Код доступен на гитхабе. Инструкции по установке — для Linux, macOS и (экспериментально) Windows.

Читать дальше →
Всего голосов 298: ↑297 и ↓1+296
Комментарии54

Почему я отказался от работы в AWS

Время на прочтение5 мин
Количество просмотров60K


Когда я говорю об AWS, то стараюсь быть объективным. Если они сделали что-то хорошее, я рассказываю об этом — и люди мне верят, потому что я обязательно дам знать, когда они сотворят какую-то фигню.

Сегодня такой случай.

26 июля 2019 года Amazon подала в суд на бывшего менеджера AWS за нарушение пункта о неконкуренции в трудовом соглашении. Вот этот судебный иск (pdf).

Поскольку большинство из нас не любят читать юридические документы, позвольте резюмировать: «Филипп Мойер (простой менеджер по продажам) работал в AWS, продавал облачные сервисы. Он уволился и перешёл в Google, чтобы продавать облачные сервисы уже там. Amazon взбесилась и подала иск в Верховный суд округа Кинг, требуя запрета на конкуренцию минимум 18 месяцев, а также выплаты компенсации».
Всего голосов 122: ↑117 и ↓5+112
Комментарии164

Алгорейв: как программисты устраивают вечеринки

Время на прочтение5 мин
Количество просмотров15K

Источник

Разработчики будущего пишут не просто код — они создают алгоритмический рейв. Алгорейв — это написание и использование алгоритмов, генерирующих танцевальную музыку в режиме реального времени перед физически присутствующей аудиторией.

Генеративная музыка — явление не новое. Известно, что даже нейросеть способна создавать музыку, которую сложно отличить от творчества талантливого композитора. Однако алгорейв имеет свои отличительные особенности.

Если работа традиционного диджея строится вокруг правильного сведения треков (конечно, если он не крутит с флешки готовый микс), то алгорейверы импровизируют, допускают и исправляют ошибки прямо во время представления. При этом лайвкодеры транслируют происходящее на экране ноутбука.
Всего голосов 64: ↑58 и ↓6+52
Комментарии12

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

Время на прочтение2 мин
Количество просмотров41K
image

Алан Кей — это магистр Йода для ИТишников. Он стоял у истоков создания первого персонального компьютера (Xerox Alto), языка SmallTalk и концепции «объектно-ориентированного программирования». Он уже много высказывался о своем взгляде на образование в сфере Computer Science и советовал книги тем, кто хочет углубить свои познания:


Недавно на Quora опять подняли эту тему и обсуждение вышло на первое место на Hacker News. Предлагаю вашему вниманию «новый» список суперстарых и фундаментальных книг по программированию и мышлению программиста от Алана Кея.

Lisp 1.5 Programmers Manual

by John McCarthy, 1962

image

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

ещё восемь раритетов:
Читать дальше →
Всего голосов 37: ↑35 и ↓2+33
Комментарии74

Мутационное тестирование в PHP: качественное измерение для code coverage

Время на прочтение10 мин
Количество просмотров12K
Как оценивать качество тестов? Многие полагаются на самый популярный показатель, известный всем, — code coverage. Но это количественная, а не качественная метрика. Она показывает, какой объём вашего кода покрыт тестами, но не то, как хорошо эти тесты написаны. 

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

На Badoo PHP Meetup в марте я рассказывал, как организовать мутационное тестирование для PHP-кода и с какими проблемами можно столкнуться. Видео доступно по ссылке, а за текстовой версией добро пожаловать под кат.


Читать дальше →
Всего голосов 78: ↑76 и ↓2+74
Комментарии27

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность