• Как нарисовать звезду (и не только) в полярных координатах

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

      Дальше больше картинок
    • Параллели между Factorio и проектированием ПО

      • Перевод

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

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

      • Требования понятны и на удивление точно соответствуют задаче.
      • Цикл редактирования, отладки и компиляции невероятно быстр. Благодаря этому, а также отличной системе тестирования можно за минуту проверить несколько потенциальных решений.
      • Платформа, от которой зависит код игрока (сама игра) не имеет багов. Не нужно чинить зависимости перед тем, как приступать к написанию собственного кода.

      Должен ли проектировщик ПО сыграть в Shenzhen.io? Геймплей этой игры не для каждого. Некоторым он «слишком напоминает работу». В конце концов, играя, хочешь расслабиться, а не работать над задачами, которые уже выполняешь по восемь часов в день. Несмотря на это, я считаю, что стоит сыграть, просто чтобы понять, насколько интересной становится задача, когда требования понятны, а средства разработки — быстры. Все знают, что инвестирование в развитие и инструменты оправдывает себя, но удовольствие от игры подкрепляет это ощущение.

      Вторая игра — это Factorio, которую выпустили в прошлую пятницу, хотя в раннем доступе в неё можно было играть уже почти четыре года. Те, кто в неё играл, сейчас, вероятно, недоумевают — ведь это игра о постройке фабрики, а не о кодинге. Игрок работает с конвейерами, металлом, нефтепродуктами и создаёт ресурсы, необходимые для изготовления космического корабля.
      Читать дальше →
    • Фрактальная шизофрения


        Нет, я не болен. По крайней мере так говорит голос в моей голове. Я наркоман. Вот уже более 15 лет я сижу на игле. Употребляю много, жёстко, до обморочного состояния. Докатился до того, что в последнее время не стесняюсь ни друзей, ни жены, ни детей… Двоих детей! Не люблю бадяженый, люблю чистый, без примесей. За годы перепробовал многое, но в последнее время остановился в поисках. Забавно осознавать, что от одного и того же получаешь одновременно и боль, и радость. Мне бы в лечебку, я даже хочу, я даже знаю в какую. Знаете такие, где продолжаешь употреблять, но под присмотром?

        Читать дальше →
      • Что делать, если никто не хочет документировать? Организация документирования микросервисов по минимуму


          Представьте что у вас команда специалистов, которая по принципу code-first делает систему с множеством бизнес-историй на базе микросервисов. Все люди опытные, всем есть что делать кроме того как писать документации или спецификации на разработанный API. И все изначально знают, что если захотел использовать какой сервис, то надо заглянуть в код и потом спросить в общем чате если что непонятно. Знакомая ситуация не так ли? -))) И в целом все нормально, если бы со временем не росла команда, не росло количество сервисов и функций, не появлялись баги от бизнеса и тестеров, не требовалось предоставлять API для интеграции смежным командам...


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

          Читать дальше →
        • Как клеить по 13 девушек в час, используя машинное обучение и Tinder

            *Исключительно ради изучения Machine Learning, разумеется. Под немного недовольным взглядом любимой жены.

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

            Я решил, что это неплохой способ немного пощупать машинное обучение на новой видеокарте. Останется только объяснить жене, что мне не нужна новая женщина потолще, а я просто тренирую нейросети.


            Читать дальше →
          • Задача Танежи: новый этап развития математики?

            Введение


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

            По задаче о простых близнецах, по ABC-гипотезе, проблеме Гольдбаха-Виноградова и некоторым другим важным математическим проблемам новые научно-популярные публикации выходят ежедневно. С одной стороны, эти задачи выдержали проверку временем, с другой — регулярный пиар поддерживается шестизначными наградами за решение каждой. Но 4 года назад в трудах одного бразильского математика была, косвенно и незаметно для него самого, поднята проблема, которая может стать целью и смыслом жизни для математиков нынешнего столетия. Речь идёт о классификации трансцендентных чисел относительно замыкания конечных множеств алгебраических чисел.
            Читать дальше →
          • Рудольфу Свореню — 89! Как книга «Электроника шаг за шагом» — изменила жизнь людей

              Про Рудольфа Свореня (автора книги «Электроника шаг за шагом») мы делали несколько постов. И в частности про кампанию по переизданию этой культовой книги. В анкету на предзаказ уже отметилось почти 500 человек, охват удивительный — города от Калининграда, до Сахалина. Из Канады и США. Из эстонского Таллина. Киев, Харьков. Минск. Вильнюс. Несколько заявок из Казахстана.

              И в частности некоторые отзывы:

              "Читал несколько раз и каждый раз обнаруживал что-то новое. Даже после «искусства схемотехники», которая по сути является ВУЗовским учебником, перечитывать «Шаг за шагом» было поучительно. Как она на меня повлияла: начинал как электронщик, но сейчас работаю DSP-программистом. Если бы не прочитал её и не подхватил бы её дух — вряд ли стал бы разработчиком. Благодаря этой книге я проникся системой ценностей инженеров и стал инженером."

              "Читал почти все книги. Изменила жизнь..."

              "Мой первый электро букварь :)"

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

              "Прочитана до дыр. Книга дала серьезный толчок для дальнейшего развития в этой области. Именно из-за этой книги я связал свою жизнь с электроникой. Спасибо!"

              "Электроника шаг за шагом — вдохновляет к творчеству."

              В это воскресенье 29 мая — у Рудольфа Анатольевича был День Рождения — 89 лет!, в честь этого дня — мы решили сделать небольшой подарок — и попросили людей написать отзыв о том, как именно книги Р.А. повлияли на их жизнь — на выбор будущей профессии. И для тех кто не читал книгу — было бы интересно узнать, что же такого особенного в этой книге что она смогла объединить стольких людей?
              Читать дальше →
            • Анализ дзета-функции Римана

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

                Вся моя жизнь неразрывно связана с математикой. В голове постоянно рождаются мысли: «Почему именно так и какое этому объяснение?». Мне нравится находить разные способы решения интересных задач.
                Читать дальше →
              • 10 советов схемотехнику

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


                  Читать дальше →
                • Дешёвый грязный трюк, подаривший цветную графику первым домашним компьютерам

                  • Перевод

                  Пионер видеоигр Алан Элкорн рассказывает о том, как показал Стиву Возняку хак, позволивший компьютеру Apple II работать с цветами, и откуда взялся знаменитый звук «блип» в игре Pong



                  Домашняя консоль Atari Pong, поступившая в продажу в магазины The Sears под брендом Tele-Games в 1975

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

                  Наиболее известным примером использования артефактных цветов NTSC служит компьютер Apple II 1977 года. Использование этого хака Стивом Возняком в данном компьютере привлекло к нему широкое внимание. Позднее его использовали в компьютерах IBM PC и TRS-80 Color. Однако мало кто знал, откуда взялась эта идея, поэтому мы сильно взволновались, когда комментарий на эту тему к той статье оставил легенда электроники и видеоигр, Алан Элкорн. Оказывается, предком первой цветной компьютерной графики можно считать дешёвый испытательный прибор, который использовали в калифорнийских телеремонтных мастерских в 1960-х. Журнал IEEE Spectrum пообщался с Элкорном, чтобы узнать больше подробностей.
                  Читать дальше →
                • Почему бы не сделать свой Lisp для веба?

                  Вот есть JavaScript — прекрасная вещь. И прекрасная она на мой взгляд по большей части потому, что дебаггер и отладочные инструменты встроены в каждый Браузер. Без дебаггера и инспектора DOM-дерева было гораздо тяжелее что-либо разрабатывать на JavaScript.


                  Вот я и решил запилить свой Lisp, но с хорошим дебаггером. Взял маленький, простенький littlelisp и отрефакторил его на 99%. Заточил под пошаговое выполнение и создал свою IDE, простую но работающую.


                  В итоге получилось следующее.


                  image
                  Читать дальше →
                • Собираем игру «Змейка» на макетной плате. Часть 2: «векторный» дисплей

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


                    Большое разрешение — по клику
                    Читать дальше →
                  • Алгоритм быстрого и простого объёмного рендеринга

                    • Перевод

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

                    У моего ShaderToy были три основные задачи:

                    1. Выполнение в реальном времени
                    2. Простота
                    3. Физическая корректность (… или типа того)

                    Я начну с этой сцены с кодом-заготовкой. Не буду вдаваться в подробности реализации, потому что она не очень интересна, но вкратце расскажу, с чего мы начинаем:

                    1. Трассировка лучей непрозрачных объектов. Все объекты являются примитивами с простыми пересечениями с лучами (1 плоскость и 3 сферы)
                    2. Для вычисления освещения используется затенение по Фонгу, а в трёх сферических источниках света применется настраиваемый коэффициент затухания света. Лучи теней не требуются, потому что мы освещаем только плоскость.

                    Вот как это выглядит:

                    ShaderToy screenshot
                    Читать дальше →
                    • +52
                    • 9,7k
                    • 6
                  • Разбираемся с алгоритмом коллапса волновой функции

                    • Перевод

                    После появления DeBroglie и Tessera меня много раз просили объяснить, как они работают. Генерирование может выглядеть как волшебство, но лежащие в его основе правила на самом деле просты.
                    Читать дальше →
                    • +47
                    • 7,8k
                    • 2
                  • Вы делаете это неправильно: расчет глубины

                      Приветствую вас, глубокоуважаемые!


                      Что если я скажу, что глубина, что бы вы под ней не подразумевали, является одной из самых сложных для точного измерения величин? На какой глубине плывет подводная лодка? Какая глубина марианской впадины? На какой глубине лежит Титаник? Если вам не повезет с параметрами, то на первом километре глубины, вы можете ошибиться примерно на 30-40 метров и на 200-300 метров на 6-ом километре, используя датчик давления. Если вы предпочитаете эхолот, то при неудачном стечении обстоятельств, которые вы не учли, ошибка на первом километре составит метров 100, а на 6-ом — целый километр. Конечно, можно еще использовать длинную веревку… Но там, как известно, свои подводные камни.

                      Как такое могло случиться и как делать правильно я расскажу под катом. В довесок к статье есть Open-source библиотека на C#/C/Rust/Matlab/Octave/JavaScript и пара онлайн-калькуляторов для демонстрации.



                      Статья будет полезна разработчикам подводной техники, число которых за последние лет пять выросло в разы.
                      Читать дальше →
                    • Фракталы в песках, или Больше трёх не собираться

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



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

                        А ещё можно использовать эту штуку в качестве Hello world вместо игры «Жизнь».
                        Читать дальше →
                        • +70
                        • 6,4k
                        • 7
                      • Хакспейс Нейрон — место встречи хакеров в Москве

                          Хакспейс Нейрон

                          Что такое Хакспейс Нейрон?


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

                          С тех пор Нейрон переживал много итераций изменений, переездов и смены состава. В его стенах родилось множество интересных проектов, которые переросли во взрослые и заметные на рынке компании — Fairwaves, Nwave, Cubic, Objectlab, Lab3Dprint, Здравпринт, WellBell и другие.

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

                          Под катом экскурсия по хакспейсу, проектам рожденным здесь, мероприятиям которые мы проводим и жизни внутри.
                          Читать дальше →
                        • Новые возможности TypeScript, повышающие удобство разработки

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

                          Одна из наиболее заметных сильных сторон TypeScript — это поддержка некоторых из новейших возможностей, описанных в спецификации ECMAScript. Когда разработчик обновляется до новой версии TypeScript, это означает, что в его распоряжении оказываются и новые возможности JavaScript. Причём, использование этих возможностей не означает потенциальных проблем с совместимостью. TypeScript, помимо внедрения новейших возможностей JavaScript, заметен ещё и тем, что создатели языка постоянно представляют сообществу TS-программистов что-то новое, призванное повысить удобство работы. Сюда входят, например, вспомогательные инструменты для рефакторинга кода, средства для переименования сущностей и для поиска мест, где они используются в программах.



                          В материале, перевод которого мы сегодня публикуем, будут рассмотрены некоторые интересные свежие возможности TypeScript. Для того чтобы ознакомиться с полным списком новшеств TypeScript — загляните сюда.
                          Читать дальше →
                        • Почему Мастерхост был обречен: взгляд изнутри

                          замок с алтуфьево

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

                          Я проработал там 5 лет, и я хочу рассказать, что именно было не так с этой компанией.
                          Читать дальше →
                        • Pillow 2.7 — Существенное улучшение качества и производительности

                          • Перевод
                          Первого января 2015 года по расписанию вышла новая версия библиотеки для работы с изображениями Pillow 2.7. Так как многие изменения в ней были сделаны командой Uploadcare, мы рады представить вам расширенную версию заметок о релизе этой версии.

                          Для начала вспомним, с чего все началось. Pillow — дружественный форк (как называют его авторы) популярной библиотеки PIL, Python Imaging Library. Последняя версия PIL 1.1.7 вышла в 2009 году и в основном содержала исправления ошибок. Изначально Pillow задумывался как проект только по приведению в порядок сборки PIL, и разработчики рекомендовали отправлять все баги, не связанные со сборкой, в оригинальный PIL. Но время шло, PIL стремительно устаревала, багов не уменьшалось, тут еще Python 3 маячил на горизонте. Поэтому с версией Pillow 2.0 все изменилось. «Pillow 2.0.0 добавляет поддержку Python 3 и включает много багфиксов со всего интернета» гласит описание проекта на PyPI. И с тех пор понеслось. Каждые три месяца выходили версии с огромным количеством багфиксов и другими улучшениями от различных разработчиков. Самым значительным нововведением за это время было, пожалуй, поддержка форматов WebP и JPEG2000. Теперь пришло время следующего большого шага.
                          Читать дальше →
                          • +55
                          • 35,4k
                          • 2