• Перевод статьи «В защиту Ричарда Столлмана»

    • Translation

    Два года назад, в результате клеветнической кампании в оруэлловском духе, проведённой жёлтой прессой по указке производителей проприетарного программного обеспечения, известный мыслепреступник Ричард М. Столлман (РМС) был ложно обвинён в одобрении изнасилований. Его 36 лет борьбы за Ваши цифровые права оказались отменены. Кампания по дискредитации была настолько свирепой, что он уволился с поста президента Фонда Свободного Программного Обеспечения. Фонд СПО ничего не сделал для того, чтобы отстоять и защитить его. Но это можете сделать Вы!


    21 марта 2021г. Ричард Столлман был принят обратно в совет директоров Фонда СПО. В ответ СМИ развернули новую кампанию по его дискредитации. Была создана петиция, призывающая к насильственному выдворению как РМС, так и всего совета директоров Фонда СПО. РМС был ложно обвинён в сексизме, трансфобии, эйблизме и куче других вещей, чтобы его опорочить. Не слушайте эту ложь. Политические заметки Ричарда Столлмана и его статьи выражают позицию человека, твёрдо борющегося против любых форм дискриминации!


    В ответ мы, Движение за свободное программное обеспечение, организовали свою петицию. Мы хотим, чтобы РМС остался на своём посту, а Фонд СПО не отступил. Мы призываем Фонд СПО защитить честь Ричарда Столлмана и его наследие. Ричард Столлман — живой человек, чьё право на свободу слова было грубо ущемлено.


    Мы должны громко и чётко обозначить Фонду СПО свою поддержку пострадавшего.


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


    https://rms-support-letter.github.io/

    Читать дальше →
  • Гена против Сандро: история автоматизации одной сетевой партии в Героях 3


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


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


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


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


      Сандро не подозревал, что исход всех его приключений давно предопределён. Вся его история окончится через несколько минут (хоть для него это будет казаться целой неделей) — ведь именно столько занимает прогон автотеста кроссплатформенной игровой партии по сети в Героях 3. Действиями Сандро управляет платформа Testo, которая готова прогонять его историю снова и снова.


      Будучи разработчиком этой самой платформы Testo, я решил под Новый Год немного повеселиться и соединить своё профессиональное произведение и любимую игру, в которой затерялись тысячи часов моей жизни. И вот что из этого получилось.

      Читать дальше →
    • Команда энтузиастов выпустила P2P-браузер Beaker 1.0 после двух лет разработки


        Пару лет назад стало известно, что группа энтузиастов разрабатывает P2P-браузер с поддержкой протокола Hypercore. Этот браузер получил название Beaker 1.0. Цель проекта — предоставить возможность пользователям разрабатывать и размещать свои сайты не где-то там, а «прямо в браузере». То есть можно создать локальную папку и поделиться URL-адресом, который откроет доступ сторонним пользователям к новому ресурсу.

        Узлы сети в этом случае — сами пользователи браузера. Beaker базируется на JavaScript c использованием движка Chromium и платформы Electron. Распространияется Beaker под лицензией MIT. Разработчики подготовили сборки для Linux, macOS и Windows.
        Читать дальше →
      • Что ученые должны знать о железе для написания быстрого кода

        • Translation
        • Tutorial


        источник изображения


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


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

        Читать дальше →
        • +26
        • 8.1k
        • 7
      • Тренируемся дома: отжимания по программе Пола Уэйда

        • Translation

        image


        Представляю программу Тюремных Тренировок Пола Уэйда. Начнём с серии классических упражнений со своим весом для верхней части тела — отжиманиям.


        Тюремные Тренировки представляют собой самые лучшие и эффективные методы обучения работе со своим весом, из когда-либо существовавших. Многие из этих забытых, но действенных техник находятся на грани исчезновения. Современный бодибилдинг меняет наше мышление, навязывая свои убеждения. И даже заключённые сейчас получили доступ к тренажёрным залам.


        Серия сосредоточена на цепочке из 10 последовательных упражнений. Когда освоите одно упражнение, то перейдёте к следующему и так далее…
        Мы называем базовые упражнения как «10 уровней», и достигнув 10 уровня, вы станете сильнейшим настолько, насколько это возможно для человека в этих движениях. По этой причине, последняя ступень именуется «уровнем мастера». Вам станет понятнее, как это работает, если дополнительно ознакомитесь с книгой Тренировочная Зона (Издательство Питер).

        Читать дальше →
      • Что послушать, когда пишешь код — плейлисты с рок-музыкой, эмбиентом и саундтреками из игр

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

          Дайджест для чтения: передача игр по радио, звуки старых ПК и компактная история рингтонов.

          Читать дальше →
        • Когда не нужна тригонометрия

            Просматривая различный код по выводу на экран какой-нибудь даже примитивной графики, я заметил чрезмерную любовь некоторых программистов к тригонометрии. Часто код пестрит синусами, косинусами и арктангенсами там, где без них можно обойтись. Этим грешат даже хорошие программисты, которые способны спроектировать сложную систему, но почему-то не освоили вектора в объёме школьной программы. Буквально азов векторной алгебры хватает для решения многих насущных проблем. В этом топике я хочу провести краткий ликбез, напомнить основные действия с векторами на плоскости и в качестве примера решить две задачи без тригонометрии: поиск отражённого луча по падающему лучу и произвольно расположенному зеркалу, а также рисование наконечника стрелки. Если вы можете представить в голове рисование произвольно направленной стрелки без синусов и косинусов, смело пропускайте этот топик. Для остальных постараюсь объяснять попроще.
            Читать дальше →
          • Нет Cookies, нет проблем — использование ETag для отслеживания пользователей

            • Translation
            Работая старшим консультантом по дижитал-аналитике в ведущем международном аналитическом агентстве, с огромным интересом наблюдаю за нынешним крестовым походом современных веб-браузеров против технологии cookie.

            Оказывается, есть способ отслеживать отдельных не вошедших в систему пользователей без использования файлов cookie. Я тоже реализовал это. Сейчас покажу как.


            Для наглядности я создал демо-сайт. Вот он.

            Нажмите на каждую из трёх кнопок Page → На всех трёх один и тот же идентификатор.
            Закройте окно браузера и снова откройте сайт → Идентификатор не поменялся.
            Выключите компьютер и зайдите на эту веб-страницу завтра → Идентификатор всё тот же.
            Проверьте ваши куки → Демо-сайт не записывает куки и не считывает их.
            Проверьте URL → Сомнительные строки запроса отсутствуют.

            Итак, как именно я могу хранить идентификатор и узнавать, что вы с определённого устройства возвращаетесь на сайт, при этом без входа в систему и без использования куки?
            Читать дальше →
          • Zettelkasten: как один немецкий учёный стал невероятно продуктивным

            Изображение предоставлено автором. Основано на фотографии Патрика Томаса с Ансплэша

            Это перевод статьи Дэвида Клира о методе ведения заметок Zettelkasten, благодаря которому немецкий социолог Никлас Луман написал более 70 книг и 400 научных статей. Стоит читать, если вы хотите создать собственную базу знаний, систематизировать идеи и перестать забывать важные мысли.

            Статья бережно перенесена из блога бегущего редактора. Кстати, следить за анонсами новых статей можно в моём телеграм-канале. Подписывайтесь, чтобы ничего не пропустить!
            Читать дальше →
          • Как ускорить игру «Жизнь» в сто раз

            image

            Сложно найти человека, не знакомого с игрой "Жизнь", придуманной английским математиком Джоном Конвеем еще в 1970 году, и до сих пор не теряющей своей популярности. Многие программисты писали свою реализацию этой игры, и еще одна вряд ли кого-то удивит. Однако эта игра является отличным примером, показывающим, насколько полезной может оказаться оптимизация вычислений, даже не меняющая асимтотическую сложность алгоритма. Мы начнем с простейшей реализации на c# и будем последовательно применять различные оптимизации, ускоряя работу программы.

            Мы также улучшим алгоритм на JavaScript, ускорив его в 10 раз по сравнению с неоптимизированной версией.

            В конце статьи дана ссылка на код, а также на online-реализацию игры с оптимизированным алгоритмом на JavaScript, выполняющим до двухсот итераций в секунду на поле размера 1920x1080 (Full HD), где вы можете убить время поиграть в эту замечательную игру.
            Читать дальше →
          • Почему мы в $ИЗВЕСТНОЙ_КОМПАНИИ перешли на $РАСКРУЧЕННУЮ_ТЕХНОЛОГИЮ

            • Translation
            Прим. перев.: эта шуточная статья, которую по праву охарактеризовали как иллюстрацию «SEO-driven development», нашла очень большой отклик на Reddit и других ресурсах. Соглашаясь с актуальностью той истории, что пародируется автором оригинала, мы рады поделиться её переводом с русскоговорящим сообществом.



            Сразу после своего основания в 2010 году $ИЗВЕСТНАЯ_КОМПАНИЯ вполне помещалась в $ГАРАЖЕ_БРАТАНА_ОСНОВАТЕЛЯ. С тех пор мы росли как на дрожжах, чему способствовали постоянные вливания средств венчурными капиталистами. Сегодня сотни миллионов ежедневно активных пользователей (DAUs) изо всех уголков мира пользуются нашими продуктами в мобильных приложениях и на сайте $famouscompany.com.

            За это время мы уже несколько раз в панике чинили бэкенд, чтобы уменьшить свой технический долг (как правило, сразу после очередного масштабного сбоя) и наши серверы не навернулись. Имевшийся технологический стек верой и правдой служил нам все эти годы. Но со временем стало очевидно, что, переписав приложение «с нуля», мы сможем выжать из пользователей дополнительные 2 млрд долларов в год.
            Читать дальше →
          • Реализация движения по лестницам в 2D-игре

            • Translation
            image

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

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

            Требования


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

            1. Игра представляет собой двухмерный сайд-скроллер, в котором игрок может ходить и бегать. В нём нет прыжков и рывков, то есть на лестницы можно попасть с самого верха или низа.

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

            3. Есть два типа лестниц: фронтальные (вертикальные) и боковые (диагональные). Последние могут опускаться вниз (с левого верха в правый низ) или подниматься вверх (с левого низа в правый верх).

            4. Все ступеньки имеют одинаковый размер для соответствия анимациям игрока. Лестницы могут иметь любую длину.

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

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

            7. Наша цель заключается в создании интуитивно понятного, не подверженного багам и красивого движения по лестницам.
            Читать дальше →
            • +20
            • 5.8k
            • 4
          • Имитация рисования от руки на примере RoughJS

            • Translation
            RoughJS это маленькая (<9 КБ) графическая библиотека JavaScript, позволяющая рисовать в эскизном, рукописном стиле. Она позволяет рисовать на <canvas> и с помощью SVG. В этом посте я хочу ответить на самый популярный вопрос о RoughJS: как это работает?


            Немного истории


            Очарованный изображениями рукописных графиков, схем и эскизов, я, как истинный нерд, задался вопросом: можно ли создавать такие рисунки с помощью кода, как можно точнее имитировать рисунок от руки, в то же время сохранив возможность программной реализации? Я решил сосредоточиться на примитивах — линиях, многоугольниках, эллипсах и кривых, чтобы создать целую библиотеку 2D-графики. На её основе можно создавать библиотеки и графики для рисования графиков и схем.

            Вкратце изучив вопрос, я нашёл статью Джо Вуда и его коллег под названием Sketchy rendering for information visualization. Описанные в ней техники стали основой библиотеки, особенно в рисовании линий и эллипсов.

            В 2017 году я написал первую версию библиотеки, которая работала только на Canvas. Решив задачу, я потерял к ней интерес. Год спустя я много работал с SVG, и решил адаптировать RoughJS для работы с SVG. Также я изменил структуру API, сделав её более простой, и сосредоточился на простых векторных графических примитивах. Я рассказал о версии 2.0 на Hacker News и внезапно она обрела огромную популярность. В 2018 году это был второй по популярности пост ShowHN.
            Читать дальше →
            • +46
            • 7.8k
            • 2
          • learnopengl. Урок 1.1 — OpenGL

            • Translation
            • Tutorial
            Здравствуйте. Несколько недель назад я начинал серию переводов статей по изучению OpenGL. Но на 4 статье один хабровчанин заметил, что мои переводы могут нарушать лицензию, по которой распространяются учебные материалы, предоставленные в исходной статье. И действительно, мои переводы нарушали лицензию. Для разрешения этой проблемы я обратился к авторам того набора уроков, но так и не смог добиться нормального ответа. По этой причине я связался с автором другого, не менее (а возможно даже и более) крутого, набора уроков по OpenGL: Joey de Vries. И он дал полное разрешение на перевод его набора уроков. Его уроки гораздо более обширные, чем прошлый набор, поэтому эти переводы растянутся на долго. И я обещаю, будет интересно. Заинтересовавшихся прошу под кат.

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

            На счет уроков по Vulkan: к сожалению мне тяжело сейчас написать уроки по данному API по причине скудной видеокарты на данный момент, которая просто не поддерживает Vulkan API, поэтому уроки по данному API будут только после обновления видеокарты.
            Читать дальше →
            • +39
            • 231k
            • 9
          • Три года в Латинской Америке: как я уехал за мечтой и вернулся после тотальной «перезагрузки»

              Привет, Хабр, меня зовут Саша. После 10 лет работы инженером в Москве я решился круто изменить жизнь — взял билет в один конец и уехал в Латинскую Америку. Я не знал, что меня ждет, но, признаюсь, это стало одним из моих лучших решений. Сегодня я хочу рассказать, с чем я столкнулся за три года в Бразилии и в Уругвае, как я подтянул в «боевых условиях» два языка (португальский и испанский) до хорошего уровня, каково это — работать айтишником в чужой стране и почему я в итоге вернулся туда же, где и начинал. Расскажу в деталях и красках (все фото в статье сделаны мной), так что устраивайтесь поудобнее — и погнали!


              Читать дальше →
            • Как разрушалась личность блестящего молодого программиста

              • Translation

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




              В пятницу 13 сентября 2019 года Мэтью Принс и Мишель Зэтлин, сооснователи компании Cloudflare из Сан-Франциско, занимающейся интернет-безопасностью, стояли на узком мраморном балконе, с которого открывался вид на Нью-Йоркскую фондовую биржу. Стайка директоров компании сгрудилась рядом с Принсом, готовая вести вслух обратный отсчёт. «Громче! Громче! – призывал их Принс. – Пять! Четыре! Три!..» Ровно в 9:30 основатели потянулись к знаменитому колоколу биржи, знаменующему начало торгового дня, а также – выход их 10-летней компании на биржу. Так они изменили свою жизнь и сорвали куш. В тот момент они обогатились на миллионы долларов.

              Более сотни сотрудников и инвесторов, стоявших внизу на первом этаже, разразились радостными криками, а их поднятые телефоны фотографировали происходящее. Кристин Холлоуэй, сотрудник №11, подняла взгляд на балкон, сделала несколько фотографий, а потом отправила их через мессенджер своему мужу, Ли Холлоуэю, третьему сооснователю компании. Он в это время находился дома, в Калифорнии. Периодически чьё-нибудь знакомое лицо выныривало из толпы, чтобы сказать ей: «Ли должен был быть здесь».
              Читать дальше →
            • [в закладки] Работа с изображениями в веб

              • Translation
              Одно из решений, которые приходится принимать фронтенд-разработчику при создании сайта, касается выбора способа включения изображений в состав веб-страниц. Этот способ может заключаться в использовании HTML-тега <img>. Это может быть применение CSS-свойства background или тега <image> элемента <svg>. Выбор правильного подхода к работе с изображениями весьма важен, так как это может очень сильно повлиять на производительность и доступность проекта.



              Материал, перевод которого мы сегодня публикуем, посвящён изучению различных способов включения изображений в состав веб-страниц. Здесь будут обсуждены преимущества и недостатки этих способов. Кроме того, мы поговорим о том, когда и почему их обычно используют.
              Читать дальше →
            • Фракталы в песках, или Больше трёх не собираться

                Мы поговорим о модели песчаной кучи. Песок (не настоящий, модельный), пересыпаясь, создаёт вот такие картинки:



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

                А ещё можно использовать эту штуку в качестве Hello world вместо игры «Жизнь».
                Читать дальше →
                • +70
                • 7.1k
                • 7
              • saneex.c: try/catch/finally на базе setjmp/longjmp (C99) быстрее стандартных исключений C++¹

                  Пока писал эту сугубо техническую статью, Хабр успел превратиться в местное отделение ВОЗ и теперь мне даже стыдно ее публиковать… но в душе теплится надежда, что айтишники еще не разбежались и она найдет своего читателя. Или нет?




                  Меня всегда восхищала стандартная библиотека Си, да и сам Си — при всей своей минималистичности от них так и веет духом тех самых первых красноглазиков хакеров. В черновике первого официального стандарта (ANSI C, он же C89, он же ANS X3.159-1989, он же, позднее, C90 и IEC 9899:1990) определяется 145 функций и макросов, из них около 25 — это вариации (ввиду отсутствия в языке перегрузок), а 26 чисто математических. K&R во второй редакции² приводят 114 функций (плюс математические), считая остальные за экзотику. В черновике³ C11 функций уже 348, но больше сотни — математика, а еще штук 90 это «перегрузки». А теперь посмотрим на Boost, где одних только библиотек — 160. Чур меня…


                  И среди этой сотни-полутора функций всегда были: обработка сигналов, вариативные функции (которые до интерпретируемого PHP дошли 25 лет спустя, а в Delphi, бурно развивавшемся одно время, их нет до сих пор) и порядка 50 строковых функций вроде printf() (м-м-м… JavaScript), strftime() (…) и scanf() (дешевая альтернатива регуляркам).



                  А еще всегда были setjmp()/longjmp(), которые позволяют реализовать привычный по другим языкам механизм исключений, не выходя за рамки переносимого Си. Вот о них и поговорим — Quake World, стеки, регистры, ассемблеры и прочая матчасть, а вишенкой будет занятная статистика (спойлер: Visual Studio непостоянна, как мартовский заяц, а throw saneex.c в два раза быстрее всех).


                  Текста много, не порежьтесь!
                • Свободный доступ к библиотеке getAbstract

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

                    И многие делают свой выбор в пользу дистанционного обучения или чтения специальной литературы для повышения уровня своего образования.

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

                    Cервис getAbstract, это большая коллекция документальной литературы, статей и видео-выступлений в кратком изложении. Более 20000 различных книг и других материалов для профессионального и личного развития в сжатом формате.
                    Читать дальше →