• Реализация физически корректных объемных облаков как в игре Horizon Zero Dawn

      Раньше облака в играх рисовались обычными 2D спрайтами, которые всегда повернуты в направлении камеры, но последние годы новые модели видеокарт позволяют рисовать физически корректные облака без заметных потерь в производительности. Считается, что объемные облака в игры принесла студия Guerrilla Games вместе с игрой Horizon Zero Dawn. Конечно, такие облака умели рендерить и раньше, но студия сформировала что-то вроде промышленного стандарта на исходные ресурсы и используемые алгоритмы, и в настоящее время любая реализация объемных облаков так или иначе этому стандарту соответствует.


      Читать дальше →
    • Развёртывание своего MTProxy Telegram со статистикой

      • Tutorial

      „Я унаследовал эту неразбериху,
      начиная с бессовестных Zello; LinkedIn
      и кончая «всеми прочими» на платформе Telegram
      в моём мире.

      А потом икнув,
      чиновник торопливо и громко добавил:
      но я наведу (здесь в IT) порядок“
      (...).

      Дуров, справедливо полагает, что это авторитарные государства должны его, шифропанка, бояться, а роскомнадзоры и золотые щиты со своим DPI-фильтрами его не очень-то беспокоят»
      (Политическая техника)

      Моя техническая политика — проще, я могу тут расписать свои размышления по беспечным блокировкам в рунете, но полагаю, что прогрессивные граждане Modern Russian и юзеры Хабра ощутили на своей шкуре непрофессионализм «некоторых», поэтому ограничусь единственной фразой: наша техническая политика — «Цифровое Сопротивление». «обеспечение родных и близких устойчивым каналом связи».
      Читать дальше →
    • Выборочный обход блокировок на маршрутизаторах с прошивкой Padavan и Keenetic OS

        Инструкций с разными вариантами обхода блокировок Интернет-ресурсов опубликовано огромное количество. Но тема не теряет актуальности. Даже всё чаще звучат инициативы на законодательном уровне заблокировать статьи о методах обхода блокировок. И появились слухи, что Роскомнадзор получит ещё одну пачку денег налогоплательщиков на «более лучшие» блокировки. Опытные пользователи ничего нового и полезного из статьи не узнают. А вот другие получат готовые пошаговые инструкции для простого и эффективного выборочного обхода блокировок на популярных маршрутизаторах с прошивкой Padavan и Keenetic.


        Читать дальше →
      • Ад своими руками

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

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

          Но компанию, ее культуру это внедрение превратило в ад — бюрократический, системный и бессмысленный.

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

          Обо всем по порядку.
          Читать дальше →
        • Junior и методы рационального мышления

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


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

          Читать дальше →
        • Настолько ли стар твой Windows?

          Как показывает бурное обсуждение последних статей на Хабре, посвященных Windows системам, большое количество продвинутых и не очень пользователей отдает свое предпочтение «устаревшей» Windows 7 и не торопится переходить на Windows 10. Причины бывают очень разные — от недовольства политикой конфиденциальности и большим объемом телеметрии до банальной привычки и нежелания идти на поводу у маркетологов Microsoft.

          В данной статье я хочу рассмотреть случай, когда Windows 7, да и более ранние версии, требуются разработчику для качественного решения своих рабочих обязанностей. Не секрет, что в корпоративном секторе доля Windows 7 все еще очень велика, а так как компания Microsoft продлила ее расширенную поддержку до 2023 года, в ближайшее время вряд ли что-то кардинально изменится. И это не говоря о том, что встречаются и совсем древние системы с Server 2003 и 2008, на которых работает какое-то старое, но крайне нужное ПО, портировать которое никто не берется исходя из принципа «работает – не трогай». Однако, обновить Вашу «устаревшую» операционную систему можно гораздо быстрее и проще, чем кажется.
          Читать дальше →
        • Создание умного дома и разработка своего протокола

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

            Я тут решил забить на всю работу и заняться чем-то для души. Снова взялся за паяльник. Решил автоматизировать дома всё и вся. На старой-то квартире у меня был умный дом или что-то типа того — мог свет в комнате включать через Интернет и всё такое.

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

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

            На борту микроконтроллера есть всякие I²C, да UART, но они явно не удовлетворяют условиям. В итоге было решено разработать свой велосипед протокол.



            Читать дальше →
          • Создание умного домофона с автоответчиком и Интернет-соединением

              Не так давно я чинил домофонную трубку и задумался — а не сделать ли мне небольшую модернизацию? Научить его уведомлять меня через Интернет о том, что кто-то приходил, или даже удалённо открывать дверь с мобильного телефона… А затем я решил — почему бы вообще не сделать автоответчик? На телефонах сейчас автоответчик уже мало кому нужен, а вот знать, кто же ко мне приходил, было бы весьма полезно, особенно при том, что я не привык брать трубку, если никого не жду. Воплотить идею в реальность оказалось не так уж сложно.
              Читать дальше →
            • Обзор бесплатных 2D САПР

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

                Тем не менее, в инженерном деле остаётся место и для традиционного двумерного проектирования, и для этого есть соответствующие инструменты.

                image
                Читать дальше →
              • Подвес системного блока под стоячий стол

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


                  Читать дальше →
                • learnopengl. Урок 1.9 — Камера

                  • Tutorial

                  imageВ предыдущем уроке обсуждалась матрица вида, и то, как её можно использовать для перемещения по сцене (мы немного отодвинули назад точку зрения наблюдателя). В OpenGL отсутствует концепция камеры, но можно попытаться её сымитировать, перемещая все объекты сцены в направлении противоположном движению наблюдателя, и тем самым создать иллюзию, что движемся мы сами.


                  В этом уроке мы рассмотрим, как можно создать камеру в OpenGL. Мы обсудим камеру типа FPS (First Person Shooter), которая позволит вам свободно перемещаться в трехмерной сцене. Кроме того, мы поговорим о вводе с клавиатуры и мыши, а закончим созданием собственного C++ класса камеры.


                  Читать дальше →
                  • +16
                  • 34.3k
                  • 4
                • Генерирование полигональных карт для игр

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

                  image

                  Во многих процедурных генераторах карт, в том числе и некоторых моих предыдущих проектах, для генерирования карты высот используются функции шума (midpoint displacement, фракталы, diamond-square, шум Перлина и т.д.). Здесь я их не применял. Вместо неё я использовал структуру графов для моделирования элементов, определяемых ограничениями геймплея (высота, дороги, течение рек, места квестов, типы монстров) и функции шума для моделирования того, что не ограничивается геймплеем (форма побережья, расположение рек и деревьев).
                  Читать дальше →
                  • +98
                  • 36.7k
                  • 9
                • Исследование защиты ArtMoney. Часть первая

                  • Tutorial
                  Приветствую! Сам ArtMoney был закейгенен мной давным-давно. Я не первый раз уже пробую начать писать статью о том, как происходил кейгенинг этой программы, но, всегда где-то стопорился. На этот раз, я решил доделать все до конца! Плюс, эту статью можно считать продолжением цикла статей о крякинге для новичков.

                  Итак, в этой статье вы узнаете, как я писал кейген к ArtMoney (здесь будет описана версия 7.45.1).
                  Читать дальше →
                  • +67
                  • 27.9k
                  • 7
                • Ищем и скачиваем непопулярные и старые файлы в интернете

                    Преимущественно медиафайлы. На полном серьезе, без шуток.

                    Введение

                    Бывает, случается так, что вы хотите скачать альбом 2007 года исполнителя, который кроме вас известен 3.5 людям, какой-нибудь испанский ска-панк или малопопулярный спидкор европейского происхождения. Находите BitTorrent-раздачу, ставите на закачку, быстро скачиваете 14.7%, и… все. Проходит день, неделя, месяц, а процент скачанного не увеличивается. Вы ищете этот альбом в поисковике, натыкаетесь на форумы, показывающие ссылки только после регистрации и 5 написанных сообщений, регистрируетесь, флудите в мертвых темах, вам открываются ссылки на файлообменники вроде rapidshare и megaupload, которые уже сто лет как умерли.

                    Попытка скачать хотя бы один файл
                    Увы, частая ситуация в попытке хоть что-то скачать

                    Такое случается. В последнее время, к сожалению, случается чаще: правообладатели и правоохранительные органы всерьез взялись за файлообмен; в прошлом году закрылись или были закрыты KickassTorrents, BlackCat Games, what.cd, btdigg, torrentz.eu, EX.ua, fs.to, torrents.net.ua, и еще куча других сайтов. И если поиск свежих рипов фильмов, сериалов, музыки, мультиков все еще не представляет большой проблемы, несмотря на многократно участившееся удаления со стороны правообладателей контента из поисковых систем, торрент-трекеров и файлообменников, то поиск и скачивание оригинала (DVD или Blu-Ray) фильмов и сериалов или просто ТВ-рипов 7-летней давности на не-английском и не-русском языке — не такая уж простая задача.
                    Читать дальше →
                  • 6 альтернатив MacBook

                    image

                    После презентации Apple появилось множество разочарованных комментариев: «только USB-C», устаревший процессор, отсутствие сенсорного экрана, и дикий ценник. Посмотрим, какие альтернативы предлагает рынок на новых процессорах Intel.
                    Читать дальше →
                  • Пишите меньше кода, блин

                    • Translation

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


                    А еще я ленивый — мед, да еще и ложкой (я решил использовать в статье аналогии с едой).


                    Но, оказывается, что единственный гарантированный способ повысить производительность в вебе — это писать меньше кода. Минифицировать? Окей. Сжимать? Ну, да. Кэшировать? Звучит неплохо. Вообще отказываться кодить или использовать чужой код изначально? А вот теперь — в яблочко! Что есть на входе — должно выйти на выходе в той или иной форме, независимо от того, смог ли ваш сборщик растворить и переварить это своими желудочными соками (я, пожалуй, откажусь от пищевых аналогий).


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


                    В стремлении к уменьшению мне больше всего нравится вот что: в конце остается только то, что реально нужно, только то, что по-настоящему требуется пользователю. Огромная фотка какого-то чувака, пьющего латте? Выкинуть. Кнопки социальных сетей, которые подсасывают кучу левого кода и ломают дизайн страницы? Пинок под зад им. Эта хреновина на JavaScript, которая перехватывает правый клик и показывает кастомное модальное окно? Выставить на мороз!


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

                    Читать дальше →
                  • Как направить весь tcp-трафик с гостевой Windows системы через Tor

                    Уже давно мечтаю об ОС с полностью анонимным трафиком. До недавнего времени я использовал следующий способ.
                    Виртуальная машина, на которую ставится анонимизируемая система, связана через локальную сеть только с хостовой системой (режим Host-only виртуального сетевого адаптера), на которой стоит Tor. Внутри гостевой ОС у приложений, которым нужен интернет, прописывался адрес прокси-сервера Polipo, установленного вместе с Tor на хостовой системе. Таким образом, выход в интернет с гостевой системы возможен только через Tor. Однако у этого способа есть недостаток. Для каждого приложения необходимо прописывать прокси, к тому же не все приложения имеют такие настойки. Прибегать к использованию программ-проксификаторов не хотелось, т.к. такое решение мне показалось не совсем «естественным». Ниже я расскажу о более «естественном» способе ТОРификации.
                    Читать дальше →
                    • +15
                    • 32.2k
                    • 4
                  • 1Script или Как я начал open-source проект


                      Тезис о том, что open-source создается гиками-энтузиастами в наше время несколько утратил актуальность. Тем не менее, идеология открытого кода родилась именно так. Классные программы, написанные ночью, бородатыми (и не очень) чудиками, бескорыстно, просто, чтобы сделать мир лучше — изменили мир разработки ПО.

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

                      Однажды, мне в голову упала идея проекта. Идея была чисто исследовательской и я не собирался делать из этого некий «продукт». Кроме того, я раньше не вел проектов в открытом доступе и мне очень хотелось попробовать, как это вообще происходит. Что из этого получилось — под катом.
                      Читать дальше →
                    • Еще раз о том, как не сделать из своей сети «решето»

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

                      В этой статье я не буду рассказывать про использование сложных паролей, максимального ограничения прав доступа, смене учетных записей по умолчанию, обновлению ПО, и других «типовых» рекомендациях. Цель статьи – рассказать о самых частых ошибках в настройках, заставить администраторов и специалистов ИБ задуматься над вопросом – «а все ли в моей сети хорошо?», а также показать, как можно оперативно прикрыть те или иные типовые уязвимости, используя встроенные или бесплатные средства, не прибегая к дополнительным закупкам.

                      Инструкций-рецептов намеренно не прикладываю, так как многое ищется очень легко по ключевым словам.
                      Читать далее
                    • Памятка для офисного сисадмина



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

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

                        Далее кратко и без воды:
                        Читать дальше →