Как стать автором
Обновить
55
1
Альберт @mynameco

Пользователь

Отправить сообщение

Люди не понимают ООП

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров114K

«ООП для меня означает лишь обмен сообщениями, локальные ограничения и защиту, сокрытие состояния процесса и крайне позднее привязывание», — Алан Кэй (человек, придумавший термин «объектно-ориентированное программирование»)1

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

Мне это всегда казалось довольно странным. Мне не только нравится ООП, я ещё и считаю, что часто это лучший/наиболее очевидный способ моделирования задачи. И ниже я расскажу, почему.
Читать дальше →
Всего голосов 126: ↑119 и ↓7+140
Комментарии457

Видеокарта VGA для микроконтроллера. Часть 2. От идеи до мелкой серии

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров14K
image

В первой части была описана идея видеокарты VGA для простого микроконтроллера (или ардуины), с помощью которой можно выводить информацию на стандартный монитор с интерфейсом VGA даже с самых слабых и медленных ядер. Карта, сердцем которой является высокоскоростная ПЛИС, берет на себя все скоростные и критичные к таймингам операции.

Идея была обкатана на макете и показала свою жизнеспособность. Однако для ее реализации «в железе», а тем более в серии, необходимо пересмотреть несколько моментов.
Читать дальше →
Всего голосов 63: ↑62 и ↓1+80
Комментарии37

Марс, органика, и два стабильных изотопа

Время на прочтение6 мин
Количество просмотров10K

Продолжаем разговор о марсианской органике и недавнем открытии марсохода Curiosity, которое так заинтриговало NASA. Пока оно не является подтверждением существования марсиан, но в одноклеточном варианте они уже входят в число трёх наиболее вероятных объяснений находки.
Читать дальше →
Всего голосов 51: ↑50 и ↓1+68
Комментарии12

О фейковых криптовалютах (Ethereum, Tron, Ripple и пр)

Время на прочтение10 мин
Количество просмотров306K

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

Это закономерно привело к появлению муляжей криптовалют, которые якобы используют те же технологии, но при этом дают преференции их создателям, т.е. не такие уж децентрализованные. Для пользователей всё равно, а создателям профит. Самый распространённый из таких муляжей - Ethereum.

Читать далее
Всего голосов 218: ↑193 и ↓25+236
Комментарии538

Как происходит рендеринг кадра A Plague Tale: Innocence

Время на прочтение5 мин
Количество просмотров8.7K

Предисловие


Как и в других моих исследованиях, давайте начнём с введения. Сегодня мы рассмотрим последнюю игру французского разработчика Asobo Studio. Впервые я увидел видео этой игры в прошлом году, когда коллега поделился со мной 16-минутным геймплейным трейлером. Моё внимание привлекла механика «крысы против света», но мне не особо захотелось играть в эту игру. Однако после её выхода многие стали говорить, что она выглядит так, как будто сделана на движке Unreal, но это не так. Мне стало любопытно увидеть, как работает рендеринг и насколько вообще разработчики вдохновлялись Unreal. Ещё меня заинтересовал процесс рендеринга стаи крыс, потому то в игре она выглядела очень убедительно и к тому же является одним из ключевых элементов геймплея.

Когда я начал попытки выполнить захват игры, то подумал, что придётся сдаться, потому что ничего не срабатывало. Хотя игра использует DX11, который сейчас поддерживают практически все инструменты анализа, мне не удалось заставить работать ни один из них. Когда я пытался использовать RenderDoc, игра вылетала при запуске, и то же самое происходило с PIX. Я по-прежнему не знаю, почему так происходит, но к счастью, мне удалось выполнить несколько захватов с помощью NSight Graphics. Как обычно, я поднял все параметры до максимальных и начал искать подходящие для анализа кадры.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Комментарии2

ARM и программирование без блокировок

Время на прочтение7 мин
Количество просмотров18K


