Pull to refresh
4
0

Программист

Send message

3D-движок, написанный на формулах MS Excel

Reading time9 min
Views116K

Скриншот экрана игры

Эта статья посвящена тому, как я смог написать 3D-движок только на формулах Excel. Я реализовал следующий функционал:

  • бесконечная процедурно генерируемая карта лабиринта
  • рендеринг трассировкой лучей в реальном времени
  • вычисление окклюзии
  • рендеринг простейшего освещения
  • шейдер освещения и вычислений
  • движок естественного движения
  • в 3D-движке не используются макросы

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

Можете скачать файл и протестировать его самостоятельно!
Total votes 229: ↑226 and ↓3+223
Comments101

ДНК глазами программиста

Reading time15 min
Views89K
От переводчика: Так как я не являюсь биологом, возможны неточности в переводе терминов (и не только :). Оригинал находится здесь.

Если ты – молоток, то во всём увидишь гвоздь


Это всего лишь размышления программиста о ДНК. Я не являюсь молекулярным генетиком.

Исходный код


Находится здесь. Это не шутка. Исходники можно просмотреть с использованием замечательного набора скриптов Perl под названием "Ensembl". Геном человека занимает приблизительно 3 гигабайта, которые можно сократить до 750 мегабайт, если отбросить шелуху. Немного печалит, что это всего лишь 2.8 браузеров Mozilla Firefox.

ДНК похожа скорее не на исходники на языке C, а на байт-код для виртуальной машины под названием «ядро клетки». Крайне сомнительно, что существуют исходники, которые можно скомпилировать в этот байт-код: то, что мы видим, – это всё, что у нас есть.
Читать дальше →
Total votes 115: ↑114 and ↓1+113
Comments308

Поговорим о юзернеймах

Reading time12 min
Views14K
Пару недель назад я выпустил django-registration 2.4.1. Сборки 2.4.x станут последними в версии django-registration 2.x, дальше будут выходить только исправления багов. Основная ветка сейчас готовится к версии 3.0, откуда планируется удалить кучу устаревшего хлама, накопившегося за последнее десятилетие поддержки, и я постараюсь учесть лучшие практики современных приложений Django.

В ближайшее время напишу подробнее о новой версии, но именно сейчас хочу немного поговорить об обманчиво простой проблеме, с которой приходится иметь дело. Это имена пользователей. Да, я мог бы написать одну из популярных статеек типа «Заблуждения программистов об X», но всё-таки предпочитаю реально объяснить, почему это сложнее, чем кажется, и предложить некоторые советы, как решить проблему. А не просто стебаться без полезного контекста.
Читать дальше →
Total votes 38: ↑37 and ↓1+36
Comments13

Яндекс.Алгоритм 2018: оптимизационный трек и ML-задача от разработчиков Алисы

Reading time12 min
Views21K

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




А теперь по порядку. Открывает соревнование этого года алгоритмический трек. Он пройдет в классическом варианте с правилами tcm/time и системой «гран-при 30». Квалификационный раунд стартует уже 17 февраля. Каждый, кто решит минимум одну задачу, пройдет в отборочный тур и сможет побороться за стильные футболки, которые достанутся ТОП-256 и денежные призы для трех победителей трека. Ссылка на регистрацию.
Читать дальше →
Total votes 37: ↑37 and ↓0+37
Comments16

Почему зарплаты в ИТ скоро начнут падать?

Reading time5 min
Views39K
В последние годы вокруг ИТ поднялся настоящий хайп, как модно сейчас говорить. ВУЗы открывают новые специальности для восполнения “дефицита кадров” в этом сегменте рынка труда, эксперты различного уровня прогнозируют увеличение спроса на программистов и рассказывают про “информационный век”, а по просторам интернета гуляют “истории успеха” людей, которые решили все свои проблемы после переквалификации. При этом зарплаты ИТ-специалистов в разы выше зарплат специалистов других сфер экономики со схожим уровнем сложности задач, что только подогревает интерес к этому направлению. Не слишком ли это хорошо, чтобы быть правдой?
Читать дальше →
Total votes 81: ↑29 and ↓52-23
Comments99

Бухгалтерский учет для программистов

Reading time16 min
Views81K

Введение


Занимаюсь автоматизацией бухгалтерского учета 17 лет. После универа поработал как программист бухгалтерской программы. Выяснилось, что есть спрос на программистов этой программы. Поменял одну работу, вторую. Начал брать заказы на стороне. Выяснилось (или показалось), что выполнять заказы выгоднее, чем получать зарплату. Стал частным предпринимателем. Выяснилось (или опять показалось), что продавать программу выгоднее, чем программировать. Стал дилером. Оказалось, что выгоднее всего – подписка на обновления и обслуживание. Возможно, еще выгоднее сделать веб-сервис для онлайн-бухгалтерии…

