Pull to refresh
@NikName91read⁠-⁠only

User

Send message

Microsoft Excel: революционный игровой 3D-движок?

Reading time10 min
Views25K
image

Введение


В самых передовых компьютерных играх используются различные графические подсистемы — так называемые трёхмерные графические движки. Играм и специалистам этой отрасли хорошо известны Source (Half Life 2), Unreal Engine (Unreal Tournament), idTech 4 (Doom 3), CryENGINE2 (Crysis) и Paradox [прим. пер.: оригинал статьи написан в 2008 году].

Настало время узнать имя нового 3D-движка: Microsoft Excel.

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

В этой статье я продемонстрирую арифметические возможности Excel, встроенные подсистемы рендеринга (их целых две!) и революционный подход, который может привести к сдвигу парадигмы. Надеюсь, статья позволит вам узнать, что Excel эффективно и оптимально сочетает в себе практичность, кучу возможностей, многоплатформенность и высокую производительность с уникальными и футуристичными функциями 3D-движка.

В разделах статьи даже представлены демо-программы и фильмы, созданные при помощи 3D-движка Excel.

Первые шаги для пауэршельшиков

Level of difficultyEasy
Reading time12 min
Views462K
Привет всем из 2023 года!
Я написал эту статью 12 лет назад. И внезапно — это — моя самая популярная статья. Я так же удивился что люди до сих пор заходят сюда и читают эту статью. Поэтому я решил её обновить. И после прочтения понял, что обновлять ничего не буду.

Да, powershell обновился за последние годы. Теперь он стал Powershell Core, и его можно запускать как на Windows, так и на Linux и MacOS. В скриптах появилось много плюшек, но основная идея осталась той же.

Если вы только начинаете писать на Powershell эта статья для вас. Вам будут даны основные понятия, которые относятся к Powershell в 2023 году, и которые позволят вам погрузиться в эту оболочку с головой.


Приди ко мне брате в Консоль!
— Админ Долгорукий.

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



В итоге к народу начало приходить осознание того, что Майкрософт действительно разработали что-то новое и интересное.
И так, зачем вам это нужно? В основном, программа под названием PowerShell (в дальнейшем PS) предназначена для администраторов и программистов. Она позволяет автоматизировать примерно 99% всех действий в системе. С помощью неё вы можете настраивать удалённые компьютеры, запускать и перезапускать сервисы и производить обслуживание большиства серверных приложений. Как выяснилось, возможности у программы потрясающие.

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

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

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

Как мы ржавели. История внедрения и обучения

Reading time12 min
Views38K

Все говорили – переходи на rust! Начинай пользоваться самым-самым языком, который самый любимый язык на stackoverflow и всё такое.

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

Профессионально я программирую уже 17 лет. В далёкие-предалёкие времена я начал изучать программирование с x86 Assembly. Такой жестокий подход к изучению компьютера дал мне глубокое понимание того как работает процессор и что делают другие языки программирования. Учить новые языки для меня никогда не было проблемой. Я их просто учил. C, C++, шарпы, ГО, тысячи разных скриптов и фреймворков. Чего уж там, ещё один язык, можно и выучить.

Ага.

Только вот не с этой ржавой развалюхой. Я просидел две недели над официальным руководством, пялился в VSCode и не мог выдавить из себя больше чем fn main() {}. Ну какого же чёрта? Я просто закрыл глаза, открыл руководство на рандомной странице и начал его читать. И прикол в том, что я понял о чём там говориться. И тут до меня дошло… Руководство написано наизнанку. Начало и конец ничуть не лучше чем в Мементо Кристофера Нолана. Они как-то умудрились запутать в общем-то нормальное руководство. После этого всё пошло получше.

Ржавые шестерёнки заскрипели и начали крутиться. Программа пошла-поехала. Если хотите знать как я внедрил rust в продакшин, как я ему научился и что из этого вышло – добро пожаловать под кат. Реальные люди, коммиты, примеры и никаких todo-list и хеллоу-ворлдов.

Ржаветь так ржаветь.

4 стратегии поиска работы, которые вы зря используете

Reading time3 min
Views23K
Есть стратегии поиска работы, которые реально не работают. Просто вот не нужно их использовать и всё. Запоминаем.

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

Как описать свои навыки в резюме

Reading time3 min
Views29K
Навыки, о которых вы хотите рассказать своим работодателям, должны быть чётко сформулированы, а не быть просто «брошены на ветер». Коммуникабельность / ответственность и креативность — всё это, конечно, прекрасно, но содержательно бесполезно.

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