Выпуск ARM-процессора Apple M1 вдохновил меня на то, чтобы написать в Твиттер про опасности программирования без блокировок (lock-free). Этот твит вызвал бурную дискуссию. Обсуждение прошло довольно неплохо, учитывая то, что попытки втиснуть в рамки Твиттера обсуждениие такой сложной темы, как модели памяти центрального процессора, — в принципе бессмысленны. Но у меня осталось желание немного раскрыть тему.

Этот пост задуман не только как обычная вводная статья про опасности программирования без блокировок (о которых я в последний раз писал около 15 лет назад), но и как объяснение, почему слабая модель памяти ARM ломает некоторый код, и почему этот код, вероятно, не работал изначально. Я также хочу объяснить, почему стандарт C++11 значительно улучшил ситуацию в программировании без блокировок (несмотря на возражения против противоположной точки зрения).
Читать дальше →
Всего голосов 42: ↑38 и ↓4+51
Комментарии60

Простые правила IT-гигиены

Время на прочтение4 мин
Количество просмотров25K
Доброго времени суток.

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

image

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

Давайте приступим.

Нюансы проблематики


Наверняка каждый так или иначе сталкивался с моментом, когда с аккаунта знакомого вдруг начинает поступить какой-то левый спам, просьбы занять денежку и что-то еще такое-этакое.
Читать дальше →
Всего голосов 31: ↑17 и ↓14+9
Комментарии89

Будни техподдержки: байки про то, что бывает, когда не можешь дойти до юзера

Время на прочтение8 мин
Количество просмотров68K
Мы среди прочего оказываем поддержку по Вотсапу. Вечер, ничто не предвещает проблем, как тут вдруг открывается окно видеозвонка. Крупным планом — телеком-оборудование, установленное на площадке заказчика… И оно горит. Буквально. Видно огонёк, похоже — изоляция проводов около блока питания. Человек спрашивает, что делать. Кричу:
— Туши!
Он:
— А можно?
— Можно!
И только тогда он тушит.



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

В общем, привет, Хабр! Я из команды удалённой технической поддержки, и мы часто общаемся с пользователями по всей стране и за её пределами. И они творят довольно странные вещи. Ниже будут байки.
Читать дальше →
Всего голосов 152: ↑152 и ↓0+152
Комментарии128

Что представила Apple на WWDC, и что об этом думают iOS-разработчики

Время на прочтение9 мин
Количество просмотров30K

Кадр из приветственного видео на WWDC

Вот и настал день X — день ежегодной конференции WWDC. По легенде, этот день должен определить вектор развития iOS-разработки на весь год и повысить мораль всех iOS-разработчиков в команде. Давайте вместе посчитаем количество слов «Amazing», «Ever» и «Machine Learning», произнесенных со сцены во время мероприятия.

Это значимое событие и для программистов, и для обычных пользователей Apple: тут и про нововведения в системном API, и про пользовательские сервисы. И, кстати, про железо — хотя мероприятие в первую очередь софтовое, сегодня на нём впервые за годы обновили Mac Pro.

iOS-разработчики из программного комитета конференции Mobius не могли пройти мимо этого события: помимо рассказа «что вообще представили», мы дали комментарии о своих эмоциях от прослушанного и постарались ответить на вопрос, та ли еще Apple или уже нет.
Читать дальше →
Всего голосов 46: ↑42 и ↓4+38
Комментарии58

Барьеры памяти и неблокирующая синхронизация в .NET

Время на прочтение7 мин
Количество просмотров58K

Введение


В этой статье я хочу рассказать об использовании некоторых конструкций, применяющихся для осуществления неблокирующей синхронизации. Речь пойдёт о ключевом слове volatile, функциях VolatileRead, VolatileWrite и MemoryBarrier. Мы рассмотрим, какие проблемы вынуждают нас воспользоваться этими языковыми конструкциями и варианты их решения. При обсуждении барьеров памяти вкратце рассмотрим модель памяти .NET.
Читать дальше →
Всего голосов 63: ↑62 и ↓1+61
Комментарии18

Тестирование на примере ReactJS: насколько глубока кроличья нора