В ходе работы приходилось нанимать программистов и обучать основам бухгалтерского учета. Когда обучал программистов бухучету, мне нравилось за час рассказать им всю базовую теорию. Приятно срывать покровы сложности и таинственности. Оказывается, курсы бухгалтеров никому не нужны. Нет такой науки. Разве что набор терминов, в которых путаются сами бухгалтера…
Читать дальше →
Total votes 51: ↑51 and ↓0+51
Comments182

Большой тест термокружек. Личный опыт и тесты на себе

Reading time7 min
Views109K
Некоторое время назад я делал большой сравнительный тест термосов. И в комментариях меня попросили сделать тест термокружек. Что ж, я не мог остаться равнодушным, да и мне самому интересна эта тема, ведь термокружка – это верный спутник автомобилиста.
По традиции, в конце материала видеообзор.


Total votes 27: ↑22 and ↓5+17
Comments114

Понимание lvalue и rvalue в C и С++

Reading time9 min
Views181K
Привет, Хабр! Представляю вашему вниманию перевод статьи Eli Bendersky, Understanding of lvalues and rvalues in C and C++.

От переводчика: предлагаю Вашему вниманию перевод интересной статьи об lvalue и rvalue в языках C/C++. Тема не нова, но знать об этих понятиях никогда не поздно. Статья рассчитана на новичков, либо на программистов переходящих с C (или других языков) на C++. Поэтому будьте готовы к подробному разжёвыванию. Если вам интересно, добро пожаловать под кат
Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments33

«Программист-прагматик. Путь от подмастерья к мастеру»: коротко о главном (часть первая)

Reading time22 min
Views72K
О книге «Программист-прагматик. Путь от подмастерья к мастеру» Эндрю Ханта и Дэвида Томаса знают, наверное, все, кто занимается программированием, причем многие — в основном из упоминаний в подборках и цитат в более современных статьях. Учитывая, что этот сборник практических советов для разработчиков скоро отметит двадцатилетний юбилей, тот факт, что его до сих пор приводят как источник ценной информации, вызывает уважение. Секрет прост: авторы, хоть и делали акцент на практической применимости своих подсказок, говорили по большей части о фундаментальных принципах построения рабочего процесса. Многие технические моменты, которые упоминаются в тексте, действительно давно устарели, но базовые подходы к разработке, тестированию, взаимодействию внутри команды и с аудиторией остаются актуальными.


Ниже вы найдете конспект первых четырех глав; речь в них идет об авторской концепции самообразования, основах прагматического подхода в программировании и правилах подбора инструментов. Книга очень удобна для «точечного» чтения: материал представляется в виде отдельных параграфов-подсказок, снабженных перекрестными ссылками. За рамками этого конспекта остались примеры из конкретных языков, разбор кейсов из авторской практики, те самые ссылки, упражнения на закрепление и некоторые забавные аналогии, оживляющие текст — так что рекомендую ознакомиться с оригиналом, если какие-то из тезисов вас заинтересуют. Приятного чтения!
Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments5

Заблуждения большинства программистов относительно «времени»

Reading time6 min
Views59K
Много дней назад я решил записать некоторые наблюдения, сформировавшиеся пока в последние годы я занимался тестированием. Рассматривая области, которые получают наибольшую отдачу от тестирования, я понял, что у меня накопилось много конкретных мыслей о том, как мы — программисты — склонны небрежно обращаться с понятием «время» в программировании.

Тогда я написал пост «Заблуждения программистов относительно „времени“», в котором указал 34 ошибочных представления и заблуждения, относящихся как к календарному, так и к системному времени. С большинством из них я столкнулся сам, занимаясь дебаггингом программ (как рабочих, так и тестовых).

Читать дальше →
Total votes 62: ↑55 and ↓7+48
Comments100

Заблуждения программистов об именах

Reading time3 min
Views87K
Две недели назад на Хабре публиковался перевод «Заблуждения программистов о времени», который по своей структуре и стилю основан на этом классическом тексте Патрика Макензи, опубликованном два года назад. Поскольку заметка о времени была крайне благоприятно воспринята аудиторией, то, очевидно, имеет смысл перевести и исходную статью об именах и фамилиях.