11 фраз, которые нельзя произносить на собеседовании // Инфографика

Reading time2 min
Views28K
Да, мы знаем, что на собеседовании все самые важные слова вылетают из головы и получается что-то вроде «да я… это… работал в компании, у меня есть навыки… коммуникации». В общем, тренируемся и разбираемся в том, почему некоторые фразы лучше оставить при себе.


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

Один совет, благодаря которому я успешно прошёл несколько собеседований

Reading time6 min
Views176K
— Что вы скажете, если я попрошу вас разработать сервис, который обрабатывает тысячи запросов в секунду с минимальной задержкой?

— Хм… Я скажу, что у вас в компании возникла такая проблема. Но у вас нет идей и вы обсуждаете её на собеседованиях с кандидатами :)

Именно так я ответил, когда мне впервые задали вопрос по архитектуре. Мы хорошо посмеялись. Но потом интервьюер всё-таки заставил меня спроектировать сервис.
Читать дальше →

Ускоряем на 70% игру на процессоре в 1 МГц

Reading time16 min
Views31K

Давным-давно, во времена студенчества в колледже я немного занимался разработкой компьютерных видеоигр. Это была эпоха 8-битных PC, когда игровое оборудование по современным стандартам было почти невозможно медленным.

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

Это история об одном из таких трюков.

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

Исходные данные


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

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

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

Я посмотрел. Но там нельзя было найти никакой простой оптимизации.
Читать дальше →

Как НЕ СТОИТ использовать I2P и TOR

Reading time5 min
Views81K

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

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

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

Читать далее

Карьера программиста. Часть 1. Первая программа

Reading time10 min
Views32K
imageУважаемые читатели Хабра, представляю вашему вниманию серию постов, которые в будущем я планирую объединить в книгу. Я захотел покопаться в прошлом и рассказать свою историю, как я стал разработчиком и продолжаю им быть.

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

А те, кто уже работают в IT — возможно проведут параллели со своим путем.

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

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

На сегодняшний день готовы 3.5 главы книги, из возможных 7. Если первые главы найдут положительный отклик у аудитории, я опубликую всю книгу целиком.
Читать дальше →

Войти в IT после 45-ти

Reading time8 min
Views31K

Два с половиной года назад я перешел из отрасли автоматизации промышленного оборудования, в которой я проработал почти 25 лет, в сферу банковского IT, разработчиком Java, и достиг (по оценке моего лида) уровня middle ++.

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

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

Добро пожаловать под кат!

HP-35. История зарождения бытовой электроники

Reading time13 min
Views17K


Где-то в конце 1971 года Питер Нельсон из корпоративного департамента Hewlett Packard, расположенной в Пало-Альто, пригласил Карен Камбрию из подразделения автоматизированных измерений (к удобству размещенного в том же здании) попозировать с их новым электронным устройством, научным калькулятором, который они нарекли HP-35. Нортон Перл запечатлел Карен с новым детищем HP на нескольких фотоснимках, один из которых в итоге оказался в прессе.
Читать дальше →

Пишем загрузчик на Ассемблере и С. Часть 2

Reading time10 min
Views11K

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

Здесь я ограничусь написанием программы на ассемблере и ее копированием в загрузочный сектор образа дискеты 3.5”, после чего мы, как и в прошлой статье, протестируем записанный загрузочный код при помощи эмулятора bochs. Для реализации этих задач я задействую службы BIOS, что позволит нам лучше понять их функционирование и более уверенно работать в реальном режиме (Real Mode).
Читать дальше →

Пишем макет 16-битного ядра на C/C++

Reading time18 min
Views20K


В первой и второй статьях я лишь коротко представил процесс написания загрузчика на ассемблере и C. Для меня это было хоть и непросто, но в то же время интересно, так что я остался доволен. Однако создания загрузчика мне показалось мало, и я увлекся идеей его расширения дополнительной функциональностью. Но так как в итоге размер готовой программы превысил 512 байт, то при попытке запуска системы с несущего ее загрузочного диска я столкнулся с проблемой “This is not a bootable disk”.
Читать дальше →

Путешествие байта данных во времени

Reading time22 min
Views16K


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

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

Почему не стоит учиться на программиста

Reading time3 min
Views105K

Всем привет, меня зовут Иван, я разработчик, пишу на Java. Хочу поделиться с вам мыслями и совместно порассуждать, когда не стоит идти учиться на программиста.

Что я имею ввиду? Если совсем коротко: не надо заниматься программированием, если вам это не нравиться. Глупее некуда, зачем вообще озвучивать то, что понятно всем по умолчанию, скажете вы. Но, не все так просто, отвечу я. 

Все вокруг стали хотеть войти в IT, из-за высоких зарплат, популярности и пропаганды различных курсов. Но большинство желающих не понимаю почему зарплаты высокие и что именно им придется делать на работе. Незнание порождает ошибочное представление о профессии, что в свою очередь выливается в ошибочное желание учиться на программиста/дата сатаниста/питониста и т.д… Появляется спрос на курсы, курсов и "менторов" становиться все больше. И с каждым днем на рынок выходят специалисты в кавычках. И в кавычках они не потому что мало знают и ничего не умеют, или прошли плохие курсы, а потому что на самом деле им не нравиться программировать. Я предлагаю порассуждать вместе на тему: “Почему нельзя идти учиться на разработчика из-за денег".

Меня не покидает мысль, что тут и обсуждать нечего. Все же просто, ты не можешь писать код, если тебе это не нравиться. Конец статьи. Но нет, я знаю разработчиков, которые учились на курсах, работали в компании, а через год или несколько лет увольнялись с глубокой депрессией без желания делать вообще что либо. И я также знаю людей, которые идут учиться после нескольких лет успешной работы в медицине например, а ведь перед этим было еще шесть лет университета. Общаясь с ребятами, которые хотят идти изучать какой-нибудь язык, я все чаще слышу признание: “меня привлекает большая зарплата”.

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

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

Читать далее

Использование макросов в MASM на примере создания окна

Reading time6 min
Views11K
В далеком 2001-ом году я проводил много времени за изучением ассемблера под Win32. Тогда после долгих мучений с написанием одного и того же кода по сотне раз я взялся написать для себя небольшую библиотеку макросов. В итоге удалось достаточно серьезно облегчить себе судьбу и уменьшить необходимость повторять огромные полотенца кода, при необходимости написать простейшую программу с одним окном.

Недавно наткнулся на те проекты и решил выложить некоторые из них, может кому пригодится…

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

Написание макроса-бота для браузерной игры

Reading time8 min
Views53K

Введение


Не так давно на Google+ появились игры. Прочитав топик об этом, я решил во что нибудь поиграть. Выбор пал на игру Diamond Dash. Через некоторое время игры программист во мне заговорил, что однотипные действия нужно автоматизировать. И вот что из этого вышло…

*Примечание: «руками» даже опытному игроку сложно набрать больше 400к

Раньше я никогда не сталкивался с задачами работы с экраном и мышкой. После непродолжительного гугления было решено для решения использовать язык макросов AutoIt.
Под катом вы найдете краткое описание игры, мой способ распознавания поля, алгоритм определения точки нажатия, и некоторое количество оптимизаций. А так же ссылку на github-репозиторий скрипта.
UPD Добавлено видео работы скрипта.
Читать дальше →

Список ресурсов для изучения Ассемблера

Reading time4 min
Views444K
Доброго времени суток!
Некоторым программистам иногда приходит в голову мысль «а не изучить ли мне ассемблер?». Ведь на нем пишут самые (с некоторыми оговорками) маленькие и быстрые программы, да и охота ощутить вкус низкоуровневого программирования берет свое. Ну и для общего развития не повредит.
Мысль эта не обошла стороной и меня. Вдохновившись историей одного байта, я ринулся в бой…

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

UPD
В список начали добавляться ресурсы по программингу микроконтроллеров.
Читать дальше →

Об эффективном использовании памяти при отображении картографических данных

Reading time9 min
Views2.5K

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

Однако при реализации этой вроде бы типовой задачи возникли проблемы, связанные с наличием некоторых ограничений:

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

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

В-третьих, МКС движется с 1-ой космической скоростью, совершая оборот вокруг Земли примерно за 92 минуты, т.е. смена неповторяющихся изображений земной поверхности на экране в реальном времени должна идти достаточно быстро.

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

При этом, например, если максимальный размер текстуры, которую можно загрузить в видеопамять составляет 2048х2048, то, даже не самая большая из карт, например, карта «ночной» Земли, доступная на сайте НАСА [1], при довольно грубом разрешении около 0.75 км/пиксель уже имеет размер 54000х27000 пикселей. Таким образом, чтобы загружать такую карту как текстуру, ее нужно было бы разбить как минимум на 342 фрагмента.

Читать далее

Information

Rating
Does not participate
Registered
Activity