Время на прочтение14 мин
Количество просмотров24K
Всем привет, меня зовут Ярослав Астафьев, и сегодня я хотел бы провести обзорную экскурсию в тестирование ReactJS. Я не буду углубляться в сложности тестирования веб приложений с использованием определенных библиотек (руководствуясь подходом «сложно тестировать только плохой код»), взамен постараюсь разнообразить ваш кругозор. Так что в этой статье React — скорее повод собрать воедино подходы к тестированию, отправная точка, объединяющая хипстеров и технологии. Корректнее будет даже сказать, что речь пойдет о принципах тестирования вообще с иллюстрациями на ReactJS (и не только).

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



Если введение не вызвало приступ синестезии — добро пожаловать под кат.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии0

Про одного парня

Время на прочтение14 мин
Количество просмотров191K
История реальная, я все видел своими глазами.

Несколько лет один парень, как и многие из вас, работал программистом. На всякий случай напишу так: «программистом». Потому что он был 1Сником, на фиксе, производственной компании.

До этого он пробовал разные специальности – 4 года во франче программистом, руководителем проектов, умел закрывать по 200 часов, одновременно получая процент с проекта, за руководство и немного занимаясь продажами. Пробовал самостоятельно разрабатывать продукты, был начальником IT-отдела в большой компании, численностью 6 тысяч человек, примерял разные варианты применения своей кавычечной профессии – программиста 1С.

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

Этому парню стало интересно, как можно зарабатывать больше денег, не занимаясь продажами и не создавая свой собственный бизнес.
Читать дальше →
Всего голосов 272: ↑239 и ↓33+206
Комментарии247

Визуальное программирование — почему это плохая идея

Время на прочтение6 мин
Количество просмотров89K
image

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

Язык визуального программирования — это такой язык, который позволяет программисту создавать программы, манипулируя графическими элементами, а не печатая текстовые команды. Известным примером является Scratch, язык визуального программирования родом из MIT, который используется для обучения детей. Его преимущества заключаются в том, что он делает программирование более доступным для новичков и не-программистов.

В 1990-х годах было очень популярное движение по внедрению визуального программирования в корпоративную среду с помощью так называемых CASE-инструментов, где корпоративные системы можно было бы определять с помощью UML и генерировать [их код] без необходимости в привлечении обученных разработчиков программного обеспечения. Это связано с концепцией «round tripping» («туда и обратно»), где система может быть смоделирована визуально, программный код будет генерироваться из полученных моделей, а любые изменения кода могут быть возвращены обратно в модель. Увы, подобные инструменты так и не смогли выполнить свою миссию, и большинство из экспериментов [по их внедрению] в настоящее время в значительной степени заброшены.
Читать дальше →
Всего голосов 54: ↑45 и ↓9+36
Комментарии710

Устройство спецэффектов для игр под NES. Часть 2

Время на прочтение9 мин
Количество просмотров11K
В этой статье вас ждёт продолжение описания устройства спецэффектов для игр под NES (первая часть здесь). На этот раз будет меньше теории и больше картинок-примеров.


Мы рассмотрим группы эффектов, созданные с помощью переключения позиции скролла видеопроцессора, а также пару эффектов, полученных переключением состояния видеопроцессора.
Всего голосов 45: ↑44 и ↓1+43
Комментарии21

Технический долг на проекте или выбраться из черной дыры

Время на прочтение6 мин
Количество просмотров15K
Каждому разработчику знакома ситуация, когда реализация новой возможности в системе занимает большое количество времени, но релиз уже близко, а тимлид или менеджер проекта пятый раз за день задают уже надоевший вопрос: “Ну когда будет готово?”. И тогда встает непростой выбор — сделать все правильно и не уложиться в сроки релиза или реализовать минимально работающий, но не идеальный с точки зрения технического решения, функционал. Очевидно, что в большинстве случаев будет выбран второй вариант, так как релиз и предоставление результата клиентам здесь и сейчас важнее чистоты кода и архитектуры системы. Но проходит несколько месяцев, и вот уже старое не идеальное техническое решение мешает реализации другого функционала. И дальше такие решения будут накапливаться в огромный ком. Разбираясь с этой проблемой, очень важно сделать правильные выводы и выбрать нужное решение. От этого решения будет зависеть дальнейшая судьба всего проекта. В данной статье мы постараемся разобраться с природой технического долга и посоветовать пути его устранения.
Читать дальше →
Всего голосов 16: ↑13 и ↓3+10
Комментарии11