Джон Грэхем-Камминг (John Graham-Cumming) сегодня жаловался в своём блоге, что компьютерная система, с которой он работал, не приняла его фамилию из-за недопустимых символов. Конечно, там нет недопустимых символов, потому что любой способ, как человек представляет себя, — по определению — является подходящим идентификатором. Джон выразил сильную досаду насчёт данной ситуации, и он имеет полное право, потому что имя — суть нашей индивидуальности, практически по определению.
Читать дальше →
Total votes 94: ↑78 and ↓16+62
Comments223

Заблуждения программистов относительно времени

Reading time3 min
Views89K
За последние пару лет я потратил много времени на дебаггинг чужих тестов. Это была интересная работа, иногда расстраивающая, но всегда поучительная. Кто-то может подумать, что в тестах нет багов, но конечно баги есть везде, и тесты не исключение.

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

На самом деле, я повидал так много заблуждений, которые оставляют след в чужих (и моих собственных) программах, что посчитал полезным составить список самых частых проблем.
Читать дальше →
Total votes 241: ↑218 and ↓23+195
Comments216

Вы все на одно лицо: 1 из 50 человек не узнаёт окружающих (и может не знать об этом)

Reading time5 min
Views78K
Прозопагнозия, или лицевая слепота — это расстройство восприятия лица, при котором человек не может узнавать лица, но другие предметы, включая морды животных, узнаёт без каких-либо сложностей. Людям с этим заболеванием приходится адаптироваться и узнавать окружающих по голосу, походке, причёске. При этом сами они чаще всего никогда не слышали о своём диагнозе.


Брэд Питт — один из людей, страдающих от прозопагнозии. Источник
Читать дальше →
Total votes 35: ↑35 and ↓0+35
Comments165

5 мифов о ведущих разработчиках, от которых мне становится грустно

Reading time4 min
Views41K
Ведущие разработчики, они же Senior developers. Это те самые люди, которые на своем веку перевыполняли уже все возможные задачи. Это люди, которые входят в переговорку, открывая дверь с ноги. Они — решение всех проблем компании и гарантия светлого будущего. Они не изучают технологии, а изобретают. Они знают бизнес-требования до того, как те были сформулированы. И самое главное: они четко и отчетливо представляют себя через пять, а иногда и через десять лет.

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

В этой статье я бы хотел немного поговорить о том, кем не должен быть ведущий разработчик. Развенчать несколько мифов.
Читать дальше →
Total votes 78: ↑55 and ↓23+32
Comments107

Ричард Хэмминг: Глава 23. Математика

Reading time17 min
Views13K
imageПривет, Хабр. Помните офигенную статью «Вы и ваша работа» (+219, 2194 в закладки, 345k прочтений)?

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

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

Мы уже перевели 5 глав.

Глава 23. Математика


(За перевод спасибо Jerry OK, который откликнулся на мой призыв в предыдущей главе".) Кто хочет помочь с переводом — пишите в личку или на почту magisterludi2016@yandex.ru

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

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

Пожалуй, «излюбленное» её определение, данное самими математиками, таково:
«Математика — это то, что делается математиками, а математики — это те, кто делает математику.»
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments8

Пишем бота-кликера на Python для Lineage 2

Reading time7 min
Views165K


Предисловие


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


Когда-то в школьные годы был увлечен одной из популярных MMORPG — Lineage 2. В игре можно объединяться в кланы, группы, заводить друзей и сражаться с соперниками, но в общем игра наполнена однообразными действиями: выполнением квестов и фармом (сбор ресурсов, получение опыта).


В итоге решил, что бот должен решать одну задачу: фарм. Для управления будут использоваться эмулированные клики мыши и нажатия клавиш клавиатуры, а для ориентирования в пространстве — компьютерное зрение, язык программирования — Python.

Читать дальше →
Total votes 70: ↑67 and ↓3+64
Comments76

Parallel STL. Быстрый способ ускорить C++ STL код

Reading time10 min
Views29K
За пару последних десятилетий, пока вычислительные системы эволюционировали от одноядерных скалярных до многоядерных векторных архитектур, значительно выросла популярность управляемых языков, а также появились новые языки программирования. Но старый добрый C++, позволяющий писать высокопроизводительный код, остается более чем популярным. Однако, до недавнего времени стандарт языка не предоставлял каких-либо инструментов для выражения параллелизма. Новая версия стандарта (C++17 [1]) предоставляет набор параллельных алгоритмов Parallel STL, дающий возможность преобразовать существующий последовательный C++ код в параллельный, что, в свою очередь, позволяет задействовать такие аппаратные возможности, как многопоточность и векторизация. Эта статья познакомит вас с основами Parallel STL и его реализацией в Intel Parallel Studio XE 2018.


Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments7

Information

Rating
4,636-th
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity