Pull to refresh
0
0
Перикл Фемиди @pfemidi

Домосед

Send message

Разбираем алгоритмы компьютерной графики. Часть 5 – Анимация «Shade Bobs»

Reading time4 min
Views3.9K

Алгоритм, который рассмотрим сегодня, не имеет нормального названия. Иногда его называют "Shade Bobs", а вообще это один из многочисленных алгоритмов генерации "плазмы". Когда что-то на экране видоизменяется и переливается.

Из множества алгоритмов "плазм", представленный экземпляр самый элементарный.

Читать далее

Разбираем алгоритмы компьютерной графики. Часть 4 – Анимация «Салют»

Reading time7 min
Views9.1K

Еще немного в копилку красивых эффектов и алгоритмов.

Вы в своей жизни наверняка видели салют, когда в ночном небе взрывает огненный шар и от него во все стороны медленно разлетаются огни.

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

Читать далее

Разбираем алгоритмы компьютерной графики. Часть 3 – анимация «Пламя»

Reading time6 min
Views14K

Рассмотрим алгоритм рисования простейшего пламени. Придуман он довольно давно и использовался в огромном количестве демо и игр.

Читать далее

Разбираем алгоритмы компьютерной графики. Часть 2 — «Туннель из демо «Second Reality»»

Reading time5 min
Views7.4K

В 1993 году на демопати Assembly, которая проходит в Финляндии, команда Future Crew презентовала свою новую работу «Second Reality».

(хороший разбор исходников этой демо можно найти здесь же на Хабре, по этой ссылке «Анализ кода демо Second Reality»)

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

Сегодня мы попробуем воспроизвести один из эффектов демонстрируемых в этом демо, а именно эффект плавающего туннеля.

Читать далее

Разбираем алгоритмы компьютерной графики. Часть 1 — «Starfield Simulation»

Reading time7 min
Views18K

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

Действовать буду по следующему принципу: беру какой-либо графический эффект (из демо, программы, игры – не важно) и пытаюсь реализовать этот же эффект максимально простым и понятным способом, разъясняя что, как и почему сделано именно так.

В качестве основы для вывода графики будет использован язык Python и библиотека PyGame. Этим набором можно очень просто что-то выдать на экран, сделать анимацию и т.п. не отвлекаясь на технические детали реализации.

Читать далее

Где искать работу в IT?

Reading time5 min
Views264K

Ты решил «Войти в Айти» или уже работаешь в IT и хочешь найти место получше. Где же найти работу и не потратить на это несколько месяцев?

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

Читать далее

Гайд по архитектуре приложений для Android. Часть 1: обзор

Reading time7 min
Views61K

Перевод обновлённого гайда Android по архитектуре приложений. Это — первая часть из пяти: обзор рекомендаций по архитектуре.

Читать далее

Плагины ALSA

Reading time3 min
Views6.1K

Линукс для музыканта: плагины ALSA

Здравствуй, Хабр!

Перевод-справка: подсистема ALSA, краткое описание API плагинов hw, mmap_emul, shm, null, copy, linear, lfloat, mulaw, alaw, adpcm, route, rate, plug, file, multi, share, hooks, dmix, dshare, dsnoop, ladspa, asym, iec958, softvol, empty, remap.

Музыканты, поклонники «лампового звука», живущие около волшебного леса Linux, рано или поздно замечают среди деревьев темную тень — зверя с дурной славой и громким именем ALSA. И правда, ALSA — загадочный зверь, не любящий света. (Кажется, первая встреча с ALSA всегда неприятна и обычно случается в момент, когда из акустических колонок пропадает звук во время просмотра любимого кинофильма.)

На самом деле надежность подсистемы ALSA не вызывает сомнений: почти все проблемы звука в Линукс связаны или с неправильно настроенными плагинами ALSA, или с PulseAudio, а также демонами автосохранения настроек (это те самые таинственные программы, которые вызываются из командной строки

Однако, если документация программы PulseAudio легко находится, то найти обширное описание плагинов ALSA задача не очень-то простая. Даже на сайте ALSA вы найдете всего лишь немногие ссылки на страницы помощи и прочитаете призыв «написать недостающие комментарии».

Плагины ALSA - «самостоятельные», но необычные программы, как правило, «встраиваемые» в звуковой поток с помощью настроек файла .asoundrc.

Зачем они нужны? Допустим, чтобы чтобы превратить ALSA в систему с «низкой задержкой», включить включить виртуальную звуковую карту (модуль snd-aloop), чтобы ALSA общалась с Jack.

Читать далее

Читать далее

Какие задачи не решаются bat-файлами?

Reading time8 min
Views33K

Бат-файлы ведут свою историю со времен MS-DOS. Новые фичи добавлялись с сохранением обратной совместимости. Из-за этого многое в языке bat-файлов, как мы увидим далее, нелогично и неудобно.

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

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

Читать далее

70+ бесплатных инструментов для компьютерной криминалистики (форензики)

Reading time8 min
Views49K

Расследование инцидентов в области информационной безопасности не такая горячая тема, как пентесты, но эта научная и практическая дисциплина продолжает развиваться, во многом, благодаря Open Source-сообществу.

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

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

Читать далее

Минимальная реализация Lua на Rust

Reading time24 min
Views9.8K
После того, как вы освоите это руководство, в вашем распоряжении окажется минимальная реализация Lua (парсер, компилятор, виртуальная машина), написанная на Rust с чистого листа. Этот проект получил название Lust, его код можно найти на GitHub.

Читать дальше →

Rustenstein 3D: программируем, как будто сейчас 1992 год

Reading time11 min
Views11K
image

Дважды в год компания NextRoll организует мероприятие Hack Week, на котором сотрудники на неделю берутся за проект по своему выбору. Это превосходная возможность для экспериментов, изучения новых технологий и объединения с людьми из всех отделов компании. Узнать о Hack Week подробнее можно здесь.

Так как NextRoll всё активнее использует язык программирования Rust, на Hack Week инженеры обычно пытаются получить опыт работы с ним. Ещё одним популярным вариантом выбора является работа над видеоиграми, и, как вы уже могли догадаться, мы часто видим в проектах сочетание видеоигр и языка Rust.

В прошлом году группа сотрудников работала над развитием моей игры rpg-cli. На этот раз захотелось пойти дальше и взять проект, который показывает некоторые из сильных сторон Rust: низкоуровневым программированием, высоконагруженными вычислениями и операционной совместимостью данных с языком C. Поэтому мы решили портировать на Rust классическую игру Wolfenstein 3D.
Читать дальше →

Android Studio. Kotlin. Сохранение файла в общедоступной папке Download

Reading time6 min
Views20K

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

Виной всей этой сложности - множество факторов. Языковой барьер: русский - английский, Kotlin - Java. Различия в способах копирования в разных версиях Android. Разобраться было не просто. В итоге - пишу этот гайд, чтобы облегчить жизнь тем, кто пойдет за мной следом...

Читать далее

Ссылки и ссылочные типы в C++

Level of difficultyMedium
Reading time47 min
Views142K

Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Это пятая статья из серии, список предыдущих статей приведен в конце в разделе 6. Серия ориентирована на программистов, имеющих определенный опыт работы на C++. Эта статья посвящена ссылкам и ссылочным типам в C++.


Термин «ссылка» широко используется и в обыденной жизни, в компьютерных и других науках и поэтому его смысл сильно зависит от контекста использования. В языках программирования под ссылкой понимают небольшой объект, главная задача которого обеспечить доступ к другому объекту, расположенному в другом месте, имеющему другой размер и т.д. Объекты ссылки удобно использовать на стеке, они легко копируются, что позволяет получить доступ к объекту, на который эта ссылка ссылается, из разных точек кода. В той или иной форме ссылки поддерживаются во всех языках программирования. В ряде языков программирования, таких как C#, Java, Pyton и многих других, ссылки, по существу, являются концептуальным ядром.



В C роль ссылок играют указатели, но работать с ними не очень удобно и в C++ появилась отдельная сущность — ссылка (reference). В C++11 ссылки получили дальнейшее развитие, появились rvalue-ссылки, универсальные (передаваемые) ссылки, которые играют ключевую роль в реализации семантики перемещения — одном из самых значительных нововведений C++11.



Итак, попробуем рассказать о ссылках в C++ максимально подробно.


Читать дальше →

Массивы в C++

Level of difficultyMedium
Reading time22 min
Views486K


Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Это четвертая статья из серии, первые три, посвященные перегрузке в C++, находятся здесь, здесь и здесь.


Эта статья посвящена массивам. Массивы можно отнести к наиболее древним слоям C++, они пришли из первых версий C. Тем не менее, массивы вошли в объектно-ориентированную систему типов C++, хотя и с определенными оговорками. Программисту важно знать об этих особенностях, чтобы избежать потенциальных ошибок. В статье также рассмотрено другое наследие C – тривиальные типы и неинициализированные переменные. Часть нововведений C++11, С++14, С++17 затрагивают работу с массивами, все эти новые возможности также подробно описаны. Итак, попробуем рассказать о массивах все.



Читать дальше →

Перегрузка в C++. Часть III. Перегрузка операторов new/delete

Reading time11 min
Views25K

Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Эта статья посвящена перегрузке операторов new/delete. Это третья статья из серии, первая, посвященная перегрузке функций и шаблонов, находится здесь, вторая, посвященная перегрузке операторов, находится здесь. Статья завершает цикл из трех статей, посвященный перегрузке в C++.

Читать дальше →

Перегрузка в C++. Часть II. Перегрузка операторов

Reading time31 min
Views144K


Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Эта статья посвящена перегрузке операторов. Особое внимание уделено использованию перегруженных операторов в стандартной библиотеке. Это вторая статья из серии, первая, посвященная перегрузке функций и шаблонов, находится здесь. Следующая статья будет посвящена перегрузке операторов управления памятью.


Читать дальше →

Перегрузка в C++. Часть I. Перегрузка функций и шаблонов

Reading time30 min
Views75K

C++ сложный и интересный язык, совершенствоваться в нем можно чуть ли не всю жизнь. В какой-то момент мне захотелось изучать его следующим образом: взять какой-то аспект языка, возможно довольно узкий, и разобраться с ним максимально глубоко и подробно. Такой подход в значительной степени был стимулирован замечательными книгами Скотта Мейерса, Герба Саттера и Стефана Дьюхэрста. Когда накопилось определенное количество материалов, решил познакомить с ними Хабровчан. Так появилась эта серия, которую я назвал «C++, копаем вглубь». Серия помечена как Tutorial, но ориентирована она все-таки не на начинающих, а скорее на intermediate уровень. Первая тема — это перегрузка в C++. Тема оказалась очень обширной и получилось три статьи. Первая статья посвящена перегрузке функций и шаблонов, вторая перегрузке операторов и третья перегрузке операторов new/delete. Итак, начнем копать.


Читать дальше →

Inno Setup: создание инсталлятора на примере развертывания C# приложения

Reading time13 min
Views219K

Введение



Я не являюсь профессиональным программистом. В том смысле, что не зарабатываю денег этим ремеслом, а использую свои навыки в качестве инструмента для основной, научной, деятельности. Поэтому все мои «поделки» живут лишь отведенный им на решение конкретной задачи период и не выходят за пределы каталогов проекта. Кроме того, уже довольно давно я отошел от разработки под ОС Windows, ибо Linux для решения моих задач более удобен.

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

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

Созданием инсталляторов я не занимался никогда. Поэтому данный вопрос был основательно «загуглен», в числе прочего попалась и такая статья с Хабра. Выбор средств для подобной задачи довольно широк, и включает как проприетарные, так и открытые продукты. Вот список того, что я «пощупал»

  1. InstallShield — классика жанра, достаточно солидный проприетарный продукт
  2. Adnvanced Installer — проприетарный инструмент с широкими возможностями кастомизации через GUI. На сайте сказано, что если Вы блоггер и будете писать об этом продукте много хороших слов, то у Вас есть возможность получить Free License
  3. WiX — открытый бесплатный продукт, основанный на XML-скриптах. Мощная, хорошо документированная штука. Разбираться с ним я пока не стал, ибо время дорого (да и к XML душа лежит не очень). Возможно когда нибудь я к нему вернусь. Да, к нему есть плагины для Visual Studio, что несомненный плюс.
  4. Inno Setup — опенсорсный проект, код которого доступен на гитхабе. В силу бесплатности и низкого порога вхождения мой выбор остановился именно на нем, как инструменте позволившем выполнить работу быстро и качественно.


Так что в статье мы будем рассматривать пример использования Inno Setup, для которого имеется полезный фронтэнд Inno Script Studio, позволяющий выполнять создание простых инсталляторов с помощью мастера и менять настройки через GUI. GUI понадобился мне для первого знакомства, с продуктом, но мы не будем уделять ему большого внимания — мой «линукс головного мозга» в последнее время всё больше и больше уводит меня от желания использовать разного рода «мастера» (это субъективно, прошу не пинать). Мы рассмотрим хардкорный способ написания скрипта с чистого листа.

Поехали!

MAKEFILES, лучшие практики. Часть 1

Reading time5 min
Views20K

Makefile’ы широко используются для создания билдов огромного множества проектов на самых разных языках, но проекты на C/C++ составляют большинство из них. Если вы разрабатываете или тестируете программное обеспечение, вероятность того, что вы их встретите, очень высока.

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

Что вам понадобится: хорошее понимание, что из себя представляет Makefile, иерархия каталогов UNIX и процесс компиляции.

Читать далее

Information

Rating
7,254-th
Location
Москва и Московская обл., Россия
Registered
Activity