Устройство спецэффектов для игр под NES. Часть 1

Время на прочтение19 мин
Количество просмотров14K
Существует несколько серий статей про программирование под NES, одна из них уже даже переведена на русский язык на Хабре. Однако ни одна из них не заходит дальше обзора базовых возможностей консоли – рассматривается общая архитектура консоли, основы ассемблера, вкратце рассказывается, как выводить спрайты на экран, упоминается что-то о музыке и мапперах, и цикл заканчивается.

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

Поэтому перед тем, как запрограммировать что-нибудь, предстоит разобраться с тем, как устроены те или иные эффекты для NES, и статья будет посвящена тому, как это сделать. Существует множество статей из разряда «Игры, выжавшие из NES максимум», попробуем разобраться в том, как сделаны все основные эффекты в этих играх, а также создадим инструменты, которыми можно найти другие игры, не менее технологичные по эффектам.
Всего голосов 45: ↑45 и ↓0+45
Комментарии14

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

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



Сегодня мы поговорим о том,

  • Как делать тестирование сложными зависимостями?
  • Как добиться большого тестового покрытия?
  • Как тесты влияют на дизайн?
  • Что делать, когда много логики в базе?
  • Как соблюсти компромисс между дизайном и «не дизайном».


Всего голосов 41: ↑40 и ↓1+39
Комментарии114

Кодинг без клавиатуры: создание игры hands-free

Время на прочтение6 мин
Количество просмотров9.3K
Dig Dog — это забавная маленькая видеоигра. Можно назвать её "Spelunky для детей", и не стоит считать это сомнительным комплиментом. Dig Dog, недавно выпущенная для iOS, Xbox, Windows и Mac, отказалась от некоторых сложных элементов жанра, имеет плавное управление и обладает глубиной. Она похожа на одну из игр современной волны со случайно создаваемыми уровнями, которая как будто пришла с аркадных автоматов начала 80-х.

Мне понравилась Dig Dog, когда я нашёл её на прошлогоднем мероприятии Fantastic Arcade в Остине, штат Техас. Но ещё интереснее мне стала эта игра, когда её автор связался со мной перед её выпуском и рассказал, что ему удалось то, чего не делал ни один разработчик игр до него: он написал всю игру сам… без рук.


Всего голосов 34: ↑33 и ↓1+32
Комментарии6

Разработка игр под NES на C. Главы 1-3. От введения до Hello World

Время на прочтение8 мин
Количество просмотров40K

Впервые я задумался о том, как разрабатывают игры под приставки где-то через 20 минут после того, как в самый первый раз увидел Turbo Pascal. На глаза иногда попадался Subor с клавиатурой, и появилась мысль: "Наверное можно набрать какую-то программу, а потом в нее поиграть". Но интерес быстро затух, потому что абсолютно никакой информации по этой теме тогда не было доступно. Следующий раз эта же идея всплыла, когда увидел вполне играбельные эмуляторы старых консолей. Тогда стало ясно, что вбивать листинг в саму консоль и необязательно. Где-то очень потом появился Хабр с благожелательной аудиторией для таких вещей. В какой-то момент даже начал собирать разрозненную инфу чтобы написать мануал самому, и вот сегодня наткнулся на готовый учебник, который явно надо перевести.


Разработка под старые консоли документирована вдоль и поперек, но именно по NES 99% информации относятся к разработке на Ассемблере. Меня почему-то зарубило, что надо освоить именно работу с С.


следующая >>>
image

Читать дальше →
Всего голосов 52: ↑52 и ↓0+52
Комментарии6

Четыре типажа программистов

Время на прочтение17 мин
Количество просмотров214K

Привет.


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

Читать дальше →
Всего голосов 258: ↑237 и ↓21+216
Комментарии548
1
23 ...

Информация

В рейтинге
1 283-й
Дата рождения
Зарегистрирован
Активность