Pull to refresh
66
0

Труд разработчиков открытого ПО заслуживает оплаты

Level of difficulty Easy
Reading time 8 min
Views 9.3K

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

Недавно в сердцах я написал на Mastodon такой пост:

«Мы считаем, что сфера опенсорса должна быть жизнеспособной, а труд мейнтейнеров должен оплачиваться!»

Мейнтейнер: *вносит коммерческие возможности*
Мы: «Не таким образом».

Мейнтейнер: *работает на крупную технологическую корпорацию*
Мы: «Не таким образом».

Мейнтейнер: *привлекает инвестирование*
Мы: «Не таким образом».

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

Мой основной посыл в том, что труд специалистов, работающих в сфере опенсорса, заслуживает оплаты. Без исключений. Нам следует перестать критиковать идею оплаты труда мейнтейнеров и начать её ценить. Да, все используемые для этого механизмы в том или ином смысле несовершенны, но лишь потому, что сам мир таков. И дело не в том, что люди берут деньги. Наезжать на мейнтейнеров, которые нашли способ устроить себе жизнь, неправильно.
Читать дальше →
Total votes 76: ↑69 and ↓7 +62
Comments 98

Как изучить Haskell всего за 15 лет

Level of difficulty Medium
Reading time 9 min
Views 13K

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

Я не знаю, как изучал функциональное программирование в целом и Haskell в частности. В 2006-м я следил за проектами why the lucky stiff и читал передовой тамблелог Леа Нойкирхен Anarchaia, и какой-то из этих источников познакомил меня с миром за пределами ООП. В декабре 2006 года Леа опубликовала на Anarchaia ссылку на Pandoc, и тогда я впервые узнал о своём любимом ПО и языке, на котором оно было написано.
Читать дальше →
Total votes 63: ↑58 and ↓5 +53
Comments 9

К 30-летнему юбилею DOOM: как два садиста, психопат и мормон создали одну из величайших игр в истории? Часть 7

Level of difficulty Easy
Reading time 7 min
Views 16K

Итак, в прошлой части мы наконец добрались до того славного момента, когда Wolfenstein 3D был выпущен и стал суперхитом лета 1992 года. Компания единомышленников не стала почивать на лаврах и пачках долларов, полученных после выхода игры про массовой экстерминатус нацистов — и задумалась о создании нового 3D-шутера. Именно с этого момента начинается история разработки собственно великого и ужасного Doom.

Все части цикла статей о создании DOOM:
Читать дальше →
Total votes 75: ↑74 and ↓1 +73
Comments 3

К 30-летнему юбилею DOOM: как два садиста, психопат и мормон создали одну из величайших игр в истории? Часть 6

Level of difficulty Easy
Reading time 8 min
Views 13K

В прошлый раз мы оставили наших героев в тот важный для нашей эпопеи момент, когда в процессе работы над Wolfenstein 3D они перебрались из холодного криминального пригорода Мадисона, штат Висконсин, в жаркий и консервативный пригород Далласа под названием Мескит. Именно этому месту было суждено стать колыбелью Doom. Что иронично, именно жители Мескита десятком лет ранее пытались запретить в США компьютерные игры за разврат, сотонизм и насилие.

Все части цикла статей о создании DOOM:
Читать дальше →
Total votes 76: ↑75 and ↓1 +74
Comments 15

Ладья на XSS: как я хакнул chess.com детским эксплойтом

Level of difficulty Medium
Reading time 10 min
Views 27K

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

В этой статье я расскажу о том, как использовал свои знания по кибербезопасности для обнаружения XSS-уязвимости (Cross-Site Scripting, межсайтовый скриптинг) на крупнейшем шахматном сайте интернета со 100 миллионами участников – Chess.com. Но для начала небольшое вступление (в котором будет затронута немного менее серьёзная, но достаточно занятная, уязвимость OSRF (On-site Request Forgery, подделка запросов на сайте).
Читать дальше →
Total votes 103: ↑101 and ↓2 +99
Comments 14

К 30-летнему юбилею DOOM: как два садиста, психопат и мормон создали одну из величайших игр в истории? Часть 5

Level of difficulty Easy
Reading time 7 min
Views 12K

В прошлый раз мы завершили рассказ на том моменте, как команда разработчиков id Software пришла к историческому решению: нужно делать по-настоящему крутой шутер в формате 3D. Первые поделки Джона Кармака в этом жанре получились не очень удачными и не слишком зашли игрокам — но именно они позволили набить первые шишки на пути к созданию DOOM. Теперь же наши герои начали работу над тем, что мы сейчас знаем под названием Wolfenstein 3D: бодрое мочилово нацистов в секретных подземельях.

Все части цикла статей о создании DOOM:
Читать дальше →
Total votes 71: ↑70 and ↓1 +69
Comments 5

Конурбация Рура: чем живёт бывшее индустриальное сердце Европы

Level of difficulty Medium
Reading time 20 min
Views 9K
Карта землепользования Рура из регионального плана развития. Видна сросшаяся городская ткань конурбации, плотная транспортная сеть и сохранившиеся очаги промышленности (серый цвет). Источник: RVR

Я долго откладывал материал по Руру на потом, для него нужно было созреть. Рурский бассейн, где до WWII добывалась половина угля и выплавлялась треть европейской стали, и который стал символом индустриальной мощи, за последние полвека сильно сдал. Но не сдался, пусть и прошёл через мучительную трансформацию. Мы приехали в Дортмунд в 2018 г. после учебного модуля в США. И, конечно, главным вопросом было, как региону после коллапса тяжёлой промышленности удалось избежать судьбы Детройта. Потрясло тогда отношение местных к ржавеющим остовам промышленных гигантов как к части истории, которую невозможно вычеркнуть. Два других принципиальных вопроса после США были: как агломерации удаётся заниматься развитием общей инфраструктуры (всегда и везде найдутся упёртые дядьки), и как удалось провернуть ревитализацию Рура, став центром экологических компетенций в пост-угольную эру. Но обо всём по порядку.
Читать дальше →
Total votes 80: ↑77 and ↓3 +74
Comments 17

Для чего подходит ультрадешёвый сервер за 130 рублей

Level of difficulty Easy
Reading time 6 min
Views 47K


В рекламе RUVDS постоянно упоминаются дешёвые VPS-серверы «за 130 рублей в месяц». Но многие думают, что это маркетинговый трюк: такие серверы может и есть, но только для рекламы, чтобы предложение звучало красиво, а в реальности они совершенно непригодны. Ну что может сервер с 512 МБ оперативной памяти? Конечно же, ничего. На него даже операционка не встанет…

В реальности всё совсем иначе. На этот сервер ставятся разные дистрибутивы Linux, задачи он выполняет реальные, и вы даже получаете выделенный IP-адрес.
Читать дальше →
Total votes 83: ↑80 and ↓3 +77
Comments 131

Разбираем самый маленький PNG в мире

Level of difficulty Easy
Reading time 9 min
Views 34K

Самый миниатюрный PNG в мире весит 67 байт и представляет собой один чёрный пиксель. Выше вы видите его в 200-кратном увеличении.

Красота, не так ли?

Состоит этот файл из четырёх частей:

  1. Сигнатура PNG, одинаковая во всех файлах этого формата: 8 байт.
  2. Метаданные изображения, включая его размеры: 25 байт.
  3. Данные пикселя: 22 байта.
  4. Маркер «конец изображения»: 12 байт.

Далее я опишу этот файл подробнее и постараюсь объяснить принцип работы формата PNG.

В качестве небольшой затравки скажу, что в конце предстоит неожиданный поворот. Хотя, надеюсь, вам и без того интересно побольше узнать о PNG.
Читать дальше →
Total votes 140: ↑132 and ↓8 +124
Comments 112

Арифметика первого класса в системе типов Rust

Level of difficulty Medium
Reading time 8 min
Views 7.8K

Арифметика – наука непростая, но к нашему удобству работу с ней можно облегчить с помощью экспрессивной системы типов языка Rust. В статье мы разберём реализацию на этом языке простейших математических операций, таких как сложение, вычитание, умножение и деление.
Читать дальше →
Total votes 60: ↑59 and ↓1 +58
Comments 7

Гроза бэклогов и пристанище необычных игр: как я полюбил Switch

Level of difficulty Easy
Reading time 9 min
Views 9.1K
image

Признаться, Nintendo Switch в 2017-м я встретил совсем не так радужно, как отношусь к ней сейчас. Игр было мало, да и были вопросы к железу. Страшно подумать, но с релиза прошло уже семь лет, и за эти годы вышли четыре ревизии консоли. Но главное — Switch стал грозой бэклогов, пристанищем инди и самых разных японских игр, ранее не выходивших на Западе.
Читать дальше →
Total votes 54: ↑49 and ↓5 +44
Comments 26

Поделка в стиле 2000-х — блютус-колонка с пультом, MP3, ЧМ-радио и эффектами

Level of difficulty Easy
Reading time 8 min
Views 9.4K


Привет, Хабр! Какие подводные камни таит в себе копеечный китайский модуль с этой фотографии, и как их преодолеть? Как сделать усилитель дешёвых компьютерных колонок менее чувствительным к помехам по питанию?

Как устроен расширитель стереобазы, он же «Surround sound» или «трёхмерный звук»? Как заставить маленькую моноблочную стереосистему звучать ещё объёмнее при помощи цифровых линий задержки?

Обо всём этом расскажет мой маленький проект, начавшийся десять лет назад и не законченный до сих пор.
Поделка работает и звучит, но я продолжаю её совершенствовать.
Total votes 56: ↑55 and ↓1 +54
Comments 7

Оптимизируя неоптимизируемое: ускорение компиляции C++

Level of difficulty Medium
Reading time 7 min
Views 7K

В этой статье речь пойдёт о повышении скорости компиляции библиотеки {fmt} до уровня библиотеки ввода-вывода Cи stdio.

Дня начала немного теории. {fmt} – это популярная открытая библиотека С++, представляющая более эффективную альтернативу С++ библиотеке iostreams и библиотеке Си stdio. Последнюю она обошла по целому ряду аспектов:

  • Безопасность типов с проверками форматирующих строк во время компиляции. Эти проверки включены по умолчанию начиная с С++ 20, и присутствуют в качестве дополнения для С++ 14/17. Форматирующие строки среды выполнения в {fmt} также оказываются безопасными, чего невозможно достичь в printf.
  • Расширяемость. Определяемый пользователем тип можно сделать форматируемым. При этом большинство типов стандартных библиотек, например, контейнеры и пакеты для обработки даты и времени, предлагают возможность форматирования изначально.
  • Производительность. {fmt} намного быстрее любой распространённой реализации printf, порой на несколько порядков (например, в форматировании чисел с плавающей запятой).
  • Возможность переноса поддержки Unicode.

Тем не менее одной из областей, в которой stdio по-прежнему опережала {fmt}, являлось время компиляции.
Читать дальше →
Total votes 56: ↑55 and ↓1 +54
Comments 29

Собираем автономную игру на C# в 2 килобайтах

Level of difficulty Medium
Reading time 11 min
Views 19K

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

В наши дни дисковое пространство стало настолько дешёвым, что люди отказались от оптимизации по размеру.

Размер важен только при передаче: если вы передаёте программу по проводам, мегабайты равны секундам. По быстрому соединению на 100 Мбит в лучшем случае можно передать 12 МБ в секунду. Если на другом конце провода находится человек, ожидающий завершения скачивания, то разница между пятью и одной секундой может существенно повлиять на его ощущения.

Человек может зависеть от времени передачи как напрямую (пользователь, скачивающий программу по сети), так и косвенно (serverless-сервис, отвечающий на веб-запрос).

Люди обычно воспринимают всё, что длится меньше 0,1 секунды, как мгновенное, 3 секунды — это примерно тот предел, после которого прерывается состояние потока пользователя; а уж 10 секунд удержать внимание пользователя очень сложно.

Хотя уменьшение сегодня уже необязательно, оно всё равно лучше.

Эта статья задумывалась как эксперимент, позволяющий выяснить, каким может быть минимальный размер полезного автономного исполняемого файла C#. Могут ли приложения на C# достичь размеров, при которых пользователи будут ощущать их скачивание как мгновенное? Позволит ли это использовать C# там, где он не используется сейчас?
Читать дальше →
Total votes 128: ↑127 and ↓1 +126
Comments 34

Когда старый софт лучше нового

Level of difficulty Easy
Reading time 7 min
Views 70K

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

Практика показывает, что новые версии утилит часто изменяются к худшему, раздуваются, обрастают ненужными функциями, начинают тормозить или вовсе перестают запускаться. Ухудшение программного продукта со временем — известный процесс, для которого есть специальный термин: дерьмофикация (enshittification, слово придумал Кори Доктороу). Она происходит не только с десктопным или мобильным софтом, но и с платформами. Все мы за последние годы наблюдали дерьмофикацию Google, Reddit, Amazon, Twitter и Facebook (два последних вообще признаны экстремистами и запрещены в РФ). Аналогично с десктопным софтом и мобильными приложениями.

В то же время старый софт многолетней давности фантастически быстро работает. Программы в несколько мегабайт, которые запускаются мгновенно, потребляют минимум памяти и просто летают. По сути, ресурсы современных CPU для них избыточны. Пользоваться такими инструментами одно удовольствие. Такое чувство, что работаешь на суперкомпьютере, а не обычном ПК.
Читать дальше →
Total votes 231: ↑190 and ↓41 +149
Comments 504

Неожиданное взаимодействие предсказания ветвлений и подсистем памяти

Reading time 10 min
Views 6.4K

Это 15-я статья в серии, посвящённая оптимизации подсистем памяти. Остальные доступны здесь (англ.).

В ней мы изучим взаимодействие механизма предсказания ветвлений с подсистемой памяти. В повествовании мы будем исходить из предположения, что вам знаком принцип предсказания ветвлений и работы подсистем памяти в современных процессорах.
Читать дальше →
Total votes 45: ↑43 and ↓2 +41
Comments 6

Что нам стоит вязальный аппарат построить? Некоторая информация и ряд мыслей на тему…

Reading time 10 min
Views 16K
Картинка Macrovector, Catalyststuff, Freepik

Ткацкое и вязальное дело — одни из старейших и известнейших изобретений человечества, сопровождающие его в течение большей части истории.

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

Читать дальше →
Total votes 81: ↑80 and ↓1 +79
Comments 33

Мой первый прототип поискового движка

Level of difficulty Medium
Reading time 6 min
Views 7K

Я реализовал первый прототип собственного механизма поиска, который сокращённо назвал PSE (Personal Search Engine). Создал я его с помощью трёх скриптов Bash, возложив всю основную работу на sqlite3, wget и PageFind.

Браузер Firefox вместе с Newsboat сохраняют полезную информацию в базах данных SQLite. В moz_places.sqlite содержатся все посещённые URL-адреса и адреса закладок (то есть moz_bookmarks.sqlite базы данных SQLite). У меня получилось около 2000 закладок. Это меньше, чем я предполагал, так как многие оказались нерабочими из-за битых ссылок.

Нерабочие URL-адреса страниц сильно замедляют процесс сбора, так как wget приходится ожидать истечения различных таймаутов (например, DNS, ответа сервера, время скачивания). URL-адреса из «истории» составили бы интересную коллекцию для сбора, но тут не обойтись без списка исключений (например, нет смысла сохранять запросы к поисковым системам, веб-почте, онлайн-магазинам). Изучение этого вопроса я отложу до следующего прототипа.
Читать дальше →
Total votes 57: ↑55 and ↓2 +53
Comments 26

Dead by Daylight: мультиплеерный ужас или кровавый Super Smash Bros

Level of difficulty Easy
Reading time 13 min
Views 2.8K
image

Хоррор-игры за последние десять лет пережили некий ренессанс — популярность отдельных инди-проектов вкупе с возникновением таких явлений как «стриминг» и «летсплеи» вернули жанр на рельсы, дав толчок как мейнстримным ААА-проектам, так и независимым работам.

Мультиплеерным хоррором никого не удивишь: все хотя бы раз играли с друзьями в кооперативные Left 4 Dead, Killing Floor или CoD Zombies. Другое дело соревновательная игра, которая называет себя ужастиком. Какие правила надо придумать и как сбалансировать стороны, чтобы никто не чувствовал себя приниженным, и всё ещё вызывать страх у игроков? Ответ дадут канадцы из Behaviour Interactive, создавшие уникальный проект, который уже почти 8 лет является одной из самых популярных онлайн-игр и отдаёт дань уважения всей культуре хорроров.
Читать дальше →
Total votes 37: ↑37 and ↓0 +37
Comments 4

IT-2024: AI не решает — решают люди

Level of difficulty Easy
Reading time 7 min
Views 7.8K
Году в 2010-м я читал журнал с интервью одного из тогдашних топов диджитал-сферы и мне запомнилась фраза про то, что тот, кто может спрогнозировать ситуацию в отрасли на пять лет вперёд, тот идиот или мошенник. В наше время горизонт планирования сократился чуть ли не до квартала: трудно прогнозировать, понимая, что на твой бизнес, твою карьеру, твои инвестиции может оказать влияние что угодно, от международного конфликта до вируса или пожара в ЦОДе за тысячи километров от тебя. Уже давно пропало ощущение «островка стабильности» дома, в семье, среди коллег и друзей. В таких условиях остаётся одно, на что можно положиться, рассчитывать и что нужно ценить, — это люди. Увы, современные компании, да и сами люди этого не понимают. Я хочу вас предостеречь: берегите людей — это главный актив. И теперь это не фигуральное пафосное выражение, а формула выживания. 

В статье не будет универсальных рецептов и объективной логики — скорее, будет постановка проблемы, которую нам всем скоро придётся решать.

Читать дальше →
Total votes 68: ↑64 and ↓4 +60
Comments 58

Information

Rating
Does not participate
Works in
Registered
Activity